cx 26.0.13 → 26.1.0

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 (251) hide show
  1. package/build/ui/VDOM.d.ts +1 -20
  2. package/build/ui/VDOM.js +1 -3
  3. package/build/ui/Widget.d.ts +1 -1
  4. package/build/ui/app/startAppLoop.js +2 -10
  5. package/build/widgets/form/Checkbox.d.ts +0 -1
  6. package/build/widgets/form/Checkbox.js +1 -0
  7. package/build/widgets/form/ColorField.d.ts +0 -1
  8. package/build/widgets/form/ColorField.js +2 -2
  9. package/build/widgets/form/DateTimeField.d.ts +0 -2
  10. package/build/widgets/form/DateTimeField.js +1 -0
  11. package/build/widgets/form/DateTimePicker.d.ts +0 -2
  12. package/build/widgets/form/DateTimePicker.js +1 -0
  13. package/build/widgets/form/Radio.d.ts +0 -1
  14. package/build/widgets/form/Slider.js +9 -1
  15. package/build/widgets/form/Switch.d.ts +0 -1
  16. package/build/widgets/form/Switch.js +1 -1
  17. package/build/widgets/form/Wheel.d.ts +0 -1
  18. package/build/widgets/grid/Grid.d.ts +0 -2
  19. package/build/widgets/grid/GridCellEditor.js +3 -1
  20. package/build/widgets/overlay/Overlay.d.ts +3 -0
  21. package/build/widgets/overlay/Overlay.js +3 -2
  22. package/build/widgets/overlay/createHotPromiseWindowFactory.js +0 -1
  23. package/dist/manifest.js +810 -810
  24. package/dist/ui.js +3 -10
  25. package/dist/widgets.js +18 -7
  26. package/package.json +9 -8
  27. package/src/charts/Chart.ts +108 -108
  28. package/src/data/ArrayElementView.ts +90 -90
  29. package/src/data/AugmentedViewBase.ts +88 -88
  30. package/src/data/Binding.ts +104 -104
  31. package/src/data/ExposedRecordView.ts +95 -95
  32. package/src/data/ExposedValueView.ts +89 -89
  33. package/src/data/Expression.spec.ts +229 -229
  34. package/src/data/Expression.ts +233 -233
  35. package/src/data/Grouper.spec.ts +57 -57
  36. package/src/data/Grouper.ts +158 -158
  37. package/src/data/NestedDataView.ts +43 -43
  38. package/src/data/ReadOnlyDataView.ts +39 -39
  39. package/src/data/Ref.ts +104 -104
  40. package/src/data/Selector.ts +10 -10
  41. package/src/data/Store.ts +52 -52
  42. package/src/data/StoreProxy.ts +19 -19
  43. package/src/data/StoreRef.ts +66 -66
  44. package/src/data/StringTemplate.spec.ts +132 -132
  45. package/src/data/StringTemplate.ts +93 -93
  46. package/src/data/StructuredSelector.spec.ts +113 -113
  47. package/src/data/StructuredSelector.ts +146 -146
  48. package/src/data/SubscribableView.ts +63 -63
  49. package/src/data/ZoomIntoPropertyView.spec.ts +64 -64
  50. package/src/data/ZoomIntoPropertyView.ts +45 -45
  51. package/src/data/computable.spec.ts +87 -87
  52. package/src/data/createStructuredSelector.ts +62 -62
  53. package/src/data/getAccessor.spec.ts +11 -11
  54. package/src/data/getAccessor.ts +74 -74
  55. package/src/data/getSelector.spec.ts +43 -43
  56. package/src/data/getSelector.ts +66 -66
  57. package/src/data/ops/filter.spec.ts +35 -35
  58. package/src/data/ops/filter.ts +9 -9
  59. package/src/data/ops/merge.ts +13 -13
  60. package/src/data/ops/removeTreeNodes.spec.ts +37 -37
  61. package/src/data/ops/updateArray.spec.ts +69 -69
  62. package/src/data/test-types.ts +7 -7
  63. package/src/hooks/useTrigger.ts +26 -26
  64. package/src/index.scss +6 -6
  65. package/src/jsx-dev-runtime.ts +4 -4
  66. package/src/jsx-runtime.spec.tsx +38 -9
  67. package/src/svg/BoundedObject.ts +101 -101
  68. package/src/svg/util/Rect.ts +105 -105
  69. package/src/ui/CSSHelper.ts +17 -17
  70. package/src/ui/Culture.ts +159 -159
  71. package/src/ui/DataProxy.ts +55 -55
  72. package/src/ui/FocusManager.ts +171 -171
  73. package/src/ui/Instance.ts +866 -866
  74. package/src/ui/Prop.ts +140 -140
  75. package/src/ui/RenderingContext.ts +99 -99
  76. package/src/ui/Rescope.ts +49 -49
  77. package/src/ui/StructuredInstanceDataAccessor.ts +32 -32
  78. package/src/ui/VDOM.ts +1 -34
  79. package/src/ui/adapter/ArrayAdapter.spec.ts +55 -55
  80. package/src/ui/adapter/TreeAdapter.spec.ts +76 -76
  81. package/src/ui/adapter/TreeAdapter.ts +185 -185
  82. package/src/ui/app/History.ts +133 -133
  83. package/src/ui/app/Url.spec.ts +50 -50
  84. package/src/ui/app/startAppLoop.tsx +5 -9
  85. package/src/ui/app/startHotAppLoop.ts +41 -41
  86. package/src/ui/layout/Content.ts +30 -30
  87. package/src/ui/layout/FirstVisibleChildLayout.ts +60 -60
  88. package/src/util/Console.ts +13 -13
  89. package/src/util/Format.spec.ts +69 -69
  90. package/src/util/Format.ts +267 -267
  91. package/src/util/addEventListenerWithOptions.ts +41 -41
  92. package/src/util/browserSupportsPassiveEventHandlers.ts +20 -20
  93. package/src/util/color/rgbToHsl.ts +35 -35
  94. package/src/util/getActiveElement.ts +4 -4
  95. package/src/util/hasKey.ts +18 -18
  96. package/src/util/index.ts +55 -55
  97. package/src/util/innerTextTrim.ts +10 -10
  98. package/src/util/isArray.ts +3 -3
  99. package/src/util/isDataRecord.ts +5 -5
  100. package/src/util/isDefined.ts +3 -3
  101. package/src/util/isString.ts +3 -3
  102. package/src/widgets/DocumentTitle.ts +95 -95
  103. package/src/widgets/Sandbox.ts +103 -103
  104. package/src/widgets/autoFocus.ts +9 -9
  105. package/src/widgets/cx.ts +63 -63
  106. package/src/widgets/form/Checkbox.tsx +0 -1
  107. package/src/widgets/form/ColorField.tsx +15 -12
  108. package/src/widgets/form/DateTimeField.tsx +0 -2
  109. package/src/widgets/form/DateTimePicker.tsx +0 -2
  110. package/src/widgets/form/Radio.tsx +0 -1
  111. package/src/widgets/form/Slider.tsx +12 -4
  112. package/src/widgets/form/Switch.tsx +2 -3
  113. package/src/widgets/form/Wheel.tsx +0 -1
  114. package/src/widgets/grid/Grid.tsx +0 -1
  115. package/src/widgets/grid/GridCell.ts +143 -143
  116. package/src/widgets/grid/GridCellEditor.tsx +7 -1
  117. package/src/widgets/icons/calendar.tsx +17 -17
  118. package/src/widgets/icons/check.tsx +13 -13
  119. package/src/widgets/icons/clear.tsx +15 -15
  120. package/src/widgets/icons/close.tsx +20 -20
  121. package/src/widgets/icons/cx.tsx +38 -38
  122. package/src/widgets/icons/drop-down.tsx +15 -15
  123. package/src/widgets/icons/file.tsx +13 -13
  124. package/src/widgets/icons/folder-open.tsx +15 -15
  125. package/src/widgets/icons/folder.tsx +13 -13
  126. package/src/widgets/icons/forward.tsx +22 -22
  127. package/src/widgets/icons/loading.tsx +24 -24
  128. package/src/widgets/icons/menu.tsx +17 -17
  129. package/src/widgets/icons/pixel-picker.tsx +18 -18
  130. package/src/widgets/icons/search.tsx +13 -13
  131. package/src/widgets/icons/sort-asc.tsx +14 -14
  132. package/src/widgets/icons/square.tsx +18 -18
  133. package/src/widgets/nav/Route.ts +142 -142
  134. package/src/widgets/overlay/Dropdown.tsx +762 -762
  135. package/src/widgets/overlay/MsgBox.tsx +141 -141
  136. package/src/widgets/overlay/Overlay.tsx +5 -1
  137. package/src/widgets/overlay/Toast.ts +111 -111
  138. package/src/widgets/overlay/Window.tsx +299 -299
  139. package/src/widgets/overlay/alerts.ts +46 -46
  140. package/src/widgets/overlay/captureMouse.ts +195 -195
  141. package/src/widgets/overlay/createHotPromiseWindowFactory.ts +0 -1
  142. package/src/widgets/overlay/index.d.ts +11 -11
  143. package/src/widgets/overlay/index.ts +11 -11
  144. package/src/widgets/overlay/tooltip-ops.ts +173 -173
  145. package/build/data/ArrayElementView.spec.d.ts +0 -1
  146. package/build/data/ArrayElementView.spec.js +0 -81
  147. package/build/data/Binding.spec.d.ts +0 -1
  148. package/build/data/Binding.spec.js +0 -61
  149. package/build/data/Expression.spec.d.ts +0 -1
  150. package/build/data/Expression.spec.js +0 -196
  151. package/build/data/Grouper.spec.d.ts +0 -1
  152. package/build/data/Grouper.spec.js +0 -48
  153. package/build/data/Ref.spec.d.ts +0 -1
  154. package/build/data/Ref.spec.js +0 -72
  155. package/build/data/Store.spec.d.ts +0 -1
  156. package/build/data/Store.spec.js +0 -19
  157. package/build/data/StoreRef.spec.d.ts +0 -1
  158. package/build/data/StoreRef.spec.js +0 -22
  159. package/build/data/StringTemplate.spec.d.ts +0 -1
  160. package/build/data/StringTemplate.spec.js +0 -112
  161. package/build/data/StructuredSelector.spec.d.ts +0 -1
  162. package/build/data/StructuredSelector.spec.js +0 -102
  163. package/build/data/View.spec.d.ts +0 -1
  164. package/build/data/View.spec.js +0 -44
  165. package/build/data/ZoomIntoPropertyView.spec.d.ts +0 -1
  166. package/build/data/ZoomIntoPropertyView.spec.js +0 -54
  167. package/build/data/comparer.spec.d.ts +0 -1
  168. package/build/data/comparer.spec.js +0 -50
  169. package/build/data/computable.spec.d.ts +0 -1
  170. package/build/data/computable.spec.js +0 -56
  171. package/build/data/createAccessorModelProxy.spec.d.ts +0 -1
  172. package/build/data/createAccessorModelProxy.spec.js +0 -30
  173. package/build/data/createStructuredSelector.spec.d.ts +0 -1
  174. package/build/data/createStructuredSelector.spec.js +0 -42
  175. package/build/data/diff/diffs.spec.d.ts +0 -1
  176. package/build/data/diff/diffs.spec.js +0 -45
  177. package/build/data/getAccessor.spec.d.ts +0 -1
  178. package/build/data/getAccessor.spec.js +0 -10
  179. package/build/data/getSelector.spec.d.ts +0 -1
  180. package/build/data/getSelector.spec.js +0 -36
  181. package/build/data/ops/append.spec.d.ts +0 -1
  182. package/build/data/ops/append.spec.js +0 -24
  183. package/build/data/ops/filter.spec.d.ts +0 -1
  184. package/build/data/ops/filter.spec.js +0 -25
  185. package/build/data/ops/findTreeNode.spec.d.ts +0 -1
  186. package/build/data/ops/findTreeNode.spec.js +0 -20
  187. package/build/data/ops/merge.spec.d.ts +0 -1
  188. package/build/data/ops/merge.spec.js +0 -23
  189. package/build/data/ops/removeTreeNodes.spec.d.ts +0 -1
  190. package/build/data/ops/removeTreeNodes.spec.js +0 -35
  191. package/build/data/ops/updateArray.spec.d.ts +0 -1
  192. package/build/data/ops/updateArray.spec.js +0 -33
  193. package/build/data/ops/updateTree.spec.d.ts +0 -1
  194. package/build/data/ops/updateTree.spec.js +0 -44
  195. package/build/hooks/invokeCallback.spec.d.ts +0 -1
  196. package/build/hooks/invokeCallback.spec.js +0 -44
  197. package/build/hooks/resolveCallback.spec.d.ts +0 -1
  198. package/build/hooks/resolveCallback.spec.js +0 -35
  199. package/build/hooks/store.spec.d.ts +0 -1
  200. package/build/hooks/store.spec.js +0 -48
  201. package/build/hooks/useTrigger.spec.d.ts +0 -1
  202. package/build/hooks/useTrigger.spec.js +0 -59
  203. package/build/ui/Controller.spec.d.ts +0 -1
  204. package/build/ui/Controller.spec.js +0 -247
  205. package/build/ui/Cx.spec.d.ts +0 -1
  206. package/build/ui/Cx.spec.js +0 -153
  207. package/build/ui/DataProxy.spec.d.ts +0 -1
  208. package/build/ui/DataProxy.spec.js +0 -208
  209. package/build/ui/IsolatedScope.spec.d.ts +0 -1
  210. package/build/ui/IsolatedScope.spec.js +0 -42
  211. package/build/ui/PureContainer.spec.d.ts +0 -1
  212. package/build/ui/PureContainer.spec.js +0 -149
  213. package/build/ui/Repeater.spec.d.ts +0 -1
  214. package/build/ui/Repeater.spec.js +0 -109
  215. package/build/ui/Rescope.spec.d.ts +0 -1
  216. package/build/ui/Rescope.spec.js +0 -134
  217. package/build/ui/Restate.spec.d.ts +0 -1
  218. package/build/ui/Restate.spec.js +0 -257
  219. package/build/ui/adapter/ArrayAdapter.spec.d.ts +0 -1
  220. package/build/ui/adapter/ArrayAdapter.spec.js +0 -44
  221. package/build/ui/adapter/TreeAdapter.spec.d.ts +0 -1
  222. package/build/ui/adapter/TreeAdapter.spec.js +0 -71
  223. package/build/ui/app/Url.spec.d.ts +0 -1
  224. package/build/ui/app/Url.spec.js +0 -43
  225. package/build/ui/createFunctionalComponent.spec.d.ts +0 -1
  226. package/build/ui/createFunctionalComponent.spec.js +0 -272
  227. package/build/ui/layout/ContentPlaceholder.spec.d.ts +0 -1
  228. package/build/ui/layout/ContentPlaceholder.spec.js +0 -333
  229. package/build/ui/layout/FirstVisibleChildLayout.spec.d.ts +0 -1
  230. package/build/ui/layout/FirstVisibleChildLayout.spec.js +0 -101
  231. package/build/util/Format.spec.d.ts +0 -1
  232. package/build/util/Format.spec.js +0 -58
  233. package/build/util/TraversalStack.spec.d.ts +0 -1
  234. package/build/util/TraversalStack.spec.js +0 -43
  235. package/build/util/date/upperBoundCheck.spec.d.ts +0 -1
  236. package/build/util/date/upperBoundCheck.spec.js +0 -22
  237. package/build/util/getSearchQueryPredicate.spec.d.ts +0 -1
  238. package/build/util/getSearchQueryPredicate.spec.js +0 -33
  239. package/build/util/isValidIdentifierName.spec.d.ts +0 -1
  240. package/build/util/isValidIdentifierName.spec.js +0 -28
  241. package/build/util/routeAppend.spec.d.ts +0 -1
  242. package/build/util/routeAppend.spec.js +0 -14
  243. package/build/widgets/AccessorBindings.spec.d.ts +0 -1
  244. package/build/widgets/AccessorBindings.spec.js +0 -40
  245. package/build/widgets/HtmlElement.spec.d.ts +0 -1
  246. package/build/widgets/HtmlElement.spec.js +0 -38
  247. package/build/widgets/form/ValidationGroup.spec.d.ts +0 -1
  248. package/build/widgets/form/ValidationGroup.spec.js +0 -62
  249. package/build/widgets/nav/Route.spec.d.ts +0 -1
  250. package/build/widgets/nav/Route.spec.js +0 -15
  251. package/dist/manifest.d.ts +0 -1443
