cx 26.2.2 → 26.2.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 (335) hide show
  1. package/build/charts/Chart.d.ts.map +1 -1
  2. package/build/charts/Chart.js +5 -4
  3. package/build/charts/ColumnBarBase.d.ts +3 -3
  4. package/build/charts/ColumnBarBase.d.ts.map +1 -1
  5. package/build/charts/ColumnBarBase.js +1 -1
  6. package/build/charts/Legend.d.ts.map +1 -1
  7. package/build/charts/Legend.js +11 -4
  8. package/build/charts/Marker.d.ts +3 -3
  9. package/build/charts/Marker.d.ts.map +1 -1
  10. package/build/charts/MarkerLine.d.ts +7 -7
  11. package/build/charts/MarkerLine.d.ts.map +1 -1
  12. package/build/charts/MarkerLine.js +14 -10
  13. package/build/charts/PieChart.d.ts +4 -4
  14. package/build/charts/PieChart.d.ts.map +1 -1
  15. package/build/charts/PieChart.js +36 -14
  16. package/build/charts/PieLabel.d.ts.map +1 -1
  17. package/build/charts/PieLabel.js +2 -1
  18. package/build/charts/RangeMarker.d.ts +3 -3
  19. package/build/charts/RangeMarker.d.ts.map +1 -1
  20. package/build/charts/RangeMarker.js +1 -1
  21. package/build/charts/axis/TimeAxis.d.ts +3 -3
  22. package/build/charts/axis/TimeAxis.d.ts.map +1 -1
  23. package/build/charts/axis/TimeAxis.js +70 -21
  24. package/build/charts/helpers/SnapPointFinder.d.ts +2 -2
  25. package/build/charts/helpers/SnapPointFinder.d.ts.map +1 -1
  26. package/build/charts/helpers/ValueAtFinder.d.ts +3 -3
  27. package/build/charts/helpers/ValueAtFinder.d.ts.map +1 -1
  28. package/build/data/StructuredSelector.js +3 -4
  29. package/build/data/createAccessorModelProxy.d.ts +6 -11
  30. package/build/data/createAccessorModelProxy.d.ts.map +1 -1
  31. package/build/data/createAccessorModelProxy.js +1 -3
  32. package/build/jsx-runtime.d.ts +2 -1
  33. package/build/jsx-runtime.d.ts.map +1 -1
  34. package/build/svg/Ellipse.d.ts +5 -4
  35. package/build/svg/Ellipse.d.ts.map +1 -1
  36. package/build/svg/Ellipse.js +9 -6
  37. package/build/svg/Line.d.ts +1 -0
  38. package/build/svg/Line.d.ts.map +1 -1
  39. package/build/svg/Line.js +4 -1
  40. package/build/svg/Text.d.ts +12 -6
  41. package/build/svg/Text.d.ts.map +1 -1
  42. package/build/svg/Text.js +12 -4
  43. package/build/ui/Controller.d.ts +2 -0
  44. package/build/ui/Controller.d.ts.map +1 -1
  45. package/build/ui/Controller.js +3 -0
  46. package/build/ui/HoverSync.d.ts.map +1 -1
  47. package/build/ui/HoverSync.js +7 -2
  48. package/build/ui/Prop.d.ts +1 -1
  49. package/build/ui/Prop.d.ts.map +1 -1
  50. package/build/ui/Text.d.ts +3 -3
  51. package/build/ui/Text.d.ts.map +1 -1
  52. package/build/ui/Text.js +5 -5
  53. package/build/ui/adapter/GroupAdapter.d.ts.map +1 -1
  54. package/build/ui/adapter/GroupAdapter.js +20 -10
  55. package/build/ui/app/History.js +1 -1
  56. package/build/ui/createFunctionalComponent.d.ts +4 -1
  57. package/build/ui/createFunctionalComponent.d.ts.map +1 -1
  58. package/build/widgets/List.d.ts.map +1 -1
  59. package/build/widgets/List.js +6 -7
  60. package/build/widgets/drag-drop/DropZone.d.ts +3 -3
  61. package/build/widgets/drag-drop/DropZone.d.ts.map +1 -1
  62. package/build/widgets/form/Calendar.d.ts.map +1 -1
  63. package/build/widgets/form/Calendar.js +30 -11
  64. package/build/widgets/form/ColorField.d.ts.map +1 -1
  65. package/build/widgets/form/ColorField.js +16 -7
  66. package/build/widgets/form/DateTimeField.d.ts.map +1 -1
  67. package/build/widgets/form/DateTimeField.js +23 -10
  68. package/build/widgets/form/Field.d.ts +2 -0
  69. package/build/widgets/form/Field.d.ts.map +1 -1
  70. package/build/widgets/form/Field.js +11 -5
  71. package/build/widgets/form/LookupField.d.ts +1 -1
  72. package/build/widgets/form/LookupField.d.ts.map +1 -1
  73. package/build/widgets/form/LookupField.js +6 -6
  74. package/build/widgets/form/MonthField.d.ts.map +1 -1
  75. package/build/widgets/form/MonthField.js +15 -7
  76. package/build/widgets/form/MonthPicker.d.ts +1 -2
  77. package/build/widgets/form/MonthPicker.d.ts.map +1 -1
  78. package/build/widgets/form/MonthPicker.js +84 -41
  79. package/build/widgets/form/NumberField.d.ts +2 -0
  80. package/build/widgets/form/NumberField.d.ts.map +1 -1
  81. package/build/widgets/form/NumberField.js +45 -15
  82. package/build/widgets/form/TextField.d.ts +1 -9
  83. package/build/widgets/form/TextField.d.ts.map +1 -1
  84. package/build/widgets/form/TextField.js +1 -1
  85. package/build/widgets/form/TimeList.d.ts +3 -1
  86. package/build/widgets/form/TimeList.d.ts.map +1 -1
  87. package/build/widgets/grid/Grid.d.ts +2 -2
  88. package/build/widgets/grid/Grid.d.ts.map +1 -1
  89. package/build/widgets/grid/Grid.js +14 -11
  90. package/build/widgets/grid/Pagination.d.ts.map +1 -1
  91. package/build/widgets/grid/Pagination.js +4 -4
  92. package/build/widgets/grid/TreeNode.d.ts.map +1 -1
  93. package/build/widgets/grid/TreeNode.js +10 -2
  94. package/build/widgets/icons/folder.d.ts.map +1 -1
  95. package/build/widgets/icons/folder.js +1 -0
  96. package/build/widgets/icons/forward.d.ts.map +1 -1
  97. package/build/widgets/icons/forward.js +4 -3
  98. package/build/widgets/icons/loading.d.ts.map +1 -1
  99. package/build/widgets/icons/loading.js +6 -5
  100. package/build/widgets/icons/square.d.ts.map +1 -1
  101. package/build/widgets/icons/square.js +3 -3
  102. package/build/widgets/index.d.ts +3 -1
  103. package/build/widgets/index.d.ts.map +1 -1
  104. package/build/widgets/index.js +3 -1
  105. package/build/widgets/overlay/ContextMenu.d.ts.map +1 -1
  106. package/build/widgets/overlay/ContextMenu.js +2 -0
  107. package/build/widgets/overlay/Dropdown.d.ts +2 -1
  108. package/build/widgets/overlay/Dropdown.d.ts.map +1 -1
  109. package/build/widgets/overlay/Dropdown.js +75 -20
  110. package/build/widgets/overlay/MsgBox.d.ts +1 -0
  111. package/build/widgets/overlay/MsgBox.d.ts.map +1 -1
  112. package/build/widgets/overlay/MsgBox.js +2 -2
  113. package/build/widgets/overlay/Overlay.d.ts +32 -2
  114. package/build/widgets/overlay/Overlay.d.ts.map +1 -1
  115. package/build/widgets/overlay/Overlay.js +47 -16
  116. package/build/widgets/overlay/Toast.d.ts +1 -1
  117. package/build/widgets/overlay/Toast.d.ts.map +1 -1
  118. package/build/widgets/overlay/Toast.js +4 -1
  119. package/build/widgets/overlay/Tooltip.d.ts +6 -0
  120. package/build/widgets/overlay/Tooltip.d.ts.map +1 -1
  121. package/build/widgets/overlay/Tooltip.js +24 -9
  122. package/build/widgets/overlay/Window.d.ts.map +1 -1
  123. package/build/widgets/overlay/Window.js +24 -9
  124. package/dist/charts.css +325 -272
  125. package/dist/charts.js +11 -5
  126. package/dist/data.js +2 -2
  127. package/dist/manifest.js +853 -841
  128. package/dist/svg.css +14 -8
  129. package/dist/svg.js +9 -1
  130. package/dist/ui.js +29 -16
  131. package/dist/widgets.css +997 -294
  132. package/dist/widgets.js +319 -126
  133. package/package.json +1 -1
  134. package/src/charts/Bar.scss +13 -10
  135. package/src/charts/BarGraph.scss +31 -29
  136. package/src/charts/BubbleGraph.scss +11 -8
  137. package/src/charts/Chart.ts +5 -3
  138. package/src/charts/Column.scss +13 -10
  139. package/src/charts/ColumnBarBase.tsx +255 -230
  140. package/src/charts/ColumnGraph.scss +13 -11
  141. package/src/charts/Gridlines.scss +10 -8
  142. package/src/charts/Legend.scss +57 -50
  143. package/src/charts/Legend.tsx +257 -213
  144. package/src/charts/LegendEntry.scss +35 -29
  145. package/src/charts/LineGraph.scss +28 -25
  146. package/src/charts/Marker.scss +12 -10
  147. package/src/charts/Marker.tsx +3 -2
  148. package/src/charts/MarkerLine.scss +11 -8
  149. package/src/charts/MarkerLine.tsx +196 -177
  150. package/src/charts/PieChart.scss +12 -9
  151. package/src/charts/PieChart.tsx +717 -591
  152. package/src/charts/PieLabel.tsx +99 -81
  153. package/src/charts/Range.scss +11 -8
  154. package/src/charts/RangeMarker.tsx +204 -187
  155. package/src/charts/ScatterGraph.scss +12 -9
  156. package/src/charts/axis/Axis.scss +6 -5
  157. package/src/charts/axis/CategoryAxis.scss +10 -8
  158. package/src/charts/axis/NumericAxis.scss +9 -6
  159. package/src/charts/axis/TimeAxis.scss +9 -6
  160. package/src/charts/axis/TimeAxis.tsx +753 -637
  161. package/src/charts/axis/index.scss +4 -5
  162. package/src/charts/axis/variables.scss +4 -2
  163. package/src/charts/helpers/SnapPointFinder.ts +136 -136
  164. package/src/charts/helpers/ValueAtFinder.ts +72 -72
  165. package/src/charts/index.scss +16 -19
  166. package/src/charts/maps.scss +0 -0
  167. package/src/charts/palette.scss +11 -31
  168. package/src/charts/palette.variables.scss +23 -0
  169. package/src/charts/variables.scss +35 -3
  170. package/src/data/StructuredSelector.ts +2 -2
  171. package/src/data/createAccessorModelProxy.ts +66 -74
  172. package/src/index.scss +5 -6
  173. package/src/jsx-runtime.ts +2 -1
  174. package/src/maps.scss +5 -0
  175. package/src/svg/Ellipse.tsx +62 -55
  176. package/src/svg/Line.tsx +57 -42
  177. package/src/svg/Svg.scss +6 -6
  178. package/src/svg/Text.scss +19 -0
  179. package/src/svg/Text.tsx +172 -116
  180. package/src/svg/index.scss +3 -2
  181. package/src/svg/maps.scss +0 -0
  182. package/src/svg/variables.scss +0 -0
  183. package/src/ui/Container.spec.ts +59 -0
  184. package/src/ui/Controller.spec.tsx +30 -0
  185. package/src/ui/Controller.ts +5 -0
  186. package/src/ui/HoverSync.tsx +179 -147
  187. package/src/ui/Prop.ts +1 -1
  188. package/src/ui/Text.ts +12 -9
  189. package/src/ui/adapter/GroupAdapter.spec.ts +42 -0
  190. package/src/ui/adapter/GroupAdapter.ts +25 -14
  191. package/src/ui/app/History.ts +1 -1
  192. package/src/ui/createFunctionalComponent.spec.tsx +55 -0
  193. package/src/ui/createFunctionalComponent.ts +12 -2
  194. package/src/ui/index.scss +1 -1
  195. package/src/ui/layout/LabelsLeftLayout.scss +5 -7
  196. package/src/ui/layout/LabelsTopLayout.scss +4 -6
  197. package/src/ui/layout/index.scss +2 -3
  198. package/src/ui/maps.scss +0 -0
  199. package/src/ui/variables.scss +1 -2
  200. package/src/util/index.scss +4 -2
  201. package/src/util/maps.scss +1 -0
  202. package/src/util/scss/besm.scss +15 -0
  203. package/src/util/scss/calc.scss +103 -11
  204. package/src/util/scss/defaults.scss +24 -0
  205. package/src/util/scss/elements.scss +78 -0
  206. package/src/util/scss/global.scss +15 -0
  207. package/src/util/scss/include.scss +17 -9
  208. package/src/util/scss/index.scss +1 -9
  209. package/src/util/scss/maps.scss +2 -0
  210. package/src/util/scss/pad-size.scss +9 -0
  211. package/src/util/scss/padding.scss +6 -0
  212. package/src/util/scss/screen-size.scss +5 -0
  213. package/src/util/scss/variables.scss +6 -0
  214. package/src/util/variables.scss +1 -0
  215. package/src/variables.scss +5 -217
  216. package/src/widgets/Button.maps.scss +103 -0
  217. package/src/widgets/Button.scss +33 -9
  218. package/src/widgets/Button.variables.scss +8 -104
  219. package/src/widgets/CxCredit.scss +2 -0
  220. package/src/widgets/FlexBox.scss +16 -11
  221. package/src/widgets/Heading.scss +6 -0
  222. package/src/widgets/HighlightedSearchText.scss +8 -1
  223. package/src/widgets/Icon.scss +6 -0
  224. package/src/widgets/List.scss +7 -0
  225. package/src/widgets/List.tsx +6 -7
  226. package/src/widgets/ProgressBar.scss +9 -0
  227. package/src/widgets/Resizer.scss +9 -7
  228. package/src/widgets/Section.scss +53 -56
  229. package/src/widgets/animations.scss +4 -2
  230. package/src/widgets/box.scss +47 -0
  231. package/src/widgets/drag-drop/DragClone.scss +12 -4
  232. package/src/widgets/drag-drop/DragHandle.scss +12 -6
  233. package/src/widgets/drag-drop/DragSource.scss +12 -6
  234. package/src/widgets/drag-drop/DropZone.scss +9 -0
  235. package/src/widgets/drag-drop/DropZone.tsx +3 -3
  236. package/src/widgets/drag-drop/index.scss +4 -4
  237. package/src/widgets/drag-drop/maps.scss +7 -0
  238. package/src/widgets/drag-drop/variables.scss +8 -5
  239. package/src/widgets/form/Calendar.maps.scss +54 -0
  240. package/src/widgets/form/Calendar.scss +49 -11
  241. package/src/widgets/form/Calendar.tsx +755 -653
  242. package/src/widgets/form/Calendar.variables.scss +3 -46
  243. package/src/widgets/form/Checkbox.maps.scss +34 -0
  244. package/src/widgets/form/Checkbox.scss +14 -3
  245. package/src/widgets/form/Checkbox.variables.scss +4 -36
  246. package/src/widgets/form/ColorField.scss +21 -2
  247. package/src/widgets/form/ColorField.tsx +485 -431
  248. package/src/widgets/form/ColorPicker.maps.scss +21 -0
  249. package/src/widgets/form/ColorPicker.scss +26 -9
  250. package/src/widgets/form/ColorPicker.variables.scss +3 -16
  251. package/src/widgets/form/DateTimeField.scss +54 -21
  252. package/src/widgets/form/DateTimeField.tsx +697 -615
  253. package/src/widgets/form/DateTimePicker.scss +14 -4
  254. package/src/widgets/form/Field.maps.scss +122 -0
  255. package/src/widgets/form/Field.scss +54 -18
  256. package/src/widgets/form/Field.tsx +611 -504
  257. package/src/widgets/form/Field.variables.scss +46 -0
  258. package/src/widgets/form/HelpText.scss +8 -5
  259. package/src/widgets/form/Label.scss +10 -3
  260. package/src/widgets/form/LookupField.maps.scss +26 -0
  261. package/src/widgets/form/LookupField.scss +54 -24
  262. package/src/widgets/form/LookupField.tsx +25 -21
  263. package/src/widgets/form/MonthField.scss +48 -26
  264. package/src/widgets/form/MonthField.tsx +645 -567
  265. package/src/widgets/form/MonthPicker.maps.scss +50 -0
  266. package/src/widgets/form/MonthPicker.scss +44 -35
  267. package/src/widgets/form/MonthPicker.tsx +954 -724
  268. package/src/widgets/form/MonthPicker.variables.scss +24 -0
  269. package/src/widgets/form/NumberField.scss +19 -2
  270. package/src/widgets/form/NumberField.tsx +576 -466
  271. package/src/widgets/form/Radio.maps.scss +36 -0
  272. package/src/widgets/form/Radio.scss +12 -2
  273. package/src/widgets/form/Radio.variables.scss +3 -42
  274. package/src/widgets/form/Select.scss +25 -9
  275. package/src/widgets/form/Slider.scss +23 -14
  276. package/src/widgets/form/Switch.scss +18 -8
  277. package/src/widgets/form/TextArea.scss +14 -1
  278. package/src/widgets/form/TextField.scss +24 -3
  279. package/src/widgets/form/TextField.tsx +9 -21
  280. package/src/widgets/form/UploadButton.scss +14 -6
  281. package/src/widgets/form/ValidationError.scss +10 -6
  282. package/src/widgets/form/Wheel.scss +14 -4
  283. package/src/widgets/form/index.scss +22 -24
  284. package/src/widgets/form/maps.scss +81 -0
  285. package/src/widgets/form/variables.scss +111 -355
  286. package/src/widgets/grid/Grid.scss +19 -2
  287. package/src/widgets/grid/Grid.spec.ts +42 -0
  288. package/src/widgets/grid/Grid.tsx +18 -13
  289. package/src/widgets/grid/Pagination.scss +11 -2
  290. package/src/widgets/grid/Pagination.tsx +110 -102
  291. package/src/widgets/grid/TreeNode.scss +25 -8
  292. package/src/widgets/grid/TreeNode.tsx +127 -116
  293. package/src/widgets/grid/index.scss +3 -4
  294. package/src/widgets/grid/maps.scss +110 -0
  295. package/src/widgets/grid/variables.scss +48 -137
  296. package/src/widgets/icons/folder.tsx +1 -2
  297. package/src/widgets/icons/forward.tsx +23 -20
  298. package/src/widgets/icons/loading.tsx +22 -19
  299. package/src/widgets/icons/square.tsx +20 -17
  300. package/src/widgets/index.scss +16 -16
  301. package/src/widgets/index.ts +63 -58
  302. package/src/widgets/lists.scss +42 -0
  303. package/src/widgets/maps.scss +139 -0
  304. package/src/widgets/nav/Link.scss +14 -1
  305. package/src/widgets/nav/Menu.scss +13 -7
  306. package/src/widgets/nav/Menu.variables.scss +1 -12
  307. package/src/widgets/nav/MenuItem.scss +21 -6
  308. package/src/widgets/nav/Scroller.scss +11 -2
  309. package/src/widgets/nav/Tab.maps.scss +78 -0
  310. package/src/widgets/nav/Tab.scss +12 -6
  311. package/src/widgets/nav/Tab.variables.scss +7 -76
  312. package/src/widgets/nav/cover.scss +6 -4
  313. package/src/widgets/nav/index.scss +6 -6
  314. package/src/widgets/nav/maps.scss +32 -0
  315. package/src/widgets/nav/variables.scss +4 -11
  316. package/src/widgets/overlay/ContextMenu.ts +3 -0
  317. package/src/widgets/overlay/Dropdown.scss +47 -16
  318. package/src/widgets/overlay/Dropdown.tsx +851 -676
  319. package/src/widgets/overlay/MsgBox.tsx +125 -111
  320. package/src/widgets/overlay/Overlay.scss +60 -40
  321. package/src/widgets/overlay/Overlay.tsx +948 -800
  322. package/src/widgets/overlay/Toast.scss +42 -34
  323. package/src/widgets/overlay/Toast.ts +11 -1
  324. package/src/widgets/overlay/Tooltip.scss +27 -96
  325. package/src/widgets/overlay/Tooltip.tsx +376 -309
  326. package/src/widgets/overlay/Window.maps.scss +51 -0
  327. package/src/widgets/overlay/Window.scss +17 -17
  328. package/src/widgets/overlay/Window.tsx +291 -236
  329. package/src/widgets/overlay/Window.variables.scss +2 -43
  330. package/src/widgets/overlay/index.d.ts +11 -11
  331. package/src/widgets/overlay/index.scss +6 -15
  332. package/src/widgets/overlay/maps.scss +44 -0
  333. package/src/widgets/overlay/variables.scss +11 -42
  334. package/src/widgets/variables.scss +33 -117
  335. package/src/global.scss +0 -14
