@gpa-gemstone/common-pages 0.0.63 → 0.0.65

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/Note.d.ts CHANGED
@@ -12,6 +12,9 @@ interface IProps {
12
12
  AllowEdit?: boolean;
13
13
  AllowRemove?: boolean;
14
14
  AllowAdd?: boolean;
15
+ ShowCard?: boolean;
16
+ DefaultApplication?: OpenXDA.Types.NoteApplication;
17
+ Filter?: (note: OpenXDA.Types.Note) => boolean;
15
18
  }
16
19
  declare function Note(props: IProps): JSX.Element;
17
20
  export default Note;
package/lib/Note.js CHANGED
@@ -41,14 +41,53 @@ var moment = require("moment");
41
41
  var react_redux_1 = require("react-redux");
42
42
  function Note(props) {
43
43
  var dispatch = (0, react_redux_1.useDispatch)();
44
+ var standardCollumns = [
45
+ {
46
+ key: 'Note', field: 'Note', label: 'Note',
47
+ headerStyle: { width: '50%' }, rowStyle: { width: '50%' }
48
+ },
49
+ {
50
+ key: 'Timestamp', field: 'Timestamp', label: 'Time',
51
+ headerStyle: { width: 'auto' }, rowStyle: { width: 'auto' },
52
+ content: function (item) { return moment.utc(item.Timestamp).format("MM/DD/YYYY HH:mm"); }
53
+ },
54
+ {
55
+ key: 'UserAccount', field: 'UserAccount', label: 'User',
56
+ headerStyle: { width: 'auto' }, rowStyle: { width: 'auto' }
57
+ },
58
+ {
59
+ key: 'buttons',
60
+ label: '',
61
+ headerStyle: { width: 'auto' }, rowStyle: { width: 'auto' },
62
+ content: function (item) { return React.createElement(React.Fragment, null,
63
+ allowEdit ? React.createElement("button", { className: "btn btn-sm", onClick: function () { return handleEdit(item); } },
64
+ React.createElement("span", null,
65
+ " ",
66
+ gpa_symbols_1.Pencil,
67
+ " ")) : null,
68
+ allowRemove ? React.createElement("button", { className: "btn btn-sm", onClick: function () { return dispatch(props.NoteSlice.DBAction({ verb: 'DELETE', record: item })); } },
69
+ React.createElement("span", null,
70
+ " ",
71
+ gpa_symbols_1.TrashCan,
72
+ " ")) : null); }
73
+ }
74
+ ];
75
+ var allowEdit = props.AllowEdit === undefined ? true : props.AllowEdit;
76
+ var allowRemove = props.AllowRemove === undefined ? true : props.AllowRemove;
77
+ var allowAdd = props.AllowAdd === undefined ? true : props.AllowAdd;
78
+ var useFixedApp = props.NoteApplications.length === 1 || props.DefaultApplication !== undefined;
79
+ var defaultApplication = props.DefaultApplication !== undefined ? props.DefaultApplication : props.NoteApplications[0];
80
+ var showCard = props.ShowCard === undefined || props.ShowCard;
44
81
  var _a = React.useState(false), showEdit = _a[0], setEdit = _a[1];
45
82
  var _b = React.useState('none'), hover = _b[0], setHover = _b[1];
83
+ var _c = React.useState(standardCollumns), collumns = _c[0], setCollumns = _c[1];
46
84
  var data = (0, react_redux_1.useSelector)(props.NoteSlice.Data);
47
85
  var dataStatus = (0, react_redux_1.useSelector)(props.NoteSlice.Status);
48
86
  var parentID = (0, react_redux_1.useSelector)((props.NoteSlice.ParentID === undefined ? function (state) { return props.ReferenceTableID; } : props.NoteSlice.ParentID));
49
87
  var sortField = (0, react_redux_1.useSelector)(props.NoteSlice.SortField);
50
88
  var ascending = (0, react_redux_1.useSelector)(props.NoteSlice.Ascending);
51
- var _c = React.useState(CreateNewNote()), note = _c[0], setNote = _c[1];
89
+ var _d = React.useState(CreateNewNote()), note = _d[0], setNote = _d[1];
90
+ var _e = React.useState([]), notes = _e[0], setNotes = _e[1];
52
91
  React.useEffect(function () {
53
92
  if (dataStatus === 'unintiated' || dataStatus === 'changed' || parentID !== props.ReferenceTableID)
54
93
  dispatch(props.NoteSlice.Fetch(props.ReferenceTableID));
@@ -73,15 +112,25 @@ function Note(props) {
73
112
  return;
74
113
  setNote(function (n) { return (__assign(__assign({}, n), { ReferenceTableID: props.ReferenceTableID !== undefined ? props.ReferenceTableID : -1 })); });
75
114
  }, [props.ReferenceTableID]);
76
- var allowEdit = props.AllowEdit === undefined ? true : props.AllowEdit;
77
- var allowRemove = props.AllowRemove === undefined ? true : props.AllowRemove;
78
- var allowAdd = props.AllowAdd === undefined ? true : props.AllowAdd;
115
+ React.useEffect(function () {
116
+ var c = standardCollumns;
117
+ if (props.NoteTags.length > 1)
118
+ c.push({ key: 'NoteTagID', field: 'NoteTagID', label: 'Type', headerStyle: { width: 'auto' }, rowStyle: { width: 'auto' },
119
+ content: function (n) { var _a; return (_a = props.NoteTags.find(function (t) { return t.ID === n.NoteTagID; })) === null || _a === void 0 ? void 0 : _a.Name; } });
120
+ if (props.NoteApplications.length > 1)
121
+ c.push({ key: 'NoteApplicationID', field: 'NoteApplicationID', label: 'Application', headerStyle: { width: 'auto' }, rowStyle: { width: 'auto' },
122
+ content: function (n) { var _a; return (_a = props.NoteApplications.find(function (t) { return t.ID === n.NoteApplicationID; })) === null || _a === void 0 ? void 0 : _a.Name; } });
123
+ setCollumns(c);
124
+ }, [props.NoteTags, props.NoteApplications]);
125
+ React.useEffect(function () {
126
+ setNotes(data.filter(function (n) { return (props.Filter === undefined ? true : props.Filter(n)); }));
127
+ }, [props.Filter, data]);
79
128
  function CreateNewNote() {
80
129
  var newNote = { ID: -1, ReferenceTableID: -1, NoteTagID: -1, NoteTypeID: -1, NoteApplicationID: -1, Timestamp: '', UserAccount: '', Note: '' };
81
130
  if (props.ReferenceTableID !== undefined)
82
131
  newNote.ReferenceTableID = props.ReferenceTableID;
83
- if (props.NoteApplications.length > 0)
84
- newNote.NoteApplicationID = props.NoteApplications[0].ID;
132
+ if (defaultApplication != null)
133
+ newNote.NoteApplicationID = defaultApplication.ID;
85
134
  if (props.NoteTypes.length > 0)
86
135
  newNote.NoteTypeID = props.NoteTypes[0].ID;
87
136
  if (props.NoteTags.length > 0)
@@ -108,48 +157,47 @@ function Note(props) {
108
157
  return (React.createElement("div", { style: { width: '100%', height: '100%' } },
109
158
  React.createElement("div", { style: { height: '40px', margin: 'auto', marginTop: 'calc(50% - 20 px)' } },
110
159
  React.createElement(react_interactive_1.ServerErrorIcon, { Show: true, Size: 40, Label: 'A Server Error Occured. Please Reload the Application' }))));
111
- return (React.createElement("div", { className: "card", style: { marginBottom: 10, maxHeight: props.MaxHeight, width: '100%' } },
160
+ return (React.createElement("div", { className: showCard ? "card" : "", style: { marginBottom: 10, maxHeight: props.MaxHeight, width: '100%' } },
112
161
  React.createElement(react_interactive_1.LoadingScreen, { Show: dataStatus === 'loading' }),
113
- React.createElement("div", { className: "card-header" },
162
+ React.createElement("div", { className: props.ShowCard === undefined || props.ShowCard ? "card-header" : "" },
114
163
  React.createElement("div", { className: "row" },
115
164
  React.createElement("div", { className: "col" },
116
165
  React.createElement("h4", null, props.Title !== undefined ? props.Title : 'Notes:')))),
117
- React.createElement("div", { className: "card-body", style: { maxHeight: props.MaxHeight - 100, overflowY: 'auto', width: '100%' } },
166
+ React.createElement("div", { className: showCard ? "card-body" : "", style: { maxHeight: props.MaxHeight - 100, overflowY: 'auto', width: '100%' } },
167
+ allowAdd && !showCard ?
168
+ React.createElement(React.Fragment, null,
169
+ React.createElement(NoteOptions, { Record: note, Setter: function (n) { return setNote(n); }, NoteTags: props.NoteTags, NoteTypes: props.NoteTypes, NoteApplications: props.NoteApplications, ShowApplications: !useFixedApp }),
170
+ React.createElement("div", { className: "btn-group mr-2" },
171
+ React.createElement("button", { className: "btn btn-primary" + (note.Note === null || note.Note.length === 0 ? ' disabled' : ''), onClick: function () { if (note.Note !== null && note.Note.length > 0)
172
+ handleAdd(note); }, "data-tooltip": "Add", style: { cursor: note.Note === null || note.Note.length === 0 ? 'not-allowed' : 'pointer' }, onMouseOver: function () { return setHover('add'); }, onMouseOut: function () { return setHover('none'); } }, "Add Note"),
173
+ React.createElement(react_interactive_1.ToolTip, { Show: hover === 'add' && (note.Note === null || note.Note.length === 0), Position: 'top', Theme: 'dark', Target: "Add" },
174
+ React.createElement("p", null,
175
+ gpa_symbols_1.CrossMark,
176
+ " A note needs to be entered. "))),
177
+ React.createElement("div", { className: "btn-group mr-2" },
178
+ React.createElement("button", { className: "btn btn-default" + (note.Note === null || note.Note.length === 0 ? ' disabled' : ''), onClick: function () { return setNote(function (n) { return (__assign(__assign({}, n), { Note: '' })); }); }, style: { cursor: note.Note === null || note.Note.length === 0 ? 'not-allowed' : 'pointer' }, "data-tooltip": "Remove", onMouseOver: function () { return setHover('clear'); }, onMouseOut: function () { return setHover('none'); } }, "Clear"),
179
+ React.createElement(react_interactive_1.ToolTip, { Show: hover === 'clear' && (note.Note === null || note.Note.length === 0), Position: 'top', Theme: 'dark', Target: "Remove" },
180
+ React.createElement("p", null,
181
+ gpa_symbols_1.CrossMark,
182
+ " The note field is already empty. ")))) : null,
118
183
  React.createElement("div", null,
119
- React.createElement(react_table_1.default, { cols: [
120
- { key: 'Note', field: 'Note', label: 'Note', headerStyle: { width: '50%' }, rowStyle: { width: '50%' } },
121
- { key: 'Timestamp', field: 'Timestamp', label: 'Time', headerStyle: { width: 'auto' }, rowStyle: { width: 'auto' }, content: function (item) { return moment.utc(item.Timestamp).format("MM/DD/YYYY HH:mm"); } },
122
- { key: 'UserAccount', field: 'UserAccount', label: 'User', headerStyle: { width: 'auto' }, rowStyle: { width: 'auto' } },
123
- {
124
- key: 'buttons', label: '', headerStyle: { width: 'auto' }, rowStyle: { width: 'auto' }, content: function (item) { return React.createElement(React.Fragment, null,
125
- allowEdit ? React.createElement("button", { className: "btn btn-sm", onClick: function () { return handleEdit(item); } },
126
- React.createElement("span", null,
127
- " ",
128
- gpa_symbols_1.Pencil,
129
- " ")) : null,
130
- allowRemove ? React.createElement("button", { className: "btn btn-sm", onClick: function () { return dispatch(props.NoteSlice.DBAction({ verb: 'DELETE', record: item })); } },
131
- React.createElement("span", null,
132
- " ",
133
- gpa_symbols_1.TrashCan,
134
- " ")) : null); }
135
- },
136
- ], tableClass: "table table-hover", data: data, sortKey: sortField, ascending: ascending, onSort: function (d) {
184
+ React.createElement(react_table_1.default, { cols: collumns, tableClass: "table table-hover", data: notes, sortKey: sortField, ascending: ascending, onSort: function (d) {
137
185
  if (d.colField === undefined)
138
186
  return;
139
187
  if (d.colField === sortField)
140
188
  dispatch(props.NoteSlice.Sort({ SortField: sortField, Ascending: ascending }));
141
189
  else
142
190
  dispatch(props.NoteSlice.Sort({ SortField: d.colField, Ascending: true }));
143
- }, onClick: function () { return; }, theadStyle: { fontSize: 'smaller', display: 'table', tableLayout: 'fixed', width: '100%' }, tbodyStyle: { display: 'block', overflowY: 'scroll', maxHeight: window.innerHeight - 300, width: '100%' }, rowStyle: { fontSize: 'smaller', display: 'table', tableLayout: 'fixed', width: '100%' }, selected: function () { return false; } })),
144
- allowAdd ?
145
- React.createElement(NoteOptions, { Record: note, Setter: function (n) { return setNote(n); }, NoteTags: props.NoteTags, NoteTypes: props.NoteTypes, NoteApplications: props.NoteApplications })
191
+ }, onClick: function () { return; }, theadStyle: { fontSize: 'smaller', display: 'table', tableLayout: 'fixed', width: '100%' }, tbodyStyle: { display: 'block', overflowY: 'scroll', maxHeight: props.MaxHeight - 300, width: '100%' }, rowStyle: { fontSize: 'smaller', display: 'table', tableLayout: 'fixed', width: '100%' }, selected: function () { return false; } })),
192
+ allowAdd && showCard ?
193
+ React.createElement(NoteOptions, { Record: note, Setter: function (n) { return setNote(n); }, NoteTags: props.NoteTags, NoteTypes: props.NoteTypes, NoteApplications: props.NoteApplications, ShowApplications: !useFixedApp })
146
194
  : null,
147
195
  React.createElement(react_interactive_1.Modal, { Show: showEdit, Title: 'Edit Note', ShowCancel: true, CallBack: handleSaveEdit, DisableConfirm: note.Note == null || note.Note.length === 0, ShowX: true, ConfirmShowToolTip: note.Note == null || note.Note.length === 0, ConfirmToolTipContent: React.createElement("p", null,
148
196
  " ",
149
197
  gpa_symbols_1.CrossMark,
150
198
  " An empty Note can not be saved. ") },
151
- React.createElement(NoteOptions, { Record: note, Setter: function (n) { return setNote(n); }, NoteTags: props.NoteTags, NoteTypes: props.NoteTypes, NoteApplications: props.NoteApplications }))),
152
- allowAdd ?
199
+ React.createElement(NoteOptions, { ShowApplications: !useFixedApp, Record: note, Setter: function (n) { return setNote(n); }, NoteTags: props.NoteTags, NoteTypes: props.NoteTypes, NoteApplications: props.NoteApplications }))),
200
+ allowAdd && showCard ?
153
201
  React.createElement("div", { className: "card-footer" },
154
202
  React.createElement("div", { className: "btn-group mr-2" },
155
203
  React.createElement("button", { className: "btn btn-primary" + (note.Note === null || note.Note.length === 0 ? ' disabled' : ''), onClick: function () { if (note.Note !== null && note.Note.length > 0)
@@ -164,16 +212,17 @@ function Note(props) {
164
212
  React.createElement("p", null,
165
213
  gpa_symbols_1.CrossMark,
166
214
  " The note field is already empty. "))))
167
- : React.createElement("div", { className: "card-footer" }, " ")));
215
+ : null,
216
+ !allowAdd && showCard ? React.createElement("div", { className: props.ShowCard === undefined || props.ShowCard ? "card-footer" : "" }, " ") : null));
168
217
  }
169
218
  function NoteOptions(props) {
170
219
  var showOptions = props.NoteTags.length > 1 || props.NoteTypes.length > 1 || props.NoteApplications.length > 1;
171
- return (React.createElement("div", { className: "row" },
220
+ return (React.createElement("div", { className: "row", style: { marginRight: 0, marginLeft: 0 } },
172
221
  React.createElement("div", { className: showOptions ? "col-6" : 'col-12' },
173
222
  React.createElement(react_forms_1.TextArea, { Record: props.Record, Rows: 4, Field: 'Note', Setter: function (n) { return props.Setter(n); }, Valid: function () { return props.Record.Note != null && props.Record.Note.length > 0; }, Label: '' })),
174
223
  showOptions ? React.createElement("div", { className: "col-6" },
175
224
  props.NoteTypes.length > 1 ? React.createElement(react_forms_1.Select, { Record: props.Record, Field: 'NoteTypeID', Label: 'Note for: ', Options: props.NoteTypes.map(function (r) { return ({ Value: r.ID.toString(), Label: r.Name }); }), Setter: function (record) { return props.Setter(__assign(__assign({}, record), { NoteTypeID: parseInt(record.NoteTypeID.toString(), 10) })); } }) : null,
176
225
  props.NoteTags.length > 1 ? React.createElement(react_forms_1.Select, { Record: props.Record, Field: 'NoteTagID', Label: 'Type: ', Options: props.NoteTags.map(function (r) { return ({ Value: r.ID.toString(), Label: r.Name }); }), Setter: function (record) { return props.Setter(__assign(__assign({}, record), { NoteTagID: parseInt(record.NoteTagID.toString(), 10) })); } }) : null,
177
- props.NoteApplications.length > 1 ? React.createElement(react_forms_1.Select, { Record: props.Record, Field: 'NoteApplicationID', Label: 'Application: ', Options: props.NoteApplications.map(function (r) { return ({ Value: r.ID.toString(), Label: r.Name }); }), Setter: function (record) { return props.Setter(__assign(__assign({}, record), { NoteApplicationID: parseInt(record.NoteApplicationID.toString(), 10) })); } }) : null) : null));
226
+ props.ShowApplications && props.NoteApplications.length > 1 ? React.createElement(react_forms_1.Select, { Record: props.Record, Field: 'NoteApplicationID', Label: 'Application: ', Options: props.NoteApplications.map(function (r) { return ({ Value: r.ID.toString(), Label: r.Name }); }), Setter: function (record) { return props.Setter(__assign(__assign({}, record), { NoteApplicationID: parseInt(record.NoteApplicationID.toString(), 10) })); } }) : null) : null));
178
227
  }
179
228
  exports.default = Note;
package/lib/SearchBar.js CHANGED
@@ -150,7 +150,7 @@ var DefaultSearch;
150
150
  React.useEffect(function () {
151
151
  return props.GetAddlFields(setAddlFieldCols);
152
152
  }, []);
153
- return React.createElement(react_interactive_1.SearchBar, { CollumnList: __spreadArray(__spreadArray([], defaultSearchcols, true), addlFieldCols, true), SetFilter: function (flds) { return dispatch(props.Slice.DBSearch({ filter: (props.AddlFilters === undefined ? flds : __spreadArray(__spreadArray([], flds, true), props.AddlFilters, true)), sortField: sortField, ascending: ascending })); }, Direction: 'left', defaultCollumn: standardSearch, Width: '50%', Label: 'Search', ShowLoading: searchStatus === 'loading', ResultNote: searchStatus === 'error' ? 'Could not complete Search' : 'Found ' + data.length + ' Asset Group(s)', GetEnum: props.GetEnum, StorageID: props.StorageID }, props.children);
153
+ return React.createElement(react_interactive_1.SearchBar, { CollumnList: __spreadArray(__spreadArray([], defaultSearchcols, true), addlFieldCols, true), SetFilter: function (flds) { return dispatch(props.Slice.DBSearch({ filter: (props.AddlFilters === undefined ? flds : __spreadArray(__spreadArray([], flds, true), props.AddlFilters, true)), sortField: sortField, ascending: ascending })); }, Direction: 'left', defaultCollumn: standardSearch, Width: '50%', Label: 'Search', ShowLoading: searchStatus === 'loading', ResultNote: searchStatus === 'error' ? 'Could not complete Search' : 'Found ' + data.length + ' User(s)', GetEnum: props.GetEnum, StorageID: props.StorageID }, props.children);
154
154
  }
155
155
  DefaultSearch.User = User;
156
156
  /** This Implements a standard Customer Search */
package/package.json CHANGED
@@ -1,66 +1,60 @@
1
- {
2
- "name": "@gpa-gemstone/common-pages",
3
- "version": "0.0.63",
4
- "description": "Common UI pages for GPA products",
5
- "main": "lib/index.js",
6
- "types": "lib/index.d.ts",
7
- "files": [
8
- "lib/**/*"
9
- ],
10
- "scripts": {
11
- "test": "jest --config jestconfig.json",
12
- "build": "tsc",
13
- "format": "prettier --write \"src/**/*.tsx\"",
14
- "lint": "tslint -p tsconfig.json",
15
- "prepare": "npm run build",
16
- "prepublishOnly": "npm test && npm run lint",
17
- "preversion": "npm run lint",
18
- "version": "npm run format && git add -A src",
19
- "postversion": "git push && git push --tags"
20
- },
21
- "repository": {
22
- "type": "git",
23
- "url": "https://github.com/GridProtectionAlliance/gpa-gemstone.git"
24
- },
25
- "keywords": [
26
- "React",
27
- "Interactive",
28
- "GSF",
29
- "Gemstone",
30
- "GridProtectionAlliance"
31
- ],
32
- "author": "GridProtectionAlliance",
33
- "license": "MIT",
34
- "bugs": {
35
- "url": "https://github.com/GridProtectionAlliance/gpa-gemstone/issues"
36
- },
37
- "homepage": "https://github.com/GridProtectionAlliance/gpa-gemstone#readme",
38
- "devDependencies": {
39
- "@types/crypto-js": "4.0.2",
40
- "@types/jest": "^27.0.0",
41
- "@types/jquery": "3.5.6",
42
- "jest": "^27.0.6",
43
- "prettier": "^2.3.2",
44
- "ts-jest": "^27.0.4",
45
- "tslint": "^6.1.3",
46
- "tslint-config-prettier": "^1.18.0",
47
- "typescript": "4.4.4"
48
- },
49
- "dependencies": {
50
- "@gpa-gemstone/application-typings": "0.0.54",
51
- "@gpa-gemstone/gpa-symbols": "0.0.24",
52
- "@gpa-gemstone/helper-functions": "0.0.18",
53
- "@gpa-gemstone/react-forms": "1.1.35",
54
- "@gpa-gemstone/react-interactive": "1.0.78",
55
- "@gpa-gemstone/react-table": "1.2.21",
56
- "@reduxjs/toolkit": "1.8.3",
57
- "crypto-js": "4.0.0",
58
- "moment": "^2.29.4",
59
- "react": "^18.2.0",
60
- "react-redux": "8.0.2",
61
- "styled-components": "5.3.3"
62
- },
63
- "publishConfig": {
64
- "access": "public"
65
- }
66
- }
1
+ {
2
+ "name": "@gpa-gemstone/common-pages",
3
+ "version": "0.0.65",
4
+ "description": "Common UI pages for GPA products",
5
+ "main": "lib/index.js",
6
+ "types": "lib/index.d.ts",
7
+ "files": ["lib/**/*"],
8
+ "scripts": {
9
+ "test": "jest --config jestconfig.json",
10
+ "build": "tsc",
11
+ "format": "prettier --write \"src/**/*.tsx\"",
12
+ "lint": "tslint -p tsconfig.json",
13
+ "prepare": "npm run build",
14
+ "prepublishOnly": "npm test && npm run lint",
15
+ "preversion": "npm run lint",
16
+ "version": "npm run format && git add -A src",
17
+ "postversion": "git push && git push --tags"
18
+ },
19
+ "repository": {
20
+ "type": "git",
21
+ "url": "https://github.com/GridProtectionAlliance/gpa-gemstone.git"
22
+ },
23
+ "keywords": [
24
+ "React",
25
+ "Interactive",
26
+ "GSF",
27
+ "Gemstone",
28
+ "GridProtectionAlliance"
29
+ ],
30
+ "author": "GridProtectionAlliance",
31
+ "license": "MIT",
32
+ "bugs": {"url": "https://github.com/GridProtectionAlliance/gpa-gemstone/issues"},
33
+ "homepage": "https://github.com/GridProtectionAlliance/gpa-gemstone#readme",
34
+ "devDependencies": {
35
+ "@types/crypto-js": "4.0.2",
36
+ "@types/jest": "^27.0.0",
37
+ "@types/jquery": "3.5.6",
38
+ "jest": "^27.0.6",
39
+ "prettier": "^2.3.2",
40
+ "ts-jest": "^27.0.4",
41
+ "tslint": "^6.1.3",
42
+ "tslint-config-prettier": "^1.18.0",
43
+ "typescript": "4.4.4"
44
+ },
45
+ "dependencies": {
46
+ "@gpa-gemstone/application-typings": "0.0.56",
47
+ "@gpa-gemstone/gpa-symbols": "0.0.26",
48
+ "@gpa-gemstone/helper-functions": "0.0.20",
49
+ "@gpa-gemstone/react-forms": "1.1.37",
50
+ "@gpa-gemstone/react-interactive": "1.0.80",
51
+ "@gpa-gemstone/react-table": "1.2.23",
52
+ "@reduxjs/toolkit": "1.8.3",
53
+ "crypto-js": "4.0.0",
54
+ "moment": "^2.29.4",
55
+ "react": "^18.2.0",
56
+ "react-redux": "8.0.2",
57
+ "styled-components": "5.3.3"
58
+ },
59
+ "publishConfig": {"access": "public"}
60
+ }