cx 25.6.3 → 25.9.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 (104) hide show
  1. package/dist/manifest.js +684 -684
  2. package/dist/widgets.js +19 -3
  3. package/package.json +1 -1
  4. package/src/charts/Legend.d.ts +45 -45
  5. package/src/charts/LegendEntry.js +128 -128
  6. package/src/charts/LegendEntry.scss +27 -27
  7. package/src/charts/Marker.d.ts +1 -1
  8. package/src/charts/MarkerLine.d.ts +25 -27
  9. package/src/charts/PieChart.d.ts +92 -92
  10. package/src/charts/RangeMarker.js +159 -159
  11. package/src/charts/axis/Axis.d.ts +113 -113
  12. package/src/charts/axis/Axis.js +280 -280
  13. package/src/charts/axis/CategoryAxis.d.ts +30 -30
  14. package/src/charts/axis/CategoryAxis.js +241 -241
  15. package/src/charts/axis/NumericAxis.js +351 -351
  16. package/src/charts/axis/Stack.js +55 -55
  17. package/src/charts/axis/TimeAxis.js +611 -611
  18. package/src/charts/helpers/SnapPointFinder.js +69 -69
  19. package/src/data/Binding.spec.js +69 -69
  20. package/src/data/ExposedValueView.d.ts +19 -19
  21. package/src/data/Expression.js +229 -229
  22. package/src/data/Expression.spec.js +229 -229
  23. package/src/data/StringTemplate.js +92 -92
  24. package/src/data/StringTemplate.spec.js +132 -132
  25. package/src/data/StructuredSelector.js +132 -132
  26. package/src/data/getAccessor.spec.js +11 -11
  27. package/src/data/getSelector.js +49 -49
  28. package/src/hooks/createLocalStorageRef.d.ts +3 -3
  29. package/src/hooks/createLocalStorageRef.js +20 -20
  30. package/src/index.scss +6 -6
  31. package/src/ui/Culture.d.ts +57 -57
  32. package/src/ui/Culture.js +139 -139
  33. package/src/ui/FocusManager.js +171 -171
  34. package/src/ui/Format.js +108 -108
  35. package/src/ui/HoverSync.js +147 -147
  36. package/src/ui/Repeater.d.ts +61 -61
  37. package/src/ui/index.d.ts +42 -42
  38. package/src/ui/layout/ContentPlaceholder.d.ts +19 -19
  39. package/src/ui/layout/ContentPlaceholder.js +105 -105
  40. package/src/ui/layout/ContentPlaceholder.spec.js +579 -579
  41. package/src/ui/layout/LabelsTopLayout.js +134 -134
  42. package/src/util/Format.js +270 -270
  43. package/src/util/date/encodeDate.d.ts +1 -1
  44. package/src/util/date/encodeDate.js +8 -8
  45. package/src/util/date/encodeDateWithTimezoneOffset.d.ts +1 -1
  46. package/src/util/date/index.d.ts +11 -11
  47. package/src/util/date/index.js +11 -11
  48. package/src/util/date/parseDateInvariant.d.ts +3 -3
  49. package/src/util/date/parseDateInvariant.js +20 -20
  50. package/src/util/getSearchQueryPredicate.js +59 -59
  51. package/src/util/index.d.ts +51 -51
  52. package/src/util/index.js +54 -54
  53. package/src/util/isFunction.d.ts +1 -1
  54. package/src/util/isValidIdentifierName.d.ts +1 -1
  55. package/src/util/isValidIdentifierName.js +5 -5
  56. package/src/util/isValidIdentifierName.spec.js +33 -33
  57. package/src/util/scss/add-rules.scss +38 -38
  58. package/src/widgets/CxCredit.scss +37 -37
  59. package/src/widgets/HighlightedSearchText.js +36 -36
  60. package/src/widgets/HighlightedSearchText.scss +18 -18
  61. package/src/widgets/List.scss +91 -91
  62. package/src/widgets/Sandbox.d.ts +18 -18
  63. package/src/widgets/Sandbox.js +65 -65
  64. package/src/widgets/drag-drop/DropZone.js +214 -214
  65. package/src/widgets/form/Calendar.js +618 -618
  66. package/src/widgets/form/Calendar.scss +196 -196
  67. package/src/widgets/form/Checkbox.scss +127 -127
  68. package/src/widgets/form/ColorField.js +397 -397
  69. package/src/widgets/form/ColorField.scss +96 -96
  70. package/src/widgets/form/ColorPicker.scss +283 -283
  71. package/src/widgets/form/DateTimeField.js +576 -576
  72. package/src/widgets/form/DateTimePicker.js +392 -392
  73. package/src/widgets/form/LookupField.d.ts +179 -179
  74. package/src/widgets/form/LookupField.scss +219 -219
  75. package/src/widgets/form/NumberField.js +459 -459
  76. package/src/widgets/form/NumberField.scss +61 -61
  77. package/src/widgets/form/Radio.scss +121 -121
  78. package/src/widgets/form/Select.scss +99 -99
  79. package/src/widgets/form/Slider.scss +118 -118
  80. package/src/widgets/form/Switch.scss +140 -140
  81. package/src/widgets/form/TextArea.js +12 -3
  82. package/src/widgets/form/TextArea.scss +43 -43
  83. package/src/widgets/form/TextField.js +290 -290
  84. package/src/widgets/form/TextField.scss +55 -55
  85. package/src/widgets/form/UploadButton.d.ts +34 -34
  86. package/src/widgets/form/variables.scss +353 -353
  87. package/src/widgets/grid/Grid.d.ts +442 -442
  88. package/src/widgets/grid/Grid.js +10 -2
  89. package/src/widgets/grid/GridRow.js +228 -228
  90. package/src/widgets/grid/TreeNode.d.ts +23 -23
  91. package/src/widgets/grid/TreeNode.scss +88 -88
  92. package/src/widgets/grid/variables.scss +133 -133
  93. package/src/widgets/nav/LinkButton.js +128 -128
  94. package/src/widgets/nav/Menu.scss +74 -74
  95. package/src/widgets/overlay/Dropdown.js +612 -612
  96. package/src/widgets/overlay/FlyweightTooltipTracker.js +39 -39
  97. package/src/widgets/overlay/Overlay.d.ts +73 -73
  98. package/src/widgets/overlay/Window.js +202 -202
  99. package/src/widgets/overlay/captureMouse.js +124 -124
  100. package/src/widgets/overlay/createHotPromiseWindowFactory.d.ts +18 -18
  101. package/src/widgets/overlay/createHotPromiseWindowFactory.js +56 -56
  102. package/src/widgets/overlay/index.d.ts +11 -11
  103. package/src/widgets/overlay/index.js +11 -11
  104. package/src/widgets/variables.scss +144 -144