@@ -0,0 +1,81 @@
1
+ @use "../variables" as *;
2
+ @use "../../util/scss/clockwise" as *;
3
+
4
+ $cx-label-state-style-map: (
5
+ default: (
6
+ padding: $cx-default-label-padding,
7
+ font-size: $cx-default-label-font-size,
8
+ font-family: $cx-default-label-font-family,
9
+ font-weight: $cx-default-label-font-weight,
10
+ line-height: $cx-default-label-line-height,
11
+ color: $cx-default-label-color,
12
+ border-style: solid,
13
+ border-width: $cx-default-box-border-width-top 0 $cx-default-box-border-width-bottom 0,
14
+ border-color: transparent,
15
+ ),
16
+ hover: (),
17
+ active: (),
18
+ disabled: (
19
+ color: #bdbdbd,
20
+ ),
21
+ ) !default;
22
+
23
+ $cx-slider-handle-styles: (
24
+ default: (
25
+ background-color: $cx-default-slider-handle-background-color,
26
+ border-style: solid,
27
+ border-width: $cx-default-slider-handle-border-width,
28
+ border-color: $cx-default-slider-handle-border-color,
29
+ border-radius: $cx-default-slider-handle-border-radius,
30
+ box-shadow: $cx-default-slider-handle-box-shadow,
31
+ ),
32
+ hover: (
33
+ box-shadow: 0 0 3px rgba(128, 128, 128, 0.5),
34
+ ),
35
+ focus: (
36
+ border-color: rgba(77, 144, 254, 0.8),
37
+ outline: none,
38
+ box-shadow: 0 0 2px rgba(77, 144, 254, 0.8),
39
+ ),
40
+ disabled: (),
41
+ active: (
42
+ background: rgb(220, 220, 220),
43
+ ),
44
+ ) !default;
45
+
46
+ $cx-switch-handle-styles: (
47
+ default: (
48
+ background-color: $cx-default-switch-handle-background-color,
49
+ border-style: solid,
50
+ border-width: $cx-default-switch-handle-border-width,
51
+ border-color: $cx-default-switch-handle-border-color,
52
+ border-radius: $cx-default-switch-handle-border-radius,
53
+ box-shadow: $cx-default-switch-handle-box-shadow,
54
+ ),
55
+ hover: (
56
+ box-shadow: 0 0 3px rgba(128, 128, 128, 0.5),
57
+ ),
58
+ focus: (
59
+ border-color: rgba(77, 144, 254, 0.8),
60
+ outline: none,
61
+ box-shadow: 0 0 2px rgba(77, 144, 254, 0.8),
62
+ ),
63
+ disabled: (),
64
+ active: (
65
+ background: rgb(220, 220, 220),
66
+ ),
67
+ on: (),
68
+ on-active: (),
69
+ ) !default;
70
+
71
+ $cx-empty-text: (
72
+ color: $cx-default-empty-text-color,
73
+ ) !default;
74
+
75
+ @forward "./Field.maps.scss";
76
+ @forward "./Calendar.maps.scss";
77
+ @forward "./MonthPicker.maps.scss";
78
+ @forward "./Checkbox.maps.scss";
79
+ @forward "./Radio.maps.scss";
80
+ @forward "./ColorPicker.maps.scss";
81
+ @forward "./LookupField.maps.scss";
@@ -1,355 +1,111 @@
1
- @use "sass:map";
2
-
3
- @if cx-call-once("cx/widgets/checker-background") {
4
- %cx-checker-bg {
5
- background-repeat: repeat;
6
- background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuOWwzfk4AAAAfSURBVChTY9i5Y89/dAwEDOh4SCjEJohN8+BXuOc/AOttNBKJWD4sAAAAAElFTkSuQmCC");
7
- }
8
- }
9
-
10
- $cx-use-box-line-height-fix: true !default;
11
-
12
- // Appearance
13
- $cx-default-input-font-family: $cx-default-box-font-family !default;
14
- $cx-default-input-font-size: $cx-default-box-font-size !default;
15
- $cx-default-input-border-color: $cx-default-border-color !default;
16
- $cx-default-input-border-radius: $cx-default-border-radius !default;
17
- $cx-default-input-background-color: white !default;
18
- $cx-default-input-color: black !default;
19
- $cx-default-input-placeholder-color: $cx-default-empty-text-color !default;
20
- $cx-default-input-width: 180px !default;
21
- $cx-default-input-padding: $cx-default-box-padding !default;
22
-
23
- $cx-input-placeholder: (
24
- color: $cx-default-input-placeholder-color,
25
- opacity: 1,
26
- ) !default;
27
-
28
- $cx-input-state-style-map: (
29
- default: (
30
- line-height: $cx-default-box-line-height,
31
- padding: $cx-default-input-padding,
32
- border-width: $cx-default-box-border-width,
33
- font-size: $cx-default-input-font-size,
34
- font-family: $cx-default-input-font-family,
35
- border-color: $cx-default-input-border-color,
36
- border-style: solid,
37
- border-radius: $cx-default-input-border-radius,
38
- background-color: $cx-default-input-background-color,
39
- color: $cx-default-input-color,
40
- outline-offset: 0,
41
- box-shadow: none,
42
- text-overflow: ellipsis,
43
- -ms-appearance: none,
44
- -moz-appearance: none,
45
- -webkit-appearance: none,
46
- ),
47
- hover: (),
48
- focus: (
49
- border-color: rgba(77, 144, 254, 0.8),
50
- outline: none,
51
- box-shadow: 0 0 2px rgba(77, 144, 254, 0.8),
52
- ),
53
- disabled: (
54
- background: rgb(235, 235, 228),
55
- color: rgb(84, 84, 84),
56
- pointer-events: none,
57
- ),
58
- error: (
59
- border-color: rgba(220, 0, 9, 0.8),
60
- ),
61
- error-focus: (
62
- box-shadow: 0 0 2px rgba(220, 0, 9, 0.8),
63
- ),
64
- ) !default;
65
-
66
- $cx-default-checkbox-size: 14px !default;
67
- $cx-default-radio-size: 14px !default;
68
- $cx-default-input-icon-size: $cx-default-icon-size !default;
69
-
70
- // Tool
71
- $cx-default-input-tool-size: $cx-default-box-line-height !default;
72
- $cx-default-input-left-tool-spacing: cx-left($cx-default-box-padding) !default;
73
- $cx-default-input-right-tool-spacing: 1px !default;
74
- $cx-default-input-left-tool-size: $cx-default-input-tool-size !default;
75
- $cx-default-input-left-tool-left: cx-calc(
76
- cx-left($cx-default-input-padding),
77
- cx-left($cx-default-box-border-width)
78
- ) !default;
79
- $cx-default-input-right-tool-right: cx-calc(
80
- cx-right($cx-default-input-padding),
81
- cx-right($cx-default-box-border-width)
82
- ) !default;
83
-
84
- // Left Icon
85
- $cx-input-left-icon-state-style-map: (
86
- default: (
87
- font-size: $cx-default-icon-size,
88
- left: $cx-default-input-left-tool-left,
89
- top: 50%,
90
- margin-top: -$cx-default-input-left-tool-size * 0.5,
91
- height: $cx-default-input-left-tool-size,
92
- width: $cx-default-input-left-tool-size,
93
- line-height: $cx-default-input-left-tool-size,
94
- opacity: 0.6,
95
- text-align: center,
96
- ),
97
- hover: (
98
- opacity: 1,
99
- ),
100
- active: (),
101
- focus: (),
102
- error: (),
103
- ) !default;
104
-
105
- //Right Icon
106
- $cx-input-right-icon-state-style-map: (
107
- default: (
108
- font-size: $cx-default-icon-size,
109
- right: $cx-default-input-right-tool-right,
110
- top: 50%,
111
- margin-top: -$cx-default-input-tool-size * 0.5,
112
- height: $cx-default-input-tool-size,
113
- width: $cx-default-input-tool-size,
114
- line-height: $cx-default-input-tool-size,
115
- opacity: 0.6,
116
- text-align: center,
117
- cursor: pointer,
118
- ),
119
- hover: (
120
- opacity: 1,
121
- ),
122
- active: (),
123
- focus: (),
124
- error: (),
125
- ) !default;
126
-
127
- // Clear Icon
128
- $cx-default-clear-size: $cx-default-input-tool-size !default;
129
- $cx-default-clear-color: #828282 !default;
130
- $cx-default-clear-spacing: 1px !default; //additional padding on the left of the clear box
131
-
132
- $cx-clear-state-style-map: (
133
- default: (
134
- font-size: $cx-default-icon-size,
135
- right: $cx-default-input-right-tool-right,
136
- top: 50%,
137
- margin-top: -$cx-default-clear-size * 0.5,
138
- height: $cx-default-clear-size,
139
- width: $cx-default-clear-size,
140
- line-height: $cx-default-clear-size,
141
- color: $cx-default-clear-color,
142
- border-radius: $cx-default-border-radius,
143
- text-align: center,
144
- ),
145
- hover: (
146
- background-color: rgba(128, 128, 128, 0.2),
147
- ),
148
- active: (),
149
- focus: (),
150
- error: (),
151
- ) !default;
152
-
153
- // Label
154
-
155
- $cx-default-label-padding: $cx-default-box-padding 0 !default;
156
- $cx-default-label-font-size: $cx-default-box-font-size !default;
157
- $cx-default-label-font-family: $cx-default-box-font-family !default;
158
- $cx-default-label-font-weight: normal !default;
159
- $cx-default-label-line-height: $cx-default-box-line-height !default;
160
- $cx-default-label-color: null !default;
161
- $cx-default-label-asterisk-color: #a80000 !default;
162
-
163
- $cx-label-state-style-map: (
164
- default: (
165
- padding: $cx-default-label-padding,
166
- font-size: $cx-default-label-font-size,
167
- font-family: $cx-default-label-font-family,
168
- font-weight: $cx-default-label-font-weight,
169
- line-height: $cx-default-label-line-height,
170
- color: $cx-default-label-color,
171
- border-style: solid,
172
- border-width: cx-top($cx-default-box-border-width) 0 cx-bottom($cx-default-box-border-width) 0,
173
- border-color: transparent,
174
- ),
175
- hover: (),
176
- active: (),
177
- disabled: (
178
- color: #bdbdbd,
179
- ),
180
- ) !default;
181
-
182
- // STANDARD FORM FIELD (textfield, numberfield, lookupfield, select,...)
183
- $cx-std-field-state-style-map: cx-deep-map-merge($cx-input-state-style-map, ()) !default;
184
-
185
- // COLORFIELD
186
- $cx-default-colorfield-font-family: "Consolas", monospace !default;
187
-
188
- // MONTHPICKER
189
- $cx-default-monthpicker-font-size: smaller !default;
190
- $cx-default-monthpicker-font-weight: normal !default;
191
-
192
- // SLIDER
193
- $cx-default-slider-axis-size: 8px !default;
194
- $cx-default-slider-axis-background-color: rgba(128, 128, 128, 0.2) !default;
195
- $cx-default-slider-range-background-color: #98d4ff !default;
196
-
197
- // handle
198
- $cx-default-slider-handle-size: 18px !default;
199
- $cx-default-slider-handle-background-color: rgb(235, 235, 235) !default;
200
- $cx-default-slider-handle-border-width: 1px !default;
201
- $cx-default-slider-handle-border-color: rgb(204, 204, 204) !default;
202
- $cx-default-slider-handle-border-radius: 50% !default;
203
- $cx-default-slider-handle-box-shadow: 0 0 3px rgba(128, 128, 128, 0.3) !default;
204
-
205
- $cx-slider-handle-styles: (
206
- default: (
207
- background-color: $cx-default-slider-handle-background-color,
208
- border-style: solid,
209
- border-width: $cx-default-slider-handle-border-width,
210
- border-color: $cx-default-slider-handle-border-color,
211
- border-radius: $cx-default-slider-handle-border-radius,
212
- box-shadow: $cx-default-slider-handle-box-shadow,
213
- ),
214
- hover: (
215
- box-shadow: 0 0 3px rgba(128, 128, 128, 0.5),
216
- ),
217
- focus: (
218
- border-color: rgba(77, 144, 254, 0.8),
219
- outline: none,
220
- box-shadow: 0 0 2px rgba(77, 144, 254, 0.8),
221
- ),
222
- disabled: (),
223
- active: (
224
- background: rgb(220, 220, 220),
225
- ),
226
- ) !default;
227
-
228
- // SWITCH
229
- $cx-default-switch-axis-background-color: $cx-default-slider-axis-background-color !default;
230
- $cx-default-switch-range-background-color: #87cc8a !default;
231
- $cx-default-switch-axis-size: 20px !default;
232
- $cx-default-switch-width: 32px !default;
233
-
234
- $cx-default-switch-handle-background-color: $cx-default-slider-handle-background-color !default;
235
- $cx-default-switch-handle-border-width: $cx-default-slider-handle-border-width !default;
236
- $cx-default-switch-handle-border-color: $cx-default-slider-handle-border-color !default;
237
- $cx-default-switch-handle-border-radius: $cx-default-slider-handle-border-radius !default;
238
- $cx-default-switch-handle-box-shadow: $cx-default-slider-handle-box-shadow !default;
239
- $cx-default-switch-handle-size: 18px !default;
240
-
241
- $cx-switch-handle-styles: (
242
- default: (
243
- background-color: $cx-default-switch-handle-background-color,
244
- border-style: solid,
245
- border-width: $cx-default-switch-handle-border-width,
246
- border-color: $cx-default-switch-handle-border-color,
247
- border-radius: $cx-default-switch-handle-border-radius,
248
- box-shadow: $cx-default-switch-handle-box-shadow,
249
- ),
250
- hover: (
251
- box-shadow: 0 0 3px rgba(128, 128, 128, 0.5),
252
- ),
253
- focus: (
254
- border-color: rgba(77, 144, 254, 0.8),
255
- outline: none,
256
- box-shadow: 0 0 2px rgba(77, 144, 254, 0.8),
257
- ),
258
- disabled: (),
259
- active: (
260
- background: rgb(220, 220, 220),
261
- ),
262
- on: (),
263
- on-active: (),
264
- ) !default;
265
-
266
- // TEXTAREA
267
- $cx-default-textarea-width: 300px !default;
268
- $cx-textarea-state-style-map: cx-deep-map-merge(
269
- $cx-input-state-style-map,
270
- (
271
- default: (
272
- line-height: normal,
273
- ),
274
- )
275
- );
276
-
277
- // LOOKUPFIELD TAG
278
- $cx-default-input-tag-spacing: 3px !default;
279
- $cx-default-input-tag-font-size: null !default;
280
- $cx-default-input-tag-background-color: #eee !default;
281
- $cx-default-input-tag-border-radius: $cx-default-border-radius !default;
282
- $cx-default-input-tag-padding: cx-calc(cx-top($cx-default-input-padding), -$cx-default-input-tag-spacing) !default;
283
-
284
- $cx-input-tag-state-style-map: (
285
- default: (
286
- font-size: $cx-default-input-tag-font-size,
287
- background-color: $cx-default-input-tag-background-color,
288
- margin: $cx-default-input-tag-spacing 0 0 $cx-default-input-tag-spacing,
289
- padding: $cx-default-input-tag-padding,
290
- padding-right: cx-calc($cx-default-clear-size, 2px),
291
- border-radius: $cx-default-input-tag-border-radius,
292
- ),
293
- ) !default;
294
-
295
- $cx-input-tag-clear-state-style-map: cx-deep-map-merge(
296
- $cx-clear-state-style-map,
297
- (
298
- default: (
299
- right: round($cx-default-input-tag-border-radius * 0.125),
300
- ),
301
- )
302
- ) !default;
303
-
304
- // CALENDAR
305
- @import "Calendar.variables";
306
- @import "Checkbox.variables";
307
- @import "Radio.variables";
308
- @import "ColorPicker.variables";
309
-
310
- $cx-dependencies: map.merge(
311
- $cx-dependencies,
312
- (
313
- "cx/widgets/Field": "cx/widgets/Label" "cx/widgets/Tooltip" "cx/widgets/ValidationError" "cx/widgets/HelpText",
314
- "cx/widgets/DateTimeField": "cx/widgets/Field" "cx/widgets/DateTimePicker" "cx/widgets/Calendar"
315
- "cx/widgets/Dropdown",
316
- "cx/widgets/DateField": "cx/widgets/DateTimeField",
317
- "cx/widgets/TimeField": "cx/widgets/DateTimeField",
318
- "cx/widgets/TextField": "cx/widgets/Field",
319
- "cx/widgets/NumberField": "cx/widgets/Field",
320
- "cx/widgets/MonthField": "cx/widgets/Field" "cx/widgets/MonthPicker" "cx/widgets/Dropdown",
321
- "cx/widgets/ColorField": "cx/widgets/Field" "cx/widgets/ColorPicker" "cx/widgets/Dropdown",
322
- "cx/widgets/LookupField": "cx/widgets/Field" "cx/widgets/Dropdown" "cx/widgets/List"
323
- "cx/widgets/HighlightedSearchText",
324
- "cx/widgets/Select": "cx/widgets/Field",
325
- "cx/widgets/Slider": "cx/widgets/Field",
326
- "cx/widgets/Switch": "cx/widgets/Field",
327
- )
328
- );
329
-
330
- // DATE TIME PICKER
331
- $cx-default-datetimepicker-font-size: $cx-default-font-size !default;
332
- $cx-default-datetimepicker-background-color: #fff !default;
333
- $cx-default-datetimepicker-border-width: 1px !default;
334
- $cx-default-datetimepicker-border-radius: 0 !default;
335
- $cx-default-datetimepicker-border-color: #d3d3d3 !default;
336
- $cx-default-datetimepicker-padding: 0 5px !default;
337
-
338
- // wheel
339
- $cx-default-wheel-clip-background-color: #fff !default;
340
- $cx-default-wheel-clip-border-width: 1px !default;
341
- $cx-default-wheel-clip-border-radius: 0 !default;
342
- $cx-default-wheel-clip-border-color: #d3d3d3 !default;
343
-
344
- $cx-wheel-selection-state-style-map: (
345
- default: (
346
- border-width: 2px 0 2px 0,
347
- border-style: solid,
348
- border-color: #9bc8ff,
349
- background-color: rgba(#9bc8ff, 0.1),
350
- ),
351
- active: (
352
- border-color: #3c7eff,
353
- background: rgba(#3c7eff, 0.1),
354
- ),
355
- ) !default;
1
+ @use "sass:map";
2
+ @use "../../util/scss/include.scss" as *;
3
+ @use "../../util/scss/defaults.scss" as *;
4
+ @use "../../util/scss/clockwise.scss" as *;
5
+ @use "../../util/scss/calc.scss" as *;
6
+ @use "../box.scss" as *;
7
+ @use "./Field.variables.scss" as *;
8
+
9
+ // Label
10
+ $cx-default-label-padding: $cx-default-box-padding 0 !default;
11
+ $cx-default-label-font-size: $cx-default-box-font-size !default;
12
+ $cx-default-label-font-family: $cx-default-box-font-family !default;
13
+ $cx-default-label-font-weight: normal !default;
14
+ $cx-default-label-line-height: $cx-default-box-line-height !default;
15
+ $cx-default-label-color: null !default;
16
+ $cx-default-label-asterisk-color: #a80000 !default;
17
+
18
+ // DATE TIME PICKER
19
+ $cx-default-datetimepicker-font-size: $cx-default-font-size !default;
20
+ $cx-default-datetimepicker-background-color: #fff !default;
21
+ $cx-default-datetimepicker-border-width: 1px !default;
22
+ $cx-default-datetimepicker-border-radius: 0 !default;
23
+ $cx-default-datetimepicker-border-color: #d3d3d3 !default;
24
+ $cx-default-datetimepicker-padding: 0 5px !default;
25
+
26
+ // wheel
27
+ $cx-default-wheel-clip-background-color: #fff !default;
28
+ $cx-default-wheel-clip-border-width: 1px !default;
29
+ $cx-default-wheel-clip-border-radius: 0 !default;
30
+ $cx-default-wheel-clip-border-color: #d3d3d3 !default;
31
+
32
+ $cx-wheel-selection-state-style-map: (
33
+ default: (
34
+ border-width: 2px 0 2px 0,
35
+ border-style: solid,
36
+ border-color: #9bc8ff,
37
+ background-color: rgba(#9bc8ff, 0.1),
38
+ ),
39
+ active: (
40
+ border-color: #3c7eff,
41
+ background: rgba(#3c7eff, 0.1),
42
+ ),
43
+ ) !default;
44
+
45
+ // COLORFIELD
46
+ $cx-default-colorfield-font-family: "Consolas", monospace !default;
47
+
48
+ // MONTHPICKER
49
+ @forward "./MonthPicker.variables.scss";
50
+
51
+ // SLIDER
52
+ $cx-default-slider-axis-size: 8px !default;
53
+ $cx-default-slider-axis-background-color: rgba(128, 128, 128, 0.2) !default;
54
+ $cx-default-slider-range-background-color: #98d4ff !default;
55
+
56
+ // handle
57
+ $cx-default-slider-handle-size: 18px !default;
58
+ $cx-default-slider-handle-background-color: rgb(235, 235, 235) !default;
59
+ $cx-default-slider-handle-border-width: 1px !default;
60
+ $cx-default-slider-handle-border-color: rgb(204, 204, 204) !default;
61
+ $cx-default-slider-handle-border-radius: 50% !default;
62
+ $cx-default-slider-handle-box-shadow: 0 0 3px rgba(128, 128, 128, 0.3) !default;
63
+
64
+ // SWITCH
65
+ $cx-default-switch-axis-background-color: $cx-default-slider-axis-background-color !default;
66
+ $cx-default-switch-range-background-color: #87cc8a !default;
67
+ $cx-default-switch-axis-size: 20px !default;
68
+ $cx-default-switch-width: 32px !default;
69
+
70
+ $cx-default-switch-handle-background-color: $cx-default-slider-handle-background-color !default;
71
+ $cx-default-switch-handle-border-width: $cx-default-slider-handle-border-width !default;
72
+ $cx-default-switch-handle-border-color: $cx-default-slider-handle-border-color !default;
73
+ $cx-default-switch-handle-border-radius: $cx-default-slider-handle-border-radius !default;
74
+ $cx-default-switch-handle-box-shadow: $cx-default-slider-handle-box-shadow !default;
75
+ $cx-default-switch-handle-size: 18px !default;
76
+
77
+ // TEXTAREA
78
+ $cx-default-textarea-width: 300px !default;
79
+
80
+ // LOOKUPFIELD TAG
81
+ $cx-default-input-tag-spacing: 3px !default;
82
+ $cx-default-input-tag-font-size: null !default;
83
+ $cx-default-input-tag-background-color: #eee !default;
84
+ $cx-default-input-tag-border-radius: $cx-default-border-radius !default;
85
+ $cx-default-input-tag-padding: cx-calc($cx-default-input-padding-top, -$cx-default-input-tag-spacing) !default;
86
+
87
+ // Note: Field.variables.scss is @use'd above, not @forward'd here
88
+ // to avoid "module already loaded" errors with @forward...with() configuration
89
+ @forward "./Calendar.variables.scss";
90
+ @forward "./Checkbox.variables.scss";
91
+ @forward "./Radio.variables.scss";
92
+ @forward "./ColorPicker.variables.scss";
93
+
94
+ $cx-dependencies: map.merge(
95
+ $cx-dependencies,
96
+ (
97
+ "cx/widgets/Field": "cx/widgets/Label" "cx/widgets/Tooltip" "cx/widgets/ValidationError" "cx/widgets/HelpText",
98
+ "cx/widgets/DateTimeField": "cx/widgets/Field" "cx/widgets/DateTimePicker" "cx/widgets/Calendar"
99
+ "cx/widgets/Dropdown",
100
+ "cx/widgets/DateField": "cx/widgets/DateTimeField",
101
+ "cx/widgets/TimeField": "cx/widgets/DateTimeField",
102
+ "cx/widgets/TextField": "cx/widgets/Field",
103
+ "cx/widgets/NumberField": "cx/widgets/Field",
104
+ "cx/widgets/MonthField": "cx/widgets/Field" "cx/widgets/MonthPicker" "cx/widgets/Dropdown",
105
+ "cx/widgets/ColorField": "cx/widgets/Field" "cx/widgets/ColorPicker" "cx/widgets/Dropdown",
106
+ "cx/widgets/LookupField": "cx/widgets/Field" "cx/widgets/Dropdown" "cx/widgets/List",
107
+ "cx/widgets/Select": "cx/widgets/Field",
108
+ "cx/widgets/Slider": "cx/widgets/Field",
109
+ "cx/widgets/Switch": "cx/widgets/Field",
110
+ )
111
+ );
@@ -1,4 +1,13 @@
1
+ @use "sass:math";
1
2
  @use "sass:map";
3
+ @use "../variables" as *;
4
+ @use "../maps" as *;
5
+ @use "../../util/scss/add-rules.scss" as *;
6
+ @use "../../util/scss/clockwise.scss" as *;
7
+ @use "../../util/scss/deep-merge.scss" as *;
8
+ @use "../../util/scss/calc.scss" as *;
9
+ @use "../../util/scss/besm.scss" as *;
10
+ @use "../../util/scss/include.scss" as *;
2
11
 
3
12
  @mixin cx-grid(
4
13
  $name: "grid",
@@ -31,6 +40,7 @@
31
40
  border-collapse: collapse;
32
41
  width: 100%;
33
42
  position: relative;
43
+ font-size: inherit;
34
44
  }
35
45
 
36
46
  .#{$state}aligned-left {
@@ -53,6 +63,7 @@
53
63
 
54
64
  &.#{$state}border {
55
65
  border: 1px solid $cx-default-grid-border-color;
66
+ background: $cx-default-grid-background;
56
67
 
57
68
  table {
58
69
  border: none;
@@ -92,6 +103,7 @@
92
103
  vertical-align: top;
93
104
  min-width: 100%;
94
105
  min-height: 100%;
106
+ padding-top: $cx-default-grid-scroll-wrapper-padding-top;
95
107
  }
96
108
  }
97
109
  }
@@ -112,6 +124,8 @@
112
124
  }
113
125
 
114
126
  &.#{$state}border {
127
+ background: $cx-default-grid-background;
128
+
115
129
  table {
116
130
  border: 1px solid $cx-default-grid-border-color;
117
131
  }
@@ -330,7 +344,7 @@
330
344
  width: $icon-size;
331
345
  height: $icon-size;
332
346
  top: 50%;
333
- margin-top: -$icon-size * 0.5;
347
+ margin-top: cx-multiply($icon-size, -0.5);
334
348
  position: absolute;
335
349
  transition: transform 0.1s linear;
336
350
 
@@ -476,7 +490,6 @@
476
490
 
477
491
  .#{$element}#{$name}-group-caption {
478
492
  font-weight: bold;
479
- font-size: 115%;
480
493
 
481
494
  td {
482
495
  padding: cx-get-state-rule($data-state-style-map, default, padding);
@@ -598,6 +611,10 @@
598
611
  border-right-style: solid;
599
612
  border-right-width: 1px;
600
613
 
614
+ & > .#{$element}#{$name}-fixed-table-wrapper {
615
+ padding-top: $cx-default-grid-scroll-wrapper-padding-top;
616
+ }
617
+
601
618
  &.#{$state}fixed-footer
602
619
  > .#{$element}#{$name}-fixed-table-wrapper
603
620
  > table
@@ -0,0 +1,42 @@
1
+ import assert from "assert";
2
+ import { Grid } from "./Grid";
3
+ import { Widget } from "../../ui/Widget";
4
+
5
+ function collectKeys(
6
+ obj: any,
7
+ path = "",
8
+ result: Record<string, boolean> = {},
9
+ seen = new WeakSet(),
10
+ ): Record<string, boolean> {
11
+ if (!obj || typeof obj !== "object" || seen.has(obj)) return result;
12
+ seen.add(obj);
13
+ for (const key of Object.keys(obj)) {
14
+ const fullPath = path ? `${path}.${key}` : key;
15
+ result[fullPath] = true;
16
+ collectKeys(obj[key], fullPath, result, seen);
17
+ }
18
+ return result;
19
+ }
20
+
21
+ describe("Grid", () => {
22
+ it("should not mutate columns config during init", () => {
23
+ const config = {
24
+ type: Grid,
25
+ records: { bind: "records" },
26
+ columns: [
27
+ { header: "Name", field: "name" },
28
+ { header: "City", field: "city" },
29
+ ],
30
+ };
31
+
32
+ const keysBefore = collectKeys(config);
33
+
34
+ const widget = Widget.create(config) as Grid;
35
+ widget.init();
36
+
37
+ const keysAfter = collectKeys(config);
38
+ const newKeys = Object.keys(keysAfter).filter((k) => !keysBefore[k]);
39
+
40
+ assert.deepStrictEqual(newKeys, [], `Config was mutated. New keys: ${newKeys.join(", ")}`);
41
+ });
42
+ });