cx 24.9.0 → 24.9.1

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 (54) hide show
  1. package/dist/charts.js +25 -22
  2. package/dist/data.js +29 -26
  3. package/dist/manifest.js +528 -528
  4. package/dist/svg.js +56 -59
  5. package/dist/ui.js +52 -51
  6. package/dist/widgets.css +3 -6
  7. package/dist/widgets.js +44 -40
  8. package/package.json +32 -32
  9. package/src/charts/Legend.js +151 -151
  10. package/src/charts/PieLabel.js +71 -71
  11. package/src/charts/axis/NumericAxis.js +347 -347
  12. package/src/charts/axis/Stack.js +55 -55
  13. package/src/charts/helpers/PointReducer.js +43 -43
  14. package/src/charts/helpers/SnapPointFinder.js +69 -69
  15. package/src/data/Binding.spec.js +69 -69
  16. package/src/data/StringTemplate.spec.js +105 -105
  17. package/src/data/getAccessor.spec.js +11 -11
  18. package/src/index.scss +6 -6
  19. package/src/svg/Text.d.ts +40 -40
  20. package/src/ui/Culture.d.ts +55 -55
  21. package/src/ui/Culture.js +139 -139
  22. package/src/ui/FocusManager.js +171 -171
  23. package/src/ui/Instance.d.ts +72 -72
  24. package/src/ui/VDOM.d.ts +12 -12
  25. package/src/ui/app/startAppLoop.js +58 -58
  26. package/src/ui/index.d.ts +42 -42
  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.scss +2 -1
  34. package/src/widgets/form/ColorPicker.scss +283 -283
  35. package/src/widgets/form/LookupField.scss +2 -2
  36. package/src/widgets/form/MonthPicker.scss +118 -118
  37. package/src/widgets/form/NumberField.scss +61 -61
  38. package/src/widgets/form/Radio.scss +1 -2
  39. package/src/widgets/form/Select.scss +99 -99
  40. package/src/widgets/form/Slider.scss +118 -118
  41. package/src/widgets/form/Switch.scss +140 -140
  42. package/src/widgets/form/TextArea.scss +43 -43
  43. package/src/widgets/form/TextField.js +289 -289
  44. package/src/widgets/form/TextField.scss +55 -55
  45. package/src/widgets/form/UploadButton.d.ts +34 -34
  46. package/src/widgets/grid/TreeNode.scss +88 -88
  47. package/src/widgets/grid/variables.scss +88 -88
  48. package/src/widgets/nav/Menu.scss +74 -74
  49. package/src/widgets/overlay/Dropdown.js +612 -612
  50. package/src/widgets/overlay/FlyweightTooltipTracker.js +39 -39
  51. package/src/widgets/overlay/Tooltip.js +300 -300
  52. package/src/widgets/overlay/Window.js +196 -196
  53. package/src/widgets/overlay/captureMouse.js +124 -124
  54. package/src/widgets/overlay/variables.scss +83 -83