package/dist/widgets.js CHANGED
@@ -10542,7 +10542,7 @@ var Input = /*#__PURE__*/ (function (_VDOM$Component) {
10542
10542
  return _this2.onChange(e.target.value, "change");
10543
10543
  },
10544
10544
  onBlur: function onBlur(e) {
10545
- _this2.onChange(e.target.value, "blur");
10545
+ return _this2.onBlur(e);
10546
10546
  },
10547
10547
  onFocus: function onFocus(e) {
10548
10548
  return _this2.onFocus();
@@ -10629,7 +10629,15 @@ var Input = /*#__PURE__*/ (function (_VDOM$Component) {
10629
10629
  this.setState({
10630
10630
  focus: true,
10631
10631
  });
10632
+ instance.set("focused", true);
10633
+ }
10634
+ };
10635
+ _proto2.onBlur = function onBlur(e) {
10636
+ var instance = this.props.instance;
10637
+ if (instance.widget.trackFocus) {
10638
+ instance.set("focused", false);
10632
10639
  }
10640
+ this.onChange(e.target.value, "blur");
10633
10641
  };
10634
10642
  return Input;
10635
10643
  })(VDOM.Component);
@@ -15693,6 +15701,7 @@ var Grid = /*#__PURE__*/ (function (_Container) {
15693
15701
  colWidth: {},
15694
15702
  lockedColWidth: {},
15695
15703
  dimensionsVersion: 0,
15704
+ disableDefaultSort: false,
15696
15705
  };
15697
15706
  instance.v = 0;
15698
15707
  if (this.infinite)
@@ -15873,7 +15882,8 @@ var Grid = /*#__PURE__*/ (function (_Container) {
15873
15882
  sortField = data.sortField;
15874
15883
  data.sorters = [sorter];
15875
15884
  }
15876
- if (!isNonEmptyArray(data.sorters) && this.defaultSortField) {
15885
+ var skipDefaultSorting = this.clearableSort && instance.state.disableDefaultSort;
15886
+ if (!skipDefaultSorting && !isNonEmptyArray(data.sorters) && this.defaultSortField) {
15877
15887
  var _sorter = {
15878
15888
  field: this.defaultSortField,
15879
15889
  direction: this.defaultSortDirection || "ASC",
@@ -16432,7 +16442,10 @@ var Grid = /*#__PURE__*/ (function (_Container) {
16432
16442
  ) {
16433
16443
  if (data.sorters[0].direction == "ASC" && (!this.clearableSort || direction == "ASC")) direction = "DESC";
16434
16444
  else if (data.sorters[0].direction == "DESC" && (!this.clearableSort || direction == "DESC")) direction = "ASC";
16435
- else direction = null;
16445
+ else {
16446
+ direction = null;
16447
+ instance.state.disableDefaultSort = true;
16448
+ }
16436
16449
  }
16437
16450
  var sorters = direction
16438
16451
  ? [
@@ -18084,6 +18097,7 @@ var GridComponent = /*#__PURE__*/ (function (_VDOM$Component) {
18084
18097
  headerHeight = this.dom.fixedHeader.offsetHeight;
18085
18098
  this.dom.scroller.style.marginTop = headerHeight + "px";
18086
18099
  if (this.dom.fixedScroller) this.dom.fixedScroller.style.marginTop = headerHeight + "px";
18100
+ else if (this.dom.fixedHeader.style.left != null) this.dom.fixedHeader.style.left = null;
18087
18101
  } else {
18088
18102
  this.dom.scroller.style.marginTop = 0;
18089
18103
  if (this.dom.fixedScroller) this.dom.fixedScroller.style.marginTop = 0;
@@ -18124,6 +18138,7 @@ var GridComponent = /*#__PURE__*/ (function (_VDOM$Component) {
18124
18138
  footerHeight = this.dom.fixedFooter.offsetHeight;
18125
18139
  }
18126
18140
  if (this.dom.fixedScroller) this.dom.fixedFooter.style.left = this.dom.fixedScroller.offsetWidth + "px";
18141
+ else if (this.dom.fixedFooter.style.left != null) this.dom.fixedFooter.style.left = null;
18127
18142
  }
18128
18143
  this.dom.scroller.style.marginBottom = footerHeight + "px";
18129
18144
  if (this.dom.fixedScroller) this.dom.fixedScroller.style.marginBottom = footerHeight + "px";
@@ -18207,6 +18222,7 @@ var GridComponent = /*#__PURE__*/ (function (_VDOM$Component) {
18207
18222
  instance.buffer.totalRecordCount = 0;
18208
18223
  instance.buffer.page = 1;
18209
18224
  this.prevFetchRecordsState = null;
18225
+ this.loading = false;
18210
18226
  }
18211
18227
  }
18212
18228
  if (widget.scrollSelectionIntoView && !widget.buffered) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cx",
3
- "version": "25.6.3",
3
+ "version": "25.9.0",
4
4
  "description": "Advanced JavaScript UI framework for admin and dashboard applications with ready to use grid, form and chart components.",
5
5
  "main": "index.js",
6
6
  "jsnext:main": "src/index.js",
@@ -1,45 +1,45 @@
1
- import * as Cx from "../core";
2
-
3
- interface LegendProps extends Cx.HtmlElementProps {
4
- /** Name of the legend. Default is `legend`. */
5
- name?: string;
6
-
7
- /** Base CSS class to be applied to the element. Defaults to `legend`. */
8
- baseClass?: string;
9
-
10
- /** Switch to vertical mode. */
11
- vertical?: boolean;
12
-
13
- /** Size of the svg shape container in pixels. Default value is 20. */
14
- svgSize?: number;
15
-
16
- /** Shape size in pixels. Default value is 18. */
17
- shapeSize?: number;
18
-
19
- /** Default shape that will be applied to the all legend items. */
20
- shape?: Cx.StringProp;
21
-
22
- /** CSS style that will be applied to the legend entry. */
23
- entryStyle?: Cx.StyleProp;
24
-
25
- /** CSS class that will be applied to the legend entry. */
26
- entryClass?: Cx.ClassProp;
27
-
28
- /** CSS style that will be applied to the legend entry value segment. */
29
- valueStyle?: Cx.StyleProp;
30
-
31
- /** CSS class that will be applied to the legend entry value segment. */
32
- valueClass?: Cx.ClassProp;
33
-
34
- /** Set to true to show values. Mostly used for PieChart legends. */
35
- showValues?: Cx.BooleanProp;
36
-
37
- /** Format used for values, i.e. n;2 or currency. The default value is s.*/
38
- valueFormat?: string;
39
- }
40
-
41
- export class Legend extends Cx.Widget<LegendProps> {
42
- static Scope(): any;
43
- }
44
-
45
- export class LegendScope extends Cx.Widget<Cx.PureContainerProps> {}
1
+ import * as Cx from "../core";
2
+
3
+ interface LegendProps extends Cx.HtmlElementProps {
4
+ /** Name of the legend. Default is `legend`. */
5
+ name?: string;
6
+
7
+ /** Base CSS class to be applied to the element. Defaults to `legend`. */
8
+ baseClass?: string;
9
+
10
+ /** Switch to vertical mode. */
11
+ vertical?: boolean;
12
+
13
+ /** Size of the svg shape container in pixels. Default value is 20. */
14
+ svgSize?: number;
15
+
16
+ /** Shape size in pixels. Default value is 18. */
17
+ shapeSize?: number;
18
+
19
+ /** Default shape that will be applied to the all legend items. */
20
+ shape?: Cx.StringProp;
21
+
22
+ /** CSS style that will be applied to the legend entry. */
23
+ entryStyle?: Cx.StyleProp;
24
+
25
+ /** CSS class that will be applied to the legend entry. */
26
+ entryClass?: Cx.ClassProp;
27
+
28
+ /** CSS style that will be applied to the legend entry value segment. */
29
+ valueStyle?: Cx.StyleProp;
30
+
31
+ /** CSS class that will be applied to the legend entry value segment. */
32
+ valueClass?: Cx.ClassProp;
33
+
34
+ /** Set to true to show values. Mostly used for PieChart legends. */
35
+ showValues?: Cx.BooleanProp;
36
+
37
+ /** Format used for values, i.e. n;2 or currency. The default value is s.*/
38
+ valueFormat?: string;
39
+ }
40
+
41
+ export class Legend extends Cx.Widget<LegendProps> {
42
+ static Scope(): any;
43
+ }
44
+
45
+ export class LegendScope extends Cx.Widget<Cx.PureContainerProps> {}
@@ -1,128 +1,128 @@
1
- import { Widget, VDOM } from "../ui/Widget";
2
- import { getShape } from "./shapes";
3
- import { Selection } from "../ui/selection/Selection";
4
- import { stopPropagation } from "../util/eventCallbacks";
5
- import { isUndefined } from "../util/isUndefined";
6
- import { Container } from "../ui/Container";
7
-
8
- export class LegendEntry extends Container {
9
- init() {
10
- this.selection = Selection.create(this.selection);
11
- super.init();
12
- }
13
-
14
- declareData() {
15
- var selection = this.selection.configureWidget(this);
16
-
17
- super.declareData(...arguments, selection, {
18
- selected: undefined,
19
- shape: undefined,
20
- colorIndex: undefined,
21
- colorMap: undefined,
22
- colorName: undefined,
23
- name: undefined,
24
- active: true,
25
- size: undefined,
26
- rx: undefined,
27
- ry: undefined,
28
- text: undefined,
29
- });
30
- }
31
-
32
- prepareData(context, instance) {
33
- let { data } = instance;
34
-
35
- if (data.name && !data.colorName) data.colorName = data.name;
36
-
37
- super.prepareData(context, instance);
38
- }
39
-
40
- explore(context, instance) {
41
- var { data } = instance;
42
- instance.colorMap = data.colorMap && context.getColorMap && context.getColorMap(data.colorMap);
43
- if (instance.colorMap && data.colorName) instance.colorMap.acknowledge(data.colorName);
44
- super.explore(context, instance);
45
- }
46
-
47
- prepare(context, instance) {
48
- var { data, colorMap } = instance;
49
-
50
- if (colorMap && data.colorName) {
51
- data.colorIndex = colorMap.map(data.colorName);
52
- if (instance.cache("colorIndex", data.colorIndex)) instance.markShouldUpdate(context);
53
- }
54
- }
55
-
56
- handleClick(e, instance) {
57
- if (this.onClick && instance.invoke("onClick", e, instance) === false) return;
58
-
59
- e.stopPropagation();
60
-
61
- var any = this.legendAction == "auto";
62
-
63
- if (any || this.legendAction == "toggle") if (instance.set("active", !instance.data.active)) return;
64
-
65
- if ((any || this.legendAction == "select") && !this.selection.isDummy) this.selection.selectInstance(instance);
66
- }
67
-
68
- render(context, instance, key) {
69
- let { data } = instance;
70
- let content = !isUndefined(this.text) ? data.text : this.renderChildren(context, instance);
71
- return (
72
- <div
73
- key={key}
74
- className={data.classNames}
75
- style={data.style}
76
- onMouseDown={stopPropagation}
77
- onClick={(e) => {
78
- this.handleClick(e, instance);
79
- }}
80
- >
81
- {this.renderShape(instance)}
82
- {content != null && <div>{content}</div>}
83
- </div>
84
- );
85
- }
86
-
87
- renderShape(instance) {
88
- var entry = instance.data;
89
- var className = this.CSS.element(this.baseClass, "shape", {
90
- disabled: entry.disabled,
91
- selected: entry.selected || this.selection.isInstanceSelected(instance),
92
- [`color-${entry.colorIndex}`]: entry.colorIndex != null && (isUndefined(entry.active) || entry.active),
93
- });
94
- var shape = getShape(entry.shape || "square");
95
-
96
- // if the entry has a custom fill or stroke set, use it for both values
97
- let style = { ...entry.style };
98
- style.fill = style.fill ?? style.stroke;
99
- style.stroke = style.stroke ?? style.fill;
100
-
101
- return (
102
- <svg
103
- key="svg"
104
- className={this.CSS.element(this.baseClass, "svg")}
105
- style={{
106
- width: `${this.svgSize}px`,
107
- height: `${this.svgSize}px`,
108
- }}
109
- >
110
- {shape(this.svgSize / 2, this.svgSize / 2, entry.size, {
111
- style,
112
- className,
113
- rx: entry.rx,
114
- ry: entry.ry,
115
- })}
116
- </svg>
117
- );
118
- }
119
- }
120
-
121
- LegendEntry.prototype.baseClass = "legendentry";
122
- LegendEntry.prototype.shape = "square";
123
- LegendEntry.prototype.legendAction = "auto";
124
- LegendEntry.prototype.size = 18;
125
- LegendEntry.prototype.svgSize = 20;
126
- LegendEntry.prototype.styled = true;
127
-
128
- Widget.alias("legend-entry", LegendEntry);
1
+ import { Widget, VDOM } from "../ui/Widget";
2
+ import { getShape } from "./shapes";
3
+ import { Selection } from "../ui/selection/Selection";
4
+ import { stopPropagation } from "../util/eventCallbacks";
5
+ import { isUndefined } from "../util/isUndefined";
6
+ import { Container } from "../ui/Container";
7
+
8
+ export class LegendEntry extends Container {
9
+ init() {
10
+ this.selection = Selection.create(this.selection);
11
+ super.init();
12
+ }
13
+
14
+ declareData() {
15
+ var selection = this.selection.configureWidget(this);
16
+
17
+ super.declareData(...arguments, selection, {
18
+ selected: undefined,
19
+ shape: undefined,
20
+ colorIndex: undefined,
21
+ colorMap: undefined,
22
+ colorName: undefined,
23
+ name: undefined,
24
+ active: true,
25
+ size: undefined,
26
+ rx: undefined,
27
+ ry: undefined,
28
+ text: undefined,
29
+ });
30
+ }
31
+
32
+ prepareData(context, instance) {
33
+ let { data } = instance;
34
+
35
+ if (data.name && !data.colorName) data.colorName = data.name;
36
+
37
+ super.prepareData(context, instance);
38
+ }
39
+
40
+ explore(context, instance) {
41
+ var { data } = instance;
42
+ instance.colorMap = data.colorMap && context.getColorMap && context.getColorMap(data.colorMap);
43
+ if (instance.colorMap && data.colorName) instance.colorMap.acknowledge(data.colorName);
44
+ super.explore(context, instance);
45
+ }
46
+
47
+ prepare(context, instance) {
48
+ var { data, colorMap } = instance;
49
+
50
+ if (colorMap && data.colorName) {
51
+ data.colorIndex = colorMap.map(data.colorName);
52
+ if (instance.cache("colorIndex", data.colorIndex)) instance.markShouldUpdate(context);
53
+ }
54
+ }
55
+
56
+ handleClick(e, instance) {
57
+ if (this.onClick && instance.invoke("onClick", e, instance) === false) return;
58
+
59
+ e.stopPropagation();
60
+
61
+ var any = this.legendAction == "auto";
62
+
63
+ if (any || this.legendAction == "toggle") if (instance.set("active", !instance.data.active)) return;
64
+
65
+ if ((any || this.legendAction == "select") && !this.selection.isDummy) this.selection.selectInstance(instance);
66
+ }
67
+
68
+ render(context, instance, key) {
69
+ let { data } = instance;
70
+ let content = !isUndefined(this.text) ? data.text : this.renderChildren(context, instance);
71
+ return (
72
+ <div
73
+ key={key}
74
+ className={data.classNames}
75
+ style={data.style}
76
+ onMouseDown={stopPropagation}
77
+ onClick={(e) => {
78
+ this.handleClick(e, instance);
79
+ }}
80
+ >
81
+ {this.renderShape(instance)}
82
+ {content != null && <div>{content}</div>}
83
+ </div>
84
+ );
85
+ }
86
+
87
+ renderShape(instance) {
88
+ var entry = instance.data;
89
+ var className = this.CSS.element(this.baseClass, "shape", {
90
+ disabled: entry.disabled,
91
+ selected: entry.selected || this.selection.isInstanceSelected(instance),
92
+ [`color-${entry.colorIndex}`]: entry.colorIndex != null && (isUndefined(entry.active) || entry.active),
93
+ });
94
+ var shape = getShape(entry.shape || "square");
95
+
96
+ // if the entry has a custom fill or stroke set, use it for both values
97
+ let style = { ...entry.style };
98
+ style.fill = style.fill ?? style.stroke;
99
+ style.stroke = style.stroke ?? style.fill;
100
+
101
+ return (
102
+ <svg
103
+ key="svg"
104
+ className={this.CSS.element(this.baseClass, "svg")}
105
+ style={{
106
+ width: `${this.svgSize}px`,
107
+ height: `${this.svgSize}px`,
108
+ }}
109
+ >
110
+ {shape(this.svgSize / 2, this.svgSize / 2, entry.size, {
111
+ style,
112
+ className,
113
+ rx: entry.rx,
114
+ ry: entry.ry,
115
+ })}
116
+ </svg>
117
+ );
118
+ }
119
+ }
120
+
121
+ LegendEntry.prototype.baseClass = "legendentry";
122
+ LegendEntry.prototype.shape = "square";
123
+ LegendEntry.prototype.legendAction = "auto";
124
+ LegendEntry.prototype.size = 18;
125
+ LegendEntry.prototype.svgSize = 20;
126
+ LegendEntry.prototype.styled = true;
127
+
128
+ Widget.alias("legend-entry", LegendEntry);
@@ -1,27 +1,27 @@
1
- @mixin cx-legendentry($name: "legendentry", $besm: $cx-besm) {
2
- $block: map-get($besm, block);
3
- $element: map-get($besm, element);
4
- $state: map-get($besm, state);
5
-
6
- .#{$block}#{$name} {
7
- display: inline-flex;
8
- align-items: center;
9
- padding: 5px;
10
- gap: 5px;
11
- position: relative;
12
- box-sizing: border-box;
13
- cursor: pointer;
14
- }
15
-
16
- .#{$element}#{$name}-svg {
17
- flex-shrink: 0;
18
- }
19
-
20
- .#{$element}#{$name}-shape {
21
- fill: #eee;
22
- }
23
- }
24
-
25
- @if (cx-should-include("cx/charts/LegendEntry")) {
26
- @include cx-legendentry();
27
- }
1
+ @mixin cx-legendentry($name: "legendentry", $besm: $cx-besm) {
2
+ $block: map-get($besm, block);
3
+ $element: map-get($besm, element);
4
+ $state: map-get($besm, state);
5
+
6
+ .#{$block}#{$name} {
7
+ display: inline-flex;
8
+ align-items: center;
9
+ padding: 5px;
10
+ gap: 5px;
11
+ position: relative;
12
+ box-sizing: border-box;
13
+ cursor: pointer;
14
+ }
15
+
16
+ .#{$element}#{$name}-svg {
17
+ flex-shrink: 0;
18
+ }
19
+
20
+ .#{$element}#{$name}-shape {
21
+ fill: #eee;
22
+ }
23
+ }
24
+
25
+ @if (cx-should-include("cx/charts/LegendEntry")) {
26
+ @include cx-legendentry();
27
+ }
@@ -3,7 +3,7 @@ import { BoundedObject, BoundedObjectProps } from "../svg/BoundedObject";
3
3
 
4
4
  interface MarkerProps extends BoundedObjectProps {
5
5
  /** The `x` value binding or expression. */
6
- x?: Cx.Prop<string | number>;
6
+ x?: Cx.Prop<string | number | Date>;
7
7
 
8
8
  /** The `y` value binding or expression. */
9
9
  y?: Cx.Prop<string | number>;
@@ -1,58 +1,56 @@
1
- import * as Cx from '../core';
2
- import { BoundedObject, BoundedObjectProps } from '../svg/BoundedObject';
1
+ import * as Cx from "../core";
2
+ import { BoundedObject, BoundedObjectProps } from "../svg/BoundedObject";
3
3
 
4
4
  interface MarkerLineProps extends BoundedObjectProps {
5
-
6
5
  /** The `x1` value binding or expression. */
7
- x1?: Cx.NumberProp,
6
+ x1?: Cx.Prop<number | string | Date>;
8
7
 
9
8
  /** The `y1` value binding or expression. */
10
- y1?: Cx.NumberProp,
9
+ y1?: Cx.NumberProp;
11
10
 
12
11
  /** The `x2` value binding or expression. */
13
- x2?: Cx.NumberProp,
12
+ x2?: Cx.Prop<number | string | Date>;
14
13
 
15
14
  /** The `y2` value binding or expression. */
16
- y2?: Cx.NumberProp,
15
+ y2?: Cx.NumberProp;
17
16
 
18
17
  /** Used to indicate if the data should affect axis span. */
19
- affectsAxes?: Cx.BooleanProp,
18
+ affectsAxes?: Cx.BooleanProp;
20
19
 
21
20
  /** Index of a color from the standard palette of colors. 0-15. */
22
- colorIndex?: Cx.NumberProp,
21
+ colorIndex?: Cx.NumberProp;
23
22
 
24
23
  /** Used to indicate if an item is active or not. Inactive items are shown only in the legend. */
25
- active?: Cx.BooleanProp,
24
+ active?: Cx.BooleanProp;
26
25
 
27
26
  /** Name of the item as it will appear in the legend. */
28
- name?: Cx.StringProp,
27
+ name?: Cx.StringProp;
29
28
 
30
29
  /** Name of the legend to be used. Default is `legend`. */
31
- legend?: Cx.StringProp,
30
+ legend?: Cx.StringProp;
32
31
 
33
32
  /** Shared `x1` and `x2` value binding or expression. */
34
- x?: Cx.NumberProp,
33
+ x?: Cx.Prop<number | string | Date>;
35
34
 
36
35
  /** Shared `y1` and `y2` value binding or expression. */
37
- y?: Cx.NumberProp,
36
+ y?: Cx.NumberProp;
38
37
 
39
- /**
40
- * Name of the horizontal axis. The value should match one of the horizontal axes set
41
- * in the `axes` configuration of the parent `Chart` component. Default value is `x`.
38
+ /**
39
+ * Name of the horizontal axis. The value should match one of the horizontal axes set
40
+ * in the `axes` configuration of the parent `Chart` component. Default value is `x`.
42
41
  */
43
- xAxis?: string,
44
-
45
- /**
42
+ xAxis?: string;
43
+
44
+ /**
46
45
  * Name of the vertical axis. The value should match one of the vertical axes set
47
- * in the axes configuration if the parent Chart component. Default value is y.
46
+ * in the axes configuration if the parent Chart component. Default value is y.
48
47
  */
49
- yAxis?: string,
50
-
51
- /** Base CSS class to be applied to the element. Defaults to `markerline`. */
52
- baseClass?: string,
48
+ yAxis?: string;
53
49
 
54
- legendAction?: string
50
+ /** Base CSS class to be applied to the element. Defaults to `markerline`. */
51
+ baseClass?: string;
55
52
 
53
+ legendAction?: string;
56
54
  }
57
55
 
58
- export class MarkerLine extends Cx.Widget<MarkerLineProps> {}
56
+ export class MarkerLine extends Cx.Widget<MarkerLineProps> {}