cx 26.2.1 → 26.2.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.
- package/build/charts/Chart.d.ts.map +1 -1
- package/build/charts/Chart.js +5 -4
- package/build/charts/ColumnBarBase.d.ts +3 -3
- package/build/charts/ColumnBarBase.d.ts.map +1 -1
- package/build/charts/ColumnBarBase.js +1 -1
- package/build/charts/Legend.d.ts.map +1 -1
- package/build/charts/Legend.js +11 -4
- package/build/charts/Marker.d.ts +3 -3
- package/build/charts/Marker.d.ts.map +1 -1
- package/build/charts/MarkerLine.d.ts +7 -7
- package/build/charts/MarkerLine.d.ts.map +1 -1
- package/build/charts/MarkerLine.js +14 -10
- package/build/charts/PieChart.d.ts +4 -4
- package/build/charts/PieChart.d.ts.map +1 -1
- package/build/charts/PieChart.js +36 -14
- package/build/charts/PieLabel.d.ts.map +1 -1
- package/build/charts/PieLabel.js +2 -1
- package/build/charts/RangeMarker.d.ts +3 -3
- package/build/charts/RangeMarker.d.ts.map +1 -1
- package/build/charts/RangeMarker.js +1 -1
- package/build/charts/axis/TimeAxis.d.ts +3 -3
- package/build/charts/axis/TimeAxis.d.ts.map +1 -1
- package/build/charts/axis/TimeAxis.js +70 -21
- package/build/charts/helpers/ValueAtFinder.d.ts +1 -1
- package/build/charts/helpers/ValueAtFinder.d.ts.map +1 -1
- package/build/charts/helpers/ValueAtFinder.js +5 -2
- package/build/data/StructuredSelector.js +3 -4
- package/build/data/createAccessorModelProxy.d.ts +6 -11
- package/build/data/createAccessorModelProxy.d.ts.map +1 -1
- package/build/data/createAccessorModelProxy.js +1 -3
- package/build/svg/Ellipse.d.ts +5 -4
- package/build/svg/Ellipse.d.ts.map +1 -1
- package/build/svg/Ellipse.js +9 -6
- package/build/svg/Line.d.ts +1 -0
- package/build/svg/Line.d.ts.map +1 -1
- package/build/svg/Line.js +4 -1
- package/build/svg/Text.d.ts +12 -6
- package/build/svg/Text.d.ts.map +1 -1
- package/build/svg/Text.js +12 -4
- package/build/ui/Controller.d.ts +2 -0
- package/build/ui/Controller.d.ts.map +1 -1
- package/build/ui/Controller.js +3 -0
- package/build/ui/HoverSync.d.ts.map +1 -1
- package/build/ui/HoverSync.js +7 -2
- package/build/ui/Prop.d.ts +1 -1
- package/build/ui/Prop.d.ts.map +1 -1
- package/build/ui/Text.d.ts +3 -3
- package/build/ui/Text.d.ts.map +1 -1
- package/build/ui/Text.js +5 -5
- package/build/ui/adapter/GroupAdapter.d.ts.map +1 -1
- package/build/ui/adapter/GroupAdapter.js +20 -10
- package/build/ui/app/History.js +1 -1
- package/build/widgets/List.d.ts.map +1 -1
- package/build/widgets/List.js +6 -7
- package/build/widgets/drag-drop/DropZone.d.ts +3 -3
- package/build/widgets/drag-drop/DropZone.d.ts.map +1 -1
- package/build/widgets/form/Calendar.d.ts.map +1 -1
- package/build/widgets/form/Calendar.js +30 -11
- package/build/widgets/form/ColorField.d.ts.map +1 -1
- package/build/widgets/form/ColorField.js +16 -7
- package/build/widgets/form/DateTimeField.d.ts.map +1 -1
- package/build/widgets/form/DateTimeField.js +23 -10
- package/build/widgets/form/Field.d.ts +2 -0
- package/build/widgets/form/Field.d.ts.map +1 -1
- package/build/widgets/form/Field.js +11 -5
- package/build/widgets/form/LookupField.d.ts +1 -1
- package/build/widgets/form/LookupField.d.ts.map +1 -1
- package/build/widgets/form/LookupField.js +6 -6
- package/build/widgets/form/MonthField.d.ts.map +1 -1
- package/build/widgets/form/MonthField.js +15 -7
- package/build/widgets/form/MonthPicker.d.ts +1 -2
- package/build/widgets/form/MonthPicker.d.ts.map +1 -1
- package/build/widgets/form/MonthPicker.js +84 -41
- package/build/widgets/form/NumberField.d.ts +2 -0
- package/build/widgets/form/NumberField.d.ts.map +1 -1
- package/build/widgets/form/NumberField.js +45 -15
- package/build/widgets/form/TextField.d.ts +1 -9
- package/build/widgets/form/TextField.d.ts.map +1 -1
- package/build/widgets/form/TextField.js +1 -1
- package/build/widgets/grid/Grid.d.ts +2 -2
- package/build/widgets/grid/Grid.d.ts.map +1 -1
- package/build/widgets/grid/Grid.js +9 -4
- package/build/widgets/grid/Pagination.d.ts.map +1 -1
- package/build/widgets/grid/Pagination.js +4 -4
- package/build/widgets/grid/TreeNode.d.ts.map +1 -1
- package/build/widgets/grid/TreeNode.js +10 -2
- package/build/widgets/icons/folder.d.ts.map +1 -1
- package/build/widgets/icons/folder.js +1 -0
- package/build/widgets/icons/forward.d.ts.map +1 -1
- package/build/widgets/icons/forward.js +4 -3
- package/build/widgets/icons/loading.d.ts.map +1 -1
- package/build/widgets/icons/loading.js +6 -5
- package/build/widgets/icons/square.d.ts.map +1 -1
- package/build/widgets/icons/square.js +3 -3
- package/build/widgets/index.d.ts +3 -1
- package/build/widgets/index.d.ts.map +1 -1
- package/build/widgets/index.js +3 -1
- package/build/widgets/overlay/ContextMenu.d.ts.map +1 -1
- package/build/widgets/overlay/ContextMenu.js +2 -0
- package/build/widgets/overlay/Dropdown.d.ts +2 -1
- package/build/widgets/overlay/Dropdown.d.ts.map +1 -1
- package/build/widgets/overlay/Dropdown.js +75 -20
- package/build/widgets/overlay/MsgBox.d.ts +1 -0
- package/build/widgets/overlay/MsgBox.d.ts.map +1 -1
- package/build/widgets/overlay/MsgBox.js +2 -2
- package/build/widgets/overlay/Overlay.d.ts +32 -2
- package/build/widgets/overlay/Overlay.d.ts.map +1 -1
- package/build/widgets/overlay/Overlay.js +47 -16
- package/build/widgets/overlay/Toast.d.ts +1 -1
- package/build/widgets/overlay/Toast.d.ts.map +1 -1
- package/build/widgets/overlay/Toast.js +4 -1
- package/build/widgets/overlay/Tooltip.d.ts +6 -0
- package/build/widgets/overlay/Tooltip.d.ts.map +1 -1
- package/build/widgets/overlay/Tooltip.js +24 -9
- package/build/widgets/overlay/Window.d.ts.map +1 -1
- package/build/widgets/overlay/Window.js +24 -9
- package/dist/charts.css +325 -272
- package/dist/charts.js +11 -5
- package/dist/data.js +2 -2
- package/dist/manifest.js +892 -880
- package/dist/svg.css +14 -8
- package/dist/svg.js +9 -1
- package/dist/ui.js +29 -16
- package/dist/widgets.css +997 -294
- package/dist/widgets.js +317 -121
- package/package.json +1 -1
- package/src/charts/Bar.scss +13 -10
- package/src/charts/BarGraph.scss +31 -29
- package/src/charts/BubbleGraph.scss +11 -8
- package/src/charts/Chart.ts +5 -3
- package/src/charts/Column.scss +13 -10
- package/src/charts/ColumnBarBase.tsx +255 -230
- package/src/charts/ColumnGraph.scss +13 -11
- package/src/charts/Gridlines.scss +10 -8
- package/src/charts/Legend.scss +57 -50
- package/src/charts/Legend.tsx +257 -213
- package/src/charts/LegendEntry.scss +35 -29
- package/src/charts/LineGraph.scss +28 -25
- package/src/charts/Marker.scss +12 -10
- package/src/charts/Marker.tsx +3 -2
- package/src/charts/MarkerLine.scss +11 -8
- package/src/charts/MarkerLine.tsx +196 -177
- package/src/charts/PieChart.scss +12 -9
- package/src/charts/PieChart.tsx +717 -591
- package/src/charts/PieLabel.tsx +99 -81
- package/src/charts/Range.scss +11 -8
- package/src/charts/RangeMarker.tsx +204 -187
- package/src/charts/ScatterGraph.scss +12 -9
- package/src/charts/axis/Axis.scss +6 -5
- package/src/charts/axis/CategoryAxis.scss +10 -8
- package/src/charts/axis/NumericAxis.scss +9 -6
- package/src/charts/axis/TimeAxis.scss +9 -6
- package/src/charts/axis/TimeAxis.tsx +753 -637
- package/src/charts/axis/index.scss +4 -5
- package/src/charts/axis/variables.scss +4 -2
- package/src/charts/helpers/ValueAtFinder.ts +19 -5
- package/src/charts/index.scss +16 -19
- package/src/charts/maps.scss +0 -0
- package/src/charts/palette.scss +11 -31
- package/src/charts/palette.variables.scss +23 -0
- package/src/charts/variables.scss +35 -3
- package/src/data/StructuredSelector.ts +2 -2
- package/src/data/createAccessorModelProxy.ts +66 -74
- package/src/index.scss +5 -6
- package/src/maps.scss +5 -0
- package/src/svg/Ellipse.tsx +62 -55
- package/src/svg/Line.tsx +57 -42
- package/src/svg/Svg.scss +6 -6
- package/src/svg/Text.scss +19 -0
- package/src/svg/Text.tsx +172 -116
- package/src/svg/index.scss +3 -2
- package/src/svg/maps.scss +0 -0
- package/src/svg/variables.scss +0 -0
- package/src/ui/Container.spec.ts +59 -0
- package/src/ui/Controller.spec.tsx +30 -0
- package/src/ui/Controller.ts +5 -0
- package/src/ui/HoverSync.tsx +179 -147
- package/src/ui/Prop.ts +1 -1
- package/src/ui/Text.ts +12 -9
- package/src/ui/adapter/GroupAdapter.spec.ts +42 -0
- package/src/ui/adapter/GroupAdapter.ts +25 -14
- package/src/ui/app/History.ts +1 -1
- package/src/ui/index.scss +1 -1
- package/src/ui/layout/LabelsLeftLayout.scss +5 -7
- package/src/ui/layout/LabelsTopLayout.scss +4 -6
- package/src/ui/layout/index.scss +2 -3
- package/src/ui/maps.scss +0 -0
- package/src/ui/variables.scss +1 -2
- package/src/util/index.scss +4 -2
- package/src/util/maps.scss +1 -0
- package/src/util/scss/besm.scss +15 -0
- package/src/util/scss/calc.scss +103 -11
- package/src/util/scss/defaults.scss +24 -0
- package/src/util/scss/elements.scss +78 -0
- package/src/util/scss/global.scss +15 -0
- package/src/util/scss/include.scss +17 -9
- package/src/util/scss/index.scss +1 -9
- package/src/util/scss/maps.scss +2 -0
- package/src/util/scss/pad-size.scss +9 -0
- package/src/util/scss/padding.scss +6 -0
- package/src/util/scss/screen-size.scss +5 -0
- package/src/util/scss/variables.scss +6 -0
- package/src/util/variables.scss +1 -0
- package/src/variables.scss +5 -217
- package/src/widgets/Button.maps.scss +103 -0
- package/src/widgets/Button.scss +33 -9
- package/src/widgets/Button.variables.scss +8 -104
- package/src/widgets/CxCredit.scss +2 -0
- package/src/widgets/FlexBox.scss +16 -11
- package/src/widgets/Heading.scss +6 -0
- package/src/widgets/HighlightedSearchText.scss +8 -1
- package/src/widgets/Icon.scss +6 -0
- package/src/widgets/List.scss +7 -0
- package/src/widgets/List.tsx +6 -7
- package/src/widgets/ProgressBar.scss +9 -0
- package/src/widgets/Resizer.scss +9 -7
- package/src/widgets/Section.scss +53 -56
- package/src/widgets/animations.scss +4 -2
- package/src/widgets/box.scss +47 -0
- package/src/widgets/drag-drop/DragClone.scss +12 -4
- package/src/widgets/drag-drop/DragHandle.scss +12 -6
- package/src/widgets/drag-drop/DragSource.scss +12 -6
- package/src/widgets/drag-drop/DropZone.scss +9 -0
- package/src/widgets/drag-drop/DropZone.tsx +3 -3
- package/src/widgets/drag-drop/index.scss +4 -4
- package/src/widgets/drag-drop/maps.scss +7 -0
- package/src/widgets/drag-drop/variables.scss +8 -5
- package/src/widgets/form/Calendar.maps.scss +54 -0
- package/src/widgets/form/Calendar.scss +49 -11
- package/src/widgets/form/Calendar.tsx +755 -653
- package/src/widgets/form/Calendar.variables.scss +3 -46
- package/src/widgets/form/Checkbox.maps.scss +34 -0
- package/src/widgets/form/Checkbox.scss +14 -3
- package/src/widgets/form/Checkbox.variables.scss +4 -36
- package/src/widgets/form/ColorField.scss +21 -2
- package/src/widgets/form/ColorField.tsx +485 -431
- package/src/widgets/form/ColorPicker.maps.scss +21 -0
- package/src/widgets/form/ColorPicker.scss +26 -9
- package/src/widgets/form/ColorPicker.variables.scss +3 -16
- package/src/widgets/form/DateTimeField.scss +54 -21
- package/src/widgets/form/DateTimeField.tsx +697 -615
- package/src/widgets/form/DateTimePicker.scss +14 -4
- package/src/widgets/form/Field.maps.scss +122 -0
- package/src/widgets/form/Field.scss +54 -18
- package/src/widgets/form/Field.tsx +611 -504
- package/src/widgets/form/Field.variables.scss +46 -0
- package/src/widgets/form/HelpText.scss +8 -5
- package/src/widgets/form/Label.scss +10 -3
- package/src/widgets/form/LookupField.maps.scss +26 -0
- package/src/widgets/form/LookupField.scss +54 -24
- package/src/widgets/form/LookupField.tsx +25 -21
- package/src/widgets/form/MonthField.scss +48 -26
- package/src/widgets/form/MonthField.tsx +645 -567
- package/src/widgets/form/MonthPicker.maps.scss +50 -0
- package/src/widgets/form/MonthPicker.scss +44 -35
- package/src/widgets/form/MonthPicker.tsx +954 -724
- package/src/widgets/form/MonthPicker.variables.scss +24 -0
- package/src/widgets/form/NumberField.scss +19 -2
- package/src/widgets/form/NumberField.tsx +576 -466
- package/src/widgets/form/Radio.maps.scss +36 -0
- package/src/widgets/form/Radio.scss +12 -2
- package/src/widgets/form/Radio.variables.scss +3 -42
- package/src/widgets/form/Select.scss +25 -9
- package/src/widgets/form/Slider.scss +23 -14
- package/src/widgets/form/Switch.scss +18 -8
- package/src/widgets/form/TextArea.scss +14 -1
- package/src/widgets/form/TextField.scss +24 -3
- package/src/widgets/form/TextField.tsx +9 -21
- package/src/widgets/form/UploadButton.scss +14 -6
- package/src/widgets/form/ValidationError.scss +10 -6
- package/src/widgets/form/Wheel.scss +14 -4
- package/src/widgets/form/index.scss +22 -24
- package/src/widgets/form/maps.scss +81 -0
- package/src/widgets/form/variables.scss +111 -355
- package/src/widgets/grid/Grid.scss +19 -2
- package/src/widgets/grid/Grid.spec.ts +42 -0
- package/src/widgets/grid/Grid.tsx +15 -7
- package/src/widgets/grid/Pagination.scss +11 -2
- package/src/widgets/grid/Pagination.tsx +110 -102
- package/src/widgets/grid/TreeNode.scss +25 -8
- package/src/widgets/grid/TreeNode.tsx +127 -116
- package/src/widgets/grid/index.scss +3 -4
- package/src/widgets/grid/maps.scss +110 -0
- package/src/widgets/grid/variables.scss +48 -137
- package/src/widgets/icons/folder.tsx +1 -2
- package/src/widgets/icons/forward.tsx +23 -20
- package/src/widgets/icons/loading.tsx +22 -19
- package/src/widgets/icons/square.tsx +20 -17
- package/src/widgets/index.scss +16 -16
- package/src/widgets/index.ts +63 -58
- package/src/widgets/lists.scss +42 -0
- package/src/widgets/maps.scss +139 -0
- package/src/widgets/nav/Link.scss +14 -1
- package/src/widgets/nav/Menu.scss +13 -7
- package/src/widgets/nav/Menu.variables.scss +1 -12
- package/src/widgets/nav/MenuItem.scss +21 -6
- package/src/widgets/nav/Scroller.scss +11 -2
- package/src/widgets/nav/Tab.maps.scss +78 -0
- package/src/widgets/nav/Tab.scss +12 -6
- package/src/widgets/nav/Tab.variables.scss +7 -76
- package/src/widgets/nav/cover.scss +6 -4
- package/src/widgets/nav/index.scss +6 -6
- package/src/widgets/nav/maps.scss +32 -0
- package/src/widgets/nav/variables.scss +4 -11
- package/src/widgets/overlay/ContextMenu.ts +3 -0
- package/src/widgets/overlay/Dropdown.scss +47 -16
- package/src/widgets/overlay/Dropdown.tsx +851 -676
- package/src/widgets/overlay/MsgBox.tsx +125 -111
- package/src/widgets/overlay/Overlay.scss +60 -40
- package/src/widgets/overlay/Overlay.tsx +948 -800
- package/src/widgets/overlay/Toast.scss +42 -34
- package/src/widgets/overlay/Toast.ts +11 -1
- package/src/widgets/overlay/Tooltip.scss +27 -96
- package/src/widgets/overlay/Tooltip.tsx +376 -309
- package/src/widgets/overlay/Window.maps.scss +51 -0
- package/src/widgets/overlay/Window.scss +17 -17
- package/src/widgets/overlay/Window.tsx +291 -236
- package/src/widgets/overlay/Window.variables.scss +2 -43
- package/src/widgets/overlay/index.d.ts +11 -11
- package/src/widgets/overlay/index.scss +6 -15
- package/src/widgets/overlay/maps.scss +44 -0
- package/src/widgets/overlay/variables.scss +11 -42
- package/src/widgets/variables.scss +33 -117
- package/src/global.scss +0 -14
|
@@ -237,8 +237,8 @@ export interface GridColumnConfig {
|
|
|
237
237
|
editable?: boolean;
|
|
238
238
|
editor?: React.ReactNode;
|
|
239
239
|
footer?: GridColumnFooterConfig | StringProp | NumberProp | false;
|
|
240
|
-
items?:
|
|
241
|
-
children?:
|
|
240
|
+
items?: ChildNode | ChildNode[];
|
|
241
|
+
children?: ChildNode | ChildNode[];
|
|
242
242
|
key?: string;
|
|
243
243
|
pad?: boolean;
|
|
244
244
|
sortField?: string;
|
|
@@ -521,7 +521,10 @@ export interface GridConfig<T = any> extends StyledContainerConfig {
|
|
|
521
521
|
focusable?: boolean;
|
|
522
522
|
|
|
523
523
|
/** Callback function to retrieve grouping data. */
|
|
524
|
-
onGetGrouping?: (
|
|
524
|
+
onGetGrouping?: (
|
|
525
|
+
params: any,
|
|
526
|
+
instance: Instance,
|
|
527
|
+
) => (string | GridGroupingConfig<T>)[];
|
|
525
528
|
|
|
526
529
|
/** Callback function to dynamically calculate columns. */
|
|
527
530
|
onGetColumns?: (
|
|
@@ -788,7 +791,8 @@ export class Grid<T = unknown> extends ContainerBase<
|
|
|
788
791
|
instance: GridInstance,
|
|
789
792
|
groupingData: any,
|
|
790
793
|
) {
|
|
791
|
-
|
|
794
|
+
// Clone row to avoid mutating the original config
|
|
795
|
+
var row = { ...this.row };
|
|
792
796
|
let columns = this.columns;
|
|
793
797
|
if (this.onGetColumns) {
|
|
794
798
|
let result = instance.invoke("onGetColumns", columnParams, instance);
|
|
@@ -812,9 +816,13 @@ export class Grid<T = unknown> extends ContainerBase<
|
|
|
812
816
|
for (let i = 0; i < 10; i++) {
|
|
813
817
|
let l = row["line" + i];
|
|
814
818
|
if (l) {
|
|
815
|
-
if (isArray(l.columns))
|
|
816
|
-
|
|
817
|
-
|
|
819
|
+
if (isArray(l.columns)) {
|
|
820
|
+
// Clone columns to avoid mutating the original config
|
|
821
|
+
l.columns = l.columns.map((col: any, c: number) => ({
|
|
822
|
+
...col,
|
|
823
|
+
uniqueColumnId: `l${i}-${col.key || c}`,
|
|
824
|
+
}));
|
|
825
|
+
}
|
|
818
826
|
lines.push(l);
|
|
819
827
|
}
|
|
820
828
|
}
|
|
@@ -1,4 +1,13 @@
|
|
|
1
|
+
@use "sass:math";
|
|
1
2
|
@use "sass:map";
|
|
3
|
+
@use "../variables" as *;
|
|
4
|
+
@use "../maps" as *;
|
|
5
|
+
@use "../../util/scss/add-rules.scss" as *;
|
|
6
|
+
@use "../../util/scss/clockwise.scss" as *;
|
|
7
|
+
@use "../../util/scss/deep-merge.scss" as *;
|
|
8
|
+
@use "../../util/scss/calc.scss" as *;
|
|
9
|
+
@use "../../util/scss/besm.scss" as *;
|
|
10
|
+
@use "../../util/scss/include.scss" as *;
|
|
2
11
|
|
|
3
12
|
@mixin cx-pagination(
|
|
4
13
|
$name: "pagination",
|
|
@@ -100,9 +109,9 @@
|
|
|
100
109
|
line-height: $icon-size;
|
|
101
110
|
position: absolute;
|
|
102
111
|
top: 50%;
|
|
103
|
-
margin-top:
|
|
112
|
+
margin-top: cx-multiply($icon-size, -0.5);
|
|
104
113
|
left: 50%;
|
|
105
|
-
margin-left:
|
|
114
|
+
margin-left: cx-multiply($icon-size, -0.5);
|
|
106
115
|
}
|
|
107
116
|
|
|
108
117
|
.#{$element}#{$name}-icon-prev-page {
|
|
@@ -9,114 +9,122 @@ import { Instance } from "../../ui/Instance";
|
|
|
9
9
|
import { RenderingContext } from "../../ui/RenderingContext";
|
|
10
10
|
|
|
11
11
|
export interface PaginationConfig extends StyledContainerConfig {
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
/** Current page number. */
|
|
13
|
+
page?: NumberProp;
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
/** Total number of pages. */
|
|
16
|
+
pageCount?: NumberProp;
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
/** Number of page buttons to display. */
|
|
19
|
+
length?: NumberProp;
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
export class Pagination extends Widget<PaginationConfig> {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
23
|
+
declare baseClass: string;
|
|
24
|
+
declare length: number;
|
|
25
|
+
|
|
26
|
+
constructor(config?: PaginationConfig) {
|
|
27
|
+
super(config);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
declareData() {
|
|
31
|
+
super.declareData(
|
|
32
|
+
{
|
|
33
|
+
page: undefined,
|
|
34
|
+
length: undefined,
|
|
35
|
+
pageCount: undefined,
|
|
36
|
+
},
|
|
37
|
+
...arguments,
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
render(context: RenderingContext, instance: Instance, key: string) {
|
|
42
|
+
let { data } = instance;
|
|
43
|
+
let { page, pageCount, length } = data;
|
|
44
|
+
let { CSS, baseClass } = this;
|
|
45
|
+
|
|
46
|
+
if (!pageCount) pageCount = 1;
|
|
47
|
+
|
|
48
|
+
let minPage = Math.max(1, page - Math.floor(length / 2));
|
|
49
|
+
let maxPage = minPage + length - 1;
|
|
50
|
+
|
|
51
|
+
if (maxPage > pageCount) {
|
|
52
|
+
maxPage = Math.max(pageCount, length);
|
|
53
|
+
minPage = maxPage - length + 1;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
let nextPageIcon = (
|
|
57
|
+
<ForwardIcon className={CSS.element(baseClass, "icon-next-page")} />
|
|
58
|
+
);
|
|
59
|
+
let prevPageIcon = (
|
|
60
|
+
<ForwardIcon className={CSS.element(baseClass, "icon-prev-page")} />
|
|
61
|
+
);
|
|
62
|
+
|
|
63
|
+
let pageBtns = [];
|
|
64
|
+
|
|
65
|
+
for (let p = minPage - 1; p <= maxPage + 1; p++) {
|
|
66
|
+
pageBtns.push(
|
|
67
|
+
<div
|
|
68
|
+
key={p < minPage ? "-1" : p > maxPage ? "-2" : p}
|
|
69
|
+
className={CSS.element(baseClass, "page", {
|
|
70
|
+
active: page == p,
|
|
71
|
+
disabled:
|
|
72
|
+
(p <= maxPage && p > pageCount) ||
|
|
73
|
+
(p < minPage && page == 1) ||
|
|
74
|
+
(p > maxPage && page + 1 > pageCount),
|
|
75
|
+
})}
|
|
76
|
+
onMouseDown={(e) => {
|
|
77
|
+
e.stopPropagation();
|
|
78
|
+
preventFocusOnTouch(e);
|
|
79
|
+
}}
|
|
80
|
+
onClick={(e) => {
|
|
81
|
+
this.setPage(
|
|
82
|
+
e,
|
|
83
|
+
instance,
|
|
84
|
+
p < minPage ? page - 1 : p > maxPage ? page + 1 : p,
|
|
85
|
+
);
|
|
86
|
+
}}
|
|
87
|
+
>
|
|
88
|
+
{p < minPage ? prevPageIcon : p > maxPage ? nextPageIcon : p}
|
|
89
|
+
</div>,
|
|
38
90
|
);
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
onClick={(e) => {
|
|
77
|
-
this.setPage(e, instance, p < minPage ? page - 1 : p > maxPage ? page + 1 : p);
|
|
78
|
-
}}
|
|
79
|
-
>
|
|
80
|
-
{p < minPage ? prevPageIcon : p > maxPage ? nextPageIcon : p}
|
|
81
|
-
</li>,
|
|
82
|
-
);
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
return (
|
|
86
|
-
<ul
|
|
87
|
-
key={key}
|
|
88
|
-
className={data.classNames}
|
|
89
|
-
style={data.style}
|
|
90
|
-
tabIndex={0}
|
|
91
|
-
onKeyDown={(e) => {
|
|
92
|
-
this.onKeyDown(e, instance);
|
|
93
|
-
}}
|
|
94
|
-
>
|
|
95
|
-
{pageBtns}
|
|
96
|
-
</ul>
|
|
97
|
-
);
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
onKeyDown(e: React.KeyboardEvent, instance: Instance) {
|
|
101
|
-
let { data } = instance;
|
|
102
|
-
switch (e.keyCode) {
|
|
103
|
-
case KeyCode.left:
|
|
104
|
-
this.setPage(e, instance, data.page - 1);
|
|
105
|
-
break;
|
|
106
|
-
|
|
107
|
-
case KeyCode.right:
|
|
108
|
-
this.setPage(e, instance, data.page + 1);
|
|
109
|
-
break;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
setPage(e: React.SyntheticEvent, instance: Instance, page: number) {
|
|
114
|
-
e.preventDefault();
|
|
115
|
-
e.stopPropagation();
|
|
116
|
-
let { data } = instance;
|
|
117
|
-
let { pageCount } = data;
|
|
118
|
-
if (page <= pageCount && page > 0) instance.set("page", page);
|
|
119
|
-
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
return (
|
|
94
|
+
<div
|
|
95
|
+
key={key}
|
|
96
|
+
className={data.classNames}
|
|
97
|
+
style={data.style}
|
|
98
|
+
tabIndex={0}
|
|
99
|
+
onKeyDown={(e) => {
|
|
100
|
+
this.onKeyDown(e, instance);
|
|
101
|
+
}}
|
|
102
|
+
>
|
|
103
|
+
{pageBtns}
|
|
104
|
+
</div>
|
|
105
|
+
);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
onKeyDown(e: React.KeyboardEvent, instance: Instance) {
|
|
109
|
+
let { data } = instance;
|
|
110
|
+
switch (e.keyCode) {
|
|
111
|
+
case KeyCode.left:
|
|
112
|
+
this.setPage(e, instance, data.page - 1);
|
|
113
|
+
break;
|
|
114
|
+
|
|
115
|
+
case KeyCode.right:
|
|
116
|
+
this.setPage(e, instance, data.page + 1);
|
|
117
|
+
break;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
setPage(e: React.SyntheticEvent, instance: Instance, page: number) {
|
|
122
|
+
e.preventDefault();
|
|
123
|
+
e.stopPropagation();
|
|
124
|
+
let { data } = instance;
|
|
125
|
+
let { pageCount } = data;
|
|
126
|
+
if (page <= pageCount && page > 0) instance.set("page", page);
|
|
127
|
+
}
|
|
120
128
|
}
|
|
121
129
|
|
|
122
130
|
Pagination.prototype.baseClass = "pagination";
|
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
@use "sass:math";
|
|
2
|
+
@use "../box.scss" as *;
|
|
3
|
+
@use "../../util/scss/add-rules.scss" as *;
|
|
4
|
+
@use "../../util/scss/clockwise.scss" as *;
|
|
5
|
+
@use "../../util/scss/deep-merge.scss" as *;
|
|
6
|
+
@use "../../util/scss/calc.scss" as *;
|
|
7
|
+
@use "../../util/scss/besm.scss" as *;
|
|
8
|
+
@use "../../util/scss/include.scss" as *;
|
|
9
|
+
@use "../variables.scss" as *;
|
|
10
|
+
@use "../maps.scss" as *;
|
|
1
11
|
@use "sass:map";
|
|
2
12
|
|
|
3
13
|
@mixin cx-treenode(
|
|
@@ -13,11 +23,15 @@
|
|
|
13
23
|
$mod: map.get($besm, mod);
|
|
14
24
|
|
|
15
25
|
.#{$block}#{$name} {
|
|
16
|
-
padding-left: $handle-size
|
|
26
|
+
padding-left: cx-calc($handle-size, cx-multiply($icon-size, 0.25));
|
|
17
27
|
position: relative;
|
|
18
28
|
|
|
19
29
|
&.#{$state}icon {
|
|
20
|
-
padding-left:
|
|
30
|
+
padding-left: cx-calc(
|
|
31
|
+
$handle-size,
|
|
32
|
+
$icon-size,
|
|
33
|
+
cx-multiply($icon-size, 0.25)
|
|
34
|
+
);
|
|
21
35
|
}
|
|
22
36
|
|
|
23
37
|
@for $i from 1 through 20 {
|
|
@@ -34,9 +48,9 @@
|
|
|
34
48
|
|
|
35
49
|
left: 0;
|
|
36
50
|
top: 50%;
|
|
37
|
-
margin-top:
|
|
51
|
+
margin-top: cx-multiply($handle-size, -0.5);
|
|
38
52
|
bottom: 0;
|
|
39
|
-
width: $handle-size
|
|
53
|
+
width: cx-calc($handle-size, $icon-size);
|
|
40
54
|
height: $handle-size;
|
|
41
55
|
|
|
42
56
|
&:hover {
|
|
@@ -53,8 +67,11 @@
|
|
|
53
67
|
position: absolute;
|
|
54
68
|
left: 0;
|
|
55
69
|
top: 50%;
|
|
56
|
-
margin-top:
|
|
57
|
-
margin-left: (
|
|
70
|
+
margin-top: cx-multiply($icon-size, -0.5);
|
|
71
|
+
margin-left: cx-multiply(
|
|
72
|
+
cx-calc($handle-size, cx-multiply($icon-size, -1)),
|
|
73
|
+
0.5
|
|
74
|
+
);
|
|
58
75
|
height: $icon-size;
|
|
59
76
|
width: $icon-size;
|
|
60
77
|
line-height: $icon-size;
|
|
@@ -71,8 +88,8 @@
|
|
|
71
88
|
position: absolute;
|
|
72
89
|
left: 0;
|
|
73
90
|
top: 50%;
|
|
74
|
-
margin-top:
|
|
75
|
-
margin-left: ($handle-size
|
|
91
|
+
margin-top: cx-multiply($icon-size, -0.5);
|
|
92
|
+
margin-left: cx-multiply(cx-calc($handle-size, $icon-size), 0.5);
|
|
76
93
|
height: $icon-size;
|
|
77
94
|
width: $icon-size;
|
|
78
95
|
line-height: $icon-size;
|
|
@@ -8,138 +8,149 @@ import { Instance } from "../../ui/Instance";
|
|
|
8
8
|
import { RenderingContext } from "../../ui/RenderingContext";
|
|
9
9
|
|
|
10
10
|
export interface TreeNodeConfig extends StyledContainerConfig {
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
/** Indentation level of the node. */
|
|
12
|
+
level?: NumberProp;
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
/** Set to `true` if the node is expanded. */
|
|
15
|
+
expanded?: BooleanProp;
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
/** Set to `true` if the node is a leaf (has no children). */
|
|
18
|
+
leaf?: BooleanProp;
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
/** Text to be displayed. */
|
|
21
|
+
text?: StringProp;
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
/** Set to `true` if the node is loading. */
|
|
24
|
+
loading?: BooleanProp;
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
/** Icon to be displayed. */
|
|
27
|
+
icon?: StringProp;
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
/** Icon for items (sets leafIcon). */
|
|
30
|
+
itemIcon?: StringProp;
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
/** Icon for leaf nodes. */
|
|
33
|
+
leafIcon?: StringProp;
|
|
34
34
|
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
/** Icon displayed when the node is loading. */
|
|
36
|
+
loadingIcon?: string;
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
/** Icon for open folder. */
|
|
39
|
+
openFolderIcon?: StringProp;
|
|
40
40
|
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
/** Icon for folder. */
|
|
42
|
+
folderIcon?: StringProp;
|
|
43
43
|
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
/** Set to `true` to hide the icon. */
|
|
45
|
+
hideIcon?: boolean;
|
|
46
46
|
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
/** Set to `true` to hide the arrow. */
|
|
48
|
+
hideArrow?: BooleanProp;
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
export class TreeNode extends ContainerBase<TreeNodeConfig> {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
}
|
|
52
|
+
declare baseClass: string;
|
|
53
|
+
declare itemIcon: string;
|
|
54
|
+
declare leafIcon: string;
|
|
55
|
+
declare loadingIcon: string;
|
|
56
|
+
declare folderIcon: string;
|
|
57
|
+
declare openFolderIcon: string;
|
|
58
|
+
declare arrowIcon: string;
|
|
59
|
+
declare hideIcon: boolean;
|
|
60
|
+
|
|
61
|
+
constructor(config?: TreeNodeConfig) {
|
|
62
|
+
super(config);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
init() {
|
|
66
|
+
if (this.itemIcon) this.leafIcon = this.itemIcon;
|
|
67
|
+
super.init();
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
declareData() {
|
|
71
|
+
super.declareData(
|
|
72
|
+
{
|
|
73
|
+
level: undefined,
|
|
74
|
+
expanded: undefined,
|
|
75
|
+
leaf: undefined,
|
|
76
|
+
text: undefined,
|
|
77
|
+
loading: undefined,
|
|
78
|
+
icon: undefined,
|
|
79
|
+
leafIcon: undefined,
|
|
80
|
+
openFolderIcon: undefined,
|
|
81
|
+
folderIcon: undefined,
|
|
82
|
+
hideArrow: undefined,
|
|
83
|
+
},
|
|
84
|
+
...arguments,
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
prepareData(context: RenderingContext, instance: Instance) {
|
|
89
|
+
let { data } = instance;
|
|
90
|
+
data.stateMods = {
|
|
91
|
+
expanded: data.expanded,
|
|
92
|
+
loading: data.loading,
|
|
93
|
+
leaf: data.leaf,
|
|
94
|
+
folder: !data.leaf,
|
|
95
|
+
icon: !this.hideIcon,
|
|
96
|
+
};
|
|
97
|
+
data.stateMods[`level-${data.level}`] = true;
|
|
98
|
+
super.prepareData(context, instance);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
render(context: RenderingContext, instance: Instance, key: string) {
|
|
102
|
+
let { data } = instance;
|
|
103
|
+
let { CSS, baseClass } = this;
|
|
104
|
+
|
|
105
|
+
let icon = data.icon;
|
|
106
|
+
|
|
107
|
+
if (!data.icon) {
|
|
108
|
+
if (data.leaf) icon = data.leafIcon;
|
|
109
|
+
else {
|
|
110
|
+
if (data.loading) icon = this.loadingIcon;
|
|
111
|
+
else if (data.expanded) icon = data.openFolderIcon || data.folderIcon;
|
|
112
|
+
else icon = data.folderIcon;
|
|
114
113
|
}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
let arrowIcon = this.arrowIcon;
|
|
117
|
+
if (this.hideIcon && data.loading) arrowIcon = this.loadingIcon;
|
|
118
|
+
|
|
119
|
+
return (
|
|
120
|
+
<div key={key} className={data.classNames} style={data.style}>
|
|
121
|
+
<div
|
|
122
|
+
className={CSS.element(baseClass, "handle")}
|
|
123
|
+
onClick={(e) => this.toggle(e, instance)}
|
|
124
|
+
onMouseDown={
|
|
125
|
+
!this.hideIcon && !data.leaf
|
|
126
|
+
? (e) => {
|
|
127
|
+
e.stopPropagation();
|
|
128
|
+
e.preventDefault();
|
|
129
|
+
}
|
|
130
|
+
: undefined
|
|
131
|
+
}
|
|
132
|
+
>
|
|
133
|
+
{!data.leaf &&
|
|
134
|
+
!data.hideArrow &&
|
|
135
|
+
Icon.render(arrowIcon, {
|
|
136
|
+
className: CSS.element(baseClass, "arrow"),
|
|
137
|
+
})}
|
|
138
|
+
{!this.hideIcon &&
|
|
139
|
+
Icon.render(icon, {
|
|
140
|
+
className: CSS.element(baseClass, "icon"),
|
|
141
|
+
})}
|
|
142
|
+
</div>
|
|
143
|
+
<div>{data.text || this.renderChildren(context, instance)}</div>
|
|
144
|
+
</div>
|
|
145
|
+
);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
toggle(e: React.MouseEvent, instance: Instance) {
|
|
149
|
+
let { data } = instance;
|
|
150
|
+
if (!data.leaf) instance.set("expanded", !data.expanded);
|
|
151
|
+
e.preventDefault();
|
|
152
|
+
e.stopPropagation();
|
|
153
|
+
}
|
|
143
154
|
}
|
|
144
155
|
|
|
145
156
|
TreeNode.prototype.baseClass = "treenode";
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
@
|
|
3
|
-
@
|
|
4
|
-
@import 'Grid';
|
|
1
|
+
@use 'Pagination';
|
|
2
|
+
@use 'TreeNode';
|
|
3
|
+
@use 'Grid';
|