@componyx/ui 0.0.0-stage → 1.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 (169) hide show
  1. package/AppSkin/AppSkin.css +1268 -0
  2. package/AppSkin/AppSkin.js +2748 -0
  3. package/AppSkin/Themes/Default.css +241 -0
  4. package/Base/Base.js +3407 -0
  5. package/Base/ComponentIcons.css +66 -0
  6. package/Base/Font/ComponentIcons.woff +0 -0
  7. package/Base/Font/UI.woff +0 -0
  8. package/Base/Library.js +8432 -0
  9. package/Base/NavigationManager.js +462 -0
  10. package/Base/ResponsiveTemplates.js +371 -0
  11. package/Base/Sanitizer.js +288 -0
  12. package/Base/Themes/Default.css +255 -0
  13. package/Base/UI.css +618 -0
  14. package/Base/UIResourcePath.js +6 -0
  15. package/Bindary/Bindary.js +2011 -0
  16. package/Bindary/Modules/Connection.js +216 -0
  17. package/Bindary/Modules/Core.js +854 -0
  18. package/Bindary/Modules/DataUpdater.js +351 -0
  19. package/Bindary/Modules/ExpressionEngine.js +347 -0
  20. package/Bindary/Modules/ProxyManager.js +482 -0
  21. package/Bindary/Modules/Renderer.js +605 -0
  22. package/Bindary/Modules/Router.js +291 -0
  23. package/Bindary/Modules/Scroller.js +89 -0
  24. package/Bindary/Modules/Template.js +1273 -0
  25. package/BookmarkSpy/BookmarkSpy.js +430 -0
  26. package/Box/Box.css +36 -0
  27. package/Box/Box.js +1685 -0
  28. package/Button/Button.css +470 -0
  29. package/Button/Button.js +1398 -0
  30. package/Button/Themes/Default.css +200 -0
  31. package/Carousel/Carousel.css +273 -0
  32. package/Carousel/Carousel.js +607 -0
  33. package/ColorButton/ColorButton.css +39 -0
  34. package/ColorButton/ColorButton.js +336 -0
  35. package/ColorPicker/ColorPicker.css +359 -0
  36. package/ColorPicker/ColorPicker.js +972 -0
  37. package/ComboBox/ComboBox.css +357 -0
  38. package/ComboBox/ComboBox.js +2342 -0
  39. package/ComboBox/Themes/Default.css +23 -0
  40. package/DataPager/DataPager.css +72 -0
  41. package/DataPager/DataPager.js +674 -0
  42. package/DatePicker/DatePicker.css +227 -0
  43. package/DatePicker/DatePicker.js +1531 -0
  44. package/DatePicker/Themes/Default.css +26 -0
  45. package/Dialog/Dialog.css +106 -0
  46. package/Dialog/Dialog.js +572 -0
  47. package/Dialog/Themes/Default.css +10 -0
  48. package/Editor/Data/Emoji.json +8285 -0
  49. package/Editor/Data/Special.json +1042 -0
  50. package/Editor/Editor.css +1562 -0
  51. package/Editor/Editor.js +4058 -0
  52. package/Editor/Font/Editor.woff +0 -0
  53. package/Editor/Modules/ComponentFactory.js +565 -0
  54. package/Editor/Modules/ContentManager.js +748 -0
  55. package/Editor/Modules/DialogManager.js +1234 -0
  56. package/Editor/Modules/EventManager.js +458 -0
  57. package/Editor/Modules/Format.js +950 -0
  58. package/Editor/Modules/History.js +191 -0
  59. package/Editor/Modules/LayoutState.js +379 -0
  60. package/Editor/Modules/ListManager.js +296 -0
  61. package/Editor/Modules/MenuManager.js +388 -0
  62. package/Editor/Modules/NodeManager.js +681 -0
  63. package/Editor/Modules/ParagraphButtons.js +122 -0
  64. package/Editor/Modules/Resizer.js +176 -0
  65. package/Editor/Modules/SelectionRange.js +564 -0
  66. package/Editor/Modules/SourceViewBuilder.js +212 -0
  67. package/Editor/Modules/SymbolPicker.js +208 -0
  68. package/Editor/Modules/Table.js +2327 -0
  69. package/Editor/Modules/TableDialog.js +757 -0
  70. package/Editor/Modules/Toolbar.js +375 -0
  71. package/Editor/Modules/TooltipMenu.js +125 -0
  72. package/Editor/Modules/Utility.js +131 -0
  73. package/Editor/Themes/Default.css +204 -0
  74. package/FileUpload/FileUpload.css +156 -0
  75. package/FileUpload/FileUpload.js +898 -0
  76. package/FileUpload/Themes/Default.css +17 -0
  77. package/Form/Form.css +1934 -0
  78. package/Form/Form.js +4943 -0
  79. package/Form/Modules/ActionManager.js +368 -0
  80. package/Form/Modules/BuildPanelManager.js +319 -0
  81. package/Form/Modules/ComponentFactory.js +468 -0
  82. package/Form/Modules/ComponentPanel.js +265 -0
  83. package/Form/Modules/ConfigPanelManager.js +685 -0
  84. package/Form/Modules/DataBinder.js +602 -0
  85. package/Form/Modules/DataObserver.js +717 -0
  86. package/Form/Modules/Draggable.js +756 -0
  87. package/Form/Modules/OptionsPanel.js +342 -0
  88. package/Form/Modules/Renderer.js +1889 -0
  89. package/Form/Modules/RuleEngine.js +585 -0
  90. package/Form/Modules/RulesPanel.js +1158 -0
  91. package/Form/Modules/Types.js +1709 -0
  92. package/Form/Modules/ValidationManager.js +194 -0
  93. package/Form/Themes/Default.css +216 -0
  94. package/FormField/FormField.css +468 -0
  95. package/FormField/FormField.js +576 -0
  96. package/FormField/Themes/Default.css +99 -0
  97. package/Grid/Grid.css +544 -0
  98. package/Grid/Grid.js +3761 -0
  99. package/Grid/Themes/Default.css +43 -0
  100. package/LICENSE +126 -0
  101. package/MaskedTextBox/MaskedTextBox.css +28 -0
  102. package/MaskedTextBox/MaskedTextBox.js +642 -0
  103. package/MaskedTextBox/Themes/Default.css +6 -0
  104. package/Menu/Menu.css +328 -0
  105. package/Menu/Menu.js +2386 -0
  106. package/Menu/Themes/Default.css +24 -0
  107. package/NumericBox/NumericBox.css +120 -0
  108. package/NumericBox/NumericBox.js +984 -0
  109. package/PanelBar/PanelBar.css +123 -0
  110. package/PanelBar/PanelBar.js +505 -0
  111. package/PanelBar/Themes/Default.css +51 -0
  112. package/PieChart/PieChart.css +95 -0
  113. package/PieChart/PieChart.js +820 -0
  114. package/PieChart/Themes/Default.css +9 -0
  115. package/README.md +178 -3
  116. package/Slider/Slider.css +348 -0
  117. package/Slider/Slider.js +1306 -0
  118. package/Slider/Themes/Default.css +44 -0
  119. package/TabStrip/TabStrip.css +52 -0
  120. package/TabStrip/TabStrip.js +362 -0
  121. package/TabStrip/Themes/Default.css +35 -0
  122. package/TimePicker/Themes/Default.css +30 -0
  123. package/TimePicker/TimePicker.css +253 -0
  124. package/TimePicker/TimePicker.js +1485 -0
  125. package/TooltipManager/Themes/Default.css +21 -0
  126. package/TooltipManager/TooltipManager.css +227 -0
  127. package/TooltipManager/TooltipManager.js +791 -0
  128. package/Validator/Validator.css +54 -0
  129. package/Validator/Validator.js +2508 -0
  130. package/componyx.html-data.json +619 -0
  131. package/index.js +27 -0
  132. package/package.json +43 -4
  133. package/types/AppSkin.d.ts +842 -0
  134. package/types/Base.d.ts +1034 -0
  135. package/types/Bindary.d.ts +1196 -0
  136. package/types/BookmarkSpy.d.ts +112 -0
  137. package/types/Box.d.ts +374 -0
  138. package/types/Button.d.ts +455 -0
  139. package/types/Carousel.d.ts +136 -0
  140. package/types/ColorButton.d.ts +120 -0
  141. package/types/ColorPicker.d.ts +225 -0
  142. package/types/ComboBox.d.ts +507 -0
  143. package/types/DataPager.d.ts +152 -0
  144. package/types/DatePicker.d.ts +354 -0
  145. package/types/Dialog.d.ts +160 -0
  146. package/types/Editor.d.ts +1289 -0
  147. package/types/FileUpload.d.ts +206 -0
  148. package/types/Form.d.ts +3078 -0
  149. package/types/FormField.d.ts +204 -0
  150. package/types/Grid.d.ts +911 -0
  151. package/types/Library.d.ts +1899 -0
  152. package/types/MaskedTextBox.d.ts +91 -0
  153. package/types/Menu.d.ts +577 -0
  154. package/types/NumericBox.d.ts +310 -0
  155. package/types/PanelBar.d.ts +223 -0
  156. package/types/PieChart.d.ts +224 -0
  157. package/types/ResponsiveTemplates.d.ts +108 -0
  158. package/types/Slider.d.ts +227 -0
  159. package/types/TabStrip.d.ts +185 -0
  160. package/types/TimePicker.d.ts +265 -0
  161. package/types/TooltipManager.d.ts +178 -0
  162. package/types/UI.d.ts +29 -0
  163. package/types/Validator.d.ts +653 -0
  164. package/types/index.d.ts +59 -0
  165. package/ui.css +11783 -0
  166. package/ui.js +79477 -0
  167. package/ui.min.css +138 -0
  168. package/ui.min.js +264 -0
  169. package/ui.min.js.map +1 -0