@@ -1,103 +1,103 @@
1
- import { Widget } from "../ui/Widget";
2
- import { PureContainerBase, PureContainerConfig } from "../ui/PureContainer";
3
- import { Binding, BindingInput } from "../data/Binding";
4
- import { ExposedValueView, ExposedValueViewConfig } from "../data/ExposedValueView";
5
- import { RenderingContext } from "../ui/RenderingContext";
6
- import { Instance } from "../ui/Instance";
7
- import { StringProp, WritableProp } from "../ui/Prop";
8
-
9
- export interface SandboxConfig extends PureContainerConfig {
10
- /** Binding to the object that holds sandbox data. */
11
- storage: WritableProp<Record<string, any>>;
12
-
13
- /** Key used to identify the sandbox instance within the storage. */
14
- key?: StringProp;
15
-
16
- /** Alias for `key`. */
17
- accessKey?: StringProp;
18
-
19
- /** Alias used to expose sandbox data. Default is `$page`. */
20
- recordName?: string;
21
-
22
- /** Alias for `recordName`. */
23
- recordAlias?: string;
24
-
25
- /** Indicate that parent store data should not be mutated. */
26
- immutable?: boolean;
27
-
28
- /** Indicate that sandbox store data should not be mutated. */
29
- sealed?: boolean;
30
- }
31
-
32
- export interface SandboxInstance extends Instance {
33
- store: ExposedValueView;
34
- }
35
-
36
- export class Sandbox extends PureContainerBase<SandboxConfig, SandboxInstance> {
37
- declare storage: WritableProp<Record<string, any>>;
38
- declare key?: StringProp;
39
- declare recordName?: string;
40
- declare recordAlias?: string;
41
- declare accessKey?: StringProp;
42
- declare immutable?: boolean;
43
- declare sealed?: boolean;
44
- declare storageBinding: Binding;
45
- init(): void {
46
- if (this.recordAlias) this.recordName = this.recordAlias;
47
-
48
- if (this.accessKey) this.key = this.accessKey;
49
-
50
- this.storageBinding = Binding.get(this.storage);
51
-
52
- super.init();
53
- }
54
-
55
- initInstance(context: RenderingContext, instance: SandboxInstance): void {
56
- instance.store = new ExposedValueView({
57
- store: instance.parentStore,
58
- containerBinding: this.storageBinding,
59
- key: null,
60
- recordName: this.recordName,
61
- immutable: this.immutable,
62
- });
63
- super.initInstance(context, instance);
64
- }
65
-
66
- applyParentStore(instance: SandboxInstance): void {
67
- instance.store.setStore(instance.parentStore);
68
- }
69
-
70
- declareData(...args: Record<string, unknown>[]): void {
71
- super.declareData(
72
- {
73
- storage: undefined,
74
- key: undefined,
75
- },
76
- ...args,
77
- );
78
- }
79
-
80
- prepareData(context: RenderingContext, instance: SandboxInstance): void {
81
- var { store, data } = instance;
82
- if (store.getKey() !== data.key) {
83
- //when navigating to a page using the same widget tree as the previous page
84
- //everything needs to be reinstantiated, e.g. user/1 => user/2
85
- instance.store = new ExposedValueView({
86
- store: store,
87
- containerBinding: this.storageBinding,
88
- key: data.key,
89
- recordName: this.recordName,
90
- immutable: this.immutable,
91
- sealed: this.sealed,
92
- });
93
- instance.clearChildrenCache();
94
- }
95
- super.prepareData(context, instance);
96
- }
97
- }
98
-
99
- Sandbox.prototype.recordName = "$page";
100
- Sandbox.prototype.immutable = false;
101
- Sandbox.prototype.sealed = false;
102
-
103
- Widget.alias("sandbox", Sandbox);
1
+ import { Widget } from "../ui/Widget";
2
+ import { PureContainerBase, PureContainerConfig } from "../ui/PureContainer";
3
+ import { Binding, BindingInput } from "../data/Binding";
4
+ import { ExposedValueView, ExposedValueViewConfig } from "../data/ExposedValueView";
5
+ import { RenderingContext } from "../ui/RenderingContext";
6
+ import { Instance } from "../ui/Instance";
7
+ import { StringProp, WritableProp } from "../ui/Prop";
8
+
9
+ export interface SandboxConfig extends PureContainerConfig {
10
+ /** Binding to the object that holds sandbox data. */
11
+ storage: WritableProp<Record<string, any>>;
12
+
13
+ /** Key used to identify the sandbox instance within the storage. */
14
+ key?: StringProp;
15
+
16
+ /** Alias for `key`. */
17
+ accessKey?: StringProp;
18
+
19
+ /** Alias used to expose sandbox data. Default is `$page`. */
20
+ recordName?: string;
21
+
22
+ /** Alias for `recordName`. */
23
+ recordAlias?: string;
24
+
25
+ /** Indicate that parent store data should not be mutated. */
26
+ immutable?: boolean;
27
+
28
+ /** Indicate that sandbox store data should not be mutated. */
29
+ sealed?: boolean;
30
+ }
31
+
32
+ export interface SandboxInstance extends Instance {
33
+ store: ExposedValueView;
34
+ }
35
+
36
+ export class Sandbox extends PureContainerBase<SandboxConfig, SandboxInstance> {
37
+ declare storage: WritableProp<Record<string, any>>;
38
+ declare key?: StringProp;
39
+ declare recordName?: string;
40
+ declare recordAlias?: string;
41
+ declare accessKey?: StringProp;
42
+ declare immutable?: boolean;
43
+ declare sealed?: boolean;
44
+ declare storageBinding: Binding;
45
+ init(): void {
46
+ if (this.recordAlias) this.recordName = this.recordAlias;
47
+
48
+ if (this.accessKey) this.key = this.accessKey;
49
+
50
+ this.storageBinding = Binding.get(this.storage);
51
+
52
+ super.init();
53
+ }
54
+
55
+ initInstance(context: RenderingContext, instance: SandboxInstance): void {
56
+ instance.store = new ExposedValueView({
57
+ store: instance.parentStore,
58
+ containerBinding: this.storageBinding,
59
+ key: null,
60
+ recordName: this.recordName,
61
+ immutable: this.immutable,
62
+ });
63
+ super.initInstance(context, instance);
64
+ }
65
+
66
+ applyParentStore(instance: SandboxInstance): void {
67
+ instance.store.setStore(instance.parentStore);
68
+ }
69
+
70
+ declareData(...args: Record<string, unknown>[]): void {
71
+ super.declareData(
72
+ {
73
+ storage: undefined,
74
+ key: undefined,
75
+ },
76
+ ...args,
77
+ );
78
+ }
79
+
80
+ prepareData(context: RenderingContext, instance: SandboxInstance): void {
81
+ var { store, data } = instance;
82
+ if (store.getKey() !== data.key) {
83
+ //when navigating to a page using the same widget tree as the previous page
84
+ //everything needs to be reinstantiated, e.g. user/1 => user/2
85
+ instance.store = new ExposedValueView({
86
+ store: store,
87
+ containerBinding: this.storageBinding,
88
+ key: data.key,
89
+ recordName: this.recordName,
90
+ immutable: this.immutable,
91
+ sealed: this.sealed,
92
+ });
93
+ instance.clearChildrenCache();
94
+ }
95
+ super.prepareData(context, instance);
96
+ }
97
+ }
98
+
99
+ Sandbox.prototype.recordName = "$page";
100
+ Sandbox.prototype.immutable = false;
101
+ Sandbox.prototype.sealed = false;
102
+
103
+ Widget.alias("sandbox", Sandbox);
@@ -1,9 +1,9 @@
1
- import { FocusManager } from "../ui/FocusManager";
2
- import { isTouchEvent } from "../util/isTouchEvent";
3
-
4
- export function autoFocus(el: HTMLElement | undefined | null, component: any): void {
5
- let data = component.props.data || component.props.instance.data;
6
- let autoFocusValue = el && data.autoFocus;
7
- if (autoFocusValue && autoFocusValue != component.autoFocusValue && !isTouchEvent()) FocusManager.focus(el!);
8
- component.autoFocusValue = autoFocusValue;
9
- }
1
+ import { FocusManager } from "../ui/FocusManager";
2
+ import { isTouchEvent } from "../util/isTouchEvent";
3
+
4
+ export function autoFocus(el: HTMLElement | undefined | null, component: any): void {
5
+ let data = component.props.data || component.props.instance.data;
6
+ let autoFocusValue = el && data.autoFocus;
7
+ if (autoFocusValue && autoFocusValue != component.autoFocusValue && !isTouchEvent()) FocusManager.focus(el!);
8
+ component.autoFocusValue = autoFocusValue;
9
+ }
package/src/widgets/cx.ts CHANGED
@@ -1,63 +1,63 @@
1
- import { HtmlElement } from "./HtmlElement";
2
- import { VDOM } from "../ui/Widget";
3
- import { createComponentFactory, isComponentFactory } from "../util/Component";
4
- import { createFunctionalComponent } from "../ui/createFunctionalComponent";
5
- import { isString } from "../util/isString";
6
- import { isNumber } from "../util/isNumber";
7
- import { isFunction } from "../util/isFunction";
8
- import { isUndefined } from "../util/isUndefined";
9
- import { isArray } from "../util/isArray";
10
-
11
- import { flattenProps } from "../ui/flattenProps";
12
-
13
- let htmlFactoryCache: Record<string, any> = {};
14
-
15
- function getHtmlElementFactory(tagName: string): any {
16
- let factory = htmlFactoryCache[tagName];
17
- if (factory) return factory;
18
- return (htmlFactoryCache[tagName] = createComponentFactory(
19
- () => {},
20
- (config: any) => HtmlElement.create(HtmlElement, { tag: tagName }, flattenProps(config)),
21
- { tag: tagName },
22
- ));
23
- }
24
-
25
- export function cx(typeName: any, props?: any, ...children: any[]): any {
26
- if (isArray(typeName)) return typeName;
27
-
28
- if (isFunction(typeName) && isUndefined(props))
29
- return createFunctionalComponent((config: any) => typeName(flattenProps(config)));
30
-
31
- if (typeName.type || typeName.$type) return typeName;
32
-
33
- if (children && children.length == 0) children = [];
34
-
35
- if (children && children.length == 1) children = children[0];
36
-
37
- if (typeName == "cx") return children;
38
-
39
- if (typeName == "react") return react(children);
40
-
41
- if (isString(typeName) && typeName[0] == typeName[0].toLowerCase()) typeName = getHtmlElementFactory(typeName);
42
-
43
- return {
44
- $type: typeName,
45
- $props: props,
46
- jsxAttributes: props && Object.keys(props),
47
- children,
48
- };
49
- }
50
-
51
- export function react(config: any): any {
52
- if (!config || isString(config) || isNumber(config) || VDOM.isValidElement(config)) return config;
53
-
54
- if (isArray(config)) return config.map(react);
55
-
56
- let type = config.$type;
57
-
58
- if (isComponentFactory(type) && type.$meta && type.$meta.tag) type = type.$meta.tag;
59
-
60
- if (isArray(config.children)) return VDOM.createElement(type, config.$props, ...config.children.map(react));
61
-
62
- return VDOM.createElement(type, config.$props, react(config.children));
63
- }
1
+ import { HtmlElement } from "./HtmlElement";
2
+ import { VDOM } from "../ui/Widget";
3
+ import { createComponentFactory, isComponentFactory } from "../util/Component";
4
+ import { createFunctionalComponent } from "../ui/createFunctionalComponent";
5
+ import { isString } from "../util/isString";
6
+ import { isNumber } from "../util/isNumber";
7
+ import { isFunction } from "../util/isFunction";
8
+ import { isUndefined } from "../util/isUndefined";
9
+ import { isArray } from "../util/isArray";
10
+
11
+ import { flattenProps } from "../ui/flattenProps";
12
+
13
+ let htmlFactoryCache: Record<string, any> = {};
14
+
15
+ function getHtmlElementFactory(tagName: string): any {
16
+ let factory = htmlFactoryCache[tagName];
17
+ if (factory) return factory;
18
+ return (htmlFactoryCache[tagName] = createComponentFactory(
19
+ () => {},
20
+ (config: any) => HtmlElement.create(HtmlElement, { tag: tagName }, flattenProps(config)),
21
+ { tag: tagName },
22
+ ));
23
+ }
24
+
25
+ export function cx(typeName: any, props?: any, ...children: any[]): any {
26
+ if (isArray(typeName)) return typeName;
27
+
28
+ if (isFunction(typeName) && isUndefined(props))
29
+ return createFunctionalComponent((config: any) => typeName(flattenProps(config)));
30
+
31
+ if (typeName.type || typeName.$type) return typeName;
32
+
33
+ if (children && children.length == 0) children = [];
34
+
35
+ if (children && children.length == 1) children = children[0];
36
+
37
+ if (typeName == "cx") return children;
38
+
39
+ if (typeName == "react") return react(children);
40
+
41
+ if (isString(typeName) && typeName[0] == typeName[0].toLowerCase()) typeName = getHtmlElementFactory(typeName);
42
+
43
+ return {
44
+ $type: typeName,
45
+ $props: props,
46
+ jsxAttributes: props && Object.keys(props),
47
+ children,
48
+ };
49
+ }
50
+
51
+ export function react(config: any): any {
52
+ if (!config || isString(config) || isNumber(config) || VDOM.isValidElement(config)) return config;
53
+
54
+ if (isArray(config)) return config.map(react);
55
+
56
+ let type = config.$type;
57
+
58
+ if (isComponentFactory(type) && type.$meta && type.$meta.tag) type = type.$meta.tag;
59
+
60
+ if (isArray(config.children)) return VDOM.createElement(type, config.$props, ...config.children.map(react));
61
+
62
+ return VDOM.createElement(type, config.$props, react(config.children));
63
+ }
@@ -1,6 +1,5 @@
1
1
  /** @jsxImportSource react */
