@gpa-gemstone/react-forms 1.1.14 → 1.1.20
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/README.md +38 -38
- package/lib/ArrayCheckBoxes.d.ts +1 -0
- package/lib/ArrayCheckBoxes.js +10 -6
- package/lib/DateRangePicker.d.ts +1 -0
- package/lib/DoubleInput.d.ts +1 -0
- package/lib/EnumCheckBoxes.d.ts +1 -0
- package/lib/HelperMessage.js +3 -3
- package/lib/Input.d.ts +1 -0
- package/lib/Input.js +9 -5
- package/lib/MutliCheckBoxSelect.d.ts +1 -0
- package/lib/MutliCheckBoxSelect.js +0 -1
- package/lib/Select.d.ts +1 -0
- package/lib/Select.js +1 -1
- package/lib/TextArea.d.ts +1 -0
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -1,38 +1,38 @@
|
|
|
1
|
-
# react-forms
|
|
2
|
-
|
|
3
|
-

|
|
4
|
-
|
|
5
|
-
The Gemstone Web Library organizes all Gemstone functionality related to web.
|
|
6
|
-
|
|
7
|
-
[](https://github.com/gemstone/web/blob/master/LICENSE)
|
|
8
|
-
|
|
9
|
-
This library includes helpful npm package for creating strongly typed form components in react.
|
|
10
|
-
|
|
11
|
-
* Input
|
|
12
|
-
* CheckBox
|
|
13
|
-
* TextArea
|
|
14
|
-
* DatePicker
|
|
15
|
-
* Select
|
|
16
|
-
* EnumCheckBoxes
|
|
17
|
-
* DateRangePicker
|
|
18
|
-
* ArrayCheckBoxes
|
|
19
|
-
* ArrayMultiSelect
|
|
20
|
-
* MultiCheckBoxSelect
|
|
21
|
-
* DoubleInput
|
|
22
|
-
|
|
23
|
-
## Usage
|
|
24
|
-
|
|
25
|
-
```ts
|
|
26
|
-
interface iType = { Field1: string, Field2: number, Field3: boolean, Field4: string, Field5: string, EnumField: number, FromField: string, ToField: string}
|
|
27
|
-
let record:iType = {Field1: 'Hello', Field2: 1, Field3: false, Field4: 'alot of text blah blah blah', Field5: '01/01/2021', FromField: '01/01/2020', ToField: '01/01/2021'}
|
|
28
|
-
let options = [{Value: 1, Label: 'first'}, {Value:2, Label: 'second'}]
|
|
29
|
-
|
|
30
|
-
<Input<iType> Record={record} Field="Field1" Setter={(event) => record.Field1 = event.target.value} Valid={(field) => /*some criteria*/}>
|
|
31
|
-
<CheckBox<iType> Record={record} Field="Field3" Setter={(event) => record.Field3 = event.target.value}}>
|
|
32
|
-
<Select<iType> Record={record} Field="Field2" Setter={(event) => record.Field3 = event.target.value}} Options={options}>
|
|
33
|
-
<TextArea<iType> Record={record} Field="Field4" Setter={(event) => record.Field1 = event.target.value} Valid={(field) => /*some criteria*/}>
|
|
34
|
-
<DatePicker<iType> Record={record} Field="Field5" Setter={(event) => record.Field1 = event.target.value}>
|
|
35
|
-
<DateRangePicker<iType> Record={record} FromField="FromField" ToField="ToField" Label="Date Range" Setter={(event) => record.Field1 = event.target.value}>
|
|
36
|
-
<EnumCheckBoxes<iType> Record={record} Field="EnumField" Setter={(event) => record.Field3 = event.target.value}} Enum={['Monday', 'Tuesday','Wednesday']}>
|
|
37
|
-
<DoubleInput<iType> Record={record} Field1="Field4" Field1="Field5" Setter={(r) => record = r} Valid={(field) => /*some criteria*/}>
|
|
38
|
-
```
|
|
1
|
+
# react-forms
|
|
2
|
+
|
|
3
|
+

|
|
4
|
+
|
|
5
|
+
The Gemstone Web Library organizes all Gemstone functionality related to web.
|
|
6
|
+
|
|
7
|
+
[](https://github.com/gemstone/web/blob/master/LICENSE)
|
|
8
|
+
|
|
9
|
+
This library includes helpful npm package for creating strongly typed form components in react.
|
|
10
|
+
|
|
11
|
+
* Input
|
|
12
|
+
* CheckBox
|
|
13
|
+
* TextArea
|
|
14
|
+
* DatePicker
|
|
15
|
+
* Select
|
|
16
|
+
* EnumCheckBoxes
|
|
17
|
+
* DateRangePicker
|
|
18
|
+
* ArrayCheckBoxes
|
|
19
|
+
* ArrayMultiSelect
|
|
20
|
+
* MultiCheckBoxSelect
|
|
21
|
+
* DoubleInput
|
|
22
|
+
|
|
23
|
+
## Usage
|
|
24
|
+
|
|
25
|
+
```ts
|
|
26
|
+
interface iType = { Field1: string, Field2: number, Field3: boolean, Field4: string, Field5: string, EnumField: number, FromField: string, ToField: string}
|
|
27
|
+
let record:iType = {Field1: 'Hello', Field2: 1, Field3: false, Field4: 'alot of text blah blah blah', Field5: '01/01/2021', FromField: '01/01/2020', ToField: '01/01/2021'}
|
|
28
|
+
let options = [{Value: 1, Label: 'first'}, {Value:2, Label: 'second'}]
|
|
29
|
+
|
|
30
|
+
<Input<iType> Record={record} Field="Field1" Setter={(event) => record.Field1 = event.target.value} Valid={(field) => /*some criteria*/}>
|
|
31
|
+
<CheckBox<iType> Record={record} Field="Field3" Setter={(event) => record.Field3 = event.target.value}}>
|
|
32
|
+
<Select<iType> Record={record} Field="Field2" Setter={(event) => record.Field3 = event.target.value}} Options={options}>
|
|
33
|
+
<TextArea<iType> Record={record} Field="Field4" Setter={(event) => record.Field1 = event.target.value} Valid={(field) => /*some criteria*/}>
|
|
34
|
+
<DatePicker<iType> Record={record} Field="Field5" Setter={(event) => record.Field1 = event.target.value}>
|
|
35
|
+
<DateRangePicker<iType> Record={record} FromField="FromField" ToField="ToField" Label="Date Range" Setter={(event) => record.Field1 = event.target.value}>
|
|
36
|
+
<EnumCheckBoxes<iType> Record={record} Field="EnumField" Setter={(event) => record.Field3 = event.target.value}} Enum={['Monday', 'Tuesday','Wednesday']}>
|
|
37
|
+
<DoubleInput<iType> Record={record} Field1="Field4" Field1="Field5" Setter={(r) => record = r} Valid={(field) => /*some criteria*/}>
|
|
38
|
+
```
|
package/lib/ArrayCheckBoxes.d.ts
CHANGED
package/lib/ArrayCheckBoxes.js
CHANGED
|
@@ -32,22 +32,26 @@ var __assign = (this && this.__assign) || function () {
|
|
|
32
32
|
};
|
|
33
33
|
return __assign.apply(this, arguments);
|
|
34
34
|
};
|
|
35
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from) {
|
|
36
|
-
for (var i = 0,
|
|
37
|
-
|
|
38
|
-
|
|
35
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
36
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
37
|
+
if (ar || !(i in from)) {
|
|
38
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
39
|
+
ar[i] = from[i];
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
39
43
|
};
|
|
40
44
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
45
|
var React = require("react");
|
|
42
46
|
function ArrayCheckBoxes(props) {
|
|
43
47
|
var Remove = function (cb) {
|
|
44
|
-
var a = __spreadArray([], props.Record[props.Field]);
|
|
48
|
+
var a = __spreadArray([], props.Record[props.Field], true);
|
|
45
49
|
var i = a.indexOf(cb.ID);
|
|
46
50
|
a.splice(i, 1);
|
|
47
51
|
return a;
|
|
48
52
|
};
|
|
49
53
|
var Add = function (cb) {
|
|
50
|
-
var a = __spreadArray([], props.Record[props.Field]);
|
|
54
|
+
var a = __spreadArray([], props.Record[props.Field], true);
|
|
51
55
|
var i = a.indexOf(cb.ID);
|
|
52
56
|
if (i < 0)
|
|
53
57
|
a.push(cb.ID);
|
package/lib/DateRangePicker.d.ts
CHANGED
package/lib/DoubleInput.d.ts
CHANGED
package/lib/EnumCheckBoxes.d.ts
CHANGED
package/lib/HelperMessage.js
CHANGED
|
@@ -36,7 +36,7 @@ var HelperMessage = function (props) {
|
|
|
36
36
|
var _c = React.useState(0), width = _c[0], setWidth = _c[1];
|
|
37
37
|
var _d = React.useState(""), guid = _d[0], setGuid = _d[1];
|
|
38
38
|
React.useEffect(function () {
|
|
39
|
-
setGuid(helper_functions_1.CreateGuid());
|
|
39
|
+
setGuid((0, helper_functions_1.CreateGuid)());
|
|
40
40
|
}, []);
|
|
41
41
|
React.useLayoutEffect(function () {
|
|
42
42
|
var _a = UpdatePosition(), t = _a[0], l = _a[1], w = _a[2];
|
|
@@ -52,11 +52,11 @@ var HelperMessage = function (props) {
|
|
|
52
52
|
var target = document.querySelectorAll("[data-help" + (props.Target === undefined ? '' : "=\"" + props.Target + "\"") + "]");
|
|
53
53
|
if (target.length === 0)
|
|
54
54
|
return [-999, -999];
|
|
55
|
-
var targetLocation = helper_functions_1.GetNodeSize(target[0]);
|
|
55
|
+
var targetLocation = (0, helper_functions_1.GetNodeSize)(target[0]);
|
|
56
56
|
var message = document.getElementById(guid);
|
|
57
57
|
if (message === null)
|
|
58
58
|
return [-999, -999];
|
|
59
|
-
var msgLocation = helper_functions_1.GetNodeSize(message);
|
|
59
|
+
var msgLocation = (0, helper_functions_1.GetNodeSize)(message);
|
|
60
60
|
var offset = 5;
|
|
61
61
|
var result = [0, 0, 0];
|
|
62
62
|
result[0] = targetLocation.top + targetLocation.height + offset;
|
package/lib/Input.d.ts
CHANGED
package/lib/Input.js
CHANGED
|
@@ -42,8 +42,15 @@ function Input(props) {
|
|
|
42
42
|
var _a = React.useState(""), guid = _a[0], setGuid = _a[1];
|
|
43
43
|
var _b = React.useState(false), showHelp = _b[0], setShowHelp = _b[1];
|
|
44
44
|
React.useEffect(function () {
|
|
45
|
-
setGuid(helper_functions_1.CreateGuid());
|
|
45
|
+
setGuid((0, helper_functions_1.CreateGuid)());
|
|
46
46
|
}, []);
|
|
47
|
+
function valueChange(evt) {
|
|
48
|
+
var _a, _b;
|
|
49
|
+
if (props.Type === 'number')
|
|
50
|
+
props.Setter(__assign(__assign({}, props.Record), (_a = {}, _a[props.Field] = evt.target.value !== '' ? parseFloat(evt.target.value) : null, _a)));
|
|
51
|
+
else
|
|
52
|
+
props.Setter(__assign(__assign({}, props.Record), (_b = {}, _b[props.Field] = evt.target.value !== '' ? evt.target.value : null, _b)));
|
|
53
|
+
}
|
|
47
54
|
return (React.createElement("div", { className: "form-group" },
|
|
48
55
|
React.createElement("label", null,
|
|
49
56
|
props.Label == null ? props.Field : props.Label,
|
|
@@ -51,10 +58,7 @@ function Input(props) {
|
|
|
51
58
|
props.Help !== undefined ?
|
|
52
59
|
React.createElement(HelperMessage_1.default, { Show: showHelp, Target: guid }, props.Help)
|
|
53
60
|
: null,
|
|
54
|
-
React.createElement("input", { "data-help": guid, type: props.Type === undefined ? 'text' : props.Type, className: props.Valid(props.Field) ? 'form-control' : 'form-control is-invalid', onChange: function (evt) {
|
|
55
|
-
var _a;
|
|
56
|
-
return props.Setter(__assign(__assign({}, props.Record), (_a = {}, _a[props.Field] = evt.target.value !== '' ? evt.target.value : null, _a)));
|
|
57
|
-
}, value: props.Record[props.Field] == null ? '' : props.Record[props.Field].toString(), disabled: props.Disabled == null ? false : props.Disabled }),
|
|
61
|
+
React.createElement("input", { "data-help": guid, type: props.Type === undefined ? 'text' : props.Type, className: props.Valid(props.Field) ? 'form-control' : 'form-control is-invalid', onChange: function (evt) { return valueChange(evt); }, value: props.Record[props.Field] == null ? '' : props.Record[props.Field].toString(), disabled: props.Disabled == null ? false : props.Disabled }),
|
|
58
62
|
React.createElement("div", { className: "invalid-feedback" }, props.Feedback == null ? props.Field + ' is a required field.' : props.Feedback)));
|
|
59
63
|
}
|
|
60
64
|
exports.default = Input;
|
|
@@ -27,7 +27,6 @@ var MultiSelect = function (props) {
|
|
|
27
27
|
var _a = React.useState(false), show = _a[0], setShow = _a[1];
|
|
28
28
|
var multiSelect = React.useRef(null);
|
|
29
29
|
function HandleShow(evt) {
|
|
30
|
-
evt.preventDefault();
|
|
31
30
|
if (multiSelect.current === null)
|
|
32
31
|
setShow(!show);
|
|
33
32
|
else if (!multiSelect.current.contains(evt.target))
|
package/lib/Select.d.ts
CHANGED
package/lib/Select.js
CHANGED
|
@@ -42,7 +42,7 @@ function Select(props) {
|
|
|
42
42
|
var _a = React.useState(""), guid = _a[0], setGuid = _a[1];
|
|
43
43
|
var _b = React.useState(false), showHelp = _b[0], setShowHelp = _b[1];
|
|
44
44
|
React.useEffect(function () {
|
|
45
|
-
setGuid(helper_functions_1.CreateGuid());
|
|
45
|
+
setGuid((0, helper_functions_1.CreateGuid)());
|
|
46
46
|
}, []);
|
|
47
47
|
return (React.createElement("div", { className: "form-group" },
|
|
48
48
|
React.createElement("label", null,
|
package/lib/TextArea.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gpa-gemstone/react-forms",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.20",
|
|
4
4
|
"description": "React Form modules for gpa webapps",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
@@ -36,20 +36,20 @@
|
|
|
36
36
|
},
|
|
37
37
|
"homepage": "https://github.com/GridProtectionAlliance/gpa-gemstone#readme",
|
|
38
38
|
"devDependencies": {
|
|
39
|
-
"@types/jest": "^
|
|
39
|
+
"@types/jest": "^27.0.0",
|
|
40
40
|
"jest": "^27.0.6",
|
|
41
41
|
"prettier": "^2.3.2",
|
|
42
|
-
"ts-jest": "^27.0.
|
|
42
|
+
"ts-jest": "^27.0.4",
|
|
43
43
|
"tslint": "^6.1.3",
|
|
44
44
|
"tslint-config-prettier": "^1.18.0",
|
|
45
|
-
"typescript": "4.
|
|
45
|
+
"typescript": "4.4.4"
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"@gpa-gemstone/helper-functions": "0.0.
|
|
48
|
+
"@gpa-gemstone/helper-functions": "0.0.14",
|
|
49
49
|
"@types/react": "^17.0.14",
|
|
50
50
|
"@types/styled-components": "^5.1.11",
|
|
51
51
|
"react": "^17.0.2",
|
|
52
|
-
"styled-components": "^5.3.
|
|
52
|
+
"styled-components": "^5.3.3"
|
|
53
53
|
},
|
|
54
54
|
"publishConfig": {
|
|
55
55
|
"access": "public"
|