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.
- package/dist/manifest.js +684 -684
- package/dist/widgets.js +19 -3
- package/package.json +1 -1
- package/src/charts/Legend.d.ts +45 -45
- package/src/charts/LegendEntry.js +128 -128
- package/src/charts/LegendEntry.scss +27 -27
- package/src/charts/Marker.d.ts +1 -1
- package/src/charts/MarkerLine.d.ts +25 -27
- package/src/charts/PieChart.d.ts +92 -92
- package/src/charts/RangeMarker.js +159 -159
- package/src/charts/axis/Axis.d.ts +113 -113
- package/src/charts/axis/Axis.js +280 -280
- package/src/charts/axis/CategoryAxis.d.ts +30 -30
- package/src/charts/axis/CategoryAxis.js +241 -241
- package/src/charts/axis/NumericAxis.js +351 -351
- package/src/charts/axis/Stack.js +55 -55
- package/src/charts/axis/TimeAxis.js +611 -611
- package/src/charts/helpers/SnapPointFinder.js +69 -69
- package/src/data/Binding.spec.js +69 -69
- package/src/data/ExposedValueView.d.ts +19 -19
- package/src/data/Expression.js +229 -229
- package/src/data/Expression.spec.js +229 -229
- package/src/data/StringTemplate.js +92 -92
- package/src/data/StringTemplate.spec.js +132 -132
- package/src/data/StructuredSelector.js +132 -132
- package/src/data/getAccessor.spec.js +11 -11
- package/src/data/getSelector.js +49 -49
- package/src/hooks/createLocalStorageRef.d.ts +3 -3
- package/src/hooks/createLocalStorageRef.js +20 -20
- package/src/index.scss +6 -6
- package/src/ui/Culture.d.ts +57 -57
- package/src/ui/Culture.js +139 -139
- package/src/ui/FocusManager.js +171 -171
- package/src/ui/Format.js +108 -108
- package/src/ui/HoverSync.js +147 -147
- package/src/ui/Repeater.d.ts +61 -61
- package/src/ui/index.d.ts +42 -42
- package/src/ui/layout/ContentPlaceholder.d.ts +19 -19
- package/src/ui/layout/ContentPlaceholder.js +105 -105
- package/src/ui/layout/ContentPlaceholder.spec.js +579 -579
- package/src/ui/layout/LabelsTopLayout.js +134 -134
- package/src/util/Format.js +270 -270
- package/src/util/date/encodeDate.d.ts +1 -1
- package/src/util/date/encodeDate.js +8 -8
- package/src/util/date/encodeDateWithTimezoneOffset.d.ts +1 -1
- package/src/util/date/index.d.ts +11 -11
- package/src/util/date/index.js +11 -11
- package/src/util/date/parseDateInvariant.d.ts +3 -3
- package/src/util/date/parseDateInvariant.js +20 -20
- package/src/util/getSearchQueryPredicate.js +59 -59
- package/src/util/index.d.ts +51 -51
- package/src/util/index.js +54 -54
- package/src/util/isFunction.d.ts +1 -1
- package/src/util/isValidIdentifierName.d.ts +1 -1
- package/src/util/isValidIdentifierName.js +5 -5
- package/src/util/isValidIdentifierName.spec.js +33 -33
- package/src/util/scss/add-rules.scss +38 -38
- package/src/widgets/CxCredit.scss +37 -37
- package/src/widgets/HighlightedSearchText.js +36 -36
- package/src/widgets/HighlightedSearchText.scss +18 -18
- package/src/widgets/List.scss +91 -91
- package/src/widgets/Sandbox.d.ts +18 -18
- package/src/widgets/Sandbox.js +65 -65
- package/src/widgets/drag-drop/DropZone.js +214 -214
- package/src/widgets/form/Calendar.js +618 -618
- package/src/widgets/form/Calendar.scss +196 -196
- package/src/widgets/form/Checkbox.scss +127 -127
- package/src/widgets/form/ColorField.js +397 -397
- package/src/widgets/form/ColorField.scss +96 -96
- package/src/widgets/form/ColorPicker.scss +283 -283
- package/src/widgets/form/DateTimeField.js +576 -576
- package/src/widgets/form/DateTimePicker.js +392 -392
- package/src/widgets/form/LookupField.d.ts +179 -179
- package/src/widgets/form/LookupField.scss +219 -219
- package/src/widgets/form/NumberField.js +459 -459
- package/src/widgets/form/NumberField.scss +61 -61
- package/src/widgets/form/Radio.scss +121 -121
- package/src/widgets/form/Select.scss +99 -99
- package/src/widgets/form/Slider.scss +118 -118
- package/src/widgets/form/Switch.scss +140 -140
- package/src/widgets/form/TextArea.js +12 -3
- package/src/widgets/form/TextArea.scss +43 -43
- package/src/widgets/form/TextField.js +290 -290
- package/src/widgets/form/TextField.scss +55 -55
- package/src/widgets/form/UploadButton.d.ts +34 -34
- package/src/widgets/form/variables.scss +353 -353
- package/src/widgets/grid/Grid.d.ts +442 -442
- package/src/widgets/grid/Grid.js +10 -2
- package/src/widgets/grid/GridRow.js +228 -228
- package/src/widgets/grid/TreeNode.d.ts +23 -23
- package/src/widgets/grid/TreeNode.scss +88 -88
- package/src/widgets/grid/variables.scss +133 -133
- package/src/widgets/nav/LinkButton.js +128 -128
- package/src/widgets/nav/Menu.scss +74 -74
- package/src/widgets/overlay/Dropdown.js +612 -612
- package/src/widgets/overlay/FlyweightTooltipTracker.js +39 -39
- package/src/widgets/overlay/Overlay.d.ts +73 -73
- package/src/widgets/overlay/Window.js +202 -202
- package/src/widgets/overlay/captureMouse.js +124 -124
- package/src/widgets/overlay/createHotPromiseWindowFactory.d.ts +18 -18
- package/src/widgets/overlay/createHotPromiseWindowFactory.js +56 -56
- package/src/widgets/overlay/index.d.ts +11 -11
- package/src/widgets/overlay/index.js +11 -11
- 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.
|
|
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
|
-
|
|
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
|
|
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
package/src/charts/Legend.d.ts
CHANGED
|
@@ -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
|
+
}
|
package/src/charts/Marker.d.ts
CHANGED
|
@@ -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
|
|
2
|
-
import { BoundedObject, BoundedObjectProps } from
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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> {}
|