cx 26.0.11 → 26.0.13
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/ScatterGraph.d.ts +4 -4
- package/build/charts/ScatterGraph.js +2 -2
- package/build/data/ArrayElementView.spec.d.ts +1 -0
- package/build/data/ArrayElementView.spec.js +81 -0
- package/build/data/Binding.spec.d.ts +1 -0
- package/build/data/Binding.spec.js +61 -0
- package/build/data/Expression.spec.d.ts +1 -0
- package/build/data/Expression.spec.js +196 -0
- package/build/data/Grouper.spec.d.ts +1 -0
- package/build/data/Grouper.spec.js +48 -0
- package/build/data/Ref.spec.d.ts +1 -0
- package/build/data/Ref.spec.js +72 -0
- package/build/data/Selector.d.ts +1 -1
- package/build/data/Store.spec.d.ts +1 -0
- package/build/data/Store.spec.js +19 -0
- package/build/data/StoreRef.spec.d.ts +1 -0
- package/build/data/StoreRef.spec.js +22 -0
- package/build/data/StringTemplate.spec.d.ts +1 -0
- package/build/data/StringTemplate.spec.js +112 -0
- package/build/data/StructuredSelector.spec.d.ts +1 -0
- package/build/data/StructuredSelector.spec.js +102 -0
- package/build/data/View.spec.d.ts +1 -0
- package/build/data/View.spec.js +44 -0
- package/build/data/ZoomIntoPropertyView.spec.d.ts +1 -0
- package/build/data/ZoomIntoPropertyView.spec.js +54 -0
- package/build/data/comparer.spec.d.ts +1 -0
- package/build/data/comparer.spec.js +50 -0
- package/build/data/computable.d.ts +3 -6
- package/build/data/computable.spec.d.ts +1 -0
- package/build/data/computable.spec.js +56 -0
- package/build/data/createAccessorModelProxy.d.ts +5 -3
- package/build/data/createAccessorModelProxy.spec.d.ts +1 -0
- package/build/data/createAccessorModelProxy.spec.js +30 -0
- package/build/data/createStructuredSelector.spec.d.ts +1 -0
- package/build/data/createStructuredSelector.spec.js +42 -0
- package/build/data/diff/diffs.spec.d.ts +1 -0
- package/build/data/diff/diffs.spec.js +45 -0
- package/build/data/getAccessor.spec.d.ts +1 -0
- package/build/data/getAccessor.spec.js +10 -0
- package/build/data/getSelector.spec.d.ts +1 -0
- package/build/data/getSelector.spec.js +36 -0
- package/build/data/ops/append.spec.d.ts +1 -0
- package/build/data/ops/append.spec.js +24 -0
- package/build/data/ops/filter.spec.d.ts +1 -0
- package/build/data/ops/filter.spec.js +25 -0
- package/build/data/ops/findTreeNode.d.ts +1 -1
- package/build/data/ops/findTreeNode.js +1 -1
- package/build/data/ops/findTreeNode.spec.d.ts +1 -0
- package/build/data/ops/findTreeNode.spec.js +20 -0
- package/build/data/ops/findTreePath.d.ts +1 -1
- package/build/data/ops/merge.spec.d.ts +1 -0
- package/build/data/ops/merge.spec.js +23 -0
- package/build/data/ops/removeTreeNodes.d.ts +1 -1
- package/build/data/ops/removeTreeNodes.js +1 -1
- package/build/data/ops/removeTreeNodes.spec.d.ts +1 -0
- package/build/data/ops/removeTreeNodes.spec.js +35 -0
- package/build/data/ops/updateArray.spec.d.ts +1 -0
- package/build/data/ops/updateArray.spec.js +33 -0
- package/build/data/ops/updateTree.d.ts +1 -1
- package/build/data/ops/updateTree.spec.d.ts +1 -0
- package/build/data/ops/updateTree.spec.js +44 -0
- package/build/hooks/invokeCallback.spec.d.ts +1 -0
- package/build/hooks/invokeCallback.spec.js +44 -0
- package/build/hooks/resolveCallback.spec.d.ts +1 -0
- package/build/hooks/resolveCallback.spec.js +35 -0
- package/build/hooks/store.spec.d.ts +1 -0
- package/build/hooks/store.spec.js +48 -0
- package/build/hooks/useTrigger.spec.d.ts +1 -0
- package/build/hooks/useTrigger.spec.js +59 -0
- package/build/jsx-runtime.d.ts +10 -10
- package/build/jsx-runtime.js +6 -0
- package/build/svg/util/Rect.d.ts +1 -1
- package/build/ui/ContentResolver.d.ts +16 -6
- package/build/ui/Controller.d.ts +7 -0
- package/build/ui/Controller.js +2 -1
- package/build/ui/Controller.spec.d.ts +1 -0
- package/build/ui/Controller.spec.js +247 -0
- package/build/ui/Cx.spec.d.ts +1 -0
- package/build/ui/Cx.spec.js +153 -0
- package/build/ui/DataProxy.spec.d.ts +1 -0
- package/build/ui/DataProxy.spec.js +208 -0
- package/build/ui/Instance.d.ts +1 -1
- package/build/ui/Instance.js +10 -10
- package/build/ui/IsolatedScope.spec.d.ts +1 -0
- package/build/ui/IsolatedScope.spec.js +42 -0
- package/build/ui/Prop.d.ts +12 -1
- package/build/ui/PureContainer.spec.d.ts +1 -0
- package/build/ui/PureContainer.spec.js +149 -0
- package/build/ui/Repeater.d.ts +3 -3
- package/build/ui/Repeater.spec.d.ts +1 -0
- package/build/ui/Repeater.spec.js +109 -0
- package/build/ui/Rescope.spec.d.ts +1 -0
- package/build/ui/Rescope.spec.js +134 -0
- package/build/ui/Restate.spec.d.ts +1 -0
- package/build/ui/Restate.spec.js +257 -0
- package/build/ui/Text.d.ts +14 -2
- package/build/ui/Text.js +3 -0
- package/build/ui/adapter/ArrayAdapter.js +4 -1
- package/build/ui/adapter/ArrayAdapter.spec.d.ts +1 -0
- package/build/ui/adapter/ArrayAdapter.spec.js +44 -0
- package/build/ui/adapter/TreeAdapter.spec.d.ts +1 -0
- package/build/ui/adapter/TreeAdapter.spec.js +71 -0
- package/build/ui/app/Url.spec.d.ts +1 -0
- package/build/ui/app/Url.spec.js +43 -0
- package/build/ui/app/startHotAppLoop.js +1 -1
- package/build/ui/createFunctionalComponent.d.ts +14 -1
- package/build/ui/createFunctionalComponent.js +7 -4
- package/build/ui/createFunctionalComponent.spec.d.ts +1 -0
- package/build/ui/createFunctionalComponent.spec.js +272 -0
- package/build/ui/expr.d.ts +3 -1
- package/build/ui/exprHelpers.d.ts +32 -0
- package/build/ui/exprHelpers.js +61 -0
- package/build/ui/index.d.ts +1 -0
- package/build/ui/index.js +1 -0
- package/build/ui/layout/ContentPlaceholder.spec.d.ts +1 -0
- package/build/ui/layout/ContentPlaceholder.spec.js +333 -0
- package/build/ui/layout/FirstVisibleChildLayout.spec.d.ts +1 -0
- package/build/ui/layout/FirstVisibleChildLayout.spec.js +101 -0
- package/build/ui/selection/KeySelection.d.ts +0 -8
- package/build/ui/selection/Selection.d.ts +9 -3
- package/build/util/Console.d.ts +1 -0
- package/build/util/Console.js +7 -3
- package/build/util/Format.spec.d.ts +1 -0
- package/build/util/Format.spec.js +58 -0
- package/build/util/TraversalStack.spec.d.ts +1 -0
- package/build/util/TraversalStack.spec.js +43 -0
- package/build/util/date/upperBoundCheck.spec.d.ts +1 -0
- package/build/util/date/upperBoundCheck.spec.js +22 -0
- package/build/util/getSearchQueryPredicate.spec.d.ts +1 -0
- package/build/util/getSearchQueryPredicate.spec.js +33 -0
- package/build/util/isValidIdentifierName.spec.d.ts +1 -0
- package/build/util/isValidIdentifierName.spec.js +28 -0
- package/build/util/routeAppend.spec.d.ts +1 -0
- package/build/util/routeAppend.spec.js +14 -0
- package/build/widgets/AccessorBindings.spec.d.ts +1 -0
- package/build/widgets/AccessorBindings.spec.js +40 -0
- package/build/widgets/Button.d.ts +3 -6
- package/build/widgets/Button.js +1 -1
- package/build/widgets/DocumentTitle.d.ts +2 -0
- package/build/widgets/Heading.d.ts +2 -2
- package/build/widgets/HtmlElement.d.ts +33 -8
- package/build/widgets/HtmlElement.js +7 -9
- package/build/widgets/HtmlElement.spec.d.ts +1 -0
- package/build/widgets/HtmlElement.spec.js +38 -0
- package/build/widgets/Icon.d.ts +3 -13
- package/build/widgets/List.d.ts +4 -0
- package/build/widgets/ReactElementWrapper.d.ts +29 -0
- package/build/widgets/ReactElementWrapper.js +59 -0
- package/build/widgets/drag-drop/DragSource.d.ts +3 -3
- package/build/widgets/drag-drop/DragSource.js +2 -3
- package/build/widgets/drag-drop/DropZone.d.ts +3 -3
- package/build/widgets/drag-drop/DropZone.js +2 -3
- package/build/widgets/form/Checkbox.d.ts +2 -0
- package/build/widgets/form/ColorField.d.ts +2 -0
- package/build/widgets/form/DateTimeField.d.ts +2 -0
- package/build/widgets/form/Field.d.ts +0 -2
- package/build/widgets/form/LabeledContainer.d.ts +9 -8
- package/build/widgets/form/LabeledContainer.js +9 -9
- package/build/widgets/form/LookupField.d.ts +57 -9
- package/build/widgets/form/MonthField.d.ts +2 -0
- package/build/widgets/form/NumberField.d.ts +2 -0
- package/build/widgets/form/Radio.d.ts +2 -0
- package/build/widgets/form/Select.d.ts +2 -0
- package/build/widgets/form/Slider.d.ts +3 -0
- package/build/widgets/form/Switch.d.ts +2 -0
- package/build/widgets/form/TextField.d.ts +34 -0
- package/build/widgets/form/TimeList.d.ts +16 -1
- package/build/widgets/form/TimeList.js +34 -62
- package/build/widgets/form/UploadButton.d.ts +34 -2
- package/build/widgets/form/UploadButton.js +3 -1
- package/build/widgets/form/ValidationGroup.spec.d.ts +1 -0
- package/build/widgets/form/ValidationGroup.spec.js +62 -0
- package/build/widgets/form/Validator.d.ts +33 -2
- package/build/widgets/form/Validator.js +3 -0
- package/build/widgets/grid/Grid.d.ts +9 -9
- package/build/widgets/grid/TreeNode.d.ts +6 -0
- package/build/widgets/index.d.ts +1 -0
- package/build/widgets/index.js +1 -0
- package/build/widgets/nav/MenuItem.d.ts +3 -2
- package/build/widgets/nav/Route.spec.d.ts +1 -0
- package/build/widgets/nav/Route.spec.js +15 -0
- package/build/widgets/nav/Scroller.d.ts +4 -6
- package/build/widgets/nav/Scroller.js +6 -3
- package/build/widgets/nav/Tab.d.ts +2 -2
- package/build/widgets/overlay/ContextMenu.d.ts +3 -3
- package/build/widgets/overlay/Overlay.d.ts +2 -1
- package/build/widgets/overlay/Overlay.js +1 -1
- package/build.js +133 -133
- package/dist/data.js +2 -2
- package/dist/jsx-runtime.js +6 -1
- package/dist/manifest.d.ts +1443 -0
- package/dist/manifest.js +852 -804
- package/dist/ui.js +91 -5
- package/dist/util.js +3 -0
- package/dist/widgets.js +520 -161
- package/package.json +46 -20
- package/src/charts/Chart.ts +108 -108
- package/src/charts/ScatterGraph.tsx +6 -6
- 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/Expression.spec.ts +229 -229
- package/src/data/Expression.ts +233 -233
- package/src/data/Grouper.spec.ts +57 -57
- package/src/data/Grouper.ts +158 -158
- package/src/data/NestedDataView.ts +43 -43
- package/src/data/ReadOnlyDataView.ts +39 -39
- package/src/data/Ref.ts +104 -104
- package/src/data/Selector.ts +10 -10
- 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.spec.ts +132 -132
- package/src/data/StringTemplate.ts +93 -93
- package/src/data/StructuredSelector.spec.ts +113 -113
- package/src/data/StructuredSelector.ts +146 -146
- package/src/data/SubscribableView.ts +63 -63
- package/src/data/ZoomIntoPropertyView.spec.ts +64 -64
- package/src/data/ZoomIntoPropertyView.ts +45 -45
- package/src/data/computable.spec.ts +87 -62
- package/src/data/computable.ts +3 -6
- package/src/data/createAccessorModelProxy.spec.tsx +102 -1
- package/src/data/createAccessorModelProxy.ts +9 -3
- package/src/data/createStructuredSelector.ts +62 -62
- package/src/data/getAccessor.spec.ts +11 -11
- package/src/data/getAccessor.ts +74 -74
- package/src/data/getSelector.spec.ts +43 -43
- package/src/data/getSelector.ts +66 -66
- package/src/data/ops/filter.spec.ts +35 -35
- package/src/data/ops/filter.ts +9 -9
- package/src/data/ops/findTreeNode.ts +1 -5
- package/src/data/ops/findTreePath.ts +1 -1
- package/src/data/ops/merge.ts +13 -13
- package/src/data/ops/removeTreeNodes.spec.ts +37 -37
- package/src/data/ops/removeTreeNodes.ts +2 -2
- package/src/data/ops/updateArray.spec.ts +69 -69
- package/src/data/ops/updateArray.ts +31 -31
- package/src/data/ops/updateTree.ts +1 -1
- package/src/data/test-types.ts +7 -7
- package/src/hooks/resolveCallback.spec.tsx +30 -7
- package/src/hooks/useTrigger.ts +26 -26
- package/src/index.scss +6 -6
- package/src/jsx-dev-runtime.ts +4 -4
- package/src/jsx-runtime.spec.tsx +402 -0
- package/src/jsx-runtime.ts +26 -22
- package/src/svg/BoundedObject.ts +101 -101
- package/src/svg/util/Rect.ts +105 -105
- package/src/ui/CSSHelper.ts +17 -17
- package/src/ui/ContentResolver.spec.tsx +172 -19
- package/src/ui/ContentResolver.ts +16 -8
- package/src/ui/Controller.ts +15 -2
- package/src/ui/Culture.ts +159 -159
- package/src/ui/DataProxy.ts +55 -55
- package/src/ui/FocusManager.ts +171 -171
- package/src/ui/Instance.ts +866 -868
- package/src/ui/Prop.ts +140 -112
- package/src/ui/RenderingContext.ts +99 -99
- package/src/ui/Repeater.ts +3 -12
- package/src/ui/Rescope.ts +49 -49
- package/src/ui/StructuredInstanceDataAccessor.ts +32 -32
- package/src/ui/Text.ts +21 -2
- package/src/ui/VDOM.ts +34 -34
- package/src/ui/adapter/ArrayAdapter.spec.ts +55 -55
- package/src/ui/adapter/ArrayAdapter.ts +4 -1
- package/src/ui/adapter/TreeAdapter.spec.ts +76 -76
- package/src/ui/adapter/TreeAdapter.ts +185 -185
- package/src/ui/app/History.ts +133 -133
- package/src/ui/app/Url.spec.ts +50 -50
- package/src/ui/app/startHotAppLoop.ts +41 -41
- package/src/ui/createFunctionalComponent.spec.tsx +53 -0
- package/src/ui/createFunctionalComponent.ts +86 -65
- package/src/ui/expr.ts +4 -1
- package/src/ui/exprHelpers.spec.ts +379 -0
- package/src/ui/exprHelpers.ts +78 -0
- package/src/ui/index.ts +47 -46
- package/src/ui/layout/Content.ts +30 -30
- package/src/ui/layout/FirstVisibleChildLayout.spec.tsx +1 -1
- package/src/ui/layout/FirstVisibleChildLayout.ts +60 -60
- package/src/ui/selection/KeySelection.ts +0 -12
- package/src/ui/selection/PropertySelection.ts +87 -87
- package/src/ui/selection/Selection.ts +13 -3
- package/src/util/Console.ts +13 -11
- 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/hasKey.ts +18 -18
- package/src/util/index.ts +55 -55
- package/src/util/innerTextTrim.ts +10 -10
- package/src/util/isArray.ts +3 -3
- package/src/util/isDataRecord.ts +5 -5
- package/src/util/isDefined.ts +3 -3
- package/src/util/isString.ts +3 -3
- package/src/widgets/AccessorBindings.spec.tsx +26 -0
- package/src/widgets/Button.tsx +5 -17
- package/src/widgets/DocumentTitle.ts +95 -92
- package/src/widgets/Heading.ts +2 -2
- package/src/widgets/HtmlElement.spec.helpers.tsx +108 -0
- package/src/widgets/HtmlElement.spec.tsx +20 -12
- package/src/widgets/HtmlElement.tsx +82 -24
- package/src/widgets/Icon.ts +3 -17
- package/src/widgets/List.tsx +6 -0
- package/src/widgets/ReactElementWrapper.spec.tsx +452 -0
- package/src/widgets/ReactElementWrapper.tsx +108 -0
- package/src/widgets/Sandbox.ts +103 -103
- package/src/widgets/autoFocus.ts +9 -9
- package/src/widgets/cx.ts +63 -63
- package/src/widgets/drag-drop/DragSource.tsx +3 -4
- package/src/widgets/drag-drop/DropZone.tsx +3 -4
- package/src/widgets/form/Checkbox.tsx +3 -0
- package/src/widgets/form/ColorField.tsx +3 -0
- package/src/widgets/form/DateTimeField.tsx +5 -0
- package/src/widgets/form/Field.tsx +0 -3
- package/src/widgets/form/Label.tsx +1 -0
- package/src/widgets/form/LabeledContainer.ts +22 -26
- package/src/widgets/form/LookupField.spec.tsx +93 -0
- package/src/widgets/form/LookupField.tsx +104 -9
- package/src/widgets/form/MonthField.tsx +5 -0
- package/src/widgets/form/NumberField.tsx +3 -0
- package/src/widgets/form/Radio.tsx +5 -0
- package/src/widgets/form/Select.tsx +5 -0
- package/src/widgets/form/Slider.tsx +4 -0
- package/src/widgets/form/Switch.tsx +3 -0
- package/src/widgets/form/TextField.tsx +62 -0
- package/src/widgets/form/TimeList.tsx +84 -73
- package/src/widgets/form/UploadButton.tsx +53 -2
- package/src/widgets/form/Validator.ts +40 -3
- package/src/widgets/grid/Grid.tsx +9 -12
- package/src/widgets/grid/GridCell.ts +143 -143
- package/src/widgets/grid/TreeNode.tsx +9 -0
- package/src/widgets/icons/calendar.tsx +17 -17
- package/src/widgets/icons/check.tsx +13 -13
- package/src/widgets/icons/clear.tsx +15 -15
- package/src/widgets/icons/close.tsx +20 -20
- package/src/widgets/icons/cx.tsx +38 -38
- package/src/widgets/icons/drop-down.tsx +15 -15
- package/src/widgets/icons/file.tsx +13 -13
- package/src/widgets/icons/folder-open.tsx +15 -15
- package/src/widgets/icons/folder.tsx +13 -13
- package/src/widgets/icons/forward.tsx +22 -22
- package/src/widgets/icons/loading.tsx +24 -24
- package/src/widgets/icons/menu.tsx +17 -17
- package/src/widgets/icons/pixel-picker.tsx +18 -18
- package/src/widgets/icons/search.tsx +13 -13
- package/src/widgets/icons/sort-asc.tsx +14 -14
- package/src/widgets/icons/square.tsx +18 -18
- package/src/widgets/index.ts +1 -0
- package/src/widgets/nav/MenuItem.tsx +3 -2
- package/src/widgets/nav/Route.ts +142 -142
- package/src/widgets/nav/Scroller.tsx +8 -9
- package/src/widgets/nav/Tab.ts +2 -2
- package/src/widgets/overlay/ContextMenu.ts +42 -42
- package/src/widgets/overlay/Dropdown.tsx +762 -762
- package/src/widgets/overlay/MsgBox.tsx +141 -141
- package/src/widgets/overlay/Overlay.tsx +5 -4
- 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/captureMouse.ts +195 -195
- package/src/widgets/overlay/createHotPromiseWindowFactory.ts +72 -72
- package/src/widgets/overlay/index.d.ts +11 -11
- package/src/widgets/overlay/index.ts +11 -11
- package/src/widgets/overlay/tooltip-ops.ts +173 -173
package/src/widgets/Sandbox.ts
CHANGED
|
@@ -1,103 +1,103 @@
|
|
|
1
|
-
import { Widget } from "../ui/Widget";
|
|
2
|
-
import { PureContainerBase, PureContainerConfig } from "../ui/PureContainer";
|
|
3
|
-
import { Binding, BindingInput } from "../data/Binding";
|
|
4
|
-
import { ExposedValueView, ExposedValueViewConfig } from "../data/ExposedValueView";
|
|
5
|
-
import { RenderingContext } from "../ui/RenderingContext";
|
|
6
|
-
import { Instance } from "../ui/Instance";
|
|
7
|
-
import { StringProp, WritableProp } from "../ui/Prop";
|
|
8
|
-
|
|
9
|
-
export interface SandboxConfig extends PureContainerConfig {
|
|
10
|
-
/** Binding to the object that holds sandbox data. */
|
|
11
|
-
storage: WritableProp<Record<string, any>>;
|
|
12
|
-
|
|
13
|
-
/** Key used to identify the sandbox instance within the storage. */
|
|
14
|
-
key?: StringProp;
|
|
15
|
-
|
|
16
|
-
/** Alias for `key`. */
|
|
17
|
-
accessKey?: StringProp;
|
|
18
|
-
|
|
19
|
-
/** Alias used to expose sandbox data. Default is `$page`. */
|
|
20
|
-
recordName?: string;
|
|
21
|
-
|
|
22
|
-
/** Alias for `recordName`. */
|
|
23
|
-
recordAlias?: string;
|
|
24
|
-
|
|
25
|
-
/** Indicate that parent store data should not be mutated. */
|
|
26
|
-
immutable?: boolean;
|
|
27
|
-
|
|
28
|
-
/** Indicate that sandbox store data should not be mutated. */
|
|
29
|
-
sealed?: boolean;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
export interface SandboxInstance extends Instance {
|
|
33
|
-
store: ExposedValueView;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
export class Sandbox extends PureContainerBase<SandboxConfig, SandboxInstance> {
|
|
37
|
-
declare storage: WritableProp<Record<string, any>>;
|
|
38
|
-
declare key?: StringProp;
|
|
39
|
-
declare recordName?: string;
|
|
40
|
-
declare recordAlias?: string;
|
|
41
|
-
declare accessKey?: StringProp;
|
|
42
|
-
declare immutable?: boolean;
|
|
43
|
-
declare sealed?: boolean;
|
|
44
|
-
declare storageBinding: Binding;
|
|
45
|
-
init(): void {
|
|
46
|
-
if (this.recordAlias) this.recordName = this.recordAlias;
|
|
47
|
-
|
|
48
|
-
if (this.accessKey) this.key = this.accessKey;
|
|
49
|
-
|
|
50
|
-
this.storageBinding = Binding.get(this.storage);
|
|
51
|
-
|
|
52
|
-
super.init();
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
initInstance(context: RenderingContext, instance: SandboxInstance): void {
|
|
56
|
-
instance.store = new ExposedValueView({
|
|
57
|
-
store: instance.parentStore,
|
|
58
|
-
containerBinding: this.storageBinding,
|
|
59
|
-
key: null,
|
|
60
|
-
recordName: this.recordName,
|
|
61
|
-
immutable: this.immutable,
|
|
62
|
-
});
|
|
63
|
-
super.initInstance(context, instance);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
applyParentStore(instance: SandboxInstance): void {
|
|
67
|
-
instance.store.setStore(instance.parentStore);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
declareData(...args: Record<string, unknown>[]): void {
|
|
71
|
-
super.declareData(
|
|
72
|
-
{
|
|
73
|
-
storage: undefined,
|
|
74
|
-
key: undefined,
|
|
75
|
-
},
|
|
76
|
-
...args,
|
|
77
|
-
);
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
prepareData(context: RenderingContext, instance: SandboxInstance): void {
|
|
81
|
-
var { store, data } = instance;
|
|
82
|
-
if (store.getKey() !== data.key) {
|
|
83
|
-
//when navigating to a page using the same widget tree as the previous page
|
|
84
|
-
//everything needs to be reinstantiated, e.g. user/1 => user/2
|
|
85
|
-
instance.store = new ExposedValueView({
|
|
86
|
-
store: store,
|
|
87
|
-
containerBinding: this.storageBinding,
|
|
88
|
-
key: data.key,
|
|
89
|
-
recordName: this.recordName,
|
|
90
|
-
immutable: this.immutable,
|
|
91
|
-
sealed: this.sealed,
|
|
92
|
-
});
|
|
93
|
-
instance.clearChildrenCache();
|
|
94
|
-
}
|
|
95
|
-
super.prepareData(context, instance);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
Sandbox.prototype.recordName = "$page";
|
|
100
|
-
Sandbox.prototype.immutable = false;
|
|
101
|
-
Sandbox.prototype.sealed = false;
|
|
102
|
-
|
|
103
|
-
Widget.alias("sandbox", Sandbox);
|
|
1
|
+
import { Widget } from "../ui/Widget";
|
|
2
|
+
import { PureContainerBase, PureContainerConfig } from "../ui/PureContainer";
|
|
3
|
+
import { Binding, BindingInput } from "../data/Binding";
|
|
4
|
+
import { ExposedValueView, ExposedValueViewConfig } from "../data/ExposedValueView";
|
|
5
|
+
import { RenderingContext } from "../ui/RenderingContext";
|
|
6
|
+
import { Instance } from "../ui/Instance";
|
|
7
|
+
import { StringProp, WritableProp } from "../ui/Prop";
|
|
8
|
+
|
|
9
|
+
export interface SandboxConfig extends PureContainerConfig {
|
|
10
|
+
/** Binding to the object that holds sandbox data. */
|
|
11
|
+
storage: WritableProp<Record<string, any>>;
|
|
12
|
+
|
|
13
|
+
/** Key used to identify the sandbox instance within the storage. */
|
|
14
|
+
key?: StringProp;
|
|
15
|
+
|
|
16
|
+
/** Alias for `key`. */
|
|
17
|
+
accessKey?: StringProp;
|
|
18
|
+
|
|
19
|
+
/** Alias used to expose sandbox data. Default is `$page`. */
|
|
20
|
+
recordName?: string;
|
|
21
|
+
|
|
22
|
+
/** Alias for `recordName`. */
|
|
23
|
+
recordAlias?: string;
|
|
24
|
+
|
|
25
|
+
/** Indicate that parent store data should not be mutated. */
|
|
26
|
+
immutable?: boolean;
|
|
27
|
+
|
|
28
|
+
/** Indicate that sandbox store data should not be mutated. */
|
|
29
|
+
sealed?: boolean;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export interface SandboxInstance extends Instance {
|
|
33
|
+
store: ExposedValueView;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export class Sandbox extends PureContainerBase<SandboxConfig, SandboxInstance> {
|
|
37
|
+
declare storage: WritableProp<Record<string, any>>;
|
|
38
|
+
declare key?: StringProp;
|
|
39
|
+
declare recordName?: string;
|
|
40
|
+
declare recordAlias?: string;
|
|
41
|
+
declare accessKey?: StringProp;
|
|
42
|
+
declare immutable?: boolean;
|
|
43
|
+
declare sealed?: boolean;
|
|
44
|
+
declare storageBinding: Binding;
|
|
45
|
+
init(): void {
|
|
46
|
+
if (this.recordAlias) this.recordName = this.recordAlias;
|
|
47
|
+
|
|
48
|
+
if (this.accessKey) this.key = this.accessKey;
|
|
49
|
+
|
|
50
|
+
this.storageBinding = Binding.get(this.storage);
|
|
51
|
+
|
|
52
|
+
super.init();
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
initInstance(context: RenderingContext, instance: SandboxInstance): void {
|
|
56
|
+
instance.store = new ExposedValueView({
|
|
57
|
+
store: instance.parentStore,
|
|
58
|
+
containerBinding: this.storageBinding,
|
|
59
|
+
key: null,
|
|
60
|
+
recordName: this.recordName,
|
|
61
|
+
immutable: this.immutable,
|
|
62
|
+
});
|
|
63
|
+
super.initInstance(context, instance);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
applyParentStore(instance: SandboxInstance): void {
|
|
67
|
+
instance.store.setStore(instance.parentStore);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
declareData(...args: Record<string, unknown>[]): void {
|
|
71
|
+
super.declareData(
|
|
72
|
+
{
|
|
73
|
+
storage: undefined,
|
|
74
|
+
key: undefined,
|
|
75
|
+
},
|
|
76
|
+
...args,
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
prepareData(context: RenderingContext, instance: SandboxInstance): void {
|
|
81
|
+
var { store, data } = instance;
|
|
82
|
+
if (store.getKey() !== data.key) {
|
|
83
|
+
//when navigating to a page using the same widget tree as the previous page
|
|
84
|
+
//everything needs to be reinstantiated, e.g. user/1 => user/2
|
|
85
|
+
instance.store = new ExposedValueView({
|
|
86
|
+
store: store,
|
|
87
|
+
containerBinding: this.storageBinding,
|
|
88
|
+
key: data.key,
|
|
89
|
+
recordName: this.recordName,
|
|
90
|
+
immutable: this.immutable,
|
|
91
|
+
sealed: this.sealed,
|
|
92
|
+
});
|
|
93
|
+
instance.clearChildrenCache();
|
|
94
|
+
}
|
|
95
|
+
super.prepareData(context, instance);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
Sandbox.prototype.recordName = "$page";
|
|
100
|
+
Sandbox.prototype.immutable = false;
|
|
101
|
+
Sandbox.prototype.sealed = false;
|
|
102
|
+
|
|
103
|
+
Widget.alias("sandbox", Sandbox);
|
package/src/widgets/autoFocus.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { FocusManager } from "../ui/FocusManager";
|
|
2
|
-
import { isTouchEvent } from "../util/isTouchEvent";
|
|
3
|
-
|
|
4
|
-
export function autoFocus(el: HTMLElement | undefined | null, component: any): void {
|
|
5
|
-
let data = component.props.data || component.props.instance.data;
|
|
6
|
-
let autoFocusValue = el && data.autoFocus;
|
|
7
|
-
if (autoFocusValue && autoFocusValue != component.autoFocusValue && !isTouchEvent()) FocusManager.focus(el!);
|
|
8
|
-
component.autoFocusValue = autoFocusValue;
|
|
9
|
-
}
|
|
1
|
+
import { FocusManager } from "../ui/FocusManager";
|
|
2
|
+
import { isTouchEvent } from "../util/isTouchEvent";
|
|
3
|
+
|
|
4
|
+
export function autoFocus(el: HTMLElement | undefined | null, component: any): void {
|
|
5
|
+
let data = component.props.data || component.props.instance.data;
|
|
6
|
+
let autoFocusValue = el && data.autoFocus;
|
|
7
|
+
if (autoFocusValue && autoFocusValue != component.autoFocusValue && !isTouchEvent()) FocusManager.focus(el!);
|
|
8
|
+
component.autoFocusValue = autoFocusValue;
|
|
9
|
+
}
|
package/src/widgets/cx.ts
CHANGED
|
@@ -1,63 +1,63 @@
|
|
|
1
|
-
import { HtmlElement } from "./HtmlElement";
|
|
2
|
-
import { VDOM } from "../ui/Widget";
|
|
3
|
-
import { createComponentFactory, isComponentFactory } from "../util/Component";
|
|
4
|
-
import { createFunctionalComponent } from "../ui/createFunctionalComponent";
|
|
5
|
-
import { isString } from "../util/isString";
|
|
6
|
-
import { isNumber } from "../util/isNumber";
|
|
7
|
-
import { isFunction } from "../util/isFunction";
|
|
8
|
-
import { isUndefined } from "../util/isUndefined";
|
|
9
|
-
import { isArray } from "../util/isArray";
|
|
10
|
-
|
|
11
|
-
import { flattenProps } from "../ui/flattenProps";
|
|
12
|
-
|
|
13
|
-
let htmlFactoryCache: Record<string, any> = {};
|
|
14
|
-
|
|
15
|
-
function getHtmlElementFactory(tagName: string): any {
|
|
16
|
-
let factory = htmlFactoryCache[tagName];
|
|
17
|
-
if (factory) return factory;
|
|
18
|
-
return (htmlFactoryCache[tagName] = createComponentFactory(
|
|
19
|
-
() => {},
|
|
20
|
-
(config: any) => HtmlElement.create(HtmlElement, { tag: tagName }, flattenProps(config)),
|
|
21
|
-
{ tag: tagName },
|
|
22
|
-
));
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export function cx(typeName: any, props?: any, ...children: any[]): any {
|
|
26
|
-
if (isArray(typeName)) return typeName;
|
|
27
|
-
|
|
28
|
-
if (isFunction(typeName) && isUndefined(props))
|
|
29
|
-
return createFunctionalComponent((config: any) => typeName(flattenProps(config)));
|
|
30
|
-
|
|
31
|
-
if (typeName.type || typeName.$type) return typeName;
|
|
32
|
-
|
|
33
|
-
if (children && children.length == 0) children = [];
|
|
34
|
-
|
|
35
|
-
if (children && children.length == 1) children = children[0];
|
|
36
|
-
|
|
37
|
-
if (typeName == "cx") return children;
|
|
38
|
-
|
|
39
|
-
if (typeName == "react") return react(children);
|
|
40
|
-
|
|
41
|
-
if (isString(typeName) && typeName[0] == typeName[0].toLowerCase()) typeName = getHtmlElementFactory(typeName);
|
|
42
|
-
|
|
43
|
-
return {
|
|
44
|
-
$type: typeName,
|
|
45
|
-
$props: props,
|
|
46
|
-
jsxAttributes: props && Object.keys(props),
|
|
47
|
-
children,
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
export function react(config: any): any {
|
|
52
|
-
if (!config || isString(config) || isNumber(config) || VDOM.isValidElement(config)) return config;
|
|
53
|
-
|
|
54
|
-
if (isArray(config)) return config.map(react);
|
|
55
|
-
|
|
56
|
-
let type = config.$type;
|
|
57
|
-
|
|
58
|
-
if (isComponentFactory(type) && type.$meta && type.$meta.tag) type = type.$meta.tag;
|
|
59
|
-
|
|
60
|
-
if (isArray(config.children)) return VDOM.createElement(type, config.$props, ...config.children.map(react));
|
|
61
|
-
|
|
62
|
-
return VDOM.createElement(type, config.$props, react(config.children));
|
|
63
|
-
}
|
|
1
|
+
import { HtmlElement } from "./HtmlElement";
|
|
2
|
+
import { VDOM } from "../ui/Widget";
|
|
3
|
+
import { createComponentFactory, isComponentFactory } from "../util/Component";
|
|
4
|
+
import { createFunctionalComponent } from "../ui/createFunctionalComponent";
|
|
5
|
+
import { isString } from "../util/isString";
|
|
6
|
+
import { isNumber } from "../util/isNumber";
|
|
7
|
+
import { isFunction } from "../util/isFunction";
|
|
8
|
+
import { isUndefined } from "../util/isUndefined";
|
|
9
|
+
import { isArray } from "../util/isArray";
|
|
10
|
+
|
|
11
|
+
import { flattenProps } from "../ui/flattenProps";
|
|
12
|
+
|
|
13
|
+
let htmlFactoryCache: Record<string, any> = {};
|
|
14
|
+
|
|
15
|
+
function getHtmlElementFactory(tagName: string): any {
|
|
16
|
+
let factory = htmlFactoryCache[tagName];
|
|
17
|
+
if (factory) return factory;
|
|
18
|
+
return (htmlFactoryCache[tagName] = createComponentFactory(
|
|
19
|
+
() => {},
|
|
20
|
+
(config: any) => HtmlElement.create(HtmlElement, { tag: tagName }, flattenProps(config)),
|
|
21
|
+
{ tag: tagName },
|
|
22
|
+
));
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export function cx(typeName: any, props?: any, ...children: any[]): any {
|
|
26
|
+
if (isArray(typeName)) return typeName;
|
|
27
|
+
|
|
28
|
+
if (isFunction(typeName) && isUndefined(props))
|
|
29
|
+
return createFunctionalComponent((config: any) => typeName(flattenProps(config)));
|
|
30
|
+
|
|
31
|
+
if (typeName.type || typeName.$type) return typeName;
|
|
32
|
+
|
|
33
|
+
if (children && children.length == 0) children = [];
|
|
34
|
+
|
|
35
|
+
if (children && children.length == 1) children = children[0];
|
|
36
|
+
|
|
37
|
+
if (typeName == "cx") return children;
|
|
38
|
+
|
|
39
|
+
if (typeName == "react") return react(children);
|
|
40
|
+
|
|
41
|
+
if (isString(typeName) && typeName[0] == typeName[0].toLowerCase()) typeName = getHtmlElementFactory(typeName);
|
|
42
|
+
|
|
43
|
+
return {
|
|
44
|
+
$type: typeName,
|
|
45
|
+
$props: props,
|
|
46
|
+
jsxAttributes: props && Object.keys(props),
|
|
47
|
+
children,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export function react(config: any): any {
|
|
52
|
+
if (!config || isString(config) || isNumber(config) || VDOM.isValidElement(config)) return config;
|
|
53
|
+
|
|
54
|
+
if (isArray(config)) return config.map(react);
|
|
55
|
+
|
|
56
|
+
let type = config.$type;
|
|
57
|
+
|
|
58
|
+
if (isComponentFactory(type) && type.$meta && type.$meta.tag) type = type.$meta.tag;
|
|
59
|
+
|
|
60
|
+
if (isArray(config.children)) return VDOM.createElement(type, config.$props, ...config.children.map(react));
|
|
61
|
+
|
|
62
|
+
return VDOM.createElement(type, config.$props, react(config.children));
|
|
63
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/** @jsxImportSource react */
|
|
2
2
|
|
|
3
3
|
import { Widget, VDOM } from "../../ui/Widget";
|
|
4
|
-
import { ContainerBase, ContainerConfig } from "../../ui/Container";
|
|
4
|
+
import { ContainerBase, ContainerConfig, StyledContainerBase, StyledContainerConfig } from "../../ui/Container";
|
|
5
5
|
import { ddMouseDown, ddDetect, ddMouseUp, initiateDragDrop, isDragHandleEvent } from "./ops";
|
|
6
6
|
import { preventFocus } from "../../ui/FocusManager";
|
|
7
7
|
import { parseStyle } from "../../util/parseStyle";
|
|
@@ -9,7 +9,7 @@ import { Instance } from "../../ui/Instance";
|
|
|
9
9
|
import { StringProp, StyleProp, ClassProp, Config } from "../../ui/Prop";
|
|
10
10
|
import { RenderingContext } from "../../ui/RenderingContext";
|
|
11
11
|
|
|
12
|
-
export interface DragSourceConfig extends
|
|
12
|
+
export interface DragSourceConfig extends StyledContainerConfig {
|
|
13
13
|
/**
|
|
14
14
|
* Data about the drag source that can be used by drop zones to test if
|
|
15
15
|
* drag source is acceptable and to perform drop operations.
|
|
@@ -54,7 +54,7 @@ export interface DragSourceInstance extends Instance<DragSource> {
|
|
|
54
54
|
dragHandles: any[];
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
export class DragSource extends
|
|
57
|
+
export class DragSource extends StyledContainerBase<DragSourceConfig, DragSourceInstance> {
|
|
58
58
|
declare styled: boolean;
|
|
59
59
|
declare baseClass: string;
|
|
60
60
|
declare hideOnDrag: boolean;
|
|
@@ -105,7 +105,6 @@ export class DragSource extends ContainerBase<DragSourceConfig, DragSourceInstan
|
|
|
105
105
|
}
|
|
106
106
|
}
|
|
107
107
|
|
|
108
|
-
DragSource.prototype.styled = true;
|
|
109
108
|
DragSource.prototype.baseClass = "dragsource";
|
|
110
109
|
DragSource.prototype.hideOnDrag = false;
|
|
111
110
|
DragSource.prototype.handled = false;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/** @jsxImportSource react */
|
|
2
2
|
|
|
3
3
|
import { Widget, VDOM } from "../../ui/Widget";
|
|
4
|
-
import { ContainerBase, ContainerConfig } from "../../ui/Container";
|
|
4
|
+
import { ContainerBase, ContainerConfig, StyledContainerBase, StyledContainerConfig } from "../../ui/Container";
|
|
5
5
|
import { parseStyle } from "../../util/parseStyle";
|
|
6
6
|
import { registerDropZone, DragDropContext, DragEvent } from "./ops";
|
|
7
7
|
import { findScrollableParent } from "../../util/findScrollableParent";
|
|
@@ -11,7 +11,7 @@ import { Instance } from "../../ui/Instance";
|
|
|
11
11
|
import { StyleProp, ClassProp, StructuredProp } from "../../ui/Prop";
|
|
12
12
|
import { RenderingContext } from "../../ui/RenderingContext";
|
|
13
13
|
|
|
14
|
-
export interface DropZoneConfig extends
|
|
14
|
+
export interface DropZoneConfig extends StyledContainerConfig {
|
|
15
15
|
/** CSS styles to be applied when drag cursor is over the drop zone. */
|
|
16
16
|
overStyle?: StyleProp;
|
|
17
17
|
|
|
@@ -105,7 +105,7 @@ export interface DropZoneConfig extends ContainerConfig {
|
|
|
105
105
|
|
|
106
106
|
export interface DropZoneInstance extends Instance<DropZone> {}
|
|
107
107
|
|
|
108
|
-
export class DropZone extends
|
|
108
|
+
export class DropZone extends StyledContainerBase<DropZoneConfig, DropZoneInstance> {
|
|
109
109
|
declare styled: boolean;
|
|
110
110
|
declare nearDistance: number;
|
|
111
111
|
declare hinflate: number;
|
|
@@ -166,7 +166,6 @@ export class DropZone extends ContainerBase<DropZoneConfig, DropZoneInstance> {
|
|
|
166
166
|
}
|
|
167
167
|
}
|
|
168
168
|
|
|
169
|
-
DropZone.prototype.styled = true;
|
|
170
169
|
DropZone.prototype.nearDistance = 0;
|
|
171
170
|
DropZone.prototype.hinflate = 0;
|
|
172
171
|
DropZone.prototype.vinflate = 0;
|
|
@@ -40,6 +40,9 @@ export interface CheckboxConfig extends FieldConfig {
|
|
|
40
40
|
|
|
41
41
|
/** View mode text. */
|
|
42
42
|
viewText?: StringProp;
|
|
43
|
+
|
|
44
|
+
/** Custom validation function. */
|
|
45
|
+
onValidate?: string | ((value: boolean, instance: Instance, validationParams: Record<string, unknown>) => unknown);
|
|
43
46
|
}
|
|
44
47
|
|
|
45
48
|
export class Checkbox extends Field<CheckboxConfig> {
|
|
@@ -44,6 +44,9 @@ export interface ColorFieldConfig extends FieldConfig {
|
|
|
44
44
|
|
|
45
45
|
/** Additional configuration to be passed to the dropdown, such as `style`, `positioning`, etc. */
|
|
46
46
|
dropdownOptions?: Partial<DropdownConfig>;
|
|
47
|
+
|
|
48
|
+
/** Custom validation function. */
|
|
49
|
+
onValidate?: string | ((value: string, instance: Instance, validationParams: Record<string, unknown>) => unknown);
|
|
47
50
|
}
|
|
48
51
|
|
|
49
52
|
export class ColorFieldInstance<F extends ColorField = ColorField> extends FieldInstance<F> implements DropdownWidgetProps {
|
|
@@ -112,6 +112,11 @@ export interface DateTimeFieldConfig extends FieldConfig {
|
|
|
112
112
|
|
|
113
113
|
/** Additional configuration to be passed to the dropdown. */
|
|
114
114
|
dropdownOptions?: Partial<DropdownConfig>;
|
|
115
|
+
|
|
116
|
+
/** Custom validation function. */
|
|
117
|
+
onValidate?:
|
|
118
|
+
| string
|
|
119
|
+
| ((value: string | Date, instance: Instance, validationParams: Record<string, unknown>) => unknown);
|
|
115
120
|
}
|
|
116
121
|
|
|
117
122
|
export class DateTimeField extends Field<DateTimeFieldConfig> {
|
|
@@ -104,9 +104,6 @@ export interface FieldConfig extends PureContainerConfig, WidgetStyleConfig {
|
|
|
104
104
|
/** Additional content to be displayed next to the field. */
|
|
105
105
|
help?: string | Config;
|
|
106
106
|
|
|
107
|
-
/** Custom validation function. */
|
|
108
|
-
onValidate?: string | ((value: unknown, instance: Instance, validationParams: Record<string, unknown>) => unknown);
|
|
109
|
-
|
|
110
107
|
/** Validation parameters to be passed to the validation function. */
|
|
111
108
|
validationParams?: Config;
|
|
112
109
|
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
import { isSelector } from
|
|
2
|
-
import type { Instance } from
|
|
3
|
-
import type { CxChild, RenderingContext } from
|
|
4
|
-
import { Widget } from
|
|
5
|
-
import { FieldGroup, FieldGroupConfig } from
|
|
6
|
-
import { Label } from
|
|
7
|
-
import { StringProp, Config, BooleanProp } from
|
|
1
|
+
import { isSelector } from "../../data/isSelector";
|
|
2
|
+
import type { Instance } from "../../ui/Instance";
|
|
3
|
+
import type { CxChild, RenderingContext } from "../../ui/RenderingContext";
|
|
4
|
+
import { Widget } from "../../ui/Widget";
|
|
5
|
+
import { FieldGroup, FieldGroupConfig } from "./FieldGroup";
|
|
6
|
+
import { Label, LabelConfig } from "./Label";
|
|
7
|
+
import { StringProp, Config, BooleanProp, ModProp } from "../../ui/Prop";
|
|
8
|
+
import { Create } from "../../util/Component";
|
|
8
9
|
|
|
9
10
|
export interface LabeledContainerConfig extends FieldGroupConfig {
|
|
10
11
|
/** The label. */
|
|
11
|
-
label?: StringProp |
|
|
12
|
+
label?: StringProp | Create<typeof Widget> | LabelConfig;
|
|
12
13
|
|
|
13
14
|
/** Set to true to disable the field. */
|
|
14
15
|
disabled?: BooleanProp;
|
|
15
16
|
|
|
16
17
|
/** CSS modifier classes. */
|
|
17
|
-
mod?:
|
|
18
|
+
mod?: ModProp;
|
|
18
19
|
|
|
19
20
|
/** Set to true to display an asterisk next to the label. */
|
|
20
21
|
asterisk?: BooleanProp;
|
|
21
22
|
}
|
|
22
23
|
|
|
23
|
-
export class LabeledContainer extends FieldGroup<LabeledContainerConfig>
|
|
24
|
-
{
|
|
24
|
+
export class LabeledContainer extends FieldGroup<LabeledContainerConfig> {
|
|
25
25
|
declare label?: string | Record<string, unknown> | Label | Widget; // Can be string, selector, Label widget config, or Widget
|
|
26
26
|
declare disabled?: boolean;
|
|
27
27
|
declare mod?: Record<string, unknown>;
|
|
@@ -29,26 +29,23 @@ export class LabeledContainer extends FieldGroup<LabeledContainerConfig>
|
|
|
29
29
|
|
|
30
30
|
declareData(...args: Record<string, unknown>[]): void {
|
|
31
31
|
super.declareData(...args, {
|
|
32
|
-
label: undefined
|
|
32
|
+
label: undefined,
|
|
33
33
|
});
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
init(): void {
|
|
36
|
+
init(): void {
|
|
37
37
|
if (this.label != null) {
|
|
38
38
|
let labelConfig: any = {
|
|
39
39
|
type: Label,
|
|
40
40
|
disabled: this.disabled,
|
|
41
41
|
mod: this.mod,
|
|
42
42
|
asterisk: this.asterisk,
|
|
43
|
-
required: true
|
|
43
|
+
required: true,
|
|
44
44
|
};
|
|
45
45
|
|
|
46
|
-
if ((this.label as any).isComponentType)
|
|
47
|
-
|
|
48
|
-
else
|
|
49
|
-
labelConfig.text = this.label;
|
|
50
|
-
else
|
|
51
|
-
Object.assign(labelConfig, this.label);
|
|
46
|
+
if ((this.label as any).isComponentType) labelConfig = this.label as Record<string, unknown>;
|
|
47
|
+
else if (isSelector(this.label)) labelConfig.text = this.label;
|
|
48
|
+
else Object.assign(labelConfig, this.label);
|
|
52
49
|
|
|
53
50
|
this.label = Widget.create(labelConfig);
|
|
54
51
|
}
|
|
@@ -58,24 +55,23 @@ export class LabeledContainer extends FieldGroup<LabeledContainerConfig>
|
|
|
58
55
|
|
|
59
56
|
initComponents(context: RenderingContext, instance: Instance, ...args: Record<string, unknown>[]): void {
|
|
60
57
|
return super.initComponents(context, instance, ...args, {
|
|
61
|
-
label: this.label
|
|
58
|
+
label: this.label,
|
|
62
59
|
});
|
|
63
60
|
}
|
|
64
61
|
|
|
65
62
|
renderLabel(context: RenderingContext, instance: Instance, key?: string): CxChild {
|
|
66
|
-
if (instance.components && instance.components.label)
|
|
67
|
-
return instance.components.label.render(context);
|
|
63
|
+
if (instance.components && instance.components.label) return instance.components.label.render(context);
|
|
68
64
|
return null;
|
|
69
65
|
}
|
|
70
66
|
|
|
71
67
|
render(context: RenderingContext, instance: Instance, key: string): { label: CxChild; content: CxChild } {
|
|
72
68
|
return {
|
|
73
69
|
label: this.renderLabel(context, instance),
|
|
74
|
-
content: this.renderChildren(context, instance)
|
|
75
|
-
}
|
|
70
|
+
content: this.renderChildren(context, instance),
|
|
71
|
+
};
|
|
76
72
|
}
|
|
77
73
|
}
|
|
78
74
|
|
|
79
75
|
LabeledContainer.prototype.styled = true;
|
|
80
76
|
|
|
81
|
-
Widget.alias(
|
|
77
|
+
Widget.alias("labeled-container", LabeledContainer);
|