@@ -1,118 +1,118 @@
1
- @mixin cx-monthpicker($name: "monthpicker", $state-style-map: $cx-input-state-style-map, $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
- overflow-y: scroll;
8
- overflow-x: hidden;
9
- min-height: 10em;
10
- max-height: 30em; //100vh;
11
- height: 100%;
12
- position: relative;
13
- width: 23em;
14
- overflow-anchor: none;
15
- touch-action: pan-y;
16
-
17
- @include cxe-field-input($besm, $state-style-map, $input: false);
18
-
19
- table {
20
- border-spacing: 0;
21
- width: 100%;
22
- font-size: 0.9em;
23
- }
24
-
25
- $border-color: cx-get-state-rule($state-style-map, default, border-color);
26
-
27
- th,
28
- td {
29
- border-top: 1px solid transparentize($border-color, 0.5);
30
- -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
31
- }
32
-
33
- tbody:not(:first-child) {
34
- tr:first-child {
35
- th,
36
- td {
37
- border-top: 1px solid $border-color;
38
- }
39
- }
40
- }
41
-
42
- th,
43
- td {
44
- text-align: center;
45
- font-size: $cx-default-monthpicker-font-size;
46
- font-weight: $cx-default-monthpicker-font-weight;
47
- line-height: 2em;
48
- cursor: pointer;
49
- -webkit-user-select: none;
50
- -ms-user-select: none;
51
- -moz-user-select: none;
52
- user-select: none;
53
- }
54
-
55
- th {
56
- padding: 0 0.5em;
57
- color: lightgray;
58
- }
59
-
60
- .#{$element}#{$name}-year {
61
- font-size: 120%;
62
- color: gray;
63
- }
64
-
65
- td {
66
- padding: 0.5em 1em;
67
- }
68
-
69
- td.#{$state}outside {
70
- color: lightgray;
71
- }
72
-
73
- td.#{$state}unselectable {
74
- @include cx-add-state-rules($cx-list-item, disabled);
75
- }
76
-
77
- td.#{$state}selected {
78
- border-color: transparent;
79
- @include cx-add-state-rules($cx-list-item, selected);
80
-
81
- &:hover {
82
- @include cx-add-state-rules($cx-list-item, selected-hover);
83
- }
84
- }
85
-
86
- td.#{$state}cursor,
87
- th.#{$state}cursor {
88
- @include cx-add-state-rules($cx-list-item, hover);
89
- }
90
-
91
- &:focus {
92
- td.#{$state}selected {
93
- @include cx-add-state-rules($cx-list-item, selected);
94
- }
95
-
96
- td.#{$state}cursor,
97
- th.#{$state}cursor {
98
- @include cx-add-state-rules($cx-list-item, selected-cursor);
99
- }
100
- }
101
-
102
- td.#{$state}handle {
103
- //@include cx-add-state-rules($cx-list-item, selected-cursor);
104
- touch-action: none;
105
- }
106
- }
107
-
108
- .#{$block}#{$name}.#{$state}disabled {
109
- background-color: transparent;
110
- border-color: transparent;
111
- color: darken(#fff, 18);
112
- pointer-events: none;
113
- }
114
- }
115
-
116
- @if (cx-should-include("cx/widgets/MonthPicker")) {
117
- @include cx-monthpicker();
118
- }
1
+ @mixin cx-monthpicker($name: "monthpicker", $state-style-map: $cx-input-state-style-map, $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
+ overflow-y: scroll;
8
+ overflow-x: hidden;
9
+ min-height: 10em;
10
+ max-height: 30em; //100vh;
11
+ height: 100%;
12
+ position: relative;
13
+ width: 23em;
14
+ overflow-anchor: none;
15
+ touch-action: pan-y;
16
+
17
+ @include cxe-field-input($besm, $state-style-map, $input: false);
18
+
19
+ table {
20
+ border-spacing: 0;
21
+ width: 100%;
22
+ font-size: 0.9em;
23
+ }
24
+
25
+ $border-color: cx-get-state-rule($state-style-map, default, border-color);
26
+
27
+ th,
28
+ td {
29
+ border-top: 1px solid transparentize($border-color, 0.5);
30
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
31
+ }
32
+
33
+ tbody:not(:first-child) {
34
+ tr:first-child {
35
+ th,
36
+ td {
37
+ border-top: 1px solid $border-color;
38
+ }
39
+ }
40
+ }
41
+
42
+ th,
43
+ td {
44
+ text-align: center;
45
+ font-size: $cx-default-monthpicker-font-size;
46
+ font-weight: $cx-default-monthpicker-font-weight;
47
+ line-height: 2em;
48
+ cursor: pointer;
49
+ -webkit-user-select: none;
50
+ -ms-user-select: none;
51
+ -moz-user-select: none;
52
+ user-select: none;
53
+ }
54
+
55
+ th {
56
+ padding: 0 0.5em;
57
+ color: lightgray;
58
+ }
59
+
60
+ .#{$element}#{$name}-year {
61
+ font-size: 120%;
62
+ color: gray;
63
+ }
64
+
65
+ td {
66
+ padding: 0.5em 1em;
67
+ }
68
+
69
+ td.#{$state}outside {
70
+ color: lightgray;
71
+ }
72
+
73
+ td.#{$state}unselectable {
74
+ @include cx-add-state-rules($cx-list-item, disabled);
75
+ }
76
+
77
+ td.#{$state}selected {
78
+ border-color: transparent;
79
+ @include cx-add-state-rules($cx-list-item, selected);
80
+
81
+ &:hover {
82
+ @include cx-add-state-rules($cx-list-item, selected-hover);
83
+ }
84
+ }
85
+
86
+ td.#{$state}cursor,
87
+ th.#{$state}cursor {
88
+ @include cx-add-state-rules($cx-list-item, hover);
89
+ }
90
+
91
+ &:focus {
92
+ td.#{$state}selected {
93
+ @include cx-add-state-rules($cx-list-item, selected);
94
+ }
95
+
96
+ td.#{$state}cursor,
97
+ th.#{$state}cursor {
98
+ @include cx-add-state-rules($cx-list-item, selected-cursor);
99
+ }
100
+ }
101
+
102
+ td.#{$state}handle {
103
+ //@include cx-add-state-rules($cx-list-item, selected-cursor);
104
+ touch-action: none;
105
+ }
106
+ }
107
+
108
+ .#{$block}#{$name}.#{$state}disabled {
109
+ background-color: transparent;
110
+ border-color: transparent;
111
+ color: darken(#fff, 18);
112
+ pointer-events: none;
113
+ }
114
+ }
115
+
116
+ @if (cx-should-include("cx/widgets/MonthPicker")) {
117
+ @include cx-monthpicker();
118
+ }
@@ -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
+ }
@@ -63,12 +63,10 @@
63
63
  .#{$element}#{$name}-input {
64
64
  width: $size;
65
65
  height: $size;
66
-
67
66
  top: calc(50% - #{$size * 0.5});
68
67
  left: 0;
69
68
  display: inline-block;
70
69
  position: absolute;
71
- border-radius: 50%;
72
70
  //overflow: hidden;
73
71
  opacity: 1;
74
72
 
@@ -78,6 +76,7 @@
78
76
  $input: false,
79
77
  $overrides: (
80
78
  default: (
79
+ border-radius: 50%,
81
80
  padding: 0,
82
81
  margin: 0 !important,
83
82
  )
@@ -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
+ }