@c8y/style 1023.14.76 → 1023.14.92

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 (264) hide show
  1. package/branding-login.less +1 -1
  2. package/helper-scripts/README-variable-imports.md +155 -0
  3. package/helper-scripts/README.md +104 -0
  4. package/helper-scripts/convert-scss-to-less.sh +502 -0
  5. package/helper-scripts/convert-stroke-icons-to-less.js +115 -0
  6. package/helper-scripts/remove-redundant-variable-imports.sh +80 -0
  7. package/helper-scripts/scss-to-less-skip +20 -0
  8. package/{sync-scss-to-less.sh → helper-scripts/sync-scss-to-less.sh} +2 -2
  9. package/helper-scripts/test-compile.sh +71 -0
  10. package/markdown-files/MANUAL-SYNC-FILES.md +56 -0
  11. package/package.json +2 -2
  12. package/styles/_login-app.less +34 -0
  13. package/styles/_login-app.scss +2 -2
  14. package/styles/_mixins.less +47 -0
  15. package/styles/_utilities.less +21 -0
  16. package/styles/_utilities.scss +1 -0
  17. package/styles/animations/_animate.less +18 -13
  18. package/styles/animations/_component-animations.less +18 -16
  19. package/styles/animations/_realtime-animation-list.less +11 -1
  20. package/styles/animations/_spinner-snake.less +17 -2
  21. package/styles/animations/_spinner.less +24 -6
  22. package/styles/base/_normalize.less +14 -0
  23. package/styles/base/_print.less +25 -12
  24. package/styles/base/_scaffolding.less +24 -28
  25. package/styles/base/_type.less +41 -19
  26. package/styles/components/_markdown-content.less +4 -1
  27. package/styles/components/_smartrules.less +14 -8
  28. package/styles/components/_smartrules.scss +6 -2
  29. package/styles/components/application-and-system/_c8y-cookie-banner.less +36 -0
  30. package/styles/components/{specialized → application-and-system}/_c8y-login.less +20 -6
  31. package/styles/components/data-display-and-visualization/_boxed-label.less +45 -0
  32. package/styles/components/data-display-and-visualization/_boxed-label.scss +46 -0
  33. package/styles/components/{specialized → data-display-and-visualization}/_c8y-data-explorer.less +76 -24
  34. package/styles/components/{specialized → data-display-and-visualization}/_c8y-data-explorer.scss +39 -1
  35. package/styles/components/{specialized → data-display-and-visualization}/_c8y-datapoint-pill.less +29 -13
  36. package/styles/components/{specialized → data-display-and-visualization}/_c8y-pulse.less +33 -6
  37. package/styles/components/data-display-and-visualization/_range-display.less +25 -16
  38. package/styles/components/{specialized → data-display-and-visualization}/_smart-list-icon-label.less +19 -5
  39. package/styles/components/{specialized → data-display-and-visualization}/_status.less +16 -2
  40. package/styles/components/{specialized → data-display-and-visualization}/_statusContainer.less +16 -2
  41. package/styles/components/data-display-and-visualization/_timelines-chart.less +2 -0
  42. package/styles/components/data-display-and-visualization/lists/_c8y-data-point-list.less +10 -0
  43. package/styles/components/data-display-and-visualization/lists/_c8y-empty-state.less +26 -12
  44. package/styles/components/data-display-and-visualization/lists/_c8y-list-group.less +88 -42
  45. package/styles/components/data-display-and-visualization/lists/_cards-layout.less +38 -16
  46. package/styles/components/data-display-and-visualization/lists/_list-group.less +46 -28
  47. package/styles/components/data-display-and-visualization/lists/_smart-rules-template-list.less +12 -1
  48. package/styles/components/data-display-and-visualization/lists/{timeline-list.less → _timeline-list.less} +46 -24
  49. package/styles/components/data-display-and-visualization/tables/_data-grid.less +45 -25
  50. package/styles/components/data-display-and-visualization/tables/_resizable-grid.less +18 -1
  51. package/styles/components/data-display-and-visualization/tables/_tables.less +25 -9
  52. package/styles/components/data-input/_c8y-ai-chat.less +1 -0
  53. package/styles/components/{specialized → data-input}/_c8y-countdown-interval.less +15 -13
  54. package/styles/components/{specialized → data-input}/_c8y-range.less +22 -6
  55. package/styles/components/{specialized → data-input}/_dtm-icon-selector.less +17 -2
  56. package/styles/components/{specialized → data-input}/_dtm-icon-selector.scss +1 -2
  57. package/styles/components/{specialized → data-input}/_measurements-time-control.less +34 -6
  58. package/styles/components/{specialized → data-input}/_measurements-time-control.scss +14 -2
  59. package/styles/components/{specialized → data-input}/_search-header.less +22 -6
  60. package/styles/components/data-input/_static-assets-file-picker.less +22 -0
  61. package/styles/components/data-input/assets/_asset-property-list.less +38 -23
  62. package/styles/components/data-input/assets/_asset-table.less +21 -3
  63. package/styles/components/data-input/assets/_c8y-asset-notes.less +13 -1
  64. package/styles/components/data-input/assets/_c8y-asset-selector-miller.less +27 -8
  65. package/styles/components/data-input/assets/_c8y-asset-selector.less +32 -15
  66. package/styles/components/data-input/assets/_c8y-child-assets-selector.less +90 -9
  67. package/styles/components/{specialized → forms}/_c8y-schema-form.less +44 -17
  68. package/styles/components/{specialized → forms}/_c8y-schema-form.scss +15 -3
  69. package/styles/components/{specialized → navigation-and-layout}/_c8y-role-card.less +21 -5
  70. package/styles/components/{specialized → navigation-and-layout}/_c8y-scrollbar.less +24 -7
  71. package/styles/components/{specialized → navigation-and-layout}/_c8y-smart-rest-tab.less +21 -6
  72. package/styles/components/{specialized → navigation-and-layout}/_c8y-stepper.less +15 -1
  73. package/styles/components/{specialized → navigation-and-layout}/_c8y-user-roles.less +45 -28
  74. package/styles/components/{specialized → navigation-and-layout}/_device-software-tab.less +14 -0
  75. package/styles/components/navigation-and-layout/action-bars/_app-switcher.less +27 -5
  76. package/styles/components/navigation-and-layout/action-bars/_c8y-action-bar.less +49 -21
  77. package/styles/components/navigation-and-layout/cards/_card-dashboard.less +25 -4
  78. package/styles/components/navigation-and-layout/cards/_card-flip.less +41 -14
  79. package/styles/components/navigation-and-layout/cards/_card-grid.less +20 -4
  80. package/styles/components/navigation-and-layout/cards/_card.less +90 -75
  81. package/styles/components/navigation-and-layout/cards/_panels.less +38 -20
  82. package/styles/components/navigation-and-layout/navigation/_breadcrumbs.less +22 -49
  83. package/styles/components/navigation-and-layout/navigation/_c8y-nav-stacked.less +26 -14
  84. package/styles/components/navigation-and-layout/navigation/_main-header.less +39 -13
  85. package/styles/components/navigation-and-layout/navigation/_main-header.scss +1 -1
  86. package/styles/components/navigation-and-layout/navigation/_navbar.less +22 -25
  87. package/styles/components/navigation-and-layout/navigation/_navbar.scss +7 -7
  88. package/styles/components/navigation-and-layout/navigation/_navigator.less +71 -69
  89. package/styles/components/navigation-and-layout/navigation/_navs.less +13 -0
  90. package/styles/components/navigation-and-layout/navigation/_pagination.less +24 -5
  91. package/styles/components/navigation-and-layout/navigation/{steps-navbar.less → _steps-navbar.less} +7 -6
  92. package/styles/components/navigation-and-layout/navigation/_tabs.less +18 -14
  93. package/styles/components/navigation-and-layout/navigation/_tabs.scss +2 -2
  94. package/styles/components/{specialized → status-feedback-and-notifications}/_c8y-message-banner.less +14 -0
  95. package/styles/components/{specialized → status-feedback-and-notifications}/_code.less +18 -2
  96. package/styles/core/buttons/_button-groups.less +29 -79
  97. package/styles/core/buttons/_buttons.less +229 -198
  98. package/styles/core/buttons/_buttons.scss +6 -10
  99. package/styles/core/feedback/_alerts.less +52 -41
  100. package/styles/core/feedback/_badges.less +29 -17
  101. package/styles/core/feedback/_close.less +24 -7
  102. package/styles/core/feedback/_labels.less +21 -8
  103. package/styles/core/feedback/_progress-bars.less +24 -7
  104. package/styles/core/feedback/_tag.less +23 -6
  105. package/styles/core/feedback/_tooltip.less +44 -20
  106. package/styles/core/forms/_c8y-switch.less +39 -19
  107. package/styles/core/forms/_c8y-switch.scss +37 -29
  108. package/styles/core/forms/_file-picker.less +79 -61
  109. package/styles/core/forms/_forms.less +130 -133
  110. package/styles/core/forms/_input-groups.less +110 -59
  111. package/styles/core/forms/_input-groups.scss +21 -3
  112. package/styles/core/overlays/_c8y-dashboard-modal.less +25 -29
  113. package/styles/core/overlays/_c8y-wizard.less +38 -15
  114. package/styles/core/overlays/_dropdowns.less +86 -63
  115. package/styles/core/overlays/_modals.less +58 -40
  116. package/styles/core/overlays/_popovers.less +25 -9
  117. package/styles/dashboard/_availability-pie.less +3 -0
  118. package/styles/dashboard/_c8y-dashboard-style.less +61 -34
  119. package/styles/dashboard/_c8y-gauges.less +20 -4
  120. package/styles/dashboard/_dashboard-widgets.less +17 -4
  121. package/styles/dashboard/_info-gauge.less +20 -5
  122. package/styles/dashboard/_quick-links-widget.less +13 -3
  123. package/styles/{welcome-widget.less → dashboard/_welcome-widget.less} +21 -4
  124. package/styles/dashboard/{welcome.less → _welcome.less} +54 -45
  125. package/styles/icons/_c8y-glyphs.less +12 -1
  126. package/styles/icons/_c8y-glyphs.scss +2 -1
  127. package/styles/icons/_c8y-icons.less +214 -199
  128. package/styles/icons/_dlt-c8y-icons-stroke.less +7238 -1834
  129. package/styles/icons/_dlt-c8y-icons.less +14 -0
  130. package/styles/icons/_marker-icons.less +10 -0
  131. package/styles/index.less +160 -134
  132. package/styles/index.scss +53 -29
  133. package/styles/layout/_bottom-drawer.less +21 -7
  134. package/styles/layout/_c8y-help-drawer.less +30 -9
  135. package/styles/layout/_c8y-right-drawer.less +34 -19
  136. package/styles/layout/_c8y-top-drawer.less +43 -28
  137. package/styles/layout/_grid.less +18 -4
  138. package/styles/layout/_group-info.less +14 -2
  139. package/styles/layout/_layouts.less +48 -30
  140. package/styles/layout/_mcontainer.less +26 -12
  141. package/styles/layout/_page-tabs.less +115 -23
  142. package/styles/layout/_split-scroll.less +16 -4
  143. package/styles/layout/_split-view.less +34 -2
  144. package/styles/login-app-use.scss +2 -2
  145. package/styles/login-app.less +4 -4
  146. package/styles/mixins/_buttons.scss +1 -0
  147. package/styles/mixins/{color-mixins.less → _color-mixins.less} +2 -2
  148. package/styles/mixins/{element-queries.less → _element-queries.less} +2 -2
  149. package/styles/mixins/{forms.less → _forms.less} +1 -1
  150. package/styles/mixins/_gradients.less +117 -0
  151. package/styles/mixins/{grid-framework.less → _grid-framework.less} +21 -21
  152. package/styles/mixins/_icon-base.less +29 -0
  153. package/styles/mixins/{nav-vertical-align.less → _nav-vertical-align.less} +6 -2
  154. package/styles/mixins/_nav-vertical-align.scss +5 -2
  155. package/styles/mixins/{progress-bar.less → _progress-bar.less} +1 -1
  156. package/styles/mixins/{shadows-helper.less → _shadows-helper.less} +3 -5
  157. package/styles/mixins/_shadows-helper.scss +1 -4
  158. package/styles/mixins/{vendor-prefixes.less → _vendor-prefixes.less} +7 -22
  159. package/styles/mixins/_vendor-prefixes.scss +1 -17
  160. package/styles/utilities/_borders.less +21 -11
  161. package/styles/{components/specialized → utilities}/_c8y-utils.less +14 -0
  162. package/styles/{components/specialized → utilities}/_c8y-utils.scss +1 -1
  163. package/styles/utilities/_caret.less +18 -4
  164. package/styles/utilities/_container-queries.less +11 -3
  165. package/styles/utilities/_contextual-colors.less +48 -119
  166. package/styles/utilities/_display.less +26 -41
  167. package/styles/utilities/_elevation.less +17 -7
  168. package/styles/utilities/_flex-containers.less +10 -0
  169. package/styles/utilities/_flex-items.less +11 -0
  170. package/styles/utilities/_icon-utils.less +15 -3
  171. package/styles/utilities/_margins-paddings.less +23 -4
  172. package/styles/utilities/_overflows.less +10 -0
  173. package/styles/utilities/_position.less +11 -0
  174. package/styles/utilities/_quickfloats.less +20 -1
  175. package/styles/utilities/_separators.less +11 -0
  176. package/styles/utilities/_shadows.less +5 -49
  177. package/styles/{utilities.less → utilities/_sizing.less} +13 -21
  178. package/styles/utilities/_text-utils.less +35 -24
  179. package/styles/vendor/ace-editor/_ace-editor.less +1 -0
  180. package/styles/vendor/angular/_loading-bar.less +1 -0
  181. package/styles/vendor/angular/_ui-sortable.less +2 -1
  182. package/styles/vendor/angular/_uib-accordion.less +1 -0
  183. package/styles/{angular-ui-select/select.less → vendor/angular/angular-ui-select/_select.less} +2 -10
  184. package/styles/vendor/cdk/_cdk-drag.less +3 -0
  185. package/styles/vendor/cdk/_cdk-tree.less +6 -3
  186. package/styles/vendor/cdk/_cdk-virtual-scroll-window.less +1 -0
  187. package/styles/vendor/datepicker/_bs-datepicker.less +26 -6
  188. package/styles/vendor/datepicker/_uib-datepicker.less +37 -4
  189. package/styles/vendor/leaflet/_c8y-map-internal.less +44 -54
  190. package/styles/vendor/leaflet/_leaflet.less +4 -1
  191. package/styles/vendor/other/_colorpicker.less +3 -2
  192. package/styles/vendor/selectize/_c8y-selectize.less +33 -10
  193. package/variables/_color-defaults.less +29 -10
  194. package/variables/_color-defaults.scss +29 -10
  195. package/variables/_color-vars.less +37 -89
  196. package/variables/_color-vars.scss +19 -77
  197. package/variables/{login-vars.less → _login-vars.less} +3 -5
  198. package/variables/index.less +3 -3
  199. package/variables/tokens/{c8y-design-tokens-dark.less → _c8y-design-tokens-dark.less} +5 -1
  200. package/variables/tokens/{c8y-design-tokens.less → _c8y-design-tokens.less} +5 -1
  201. package/styles/components/specialized/_boxed-label.less +0 -21
  202. package/styles/components/specialized/_boxed-label.scss +0 -36
  203. package/styles/components/specialized/_c8y-cookie-banner.less +0 -22
  204. package/styles/components/specialized/_static-assets-file-picker.less +0 -8
  205. package/styles/dashboard/welcome-widget.less +0 -50
  206. package/styles/mixins/gradients.less +0 -142
  207. package/styles/mixins.less +0 -45
  208. package/styles/steps-navbar.less +0 -97
  209. package/styles/timeline-list.less +0 -210
  210. package/styles/vendor/angular/angular-ui-select/select.less +0 -161
  211. package/styles/welcome.less +0 -128
  212. /package/styles/components/{specialized → application-and-system}/_c8y-cookie-banner.scss +0 -0
  213. /package/styles/components/{specialized → application-and-system}/_c8y-login.scss +0 -0
  214. /package/styles/components/{specialized → data-display-and-visualization}/_c8y-datapoint-pill.scss +0 -0
  215. /package/styles/components/{specialized → data-display-and-visualization}/_c8y-pulse.scss +0 -0
  216. /package/styles/components/{specialized → data-display-and-visualization}/_smart-list-icon-label.scss +0 -0
  217. /package/styles/components/{specialized → data-display-and-visualization}/_status.scss +0 -0
  218. /package/styles/components/{specialized → data-display-and-visualization}/_statusContainer.scss +0 -0
  219. /package/styles/components/{specialized → data-input}/_c8y-countdown-interval.scss +0 -0
  220. /package/styles/components/{specialized → data-input}/_c8y-range.scss +0 -0
  221. /package/styles/components/{specialized → data-input}/_search-header.scss +0 -0
  222. /package/styles/components/{specialized → data-input}/_static-assets-file-picker.scss +0 -0
  223. /package/styles/components/{specialized → navigation-and-layout}/_c8y-role-card.scss +0 -0
  224. /package/styles/components/{specialized → navigation-and-layout}/_c8y-scrollbar.scss +0 -0
  225. /package/styles/components/{specialized → navigation-and-layout}/_c8y-smart-rest-tab.scss +0 -0
  226. /package/styles/components/{specialized → navigation-and-layout}/_c8y-stepper.scss +0 -0
  227. /package/styles/components/{specialized → navigation-and-layout}/_c8y-user-roles.scss +0 -0
  228. /package/styles/components/{specialized → navigation-and-layout}/_device-software-tab.scss +0 -0
  229. /package/styles/components/{specialized → status-feedback-and-notifications}/_c8y-message-banner.scss +0 -0
  230. /package/styles/components/{specialized → status-feedback-and-notifications}/_code.scss +0 -0
  231. /package/styles/mixins/{alert-variant.less → _alert-variant.less} +0 -0
  232. /package/styles/mixins/{animation.less → _animation.less} +0 -0
  233. /package/styles/mixins/{background-variant.less → _background-variant.less} +0 -0
  234. /package/styles/mixins/{border-radius.less → _border-radius.less} +0 -0
  235. /package/styles/mixins/{buttons.less → _buttons.less} +0 -0
  236. /package/styles/mixins/{c8y-scrollbar.less → _c8y-scrollbar.less} +0 -0
  237. /package/styles/mixins/{center-block.less → _center-block.less} +0 -0
  238. /package/styles/mixins/{clearfix.less → _clearfix.less} +0 -0
  239. /package/styles/mixins/{create-grid.less → _create-grid.less} +0 -0
  240. /package/styles/mixins/{grid.less → _grid.less} +0 -0
  241. /package/styles/mixins/{hide-scrollbars.less → _hide-scrollbars.less} +0 -0
  242. /package/styles/mixins/{hide-text.less → _hide-text.less} +0 -0
  243. /package/styles/mixins/{image.less → _image.less} +0 -0
  244. /package/styles/mixins/{labels.less → _labels.less} +0 -0
  245. /package/styles/mixins/{list-group.less → _list-group.less} +0 -0
  246. /package/styles/mixins/{nav-divider.less → _nav-divider.less} +0 -0
  247. /package/styles/mixins/{opacity.less → _opacity.less} +0 -0
  248. /package/styles/mixins/{pagination.less → _pagination.less} +0 -0
  249. /package/styles/mixins/{panels.less → _panels.less} +0 -0
  250. /package/styles/mixins/{reset-filter.less → _reset-filter.less} +0 -0
  251. /package/styles/mixins/{reset-text.less → _reset-text.less} +0 -0
  252. /package/styles/mixins/{resize.less → _resize.less} +0 -0
  253. /package/styles/mixins/{responsive-visibility.less → _responsive-visibility.less} +0 -0
  254. /package/styles/mixins/{size.less → _size.less} +0 -0
  255. /package/styles/mixins/{tab-focus.less → _tab-focus.less} +0 -0
  256. /package/styles/mixins/{table-row.less → _table-row.less} +0 -0
  257. /package/styles/mixins/{tag.less → _tag.less} +0 -0
  258. /package/styles/mixins/{text-emphasis.less → _text-emphasis.less} +0 -0
  259. /package/styles/mixins/{text-overflow.less → _text-overflow.less} +0 -0
  260. /package/variables/{login-vars.scss → _login-vars.scss} +0 -0
  261. /package/variables/{shadows.less → _shadows.less} +0 -0
  262. /package/variables/{shadows.scss → _shadows.scss} +0 -0
  263. /package/variables/tokens/{c8y-design-tokens-dark.scss → _c8y-design-tokens-dark.scss} +0 -0
  264. /package/variables/tokens/{c8y-design-tokens.scss → _c8y-design-tokens.scss} +0 -0
