cx 26.3.5 → 26.3.6

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 (65) hide show
  1. package/build/charts/helpers/SnapPointFinder.d.ts +2 -2
  2. package/build/charts/helpers/SnapPointFinder.d.ts.map +1 -1
  3. package/build/charts/helpers/ValueAtFinder.d.ts +4 -4
  4. package/build/charts/helpers/ValueAtFinder.d.ts.map +1 -1
  5. package/build/charts/helpers/ValueAtFinder.js +2 -5
  6. package/build/data/createAccessorModelProxy.d.ts +6 -11
  7. package/build/data/createAccessorModelProxy.d.ts.map +1 -1
  8. package/build/data/createAccessorModelProxy.js +1 -3
  9. package/build/jsx-runtime.d.ts +2 -1
  10. package/build/jsx-runtime.d.ts.map +1 -1
  11. package/build/ui/createFunctionalComponent.d.ts +4 -1
  12. package/build/ui/createFunctionalComponent.d.ts.map +1 -1
  13. package/build/widgets/form/Calendar.d.ts +1 -0
  14. package/build/widgets/form/Calendar.d.ts.map +1 -1
  15. package/build/widgets/form/Calendar.js +14 -22
  16. package/build/widgets/form/TimeList.d.ts +3 -1
  17. package/build/widgets/form/TimeList.d.ts.map +1 -1
  18. package/build/widgets/grid/Grid.d.ts +3 -3
  19. package/build/widgets/grid/Grid.d.ts.map +1 -1
  20. package/build/widgets/grid/Grid.js +86 -188
  21. package/build/widgets/index.d.ts +3 -1
  22. package/build/widgets/index.d.ts.map +1 -1
  23. package/build/widgets/index.js +3 -1
  24. package/build/widgets/nav/Tab.d.ts.map +1 -1
  25. package/build/widgets/nav/Tab.js +9 -5
  26. package/build/widgets/overlay/Overlay.d.ts +1 -1
  27. package/build/widgets/overlay/Overlay.d.ts.map +1 -1
  28. package/build/widgets/overlay/Overlay.js +10 -19
  29. package/build/widgets/overlay/Window.d.ts.map +1 -1
  30. package/build/widgets/overlay/Window.js +5 -11
  31. package/dist/charts.css +256 -256
  32. package/dist/manifest.js +722 -713
  33. package/dist/widgets.css +15 -7
  34. package/dist/widgets.js +31 -17
  35. package/package.json +1 -1
  36. package/src/charts/BarGraph.scss +31 -31
  37. package/src/charts/Legend.scss +57 -57
  38. package/src/charts/LegendEntry.scss +35 -35
  39. package/src/charts/LineGraph.scss +28 -28
  40. package/src/charts/helpers/SnapPointFinder.ts +136 -136
  41. package/src/charts/helpers/ValueAtFinder.ts +72 -72
  42. package/src/data/createAccessorModelProxy.ts +66 -66
  43. package/src/ui/DataProxy.ts +55 -55
  44. package/src/ui/Rescope.ts +50 -50
  45. package/src/ui/adapter/ArrayAdapter.ts +229 -229
  46. package/src/ui/exprHelpers.ts +96 -96
  47. package/src/util/scss/include.scss +69 -69
  48. package/src/widgets/Button.maps.scss +103 -103
  49. package/src/widgets/Sandbox.ts +104 -104
  50. package/src/widgets/form/Calendar.tsx +772 -772
  51. package/src/widgets/form/ColorField.scss +112 -112
  52. package/src/widgets/form/DateTimeField.scss +111 -111
  53. package/src/widgets/form/LookupField.scss +228 -228
  54. package/src/widgets/form/MonthField.scss +113 -113
  55. package/src/widgets/form/NumberField.scss +72 -72
  56. package/src/widgets/form/Select.scss +104 -104
  57. package/src/widgets/form/TextField.scss +66 -66
  58. package/src/widgets/form/variables.scss +110 -110
  59. package/src/widgets/grid/Grid.tsx +4264 -4264
  60. package/src/widgets/grid/variables.scss +47 -47
  61. package/src/widgets/index.ts +63 -63
  62. package/src/widgets/nav/Tab.ts +122 -122
  63. package/src/widgets/overlay/Overlay.tsx +1028 -1028
  64. package/src/widgets/overlay/Window.tsx +320 -320
  65. package/src/widgets/variables.scss +61 -61
