cx 25.6.2 → 25.6.3

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 (103) hide show
  1. package/dist/manifest.js +749 -749
  2. package/dist/widgets.css +5 -0
  3. package/dist/widgets.js +77 -34
  4. package/package.json +1 -1
  5. package/src/charts/Legend.d.ts +45 -45
  6. package/src/charts/LegendEntry.js +128 -128
  7. package/src/charts/LegendEntry.scss +27 -27
  8. package/src/charts/PieChart.d.ts +92 -92
  9. package/src/charts/RangeMarker.js +159 -159
  10. package/src/charts/axis/Axis.d.ts +113 -113
  11. package/src/charts/axis/Axis.js +280 -280
  12. package/src/charts/axis/CategoryAxis.d.ts +30 -30
  13. package/src/charts/axis/CategoryAxis.js +241 -241
  14. package/src/charts/axis/NumericAxis.js +351 -351
  15. package/src/charts/axis/Stack.js +55 -55
  16. package/src/charts/axis/TimeAxis.js +611 -611
  17. package/src/charts/helpers/SnapPointFinder.js +69 -69
  18. package/src/data/Binding.spec.js +69 -69
  19. package/src/data/ExposedValueView.d.ts +19 -19
  20. package/src/data/Expression.js +229 -229
  21. package/src/data/Expression.spec.js +229 -229
  22. package/src/data/StringTemplate.js +92 -92
  23. package/src/data/StringTemplate.spec.js +132 -132
  24. package/src/data/StructuredSelector.js +132 -132
  25. package/src/data/getAccessor.spec.js +11 -11
  26. package/src/data/getSelector.js +49 -49
  27. package/src/hooks/createLocalStorageRef.d.ts +3 -3
  28. package/src/hooks/createLocalStorageRef.js +20 -20
  29. package/src/index.scss +6 -6
  30. package/src/ui/Culture.d.ts +57 -57
  31. package/src/ui/Culture.js +139 -139
  32. package/src/ui/FocusManager.js +171 -171
  33. package/src/ui/Format.js +108 -108
  34. package/src/ui/HoverSync.js +147 -147
  35. package/src/ui/Repeater.d.ts +61 -61
  36. package/src/ui/index.d.ts +42 -42
  37. package/src/ui/layout/ContentPlaceholder.d.ts +19 -19
  38. package/src/ui/layout/ContentPlaceholder.js +105 -105
  39. package/src/ui/layout/ContentPlaceholder.spec.js +579 -579
  40. package/src/ui/layout/LabelsTopLayout.js +134 -134
  41. package/src/util/Format.js +270 -270
  42. package/src/util/date/encodeDate.d.ts +1 -1
  43. package/src/util/date/encodeDate.js +8 -8
  44. package/src/util/date/encodeDateWithTimezoneOffset.d.ts +1 -1
  45. package/src/util/date/index.d.ts +11 -11
  46. package/src/util/date/index.js +11 -11
  47. package/src/util/date/parseDateInvariant.d.ts +3 -3
  48. package/src/util/date/parseDateInvariant.js +20 -20
  49. package/src/util/getSearchQueryPredicate.js +59 -59
  50. package/src/util/index.d.ts +51 -51
  51. package/src/util/index.js +54 -54
  52. package/src/util/isValidIdentifierName.d.ts +1 -1
  53. package/src/util/isValidIdentifierName.js +5 -5
  54. package/src/util/isValidIdentifierName.spec.js +33 -33
  55. package/src/util/scss/add-rules.scss +38 -38
  56. package/src/widgets/CxCredit.scss +37 -37
  57. package/src/widgets/HighlightedSearchText.js +36 -36
  58. package/src/widgets/HighlightedSearchText.scss +18 -18
  59. package/src/widgets/List.scss +91 -91
  60. package/src/widgets/Sandbox.d.ts +18 -16
  61. package/src/widgets/Sandbox.js +65 -63
  62. package/src/widgets/drag-drop/DropZone.js +214 -214
  63. package/src/widgets/form/Calendar.js +618 -618
  64. package/src/widgets/form/Calendar.scss +196 -196
  65. package/src/widgets/form/Checkbox.scss +127 -127
  66. package/src/widgets/form/ColorField.js +397 -397
  67. package/src/widgets/form/ColorField.scss +96 -96
  68. package/src/widgets/form/ColorPicker.scss +283 -283
  69. package/src/widgets/form/DateTimeField.js +576 -576
  70. package/src/widgets/form/DateTimePicker.js +392 -392
  71. package/src/widgets/form/LookupField.d.ts +179 -179
  72. package/src/widgets/form/LookupField.scss +219 -219
  73. package/src/widgets/form/MonthPicker.d.ts +8 -0
  74. package/src/widgets/form/MonthPicker.js +65 -23
  75. package/src/widgets/form/MonthPicker.scss +4 -0
  76. package/src/widgets/form/NumberField.js +459 -459
  77. package/src/widgets/form/NumberField.scss +61 -61
  78. package/src/widgets/form/Radio.scss +121 -121
  79. package/src/widgets/form/Select.scss +99 -99
  80. package/src/widgets/form/Slider.scss +118 -118
  81. package/src/widgets/form/Switch.scss +140 -140
  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/GridRow.js +228 -228
  89. package/src/widgets/grid/TreeNode.d.ts +23 -23
  90. package/src/widgets/grid/TreeNode.scss +88 -88
  91. package/src/widgets/grid/variables.scss +133 -133
  92. package/src/widgets/nav/LinkButton.js +128 -128
  93. package/src/widgets/nav/Menu.scss +74 -74
  94. package/src/widgets/overlay/Dropdown.js +612 -612
  95. package/src/widgets/overlay/FlyweightTooltipTracker.js +39 -39
  96. package/src/widgets/overlay/Overlay.d.ts +73 -73
  97. package/src/widgets/overlay/Window.js +202 -202
  98. package/src/widgets/overlay/captureMouse.js +124 -124
  99. package/src/widgets/overlay/createHotPromiseWindowFactory.d.ts +18 -18
  100. package/src/widgets/overlay/createHotPromiseWindowFactory.js +56 -56
  101. package/src/widgets/overlay/index.d.ts +11 -11
  102. package/src/widgets/overlay/index.js +11 -11
  103. package/src/widgets/variables.scss +144 -144