@@ -1,3 +1,54 @@
1
+ @import "../../../variables/_dlt-c8y-icons-vars.less";
2
+ @import "../../icons/_c8y-glyphs.less";
3
+ @import "../../mixins/_c8y-scrollbar.less";
4
+ @import "../../mixins/_forms.less";
5
+ @import "../../mixins/_grid.less";
6
+ @import "../../mixins/_icon-base.less";
7
+
8
+ /**
9
+ * Forms - Form controls, inputs, labels, and validation
10
+ *
11
+ * Note: Uses @form-control-*; @form-label-*; @form-legend-*, and @size-* tokens.
12
+ *
13
+ * Intentionally hardcoded values:
14
+ * - rem-based values (1rem, 0.25rem, 1.1428571429em, 1.5em, 0.9rem): Relative sizing for fieldsets
15
+ * - Percentages (20%, 50%, 100%): Layout calculations
16
+ * - Border widths (1px): Standard borders
17
+ * - Fine-tuning offsets (1px, 2px, 3px): Precise positioning adjustments
18
+ * - Decimal positions (4.4px, 3.7px, .3px): Sub-pixel positioning for checkmarks
19
+ * - Component-specific sizes (30px, 32px, 180px): Fixed component dimensions
20
+ * - Typography sizes (12px, 14px, 16px, 18px): Font sizes
21
+ * - Checkbox/radio mark dimensions (9px, 5px): Custom control indicators
22
+ * - Shadow values (0 0 0 2px, inset 0 0 0): Box-shadow specifications
23
+ * - Transition durations (0.15s, 0.25s, 0.35s, 0.4s, 0.5s): Animation timing
24
+ * - Opacity values: Visual effects
25
+ * - Z-index values: Layering
26
+ * - Transform values (rotate, translate, scale): Positioning transforms
27
+ * - Line-height unitless values (1, 1.2, 1.5): Relative line heights
28
+ * - Calculation expressions: Complex computed values
29
+ * - Non-standard spacing (15px): Off-token legacy spacing
30
+ */
31
+
32
+ // Shared mixin for validation state styling with feedback icon
33
+ .validation-state(@validation-color; @icon-content) {
34
+ .form-control-validation(@form-control-color-default; @validation-color; transparent);
35
+ .form-control-feedback-message {
36
+ &:before {
37
+ content: @icon-content;
38
+ }
39
+ }
40
+ }
41
+
42
+ // Shared mixin for form-block border line
43
+ .form-block-border-line() {
44
+ align-self: center;
45
+ flex: 1 1 auto;
46
+ border-top-width: 1px;
47
+ border-top-style: solid;
48
+ content: '';
49
+ opacity: 0.5;
50
+ }
51
+
1
52
  // Normalize non-controls