package/dist/widgets.css CHANGED
@@ -130,8 +130,7 @@
130
130
 
131
131
  .cxe-button-baseline {
132
132
  display: inline-block;
133
- width: 1px;
134
- margin-left: -1px;
133
+ min-width: 16px;
135
134
  }
136
135
 
137
136
  .cxb-button.cxs-icon {
@@ -139,7 +138,12 @@
139
138
  }
140
139
 
141
140
  .cxb-button.cxs-icon.cxs-empty {
142
- padding: 5px 5px 5px 21px;
141
+ padding: 5px 5px 5px 5px;
142
+ }
143
+
144
+ .cxb-button.cxs-icon.cxs-empty .cxe-button-icon {
145
+ left: 50%;
146
+ margin-left: -8px;
143
147
  }
144
148
 
145
149
  .cxb-list {
@@ -2408,7 +2412,7 @@ th.cxe-calendar-display {
2408
2412
  width: 100%;
2409
2413
  height: 100%;
2410
2414
  line-height: 26px;
2411
- padding: 0 21px 0 26px;
2415
+ padding: 0 22px 0 26px;
2412
2416
  border-width: 1px;
2413
2417
  font-size: 11px;
2414
2418
  font-family: "Consolas", monospace;
@@ -2965,8 +2969,7 @@ th.cxe-calendar-display {
2965
2969
 
2966
2970
  .cxe-uploadbutton-baseline {
2967
2971
  display: inline-block;
2968
- width: 1px;
2969
- margin-left: -1px;
2972
+ min-width: 16px;
2970
2973
  }
2971
2974
 
2972
2975
  .cxb-uploadbutton.cxs-icon {
@@ -2974,7 +2977,12 @@ th.cxe-calendar-display {
2974
2977
  }
2975
2978
 
2976
2979
  .cxb-uploadbutton.cxs-icon.cxs-empty {
2977
- padding: 5px 5px 5px 21px;
2980
+ padding: 5px 5px 5px 5px;
2981
+ }
2982
+
2983
+ .cxb-uploadbutton.cxs-icon.cxs-empty .cxe-uploadbutton-icon {
2984
+ left: 50%;
2985
+ margin-left: -8px;
2978
2986
  }
2979
2987
 
2980
2988
  .cxe-uploadbutton-input {
package/dist/widgets.js CHANGED
@@ -53,6 +53,9 @@ export {
53
53
  DetachedScope,
54
54
  GroupAdapter,
55
55
  IsolatedScope,
56
+ LabelsLeftLayout,
57
+ LabelsTopLayout,
58
+ LabelsTopLayoutCell,
56
59
  PrivateStore,
57
60
  PureContainer,
58
61
  Repeater,
@@ -3337,13 +3340,13 @@ class OverlayBeacon extends VDOM.Component {
3337
3340
  display: "none",
3338
3341
  },
3339
3342
  }),
3340
- this.state?.children,
3343
+ this.el && this.props.childrenFactory(this.el),
3341
3344
  ],
3342
3345
  });
3343
3346
  }
3344
3347
  componentDidMount() {
3345
3348
  this.setState({
3346
- children: this.props.childrenFactory(this.el),
3349
+ beaconRendered: true,
3347
3350
  });
3348
3351
  }
3349
3352
  }