@@ -0,0 +1,194 @@
1
+ /*! Componyx.UI | (c) E.H. Daanen / Componyx | BUSL-1.1 | componyx.com/license */
2
+ componyx.UI.form_modules = componyx.UI.form_modules || {};
3
+
4
+ componyx.UI.form_modules.ValidationManager = class ValidationManager
5
+ {
6
+ constructor(form)
7
+ {
8
+ this.form = form;
9
+ this.labels = form.labels;
10
+ this.InputTypeOption = this.form.constructor.InputTypeOption;
11
+ this.TypeOption = componyx.UI.Validator.TypeOption;
12
+ this.operatorLabels = {
13
+ '==': this.labels.operator_equal,
14
+ '!=': this.labels.operator_not_equal,
15
+ '<': this.labels.operator_less_than,
16
+ '<=': this.labels.operator_less_than_or_equal,
17
+ '>=': this.labels.operator_greater_than_or_equal,
18
+ '>': this.labels.operator_greater_than
19
+ };
20
+
21
+ this.validator = this.form.componentFactory.createComponent(this, componyx.UI.Validator, this.form.id + '_Validator', this.form.validatorId,
22
+ {
23
+ detectFields: false,
24
+ dateFormat: this.form.format.dateFormat,
25
+ decimalSeparator: this.form.format.decimalSeparator,
26
+ groupSeparator: this.form.format.groupSeparator,
27
+ feedbackIdentifyingCssClass: this.form.getCssClass(this.form.classOption.VALIDATION_FEEDBACK),
28
+ events: {
29
+ onValid: () =>
30
+ {
31
+ if (!this.form.renderNavigationButtons)
32
+ return;
33
+
34
+ const button = !this.form.hasSections() || this.form.isLastSection() ? this.form.renderer.submitButton : this.form.renderer.nextButton;
35
+ button.enable();
36
+
37
+ },
38
+ onInvalid: () =>
39
+ {
40
+ if (!this.form.renderNavigationButtons)
41
+ return;
42
+
43
+ const button = !this.form.hasSections() || this.form.isLastSection() ? this.form.renderer.submitButton : this.form.renderer.nextButton;
44
+ button.disable();
45
+ }
46
+ }
47
+ });
48
+ }
49
+
50
+ destroy()
51
+ {
52
+ this.validator.destroy();
53
+ }
54
+
55
+ /**
56
+ * Adds the field validation rules recursively for all fieldSets and fields.
57
+ * @param {componyx.UI.Form.FieldSet[]} fieldSets The fieldSets for which the validation rules are added.
58
+ * @returns {Boolean} A value indicating if rules were added.
59
+ */
60
+ addRules(fieldSets)
61
+ {
62
+ if (this.form.isBuildMode() || !Array.isArray(fieldSets))
63
+ return;
64
+
65
+ this.validator.clear();
66
+
67
+ let rulesAdded = false,
68
+ recurse = (sets) =>
69
+ {
70
+ sets.forEach(fs =>
71
+ {
72
+ let hasRules = false;
73
+
74
+ if (fs.fieldSets?.length)
75
+ recurse(fs.fieldSets);
76
+
77
+ fs.fields?.forEach(field =>
78
+ {
79
+ hasRules = this.addFieldRules(field);
80
+
81
+ if (!rulesAdded && hasRules)
82
+ rulesAdded = true;
83
+ });
84
+ });
85
+ };
86
+
87
+ recurse(fieldSets);
88
+ return rulesAdded;
89
+ }
90
+
91
+ /**
92
+ * Adds the field validation rules for the specified field.
93
+ * @param {componyx.UI.Form.Field} field The field for which the validation rules are added.
94
+ * @returns {Boolean} A value indicating if rules were added.
95
+ */
96
+ addFieldRules(field)
97
+ {
98
+ const dataTypeOption = componyx.UI.Validator.DataTypeOption,
99
+ s = field.validationSettings;
100
+ let hasRules = false;
101
+
102
+ if (field.required)
103
+ {
104
+ hasRules = this.updateRequiredRule(field);
105
+ }
106
+
107
+ if (!s)
108
+ return hasRules;
109
+
110
+ if (s.minRange || s.maxRange)
111
+ {
112
+ hasRules = this.#add(field, this.TypeOption.RANGE, "range", { min: s.minRange, max: s.maxRange });
113
+ }
114
+ if (s.minLength || s.maxLength)
115
+ {
116
+ hasRules = this.#add(field, this.TypeOption.LENGTH, "length", { min: s.minLength, max: s.maxLength });
117
+ }
118
+ if (s.dataType)
119
+ {
120
+ const dataTypeKey = Object.keys(dataTypeOption).find(k => dataTypeOption[k] == s.dataType).toLowerCase();
121
+ hasRules = this.#add(field, this.TypeOption.DATATYPE, dataTypeKey, { dataType: parseInt(s.dataType, 10) });
122
+ }
123
+ if (s.compareFieldId)
124
+ {
125
+ const compareField = this.form.getField(s.compareFieldId),
126
+ operatorText = this.operatorLabels[s.compareOperator] || s.compareOperator;
127
+
128
+ hasRules = this.#add(field, this.TypeOption.COMPARE, "compare", {
129
+ fields: [compareField.name],
130
+ operators: [s.compareOperator],
131
+ compareFieldName: compareField.label || compareField.name,
132
+ operatorText: operatorText?.toLowerCase()
133
+ });
134
+ }
135
+ if (s.pattern)
136
+ {
137
+ hasRules = this.#add(field, this.TypeOption.REGEX, "pattern", { pattern: s.pattern });
138
+ }
139
+
140
+ return hasRules;
141
+ }
142
+
143
+ /**
144
+ * Updates the field required validation rule for the specified field.
145
+ * @param {componyx.UI.Form.Field} field The field for which the validation rule is updated.
146
+ */
147
+ updateRequiredRule(field)
148
+ {
149
+ this.validator.removeRule(field.name, this.TypeOption.REQUIRED);
150
+
151
+ if (field.required)
152
+ {
153
+ this.#add(field, this.TypeOption.REQUIRED, "required");
154
+ return true;
155
+ }
156
+ return false;
157
+ }
158
+
159
+ #add(field, type, msgKey, props = {})
160
+ {
161
+ const msgTemplate = this.labels[`validatorMessage_${msgKey}`],
162
+ msg = $.format(msgTemplate, {
163
+ field: field.label || field.name,
164
+ min: props.min,
165
+ max: props.max,
166
+ compareField: props.compareFieldName,
167
+ operator: props.operatorText,
168
+ dataType: props.dataType,
169
+ pattern: props.pattern
170
+ }),
171
+ rule = {
172
+ autoValidate: true,
173
+ live: true,
174
+ ...props,
175
+ msg
176
+ };
177
+
178
+ if (field.inputType === this.InputTypeOption.EDITOR)
179
+ {
180
+ rule.getValue = (element) =>
181
+ {
182
+ const editor = $UI.store[this.form.getId(field, 'input')];
183
+ return editor.getContent(element);
184
+ };
185
+ }
186
+
187
+ this.validator.addRule(field.name, rule, type);
188
+ return true;
189
+ }
190
+ };
191
+
192
+ var ValidationManager = componyx.UI.form_modules.ValidationManager;
193
+
194
+ export { ValidationManager as default };
@@ -0,0 +1,216 @@
1
+ /*! Componyx.UI | (c) E.H. Daanen / Componyx | BUSL-1.1 | componyx.com/license */
2
+ .form.build-mode.theme.theme-default > header,
3
+ .form.preview-mode.theme.theme-default > header
4
+ {
5
+ background: var(--cui-tooltip-bg-color);
6
+ color: var(--cui-tooltip-text-color);
7
+ }
8
+
9
+ .form.build-mode.theme.theme-default > header h1,
10
+ .form.preview-mode.theme.theme-default > header h1
11
+ {
12
+ color: var(--cui-tooltip-text-color);
13
+ }
14
+
15
+ .form.theme.theme-default .drag-handle b,
16
+ .form.theme.theme-default .drag-handle b::before,
17
+ .form.theme.theme-default .drag-handle b::after
18
+ {
19
+ background-color: var(--cui-border-color);
20
+ }
21
+
22
+ .form.theme.theme-default .build-block
23
+ {
24
+ background-color: var(--cui-item-odd-bg-color);
25
+ }
26
+
27
+ .form.theme.theme-default .form-pane fieldset.bannered > legend
28
+ {
29
+ background: var(--cui-header-bg-color);
30
+ color: var(--cui-header-text-color);
31
+ }
32
+
33
+ .form.theme.theme-default .form-pane fieldset.droppable
34
+ {
35
+ box-shadow: inset 0px 0px 15px 0px var(--cui-box-shadow-color);
36
+ border-color: var(--cui-border-color);
37
+ }
38
+
39
+ .form.theme.theme-default .droppable:not(.drag-ghost)::before
40
+ {
41
+ background: var(--cui-header-bg-color);
42
+ }
43
+
44
+ .form.theme.theme-default .droppable:not(.drag-ghost)::after
45
+ {
46
+ color: var(--cui-color-surface);
47
+ background: var(--cui-header-bg-color);
48
+ }
49
+
50
+ .form.build-mode.theme.theme-default > .form-pane .form-field
51
+ {
52
+ border-color: var(--cui-border-color);
53
+ }
54
+
55
+ .form.build-mode.theme.theme-default .form-pane fieldset.selected,
56
+ .form.build-mode.theme.theme-default .form-pane fieldset > .field-pane > .form-field.dragging,
57
+ .form.build-mode.theme.theme-default .form-pane fieldset.dragging,
58
+ .form.build-mode.theme.theme-default .build-block.dragging
59
+ {
60
+ border-color: var(--cui-button-bg-color);
61
+ }
62
+
63
+ .form.build-mode.theme.theme-default .form-pane fieldset > .field-pane > .form-field.selected
64
+ {
65
+ border-color: var(--cui-button-hover-bg-color);
66
+ }
67
+
68
+ .form.build-mode.theme.theme-default .form-pane fieldset > .field-pane > .form-field:hover,
69
+ .form.build-mode.theme.theme-default .form-pane fieldset > .field-pane > .form-field:focus,
70
+ .form.build-mode.theme.theme-default .form-pane fieldset > .field-pane > .form-field:focus-within
71
+ {
72
+ border-color: var(--cui-button-selected-hover-bg-color);
73
+ box-shadow: 0 2px 6px var(--cui-box-shadow-color);
74
+ }
75
+
76
+ .form.build-mode.theme.theme-default .form-pane legend > input:focus,
77
+ .form.build-mode.theme.theme-default .form-pane .form-field > label > input:focus
78
+ {
79
+ border-color: var(--cui-item-selected-bg-color);
80
+ }
81
+
82
+ .form.build-mode.theme.theme-default .form-pane .form-field:hover,
83
+ .form.build-mode.theme.theme-default .form-pane .form-field:focus-within
84
+ {
85
+ border-color: var(--cui-button-bg-color);
86
+ }
87
+
88
+ .form.theme.theme-default .drag-ghost.field-set
89
+ {
90
+ background-color: var(--cui-item-odd-bg-color);
91
+ border-color: var(--cui-button-bg-color);
92
+ }
93
+
94
+ .form.theme.theme-default .form-pane .droppable:not(.drag-ghost).drop-denied
95
+ {
96
+ opacity: 0.6;
97
+ border-color: var(--cui-negative-text-color);
98
+ }
99
+
100
+ .form.theme.theme-default .field-options .option-item:nth-of-type(odd),
101
+ .form.theme .allowed-list ul > li:nth-child(odd),
102
+ .form.theme.theme-default .panel-bar > .rules-panel > .content .rule-groups > .rule-group > div.rules:not(:empty)
103
+ {
104
+ background-color: var(--cui-item-odd-bg-color);
105
+ }
106
+
107
+ .form.theme.theme-default .field-options .option-item:hover,
108
+ .form.theme.theme-default .drag-ghost.option-item-ghost
109
+ {
110
+ background-color: var(--cui-item-hover-bg-color);
111
+ color: var(--cui-item-hover-text-color);
112
+ }
113
+
114
+ /* spacer divider */
115
+ .form.theme.theme-default .form-pane .form-field .spacer.divider::after
116
+ {
117
+ background-color: var(--cui-border-color);
118
+ }
119
+
120
+ .form.build-mode.theme.theme-default .tab-strip > .button.section-add
121
+ {
122
+ background-color: var(--cui-base-bg-color);
123
+ }
124
+
125
+ /* save status */
126
+ .form.theme.theme-default .save-status .spinner
127
+ {
128
+ border-color: var(--cui-tooltip-text-color);
129
+ border-right-color: transparent;
130
+ }
131
+
132
+ .form.theme.theme-default .save-status.success .spinner
133
+ {
134
+ border-color: var(--cui-positive-text-color);
135
+ border-right-color: var(--cui-positive-text-color);
136
+ background: var(--cui-positive-text-color);
137
+ }
138
+
139
+ .form.theme.theme-default .save-status.failed .spinner
140
+ {
141
+ border-color: var(--cui-negative-text-color);
142
+ border-right-color: var(--cui-negative-text-color);
143
+ background: var(--cui-negative-text-color);
144
+ }
145
+ /* success checkmark */
146
+ .form.theme.theme-default .save-status.success .spinner::before
147
+ {
148
+ border-color: var(--cui-tooltip-text-color);
149
+ }
150
+
151
+ /* failed cross */
152
+ .form.theme.theme-default .save-status.failed .spinner::before,
153
+ .form.theme.theme-default .save-status.failed .spinner::after
154
+ {
155
+ background: var(--cui-tooltip-text-color);
156
+ }
157
+
158
+ /* step indicator */
159
+ .form.theme.theme-default .step-indicator .step::before,
160
+ .form.theme.theme-default .step-indicator .step::after
161
+ {
162
+ background: var(--cui-button-bg-color);
163
+ color: var(--cui-button-text-color);
164
+ }
165
+
166
+ .form.theme.theme-default .step-indicator .step.step-active::before
167
+ {
168
+ animation-name: color-animation;
169
+ animation-duration: 1s;
170
+ }
171
+
172
+ /* all steps after the active step are not highlighted */
173
+ .form.theme.theme-default .step-indicator .step.step-active ~ .step::before,
174
+ .form.theme.theme-default .step-indicator .step.step-active ~ .step::after
175
+ {
176
+ background: var(--cui-button-basic-bg-color);
177
+ color: var(--cui-button-basic-text-color);
178
+ }
179
+
180
+ /* form-field indicator icons */
181
+ .form.build-mode.theme.theme-default .form-field .field-indicators .icon
182
+ {
183
+ color: var(--cui-negative-text-color);
184
+ }
185
+
186
+ /* navigator panel */
187
+ .form.theme.theme-default .panel-bar > .navigator-panel > .content > div:has(input)
188
+ {
189
+ background-color: var(--cui-color-surface);
190
+ }
191
+
192
+ @keyframes color-animation
193
+ {
194
+ from
195
+ {
196
+ background: var(--cui-button-basic-bg-color);
197
+ color: var(--cui-button-basic-text-color);
198
+ }
199
+
200
+ to
201
+ {
202
+ background: var(--cui-button-bg-color);
203
+ color: var(--cui-button-text-color);
204
+ }
205
+ }
206
+
207
+
208
+ /* fallback overlay on small screens */
209
+ @media (max-width: 600px)
210
+ {
211
+ .form.theme .save-status
212
+ {
213
+ background: rgb(from var(--cui-tooltip-bg-color) r g b / 0.6);
214
+ color: var(--cui-tooltip-text-color);
215
+ }
216
+ }