cx 26.1.0 → 26.1.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.
- package/build/ui/Widget.js +0 -5
- package/build/util/Component.js +5 -0
- package/build/util/test/createTestRenderer.d.ts +3 -1
- package/build/util/test/createTestRenderer.js +8 -2
- package/build/widgets/icons/calendar.js +4 -3
- package/build/widgets/icons/check.js +2 -2
- package/build/widgets/icons/clear.js +2 -2
- package/build/widgets/icons/close.js +2 -2
- package/build/widgets/icons/cx.js +2 -2
- package/build/widgets/icons/drop-down.js +2 -2
- package/build/widgets/icons/file.js +2 -2
- package/build/widgets/icons/folder-open.js +2 -2
- package/build/widgets/icons/folder.js +2 -2
- package/build/widgets/icons/forward.js +2 -2
- package/build/widgets/icons/loading.js +2 -2
- package/build/widgets/icons/menu.js +2 -2
- package/build/widgets/icons/pixel-picker.js +2 -2
- package/build/widgets/icons/search.js +2 -2
- package/build/widgets/icons/sort-asc.js +2 -2
- package/build/widgets/icons/square.js +2 -2
- package/dist/manifest.js +896 -896
- package/dist/ui.js +1 -8
- package/dist/util.js +4 -0
- package/dist/widgets.js +377 -313
- package/package.json +3 -1
- package/src/core.d.ts +182 -182
- package/src/data/ArrayElementView.ts +90 -90
- package/src/data/AugmentedViewBase.ts +88 -88
- package/src/data/Binding.ts +104 -104
- package/src/data/ExposedRecordView.ts +95 -95
- package/src/data/ExposedValueView.ts +89 -89
- package/src/data/Grouper.spec.ts +57 -57
- package/src/data/NestedDataView.ts +43 -43
- package/src/data/ReadOnlyDataView.ts +39 -39
- package/src/data/Ref.ts +104 -104
- package/src/data/Store.ts +52 -52
- package/src/data/StoreProxy.ts +19 -19
- package/src/data/StoreRef.ts +66 -66
- package/src/data/StringTemplate.ts +93 -93
- package/src/data/StructuredSelector.spec.ts +113 -113
- package/src/data/SubscribableView.ts +63 -63
- package/src/data/ZoomIntoPropertyView.ts +45 -45
- package/src/data/comparer.ts +78 -78
- package/src/data/ops/updateArray.ts +31 -31
- package/src/hooks/invokeCallback.spec.tsx +4 -4
- package/src/hooks/resolveCallback.spec.tsx +4 -4
- package/src/hooks/store.spec.tsx +15 -15
- package/src/hooks/useTrigger.spec.tsx +16 -10
- package/src/jsx-dev-runtime.ts +4 -4
- package/src/jsx-runtime.ts +79 -79
- package/src/ui/CSS.ts +87 -87
- package/src/ui/ContentResolver.spec.tsx +31 -29
- package/src/ui/Controller.spec.tsx +47 -39
- package/src/ui/Cx.spec.tsx +10 -8
- package/src/ui/DataProxy.spec.tsx +18 -18
- package/src/ui/DataProxy.ts +55 -55
- package/src/ui/FocusManager.ts +171 -171
- package/src/ui/IsolatedScope.spec.tsx +16 -9
- package/src/ui/PureContainer.spec.tsx +20 -18
- package/src/ui/Repeater.spec.tsx +8 -6
- package/src/ui/Rescope.spec.tsx +13 -13
- package/src/ui/Rescope.ts +49 -49
- package/src/ui/Restate.spec.tsx +31 -27
- package/src/ui/VDOM.ts +1 -1
- package/src/ui/Widget.tsx +0 -7
- package/src/ui/adapter/ArrayAdapter.spec.ts +55 -55
- package/src/ui/createFunctionalComponent.spec.tsx +20 -18
- package/src/ui/layout/Content.ts +30 -30
- package/src/ui/layout/ContentPlaceholder.spec.tsx +46 -34
- package/src/ui/layout/FirstVisibleChildLayout.spec.tsx +31 -19
- package/src/ui/selection/PropertySelection.ts +87 -87
- package/src/util/Component.spec.ts +30 -0
- package/src/util/Component.ts +301 -296
- package/src/util/DOM.ts +88 -88
- package/src/util/Format.spec.ts +69 -69
- package/src/util/Format.ts +267 -267
- package/src/util/addEventListenerWithOptions.ts +41 -41
- package/src/util/browserSupportsPassiveEventHandlers.ts +20 -20
- package/src/util/color/rgbToHsl.ts +35 -35
- package/src/util/getActiveElement.ts +4 -4
- package/src/util/innerTextTrim.ts +10 -10
- package/src/util/isDataRecord.ts +5 -5
- package/src/util/test/createTestRenderer.tsx +9 -2
- package/src/widgets/AccessorBindings.spec.tsx +4 -4
- package/src/widgets/HtmlElement.spec.tsx +6 -6
- package/src/widgets/ReactElementWrapper.spec.tsx +37 -37
- package/src/widgets/Sandbox.ts +103 -103
- package/src/widgets/form/ValidationGroup.spec.tsx +12 -12
- package/src/widgets/grid/GridCell.ts +143 -143
- package/src/widgets/icons/calendar.tsx +22 -17
- package/src/widgets/icons/check.tsx +14 -13
- package/src/widgets/icons/clear.tsx +16 -15
- package/src/widgets/icons/close.tsx +20 -20
- package/src/widgets/icons/cx.tsx +39 -38
- package/src/widgets/icons/drop-down.tsx +16 -15
- package/src/widgets/icons/file.tsx +14 -13
- package/src/widgets/icons/folder-open.tsx +16 -15
- package/src/widgets/icons/folder.tsx +14 -13
- package/src/widgets/icons/forward.tsx +23 -22
- package/src/widgets/icons/loading.tsx +25 -24
- package/src/widgets/icons/menu.tsx +18 -17
- package/src/widgets/icons/pixel-picker.tsx +18 -18
- package/src/widgets/icons/search.tsx +14 -13
- package/src/widgets/icons/sort-asc.tsx +15 -14
- package/src/widgets/icons/square.tsx +19 -18
- package/src/widgets/nav/Route.spec.tsx +2 -2
- package/src/widgets/nav/Route.ts +142 -142
- package/src/widgets/overlay/Dropdown.tsx +762 -762
- package/src/widgets/overlay/MsgBox.tsx +141 -141
- package/src/widgets/overlay/Toast.ts +111 -111
- package/src/widgets/overlay/Window.tsx +299 -299
- package/src/widgets/overlay/alerts.ts +46 -46
- package/src/widgets/overlay/index.ts +11 -11
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cx",
|
|
3
|
-
"version": "26.1.
|
|
3
|
+
"version": "26.1.1",
|
|
4
4
|
"description": "Advanced JavaScript UI framework for admin and dashboard applications with ready to use grid, form and chart components.",
|
|
5
5
|
"exports": {
|
|
6
6
|
"./data": {
|
|
@@ -74,6 +74,7 @@
|
|
|
74
74
|
},
|
|
75
75
|
"peerDependencies": {
|
|
76
76
|
"@types/react": ">=18",
|
|
77
|
+
"@types/react-dom": ">=18",
|
|
77
78
|
"cx-react": ">=26",
|
|
78
79
|
"react": ">=18",
|
|
79
80
|
"react-dom": ">=18"
|
|
@@ -88,6 +89,7 @@
|
|
|
88
89
|
"@types/node": "^25.0.3",
|
|
89
90
|
"@types/react-dom": "^19.2.3",
|
|
90
91
|
"@types/react-test-renderer": "^19.1.0",
|
|
92
|
+
"mocha": "^11.7.5",
|
|
91
93
|
"react-test-renderer": "^19.2.3",
|
|
92
94
|
"ts-mocha": "^11.1.0",
|
|
93
95
|
"ts-node": "^10.9.2",
|
package/src/core.d.ts
CHANGED
|
@@ -1,182 +1,182 @@
|
|
|
1
|
-
export = Cx;
|
|
2
|
-
export as namespace Cx;
|
|
3
|
-
|
|
4
|
-
import * as React from "react";
|
|
5
|
-
import { Instance } from "./ui/Instance";
|
|
6
|
-
import { RenderingContext } from "./ui/RenderingContext";
|
|
7
|
-
import { AccessorChain as AccessorChainType } from "./data/createAccessorModelProxy";
|
|
8
|
-
import { Selector as SelectorType } from "./data/Selector";
|
|
9
|
-
import type {
|
|
10
|
-
Bind as BindType,
|
|
11
|
-
Tpl as TplType,
|
|
12
|
-
Expr as ExprType,
|
|
13
|
-
Binding as BindingType,
|
|
14
|
-
GetSet as GetSetType,
|
|
15
|
-
Prop as PropType,
|
|
16
|
-
StructuredSelector as StructuredSelectorType,
|
|
17
|
-
DataRecord,
|
|
18
|
-
Config as ConfigType,
|
|
19
|
-
StructuredProp as StructuredPropType,
|
|
20
|
-
StringProp as StringPropType,
|
|
21
|
-
StyleProp as StylePropType,
|
|
22
|
-
NumberProp as NumberPropType,
|
|
23
|
-
BooleanProp as BooleanPropType,
|
|
24
|
-
ClassProp as ClassPropType,
|
|
25
|
-
RecordsProp as RecordsPropType,
|
|
26
|
-
SortersProp as SortersPropType,
|
|
27
|
-
UnknownProp as UnknownPropType,
|
|
28
|
-
RecordAlias as RecordAliasType,
|
|
29
|
-
SortDirection as SortDirectionType,
|
|
30
|
-
Sorter as SorterType,
|
|
31
|
-
CollatorOptions as CollatorOptionsType,
|
|
32
|
-
} from "./ui/Prop";
|
|
33
|
-
|
|
34
|
-
/** @deprecated */
|
|
35
|
-
declare namespace Cx {
|
|
36
|
-
// Re-export AccessorChain type from createAccessorModelProxy
|
|
37
|
-
type AccessorChain<M> = AccessorChainType<M>;
|
|
38
|
-
|
|
39
|
-
// Re-export Selector type from data/Selector
|
|
40
|
-
type Selector<T> = SelectorType<T>;
|
|
41
|
-
|
|
42
|
-
// Re-export binding types from Prop.ts
|
|
43
|
-
type Bind = BindType;
|
|
44
|
-
type Tpl = TplType;
|
|
45
|
-
type Expr = ExprType;
|
|
46
|
-
type Binding = BindingType;
|
|
47
|
-
type GetSet<T> = GetSetType<T>;
|
|
48
|
-
|
|
49
|
-
// Re-export types from Prop.ts
|
|
50
|
-
type Prop<T> = PropType<T>;
|
|
51
|
-
|
|
52
|
-
interface StructuredSelector extends StructuredSelectorType {}
|
|
53
|
-
|
|
54
|
-
interface Record extends DataRecord {}
|
|
55
|
-
|
|
56
|
-
interface Config extends ConfigType {}
|
|
57
|
-
|
|
58
|
-
interface StructuredProp extends StructuredPropType {}
|
|
59
|
-
|
|
60
|
-
type StringProp = StringPropType;
|
|
61
|
-
type StyleProp = StylePropType;
|
|
62
|
-
type NumberProp = NumberPropType;
|
|
63
|
-
type BooleanProp = BooleanPropType;
|
|
64
|
-
type ClassProp = ClassPropType;
|
|
65
|
-
type RecordsProp = RecordsPropType;
|
|
66
|
-
type SortersProp = SortersPropType;
|
|
67
|
-
type UnknownProp = UnknownPropType;
|
|
68
|
-
|
|
69
|
-
type RecordAlias = RecordAliasType;
|
|
70
|
-
|
|
71
|
-
/** @deprecated */
|
|
72
|
-
interface WidgetProps {
|
|
73
|
-
/** Inner layout used to display children inside the widget. */
|
|
74
|
-
layout?: any;
|
|
75
|
-
|
|
76
|
-
/** Outer (wrapper) layout used to display the widget in. */
|
|
77
|
-
outerLayout?: any;
|
|
78
|
-
|
|
79
|
-
/** Name of the ContentPlaceholder that should be used to display the widget. */
|
|
80
|
-
putInto?: string;
|
|
81
|
-
|
|
82
|
-
/** Name of the ContentPlaceholder that should be used to display the widget. */
|
|
83
|
-
contentFor?: string;
|
|
84
|
-
|
|
85
|
-
/** Controller. */
|
|
86
|
-
controller?: any;
|
|
87
|
-
|
|
88
|
-
/** Visibility of the widget. Defaults to `true`. */
|
|
89
|
-
visible?: BooleanProp;
|
|
90
|
-
|
|
91
|
-
/** Visibility of the widget. Defaults to `true`. */
|
|
92
|
-
if?: BooleanProp;
|
|
93
|
-
|
|
94
|
-
/** Appearance modifier. For example, mod="big" will add the CSS class `.cxm-big` to the block element. */
|
|
95
|
-
mod?: StringProp | Prop<string[]> | StructuredProp;
|
|
96
|
-
|
|
97
|
-
/** Cache render output. Default is `true`. */
|
|
98
|
-
memoize?: BooleanProp;
|
|
99
|
-
|
|
100
|
-
/** Widget supports class, className and style attributes. */
|
|
101
|
-
styled?: boolean;
|
|
102
|
-
|
|
103
|
-
/** Key that will be used as the key when rendering the React component. */
|
|
104
|
-
vdomKey?: string;
|
|
105
|
-
|
|
106
|
-
onExplore?(context?: any, instance?: any): void;
|
|
107
|
-
|
|
108
|
-
onPrepare?(context?: any, instance?: any): void;
|
|
109
|
-
|
|
110
|
-
onCleanup?(context?: any, instance?: any): void;
|
|
111
|
-
|
|
112
|
-
onDestroy?(): void;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
/** @deprecated */
|
|
116
|
-
interface PureContainerProps extends WidgetProps {
|
|
117
|
-
/** Keep whitespace in text based children. Default is `false`. See also `trimWhitespace`. */
|
|
118
|
-
ws?: boolean;
|
|
119
|
-
|
|
120
|
-
/** Remove all whitespace in text based children. Default is `true`. See also `preserveWhitespace`. */
|
|
121
|
-
trimWhitespace?: boolean;
|
|
122
|
-
|
|
123
|
-
/** Keep whitespace in text based children. Default is `false`. See also `trimWhitespace`. */
|
|
124
|
-
preserveWhitespace?: boolean;
|
|
125
|
-
|
|
126
|
-
/** List of child elements. */
|
|
127
|
-
items?: any;
|
|
128
|
-
|
|
129
|
-
/** List of child elements. */
|
|
130
|
-
children?: React.ReactNode;
|
|
131
|
-
|
|
132
|
-
plainText?: boolean;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
/** @deprecated */
|
|
136
|
-
interface StyledContainerProps extends PureContainerProps {
|
|
137
|
-
/**
|
|
138
|
-
* Additional CSS classes to be applied to the element.
|
|
139
|
-
* If an object is provided, all keys with a "truthy" value will be added to the CSS class list.
|
|
140
|
-
*/
|
|
141
|
-
class?: ClassProp;
|
|
142
|
-
|
|
143
|
-
/**
|
|
144
|
-
* Additional CSS classes to be applied to the element.
|
|
145
|
-
* If an object is provided, all keys with a "truthy" value will be added to the CSS class list.
|
|
146
|
-
*/
|
|
147
|
-
className?: ClassProp;
|
|
148
|
-
|
|
149
|
-
/** Style object applied to the element */
|
|
150
|
-
style?: StyleProp;
|
|
151
|
-
|
|
152
|
-
/** Style object applied to the element */
|
|
153
|
-
styles?: StyleProp;
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
/** @deprecated */
|
|
157
|
-
interface HtmlElementProps extends StyledContainerProps {
|
|
158
|
-
/** Id of the element */
|
|
159
|
-
id?: Cx.StringProp | Cx.NumberProp;
|
|
160
|
-
|
|
161
|
-
/** Inner text contents. */
|
|
162
|
-
text?: Cx.StringProp | Cx.NumberProp;
|
|
163
|
-
|
|
164
|
-
/** Tooltip configuration. */
|
|
165
|
-
tooltip?: StringProp | StructuredProp;
|
|
166
|
-
|
|
167
|
-
// onMouseDown?: string | ((event: MouseEvent, instance: any) => void);
|
|
168
|
-
// onMouseMove?: string | ((event: MouseEvent, instance: any) => void);
|
|
169
|
-
// onMouseUp?: string | ((event: MouseEvent, instance: any) => void);
|
|
170
|
-
// onTouchStart?: string | ((event: TouchEvent, instance: any) => void);
|
|
171
|
-
// onTouchMove?: string | ((event: TouchEvent, instance: any) => void);
|
|
172
|
-
// onTouchEnd?: string | ((event: TouchEvent, instance: any) => void);
|
|
173
|
-
// onClick?: string | ((event: MouseEvent, instance: any) => void);
|
|
174
|
-
// onContextMenu?: string | ((event: MouseEvent, instance: any) => void);
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
type SortDirection = SortDirectionType;
|
|
178
|
-
|
|
179
|
-
interface Sorter extends SorterType {}
|
|
180
|
-
|
|
181
|
-
interface CollatorOptions extends CollatorOptionsType {}
|
|
182
|
-
}
|
|
1
|
+
export = Cx;
|
|
2
|
+
export as namespace Cx;
|
|
3
|
+
|
|
4
|
+
import * as React from "react";
|
|
5
|
+
import { Instance } from "./ui/Instance";
|
|
6
|
+
import { RenderingContext } from "./ui/RenderingContext";
|
|
7
|
+
import { AccessorChain as AccessorChainType } from "./data/createAccessorModelProxy";
|
|
8
|
+
import { Selector as SelectorType } from "./data/Selector";
|
|
9
|
+
import type {
|
|
10
|
+
Bind as BindType,
|
|
11
|
+
Tpl as TplType,
|
|
12
|
+
Expr as ExprType,
|
|
13
|
+
Binding as BindingType,
|
|
14
|
+
GetSet as GetSetType,
|
|
15
|
+
Prop as PropType,
|
|
16
|
+
StructuredSelector as StructuredSelectorType,
|
|
17
|
+
DataRecord,
|
|
18
|
+
Config as ConfigType,
|
|
19
|
+
StructuredProp as StructuredPropType,
|
|
20
|
+
StringProp as StringPropType,
|
|
21
|
+
StyleProp as StylePropType,
|
|
22
|
+
NumberProp as NumberPropType,
|
|
23
|
+
BooleanProp as BooleanPropType,
|
|
24
|
+
ClassProp as ClassPropType,
|
|
25
|
+
RecordsProp as RecordsPropType,
|
|
26
|
+
SortersProp as SortersPropType,
|
|
27
|
+
UnknownProp as UnknownPropType,
|
|
28
|
+
RecordAlias as RecordAliasType,
|
|
29
|
+
SortDirection as SortDirectionType,
|
|
30
|
+
Sorter as SorterType,
|
|
31
|
+
CollatorOptions as CollatorOptionsType,
|
|
32
|
+
} from "./ui/Prop";
|
|
33
|
+
|
|
34
|
+
/** @deprecated */
|
|
35
|
+
declare namespace Cx {
|
|
36
|
+
// Re-export AccessorChain type from createAccessorModelProxy
|
|
37
|
+
type AccessorChain<M> = AccessorChainType<M>;
|
|
38
|
+
|
|
39
|
+
// Re-export Selector type from data/Selector
|
|
40
|
+
type Selector<T> = SelectorType<T>;
|
|
41
|
+
|
|
42
|
+
// Re-export binding types from Prop.ts
|
|
43
|
+
type Bind = BindType;
|
|
44
|
+
type Tpl = TplType;
|
|
45
|
+
type Expr = ExprType;
|
|
46
|
+
type Binding = BindingType;
|
|
47
|
+
type GetSet<T> = GetSetType<T>;
|
|
48
|
+
|
|
49
|
+
// Re-export types from Prop.ts
|
|
50
|
+
type Prop<T> = PropType<T>;
|
|
51
|
+
|
|
52
|
+
interface StructuredSelector extends StructuredSelectorType {}
|
|
53
|
+
|
|
54
|
+
interface Record extends DataRecord {}
|
|
55
|
+
|
|
56
|
+
interface Config extends ConfigType {}
|
|
57
|
+
|
|
58
|
+
interface StructuredProp extends StructuredPropType {}
|
|
59
|
+
|
|
60
|
+
type StringProp = StringPropType;
|
|
61
|
+
type StyleProp = StylePropType;
|
|
62
|
+
type NumberProp = NumberPropType;
|
|
63
|
+
type BooleanProp = BooleanPropType;
|
|
64
|
+
type ClassProp = ClassPropType;
|
|
65
|
+
type RecordsProp = RecordsPropType;
|
|
66
|
+
type SortersProp = SortersPropType;
|
|
67
|
+
type UnknownProp = UnknownPropType;
|
|
68
|
+
|
|
69
|
+
type RecordAlias = RecordAliasType;
|
|
70
|
+
|
|
71
|
+
/** @deprecated */
|
|
72
|
+
interface WidgetProps {
|
|
73
|
+
/** Inner layout used to display children inside the widget. */
|
|
74
|
+
layout?: any;
|
|
75
|
+
|
|
76
|
+
/** Outer (wrapper) layout used to display the widget in. */
|
|
77
|
+
outerLayout?: any;
|
|
78
|
+
|
|
79
|
+
/** Name of the ContentPlaceholder that should be used to display the widget. */
|
|
80
|
+
putInto?: string;
|
|
81
|
+
|
|
82
|
+
/** Name of the ContentPlaceholder that should be used to display the widget. */
|
|
83
|
+
contentFor?: string;
|
|
84
|
+
|
|
85
|
+
/** Controller. */
|
|
86
|
+
controller?: any;
|
|
87
|
+
|
|
88
|
+
/** Visibility of the widget. Defaults to `true`. */
|
|
89
|
+
visible?: BooleanProp;
|
|
90
|
+
|
|
91
|
+
/** Visibility of the widget. Defaults to `true`. */
|
|
92
|
+
if?: BooleanProp;
|
|
93
|
+
|
|
94
|
+
/** Appearance modifier. For example, mod="big" will add the CSS class `.cxm-big` to the block element. */
|
|
95
|
+
mod?: StringProp | Prop<string[]> | StructuredProp;
|
|
96
|
+
|
|
97
|
+
/** Cache render output. Default is `true`. */
|
|
98
|
+
memoize?: BooleanProp;
|
|
99
|
+
|
|
100
|
+
/** Widget supports class, className and style attributes. */
|
|
101
|
+
styled?: boolean;
|
|
102
|
+
|
|
103
|
+
/** Key that will be used as the key when rendering the React component. */
|
|
104
|
+
vdomKey?: string;
|
|
105
|
+
|
|
106
|
+
onExplore?(context?: any, instance?: any): void;
|
|
107
|
+
|
|
108
|
+
onPrepare?(context?: any, instance?: any): void;
|
|
109
|
+
|
|
110
|
+
onCleanup?(context?: any, instance?: any): void;
|
|
111
|
+
|
|
112
|
+
onDestroy?(): void;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/** @deprecated */
|
|
116
|
+
interface PureContainerProps extends WidgetProps {
|
|
117
|
+
/** Keep whitespace in text based children. Default is `false`. See also `trimWhitespace`. */
|
|
118
|
+
ws?: boolean;
|
|
119
|
+
|
|
120
|
+
/** Remove all whitespace in text based children. Default is `true`. See also `preserveWhitespace`. */
|
|
121
|
+
trimWhitespace?: boolean;
|
|
122
|
+
|
|
123
|
+
/** Keep whitespace in text based children. Default is `false`. See also `trimWhitespace`. */
|
|
124
|
+
preserveWhitespace?: boolean;
|
|
125
|
+
|
|
126
|
+
/** List of child elements. */
|
|
127
|
+
items?: any;
|
|
128
|
+
|
|
129
|
+
/** List of child elements. */
|
|
130
|
+
children?: React.ReactNode;
|
|
131
|
+
|
|
132
|
+
plainText?: boolean;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/** @deprecated */
|
|
136
|
+
interface StyledContainerProps extends PureContainerProps {
|
|
137
|
+
/**
|
|
138
|
+
* Additional CSS classes to be applied to the element.
|
|
139
|
+
* If an object is provided, all keys with a "truthy" value will be added to the CSS class list.
|
|
140
|
+
*/
|
|
141
|
+
class?: ClassProp;
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Additional CSS classes to be applied to the element.
|
|
145
|
+
* If an object is provided, all keys with a "truthy" value will be added to the CSS class list.
|
|
146
|
+
*/
|
|
147
|
+
className?: ClassProp;
|
|
148
|
+
|
|
149
|
+
/** Style object applied to the element */
|
|
150
|
+
style?: StyleProp;
|
|
151
|
+
|
|
152
|
+
/** Style object applied to the element */
|
|
153
|
+
styles?: StyleProp;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/** @deprecated */
|
|
157
|
+
interface HtmlElementProps extends StyledContainerProps {
|
|
158
|
+
/** Id of the element */
|
|
159
|
+
id?: Cx.StringProp | Cx.NumberProp;
|
|
160
|
+
|
|
161
|
+
/** Inner text contents. */
|
|
162
|
+
text?: Cx.StringProp | Cx.NumberProp;
|
|
163
|
+
|
|
164
|
+
/** Tooltip configuration. */
|
|
165
|
+
tooltip?: StringProp | StructuredProp;
|
|
166
|
+
|
|
167
|
+
// onMouseDown?: string | ((event: MouseEvent, instance: any) => void);
|
|
168
|
+
// onMouseMove?: string | ((event: MouseEvent, instance: any) => void);
|
|
169
|
+
// onMouseUp?: string | ((event: MouseEvent, instance: any) => void);
|
|
170
|
+
// onTouchStart?: string | ((event: TouchEvent, instance: any) => void);
|
|
171
|
+
// onTouchMove?: string | ((event: TouchEvent, instance: any) => void);
|
|
172
|
+
// onTouchEnd?: string | ((event: TouchEvent, instance: any) => void);
|
|
173
|
+
// onClick?: string | ((event: MouseEvent, instance: any) => void);
|
|
174
|
+
// onContextMenu?: string | ((event: MouseEvent, instance: any) => void);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
type SortDirection = SortDirectionType;
|
|
178
|
+
|
|
179
|
+
interface Sorter extends SorterType {}
|
|
180
|
+
|
|
181
|
+
interface CollatorOptions extends CollatorOptionsType {}
|
|
182
|
+
}
|
|
@@ -1,90 +1,90 @@
|
|
|
1
|
-
import { AugmentedViewBase } from "./AugmentedViewBase";
|
|
2
|
-
import { isArray } from "../util/isArray";
|
|
3
|
-
import { Binding } from "./Binding";
|
|
4
|
-
import { View } from "./View";
|
|
5
|
-
|
|
6
|
-
export interface ArrayElementViewConfig {
|
|
7
|
-
store: View;
|
|
8
|
-
arrayAccessor: any;
|
|
9
|
-
immutable?: boolean;
|
|
10
|
-
recordAlias?: string;
|
|
11
|
-
indexAlias?: string;
|
|
12
|
-
lengthAlias?: string;
|
|
13
|
-
hasNestedAliases?: boolean;
|
|
14
|
-
recordBinding?: any;
|
|
15
|
-
indexBinding?: any;
|
|
16
|
-
lengthBinding?: any;
|
|
17
|
-
itemIndex: number;
|
|
18
|
-
sealed?: boolean;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export class ArrayElementView extends AugmentedViewBase {
|
|
22
|
-
declare arrayAccessor: any;
|
|
23
|
-
declare recordAlias: string;
|
|
24
|
-
declare indexAlias: string;
|
|
25
|
-
declare lengthAlias: string;
|
|
26
|
-
declare hasNestedAliases?: boolean;
|
|
27
|
-
declare recordBinding?: any;
|
|
28
|
-
declare indexBinding?: any;
|
|
29
|
-
declare lengthBinding?: any;
|
|
30
|
-
declare itemIndex: number;
|
|
31
|
-
|
|
32
|
-
constructor(config: ArrayElementViewConfig) {
|
|
33
|
-
super(config);
|
|
34
|
-
this.hasNestedAliases =
|
|
35
|
-
this.recordAlias.indexOf(".") >= 0 || this.indexAlias.indexOf(".") >= 0 || this.lengthAlias.indexOf(".") >= 0;
|
|
36
|
-
this.recordBinding = Binding.get(this.recordAlias);
|
|
37
|
-
if (this.hasNestedAliases) {
|
|
38
|
-
this.indexBinding = Binding.get(this.indexAlias);
|
|
39
|
-
this.lengthBinding = Binding.get(this.lengthAlias);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
getExtraKeyBinding(key: string): any {
|
|
44
|
-
if (!key.startsWith(this.recordAlias)) return null;
|
|
45
|
-
if (key.length == this.recordAlias.length || key[this.recordAlias.length] == ".") return this.recordBinding;
|
|
46
|
-
return null;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
deleteExtraKeyValue(key: string): boolean {
|
|
50
|
-
if (key != this.recordAlias) throw new Error(`Field ${key} cannot be deleted.`);
|
|
51
|
-
const array = this.arrayAccessor.get(this.store.getData());
|
|
52
|
-
if (!array) return false;
|
|
53
|
-
const newArray = [...array.slice(0, this.itemIndex), ...array.slice(this.itemIndex + 1)];
|
|
54
|
-
return this.arrayAccessor.set(newArray, this.store);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
setExtraKeyValue(key: string, value: any): boolean {
|
|
58
|
-
if (key != this.recordAlias) throw new Error(`Field ${key} is read-only.`);
|
|
59
|
-
const array = this.arrayAccessor.get(this.store.getData());
|
|
60
|
-
if (!array || value === array[this.itemIndex]) return false;
|
|
61
|
-
const newArray = [...array.slice(0, this.itemIndex), value, ...array.slice(this.itemIndex + 1)];
|
|
62
|
-
return this.arrayAccessor.set(newArray, this.store);
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
embedAugmentData(result: any, parentStoreData: any): void {
|
|
66
|
-
let array = this.arrayAccessor.get(parentStoreData);
|
|
67
|
-
if (!isArray(array)) return;
|
|
68
|
-
if (!this.hasNestedAliases) {
|
|
69
|
-
result[this.recordAlias] = array[this.itemIndex];
|
|
70
|
-
result[this.indexAlias] = this.itemIndex;
|
|
71
|
-
result[this.lengthAlias] = array.length;
|
|
72
|
-
} else {
|
|
73
|
-
let copy = result;
|
|
74
|
-
copy = this.recordBinding.set(copy, array[this.itemIndex]);
|
|
75
|
-
copy = this.indexBinding.set(copy, this.itemIndex);
|
|
76
|
-
copy = this.lengthBinding.set(copy, array.length);
|
|
77
|
-
result[this.recordBinding.parts[0]] = copy[this.recordBinding.parts[0]];
|
|
78
|
-
result[this.indexBinding.parts[0]] = copy[this.indexBinding.parts[0]];
|
|
79
|
-
result[this.lengthBinding.parts[0]] = copy[this.lengthBinding.parts[0]];
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
setIndex(itemIndex: number): void {
|
|
84
|
-
this.itemIndex = itemIndex;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
ArrayElementView.prototype.recordAlias = "$record";
|
|
89
|
-
ArrayElementView.prototype.indexAlias = "$index";
|
|
90
|
-
ArrayElementView.prototype.lengthAlias = "$length";
|
|
1
|
+
import { AugmentedViewBase } from "./AugmentedViewBase";
|
|
2
|
+
import { isArray } from "../util/isArray";
|
|
3
|
+
import { Binding } from "./Binding";
|
|
4
|
+
import { View } from "./View";
|
|
5
|
+
|
|
6
|
+
export interface ArrayElementViewConfig {
|
|
7
|
+
store: View;
|
|
8
|
+
arrayAccessor: any;
|
|
9
|
+
immutable?: boolean;
|
|
10
|
+
recordAlias?: string;
|
|
11
|
+
indexAlias?: string;
|
|
12
|
+
lengthAlias?: string;
|
|
13
|
+
hasNestedAliases?: boolean;
|
|
14
|
+
recordBinding?: any;
|
|
15
|
+
indexBinding?: any;
|
|
16
|
+
lengthBinding?: any;
|
|
17
|
+
itemIndex: number;
|
|
18
|
+
sealed?: boolean;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export class ArrayElementView extends AugmentedViewBase {
|
|
22
|
+
declare arrayAccessor: any;
|
|
23
|
+
declare recordAlias: string;
|
|
24
|
+
declare indexAlias: string;
|
|
25
|
+
declare lengthAlias: string;
|
|
26
|
+
declare hasNestedAliases?: boolean;
|
|
27
|
+
declare recordBinding?: any;
|
|
28
|
+
declare indexBinding?: any;
|
|
29
|
+
declare lengthBinding?: any;
|
|
30
|
+
declare itemIndex: number;
|
|
31
|
+
|
|
32
|
+
constructor(config: ArrayElementViewConfig) {
|
|
33
|
+
super(config);
|
|
34
|
+
this.hasNestedAliases =
|
|
35
|
+
this.recordAlias.indexOf(".") >= 0 || this.indexAlias.indexOf(".") >= 0 || this.lengthAlias.indexOf(".") >= 0;
|
|
36
|
+
this.recordBinding = Binding.get(this.recordAlias);
|
|
37
|
+
if (this.hasNestedAliases) {
|
|
38
|
+
this.indexBinding = Binding.get(this.indexAlias);
|
|
39
|
+
this.lengthBinding = Binding.get(this.lengthAlias);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
getExtraKeyBinding(key: string): any {
|
|
44
|
+
if (!key.startsWith(this.recordAlias)) return null;
|
|
45
|
+
if (key.length == this.recordAlias.length || key[this.recordAlias.length] == ".") return this.recordBinding;
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
deleteExtraKeyValue(key: string): boolean {
|
|
50
|
+
if (key != this.recordAlias) throw new Error(`Field ${key} cannot be deleted.`);
|
|
51
|
+
const array = this.arrayAccessor.get(this.store.getData());
|
|
52
|
+
if (!array) return false;
|
|
53
|
+
const newArray = [...array.slice(0, this.itemIndex), ...array.slice(this.itemIndex + 1)];
|
|
54
|
+
return this.arrayAccessor.set(newArray, this.store);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
setExtraKeyValue(key: string, value: any): boolean {
|
|
58
|
+
if (key != this.recordAlias) throw new Error(`Field ${key} is read-only.`);
|
|
59
|
+
const array = this.arrayAccessor.get(this.store.getData());
|
|
60
|
+
if (!array || value === array[this.itemIndex]) return false;
|
|
61
|
+
const newArray = [...array.slice(0, this.itemIndex), value, ...array.slice(this.itemIndex + 1)];
|
|
62
|
+
return this.arrayAccessor.set(newArray, this.store);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
embedAugmentData(result: any, parentStoreData: any): void {
|
|
66
|
+
let array = this.arrayAccessor.get(parentStoreData);
|
|
67
|
+
if (!isArray(array)) return;
|
|
68
|
+
if (!this.hasNestedAliases) {
|
|
69
|
+
result[this.recordAlias] = array[this.itemIndex];
|
|
70
|
+
result[this.indexAlias] = this.itemIndex;
|
|
71
|
+
result[this.lengthAlias] = array.length;
|
|
72
|
+
} else {
|
|
73
|
+
let copy = result;
|
|
74
|
+
copy = this.recordBinding.set(copy, array[this.itemIndex]);
|
|
75
|
+
copy = this.indexBinding.set(copy, this.itemIndex);
|
|
76
|
+
copy = this.lengthBinding.set(copy, array.length);
|
|
77
|
+
result[this.recordBinding.parts[0]] = copy[this.recordBinding.parts[0]];
|
|
78
|
+
result[this.indexBinding.parts[0]] = copy[this.indexBinding.parts[0]];
|
|
79
|
+
result[this.lengthBinding.parts[0]] = copy[this.lengthBinding.parts[0]];
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
setIndex(itemIndex: number): void {
|
|
84
|
+
this.itemIndex = itemIndex;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
ArrayElementView.prototype.recordAlias = "$record";
|
|
89
|
+
ArrayElementView.prototype.indexAlias = "$index";
|
|
90
|
+
ArrayElementView.prototype.lengthAlias = "$length";
|