cx 24.9.1 → 24.9.2

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 (55) hide show
  1. package/dist/charts.js +22 -25
  2. package/dist/data.js +26 -29
  3. package/dist/manifest.js +775 -775
  4. package/dist/svg.js +59 -56
  5. package/dist/ui.js +51 -52
  6. package/dist/widgets.js +46 -49
  7. package/package.json +32 -32
  8. package/src/charts/Legend.js +151 -151
  9. package/src/charts/PieLabel.js +71 -71
  10. package/src/charts/axis/NumericAxis.js +347 -347
  11. package/src/charts/axis/Stack.js +55 -55
  12. package/src/charts/helpers/PointReducer.js +43 -43
  13. package/src/charts/helpers/SnapPointFinder.js +69 -69
  14. package/src/data/Binding.spec.js +69 -69
  15. package/src/data/StringTemplate.spec.js +105 -105
  16. package/src/data/getAccessor.spec.js +11 -11
  17. package/src/index.scss +6 -6
  18. package/src/svg/Text.d.ts +40 -40
  19. package/src/ui/Culture.d.ts +55 -55
  20. package/src/ui/Culture.js +139 -139
  21. package/src/ui/FocusManager.js +171 -171
  22. package/src/ui/Instance.d.ts +72 -72
  23. package/src/ui/VDOM.d.ts +12 -12
  24. package/src/ui/app/startAppLoop.js +58 -58
  25. package/src/ui/index.d.ts +42 -42
  26. package/src/ui/layout/LabelsTopLayout.js +134 -134
  27. package/src/util/Console.d.ts +4 -4
  28. package/src/util/scss/add-rules.scss +38 -38
  29. package/src/widgets/CxCredit.scss +37 -37
  30. package/src/widgets/List.scss +91 -91
  31. package/src/widgets/drag-drop/DropZone.js +214 -214
  32. package/src/widgets/form/Calendar.scss +196 -196
  33. package/src/widgets/form/ColorField.js +397 -397
  34. package/src/widgets/form/ColorPicker.scss +283 -283
  35. package/src/widgets/form/DateTimeField.js +573 -573
  36. package/src/widgets/form/MonthField.js +516 -516
  37. package/src/widgets/form/MonthPicker.scss +118 -118
  38. package/src/widgets/form/NumberField.js +459 -459
  39. package/src/widgets/form/NumberField.scss +61 -61
  40. package/src/widgets/form/Select.scss +99 -99
  41. package/src/widgets/form/Slider.scss +118 -118
  42. package/src/widgets/form/Switch.scss +140 -140
  43. package/src/widgets/form/TextArea.scss +43 -43
  44. package/src/widgets/form/TextField.js +290 -289
  45. package/src/widgets/form/TextField.scss +55 -55
  46. package/src/widgets/form/UploadButton.d.ts +34 -34
  47. package/src/widgets/grid/TreeNode.scss +88 -88
  48. package/src/widgets/grid/variables.scss +88 -88
  49. package/src/widgets/nav/Menu.scss +74 -74
  50. package/src/widgets/overlay/Dropdown.js +612 -612
  51. package/src/widgets/overlay/FlyweightTooltipTracker.js +39 -39
  52. package/src/widgets/overlay/Tooltip.js +300 -300
  53. package/src/widgets/overlay/Window.js +196 -196
  54. package/src/widgets/overlay/captureMouse.js +124 -124
  55. package/src/widgets/overlay/variables.scss +83 -83
