@gpa-gemstone/common-pages 0.0.62 → 0.0.64
Sign up to get free protection for your applications and to get access to all the features.
- package/lib/Note.d.ts +2 -0
- package/lib/Note.js +80 -35
- package/lib/SearchBar.js +1 -1
- package/package.json +60 -66
package/lib/Note.d.ts
CHANGED
package/lib/Note.js
CHANGED
@@ -41,14 +41,52 @@ 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
|
89
|
+
var _d = React.useState(CreateNewNote()), note = _d[0], setNote = _d[1];
|
52
90
|
React.useEffect(function () {
|
53
91
|
if (dataStatus === 'unintiated' || dataStatus === 'changed' || parentID !== props.ReferenceTableID)
|
54
92
|
dispatch(props.NoteSlice.Fetch(props.ReferenceTableID));
|
@@ -73,15 +111,22 @@ function Note(props) {
|
|
73
111
|
return;
|
74
112
|
setNote(function (n) { return (__assign(__assign({}, n), { ReferenceTableID: props.ReferenceTableID !== undefined ? props.ReferenceTableID : -1 })); });
|
75
113
|
}, [props.ReferenceTableID]);
|
76
|
-
|
77
|
-
|
78
|
-
|
114
|
+
React.useEffect(function () {
|
115
|
+
var c = standardCollumns;
|
116
|
+
if (props.NoteTags.length > 1)
|
117
|
+
c.push({ key: 'NoteTagID', field: 'NoteTagID', label: 'Type', headerStyle: { width: 'auto' }, rowStyle: { width: 'auto' },
|
118
|
+
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; } });
|
119
|
+
if (props.NoteApplications.length > 1)
|
120
|
+
c.push({ key: 'NoteApplicationID', field: 'NoteApplicationID', label: 'Application', headerStyle: { width: 'auto' }, rowStyle: { width: 'auto' },
|
121
|
+
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; } });
|
122
|
+
setCollumns(c);
|
123
|
+
}, [props.NoteTags, props.NoteApplications]);
|
79
124
|
function CreateNewNote() {
|
80
125
|
var newNote = { ID: -1, ReferenceTableID: -1, NoteTagID: -1, NoteTypeID: -1, NoteApplicationID: -1, Timestamp: '', UserAccount: '', Note: '' };
|
81
126
|
if (props.ReferenceTableID !== undefined)
|
82
127
|
newNote.ReferenceTableID = props.ReferenceTableID;
|
83
|
-
if (
|
84
|
-
newNote.NoteApplicationID =
|
128
|
+
if (defaultApplication != null)
|
129
|
+
newNote.NoteApplicationID = defaultApplication.ID;
|
85
130
|
if (props.NoteTypes.length > 0)
|
86
131
|
newNote.NoteTypeID = props.NoteTypes[0].ID;
|
87
132
|
if (props.NoteTags.length > 0)
|
@@ -108,48 +153,47 @@ function Note(props) {
|
|
108
153
|
return (React.createElement("div", { style: { width: '100%', height: '100%' } },
|
109
154
|
React.createElement("div", { style: { height: '40px', margin: 'auto', marginTop: 'calc(50% - 20 px)' } },
|
110
155
|
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%' } },
|
156
|
+
return (React.createElement("div", { className: showCard ? "card" : "", style: { marginBottom: 10, maxHeight: props.MaxHeight, width: '100%' } },
|
112
157
|
React.createElement(react_interactive_1.LoadingScreen, { Show: dataStatus === 'loading' }),
|
113
|
-
React.createElement("div", { className: "card-header" },
|
158
|
+
React.createElement("div", { className: props.ShowCard === undefined || props.ShowCard ? "card-header" : "" },
|
114
159
|
React.createElement("div", { className: "row" },
|
115
160
|
React.createElement("div", { className: "col" },
|
116
161
|
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%' } },
|
162
|
+
React.createElement("div", { className: showCard ? "card-body" : "", style: { maxHeight: props.MaxHeight - 100, overflowY: 'auto', width: '100%' } },
|
163
|
+
allowAdd && !showCard ?
|
164
|
+
React.createElement(React.Fragment, null,
|
165
|
+
React.createElement(NoteOptions, { Record: note, Setter: function (n) { return setNote(n); }, NoteTags: props.NoteTags, NoteTypes: props.NoteTypes, NoteApplications: props.NoteApplications, ShowApplications: !useFixedApp }),
|
166
|
+
React.createElement("div", { className: "btn-group mr-2" },
|
167
|
+
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)
|
168
|
+
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"),
|
169
|
+
React.createElement(react_interactive_1.ToolTip, { Show: hover === 'add' && (note.Note === null || note.Note.length === 0), Position: 'top', Theme: 'dark', Target: "Add" },
|
170
|
+
React.createElement("p", null,
|
171
|
+
gpa_symbols_1.CrossMark,
|
172
|
+
" A note needs to be entered. "))),
|
173
|
+
React.createElement("div", { className: "btn-group mr-2" },
|
174
|
+
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"),
|
175
|
+
React.createElement(react_interactive_1.ToolTip, { Show: hover === 'clear' && (note.Note === null || note.Note.length === 0), Position: 'top', Theme: 'dark', Target: "Remove" },
|
176
|
+
React.createElement("p", null,
|
177
|
+
gpa_symbols_1.CrossMark,
|
178
|
+
" The note field is already empty. ")))) : null,
|
118
179
|
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) {
|
180
|
+
React.createElement(react_table_1.default, { cols: collumns, tableClass: "table table-hover", data: data, sortKey: sortField, ascending: ascending, onSort: function (d) {
|
137
181
|
if (d.colField === undefined)
|
138
182
|
return;
|
139
183
|
if (d.colField === sortField)
|
140
184
|
dispatch(props.NoteSlice.Sort({ SortField: sortField, Ascending: ascending }));
|
141
185
|
else
|
142
186
|
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:
|
144
|
-
allowAdd ?
|
145
|
-
React.createElement(NoteOptions, { Record: note, Setter: function (n) { return setNote(n); }, NoteTags: props.NoteTags, NoteTypes: props.NoteTypes, NoteApplications: props.NoteApplications })
|
187
|
+
}, 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; } })),
|
188
|
+
allowAdd && showCard ?
|
189
|
+
React.createElement(NoteOptions, { Record: note, Setter: function (n) { return setNote(n); }, NoteTags: props.NoteTags, NoteTypes: props.NoteTypes, NoteApplications: props.NoteApplications, ShowApplications: !useFixedApp })
|
146
190
|
: null,
|
147
191
|
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
192
|
" ",
|
149
193
|
gpa_symbols_1.CrossMark,
|
150
194
|
" 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 ?
|
195
|
+
React.createElement(NoteOptions, { ShowApplications: !useFixedApp, Record: note, Setter: function (n) { return setNote(n); }, NoteTags: props.NoteTags, NoteTypes: props.NoteTypes, NoteApplications: props.NoteApplications }))),
|
196
|
+
allowAdd && showCard ?
|
153
197
|
React.createElement("div", { className: "card-footer" },
|
154
198
|
React.createElement("div", { className: "btn-group mr-2" },
|
155
199
|
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 +208,17 @@ function Note(props) {
|
|
164
208
|
React.createElement("p", null,
|
165
209
|
gpa_symbols_1.CrossMark,
|
166
210
|
" The note field is already empty. "))))
|
167
|
-
:
|
211
|
+
: null,
|
212
|
+
!allowAdd && showCard ? React.createElement("div", { className: props.ShowCard === undefined || props.ShowCard ? "card-footer" : "" }, " ") : null));
|
168
213
|
}
|
169
214
|
function NoteOptions(props) {
|
170
215
|
var showOptions = props.NoteTags.length > 1 || props.NoteTypes.length > 1 || props.NoteApplications.length > 1;
|
171
|
-
return (React.createElement("div", { className: "row" },
|
216
|
+
return (React.createElement("div", { className: "row", style: { marginRight: 0, marginLeft: 0 } },
|
172
217
|
React.createElement("div", { className: showOptions ? "col-6" : 'col-12' },
|
173
218
|
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
219
|
showOptions ? React.createElement("div", { className: "col-6" },
|
175
220
|
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
221
|
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));
|
222
|
+
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
223
|
}
|
179
224
|
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 + '
|
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.
|
4
|
-
"description": "Common UI pages for GPA products",
|
5
|
-
"main": "lib/index.js",
|
6
|
-
"types": "lib/index.d.ts",
|
7
|
-
"files": [
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
"
|
12
|
-
"
|
13
|
-
"
|
14
|
-
"
|
15
|
-
"
|
16
|
-
"
|
17
|
-
"
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
"
|
27
|
-
"
|
28
|
-
"
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
"
|
33
|
-
"
|
34
|
-
"
|
35
|
-
"
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
"
|
40
|
-
"
|
41
|
-
"
|
42
|
-
"
|
43
|
-
"
|
44
|
-
|
45
|
-
|
46
|
-
"
|
47
|
-
"
|
48
|
-
|
49
|
-
|
50
|
-
"@gpa-gemstone/
|
51
|
-
"@gpa-gemstone/
|
52
|
-
"@
|
53
|
-
"
|
54
|
-
"
|
55
|
-
"
|
56
|
-
"
|
57
|
-
"
|
58
|
-
|
59
|
-
|
60
|
-
|
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.64",
|
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.55",
|
47
|
+
"@gpa-gemstone/gpa-symbols": "0.0.25",
|
48
|
+
"@gpa-gemstone/helper-functions": "0.0.19",
|
49
|
+
"@gpa-gemstone/react-forms": "1.1.36",
|
50
|
+
"@gpa-gemstone/react-interactive": "1.0.79",
|
51
|
+
"@gpa-gemstone/react-table": "1.2.22",
|
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
|
+
}
|