@@ -4252,11 +4255,11 @@ class Window extends OverlayBase {
4252
4255
  render(context, instance, key) {
4253
4256
  var header = this.renderHeader(context, instance, "header");
4254
4257
  var footer = this.renderFooter(context, instance, "footer");
4255
- return jsx(OverlayBeacon, {
4256
- childrenFactory: (beaconEl) =>
4257
- jsx(
4258
- WindowComponent,
4259
- {
4258
+ return jsx(
4259
+ OverlayBeacon,
4260
+ {
4261
+ childrenFactory: (beaconEl) =>
4262
+ jsx(WindowComponent, {
4260
4263
  beaconEl: beaconEl,
4261
4264
  instance: instance,
4262
4265
  header: header,
@@ -4264,10 +4267,10 @@ class Window extends OverlayBase {
4264
4267
  subscribeToBeforeDismiss: context.options.subscribeToBeforeDismiss,
4265
4268
  parentEl: context.options.parentEl,
4266
4269
  children: this.renderContents(context, instance),
4267
- },
4268
- key,
4269
- ),
4270
- });
4270
+ }),
4271
+ },
4272
+ key,
4273
+ );
4271
4274
  }
4272
4275
  }
4273
4276
  Window.prototype.baseClass = "window";
@@ -5217,8 +5220,9 @@ class Tab extends HtmlElement {
5217
5220
  props.href = "#";
5218
5221
  delete props.value;
5219
5222
  props.onMouseDown = (e) => {
5220
- if (this.onMouseDown) instance.invoke("onMouseDown", e, instance);
5221
- preventFocusOnTouch(e);
5223
+ if (this.onMouseDown && instance.invoke("onMouseDown", e, instance) === false) return;
5224
+ if (!this.focusOnMouseDown) preventFocus(e);
5225
+ else preventFocusOnTouch(e);
5222
5226
  };
5223
5227
  props.onClick = (e) => this.handleClick(e, instance);
5224
5228
  }
@@ -7930,6 +7934,7 @@ const validationCheck = (date, data, disabledDaysOfWeek) => {
7930
7934
  };
7931
7935
  class CalendarCmp extends VDOM.Component {
7932
7936
  el = null;
7937
+ unsubscribeWheel;
7933
7938
  constructor(props) {
7934
7939
  super(props);
7935
7940
  let { data } = props.instance;
@@ -8108,7 +8113,9 @@ class CalendarCmp extends VDOM.Component {
8108
8113
  if (calendarWidget.autoFocus && this.el) this.el.focus();
8109
8114
  if (this.el) {
8110
8115
  tooltipParentDidMount$1(this.el, ...getFieldTooltip(this.props.instance));
8111
- this.el.addEventListener("wheel", (e) => this.handleWheel(e));
8116
+ this.unsubscribeWheel = addEventListenerWithOptions(this.el, "wheel", (e) => this.handleWheel(e), {
8117
+ passive: false,
8118
+ });
8112
8119
  }
8113
8120
  }
8114
8121
  UNSAFE_componentWillReceiveProps(props) {
@@ -8124,6 +8131,7 @@ class CalendarCmp extends VDOM.Component {
8124
8131
  componentWillUnmount() {
8125
8132
  offFocusOut(this);
8126
8133
  tooltipParentWillUnmount$1(this.props.instance);
8134
+ this.unsubscribeWheel?.();
8127
8135
  }
8128
8136
  showYearDropdown() {
8129
8137
  if (this.el && this.el.firstChild) {
@@ -16237,7 +16245,7 @@ class GridComponent extends VDOM.Component {
16237
16245
  {
16238
16246
  ref: this.fixedScrollerRef,
16239
16247
  className: CSS.element(baseClass, "fixed-scroll-area", {
16240
- "fixed-header": !!this.props.header,
16248
+ "fixed-header": !!this.props.fixedHeader,
16241
16249
  "fixed-footer": shouldRenderFixedFooter,
16242
16250
  }),
16243
16251
  children: jsx("div", {
@@ -16261,7 +16269,7 @@ class GridComponent extends VDOM.Component {
16261
16269
  ref: this.scrollerRef,
16262
16270
  onScroll: this.onScroll.bind(this),
16263
16271
  className: CSS.element(baseClass, "scroll-area", {
16264
- "fixed-header": !!this.props.header,
16272
+ "fixed-header": !!this.props.fixedHeader,
16265
16273
  "fixed-footer": shouldRenderFixedFooter,
16266
16274
  }),
16267
16275
  children: jsx("div", {
@@ -17821,7 +17829,13 @@ class TreeNode extends ContainerBase {
17821
17829
  jsxs("div", {
17822
17830
  className: CSS.element(baseClass, "handle"),
17823
17831
  onClick: (e) => this.toggle(e, instance),
17824
- onMouseDown: !this.hideIcon ? stopPropagation : undefined,
17832
+ onMouseDown:
17833
+ !this.hideIcon && !data.leaf
17834
+ ? (e) => {
17835
+ e.stopPropagation();
17836
+ e.preventDefault();
17837
+ }
17838
+ : undefined,
17825
17839
  children: [
17826
17840
  !data.leaf &&
17827
17841
  !data.hideArrow &&
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cx",
3
- "version": "26.3.5",
3
+ "version": "26.3.6",
4
4
  "description": "Advanced JavaScript UI framework for admin and dashboard applications with ready to use grid, form and chart components.",
5
5
  "exports": {
6
6
  "./data": {
@@ -1,31 +1,31 @@
1
- @use "sass:math";
2
- @use "sass:map";
3
- @use "../util/scss/besm.scss" as *;
4
- @use "../util/scss/include.scss" as *;
5
- @use "../util/scss/add-rules.scss" as *;
6
- @use "../util/scss/clockwise.scss" as *;
7
- @use "./variables" as *;
8
-
9
- @mixin cx-bargraph($name: "bargraph", $besm: $cx-besm) {
10
- $block: map.get($besm, block);
11
- $element: map.get($besm, element);
12
- $state: map.get($besm, state);
13
-
14
- .#{$element}#{$name}-bar {
15
- stroke-width: $cx-default-chart-shape-stroke-width;
16
- fill: $cx-default-chart-shape-fill-color;
17
- stroke: $cx-default-chart-shape-stroke-color;
18
-
19
- &.#{$state}selectable {
20
- cursor: pointer;
21
- }
22
-
23
- &.#{$state}selected {
24
- stroke-width: $cx-default-chart-selected-stroke-width;
25
- }
26
- }
27
- }
28
-
29
- @if (cx-should-include("cx/charts/BarGraph")) {
30
- @include cx-bargraph();
31
- }
1
+ @use "sass:math";
2
+ @use "sass:map";
3
+ @use "../util/scss/besm.scss" as *;
4
+ @use "../util/scss/include.scss" as *;
5
+ @use "../util/scss/add-rules.scss" as *;
6
+ @use "../util/scss/clockwise.scss" as *;
7
+ @use "./variables" as *;
8
+
9
+ @mixin cx-bargraph($name: "bargraph", $besm: $cx-besm) {
10
+ $block: map.get($besm, block);
11
+ $element: map.get($besm, element);
12
+ $state: map.get($besm, state);
13
+
14
+ .#{$element}#{$name}-bar {
15
+ stroke-width: $cx-default-chart-shape-stroke-width;
16
+ fill: $cx-default-chart-shape-fill-color;
17
+ stroke: $cx-default-chart-shape-stroke-color;
18
+
19
+ &.#{$state}selectable {
20
+ cursor: pointer;
21
+ }
22
+
23
+ &.#{$state}selected {
24
+ stroke-width: $cx-default-chart-selected-stroke-width;
25
+ }
26
+ }
27
+ }
28
+
29
+ @if (cx-should-include("cx/charts/BarGraph")) {
30
+ @include cx-bargraph();
31
+ }
@@ -1,57 +1,57 @@
1
- @use "sass:math";
2
- @use "sass:map";
3
- @use "../util/scss/besm.scss" as *;
4
- @use "../util/scss/include.scss" as *;
5
- @use "../util/scss/add-rules.scss" as *;
6
- @use "../util/scss/clockwise.scss" as *;
7
- @use "./variables" as *;
8
-
9
- @mixin cx-legend($name: "legend", $besm: $cx-besm) {
10
- $block: map.get($besm, block);
11
- $element: map.get($besm, element);
12
- $state: map.get($besm, state);
13
-
14
- .#{$block}#{$name} {
15
- display: flex;
16
- justify-content: center;
17
- align-items: flex-start;
18
- flex-wrap: wrap;
19
- gap: $cx-default-chart-legend-gap;
20
- }
21
-
22
- .#{$block}#{$name}.#{$state}vertical {
23
- flex-direction: column;
24
- }
25
-
26
- .#{$element}#{$name}-entry {
27
- display: flex;
28
- align-items: center;
29
- padding: $cx-default-chart-legend-padding;
30
- gap: $cx-default-chart-legend-entry-gap;
31
- font-size: $cx-default-chart-legend-font-size;
32
- position: relative;
33
- box-sizing: border-box;
34
- cursor: pointer;
35
- }
36
-
37
- .#{$element}#{$name}-svg {
38
- flex-shrink: 0;
39
- }
40
-
41
- .#{$element}#{$name}-shape {
42
- fill: $cx-default-chart-legend-shape-color;
43
- stroke-width: $cx-default-chart-legend-shape-stroke-width;
44
- }
45
-
46
- .#{$element}#{$name}-value {
47
- order: 3;
48
- }
49
-
50
- .#{$element}#{$name}-entry-text {
51
- order: 2;
52
- }
53
- }
54
-
55
- @if (cx-should-include("cx/charts/Legend")) {
56
- @include cx-legend();
57
- }
1
+ @use "sass:math";
2
+ @use "sass:map";
3
+ @use "../util/scss/besm.scss" as *;
4
+ @use "../util/scss/include.scss" as *;
5
+ @use "../util/scss/add-rules.scss" as *;
6
+ @use "../util/scss/clockwise.scss" as *;
7
+ @use "./variables" as *;
8
+
9
+ @mixin cx-legend($name: "legend", $besm: $cx-besm) {
10
+ $block: map.get($besm, block);
11
+ $element: map.get($besm, element);
12
+ $state: map.get($besm, state);
13
+
14
+ .#{$block}#{$name} {
15
+ display: flex;
16
+ justify-content: center;
17
+ align-items: flex-start;
18
+ flex-wrap: wrap;
19
+ gap: $cx-default-chart-legend-gap;
20
+ }
21
+
22
+ .#{$block}#{$name}.#{$state}vertical {
23
+ flex-direction: column;
24
+ }
25
+
26
+ .#{$element}#{$name}-entry {
27
+ display: flex;
28
+ align-items: center;
29
+ padding: $cx-default-chart-legend-padding;
30
+ gap: $cx-default-chart-legend-entry-gap;
31
+ font-size: $cx-default-chart-legend-font-size;
32
+ position: relative;
33
+ box-sizing: border-box;
34
+ cursor: pointer;
35
+ }
36
+
37
+ .#{$element}#{$name}-svg {
38
+ flex-shrink: 0;
39
+ }
40
+
41
+ .#{$element}#{$name}-shape {
42
+ fill: $cx-default-chart-legend-shape-color;
43
+ stroke-width: $cx-default-chart-legend-shape-stroke-width;
44
+ }
45
+
46
+ .#{$element}#{$name}-value {
47
+ order: 3;
48
+ }
49
+
50
+ .#{$element}#{$name}-entry-text {
51
+ order: 2;
52
+ }
53
+ }
54
+
55
+ @if (cx-should-include("cx/charts/Legend")) {
56
+ @include cx-legend();
57
+ }
@@ -1,35 +1,35 @@
1
- @use "sass:math";
2
- @use "sass:map";
3
- @use "../util/scss/besm.scss" as *;
4
- @use "../util/scss/include.scss" as *;
5
- @use "../util/scss/add-rules.scss" as *;
6
- @use "../util/scss/clockwise.scss" as *;
7
- @use "./variables" as *;
8
-
9
- @mixin cx-legendentry($name: "legendentry", $besm: $cx-besm) {
10
- $block: map.get($besm, block);
11
- $element: map.get($besm, element);
12
- $state: map.get($besm, state);
13
-
14
- .#{$block}#{$name} {
15
- display: inline-flex;
16
- align-items: center;
17
- padding: $cx-default-chart-legend-padding;
18
- gap: $cx-default-chart-legend-entry-gap;
19
- position: relative;
20
- box-sizing: border-box;
21
- cursor: pointer;
22
- }
23
-
24
- .#{$element}#{$name}-svg {
25
- flex-shrink: 0;
26
- }
27
-
28
- .#{$element}#{$name}-shape {
29
- fill: $cx-default-chart-shape-fill-color;
30
- }
31
- }
32
-
33
- @if (cx-should-include("cx/charts/LegendEntry")) {
34
- @include cx-legendentry();
35
- }
1
+ @use "sass:math";
2
+ @use "sass:map";
3
+ @use "../util/scss/besm.scss" as *;
4
+ @use "../util/scss/include.scss" as *;
5
+ @use "../util/scss/add-rules.scss" as *;
6
+ @use "../util/scss/clockwise.scss" as *;
7
+ @use "./variables" as *;
8
+
9
+ @mixin cx-legendentry($name: "legendentry", $besm: $cx-besm) {
10
+ $block: map.get($besm, block);
11
+ $element: map.get($besm, element);
12
+ $state: map.get($besm, state);
13
+
14
+ .#{$block}#{$name} {
15
+ display: inline-flex;
16
+ align-items: center;
17
+ padding: $cx-default-chart-legend-padding;
18
+ gap: $cx-default-chart-legend-entry-gap;
19
+ position: relative;
20
+ box-sizing: border-box;
21
+ cursor: pointer;
22
+ }
23
+
24
+ .#{$element}#{$name}-svg {
25
+ flex-shrink: 0;
26
+ }
27
+
28
+ .#{$element}#{$name}-shape {
29
+ fill: $cx-default-chart-shape-fill-color;
30
+ }
31
+ }
32
+
33
+ @if (cx-should-include("cx/charts/LegendEntry")) {
34
+ @include cx-legendentry();
35
+ }
@@ -1,28 +1,28 @@
1
- @use "sass:math";
2
- @use "sass:map";
3
- @use "../util/scss/besm.scss" as *;
4
- @use "../util/scss/include.scss" as *;
5
- @use "../util/scss/add-rules.scss" as *;
6
- @use "../util/scss/clockwise.scss" as *;
7
- @use "./variables" as *;
8
-
9
- @mixin cx-linegraph($name: "linegraph", $besm: $cx-besm) {
10
- $block: map.get($besm, block);
11
- $element: map.get($besm, element);
12
- $state: map.get($besm, state);
13
-
14
- .#{$element}#{$name}-line {
15
- stroke: $cx-default-chart-line-stroke-color;
16
- stroke-width: $cx-default-chart-line-stroke-width;
17
- fill: none !important;
18
- }
19
-
20
- .#{$element}#{$name}-area {
21
- stroke-width: 0;
22
- opacity: $cx-default-chart-area-opacity;
23
- }
24
- }
25
-
26
- @if (cx-should-include("cx/charts/LineGraph")) {
27
- @include cx-linegraph();
28
- }
1
+ @use "sass:math";
2
+ @use "sass:map";
3
+ @use "../util/scss/besm.scss" as *;
4
+ @use "../util/scss/include.scss" as *;
5
+ @use "../util/scss/add-rules.scss" as *;
6
+ @use "../util/scss/clockwise.scss" as *;
7
+ @use "./variables" as *;
8
+
9
+ @mixin cx-linegraph($name: "linegraph", $besm: $cx-besm) {
10
+ $block: map.get($besm, block);
11
+ $element: map.get($besm, element);
12
+ $state: map.get($besm, state);
13
+
14
+ .#{$element}#{$name}-line {
15
+ stroke: $cx-default-chart-line-stroke-color;
16
+ stroke-width: $cx-default-chart-line-stroke-width;
17
+ fill: none !important;
18
+ }
19
+
20
+ .#{$element}#{$name}-area {
21
+ stroke-width: 0;
22
+ opacity: $cx-default-chart-area-opacity;
23
+ }
24
+ }
25
+
26
+ @if (cx-should-include("cx/charts/LineGraph")) {
27
+ @include cx-linegraph();
28
+ }