@@ -1,133 +1,133 @@
1
- // GRID
2
- $cx-default-grid-font-size: $cx-default-box-font-size !default;
3
- $cx-default-grid-border-color: $cx-default-border-color !default;
4
- $cx-default-grid-border-radius: null !default;
5
- $cx-default-grid-box-shadow: null !default;
6
-
7
- // header
8
- $cx-default-grid-header-font-size: $cx-default-box-font-size !default;
9
- $cx-default-grid-header-font-weight: normal !default;
10
- $cx-default-grid-header-line-height: null !default;
11
- $cx-default-grid-header-color: $cx-default-color !default;
12
- $cx-default-grid-header-background-color: #eee !default;
13
- $cx-default-grid-header-border-color: $cx-default-border-color !default;
14
- $cx-default-grid-header-box-shadow: null !default;
15
- $cx-default-grid-header-padding: null !default;
16
-
17
- $cx-grid-header-state-style-map: (
18
- default: (
19
- font-size: $cx-default-grid-header-font-size,
20
- font-weight: $cx-default-grid-header-font-weight,
21
- line-height: $cx-default-grid-header-line-height,
22
- color: $cx-default-grid-header-color,
23
- background-color: $cx-default-grid-header-background-color,
24
- border-color: $cx-default-grid-header-border-color,
25
- background-clip: border-box,
26
- padding: $cx-default-grid-header-padding,
27
- ),
28
- hover: (
29
- background-color: darken($cx-default-grid-header-background-color, 2),
30
- ),
31
- sorted: (
32
- background-color: darken($cx-default-grid-header-background-color, 7),
33
- ),
34
- sorted-hover: (
35
- background-color: darken($cx-default-grid-header-background-color, 5),
36
- ),
37
- ) !default;
38
-
39
- // data
40
- $cx-default-grid-data-font-size: null !default;
41
- $cx-default-grid-data-font-weight: null !default;
42
- $cx-default-grid-data-line-height: null !default;
43
- $cx-default-grid-data-background-color: transparent !default;
44
- $cx-default-grid-data-alternate-background-color: null !default;
45
- $cx-default-grid-data-border-color: $cx-default-grid-border-color !default;
46
- $cx-default-grid-data-padding: 5px !default;
47
- $cx-default-grid-caption-gap: 15px !default;
48
-
49
- $cx-grid-data-state-style-map: cx-deep-map-merge(
50
- $cx-list-item,
51
- (
52
- default: (
53
- font-size: $cx-default-grid-data-font-size,
54
- line-height: $cx-default-grid-data-line-height,
55
- font-weight: $cx-default-grid-data-font-weight,
56
- background-color: $cx-default-grid-data-background-color,
57
- border-color: $cx-default-grid-data-border-color,
58
- padding: $cx-default-grid-data-padding,
59
- ),
60
- alternate: (
61
- background-color: $cx-default-grid-data-alternate-background-color,
62
- ),
63
- )
64
- ) !default;
65
-
66
- $cx-grid-group-caption-level-style-map: (
67
- level-1: (
68
- font-weight: bold,
69
- font-size: 115%,
70
- ),
71
- level-2: (
72
- font-weight: bold,
73
- font-size: 130%,
74
- border-bottom: 1px solid grey,
75
- ),
76
- level-3: (
77
- font-weight: bold,
78
- font-size: 145%,
79
- border-bottom: 1px solid grey,
80
- ),
81
- level-4: (
82
- font-weight: bold,
83
- font-size: 160%,
84
- border-bottom: 1px solid grey,
85
- ),
86
- );
87
-
88
- $cx-grid-group-footer-level-style-map: (
89
- level-1: (
90
- font-weight: bold,
91
- border-top: 1px solid $cx-default-grid-border-color,
92
- ),
93
- level-2: (
94
- font-weight: bold,
95
- font-size: 110%,
96
- border-top: 1px solid grey,
97
- ),
98
- level-3: (
99
- font-weight: bold,
100
- font-size: 120%,
101
- border-top: 1px solid grey,
102
- ),
103
- level-4: (
104
- font-weight: bold,
105
- font-size: 130%,
106
- border-top: 1px solid grey,
107
- ),
108
- );
109
-
110
- // pagination
111
- $cx-grid-pagination-default-border-width: $cx-default-border-width !default;
112
- $cx-grid-pagination-default-border-color: $cx-default-border-color !default;
113
- $cx-grid-pagination-default-border-radius: null !default;
114
- $cx-grid-pagination-default-outer-border-radius: $cx-default-border-radius !default;
115
- $cx-grid-pagination-default-padding: cx-top($cx-default-box-padding) 2 * cx-top($cx-default-box-padding) !default;
116
-
117
- $cx-grid-pagination-state-style-map: cx-deep-map-merge($cx-list-item, ()) !default;
118
-
119
- $cx-grid-cell-cursor-style: (
120
- left: -1px,
121
- top: -1px,
122
- right: -1px,
123
- bottom: -1px,
124
- background: rgba(green, 0.1),
125
- border: 2px solid rgba(green, 1),
126
- );
127
-
128
- $cx-dependencies: map-merge(
129
- $cx-dependencies,
130
- (
131
- "cx/widgets/Grid": "cx/widgets/DragClone",
132
- )
133
- );
1
+ // GRID
2
+ $cx-default-grid-font-size: $cx-default-box-font-size !default;
3
+ $cx-default-grid-border-color: $cx-default-border-color !default;
4
+ $cx-default-grid-border-radius: null !default;
5
+ $cx-default-grid-box-shadow: null !default;
6
+
7
+ // header
8
+ $cx-default-grid-header-font-size: $cx-default-box-font-size !default;
9
+ $cx-default-grid-header-font-weight: normal !default;
10
+ $cx-default-grid-header-line-height: null !default;
11
+ $cx-default-grid-header-color: $cx-default-color !default;
12
+ $cx-default-grid-header-background-color: #eee !default;
13
+ $cx-default-grid-header-border-color: $cx-default-border-color !default;
14
+ $cx-default-grid-header-box-shadow: null !default;
15
+ $cx-default-grid-header-padding: null !default;
16
+
17
+ $cx-grid-header-state-style-map: (
18
+ default: (
19
+ font-size: $cx-default-grid-header-font-size,
20
+ font-weight: $cx-default-grid-header-font-weight,
21
+ line-height: $cx-default-grid-header-line-height,
22
+ color: $cx-default-grid-header-color,
23
+ background-color: $cx-default-grid-header-background-color,
24
+ border-color: $cx-default-grid-header-border-color,
25
+ background-clip: border-box,
26
+ padding: $cx-default-grid-header-padding,
27
+ ),
28
+ hover: (
29
+ background-color: darken($cx-default-grid-header-background-color, 2),
30
+ ),
31
+ sorted: (
32
+ background-color: darken($cx-default-grid-header-background-color, 7),
33
+ ),
34
+ sorted-hover: (
35
+ background-color: darken($cx-default-grid-header-background-color, 5),
36
+ ),
37
+ ) !default;
38
+
39
+ // data
40
+ $cx-default-grid-data-font-size: null !default;
41
+ $cx-default-grid-data-font-weight: null !default;
42
+ $cx-default-grid-data-line-height: null !default;
43
+ $cx-default-grid-data-background-color: transparent !default;
44
+ $cx-default-grid-data-alternate-background-color: null !default;
45
+ $cx-default-grid-data-border-color: $cx-default-grid-border-color !default;
46
+ $cx-default-grid-data-padding: 5px !default;
47
+ $cx-default-grid-caption-gap: 15px !default;
48
+
49
+ $cx-grid-data-state-style-map: cx-deep-map-merge(
50
+ $cx-list-item,
51
+ (
52
+ default: (
53
+ font-size: $cx-default-grid-data-font-size,
54
+ line-height: $cx-default-grid-data-line-height,
55
+ font-weight: $cx-default-grid-data-font-weight,
56
+ background-color: $cx-default-grid-data-background-color,
57
+ border-color: $cx-default-grid-data-border-color,
58
+ padding: $cx-default-grid-data-padding,
59
+ ),
60
+ alternate: (
61
+ background-color: $cx-default-grid-data-alternate-background-color,
62
+ ),
63
+ )
64
+ ) !default;
65
+
66
+ $cx-grid-group-caption-level-style-map: (
67
+ level-1: (
68
+ font-weight: bold,
69
+ font-size: 115%,
70
+ ),
71
+ level-2: (
72
+ font-weight: bold,
73
+ font-size: 130%,
74
+ border-bottom: 1px solid grey,
75
+ ),
76
+ level-3: (
77
+ font-weight: bold,
78
+ font-size: 145%,
79
+ border-bottom: 1px solid grey,
80
+ ),
81
+ level-4: (
82
+ font-weight: bold,
83
+ font-size: 160%,
84
+ border-bottom: 1px solid grey,
85
+ ),
86
+ );
87
+
88
+ $cx-grid-group-footer-level-style-map: (
89
+ level-1: (
90
+ font-weight: bold,
91
+ border-top: 1px solid $cx-default-grid-border-color,
92
+ ),
93
+ level-2: (
94
+ font-weight: bold,
95
+ font-size: 110%,
96
+ border-top: 1px solid grey,
97
+ ),
98
+ level-3: (
99
+ font-weight: bold,
100
+ font-size: 120%,
101
+ border-top: 1px solid grey,
102
+ ),
103
+ level-4: (
104
+ font-weight: bold,
105
+ font-size: 130%,
106
+ border-top: 1px solid grey,
107
+ ),
108
+ );
109
+
110
+ // pagination
111
+ $cx-grid-pagination-default-border-width: $cx-default-border-width !default;
112
+ $cx-grid-pagination-default-border-color: $cx-default-border-color !default;
113
+ $cx-grid-pagination-default-border-radius: null !default;
114
+ $cx-grid-pagination-default-outer-border-radius: $cx-default-border-radius !default;
115
+ $cx-grid-pagination-default-padding: cx-top($cx-default-box-padding) 2 * cx-top($cx-default-box-padding) !default;
116
+
117
+ $cx-grid-pagination-state-style-map: cx-deep-map-merge($cx-list-item, ()) !default;
118
+
119
+ $cx-grid-cell-cursor-style: (
120
+ left: -1px,
121
+ top: -1px,
122
+ right: -1px,
123
+ bottom: -1px,
124
+ background: rgba(green, 0.1),
125
+ border: 2px solid rgba(green, 1),
126
+ );
127
+
128
+ $cx-dependencies: map-merge(
129
+ $cx-dependencies,
130
+ (
131
+ "cx/widgets/Grid": "cx/widgets/DragClone",
132
+ )
133
+ );
@@ -1,128 +1,128 @@
1
- import { Widget, VDOM } from "../../ui/Widget";
2
- import { Button } from "../Button";
3
- import { History } from "../../ui/app/History";
4
- import { Url } from "../../ui/app/Url";
5
- import { routeAppend } from "../../util/routeAppend";
6
- import { parseStyle } from "../../util/parseStyle";
7
-
8
- export class LinkButton extends Button {
9
- init() {
10
- this.activeStyle = parseStyle(this.activeStyle);
11
- this.inactiveStyle = parseStyle(this.inactiveStyle);
12
- super.init();
13
- }
14
-
15
- declareData() {
16
- super.declareData(
17
- {
18
- href: undefined,
19
- url: undefined,
20
- target: undefined,
21
- active: undefined,
22
- activeClass: undefined,
23
- activeStyle: undefined,
24
- inactiveClass: undefined,
25
- inactiveStyle: undefined,
26
- },
27
- ...arguments,
28
- );
29
- }
30
-
31
- prepareData(context, instance) {
32
- let { data } = instance;
33
-
34
- data.unresolvedHref = data.href;
35
-
36
- if (typeof data.href === "string") {
37
- if (data.unresolvedHref[0] === "+")
38
- data.unresolvedHref = routeAppend(context.lastRoute.reverse(), data.href.substring(1));
39
-
40
- data.href = Url.resolve(data.unresolvedHref);
41
- }
42
-
43
- let active = this.isActive(data);
44
-
45
- data.stateMods = {
46
- disabled: data.disabled,
47
- active,
48
- };
49
-
50
- super.prepareData(context, instance);
51
-
52
- if (active) {
53
- if (data.activeClass) data.classNames += " " + data.activeClass;
54
- if (data.activeStyle)
55
- data.style = {
56
- ...data.style,
57
- ...parseStyle(data.activeStyle),
58
- };
59
- } else {
60
- if (data.inactiveClass) data.classNames += " " + data.inactiveClass;
61
- if (data.inactiveStyle)
62
- data.style = {
63
- ...data.style,
64
- ...parseStyle(data.inactiveStyle),
65
- };
66
- }
67
- }
68
-
69
- isActive(data) {
70
- if (data.active != null) return data.active;
71
-
72
- switch (this.match) {
73
- default:
74
- case "equal":
75
- return data.url === data.unresolvedHref;
76
-
77
- case "prefix":
78
- return data.url && data.unresolvedHref && data.url.indexOf(data.unresolvedHref) === 0;
79
-
80
- case "subroute":
81
- return (
82
- data.url &&
83
- data.unresolvedHref &&
84
- data.url.indexOf(data.unresolvedHref) === 0 &&
85
- (data.url === data.unresolvedHref || data.url[data.unresolvedHref.length] === "/")
86
- );
87
- }
88
- }
89
-
90
- attachProps(context, instance, props) {
91
- props.onClick = (ev) => {
92
- this.handleClick(ev, instance);
93
- };
94
- super.attachProps(context, instance, props);
95
- props.href = instance.data.href;
96
- delete props.active;
97
- delete props.activeClass;
98
- delete props.activeStyle;
99
- delete props.inactiveClass;
100
- delete props.inactiveStyle;
101
- }
102
-
103
- isValidHtmlAttribute(attr) {
104
- if (attr === "url" || attr === "match") return false;
105
- return super.isValidHtmlAttribute(attr);
106
- }
107
-
108
- handleClick(e, instance) {
109
- let { data } = instance;
110
-
111
- if (data.disabled) {
112
- e.preventDefault();
113
- return;
114
- }
115
-
116
- if (this.onClick && instance.invoke("onClick", e, instance) === false) return;
117
-
118
- if (data.href && Url.isLocal(data.href) && !e.ctrlKey && !e.shiftKey && !e.metaKey) {
119
- e.preventDefault();
120
- History.pushState({}, null, data.href);
121
- }
122
- }
123
- }
124
-
125
- LinkButton.prototype.match = "equal";
126
- LinkButton.prototype.tag = "a";
127
-
128
- Widget.alias("link-button", LinkButton);
1
+ import { Widget, VDOM } from "../../ui/Widget";
2
+ import { Button } from "../Button";
3
+ import { History } from "../../ui/app/History";
4
+ import { Url } from "../../ui/app/Url";
5
+ import { routeAppend } from "../../util/routeAppend";
6
+ import { parseStyle } from "../../util/parseStyle";
7
+
8
+ export class LinkButton extends Button {
9
+ init() {
10
+ this.activeStyle = parseStyle(this.activeStyle);
11
+ this.inactiveStyle = parseStyle(this.inactiveStyle);
12
+ super.init();
13
+ }
14
+
15
+ declareData() {
16
+ super.declareData(
17
+ {
18
+ href: undefined,
19
+ url: undefined,
20
+ target: undefined,
21
+ active: undefined,
22
+ activeClass: undefined,
23
+ activeStyle: undefined,
24
+ inactiveClass: undefined,
25
+ inactiveStyle: undefined,
26
+ },
27
+ ...arguments,
28
+ );
29
+ }
30
+
31
+ prepareData(context, instance) {
32
+ let { data } = instance;
33
+
34
+ data.unresolvedHref = data.href;
35
+
36
+ if (typeof data.href === "string") {
37
+ if (data.unresolvedHref[0] === "+")
38
+ data.unresolvedHref = routeAppend(context.lastRoute.reverse(), data.href.substring(1));
39
+
40
+ data.href = Url.resolve(data.unresolvedHref);
41
+ }
42
+
43
+ let active = this.isActive(data);
44
+
45
+ data.stateMods = {
46
+ disabled: data.disabled,
47
+ active,
48
+ };
49
+
50
+ super.prepareData(context, instance);
51
+
52
+ if (active) {
53
+ if (data.activeClass) data.classNames += " " + data.activeClass;
54
+ if (data.activeStyle)
55
+ data.style = {
56
+ ...data.style,
57
+ ...parseStyle(data.activeStyle),
58
+ };
59
+ } else {
60
+ if (data.inactiveClass) data.classNames += " " + data.inactiveClass;
61
+ if (data.inactiveStyle)
62
+ data.style = {
63
+ ...data.style,
64
+ ...parseStyle(data.inactiveStyle),
65
+ };
66
+ }
67
+ }
68
+
69
+ isActive(data) {
70
+ if (data.active != null) return data.active;
71
+
72
+ switch (this.match) {
73
+ default:
74
+ case "equal":
75
+ return data.url === data.unresolvedHref;
76
+
77
+ case "prefix":
78
+ return data.url && data.unresolvedHref && data.url.indexOf(data.unresolvedHref) === 0;
79
+
80
+ case "subroute":
81
+ return (
82
+ data.url &&
83
+ data.unresolvedHref &&
84
+ data.url.indexOf(data.unresolvedHref) === 0 &&
85
+ (data.url === data.unresolvedHref || data.url[data.unresolvedHref.length] === "/")
86
+ );
87
+ }
88
+ }
89
+
90
+ attachProps(context, instance, props) {
91
+ props.onClick = (ev) => {
92
+ this.handleClick(ev, instance);
93
+ };
94
+ super.attachProps(context, instance, props);
95
+ props.href = instance.data.href;
96
+ delete props.active;
97
+ delete props.activeClass;
98
+ delete props.activeStyle;
99
+ delete props.inactiveClass;
100
+ delete props.inactiveStyle;
101
+ }
102
+
103
+ isValidHtmlAttribute(attr) {
104
+ if (attr === "url" || attr === "match") return false;
105
+ return super.isValidHtmlAttribute(attr);
106
+ }
107
+
108
+ handleClick(e, instance) {
109
+ let { data } = instance;
110
+
111
+ if (data.disabled) {
112
+ e.preventDefault();
113
+ return;
114
+ }
115
+
116
+ if (this.onClick && instance.invoke("onClick", e, instance) === false) return;
117
+
118
+ if (data.href && Url.isLocal(data.href) && !e.ctrlKey && !e.shiftKey && !e.metaKey) {
119
+ e.preventDefault();
120
+ History.pushState({}, null, data.href);
121
+ }
122
+ }
123
+ }
124
+
125
+ LinkButton.prototype.match = "equal";
126
+ LinkButton.prototype.tag = "a";
127
+
128
+ Widget.alias("link-button", LinkButton);
@@ -1,74 +1,74 @@
1
- @mixin cx-menu($name: "menu", $state-style-map: $cx-menu-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
- $mod: map-get($besm, mod);
6
-
7
- .#{$block}#{$name} {
8
- box-sizing: border-box;
9
- margin: 0;
10
- padding: 0;
11
- list-style: none;
12
-
13
- @include cx-add-state-rules($state-style-map, default);
14
-
15
- &.#{$state}horizontal {
16
- white-space: nowrap;
17
-
18
- & > .#{$element}#{$name}-item {
19
- display: inline-block;
20
- user-select: none;
21
-
22
- @each $size, $value in $cx-menu-padding-options {
23
- &.#{$state}size-#{$size} > .#{$mod}#{$name} {
24
- margin: 0 cx-right($value) 0 cx-left($value);
25
- }
26
- }
27
- }
28
- }
29
-
30
- @each $size, $value in $cx-menu-padding-options {
31
- &.#{$state}vertical.#{$state}#{$size}-item-padding .#{$mod}#{$name} {
32
- margin: $value;
33
- display: block;
34
- }
35
- }
36
-
37
- .#{$element}#{$name}-item {
38
- & > hr {
39
- border: none;
40
- border-top: 1px solid $cx-default-menu-separator-color;
41
- margin: map-get($cx-menu-padding-options, medium);
42
- }
43
-
44
- &.#{$state}hidden {
45
- visibility: hidden;
46
- position: absolute;
47
- }
48
- }
49
-
50
- &.#{$state}overflow {
51
- overflow: hidden;
52
- display: flex;
53
-
54
- & > .#{$element}#{$name}-item:last-child {
55
- visibility: hidden;
56
- position: absolute;
57
- max-height: 100%;
58
- }
59
-
60
- &.#{$state}pack > .#{$element}#{$name}-item:last-child {
61
- visibility: visible;
62
- position: relative;
63
- }
64
- }
65
- }
66
-
67
- .#{$element}#{$name}-spacer {
68
- flex: 1 1 0%;
69
- }
70
- }
71
-
72
- @if (cx-should-include("cx/widgets/Menu")) {
73
- @include cx-menu();
74
- }
1
+ @mixin cx-menu($name: "menu", $state-style-map: $cx-menu-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
+ $mod: map-get($besm, mod);
6
+
7
+ .#{$block}#{$name} {
8
+ box-sizing: border-box;
9
+ margin: 0;
10
+ padding: 0;
11
+ list-style: none;
12
+
13
+ @include cx-add-state-rules($state-style-map, default);
14
+
15
+ &.#{$state}horizontal {
16
+ white-space: nowrap;
17
+
18
+ & > .#{$element}#{$name}-item {
19
+ display: inline-block;
20
+ user-select: none;
21
+
22
+ @each $size, $value in $cx-menu-padding-options {
23
+ &.#{$state}size-#{$size} > .#{$mod}#{$name} {
24
+ margin: 0 cx-right($value) 0 cx-left($value);
25
+ }
26
+ }
27
+ }
28
+ }
29
+
30
+ @each $size, $value in $cx-menu-padding-options {
31
+ &.#{$state}vertical.#{$state}#{$size}-item-padding .#{$mod}#{$name} {
32
+ margin: $value;
33
+ display: block;
34
+ }
35
+ }
36
+
37
+ .#{$element}#{$name}-item {
38
+ & > hr {
39
+ border: none;
40
+ border-top: 1px solid $cx-default-menu-separator-color;
41
+ margin: map-get($cx-menu-padding-options, medium);
42
+ }
43
+
44
+ &.#{$state}hidden {
45
+ visibility: hidden;
46
+ position: absolute;
47
+ }
48
+ }
49
+
50
+ &.#{$state}overflow {
51
+ overflow: hidden;
52
+ display: flex;
53
+
54
+ & > .#{$element}#{$name}-item:last-child {
55
+ visibility: hidden;
56
+ position: absolute;
57
+ max-height: 100%;
58
+ }
59
+
60
+ &.#{$state}pack > .#{$element}#{$name}-item:last-child {
61
+ visibility: visible;
62
+ position: relative;
63
+ }
64
+ }
65
+ }
66
+
67
+ .#{$element}#{$name}-spacer {
68
+ flex: 1 1 0%;
69
+ }
70
+ }
71
+
72
+ @if (cx-should-include("cx/widgets/Menu")) {
73
+ @include cx-menu();
74
+ }