@@ -1,61 +1,61 @@
1
- @mixin cx-numberfield(
2
- $name: "numberfield",
3
- $state-style-map: $cx-std-field-state-style-map,
4
- $placeholder: $cx-input-placeholder,
5
- $empty-text: $cx-empty-text,
6
- $left-icon-state-style-map: $cx-input-left-icon-state-style-map,
7
- $clear-state-style-map: $cx-clear-state-style-map,
8
- $tool-state-style-map: $cx-input-right-icon-state-style-map,
9
- $icon-size: $cx-default-input-icon-size,
10
- $width: $cx-default-input-width,
11
- $besm: $cx-besm
12
- ) {
13
- $block: map-get($besm, block);
14
- $element: map-get($besm, element);
15
- $state: map-get($besm, state);
16
- $padding: cx-get-state-rule($state-style-map, default, "padding");
17
-
18
- .#{$block}#{$name} {
19
- @include cxb-field($besm, $state-style-map, $width: $width, $input: true);
20
- }
21
-
22
- .#{$element}#{$name}-input {
23
- @include cxe-field-input($besm, $state-style-map, $placeholder: $placeholder);
24
-
25
- &::-webkit-inner-spin-button,
26
- &::-webkit-outer-spin-button {
27
- -webkit-appearance: none;
28
- margin: 0;
29
- }
30
-
31
- .#{$state}icon > & {
32
- padding-left: cx-calc(2 * cx-left($padding), $icon-size);
33
- }
34
- }
35
-
36
- .#{$element}#{$name}-tool {
37
- pointer-events: none;
38
- @include cxe-field-button($besm, $tool-state-style-map);
39
- }
40
-
41
- .#{$element}#{$name}-icon {
42
- @include cxe-field-button-icon($besm, $icon-size);
43
- }
44
-
45
- .#{$element}#{$name}-left-icon {
46
- pointer-events: none;
47
- @include cxe-field-button($besm, $left-icon-state-style-map);
48
- }
49
-
50
- .#{$element}#{$name}-clear {
51
- @include cxe-field-button($besm, $clear-state-style-map);
52
- }
53
-
54
- .#{$element}#{$name}-empty-text {
55
- @include cxe-field-empty-text($empty-text);
56
- }
57
- }
58
-
59
- @if (cx-should-include("cx/widgets/NumberField")) {
60
- @include cx-numberfield();
61
- }
1
+ @mixin cx-numberfield(
2
+ $name: "numberfield",
3
+ $state-style-map: $cx-std-field-state-style-map,
4
+ $placeholder: $cx-input-placeholder,
5
+ $empty-text: $cx-empty-text,
6
+ $left-icon-state-style-map: $cx-input-left-icon-state-style-map,
7
+ $clear-state-style-map: $cx-clear-state-style-map,
8
+ $tool-state-style-map: $cx-input-right-icon-state-style-map,
9
+ $icon-size: $cx-default-input-icon-size,
10
+ $width: $cx-default-input-width,
11
+ $besm: $cx-besm
12
+ ) {
13
+ $block: map-get($besm, block);
14
+ $element: map-get($besm, element);
15
+ $state: map-get($besm, state);
16
+ $padding: cx-get-state-rule($state-style-map, default, "padding");
17
+
18
+ .#{$block}#{$name} {
19
+ @include cxb-field($besm, $state-style-map, $width: $width, $input: true);
20
+ }
21
+
22
+ .#{$element}#{$name}-input {
23
+ @include cxe-field-input($besm, $state-style-map, $placeholder: $placeholder);
24
+
25
+ &::-webkit-inner-spin-button,
26
+ &::-webkit-outer-spin-button {
27
+ -webkit-appearance: none;
28
+ margin: 0;
29
+ }
30
+
31
+ .#{$state}icon > & {
32
+ padding-left: cx-calc(2 * cx-left($padding), $icon-size);
33
+ }
34
+ }
35
+
36
+ .#{$element}#{$name}-tool {
37
+ pointer-events: none;
38
+ @include cxe-field-button($besm, $tool-state-style-map);
39
+ }
40
+
41
+ .#{$element}#{$name}-icon {
42
+ @include cxe-field-button-icon($besm, $icon-size);
43
+ }
44
+
45
+ .#{$element}#{$name}-left-icon {
46
+ pointer-events: none;
47
+ @include cxe-field-button($besm, $left-icon-state-style-map);
48
+ }
49
+
50
+ .#{$element}#{$name}-clear {
51
+ @include cxe-field-button($besm, $clear-state-style-map);
52
+ }
53
+
54
+ .#{$element}#{$name}-empty-text {
55
+ @include cxe-field-empty-text($empty-text);
56
+ }
57
+ }
58
+
59
+ @if (cx-should-include("cx/widgets/NumberField")) {
60
+ @include cx-numberfield();
61
+ }
@@ -1,99 +1,99 @@
1
- @import "../overlay/Dropdown";
2
-
3
- @mixin cx-select(
4
- $name: "select",
5
- $state-style-map: $cx-std-field-state-style-map,
6
- $placeholder: $cx-input-placeholder,
7
- $empty-text: $cx-empty-text,
8
- $width: $cx-default-input-width,
9
- $left-icon-state-style-map: $cx-input-left-icon-state-style-map,
10
- $clear-state-style-map: $cx-clear-state-style-map,
11
- $tool-state-style-map: $cx-input-right-icon-state-style-map,
12
- $icon-size: $cx-default-input-icon-size,
13
- $besm: $cx-besm
14
- ) {
15
- $block: map-get($besm, block);
16
- $element: map-get($besm, element);
17
- $state: map-get($besm, state);
18
- $mod: map-get($besm, mod);
19
-
20
- .#{$block}#{$name} {
21
- @include cxb-field($besm, $state-style-map: $state-style-map, $width: $width, $input: true);
22
-
23
- .#{$element}#{$name}-left-icon {
24
- pointer-events: none;
25
- @include cxe-field-button($besm, $left-icon-state-style-map);
26
- }
27
- }
28
-
29
- $padding: cx-get-state-rule($state-style-map, default, "padding");
30
-
31
- .#{$element}#{$name}-select {
32
- @include cxe-field-input(
33
- $besm,
34
- $state-style-map,
35
- $placeholder: $placeholder,
36
- $overrides: (
37
- padding: cx-top($cx-default-input-padding)
38
- calc(
39
- #{cx-right($cx-default-input-padding)} + #{$cx-default-clear-size} - #{cx-right(
40
- $cx-default-input-padding
41
- )}
42
- )
43
- cx-bottom($cx-default-input-padding) cx-left($cx-default-input-padding),
44
- -webkit-appearance: none,
45
- -moz-appearance: none,
46
- -ms-appearance: none,
47
- appearance: none
48
- )
49
- );
50
-
51
- .#{$state}icon > & {
52
- padding-left: cx-calc(2 * cx-left($padding), $icon-size);
53
- }
54
-
55
- .#{$state}empty > & {
56
- @include cx-add-rules($placeholder);
57
- }
58
-
59
- &::-ms-expand {
60
- display: none;
61
- margin: 0;
62
- padding: 0;
63
- }
64
-
65
- option {
66
- background-color: $cx-default-dropdown-background-color;
67
- color: cx-get-state-rule($state-style-map, default, color);
68
- }
69
- }
70
-
71
- .#{$element}#{$name}-clear {
72
- @include cxe-field-button($besm, $clear-state-style-map);
73
- }
74
-
75
- .#{$element}#{$name}-placeholder {
76
- @include cx-add-rules($placeholder);
77
- }
78
-
79
- .#{$element}#{$name}-tool {
80
- pointer-events: none; //cannot call open-dropdown on native element
81
- @include cxe-field-button($besm, $tool-state-style-map);
82
-
83
- .#{$state}disabled > & {
84
- border-width: 0;
85
- @include cx-add-state-rules($state-style-map, disabled);
86
- }
87
- .#{$state}focus > & {
88
- @include cx-add-state-rules($tool-state-style-map, focus);
89
- }
90
- }
91
-
92
- .#{$element}#{$name}-icon {
93
- @include cxe-field-button-icon($besm, $icon-size);
94
- }
95
- }
96
-
97
- @if (cx-should-include("cx/widgets/Select")) {
98
- @include cx-select;
99
- }
1
+ @import "../overlay/Dropdown";
2
+
3
+ @mixin cx-select(
4
+ $name: "select",
5
+ $state-style-map: $cx-std-field-state-style-map,
6
+ $placeholder: $cx-input-placeholder,
7
+ $empty-text: $cx-empty-text,
8
+ $width: $cx-default-input-width,
9
+ $left-icon-state-style-map: $cx-input-left-icon-state-style-map,
10
+ $clear-state-style-map: $cx-clear-state-style-map,
11
+ $tool-state-style-map: $cx-input-right-icon-state-style-map,
12
+ $icon-size: $cx-default-input-icon-size,
13
+ $besm: $cx-besm
14
+ ) {
15
+ $block: map-get($besm, block);
16
+ $element: map-get($besm, element);
17
+ $state: map-get($besm, state);
18
+ $mod: map-get($besm, mod);
19
+
20
+ .#{$block}#{$name} {
21
+ @include cxb-field($besm, $state-style-map: $state-style-map, $width: $width, $input: true);
22
+
23
+ .#{$element}#{$name}-left-icon {
24
+ pointer-events: none;
25
+ @include cxe-field-button($besm, $left-icon-state-style-map);
26
+ }
27
+ }
28
+
29
+ $padding: cx-get-state-rule($state-style-map, default, "padding");
30
+
31
+ .#{$element}#{$name}-select {
32
+ @include cxe-field-input(
33
+ $besm,
34
+ $state-style-map,
35
+ $placeholder: $placeholder,
36
+ $overrides: (
37
+ padding: cx-top($cx-default-input-padding)
38
+ calc(
39
+ #{cx-right($cx-default-input-padding)} + #{$cx-default-clear-size} - #{cx-right(
40
+ $cx-default-input-padding
41
+ )}
42
+ )
43
+ cx-bottom($cx-default-input-padding) cx-left($cx-default-input-padding),
44
+ -webkit-appearance: none,
45
+ -moz-appearance: none,
46
+ -ms-appearance: none,
47
+ appearance: none
48
+ )
49
+ );
50
+
51
+ .#{$state}icon > & {
52
+ padding-left: cx-calc(2 * cx-left($padding), $icon-size);
53
+ }
54
+
55
+ .#{$state}empty > & {
56
+ @include cx-add-rules($placeholder);
57
+ }
58
+
59
+ &::-ms-expand {
60
+ display: none;
61
+ margin: 0;
62
+ padding: 0;
63
+ }
64
+
65
+ option {
66
+ background-color: $cx-default-dropdown-background-color;
67
+ color: cx-get-state-rule($state-style-map, default, color);
68
+ }
69
+ }
70
+
71
+ .#{$element}#{$name}-clear {
72
+ @include cxe-field-button($besm, $clear-state-style-map);
73
+ }
74
+
75
+ .#{$element}#{$name}-placeholder {
76
+ @include cx-add-rules($placeholder);
77
+ }
78
+
79
+ .#{$element}#{$name}-tool {
80
+ pointer-events: none; //cannot call open-dropdown on native element
81
+ @include cxe-field-button($besm, $tool-state-style-map);
82
+
83
+ .#{$state}disabled > & {
84
+ border-width: 0;
85
+ @include cx-add-state-rules($state-style-map, disabled);
86
+ }
87
+ .#{$state}focus > & {
88
+ @include cx-add-state-rules($tool-state-style-map, focus);
89
+ }
90
+ }
91
+
92
+ .#{$element}#{$name}-icon {
93
+ @include cxe-field-button-icon($besm, $icon-size);
94
+ }
95
+ }
96
+
97
+ @if (cx-should-include("cx/widgets/Select")) {
98
+ @include cx-select;
99
+ }
@@ -1,118 +1,118 @@
1
- @mixin cx-slider(
2
- $name: "slider",
3
- $state-style-map: $cx-input-state-style-map,
4
- $styles: $cx-slider-handle-styles,
5
- $width: $cx-default-input-width,
6
- $size: $cx-default-slider-handle-size,
7
- $axis-size: $cx-default-slider-axis-size,
8
- $axis-background-color: $cx-default-slider-axis-background-color,
9
- $range-background-color: $cx-default-slider-range-background-color,
10
- $besm: $cx-besm
11
- ) {
12
- $block: map-get($besm, block);
13
- $element: map-get($besm, element);
14
- $state: map-get($besm, state);
15
-
16
- .#{$block}#{$name} {
17
- width: $width;
18
- user-select: none;
19
-
20
- @include cxb-field($besm, $state-style-map, $input: false, $box: true);
21
-
22
- &.#{$state}vertical {
23
- width: 28px;
24
- height: $width;
25
- }
26
-
27
- &.#{$state}disabled {
28
- pointer-events: none;
29
- opacity: 0.5;
30
- }
31
- }
32
-
33
- .#{$element}#{$name}-axis {
34
- position: absolute;
35
- background-color: $axis-background-color;
36
- border-radius: $size * 0.5;
37
- box-sizing: border-box;
38
-
39
- .#{$block}#{$name}.#{$state}horizontal & {
40
- left: $size * 0.5;
41
- right: $size * 0.5;
42
- top: calc(50% - #{$axis-size * 0.5});
43
- height: $axis-size;
44
- padding: 0 $axis-size * 0.5;
45
- }
46
-
47
- .#{$block}#{$name}.#{$state}vertical & {
48
- top: $size * 0.5;
49
- bottom: $size * 0.5;
50
- width: $axis-size;
51
- left: calc(50% - #{$axis-size * 0.5});
52
- padding: $axis-size * 0.5 0;
53
- }
54
- }
55
-
56
- .#{$element}#{$name}-space {
57
- position: relative;
58
- width: 100%;
59
- height: 100%;
60
- }
61
-
62
- .#{$element}#{$name}-range {
63
- position: absolute;
64
-
65
- background-color: $range-background-color;
66
- border-radius: $axis-size * 0.5;
67
-
68
- .#{$block}#{$name}.#{$state}horizontal & {
69
- height: 100%;
70
- }
71
-
72
- .#{$block}#{$name}.#{$state}vertical & {
73
- width: 100%;
74
- }
75
- }
76
-
77
- .#{$element}#{$name}-handle {
78
- position: absolute;
79
- box-sizing: border-box;
80
- width: $size;
81
- height: $size;
82
- margin-left: -$size * 0.5;
83
- margin-top: -$size * 0.5;
84
- margin-bottom: -$size * 0.5;
85
- touch-action: none;
86
-
87
- @include cx-add-state-rules($styles, default);
88
-
89
- .#{$block}#{$name}.#{$state}horizontal & {
90
- left: 0;
91
- top: 50%;
92
- }
93
-
94
- .#{$block}#{$name}.#{$state}vertical & {
95
- left: 50%;
96
- }
97
-
98
- &:hover {
99
- @include cx-add-state-rules($styles, hover);
100
- }
101
-
102
- &:focus {
103
- @include cx-add-state-rules($styles, focus);
104
- }
105
-
106
- &[disabled] {
107
- @include cx-add-state-rules($styles, disabled);
108
- }
109
-
110
- &:active {
111
- @include cx-add-state-rules($styles, active);
112
- }
113
- }
114
- }
115
-
116
- @if (cx-should-include("cx/widgets/Slider")) {
117
- @include cx-slider();
118
- }
1
+ @mixin cx-slider(
2
+ $name: "slider",
3
+ $state-style-map: $cx-input-state-style-map,
4
+ $styles: $cx-slider-handle-styles,
5
+ $width: $cx-default-input-width,
6
+ $size: $cx-default-slider-handle-size,
7
+ $axis-size: $cx-default-slider-axis-size,
8
+ $axis-background-color: $cx-default-slider-axis-background-color,
9
+ $range-background-color: $cx-default-slider-range-background-color,
10
+ $besm: $cx-besm
11
+ ) {
12
+ $block: map-get($besm, block);
13
+ $element: map-get($besm, element);
14
+ $state: map-get($besm, state);
15
+
16
+ .#{$block}#{$name} {
17
+ width: $width;
18
+ user-select: none;
19
+
20
+ @include cxb-field($besm, $state-style-map, $input: false, $box: true);
21
+
22
+ &.#{$state}vertical {
23
+ width: 28px;
24
+ height: $width;
25
+ }
26
+
27
+ &.#{$state}disabled {
28
+ pointer-events: none;
29
+ opacity: 0.5;
30
+ }
31
+ }
32
+
33
+ .#{$element}#{$name}-axis {
34
+ position: absolute;
35
+ background-color: $axis-background-color;
36
+ border-radius: $size * 0.5;
37
+ box-sizing: border-box;
38
+
39
+ .#{$block}#{$name}.#{$state}horizontal & {
40
+ left: $size * 0.5;
41
+ right: $size * 0.5;
42
+ top: calc(50% - #{$axis-size * 0.5});
43
+ height: $axis-size;
44
+ padding: 0 $axis-size * 0.5;
45
+ }
46
+
47
+ .#{$block}#{$name}.#{$state}vertical & {
48
+ top: $size * 0.5;
49
+ bottom: $size * 0.5;
50
+ width: $axis-size;
51
+ left: calc(50% - #{$axis-size * 0.5});
52
+ padding: $axis-size * 0.5 0;
53
+ }
54
+ }
55
+
56
+ .#{$element}#{$name}-space {
57
+ position: relative;
58
+ width: 100%;
59
+ height: 100%;
60
+ }
61
+
62
+ .#{$element}#{$name}-range {
63
+ position: absolute;
64
+
65
+ background-color: $range-background-color;
66
+ border-radius: $axis-size * 0.5;
67
+
68
+ .#{$block}#{$name}.#{$state}horizontal & {
69
+ height: 100%;
70
+ }
71
+
72
+ .#{$block}#{$name}.#{$state}vertical & {
73
+ width: 100%;
74
+ }
75
+ }
76
+
77
+ .#{$element}#{$name}-handle {
78
+ position: absolute;
79
+ box-sizing: border-box;
80
+ width: $size;
81
+ height: $size;
82
+ margin-left: -$size * 0.5;
83
+ margin-top: -$size * 0.5;
84
+ margin-bottom: -$size * 0.5;
85
+ touch-action: none;
86
+
87
+ @include cx-add-state-rules($styles, default);
88
+
89
+ .#{$block}#{$name}.#{$state}horizontal & {
90
+ left: 0;
91
+ top: 50%;
92
+ }
93
+
94
+ .#{$block}#{$name}.#{$state}vertical & {
95
+ left: 50%;
96
+ }
97
+
98
+ &:hover {
99
+ @include cx-add-state-rules($styles, hover);
100
+ }
101
+
102
+ &:focus {
103
+ @include cx-add-state-rules($styles, focus);
104
+ }
105
+
106
+ &[disabled] {
107
+ @include cx-add-state-rules($styles, disabled);
108
+ }
109
+
110
+ &:active {
111
+ @include cx-add-state-rules($styles, active);
112
+ }
113
+ }
114
+ }
115
+
116
+ @if (cx-should-include("cx/widgets/Slider")) {
117
+ @include cx-slider();
118
+ }