@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 CHANGED
@@ -1,38 +1,38 @@
1
- # react-forms
2
-
3
- ![gemstone logo](https://raw.githubusercontent.com/gemstone/web/master/docs/img/gemstone-wide-600.png)
4
-
5
- The Gemstone Web Library organizes all Gemstone functionality related to web.
6
-
7
- [![GitHub license](https://img.shields.io/github/license/gemstone/web?color=4CC61E)](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
+ ![gemstone logo](https://raw.githubusercontent.com/gemstone/web/master/docs/img/gemstone-wide-600.png)
4
+
5
+ The Gemstone Web Library organizes all Gemstone functionality related to web.
6
+
7
+ [![GitHub license](https://img.shields.io/github/license/gemstone/web?color=4CC61E)](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,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  export default function ArrayCheckBoxes<T>(props: {
2
3
  Record: T;
3
4
  Field: keyof T;
@@ -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, il = from.length, j = to.length; i < il; i++, j++)
37
- to[j] = from[i];
38
- return to;
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);
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  export default function DateRangePicker<T>(props: {
2
3
  Record: T;
3
4
  FromField: keyof T;
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  export default function DoubleInput<T>(props: {
2
3
  Record: T;
3
4
  Field1: keyof T;
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  export default function EnumCheckBoxes<T>(props: {
2
3
  Record: T;
3
4
  Field: keyof T;
@@ -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
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  interface IProps<T> {
2
3
  Record: T;
3
4
  Field: keyof T;
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;
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  declare const MultiSelect: (props: {
2
3
  Options: {
3
4
  Value: number;
@@ -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
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  interface IProps<T> {
2
3
  Record: T;
3
4
  Field: keyof T;
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
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  export default function TextArea<T>(props: {
2
3
  Rows: number;
3
4
  Record: T;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gpa-gemstone/react-forms",
3
- "version": "1.1.14",
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": "^26.0.4",
39
+ "@types/jest": "^27.0.0",
40
40
  "jest": "^27.0.6",
41
41
  "prettier": "^2.3.2",
42
- "ts-jest": "^27.0.3",
42
+ "ts-jest": "^27.0.4",
43
43
  "tslint": "^6.1.3",
44
44
  "tslint-config-prettier": "^1.18.0",
45
- "typescript": "4.3.4"
45
+ "typescript": "4.4.4"
46
46
  },
47
47
  "dependencies": {
48
- "@gpa-gemstone/helper-functions": "0.0.9",
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.0"
52
+ "styled-components": "^5.3.3"
53
53
  },
54
54
  "publishConfig": {
55
55
  "access": "public"