@gpa-gemstone/common-pages 0.0.62 → 0.0.64

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,8 @@ interface IProps {
12
12
  AllowEdit?: boolean;
13
13
  AllowRemove?: boolean;
14
14
  AllowAdd?: boolean;
15
+ ShowCard?: boolean;
16
+ DefaultApplication?: OpenXDA.Types.NoteApplication;
15
17
  }
16
18
  declare function Note(props: IProps): JSX.Element;
17
19
  export default Note;
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 _c = React.useState(CreateNewNote()), note = _c[0], setNote = _c[1];
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
- 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;
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 (props.NoteApplications.length > 0)
84
- newNote.NoteApplicationID = props.NoteApplications[0].ID;
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: 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 })
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
- : React.createElement("div", { className: "card-footer" }, " ")));
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 + ' 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.62",
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.53",
51
- "@gpa-gemstone/gpa-symbols": "0.0.23",
52
- "@gpa-gemstone/helper-functions": "0.0.18",
53
- "@gpa-gemstone/react-forms": "1.1.35",
54
- "@gpa-gemstone/react-interactive": "1.0.77",
55
- "@gpa-gemstone/react-table": "1.2.20",
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.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
+ }