2
53
  fieldset {
3
54
  margin: 0;
@@ -10,7 +61,7 @@ fieldset.c8y-fieldset {
10
61
  display: block;
11
62
  margin: 1rem 0;
12
63
  border: solid 1px @form-control-border-color-default;
13
- border-radius: @margin-8;
64
+ border-radius: @size-8;
14
65
  margin-inline-start: 2px;
15
66
  margin-inline-end: 2px;
16
67
  padding-block-start: 0.25rem;
@@ -32,9 +83,9 @@ fieldset.c8y-fieldset {
32
83
  margin: 0;
33
84
  width: auto;
34
85
  text-transform: none;
35
- padding-inline-start: 4px;
36
- padding-inline-end: 4px;
37
- min-height: 24px;
86
+ padding-inline-start: @size-4;
87
+ padding-inline-end: @size-4;
88
+ min-height: @size-24;
38
89
  display: flex;
39
90
  align-items: center;
40
91
  }
@@ -51,14 +102,14 @@ fieldset.c8y-fieldset {
51
102
  justify-self: right;
52
103
  }
53
104
  + .c8y-fieldset {
54
- margin-top: @margin-24;
105
+ margin-top: @size-24;
55
106
  }
56
107
  }
57
108
 
58
109
  legend,
59
110
  .legend {
60
111
  display: block;
61
- margin: @margin-16 0 @margin-8 0;
112
+ margin: @size-16 0 @size-8 0;
62
113
  padding: 0;
63
114
  width: 100%;
64
115
  border: 0;
@@ -72,23 +123,13 @@ legend,
72
123
  align-items: center;
73
124
  flex-flow: row nowrap;
74
125
  &:after {
75
- align-self: center;
76
- flex: 1 1 auto;
77
- margin-left: 8px;
78
- border-top-width: 1px;
79
- border-top-style: solid;
80
- content: '';
81
- opacity: 0.5;
126
+ .form-block-border-line();
127
+ margin-left: @size-8;
82
128
  }
83
129
  &.center {
84
130
  &:before {
85
- align-self: center;
86
- flex: 1 1 auto;
87
- margin-right: 8px;
88
- border-top-width: 1px;
89
- border-top-style: solid;
90
- content: '';
91
- opacity: 0.5;
131
+ .form-block-border-line();
132
+ margin-right: @size-8;
92
133
  }
93
134
  }
94
135
  &.last-record {
@@ -102,14 +143,14 @@ legend,
102
143
  }
103
144
  }
104
145
  > .dot {
105
- margin-right: 5px;
146
+ margin-right: @size-5;
106
147
  width: 30px;
107
148
  height: 30px;
108
149
  font-size: 14px;
109
150
  line-height: 32px;
110
151
  &--small {
111
- width: 20px;
112
- height: 20px;
152
+ width: @size-20;
153
+ height: @size-20;
113
154
  font-size: 12px;
114
155
  display: flex;
115
156
  align-items: center;
@@ -121,7 +162,7 @@ legend,
121
162
 
122
163
  label {
123
164
  display: inline-block;
124
- margin-bottom: @margin-4;
165
+ margin-bottom: @size-4;
125
166
  max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141)
126
167
  color: @form-label-color;
127
168
  text-transform: @form-label-text-transform;
@@ -146,7 +187,7 @@ label {
146
187
  opacity: @form-control-disabled-opacity;
147
188
  }
148
189
  }
149
- &:has(.btn-help){
190
+ &:has(.btn-help) {
150
191
  display: flex;
151
192
  align-items: center;
152
193
  }
@@ -210,7 +251,7 @@ output {
210
251
  border: 0;
211
252
  border-radius: @form-control-border-radius;
212
253
  background-color: @form-control-background-default;
213
- background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
254
+ background-image: none; // Reset unusual Firefox-on-Android default style,see https://github.com/necolas/normalize.css/issues/214
214
255
  box-shadow: inset 0 0 0 @form-control-border-width @form-control-border-color-default;
215
256
  color: @form-control-color-default;
216
257
  font-weight: @form-control-font-weight;
@@ -223,8 +264,8 @@ output {
223
264
 
224
265
  .form-control-focus();
225
266
  .placeholder();
226
-
227
- &:has(.c8y-colorpicker){
267
+
268
+ &:has(.c8y-colorpicker) {
228
269
  width: auto;
229
270
  }
230
271
  &[disabled],
@@ -260,16 +301,16 @@ textarea.form-control {
260
301
  // color picker
261
302
  .c8y-colorpicker {
262
303
  position: relative;
263
- width: 20px;
264
- height: 20px;
304
+ width: @size-20;
305
+ height: @size-20;
265
306
  input {
266
307
  position: absolute;
267
308
  top: 0;
268
309
  left: 0;
269
310
  z-index: 10;
270
311
  box-sizing: border-box;
271
- width: 20px;
272
- height: 20px;
312
+ width: @size-20;
313
+ height: @size-20;
273
314
  opacity: 0;
274
315
  cursor: pointer;
275
316
  + span {
@@ -313,7 +354,24 @@ input[type='search'] {
313
354
 
314
355
  select,
315
356
  select.form-control {
316
- .form-control();
357
+ // Form control base styles (from .form-control in forms.less)
358
+ display: block;
359
+ padding: @form-control-padding-base-vertical @form-control-padding-base-horizontal;
360
+ width: 100%;
361
+ height: @form-control-height-base;
362
+ border: 0;
363
+ border-radius: @form-control-border-radius;
364
+ background-color: @form-control-background-default;
365
+ box-shadow: inset 0 0 0 @form-control-border-width @form-control-border-color-default;
366
+ color: @form-control-color-default;
367
+ font-weight: @form-control-font-weight;
368
+ font-size: @font-size-base;
369
+ font-family: @form-control-font-family;
370
+ line-height: @form-control-line-height;
371
+ transition:
372
+ border-color 0.15s ease-in-out,
373
+ box-shadow 0.15s ease-in-out;
374
+
317
375
  &[multiple],
318
376
  &[size] {
319
377
  height: auto;
@@ -324,7 +382,7 @@ select.form-control {
324
382
  .c8y-select-wrapper {
325
383
  position: relative;
326
384
  select {
327
- padding-right: 24px;
385
+ padding-right: @size-24;
328
386
  background-image: none;
329
387
 
330
388
  -webkit-appearance: none;
@@ -338,7 +396,7 @@ select.form-control {
338
396
  .c8y-glyph();
339
397
  position: absolute;
340
398
  top: 50%;
341
- right: 5px;
399
+ right: @size-5;
342
400
  z-index: 2;
343
401
  color: @form-control-icon-color;
344
402
  content: @c8y-glyph-caret;
@@ -403,7 +461,7 @@ label.c8y-radio {
403
461
  box-shadow 0.15s ease-in-out;
404
462
  margin: 2px 0;
405
463
  + span {
406
- margin-left: 8px;
464
+ margin-left: @size-8;
407
465
  line-height: @form-control-line-height;
408
466
  }
409
467
  }
@@ -438,8 +496,8 @@ label.c8y-radio {
438
496
  top: 50%;
439
497
  left: 50%;
440
498
  display: inline-block;
441
- width: 8px;
442
- height: 8px;
499
+ width: @size-8;
500
+ height: @size-8;
443
501
  border-radius: 50%;
444
502
  background-color: @form-control-border-color-focus;
445
503
  content: '';
@@ -453,9 +511,9 @@ label.c8y-radio {
453
511
  input[type='checkbox']:indeterminate + span::after {
454
512
  position: absolute;
455
513
  top: 4.4px;
456
- left: 4px;
514
+ left: @size-4;
457
515
  display: block;
458
- width: 8px;
516
+ width: @size-8;
459
517
  height: 5px;
460
518
  border-bottom: 2px solid;
461
519
  border-left: 0;
@@ -500,7 +558,7 @@ label.c8y-radio {
500
558
  display: inline-flex;
501
559
  padding: 0;
502
560
  &:not(:last-child) {
503
- margin-right: @margin-16;
561
+ margin-right: @size-16;
504
562
  }
505
563
  }
506
564
  &.has-error {
@@ -513,7 +571,7 @@ label.c8y-radio {
513
571
  .form-group {
514
572
  > label + .c8y-checkbox,
515
573
  > label + .c8y-radio {
516
- margin-top: @margin-8;
574
+ margin-top: @size-8;
517
575
  }
518
576
  }
519
577
 
@@ -545,11 +603,11 @@ c8y-messages,
545
603
  .input-group-array .has-error:hover & {
546
604
  position: absolute;
547
605
  bottom: 61px;
548
- left: calc(20% - @margin-16);
606
+ left: calc(20% - @size-16);
549
607
  z-index: 10;
550
608
  display: block;
551
- padding: 0 5px;
552
- max-width: calc(100% - @margin-16);
609
+ padding: 0 @size-5;
610
+ max-width: calc(100% - @size-16);
553
611
  border-radius: @tooltip-radius;
554
612
  background-color: @form-control-validation-error;
555
613
  color: @tooltip-color-default;
@@ -597,7 +655,7 @@ c8y-messages,
597
655
  }
598
656
  }
599
657
 
600
- .form-control-feedback-message:has(.help-block) {
658
+ body .form-control-feedback-message:has(.help-block) {
601
659
  padding-left: 0;
602
660
  }
603
661
 
@@ -634,44 +692,29 @@ file-picker ~ .help-block,
634
692
  c8y-field-input ~ .help-block,
635
693
  input ~ .help-block {
636
694
  position: relative;
637
- padding-top: calc(@margin-base * 0.25);
638
- padding-left: 20px;
695
+ padding-top: calc(@size-base * 0.25);
696
+ padding-left: @size-20;
639
697
  margin-top: 0;
640
698
  }
641
699
 
642
700
  file-picker ~ .help-block {
643
- margin-top: -24px;
701
+ margin-top: calc(-1 * @size-24);
644
702
  }
645
703
 
646
704
  .has-success:not(.schema-form-text) {
647
- .form-control-validation(@form-control-color-default; @form-control-validation-success; transparent);
648
- .form-control-feedback-message {
649
- &:before {
650
- content: @alert-success-icon;
651
- }
652
- }
705
+ .validation-state(@form-control-validation-success; @alert-success-icon);
653
706
  }
654
707
 
655
708
  .has-warning {
656
- .form-control-validation(@form-control-color-default; @form-control-validation-warning;transparent);
657
- .form-control-feedback-message {
658
- &:before {
659
- content: @alert-warning-icon;
660
- }
661
- }
709
+ .validation-state(@form-control-validation-warning; @alert-warning-icon);
662
710
  }
663
711
 
664
712
  .has-error {
665
- .form-control-validation(@form-control-color-default; @form-control-validation-error;transparent);
666
- .form-control-feedback-message {
667
- &:before {
668
- content: @alert-danger-icon;
669
- }
670
- }
713
+ .validation-state(@form-control-validation-error; @alert-danger-icon);
671
714
  }
672
715
 
673
716
  .form-control-feedback-message.has-error {
674
- margin-bottom: 8px;
717
+ margin-bottom: @size-8;
675
718
  line-height: 1.2;
676
719
  &:before {
677
720
  color: @form-control-validation-error;
@@ -683,12 +726,7 @@ file-picker ~ .help-block {
683
726
  }
684
727
 
685
728
  .has-info {
686
- .form-control-validation(@form-control-color-default; @form-control-validation-info;transparent);
687
- .form-control-feedback-message {
688
- &:before {
689
- content: @alert-info-icon;
690
- }
691
- }
729
+ .validation-state(@form-control-validation-info; @alert-info-icon);
692
730
  }
693
731
 
694
732
  textarea ~ .help-block:not(:empty),
@@ -761,7 +799,7 @@ c8y-field-input ~ .help-block:not(:empty),
761
799
  //
762
800
  .form-group-sm {
763
801
  .btn{
764
- .btn-sm();
802
+ &:extend(.btn-sm);
765
803
  }
766
804
  > label {
767
805
  margin-bottom: 0;
@@ -772,10 +810,10 @@ c8y-field-input ~ .help-block:not(:empty),
772
810
  .form-group-sm .form-control,
773
811
  .form-group-sm > .form-group .form-control,
774
812
  .form-group-sm .form-control-static,
775
- .input-sm {
813
+ .input-sm , .input-group-sm .form-control {
776
814
  &:not(.c8y-radio):not(.c8y-checkbox) {
777
815
  padding: @form-control-padding-small-vertical @form-control-padding-small-horizontal;
778
- height: @form-control-height-sm!important;
816
+ height: @form-control-height-sm !important;
779
817
  font-size: @font-size-small;
780
818
  line-height: @line-height-small;
781
819
  }
@@ -787,11 +825,11 @@ c8y-field-input ~ .help-block:not(:empty),
787
825
 
788
826
  .form-group-lg .form-control,
789
827
  .form-group-lg .form-control-static,
790
- .input-lg {
828
+ .input-lg, .input-group-lg .form-control {
791
829
  &:not(.c8y-radio):not(.c8y-checkbox) {
792
830
  padding: @form-control-padding-large-vertical @form-control-padding-large-horizontal;
793
831
  max-height: unset !important;
794
- height: @form-control-height-lg!important;
832
+ height: @form-control-height-lg !important;
795
833
  font-size: @font-size-large;
796
834
  }
797
835
  }
@@ -813,7 +851,7 @@ c8y-field-input ~ .help-block:not(:empty),
813
851
  margin: 0;
814
852
  label {
815
853
  margin: 0;
816
- color: @form-label-color!important;
854
+ color: @form-label-color !important;
817
855
  opacity: 1 !important;
818
856
  }
819
857
  }
@@ -899,11 +937,11 @@ label.editable {
899
937
  }
900
938
  }
901
939
  &:has(.ng-pristine):after {
940
+ .dlt-c8y-icon();
902
941
  position: relative;
903
942
  display: inline-block;
904
943
  margin-top: 0.9rem;
905
944
  color: @component-brand-primary;
906
- .dlt-c8y-icon();
907
945
  content: @dlt-c8y-icon-pencil;
908
946
  }
909
947
 
@@ -942,7 +980,7 @@ label.editable {
942
980
  &.updated .form-control,
943
981
  .form-control:focus,
944
982
  .form-control.ng-dirty {
945
- margin-right: -24px;
983
+ margin-right: calc(-1 * @size-24);
946
984
  min-width: 100%;
947
985
  opacity: 1;
948
986
  transition: all 0.25s ease;
@@ -964,9 +1002,9 @@ label.editable {
964
1002
  }
965
1003
  .form-control.ng-invalid-required + span,
966
1004
  .form-control.ng-invalid-required + span span {
967
- color: @form-control-validation-error!important;
1005
+ color: @form-control-validation-error !important;
968
1006
  &:after {
969
- color: @form-control-validation-error!important;
1007
+ color: @form-control-validation-error !important;
970
1008
  }
971
1009
  }
972
1010
 
@@ -978,7 +1016,7 @@ label.editable {
978
1016
  display: none;
979
1017
  }
980
1018
  .form-control {
981
- padding: @form-control-padding-base-vertical @form-control-padding-base-horizontal!important;
1019
+ padding: @form-control-padding-base-vertical @form-control-padding-base-horizontal !important;
982
1020
  }
983
1021
  }
984
1022
  }
@@ -1002,10 +1040,10 @@ label.editable {
1002
1040
  vertical-align: middle;
1003
1041
 
1004
1042
  > label {
1005
- margin-right: @margin-8;
1043
+ margin-right: @size-8;
1006
1044
  }
1007
1045
  + .form-group, + .btn {
1008
- margin-left: @margin-8;
1046
+ margin-left: @size-8;
1009
1047
  }
1010
1048
 
1011
1049
  }
@@ -1060,12 +1098,6 @@ label.editable {
1060
1098
  margin-left: 0;
1061
1099
  } // Re-override the feedback icon.
1062
1100
  // Removed unused logic: .has-feedback
1063
- //.has-feedback .form-control-feedback {
1064
- // top: 0;
1065
- //}
1066
- //.has-feedback .form-control-feedback-message {
1067
- // top: @form-control-height-base;
1068
- //}
1069
1101
  }
1070
1102
  }
1071
1103
 
@@ -1075,12 +1107,12 @@ label.editable {
1075
1107
  label {
1076
1108
  display: inline-flex;
1077
1109
  align-items: center;
1078
- margin: 0 0 8px 0;
1110
+ margin: 0 0 @size-8 0;
1079
1111
  padding-left: 0;
1080
1112
  > input[type='radio'],
1081
1113
  > input[type='checkbox'] {
1082
1114
  flex-grow: 0;
1083
- margin: 0 8px 0 0;
1115
+ margin: 0 @size-8 0 0;
1084
1116
  height: 18px;
1085
1117
  + span {
1086
1118
  flex-grow: 1;
@@ -1112,7 +1144,7 @@ label.editable {
1112
1144
  margin-right: 0;
1113
1145
  margin-left: 0;
1114
1146
  .form-control-feedback {
1115
- right: 5px;
1147
+ right: @size-5;
1116
1148
  }
1117
1149
  }
1118
1150
  }
@@ -1126,10 +1158,7 @@ label.editable {
1126
1158
  //
1127
1159
  // Reposition the icon because it's now within a grid column and columns have
1128
1160
  // `position: relative;` on them. Also accounts for the grid gutter padding.
1129
- // Removed unused logic: .has-feedback
1130
- //.has-feedback .form-control-feedback {
1131
- // right: calc(@grid-gutter-width * 0.5 + 5);
1132
- //}
1161
+ // Removed unused logic: .has-feedback .form-control-feedback
1133
1162
 
1134
1163
  .form-group-lg {
1135
1164
  @media (min-width: @screen-sm-min) {
@@ -1149,36 +1178,4 @@ label.editable {
1149
1178
  }
1150
1179
  }
1151
1180
 
1152
- // Slide form action buttons into the viewport on long forms
1153
- .btn-save-wrapper {
1154
- animation-duration: 0.5s;
1155
- &.changed-remove-active {
1156
- animation-duration: 0;
1157
- }
1158
- }
1159
-
1160
- .btn-save-wrapper.changed {
1161
- position: fixed;
1162
- right: 0;
1163
- bottom: 0;
1164
- left: 0;
1165
- z-index: (@zindex-navbar-fixed - 1);
1166
- padding: 16px 48px;
1167
- background-color: @component-background-default;
1168
- transition: left 0.4s ease-in-out; //horizontal tabs
1169
- .mcontainerHorizontal & {
1170
- left: 0;
1171
- padding: 10px 15px;
1172
- }
1173
- .open & {
1174
- left: @navigatorWidth;
1175
- }
1176
- }
1177
-
1178
- .open {
1179
- .has-tabs.page-tabs-vertical + .container-fluid {
1180
- .btn-save-wrapper.changed {
1181
- left: calc(@navigatorWidth + @nav-tabs-vertical-width);
1182
- }
1183
- }
1184
- }
1181
+ // Removed unused form button wrapper class - verified 0 usages: .btn-save-wrapper