2
2
 
3
- import * as React from "react";
4
3
  import { VDOM } from "../../ui/VDOM";
5
4
  import type { Instance } from "../../ui/Instance";
6
5
  import type { RenderingContext } from "../../ui/RenderingContext";
@@ -1,6 +1,5 @@
1
1
  /** @jsxImportSource react */
2
2
 
3
- import * as React from "react";
4
3
  import { Cx } from "../../ui/Cx";
5
4
  import { DropdownInstance, DropdownWidgetProps, Instance } from "../../ui/Instance";
6
5
  import type { RenderingContext } from "../../ui/RenderingContext";
@@ -49,7 +48,10 @@ export interface ColorFieldConfig extends FieldConfig {
49
48
  onValidate?: string | ((value: string, instance: Instance, validationParams: Record<string, unknown>) => unknown);
50
49
  }
51
50
 
52
- export class ColorFieldInstance<F extends ColorField = ColorField> extends FieldInstance<F> implements DropdownWidgetProps {
51
+ export class ColorFieldInstance<F extends ColorField = ColorField>
52
+ extends FieldInstance<F>
53
+ implements DropdownWidgetProps
54
+ {
53
55
  lastDropdown?: Instance;
54
56
  dropdownOpen?: boolean;
55
57
  selectedIndex?: number;
@@ -231,10 +233,7 @@ class ColorInput extends VDOM.Component<ColorInputProps, ColorInputState> {
231
233
 
232
234
  let insideButton;
233
235
  if (!data.readOnly && !data.disabled) {
234
- if (
235
- showClear &&
236
- (((!data.required || alwaysShowClear) && !data.empty) || instance.state?.inputError)
237
- )
236
+ if (showClear && (((!data.required || alwaysShowClear) && !data.empty) || instance.state?.inputError))
238
237
  insideButton = (
239
238
  <div
240
239
  className={CSS.element(baseClass, "clear")}
@@ -301,14 +300,18 @@ class ColorInput extends VDOM.Component<ColorInputProps, ColorInputState> {
301
300
  type="text"
302
301
  className={CSS.expand(CSS.element(baseClass, "input"), data.inputClass)}
303
302
  style={data.inputStyle as React.CSSProperties}
304
- defaultValue={this.trim(data.value as string || "")}
303
+ defaultValue={this.trim((data.value as string) || "")}
305
304
  disabled={data.disabled as boolean}
306
305
  readOnly={data.readOnly as boolean}
307
306
  tabIndex={data.tabIndex as number}
308
307
  placeholder={data.placeholder as string}
309
- {...data.inputAttrs as Record<string, any>}
310
- onInput={(e: React.ChangeEvent<HTMLInputElement>) => this.onChange((e.target as HTMLInputElement).value, "input")}
311
- onChange={(e: React.ChangeEvent<HTMLInputElement>) => this.onChange((e.target as HTMLInputElement).value, "change")}
308
+ {...(data.inputAttrs as Record<string, any>)}
309
+ onInput={(e: React.ChangeEvent<HTMLInputElement>) =>
310
+ this.onChange((e.target as HTMLInputElement).value, "input")
311
+ }
312
+ onChange={(e: React.ChangeEvent<HTMLInputElement>) =>
313
+ this.onChange((e.target as HTMLInputElement).value, "change")
314
+ }
312
315
  onKeyDown={(e: React.KeyboardEvent<HTMLInputElement>) => this.onKeyDown(e)}
313
316
  onBlur={(e: React.FocusEvent<HTMLInputElement>) => {
314
317
  this.onBlur(e);
@@ -355,7 +358,7 @@ class ColorInput extends VDOM.Component<ColorInputProps, ColorInputState> {
355
358
  let { instance } = this.props;
356
359
  let { widget } = instance;
357
360
  const colorFieldWidget = widget as ColorField;
358
-
361
+
359
362
  if (colorFieldWidget.trackFocus) {
360
363
  this.setState({
361
364
  focus: true,
@@ -430,7 +433,7 @@ class ColorInput extends VDOM.Component<ColorInputProps, ColorInputState> {
430
433
  UNSAFE_componentWillReceiveProps(props: ColorInputProps): void {
431
434
  let { data, instance } = props;
432
435
  let { state } = instance;
433
- let nv = this.trim(data.value as string || "");
436
+ let nv = this.trim((data.value as string) || "");
434
437
  if (nv != this.input.value && (this.data.value != data.value || !state?.inputError)) {
435
438
  this.input.value = nv;
436
439
  instance.setState({
@@ -1,6 +1,4 @@
1
1
  /** @jsxImportSource react */
2
-
3
- import * as React from "react";
4
2
  import { StringTemplate } from "../../data/StringTemplate";
5
3
  import { Culture } from "../../ui/Culture";
6
4
  import { Cx } from "../../ui/Cx";
@@ -1,6 +1,4 @@
1
1
  /** @jsxImportSource react */
2
-
3
- import * as React from "react";
4
2
  import { Culture } from "../../ui/Culture";
5
3
  import { offFocusOut, oneFocusOut } from "../../ui/FocusManager";
6
4
  import { enableCultureSensitiveFormatting } from "../../ui/Format";
@@ -7,7 +7,6 @@ import { tooltipMouseMove, tooltipMouseLeave } from "../overlay/tooltip-ops";
7
7
  import { stopPropagation } from "../../util/eventCallbacks";
8
8
  import { KeyCode } from "../../util/KeyCode";
9
9
  import { isUndefined } from "../../util/isUndefined";
10
- import * as React from "react";
11
10
  import { BooleanProp, Prop, StringProp } from "../../ui/Prop";
12
11
 
13
12
  export interface RadioConfig extends FieldConfig {
@@ -247,7 +247,9 @@ class SliderComponent extends VDOM.Component<SliderComponentProps, SliderCompone
247
247
  style={data.style}
248
248
  id={data.id}
249
249
  onClick={(e: React.MouseEvent) => this.onClick(e)}
250
- ref={(el: HTMLDivElement | null) => (this.dom.el = el || undefined)}
250
+ ref={(el: HTMLDivElement | null) => {
251
+ this.dom.el = el || undefined;
252
+ }}
251
253
  onMouseMove={(e: React.MouseEvent) => tooltipMouseMove(e, ...getFieldTooltip(instance))}
252
254
  onMouseLeave={(e: React.MouseEvent) => tooltipMouseLeave(e, ...getFieldTooltip(instance))}
253
255
  >
@@ -257,7 +259,9 @@ class SliderComponent extends VDOM.Component<SliderComponentProps, SliderCompone
257
259
  <div
258
260
  key="space"
259
261
  className={CSS.element(baseClass, "space")}
260
- ref={(c: HTMLDivElement | null) => (this.dom.range = c || undefined)}
262
+ ref={(c: HTMLDivElement | null) => {
263
+ this.dom.range = c || undefined;
264
+ }}
261
265
  >
262
266
  {widget.showFrom && (
263
267
  <div
@@ -271,7 +275,9 @@ class SliderComponent extends VDOM.Component<SliderComponentProps, SliderCompone
271
275
  }
272
276
  onMouseLeave={(e: React.MouseEvent) => this.onHandleMouseLeave(e, "from")}
273
277
  onTouchStart={(e: React.TouchEvent) => this.onHandleMouseDown(e, "from")}
274
- ref={(c: HTMLDivElement | null) => (this.dom.from = c || undefined)}
278
+ ref={(c: HTMLDivElement | null) => {
279
+ this.dom.from = c || undefined;
280
+ }}
275
281
  />
276
282
  )}
277
283
  {widget.showTo && (
@@ -286,7 +292,9 @@ class SliderComponent extends VDOM.Component<SliderComponentProps, SliderCompone
286
292
  }
287
293
  onMouseLeave={(e: React.MouseEvent) => this.onHandleMouseLeave(e, "to")}
288
294
  onTouchStart={(e: React.TouchEvent) => this.onHandleMouseDown(e, "to")}
289
- ref={(c: HTMLDivElement | null) => (this.dom.to = c || undefined)}
295
+ ref={(c: HTMLDivElement | null) => {
296
+ this.dom.to = c || undefined;
297
+ }}
290
298
  />
291
299
  )}
292
300
  </div>
@@ -8,7 +8,6 @@ import { Field, FieldConfig, getFieldTooltip, FieldInstance } from "./Field";
8
8
  import { tooltipMouseMove, tooltipMouseLeave } from "../overlay/tooltip-ops";
9
9
  import { preventFocus } from "../../ui/FocusManager";
10
10
  import { isDefined } from "../../util/isDefined";
11
- import * as React from "react";
12
11
  import { BooleanProp, StringProp, StyleProp } from "../../ui/Prop";
13
12
 
14
13
  export interface SwitchConfig extends FieldConfig {
@@ -72,7 +71,7 @@ export class Switch extends Field<SwitchConfig> {
72
71
  structured: true,
73
72
  },
74
73
  },
75
- ...args
74
+ ...args,
76
75
  );
77
76
  }
78
77
 
@@ -116,7 +115,7 @@ export class Switch extends Field<SwitchConfig> {
116
115
  className={data.classNames}
117
116
  style={data.style}
118
117
  id={data.id}
119
- tabIndex={data.disabled ? undefined : ((data.tabIndex as number) || 0)}
118
+ tabIndex={data.disabled ? undefined : (data.tabIndex as number) || 0}
120
119
  onMouseDown={(e: React.MouseEvent) => {
121
120
  e.stopPropagation();
122
121
  if (!this.focusOnMouseDown) preventFocus(e);
@@ -8,7 +8,6 @@ import { addEventListenerWithOptions } from "../../util";
8
8
  import type { RenderingContext } from "../../ui/RenderingContext";
9
9
  import type { Instance } from "../../ui/Instance";
10
10
  import type { CSS } from "../../ui/CSS";
11
- import * as React from "react";
12
11
  import { Prop, StructuredProp } from "../../ui/Prop";
13
12
 
14
13
  export interface WheelConfig extends PureContainerConfig {
@@ -1,5 +1,4 @@
1
1
  /** @jsxImportSource react */
2
- import * as React from "react";
3
2
  import { View } from "../../data";
4
3
  import { Binding } from "../../data/Binding";
5
4
  import { getAccessor } from "../../data/getAccessor";