@react-typed-forms/schemas 10.0.3 → 10.1.0
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/lib/components/CheckRenderer.d.ts +25 -0
- package/lib/createDefaultRenderers.d.ts +4 -2
- package/lib/index.d.ts +1 -1
- package/lib/index.js +120 -63
- package/lib/index.js.map +1 -1
- package/lib/schemaBuilder.d.ts +6 -30
- package/lib/tailwind.d.ts +4 -0
- package/package.json +1 -1
- package/lib/components/RadioRenderer.d.ts +0 -20
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { FieldOption } from "../types";
|
|
2
|
+
import { Control } from "@react-typed-forms/core";
|
|
3
|
+
import React from "react";
|
|
4
|
+
export interface CheckRendererOptions {
|
|
5
|
+
className?: string;
|
|
6
|
+
entryClass?: string;
|
|
7
|
+
checkClass?: string;
|
|
8
|
+
labelClass?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function createRadioRenderer(options?: CheckRendererOptions): import("../renderers").DataRendererRegistration;
|
|
11
|
+
export declare function createCheckListRenderer(options?: CheckRendererOptions): import("../renderers").DataRendererRegistration;
|
|
12
|
+
export declare function CheckButtons({ control, options, labelClass, checkClass, readonly, entryClass, className, id, type, isChecked, setChecked, }: {
|
|
13
|
+
id?: string;
|
|
14
|
+
className?: string;
|
|
15
|
+
options?: FieldOption[] | null;
|
|
16
|
+
control: Control<any>;
|
|
17
|
+
entryClass?: string;
|
|
18
|
+
checkClass?: string;
|
|
19
|
+
labelClass?: string;
|
|
20
|
+
readonly?: boolean;
|
|
21
|
+
type: "checkbox" | "radio";
|
|
22
|
+
isChecked: (c: Control<any>, o: FieldOption) => boolean;
|
|
23
|
+
setChecked: (c: Control<any>, o: FieldOption, checked: boolean) => void;
|
|
24
|
+
}): React.JSX.Element;
|
|
25
|
+
export declare function setIncluded<A>(array: A[], elem: A, included: boolean): A[];
|
|
@@ -4,8 +4,8 @@ import { ActionRendererRegistration, AdornmentRendererRegistration, DataRenderer
|
|
|
4
4
|
import { CSSProperties, ReactElement, ReactNode } from "react";
|
|
5
5
|
import { FieldOption, GridRenderer } from "./types";
|
|
6
6
|
import { SelectRendererOptions } from "./components/SelectDataRenderer";
|
|
7
|
-
import { RadioRendererOptions } from "./components/RadioRenderer";
|
|
8
7
|
import { DefaultArrayRendererOptions } from "./components/DefaultArrayRenderer";
|
|
8
|
+
import { CheckRendererOptions } from "./components/CheckRenderer";
|
|
9
9
|
export interface DefaultRendererOptions {
|
|
10
10
|
data?: DefaultDataRendererOptions;
|
|
11
11
|
display?: DefaultDisplayRendererOptions;
|
|
@@ -39,7 +39,9 @@ interface DefaultDataRendererOptions {
|
|
|
39
39
|
inputClass?: string;
|
|
40
40
|
displayOnlyClass?: string;
|
|
41
41
|
selectOptions?: SelectRendererOptions;
|
|
42
|
-
|
|
42
|
+
checkOptions?: CheckRendererOptions;
|
|
43
|
+
radioOptions?: CheckRendererOptions;
|
|
44
|
+
checkListOptions?: CheckRendererOptions;
|
|
43
45
|
booleanOptions?: FieldOption[];
|
|
44
46
|
optionRenderer?: DataRendererRegistration;
|
|
45
47
|
}
|
package/lib/index.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ export * from "./createFormRenderer";
|
|
|
13
13
|
export * from "./components/DefaultDisplay";
|
|
14
14
|
export * from "./components/ControlInput";
|
|
15
15
|
export * from "./components/SelectDataRenderer";
|
|
16
|
-
export * from "./components/
|
|
16
|
+
export * from "./components/CheckRenderer";
|
|
17
17
|
export * from "./components/DefaultLayout";
|
|
18
18
|
export * from "./components/DefaultDisplayOnly";
|
|
19
19
|
export * from "./components/DefaultVisibility";
|
package/lib/index.js
CHANGED
|
@@ -1751,7 +1751,11 @@ var defaultTailwindTheme = {
|
|
|
1751
1751
|
errorClass: "text-sm text-danger-500"
|
|
1752
1752
|
},
|
|
1753
1753
|
data: {
|
|
1754
|
-
displayOnlyClass: "flex flex-row items-center gap-2"
|
|
1754
|
+
displayOnlyClass: "flex flex-row items-center gap-2",
|
|
1755
|
+
checkOptions: {
|
|
1756
|
+
className: "flex items-center gap-4",
|
|
1757
|
+
entryClass: "flex gap-1 items-center"
|
|
1758
|
+
}
|
|
1755
1759
|
}
|
|
1756
1760
|
};
|
|
1757
1761
|
|
|
@@ -2024,32 +2028,113 @@ function createInputConversion(ft) {
|
|
|
2024
2028
|
}
|
|
2025
2029
|
}
|
|
2026
2030
|
|
|
2031
|
+
function createDefaultArrayRenderer(options) {
|
|
2032
|
+
return {
|
|
2033
|
+
render: function render(props, _ref) {
|
|
2034
|
+
var renderAction = _ref.renderAction;
|
|
2035
|
+
return /*#__PURE__*/React__default["default"].createElement(DefaultArrayRenderer, _extends({}, props, options, {
|
|
2036
|
+
renderAction: renderAction
|
|
2037
|
+
}));
|
|
2038
|
+
},
|
|
2039
|
+
type: "array"
|
|
2040
|
+
};
|
|
2041
|
+
}
|
|
2042
|
+
function DefaultArrayRenderer(props) {
|
|
2043
|
+
var _effect = core.useComponentTracking();
|
|
2044
|
+
try {
|
|
2045
|
+
var renderElement = props.renderElement,
|
|
2046
|
+
className = props.className,
|
|
2047
|
+
removableClass = props.removableClass,
|
|
2048
|
+
childClass = props.childClass,
|
|
2049
|
+
removableChildClass = props.removableChildClass,
|
|
2050
|
+
removeActionClass = props.removeActionClass,
|
|
2051
|
+
addActionClass = props.addActionClass,
|
|
2052
|
+
arrayControl = props.arrayControl,
|
|
2053
|
+
renderAction = props.renderAction,
|
|
2054
|
+
style = props.style;
|
|
2055
|
+
var _applyArrayLengthRest = applyArrayLengthRestrictions(props),
|
|
2056
|
+
addAction = _applyArrayLengthRest.addAction,
|
|
2057
|
+
removeAction = _applyArrayLengthRest.removeAction;
|
|
2058
|
+
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
2059
|
+
style: style
|
|
2060
|
+
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
2061
|
+
className: clsx__default["default"](className, removeAction && removableClass)
|
|
2062
|
+
}, /*#__PURE__*/React__default["default"].createElement(core.RenderElements, {
|
|
2063
|
+
control: arrayControl
|
|
2064
|
+
}, function (_, x) {
|
|
2065
|
+
return removeAction ? /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
2066
|
+
className: clsx__default["default"](childClass, removableChildClass)
|
|
2067
|
+
}, renderElement(x)), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
2068
|
+
className: removeActionClass
|
|
2069
|
+
}, renderAction(removeAction(x)))) : /*#__PURE__*/React__default["default"].createElement("div", {
|
|
2070
|
+
className: childClass
|
|
2071
|
+
}, renderElement(x));
|
|
2072
|
+
})), addAction && /*#__PURE__*/React__default["default"].createElement("div", {
|
|
2073
|
+
className: addActionClass
|
|
2074
|
+
}, renderAction(addAction)));
|
|
2075
|
+
} finally {
|
|
2076
|
+
_effect();
|
|
2077
|
+
}
|
|
2078
|
+
}
|
|
2079
|
+
|
|
2027
2080
|
function createRadioRenderer(options) {
|
|
2028
2081
|
if (options === void 0) {
|
|
2029
2082
|
options = {};
|
|
2030
2083
|
}
|
|
2031
2084
|
return createDataRenderer(function (p) {
|
|
2032
|
-
return /*#__PURE__*/React__default["default"].createElement(
|
|
2085
|
+
return /*#__PURE__*/React__default["default"].createElement(CheckButtons, _extends({}, options, p, {
|
|
2033
2086
|
className: rendererClass(p.className, options.className),
|
|
2034
|
-
|
|
2087
|
+
isChecked: function isChecked(control, o) {
|
|
2088
|
+
return control.value == o.value;
|
|
2089
|
+
},
|
|
2090
|
+
setChecked: function setChecked(c, o) {
|
|
2091
|
+
return c.value = o.value;
|
|
2092
|
+
},
|
|
2093
|
+
control: p.control,
|
|
2094
|
+
type: "radio"
|
|
2035
2095
|
}));
|
|
2036
2096
|
}, {
|
|
2037
2097
|
renderType: exports.DataRenderType.Radio
|
|
2038
2098
|
});
|
|
2039
2099
|
}
|
|
2040
|
-
function
|
|
2100
|
+
function createCheckListRenderer(options) {
|
|
2101
|
+
if (options === void 0) {
|
|
2102
|
+
options = {};
|
|
2103
|
+
}
|
|
2104
|
+
return createDataRenderer(function (p) {
|
|
2105
|
+
return /*#__PURE__*/React__default["default"].createElement(CheckButtons, _extends({}, options, p, {
|
|
2106
|
+
className: rendererClass(p.className, options.className),
|
|
2107
|
+
isChecked: function isChecked(control, o) {
|
|
2108
|
+
var v = control.value;
|
|
2109
|
+
return Array.isArray(v) ? v.includes(o.value) : false;
|
|
2110
|
+
},
|
|
2111
|
+
setChecked: function setChecked(c, o, checked) {
|
|
2112
|
+
c.setValue(function (x) {
|
|
2113
|
+
return setIncluded(x != null ? x : [], o.value, checked);
|
|
2114
|
+
});
|
|
2115
|
+
},
|
|
2116
|
+
control: p.control,
|
|
2117
|
+
type: "checkbox"
|
|
2118
|
+
}));
|
|
2119
|
+
}, {
|
|
2120
|
+
renderType: exports.DataRenderType.CheckList
|
|
2121
|
+
});
|
|
2122
|
+
}
|
|
2123
|
+
function CheckButtons(_ref) {
|
|
2041
2124
|
var _effect = core.useComponentTracking();
|
|
2042
2125
|
try {
|
|
2043
2126
|
var control = _ref.control,
|
|
2044
2127
|
options = _ref.options,
|
|
2045
2128
|
labelClass = _ref.labelClass,
|
|
2046
|
-
|
|
2129
|
+
checkClass = _ref.checkClass,
|
|
2047
2130
|
readonly = _ref.readonly,
|
|
2048
2131
|
entryClass = _ref.entryClass,
|
|
2049
2132
|
className = _ref.className,
|
|
2050
|
-
id = _ref.id
|
|
2133
|
+
id = _ref.id,
|
|
2134
|
+
type = _ref.type,
|
|
2135
|
+
isChecked = _ref.isChecked,
|
|
2136
|
+
setChecked = _ref.setChecked;
|
|
2051
2137
|
var disabled = control.disabled;
|
|
2052
|
-
var canChange = !disabled && !readonly;
|
|
2053
2138
|
var name = "r" + control.uniqueId;
|
|
2054
2139
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
2055
2140
|
className: className,
|
|
@@ -2059,19 +2144,22 @@ function RadioButtons(_ref) {
|
|
|
2059
2144
|
return x.value != null;
|
|
2060
2145
|
})
|
|
2061
2146
|
}, function (o, i) {
|
|
2147
|
+
var checked = core.useComputed(function () {
|
|
2148
|
+
return isChecked(control, o);
|
|
2149
|
+
}).value;
|
|
2062
2150
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
2063
2151
|
key: i,
|
|
2064
2152
|
className: entryClass
|
|
2065
2153
|
}, /*#__PURE__*/React__default["default"].createElement("input", {
|
|
2066
2154
|
id: name + "_" + i,
|
|
2067
|
-
className:
|
|
2068
|
-
type:
|
|
2155
|
+
className: checkClass,
|
|
2156
|
+
type: type,
|
|
2069
2157
|
name: name,
|
|
2070
2158
|
readOnly: readonly,
|
|
2071
2159
|
disabled: disabled,
|
|
2072
|
-
checked:
|
|
2160
|
+
checked: checked,
|
|
2073
2161
|
onChange: function onChange(x) {
|
|
2074
|
-
return control
|
|
2162
|
+
return setChecked(control, o, x.target.checked);
|
|
2075
2163
|
}
|
|
2076
2164
|
}), /*#__PURE__*/React__default["default"].createElement("label", {
|
|
2077
2165
|
className: labelClass,
|
|
@@ -2082,54 +2170,17 @@ function RadioButtons(_ref) {
|
|
|
2082
2170
|
_effect();
|
|
2083
2171
|
}
|
|
2084
2172
|
}
|
|
2085
|
-
|
|
2086
|
-
|
|
2087
|
-
|
|
2088
|
-
|
|
2089
|
-
|
|
2090
|
-
|
|
2091
|
-
|
|
2092
|
-
}));
|
|
2093
|
-
},
|
|
2094
|
-
type: "array"
|
|
2095
|
-
};
|
|
2096
|
-
}
|
|
2097
|
-
function DefaultArrayRenderer(props) {
|
|
2098
|
-
var _effect = core.useComponentTracking();
|
|
2099
|
-
try {
|
|
2100
|
-
var renderElement = props.renderElement,
|
|
2101
|
-
className = props.className,
|
|
2102
|
-
removableClass = props.removableClass,
|
|
2103
|
-
childClass = props.childClass,
|
|
2104
|
-
removableChildClass = props.removableChildClass,
|
|
2105
|
-
removeActionClass = props.removeActionClass,
|
|
2106
|
-
addActionClass = props.addActionClass,
|
|
2107
|
-
arrayControl = props.arrayControl,
|
|
2108
|
-
renderAction = props.renderAction,
|
|
2109
|
-
style = props.style;
|
|
2110
|
-
var _applyArrayLengthRest = applyArrayLengthRestrictions(props),
|
|
2111
|
-
addAction = _applyArrayLengthRest.addAction,
|
|
2112
|
-
removeAction = _applyArrayLengthRest.removeAction;
|
|
2113
|
-
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
2114
|
-
style: style
|
|
2115
|
-
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
2116
|
-
className: clsx__default["default"](className, removeAction && removableClass)
|
|
2117
|
-
}, /*#__PURE__*/React__default["default"].createElement(core.RenderElements, {
|
|
2118
|
-
control: arrayControl
|
|
2119
|
-
}, function (_, x) {
|
|
2120
|
-
return removeAction ? /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
2121
|
-
className: clsx__default["default"](childClass, removableChildClass)
|
|
2122
|
-
}, renderElement(x)), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
2123
|
-
className: removeActionClass
|
|
2124
|
-
}, renderAction(removeAction(x)))) : /*#__PURE__*/React__default["default"].createElement("div", {
|
|
2125
|
-
className: childClass
|
|
2126
|
-
}, renderElement(x));
|
|
2127
|
-
})), addAction && /*#__PURE__*/React__default["default"].createElement("div", {
|
|
2128
|
-
className: addActionClass
|
|
2129
|
-
}, renderAction(addAction)));
|
|
2130
|
-
} finally {
|
|
2131
|
-
_effect();
|
|
2173
|
+
function setIncluded(array, elem, included) {
|
|
2174
|
+
var already = array.includes(elem);
|
|
2175
|
+
if (included === already) {
|
|
2176
|
+
return array;
|
|
2177
|
+
}
|
|
2178
|
+
if (included) {
|
|
2179
|
+
return [].concat(array, [elem]);
|
|
2132
2180
|
}
|
|
2181
|
+
return array.filter(function (e) {
|
|
2182
|
+
return e !== elem;
|
|
2183
|
+
});
|
|
2133
2184
|
}
|
|
2134
2185
|
|
|
2135
2186
|
function createDefaultActionRenderer(options) {
|
|
@@ -2214,11 +2265,13 @@ var DefaultBoolOptions = [{
|
|
|
2214
2265
|
value: false
|
|
2215
2266
|
}];
|
|
2216
2267
|
function createDefaultDataRenderer(options) {
|
|
2268
|
+
var _options$radioOptions, _options$checkListOpt;
|
|
2217
2269
|
if (options === void 0) {
|
|
2218
2270
|
options = {};
|
|
2219
2271
|
}
|
|
2220
2272
|
var selectRenderer = createSelectRenderer(options.selectOptions);
|
|
2221
|
-
var radioRenderer = createRadioRenderer(options.radioOptions);
|
|
2273
|
+
var radioRenderer = createRadioRenderer((_options$radioOptions = options.radioOptions) != null ? _options$radioOptions : options.checkOptions);
|
|
2274
|
+
var checkListRenderer = createCheckListRenderer((_options$checkListOpt = options.checkListOptions) != null ? _options$checkListOpt : options.checkOptions);
|
|
2222
2275
|
var _optionRenderer$boole = _extends({
|
|
2223
2276
|
optionRenderer: selectRenderer,
|
|
2224
2277
|
booleanOptions: DefaultBoolOptions
|
|
@@ -2229,14 +2282,15 @@ function createDefaultDataRenderer(options) {
|
|
|
2229
2282
|
displayOnlyClass = _optionRenderer$boole.displayOnlyClass;
|
|
2230
2283
|
return createDataRenderer(function (props, renderers) {
|
|
2231
2284
|
var fieldType = props.field.type;
|
|
2232
|
-
|
|
2285
|
+
var renderOptions = props.renderOptions;
|
|
2286
|
+
var renderType = renderOptions.type;
|
|
2287
|
+
if (props.toArrayProps && renderType !== exports.DataRenderType.CheckList) {
|
|
2233
2288
|
return function (p) {
|
|
2234
2289
|
return _extends({}, p, {
|
|
2235
2290
|
children: renderers.renderArray(props.toArrayProps())
|
|
2236
2291
|
});
|
|
2237
2292
|
};
|
|
2238
2293
|
}
|
|
2239
|
-
var renderOptions = props.renderOptions;
|
|
2240
2294
|
if (fieldType === exports.FieldType.Compound) {
|
|
2241
2295
|
var _ref5;
|
|
2242
2296
|
var groupOptions = (_ref5 = isDataGroupRenderer(renderOptions) ? renderOptions.groupOptions : undefined) != null ? _ref5 : {
|
|
@@ -2247,7 +2301,6 @@ function createDefaultDataRenderer(options) {
|
|
|
2247
2301
|
renderOptions: groupOptions
|
|
2248
2302
|
}));
|
|
2249
2303
|
}
|
|
2250
|
-
var renderType = renderOptions.type;
|
|
2251
2304
|
if (fieldType == exports.FieldType.Any) return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, "No control for Any");
|
|
2252
2305
|
if (isDisplayOnlyRenderer(renderOptions)) return function (p) {
|
|
2253
2306
|
return _extends({}, p, {
|
|
@@ -2272,6 +2325,8 @@ function createDefaultDataRenderer(options) {
|
|
|
2272
2325
|
return optionRenderer.render(props, renderers);
|
|
2273
2326
|
}
|
|
2274
2327
|
switch (renderType) {
|
|
2328
|
+
case exports.DataRenderType.CheckList:
|
|
2329
|
+
return checkListRenderer.render(props, renderers);
|
|
2275
2330
|
case exports.DataRenderType.Dropdown:
|
|
2276
2331
|
return selectRenderer.render(props, renderers);
|
|
2277
2332
|
case exports.DataRenderType.Radio:
|
|
@@ -2530,6 +2585,7 @@ function isArrayRegistration(x) {
|
|
|
2530
2585
|
}
|
|
2531
2586
|
|
|
2532
2587
|
exports.AppendAdornmentPriority = AppendAdornmentPriority;
|
|
2588
|
+
exports.CheckButtons = CheckButtons;
|
|
2533
2589
|
exports.ControlInput = ControlInput;
|
|
2534
2590
|
exports.ControlRenderer = ControlRenderer;
|
|
2535
2591
|
exports.DefaultBoolOptions = DefaultBoolOptions;
|
|
@@ -2538,7 +2594,6 @@ exports.DefaultDisplayOnly = DefaultDisplayOnly;
|
|
|
2538
2594
|
exports.DefaultLayout = DefaultLayout;
|
|
2539
2595
|
exports.DefaultSchemaInterface = DefaultSchemaInterface;
|
|
2540
2596
|
exports.DefaultVisibility = DefaultVisibility;
|
|
2541
|
-
exports.RadioButtons = RadioButtons;
|
|
2542
2597
|
exports.SelectDataRenderer = SelectDataRenderer;
|
|
2543
2598
|
exports.WrapAdornmentPriority = WrapAdornmentPriority;
|
|
2544
2599
|
exports.addFieldOption = addFieldOption;
|
|
@@ -2561,6 +2616,7 @@ exports.controlTitle = controlTitle;
|
|
|
2561
2616
|
exports.createAction = createAction;
|
|
2562
2617
|
exports.createAdornmentRenderer = createAdornmentRenderer;
|
|
2563
2618
|
exports.createArrayRenderer = createArrayRenderer;
|
|
2619
|
+
exports.createCheckListRenderer = createCheckListRenderer;
|
|
2564
2620
|
exports.createDataRenderer = createDataRenderer;
|
|
2565
2621
|
exports.createDefaultActionRenderer = createDefaultActionRenderer;
|
|
2566
2622
|
exports.createDefaultAdornmentRenderer = createDefaultAdornmentRenderer;
|
|
@@ -2646,6 +2702,7 @@ exports.renderControlLayout = renderControlLayout;
|
|
|
2646
2702
|
exports.renderLayoutParts = renderLayoutParts;
|
|
2647
2703
|
exports.rendererClass = rendererClass;
|
|
2648
2704
|
exports.resolveSchemas = resolveSchemas;
|
|
2705
|
+
exports.setIncluded = setIncluded;
|
|
2649
2706
|
exports.stringField = stringField;
|
|
2650
2707
|
exports.stringOptionsField = stringOptionsField;
|
|
2651
2708
|
exports.textDisplayControl = textDisplayControl;
|