@gpa-gemstone/common-pages 0.0.18 → 0.0.23

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.js CHANGED
@@ -40,14 +40,14 @@ var react_interactive_1 = require("@gpa-gemstone/react-interactive");
40
40
  var moment = require("moment");
41
41
  var react_redux_1 = require("react-redux");
42
42
  function Note(props) {
43
- var dispatch = react_redux_1.useDispatch();
43
+ var dispatch = (0, react_redux_1.useDispatch)();
44
44
  var _a = React.useState(false), showEdit = _a[0], setEdit = _a[1];
45
45
  var _b = React.useState('none'), hover = _b[0], setHover = _b[1];
46
- var data = react_redux_1.useSelector(props.NoteSlice.Data);
47
- var dataStatus = react_redux_1.useSelector(props.NoteSlice.Status);
48
- var parentID = react_redux_1.useSelector((props.NoteSlice.ParentID === undefined ? function (state) { return props.ReferenceTableID; } : props.NoteSlice.ParentID));
49
- var sortField = react_redux_1.useSelector(props.NoteSlice.SortField);
50
- var ascending = react_redux_1.useSelector(props.NoteSlice.Ascending);
46
+ var data = (0, react_redux_1.useSelector)(props.NoteSlice.Data);
47
+ var dataStatus = (0, react_redux_1.useSelector)(props.NoteSlice.Status);
48
+ var parentID = (0, react_redux_1.useSelector)((props.NoteSlice.ParentID === undefined ? function (state) { return props.ReferenceTableID; } : props.NoteSlice.ParentID));
49
+ var sortField = (0, react_redux_1.useSelector)(props.NoteSlice.SortField);
50
+ var ascending = (0, react_redux_1.useSelector)(props.NoteSlice.Ascending);
51
51
  var _c = React.useState(CreateNewNote()), note = _c[0], setNote = _c[1];
52
52
  React.useEffect(function () {
53
53
  if (dataStatus === 'unintiated' || dataStatus === 'changed' || parentID !== props.ReferenceTableID)
@@ -1,36 +1,31 @@
1
1
  import * as React from 'react';
2
- interface IProps<T> {
3
- CollumnList: Search.IField<T>[];
4
- SetFilter: (filters: Search.IFilter<T>[]) => void;
5
- defaultCollumn?: Search.IField<T>;
6
- Direction?: 'left' | 'right';
7
- Width?: string | number;
8
- Label?: string;
2
+ import { GenericSlice, Search } from '@gpa-gemstone/react-interactive';
3
+ import { OpenXDA, SystemCenter } from '@gpa-gemstone/application-typings';
4
+ interface U {
5
+ ID: number | string;
6
+ }
7
+ interface IProps<T extends U> {
8
+ /** A Generic Slyce for the Search */
9
+ Slice: GenericSlice<T>;
10
+ /** Functions that gets available values for any ENUM Types */
11
+ GetEnum: (setOptions: (options: IOptions[]) => void, field: Search.IField<T>) => () => void;
12
+ /** Function that Grabs any additional Filters that shoudl be available (such as Addl Fields) */
13
+ GetAddlFields: (setAddlFields: (cols: Search.IField<T>[]) => void) => () => void;
9
14
  children: React.ReactNode;
10
- GetEnum?: EnumSetter<T>;
11
- ShowLoading?: boolean;
12
- ResultNote?: string;
13
15
  }
14
16
  interface IOptions {
15
17
  Value: string;
16
18
  Label: string;
17
19
  }
18
- declare type EnumSetter<T> = (setOptions: (options: IOptions[]) => void, field: Search.IField<T>) => () => void;
19
- export declare namespace Search {
20
- type FieldType = ('string' | 'number' | 'enum' | 'integer' | 'datetime' | 'boolean');
21
- interface IField<T> {
22
- label: string;
23
- key: string;
24
- type: FieldType;
25
- enum?: IOptions[];
26
- }
27
- type OperatorType = ('=' | '<>' | '>' | '<' | '>=' | '<=' | 'LIKE' | 'NOT LIKE' | 'IN' | 'NOT IN');
28
- interface IFilter<T> {
29
- FieldName: string;
30
- SearchText: string;
31
- Operator: Search.OperatorType;
32
- Type: Search.FieldType;
33
- }
20
+ /** This Implements a few standardized SearchBars */
21
+ export declare namespace DefaultSearch {
22
+ /** This Implements a standard Meter Search */
23
+ function Meter(props: IProps<SystemCenter.Types.DetailedMeter>): JSX.Element;
24
+ /** This Implements a standard Substation Search */
25
+ function Location(props: IProps<SystemCenter.Types.DetailedLocation>): JSX.Element;
26
+ /** This Implements a standard Transmission Asset Search */
27
+ function Asset(props: IProps<SystemCenter.Types.DetailedAsset>): JSX.Element;
28
+ /** This Implements a standard AssetGroup Search */
29
+ function AssetGroup(props: IProps<OpenXDA.Types.AssetGroup>): JSX.Element;
34
30
  }
35
- export default function SearchBar<T>(props: IProps<T>): JSX.Element;
36
31
  export {};
package/lib/SearchBar.js CHANGED
@@ -2,7 +2,7 @@
2
2
  // ******************************************************************************************************
3
3
  // SearchBar.tsx - Gbtc
4
4
  //
5
- // Copyright © 2020, Grid Protection Alliance. All Rights Reserved.
5
+ // Copyright © 2021, Grid Protection Alliance. All Rights Reserved.
6
6
  //
7
7
  // Licensed to the Grid Protection Alliance (GPA) under one or more contributor license agreements. See
8
8
  // the NOTICE file distributed with this work for additional information regarding copyright ownership.
@@ -17,287 +17,120 @@
17
17
  //
18
18
  // Code Modification History:
19
19
  // ----------------------------------------------------------------------------------------------------
20
- // 01/06/2020 - Christoph Lackner
20
+ // 12/17/2021 - Samuel Robinson
21
21
  // Generated original version of source code.
22
+ // 12/19/2021 - C. Lackner
23
+ // Cleaned up code.
22
24
  // ******************************************************************************************************
23
- var __assign = (this && this.__assign) || function () {
24
- __assign = Object.assign || function(t) {
25
- for (var s, i = 1, n = arguments.length; i < n; i++) {
26
- s = arguments[i];
27
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
28
- t[p] = s[p];
25
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
26
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
27
+ if (ar || !(i in from)) {
28
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
29
+ ar[i] = from[i];
29
30
  }
30
- return t;
31
- };
32
- return __assign.apply(this, arguments);
33
- };
34
- var __spreadArrays = (this && this.__spreadArrays) || function () {
35
- for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
36
- for (var r = Array(s), k = 0, i = 0; i < il; i++)
37
- for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
38
- r[k] = a[j];
39
- return r;
31
+ }
32
+ return to.concat(ar || Array.prototype.slice.call(from));
40
33
  };
41
34
  Object.defineProperty(exports, "__esModule", { value: true });
35
+ exports.DefaultSearch = void 0;
42
36
  var React = require("react");
43
- var Modal_1 = require("./Modal");
44
- var LoadingIcon_1 = require("./LoadingIcon");
45
- var react_forms_1 = require("@gpa-gemstone/react-forms");
46
- var gpa_symbols_1 = require("@gpa-gemstone/gpa-symbols");
47
- function SearchBar(props) {
48
- var _a = React.useState(false), hover = _a[0], setHover = _a[1];
49
- var _b = React.useState(false), show = _b[0], setShow = _b[1];
50
- var _c = React.useState(false), isNew = _c[0], setIsNew = _c[1];
51
- var _d = React.useState([]), filters = _d[0], setFilters = _d[1];
52
- var _e = React.useState({ FieldName: props.CollumnList[0].key, SearchText: '', Operator: props.CollumnList[0].type === 'string' ? 'LIKE' : '=', Type: props.CollumnList[0].type }), filter = _e[0], setFilter = _e[1];
53
- var _f = React.useState(""), search = _f[0], setSearch = _f[1];
54
- var _g = React.useState(null), searchFilter = _g[0], setSearchFilter = _g[1];
55
- // Update SearchFilter if there are any Character and only do it every 500ms to avoid hammering the server while typing
56
- React.useEffect(function () {
57
- var handle = null;
58
- if (search.length > 0 && props.defaultCollumn !== undefined)
59
- handle = setTimeout(function () {
60
- if (props.defaultCollumn !== undefined)
61
- setSearchFilter({ FieldName: props.defaultCollumn.key, Operator: 'LIKE', Type: props.defaultCollumn.type, SearchText: ('*' + search + '*') });
62
- }, 500);
63
- else
64
- handle = setTimeout(function () {
65
- setSearchFilter(null);
66
- }, 500);
67
- return function () { if (handle !== null)
68
- clearTimeout(handle); };
69
- }, [search]);
70
- React.useEffect(function () {
71
- if (searchFilter !== null)
72
- props.SetFilter(__spreadArrays(filters, [searchFilter]));
73
- if (searchFilter === null)
74
- props.SetFilter(filters);
75
- }, [searchFilter]);
76
- function deleteFilter(f) {
77
- var index = filters.findIndex(function (fs) { return fs === f; });
78
- var filts = __spreadArrays(filters);
79
- filts.splice(index, 1);
80
- setFilters(filts);
81
- setHover(false);
82
- if (props.defaultCollumn !== undefined && searchFilter !== null)
83
- props.SetFilter(__spreadArrays(filts, [searchFilter]));
84
- else
85
- props.SetFilter(filts);
86
- }
87
- function addFilter() {
88
- var oldFilters = __spreadArrays(filters);
89
- var adjustedFilter = __assign({}, filter);
90
- if (adjustedFilter.Type === 'string' && adjustedFilter.Operator === 'LIKE')
91
- adjustedFilter.SearchText = '*' + adjustedFilter.SearchText + '*';
92
- oldFilters.push(adjustedFilter);
93
- setFilters(oldFilters);
94
- setFilter({ FieldName: props.CollumnList[0].key, SearchText: '', Operator: props.CollumnList[0].type === 'string' ? 'LIKE' : '=', Type: props.CollumnList[0].type });
95
- setFilter({ FieldName: props.CollumnList[0].key, SearchText: '', Operator: props.CollumnList[0].type === 'string' ? 'LIKE' : '=', Type: props.CollumnList[0].type });
96
- if (props.defaultCollumn !== undefined && searchFilter !== null)
97
- props.SetFilter(__spreadArrays(oldFilters, [searchFilter]));
98
- else
99
- props.SetFilter(oldFilters);
100
- }
101
- function editFilter(index) {
102
- setIsNew(false);
103
- var oldFilters = __spreadArrays(filters);
104
- var filt = oldFilters[index];
105
- oldFilters.splice(index, 1);
106
- if (filt.Type === 'string' && filt.Operator === 'LIKE')
107
- filt.SearchText = filt.SearchText.substr(1, filt.SearchText.length - 2);
108
- setShow(true);
109
- setFilters(oldFilters);
110
- setFilter(filt);
111
- if (props.defaultCollumn !== undefined && searchFilter !== null)
112
- props.SetFilter(__spreadArrays(oldFilters, [searchFilter]));
113
- else
114
- props.SetFilter(oldFilters);
115
- }
116
- ;
117
- function createFilter() {
118
- setShow(!show);
119
- setIsNew(true);
120
- setFilter({ FieldName: props.CollumnList[0].key, SearchText: '', Operator: props.CollumnList[0].type === 'string' ? 'LIKE' : '=', Type: props.CollumnList[0].type });
121
- }
122
- var content = (React.createElement(React.Fragment, null,
123
- React.createElement("form", null,
124
- React.createElement("div", { className: "row" },
125
- props.defaultCollumn !== undefined ?
126
- React.createElement("div", { className: "col" },
127
- React.createElement("div", { className: "input-group" },
128
- React.createElement("input", { className: "form-control mr-sm-2", type: "search", placeholder: "Search " + props.defaultCollumn.label, onChange: function (event) { return setSearch(event.target.value); } }),
129
- props.ShowLoading !== undefined && props.ShowLoading ? React.createElement("div", { className: "input-group-append" },
130
- " ",
131
- React.createElement(LoadingIcon_1.default, { Show: true }),
132
- " ") : null),
133
- React.createElement("p", { style: { marginTop: 2, marginBottom: 2 } }, props.ResultNote)) : null,
134
- React.createElement("div", { style: { position: 'relative', display: 'inline-block' }, className: 'col' },
135
- React.createElement("button", { className: "btn btn-primary", onClick: function (evt) { evt.preventDefault(); createFilter(); }, onMouseEnter: function () { return setHover(true); }, onMouseLeave: function () { return setHover(false); } }, "Add Filter"),
136
- React.createElement("div", { style: { width: window.innerWidth / 3, display: hover ? 'block' : 'none', position: 'absolute', backgroundColor: '#f1f1f1', boxShadow: '0px 8px 16px 0px rgba(0,0,0,0.2)', zIndex: 1, right: (props.Direction === 'right' ? 0 : undefined), left: (props.Direction === 'left' ? 0 : undefined) }, onMouseEnter: function () { return setHover(true); }, onMouseLeave: function () { return setHover(false); } },
137
- React.createElement("table", { className: 'table' },
138
- React.createElement("thead", null,
139
- React.createElement("tr", null,
140
- React.createElement("th", null, "Column"),
141
- React.createElement("th", null, "Operator"),
142
- React.createElement("th", null, "Search Text"),
143
- React.createElement("th", null, "Edit"),
144
- React.createElement("th", null, "Remove"))),
145
- React.createElement("tbody", null, filters.map(function (f, i) { return React.createElement("tr", { key: i },
146
- React.createElement("td", null, f.FieldName),
147
- React.createElement("td", null, f.Operator),
148
- React.createElement("td", null, f.SearchText),
149
- React.createElement("td", null,
150
- React.createElement("button", { className: "btn btn-sm", onClick: function (e) { return editFilter(i); } },
151
- React.createElement("span", null, gpa_symbols_1.Pencil))),
152
- React.createElement("td", null,
153
- React.createElement("button", { className: "btn btn-sm", onClick: function (e) { return deleteFilter(f); } },
154
- React.createElement("span", null, gpa_symbols_1.TrashCan)))); })))))))));
155
- return (React.createElement("div", { style: { width: '100%' } },
156
- React.createElement("nav", { className: "navbar navbar-expand-lg navbar-light bg-light" },
157
- React.createElement("div", { className: "collapse navbar-collapse", style: { width: '100%' } },
158
- React.createElement("ul", { className: "navbar-nav mr-auto", style: { width: '100%' } },
159
- props.Direction === 'right' ? props.children : null,
160
- props.Label !== undefined ?
161
- React.createElement("li", { className: "nav-item", style: { minWidth: (props.Width === undefined ? '150px' : undefined), width: props.Width, paddingRight: 10 } },
162
- React.createElement("fieldset", { className: "border", style: { padding: '10px', height: '100%' } },
163
- React.createElement("legend", { className: "w-auto", style: { fontSize: 'large' } },
164
- props.Label,
165
- ":"),
166
- content)) :
167
- React.createElement("li", { className: "nav-item", style: { minWidth: (props.Width === undefined ? '150px' : undefined), width: props.Width, paddingRight: 10 } }, content),
168
- props.Direction === 'left' ? props.children : null))),
169
- React.createElement(Modal_1.default, { Title: 'Add Filter', Show: show, CallBack: function (conf) { if (conf)
170
- addFilter(); setShow(false); }, ConfirmText: isNew ? 'Add' : 'Save', CancelText: isNew ? 'Close' : 'Delete' },
171
- React.createElement(react_forms_1.Select, { Record: filter, Field: 'FieldName', Options: props.CollumnList.map(function (fl) { return ({ Value: fl.key, Label: fl.label }); }), Setter: function (record) {
172
- var operator = "IN";
173
- var column = props.CollumnList.find(function (fl) { return fl.key === record.FieldName; });
174
- if (column !== undefined && column.type === 'string')
175
- operator = "LIKE";
176
- setFilter(function (prevFilter) { return (__assign(__assign({}, prevFilter), { FieldName: record.FieldName, SearchText: '', Operator: operator, Type: (column !== undefined ? column.type : 'string') })); });
177
- }, Label: 'Column' }),
178
- React.createElement(FilterCreator, { Filter: filter, Field: props.CollumnList.find(function (fl) { return fl.key === filter.FieldName; }), Setter: function (record) { return setFilter(record); }, Enum: (props.GetEnum === undefined ? undefined : props.GetEnum) }))));
179
- }
180
- exports.default = SearchBar;
181
- function FilterCreator(props) {
182
- var _a = React.useState([]), options = _a[0], setOptions = _a[1];
183
- React.useEffect(function () {
184
- if (props.Field === undefined)
185
- return;
186
- if (props.Field.enum !== undefined)
187
- setOptions(props.Field.enum);
188
- if (props.Enum !== undefined)
189
- return props.Enum(setOptions, props.Field);
190
- if (props.Field.enum === undefined)
191
- setOptions([]);
192
- }, [props.Field, props.Enum]);
193
- if (props.Field === undefined)
194
- return null;
195
- if (props.Field.type === "string") {
196
- return (React.createElement(React.Fragment, null,
197
- React.createElement("label", null, "Column type is string. Wildcard (*) can be used with 'LIKE' and 'NOT LIKE'"),
198
- React.createElement("div", { className: 'row' },
199
- React.createElement("div", { className: 'col-4' },
200
- React.createElement("select", { className: 'form-control', value: props.Filter.Operator, onChange: function (evt) {
201
- var value = evt.target.value;
202
- props.Setter(function (prevState) { return (__assign(__assign({}, prevState), { Operator: value })); });
203
- } },
204
- React.createElement("option", { value: 'LIKE' }, "LIKE"),
205
- React.createElement("option", { value: '=' }, "="),
206
- React.createElement("option", { value: 'NOT LIKE' }, "NOT LIKE"))),
207
- React.createElement("div", { className: 'col' },
208
- React.createElement("input", { className: 'form-control', value: props.Filter.SearchText, onChange: function (evt) {
209
- var value = evt.target.value;
210
- props.Setter(function (prevState) { return (__assign(__assign({}, prevState), { SearchText: value })); });
211
- } })))));
212
- }
213
- else if (props.Field.type === "integer" || props.Field.type === "number") {
214
- return (React.createElement(React.Fragment, null,
215
- React.createElement("label", null,
216
- "Column type is ",
217
- props.Field.type,
218
- "."),
219
- React.createElement("div", { className: 'row' },
220
- React.createElement("div", { className: 'col-4' },
221
- React.createElement("select", { className: 'form-control', value: props.Filter.Operator, onChange: function (evt) {
222
- var value = evt.target.value;
223
- props.Setter(function (prevState) { return (__assign(__assign({}, prevState), { Operator: value })); });
224
- } },
225
- React.createElement("option", { value: '=' }, "="),
226
- React.createElement("option", { value: '<>' }, "!="),
227
- React.createElement("option", { value: '>' }, ">"),
228
- React.createElement("option", { value: '>=' }, ">="),
229
- React.createElement("option", { value: '<' }, "<"),
230
- React.createElement("option", { value: '>=' }, ">="))),
231
- React.createElement("div", { className: 'col' },
232
- React.createElement("input", { type: 'number', className: 'form-control', value: props.Filter.SearchText, onChange: function (evt) {
233
- var value = evt.target.value;
234
- props.Setter(function (prevState) { return (__assign(__assign({}, prevState), { SearchText: value })); });
235
- } })))));
37
+ var react_interactive_1 = require("@gpa-gemstone/react-interactive");
38
+ var react_redux_1 = require("react-redux");
39
+ /** This Implements a few standardized SearchBars */
40
+ var DefaultSearch;
41
+ (function (DefaultSearch) {
42
+ /** This Implements a standard Meter Search */
43
+ function Meter(props) {
44
+ var defaultSearchcols = [
45
+ { label: 'AssetKey', key: 'AssetKey', type: 'string', isPivotField: false },
46
+ { label: 'Name', key: 'Name', type: 'string', isPivotField: false },
47
+ { label: 'Location', key: 'Location', type: 'string', isPivotField: false },
48
+ { label: 'Make', key: 'Make', type: 'string', isPivotField: false },
49
+ { label: 'Model', key: 'Model', type: 'string', isPivotField: false },
50
+ { label: 'Number of Assets', key: 'MappedAssets', type: 'number', isPivotField: false },
51
+ ];
52
+ var dispatch = (0, react_redux_1.useDispatch)();
53
+ var _a = React.useState([]), addlFieldCols = _a[0], setAddlFieldCols = _a[1];
54
+ var searchStatus = (0, react_redux_1.useSelector)(props.Slice.SearchStatus);
55
+ var sortField = (0, react_redux_1.useSelector)(props.Slice.SortField);
56
+ var ascending = (0, react_redux_1.useSelector)(props.Slice.Ascending);
57
+ var data = (0, react_redux_1.useSelector)(props.Slice.SearchResults);
58
+ React.useEffect(function () {
59
+ return props.GetAddlFields(setAddlFieldCols);
60
+ }, []);
61
+ var standardSearch = { label: 'Name', key: 'Name', type: 'string', isPivotField: false };
62
+ return React.createElement(react_interactive_1.SearchBar, { CollumnList: __spreadArray(__spreadArray([], defaultSearchcols, true), addlFieldCols, true), SetFilter: function (flds) { return dispatch(props.Slice.DBSearch({ filter: flds, 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 + ' Meter(s)', GetEnum: props.GetEnum }, props.children);
236
63
  }
237
- else if (props.Field.type === "datetime") {
238
- return (React.createElement(React.Fragment, null,
239
- React.createElement("label", null,
240
- "Column type is ",
241
- props.Field.type,
242
- "."),
243
- React.createElement("div", { className: 'row' },
244
- React.createElement("div", { className: 'col-4' },
245
- React.createElement("select", { className: 'form-control', value: props.Filter.Operator, onChange: function (evt) {
246
- var value = evt.target.value;
247
- props.Setter(function (prevState) { return (__assign(__assign({}, prevState), { Operator: value })); });
248
- } },
249
- React.createElement("option", { value: '=' }, "="),
250
- React.createElement("option", { value: '<>' }, "!="),
251
- React.createElement("option", { value: '>' }, ">"),
252
- React.createElement("option", { value: '>=' }, ">="),
253
- React.createElement("option", { value: '<' }, "<"),
254
- React.createElement("option", { value: '>=' }, ">="))),
255
- React.createElement("div", { className: 'col' },
256
- React.createElement("input", { type: 'date', className: 'form-control', value: props.Filter.SearchText.split(' ')[0], onChange: function (evt) {
257
- var value = evt.target.value;
258
- props.Setter(function (prevState) { return (__assign(__assign({}, prevState), { SearchText: (value + ' ' + (prevState.SearchText.split(' ').length > 1 ? prevState.SearchText.split(' ')[1] : '0:00')) })); });
259
- } }),
260
- React.createElement("input", { type: 'time', className: 'form-control', value: props.Filter.SearchText.split(' ').length > 1 ? props.Filter.SearchText.split(' ')[1] : '0:00', onChange: function (evt) {
261
- var value = evt.target.value;
262
- props.Setter(function (prevState) { return (__assign(__assign({}, prevState), { SearchText: (prevState.SearchText.split(' ')[0] + ' ' + value) })); });
263
- } })))));
64
+ DefaultSearch.Meter = Meter;
65
+ /** This Implements a standard Substation Search */
66
+ function Location(props) {
67
+ var standardSearch = { label: 'Name', key: 'Name', type: 'string', isPivotField: false };
68
+ var _a = React.useState([]), addlFieldCols = _a[0], setAddlFieldCols = _a[1];
69
+ var dispatch = (0, react_redux_1.useDispatch)();
70
+ var searchStatus = (0, react_redux_1.useSelector)(props.Slice.SearchStatus);
71
+ var sortField = (0, react_redux_1.useSelector)(props.Slice.SortField);
72
+ var ascending = (0, react_redux_1.useSelector)(props.Slice.Ascending);
73
+ var data = (0, react_redux_1.useSelector)(props.Slice.SearchResults);
74
+ var defaultSearchcols = [
75
+ { label: 'Name', key: 'Name', type: 'string', isPivotField: false },
76
+ { label: 'Key', key: 'LocationKey', type: 'string', isPivotField: false },
77
+ { label: 'Transmission Asset', key: 'Asset', type: 'string', isPivotField: false },
78
+ { label: 'Meter', key: 'Meter', type: 'string', isPivotField: false },
79
+ { label: 'Number of Transmission Assets', key: 'Assets', type: 'integer', isPivotField: false },
80
+ { label: 'Number of Meters', key: 'Meters', type: 'integer', isPivotField: false },
81
+ { label: 'Description', key: 'Description', type: 'string', isPivotField: false }
82
+ ];
83
+ React.useEffect(function () {
84
+ return props.GetAddlFields(setAddlFieldCols);
85
+ }, []);
86
+ return React.createElement(react_interactive_1.SearchBar, { CollumnList: __spreadArray(__spreadArray([], defaultSearchcols, true), addlFieldCols, true), SetFilter: function (flds) { return dispatch(props.Slice.DBSearch({ filter: flds, 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 + ' Substation(s)', GetEnum: props.GetEnum }, props.children);
264
87
  }
265
- else if (props.Field.type === "boolean") {
266
- return React.createElement(react_forms_1.CheckBox, { Record: props.Filter, Field: 'SearchText', Setter: function (filter) {
267
- props.Setter(function (prevFilter) { return (__assign(__assign({}, prevFilter), { Operator: '=', SearchText: filter.SearchText.toString() === 'true' ? '1' : '0' })); });
268
- }, Label: "Column type is boolean. Yes/On is checked." });
88
+ DefaultSearch.Location = Location;
89
+ /** This Implements a standard Transmission Asset Search */
90
+ function Asset(props) {
91
+ var standardSearch = { label: 'Name', key: 'AssetName', type: 'string', isPivotField: false };
92
+ var _a = React.useState([]), addlFieldCols = _a[0], setAddlFieldCols = _a[1];
93
+ var dispatch = (0, react_redux_1.useDispatch)();
94
+ var searchStatus = (0, react_redux_1.useSelector)(props.Slice.SearchStatus);
95
+ var sortField = (0, react_redux_1.useSelector)(props.Slice.SortField);
96
+ var ascending = (0, react_redux_1.useSelector)(props.Slice.Ascending);
97
+ var data = (0, react_redux_1.useSelector)(props.Slice.SearchResults);
98
+ var defaultSearchcols = [
99
+ { label: 'Key', key: 'AssetKey', type: 'string', isPivotField: false },
100
+ { label: 'Name', key: 'AssetName', type: 'string', isPivotField: false },
101
+ { label: 'Voltage (kV)', key: 'VoltageKV', type: 'number', isPivotField: false },
102
+ { label: 'Type', key: 'AssetType', type: 'enum', isPivotField: false },
103
+ { label: 'Meter', key: 'Meter', type: 'string', isPivotField: false },
104
+ { label: 'Substation', key: 'Location', type: 'string', isPivotField: false },
105
+ { label: 'Number of Meters', key: 'Meters', type: 'integer', isPivotField: false },
106
+ { label: 'Number of Substations', key: 'Locations', type: 'integer', isPivotField: false },
107
+ ];
108
+ React.useEffect(function () {
109
+ return props.GetAddlFields(setAddlFieldCols);
110
+ }, []);
111
+ return React.createElement(react_interactive_1.SearchBar, { CollumnList: __spreadArray(__spreadArray([], defaultSearchcols, true), addlFieldCols, true), SetFilter: function (flds) { return dispatch(props.Slice.DBSearch({ filter: flds, 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 + ' Transmission Asset(s)', GetEnum: props.GetEnum }, props.children);
269
112
  }
270
- else {
271
- return (React.createElement(React.Fragment, null,
272
- React.createElement("label", null, "Column type is enumerable. Select from below."),
273
- React.createElement("ul", { style: { listStyle: 'none' } },
274
- React.createElement("li", null,
275
- React.createElement("div", { className: "form-check" },
276
- React.createElement("input", { type: "checkbox", className: "form-check-input", style: { zIndex: 1 }, onChange: function (evt) {
277
- if (evt.target.checked)
278
- props.Setter(function (prevSetter) { return (__assign(__assign({}, prevSetter), { SearchText: "(" + options.map(function (x) { return x.Value; }).join(',') + ")" })); });
279
- else
280
- props.Setter(function (prevSetter) { return (__assign(__assign({}, prevSetter), { SearchText: '' })); });
281
- }, defaultValue: 'off' }),
282
- React.createElement("label", { className: "form-check-label" }, "Select All"))),
283
- options.map(function (vli, index) { return React.createElement("li", { key: index },
284
- React.createElement("div", { className: "form-check" },
285
- React.createElement("input", { type: "checkbox", className: "form-check-input", style: { zIndex: 1 }, onChange: function (evt) {
286
- if (evt.target.checked) {
287
- var list = props.Filter.SearchText.replace('(', '').replace(')', '').split(',');
288
- list = list.filter(function (x) { return x !== ""; });
289
- list.push(vli.Value);
290
- var text_1 = "(" + list.join(',') + ")";
291
- props.Setter(function (prevSetter) { return (__assign(__assign({}, prevSetter), { SearchText: text_1 })); });
292
- }
293
- else {
294
- var list = props.Filter.SearchText.replace('(', '').replace(')', '').split(',');
295
- list = list.filter(function (x) { return x !== ""; });
296
- list = list.filter(function (x) { return x !== vli.Value; });
297
- var text_2 = "(" + list.join(',') + ")";
298
- props.Setter(function (prevSetter) { return (__assign(__assign({}, prevSetter), { SearchText: text_2 })); });
299
- }
300
- }, value: props.Filter.SearchText.indexOf(vli.Value) >= 0 ? 'on' : 'off', checked: props.Filter.SearchText.indexOf(vli.Value) >= 0 ? true : false }),
301
- React.createElement("label", { className: "form-check-label" }, vli.Label))); }))));
113
+ DefaultSearch.Asset = Asset;
114
+ /** This Implements a standard AssetGroup Search */
115
+ function AssetGroup(props) {
116
+ var standardSearch = { label: 'Name', key: 'AssetName', type: 'string', isPivotField: false };
117
+ var _a = React.useState([]), addlFieldCols = _a[0], setAddlFieldCols = _a[1];
118
+ var dispatch = (0, react_redux_1.useDispatch)();
119
+ var searchStatus = (0, react_redux_1.useSelector)(props.Slice.SearchStatus);
120
+ var sortField = (0, react_redux_1.useSelector)(props.Slice.SortField);
121
+ var ascending = (0, react_redux_1.useSelector)(props.Slice.Ascending);
122
+ var data = (0, react_redux_1.useSelector)(props.Slice.SearchResults);
123
+ var defaultSearchcols = [
124
+ { label: 'Name', key: 'Name', type: 'string', isPivotField: false },
125
+ { label: 'Number of Meter', key: 'Meters', type: 'integer', isPivotField: false },
126
+ { label: 'Number of Transmission Assets', key: 'Assets', type: 'integer', isPivotField: false },
127
+ { label: 'Number of Users', key: 'Users', type: 'integer', isPivotField: false },
128
+ { label: 'Show in PQ Dashboard', key: 'DisplayDashboard', type: 'boolean', isPivotField: false },
129
+ ];
130
+ React.useEffect(function () {
131
+ return props.GetAddlFields(setAddlFieldCols);
132
+ }, []);
133
+ return React.createElement(react_interactive_1.SearchBar, { CollumnList: __spreadArray(__spreadArray([], defaultSearchcols, true), addlFieldCols, true), SetFilter: function (flds) { return dispatch(props.Slice.DBSearch({ filter: flds, 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 }, props.children);
302
134
  }
303
- }
135
+ DefaultSearch.AssetGroup = AssetGroup;
136
+ })(DefaultSearch = exports.DefaultSearch || (exports.DefaultSearch = {}));
@@ -0,0 +1,35 @@
1
+ /// <reference types="react" />
2
+ import { Column } from "@gpa-gemstone/react-table";
3
+ import { GenericSlice, Search } from "@gpa-gemstone/react-interactive";
4
+ import { OpenXDA, SystemCenter } from "@gpa-gemstone/application-typings";
5
+ interface U {
6
+ ID: number | string;
7
+ }
8
+ interface IProps<T extends U> {
9
+ Slice: GenericSlice<T>;
10
+ Selection: T[];
11
+ OnClose: (selected: T[], conf: boolean) => void;
12
+ Show: boolean;
13
+ Type?: 'single' | 'multiple';
14
+ Columns: Column<T>[];
15
+ Title: string;
16
+ GetEnum: (setOptions: (options: IOptions[]) => void, field: Search.IField<T>) => () => void;
17
+ GetAddlFields: (setAddlFields: (cols: Search.IField<T>[]) => void) => () => void;
18
+ MinSelection?: number;
19
+ }
20
+ interface IOptions {
21
+ Value: string;
22
+ Label: string;
23
+ }
24
+ /** This Implements a few standardized Selection Popups */
25
+ export declare namespace DefaultSelects {
26
+ /** This Implements a standard Meter Selection Modal */
27
+ function Meter(props: IProps<SystemCenter.Types.DetailedMeter>): JSX.Element;
28
+ /** This Implements a standard Substation Selection Modal */
29
+ function Location(props: IProps<SystemCenter.Types.DetailedLocation>): JSX.Element;
30
+ /** This Implements a standard Transmission Asset Selection Modal */
31
+ function Asset(props: IProps<SystemCenter.Types.DetailedAsset>): JSX.Element;
32
+ /** This Implements a standard Asset Group Selection Modal */
33
+ function AssetGroup(props: IProps<OpenXDA.Types.AssetGroup>): JSX.Element;
34
+ }
35
+ export {};
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ // ******************************************************************************************************
3
+ // SelectionPopup.tsx - Gbtc
4
+ //
5
+ // Copyright © 2021, Grid Protection Alliance. All Rights Reserved.
6
+ //
7
+ // Licensed to the Grid Protection Alliance (GPA) under one or more contributor license agreements. See
8
+ // the NOTICE file distributed with this work for additional information regarding copyright ownership.
9
+ // The GPA licenses this file to you under the MIT License (MIT), the "License"; you may not use this
10
+ // file except in compliance with the License. You may obtain a copy of the License at:
11
+ //
12
+ // http://opensource.org/licenses/MIT
13
+ //
14
+ // Unless agreed to in writing, the subject software distributed under the License is distributed on an
15
+ // "AS-IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. Refer to the
16
+ // License for the specific language governing permissions and limitations.
17
+ //
18
+ // Code Modification History:
19
+ // ----------------------------------------------------------------------------------------------------
20
+ // 12/19/2021 - C. Lackner
21
+ // Generated original version of source code.
22
+ // ******************************************************************************************************
23
+ var __assign = (this && this.__assign) || function () {
24
+ __assign = Object.assign || function(t) {
25
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
26
+ s = arguments[i];
27
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
28
+ t[p] = s[p];
29
+ }
30
+ return t;
31
+ };
32
+ return __assign.apply(this, arguments);
33
+ };
34
+ Object.defineProperty(exports, "__esModule", { value: true });
35
+ exports.DefaultSelects = void 0;
36
+ var React = require("react");
37
+ var StandardSelectPopup_1 = require("./StandardSelectPopup");
38
+ var SearchBar_1 = require("./SearchBar");
39
+ /** This Implements a few standardized Selection Popups */
40
+ var DefaultSelects;
41
+ (function (DefaultSelects) {
42
+ /** This Implements a standard Meter Selection Modal */
43
+ function Meter(props) {
44
+ return React.createElement(StandardSelectPopup_1.default, __assign({}, props, { Searchbar: function (children) { return React.createElement(SearchBar_1.DefaultSearch.Meter, { Slice: props.Slice, GetAddlFields: props.GetAddlFields, GetEnum: props.GetEnum }, children); } }));
45
+ }
46
+ DefaultSelects.Meter = Meter;
47
+ /** This Implements a standard Substation Selection Modal */
48
+ function Location(props) {
49
+ return React.createElement(StandardSelectPopup_1.default, __assign({}, props, { Searchbar: function (children) { return React.createElement(SearchBar_1.DefaultSearch.Location, { Slice: props.Slice, GetAddlFields: props.GetAddlFields, GetEnum: props.GetEnum }, children); } }));
50
+ }
51
+ DefaultSelects.Location = Location;
52
+ /** This Implements a standard Transmission Asset Selection Modal */
53
+ function Asset(props) {
54
+ return React.createElement(StandardSelectPopup_1.default, __assign({}, props, { Searchbar: function (children) { return React.createElement(SearchBar_1.DefaultSearch.Asset, { Slice: props.Slice, GetAddlFields: props.GetAddlFields, GetEnum: props.GetEnum }, children); } }));
55
+ }
56
+ DefaultSelects.Asset = Asset;
57
+ /** This Implements a standard Asset Group Selection Modal */
58
+ function AssetGroup(props) {
59
+ return React.createElement(StandardSelectPopup_1.default, __assign({}, props, { Searchbar: function (children) { return React.createElement(SearchBar_1.DefaultSearch.AssetGroup, { Slice: props.Slice, GetAddlFields: props.GetAddlFields, GetEnum: props.GetEnum }, children); } }));
60
+ }
61
+ DefaultSelects.AssetGroup = AssetGroup;
62
+ })(DefaultSelects = exports.DefaultSelects || (exports.DefaultSelects = {}));
package/lib/Setting.js CHANGED
@@ -28,12 +28,12 @@ var gpa_symbols_1 = require("@gpa-gemstone/gpa-symbols");
28
28
  var react_interactive_1 = require("@gpa-gemstone/react-interactive");
29
29
  var react_redux_1 = require("react-redux");
30
30
  function Setting(props) {
31
- var dispatch = react_redux_1.useDispatch();
32
- var search = react_redux_1.useSelector(props.SettingsSlice.SearchFilters);
33
- var searchStatus = react_redux_1.useSelector(props.SettingsSlice.SearchStatus);
34
- var data = react_redux_1.useSelector(props.SettingsSlice.SearchResults);
35
- var allSettings = react_redux_1.useSelector(props.SettingsSlice.Data);
36
- var status = react_redux_1.useSelector(props.SettingsSlice.Status);
31
+ var dispatch = (0, react_redux_1.useDispatch)();
32
+ var search = (0, react_redux_1.useSelector)(props.SettingsSlice.SearchFilters);
33
+ var searchStatus = (0, react_redux_1.useSelector)(props.SettingsSlice.SearchStatus);
34
+ var data = (0, react_redux_1.useSelector)(props.SettingsSlice.SearchResults);
35
+ var allSettings = (0, react_redux_1.useSelector)(props.SettingsSlice.Data);
36
+ var status = (0, react_redux_1.useSelector)(props.SettingsSlice.Status);
37
37
  var _a = React.useState('Name'), sortField = _a[0], setSortField = _a[1];
38
38
  var _b = React.useState(true), ascending = _b[0], setAscending = _b[1];
39
39
  var emptySetting = { ID: 0, Name: '', Value: '', DefaultValue: '' };
@@ -0,0 +1,19 @@
1
+ import { Column } from "@gpa-gemstone/react-table";
2
+ import * as React from 'react';
3
+ import { GenericSlice } from "@gpa-gemstone/react-interactive";
4
+ interface U {
5
+ ID: number | string;
6
+ }
7
+ interface IProps<T extends U> {
8
+ Slice: GenericSlice<T>;
9
+ Selection: T[];
10
+ OnClose: (selected: T[], conf: boolean) => void;
11
+ Show: boolean;
12
+ Searchbar: (children: React.ReactNode) => React.ReactNode;
13
+ Type?: 'single' | 'multiple';
14
+ Columns: Column<T>[];
15
+ Title: string;
16
+ MinSelection?: number;
17
+ }
18
+ export default function SelectPopup<T extends U>(props: IProps<T>): JSX.Element;
19
+ export {};
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ // ******************************************************************************************************
3
+ // StandardSelectPopup.tsx - Gbtc
4
+ //
5
+ // Copyright © 2021, Grid Protection Alliance. All Rights Reserved.
6
+ //
7
+ // Licensed to the Grid Protection Alliance (GPA) under one or more contributor license agreements. See
8
+ // the NOTICE file distributed with this work for additional information regarding copyright ownership.
9
+ // The GPA licenses this file to you under the MIT License (MIT), the "License"; you may not use this
10
+ // file except in compliance with the License. You may obtain a copy of the License at:
11
+ //
12
+ // http://opensource.org/licenses/MIT
13
+ //
14
+ // Unless agreed to in writing, the subject software distributed under the License is distributed on an
15
+ // "AS-IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. Refer to the
16
+ // License for the specific language governing permissions and limitations.
17
+ //
18
+ // Code Modification History:
19
+ // ----------------------------------------------------------------------------------------------------
20
+ // 12/19/2021 - C. Lackner
21
+ // Generated original version of source code.
22
+ // ******************************************************************************************************
23
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
24
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
25
+ if (ar || !(i in from)) {
26
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
27
+ ar[i] = from[i];
28
+ }
29
+ }
30
+ return to.concat(ar || Array.prototype.slice.call(from));
31
+ };
32
+ Object.defineProperty(exports, "__esModule", { value: true });
33
+ var react_table_1 = require("@gpa-gemstone/react-table");
34
+ var React = require("react");
35
+ var react_redux_1 = require("react-redux");
36
+ var react_interactive_1 = require("@gpa-gemstone/react-interactive");
37
+ var _ = require("lodash");
38
+ var gpa_symbols_1 = require("@gpa-gemstone/gpa-symbols");
39
+ function SelectPopup(props) {
40
+ var dispatch = (0, react_redux_1.useDispatch)();
41
+ var sortField = (0, react_redux_1.useSelector)(props.Slice.SortField);
42
+ var ascending = (0, react_redux_1.useSelector)(props.Slice.Ascending);
43
+ var data = (0, react_redux_1.useSelector)(props.Slice.SearchResults);
44
+ var _a = React.useState(props.Selection), selectedData = _a[0], setSelectedData = _a[1];
45
+ var _b = React.useState(''), sortKeySelected = _b[0], setSortKeySelected = _b[1];
46
+ var _c = React.useState(false), ascendingSelected = _c[0], setAscendingSelected = _c[1];
47
+ React.useEffect(function () {
48
+ setSelectedData(props.Selection);
49
+ }, [props.Selection]);
50
+ function AddCurrentList() {
51
+ var updatedData;
52
+ updatedData = selectedData.concat(data);
53
+ setSelectedData(_.uniqBy(updatedData, function (d) { return d.ID; }));
54
+ }
55
+ return (React.createElement(React.Fragment, null,
56
+ React.createElement(react_interactive_1.Modal, { Show: props.Show, Title: props.Title, ShowX: true, Size: 'xlg', CallBack: function (conf) { return props.OnClose(selectedData, conf); }, DisableConfirm: props.MinSelection !== undefined && selectedData.length < props.MinSelection, ConfirmShowToolTip: props.MinSelection !== undefined && selectedData.length < props.MinSelection, ConfirmToolTipContent: React.createElement("p", null,
57
+ gpa_symbols_1.CrossMark,
58
+ " At least ",
59
+ props.MinSelection,
60
+ " items must be selected. ") },
61
+ React.createElement("div", { className: "row" },
62
+ React.createElement("div", { className: "col" }, props.Searchbar(props.Type === 'multiple' ? React.createElement("li", { className: "nav-item", style: { width: '20%', paddingRight: 10 } },
63
+ React.createElement("fieldset", { className: "border", style: { padding: '10px', height: '100%' } },
64
+ React.createElement("legend", { className: "w-auto", style: { fontSize: 'large' } }, "Quick Selects:"),
65
+ React.createElement("form", null,
66
+ React.createElement("div", { className: "form-group" },
67
+ React.createElement("div", { className: "btn btn-primary", onClick: function (event) { event.preventDefault(); AddCurrentList(); } }, "Add Current List to Selection")),
68
+ React.createElement("div", { className: "form-group" },
69
+ React.createElement("div", { className: "btn btn-danger", onClick: function (event) { event.preventDefault(); setSelectedData([]); } }, "Remove All"))))) : null))),
70
+ React.createElement("div", { className: "row" },
71
+ React.createElement("div", { className: "col", style: { width: (props.Type === undefined || props.Type === 'single' ? '100%' : '60%') } },
72
+ React.createElement(react_table_1.default, { cols: props.Columns, tableClass: "table table-hover", data: data, sortKey: sortField, ascending: ascending, onSort: function (d) {
73
+ if (d.colKey === "Scroll")
74
+ return;
75
+ if (d.colKey === sortField)
76
+ dispatch(props.Slice.Sort({ SortField: sortField, Ascending: ascending }));
77
+ else {
78
+ dispatch(props.Slice.Sort({ SortField: d.colField, Ascending: true }));
79
+ }
80
+ }, onClick: function (d) { return setSelectedData(__spreadArray(__spreadArray([], selectedData.filter(function (item) { return item.ID !== d.row.ID; }), true), [d.row], false)); }, theadStyle: { fontSize: 'smaller', display: 'table', tableLayout: 'fixed', width: '100%' }, tbodyStyle: { display: 'block', overflowY: 'scroll', maxHeight: '400px', width: '100%' }, rowStyle: { fontSize: 'smaller', display: 'table', tableLayout: 'fixed', width: '100%' }, selected: props.Type === undefined || props.Type === 'single' ? function (item) { return selectedData.findIndex(function (d) { return d.ID === item.ID; }) > -1; } : function (item) { return false; } })),
81
+ props.Type === 'multiple' ? React.createElement("div", { className: "col", style: { width: '40%' } },
82
+ React.createElement("div", { style: { width: '100%' } },
83
+ React.createElement("h3", null, " Selected Assets ")),
84
+ React.createElement(react_table_1.default, { cols: props.Columns, tableClass: "table table-hover", data: selectedData, sortKey: sortKeySelected, ascending: ascendingSelected, onSort: function (d) {
85
+ if (d.colKey === sortKeySelected) {
86
+ var ordered = _.orderBy(selectedData, [d.colKey], [(!ascendingSelected ? "asc" : "desc")]);
87
+ setAscendingSelected(!ascendingSelected);
88
+ setSelectedData(ordered);
89
+ }
90
+ else {
91
+ var ordered = _.orderBy(selectedData, [d.colKey], ["asc"]);
92
+ setAscendingSelected(!ascendingSelected);
93
+ setSelectedData(ordered);
94
+ setSortKeySelected(d.colKey);
95
+ }
96
+ }, onClick: function () { return true; }, theadStyle: { fontSize: 'smaller', display: 'table', tableLayout: 'fixed', width: '100%' }, tbodyStyle: { display: 'block', overflowY: 'scroll', maxHeight: '400px', width: '100%' }, rowStyle: { fontSize: 'smaller', display: 'table', tableLayout: 'fixed', width: '100%' }, selected: function (item) { return false; } })) : null))));
97
+ }
98
+ exports.default = SelectPopup;
@@ -39,18 +39,18 @@ var react_interactive_1 = require("@gpa-gemstone/react-interactive");
39
39
  var GroupForm_1 = require("./GroupForm");
40
40
  var react_redux_1 = require("react-redux");
41
41
  function ByValueListGroup(props) {
42
- var dispatch = react_redux_1.useDispatch();
43
- var data = react_redux_1.useSelector(props.ValueListSlice.SearchResults);
44
- var dataStatus = react_redux_1.useSelector(props.ValueListSlice.SearchStatus);
45
- var groups = react_redux_1.useSelector(props.ValueListSlice.Data);
46
- var groupStatus = react_redux_1.useSelector(props.ValueListSlice.Status);
42
+ var dispatch = (0, react_redux_1.useDispatch)();
43
+ var data = (0, react_redux_1.useSelector)(props.ValueListSlice.SearchResults);
44
+ var dataStatus = (0, react_redux_1.useSelector)(props.ValueListSlice.SearchStatus);
45
+ var groups = (0, react_redux_1.useSelector)(props.ValueListSlice.Data);
46
+ var groupStatus = (0, react_redux_1.useSelector)(props.ValueListSlice.Status);
47
47
  var _a = React.useState('Name'), sortKey = _a[0], setSortKey = _a[1];
48
48
  var _b = React.useState(false), asc = _b[0], setASC = _b[1];
49
49
  var emptyRecord = { ID: 0, Name: '', Description: '' };
50
50
  var _c = React.useState(false), showNew = _c[0], setShowNew = _c[1];
51
51
  var _d = React.useState(emptyRecord), record = _d[0], setRecord = _d[1];
52
- var items = react_redux_1.useSelector(props.ValueListItemSlice.Data);
53
- var itemStatus = react_redux_1.useSelector(props.ValueListItemSlice.Status);
52
+ var items = (0, react_redux_1.useSelector)(props.ValueListItemSlice.Data);
53
+ var itemStatus = (0, react_redux_1.useSelector)(props.ValueListItemSlice.Status);
54
54
  var _e = React.useState([]), search = _e[0], setSearch = _e[1];
55
55
  var _f = React.useState([]), newErrors = _f[0], setNewErrors = _f[1];
56
56
  var _g = React.useState(true), validName = _g[0], setValidName = _g[1];
@@ -27,9 +27,9 @@ var GroupInfo_1 = require("./GroupInfo");
27
27
  var GroupItem_1 = require("./GroupItem");
28
28
  var react_redux_1 = require("react-redux");
29
29
  function ValueListGroup(props) {
30
- var dispatch = react_redux_1.useDispatch();
31
- var record = react_redux_1.useSelector(function (state) { return props.ValueListSlice.Data(state).find(function (i) { return i.ID === props.Id; }); });
32
- var recordStatus = react_redux_1.useSelector(props.ValueListSlice.Status);
30
+ var dispatch = (0, react_redux_1.useDispatch)();
31
+ var record = (0, react_redux_1.useSelector)(function (state) { return props.ValueListSlice.Data(state).find(function (i) { return i.ID === props.Id; }); });
32
+ var recordStatus = (0, react_redux_1.useSelector)(props.ValueListSlice.Status);
33
33
  var _a = React.useState('items'), tab = _a[0], setTab = _a[1];
34
34
  var _b = React.useState(false), showWarning = _b[0], setShowWarning = _b[1];
35
35
  React.useEffect(function () {
@@ -39,10 +39,10 @@ var react_table_1 = require("@gpa-gemstone/react-table");
39
39
  var gpa_symbols_1 = require("@gpa-gemstone/gpa-symbols");
40
40
  var react_redux_1 = require("react-redux");
41
41
  function GroupItemsWindow(props) {
42
- var dispatch = react_redux_1.useDispatch();
43
- var recordStatus = react_redux_1.useSelector(props.ValueListItemSlice.Status);
44
- var data = react_redux_1.useSelector(props.ValueListItemSlice.Data);
45
- var parentID = react_redux_1.useSelector((props.ValueListItemSlice.ParentID === undefined ? function (state) { return -1; } : props.ValueListItemSlice.ParentID));
42
+ var dispatch = (0, react_redux_1.useDispatch)();
43
+ var recordStatus = (0, react_redux_1.useSelector)(props.ValueListItemSlice.Status);
44
+ var data = (0, react_redux_1.useSelector)(props.ValueListItemSlice.Data);
45
+ var parentID = (0, react_redux_1.useSelector)((props.ValueListItemSlice.ParentID === undefined ? function (state) { return -1; } : props.ValueListItemSlice.ParentID));
46
46
  var _a = React.useState('Value'), sortField = _a[0], setSortField = _a[1];
47
47
  var _b = React.useState(false), ascending = _b[0], setAscending = _b[1];
48
48
  var emptyRecord = { ID: 0, GroupID: props.Record.ID, Value: '', AltValue: '', SortOrder: 0 };
@@ -34,7 +34,7 @@ function ItemForm(props) {
34
34
  e.push('Value has to be less than 200 characters.');
35
35
  if (props.Record.AltValue != null && props.Record.AltValue.length > 200)
36
36
  e.push('Alt Value has to be less than 200 characters.');
37
- if (props.Record.SortOrder != null && !helper_functions_1.IsInteger(props.Record.SortOrder))
37
+ if (props.Record.SortOrder != null && !(0, helper_functions_1.IsInteger)(props.Record.SortOrder))
38
38
  e.push('Sort Order has to be an integer or be left blank.');
39
39
  setErrors(e);
40
40
  }, [props.Record]);
@@ -48,7 +48,7 @@ function ItemForm(props) {
48
48
  else if (field === 'AltValue')
49
49
  return props.Record.AltValue == null || props.Record.AltValue.length <= 200;
50
50
  else if (field === 'SortOrder')
51
- return props.Record.SortOrder == null || helper_functions_1.IsInteger(props.Record.SortOrder);
51
+ return props.Record.SortOrder == null || (0, helper_functions_1.IsInteger)(props.Record.SortOrder);
52
52
  return true;
53
53
  }
54
54
  return (React.createElement("form", null,
package/lib/index.d.ts CHANGED
@@ -4,4 +4,7 @@ import ByValueList from './ValueList/ByValueList';
4
4
  import ValueList from './ValueList/Group';
5
5
  import ByUser from './user/ByUser';
6
6
  import User from './user/User';
7
- export { Setting, Note, ValueList, ByValueList, User, ByUser };
7
+ import { DefaultSearch } from './SearchBar';
8
+ import SelectPopup from './StandardSelectPopup';
9
+ import { DefaultSelects } from './SelectionPopup';
10
+ export { Setting, Note, ValueList, ByValueList, User, ByUser, DefaultSearch, SelectPopup, DefaultSelects };
package/lib/index.js CHANGED
@@ -22,7 +22,7 @@
22
22
  //
23
23
  // ******************************************************************************************************
24
24
  Object.defineProperty(exports, "__esModule", { value: true });
25
- exports.ByUser = exports.User = exports.ByValueList = exports.ValueList = exports.Note = exports.Setting = void 0;
25
+ exports.DefaultSelects = exports.SelectPopup = exports.DefaultSearch = exports.ByUser = exports.User = exports.ByValueList = exports.ValueList = exports.Note = exports.Setting = void 0;
26
26
  var Setting_1 = require("./Setting");
27
27
  exports.Setting = Setting_1.default;
28
28
  var Note_1 = require("./Note");
@@ -35,3 +35,9 @@ var ByUser_1 = require("./user/ByUser");
35
35
  exports.ByUser = ByUser_1.default;
36
36
  var User_1 = require("./user/User");
37
37
  exports.User = User_1.default;
38
+ var SearchBar_1 = require("./SearchBar");
39
+ Object.defineProperty(exports, "DefaultSearch", { enumerable: true, get: function () { return SearchBar_1.DefaultSearch; } });
40
+ var StandardSelectPopup_1 = require("./StandardSelectPopup");
41
+ exports.SelectPopup = StandardSelectPopup_1.default;
42
+ var SelectionPopup_1 = require("./SelectionPopup");
43
+ Object.defineProperty(exports, "DefaultSelects", { enumerable: true, get: function () { return SelectionPopup_1.DefaultSelects; } });
@@ -31,10 +31,14 @@ var __assign = (this && this.__assign) || function () {
31
31
  };
32
32
  return __assign.apply(this, arguments);
33
33
  };
34
- var __spreadArray = (this && this.__spreadArray) || function (to, from) {
35
- for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
36
- to[j] = from[i];
37
- return to;
34
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
35
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
36
+ if (ar || !(i in from)) {
37
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
38
+ ar[i] = from[i];
39
+ }
40
+ }
41
+ return to.concat(ar || Array.prototype.slice.call(from));
38
42
  };
39
43
  Object.defineProperty(exports, "__esModule", { value: true });
40
44
  var React = require("react");
@@ -45,20 +49,20 @@ var react_forms_1 = require("@gpa-gemstone/react-forms");
45
49
  var react_redux_1 = require("react-redux");
46
50
  var helper_functions_1 = require("@gpa-gemstone/helper-functions");
47
51
  function AdditionalField(props) {
48
- var dispatch = react_redux_1.useDispatch();
49
- var valueListItems = react_redux_1.useSelector(props.ValueListItemSlice.Data);
50
- var valueListItemStatus = react_redux_1.useSelector(props.ValueListItemSlice.Status);
51
- var valueListGroups = react_redux_1.useSelector(props.ValueListGroupSlice.Data);
52
- var valueListGroupStatus = react_redux_1.useSelector(props.ValueListGroupSlice.Status);
53
- var fields = react_redux_1.useSelector(props.AdditionalFieldSlice.Fields);
54
- var values = react_redux_1.useSelector(props.AdditionalFieldSlice.Values);
55
- var fieldStatus = react_redux_1.useSelector(props.AdditionalFieldSlice.FieldStatus);
56
- var valueStatus = react_redux_1.useSelector(props.AdditionalFieldSlice.ValueStatus);
57
- var valueParentID = react_redux_1.useSelector(props.AdditionalFieldSlice.ValueParentId);
52
+ var dispatch = (0, react_redux_1.useDispatch)();
53
+ var valueListItems = (0, react_redux_1.useSelector)(props.ValueListItemSlice.Data);
54
+ var valueListItemStatus = (0, react_redux_1.useSelector)(props.ValueListItemSlice.Status);
55
+ var valueListGroups = (0, react_redux_1.useSelector)(props.ValueListGroupSlice.Data);
56
+ var valueListGroupStatus = (0, react_redux_1.useSelector)(props.ValueListGroupSlice.Status);
57
+ var fields = (0, react_redux_1.useSelector)(props.AdditionalFieldSlice.Fields);
58
+ var values = (0, react_redux_1.useSelector)(props.AdditionalFieldSlice.Values);
59
+ var fieldStatus = (0, react_redux_1.useSelector)(props.AdditionalFieldSlice.FieldStatus);
60
+ var valueStatus = (0, react_redux_1.useSelector)(props.AdditionalFieldSlice.ValueStatus);
61
+ var valueParentID = (0, react_redux_1.useSelector)(props.AdditionalFieldSlice.ValueParentId);
58
62
  var _a = React.useState('unintiated'), pageStatus = _a[0], setPageStatus = _a[1];
59
63
  var _b = React.useState([]), editValues = _b[0], setEditValues = _b[1];
60
- var sortField = react_redux_1.useSelector(props.AdditionalFieldSlice.SortField);
61
- var ascending = react_redux_1.useSelector(props.AdditionalFieldSlice.Ascending);
64
+ var sortField = (0, react_redux_1.useSelector)(props.AdditionalFieldSlice.SortField);
65
+ var ascending = (0, react_redux_1.useSelector)(props.AdditionalFieldSlice.Ascending);
62
66
  var _c = React.useState(props.EmptyField), newField = _c[0], setNewField = _c[1];
63
67
  var _d = React.useState(false), showWarning = _d[0], setShowWarning = _d[1];
64
68
  var _e = React.useState(false), showEdit = _e[0], setShowEdit = _e[1];
@@ -111,9 +115,9 @@ function AdditionalField(props) {
111
115
  c.push(fields[fldIndex].FieldName);
112
116
  else if (fldIndex > -1 && v.Value !== values[eIndex].Value)
113
117
  c.push(fields[fldIndex].FieldName);
114
- if (fldIndex > -1 && fields[fldIndex].Type === 'integer' && !helper_functions_1.IsInteger(v.Value))
118
+ if (fldIndex > -1 && fields[fldIndex].Type === 'integer' && !(0, helper_functions_1.IsInteger)(v.Value))
115
119
  e.push("'" + fields[fldIndex].FieldName + "' has to be a valid integer");
116
- if (fldIndex > -1 && fields[fldIndex].Type === 'number' && !helper_functions_1.IsNumber(v.Value))
120
+ if (fldIndex > -1 && fields[fldIndex].Type === 'number' && !(0, helper_functions_1.IsNumber)(v.Value))
117
121
  e.push("'" + fields[fldIndex].FieldName + "' has to be a valid number");
118
122
  });
119
123
  setErrorFields(e);
@@ -154,8 +158,8 @@ function AdditionalField(props) {
154
158
  var vList = valueListItems.filter(function (i) { return i.GroupID === valueListgrpId; });
155
159
  var valIdx = props.GetFieldValueIndex(item, editValues);
156
160
  if (valIdx > -1)
157
- return React.createElement(ValueDisplay, { Mode: mode, Type: item.Type, ValueListItems: vList, Value: editValues[valIdx], Setter: function (val) { return setEditValues(function (d) { var u = __spreadArray([], d); u[valIdx] = val; return u; }); } });
158
- return React.createElement(ValueDisplay, { Mode: mode, Type: item.Type, ValueListItems: vList, Value: props.CreateValue(item), Setter: function (val) { return setEditValues(function (d) { var u = __spreadArray([], d); u.push(val); return u; }); } });
161
+ return React.createElement(ValueDisplay, { Mode: mode, Type: item.Type, ValueListItems: vList, Value: editValues[valIdx], Setter: function (val) { return setEditValues(function (d) { var u = __spreadArray([], d, true); u[valIdx] = val; return u; }); } });
162
+ return React.createElement(ValueDisplay, { Mode: mode, Type: item.Type, ValueListItems: vList, Value: props.CreateValue(item), Setter: function (val) { return setEditValues(function (d) { var u = __spreadArray([], d, true); u.push(val); return u; }); } });
159
163
  }
160
164
  },
161
165
  { key: 'EditButton', label: '', headerStyle: { width: 40, paddingRight: 0, paddingLeft: 10 }, rowStyle: { width: 40, paddingRight: 0, paddingLeft: 10, paddingTop: 36 }, content: function (item) { return (mode === 'Edit' ? React.createElement("button", { className: "btn btn-sm", onClick: function () { setNewField(item); setShowEdit(true); } },
@@ -248,9 +252,9 @@ function ValueDisplay(props) {
248
252
  return React.createElement("span", null, props.Value.Value);
249
253
  }
250
254
  if (props.Type === 'number')
251
- return React.createElement(react_forms_1.Input, { Record: props.Value, Field: 'Value', Valid: function () { return helper_functions_1.IsInteger(props.Value.Value); }, Label: '', Type: 'number', Setter: props.Setter, Feedback: 'Thi Field is a numeric field.' });
255
+ return React.createElement(react_forms_1.Input, { Record: props.Value, Field: 'Value', Valid: function () { return (0, helper_functions_1.IsInteger)(props.Value.Value); }, Label: '', Type: 'number', Setter: props.Setter, Feedback: 'Thi Field is a numeric field.' });
252
256
  if (props.Type === 'integer')
253
- return React.createElement(react_forms_1.Input, { Record: props.Value, Field: 'Value', Valid: function () { return helper_functions_1.IsNumber(props.Value.Value); }, Label: '', Type: 'number', Setter: props.Setter, Feedback: 'Thi Field is an integer field.' });
257
+ return React.createElement(react_forms_1.Input, { Record: props.Value, Field: 'Value', Valid: function () { return (0, helper_functions_1.IsNumber)(props.Value.Value); }, Label: '', Type: 'number', Setter: props.Setter, Feedback: 'Thi Field is an integer field.' });
254
258
  else if (props.Type === 'string')
255
259
  return React.createElement(react_forms_1.Input, { Record: props.Value, Field: 'Value', Valid: function () { return true; }, Label: '', Type: 'text', Setter: props.Setter });
256
260
  else if (props.Type === 'boolean')
@@ -48,23 +48,23 @@ var defaultSearchcols = [
48
48
  { label: 'Email', key: 'Email', type: 'string', isPivotField: false },
49
49
  ];
50
50
  function ByUser(props) {
51
- var dispatch = react_redux_1.useDispatch();
52
- var search = react_redux_1.useSelector(props.UserSlice.SearchFilters);
53
- var data = react_redux_1.useSelector(props.UserSlice.SearchResults);
54
- var userStatus = react_redux_1.useSelector(props.UserSlice.Status);
55
- var searchStatus = react_redux_1.useSelector(props.UserSlice.SearchStatus);
56
- var sortField = react_redux_1.useSelector(props.UserSlice.SortField);
57
- var ascending = react_redux_1.useSelector(props.UserSlice.Ascending);
58
- var currentUserAccount = react_redux_1.useSelector(props.UserSlice.CurrentUser);
59
- var adlFields = react_redux_1.useSelector(props.AdditionalFieldSlice.Fields);
60
- var adlFieldStatus = react_redux_1.useSelector(props.AdditionalFieldSlice.FieldStatus);
51
+ var dispatch = (0, react_redux_1.useDispatch)();
52
+ var search = (0, react_redux_1.useSelector)(props.UserSlice.SearchFilters);
53
+ var data = (0, react_redux_1.useSelector)(props.UserSlice.SearchResults);
54
+ var userStatus = (0, react_redux_1.useSelector)(props.UserSlice.Status);
55
+ var searchStatus = (0, react_redux_1.useSelector)(props.UserSlice.SearchStatus);
56
+ var sortField = (0, react_redux_1.useSelector)(props.UserSlice.SortField);
57
+ var ascending = (0, react_redux_1.useSelector)(props.UserSlice.Ascending);
58
+ var currentUserAccount = (0, react_redux_1.useSelector)(props.UserSlice.CurrentUser);
59
+ var adlFields = (0, react_redux_1.useSelector)(props.AdditionalFieldSlice.Fields);
60
+ var adlFieldStatus = (0, react_redux_1.useSelector)(props.AdditionalFieldSlice.FieldStatus);
61
61
  var _a = React.useState(defaultSearchcols), filterableList = _a[0], setFilterableList = _a[1];
62
62
  var _b = React.useState(false), showModal = _b[0], setShowModal = _b[1];
63
63
  var _c = React.useState([]), userError = _c[0], setUserError = _c[1];
64
- var valueListItems = react_redux_1.useSelector(props.ValueListItemSlice.Data);
65
- var valueListItemStatus = react_redux_1.useSelector(props.ValueListItemSlice.Status);
66
- var valueListGroups = react_redux_1.useSelector(props.ValueListGroupSlice.Data);
67
- var valueListGroupStatus = react_redux_1.useSelector(props.ValueListGroupSlice.Status);
64
+ var valueListItems = (0, react_redux_1.useSelector)(props.ValueListItemSlice.Data);
65
+ var valueListItemStatus = (0, react_redux_1.useSelector)(props.ValueListItemSlice.Status);
66
+ var valueListGroups = (0, react_redux_1.useSelector)(props.ValueListGroupSlice.Data);
67
+ var valueListGroupStatus = (0, react_redux_1.useSelector)(props.ValueListGroupSlice.Status);
68
68
  var _d = React.useState('unintiated'), pageStatus = _d[0], setPageStatus = _d[1];
69
69
  React.useEffect(function () {
70
70
  if (userStatus === 'error' || adlFieldStatus === 'error' || valueListItemStatus === 'error' || valueListGroupStatus === 'error')
package/lib/user/User.js CHANGED
@@ -29,9 +29,9 @@ var AdditionalField_1 = require("./AdditionalField");
29
29
  var react_redux_1 = require("react-redux");
30
30
  var react_forms_1 = require("@gpa-gemstone/react-forms");
31
31
  function User(props) {
32
- var dispatch = react_redux_1.useDispatch();
33
- var user = react_redux_1.useSelector(props.UserSlice.CurrentUser);
34
- var status = react_redux_1.useSelector(props.UserSlice.Status);
32
+ var dispatch = (0, react_redux_1.useDispatch)();
33
+ var user = (0, react_redux_1.useSelector)(props.UserSlice.CurrentUser);
34
+ var status = (0, react_redux_1.useSelector)(props.UserSlice.Status);
35
35
  var _a = React.useState('userInfo'), tab = _a[0], setTab = _a[1];
36
36
  var _b = React.useState(false), showWarning = _b[0], setShowWarning = _b[1];
37
37
  React.useEffect(function () {
@@ -26,9 +26,9 @@ var react_forms_1 = require("@gpa-gemstone/react-forms");
26
26
  var _ = require("lodash");
27
27
  var react_redux_1 = require("react-redux");
28
28
  function UserForm(props) {
29
- var dispatch = react_redux_1.useDispatch();
29
+ var dispatch = (0, react_redux_1.useDispatch)();
30
30
  var _a = React.useState(false), updatedAD = _a[0], setUpdatedAD = _a[1];
31
- var userValidation = react_redux_1.useSelector(props.UserSlice.ADValidation);
31
+ var userValidation = (0, react_redux_1.useSelector)(props.UserSlice.ADValidation);
32
32
  var _b = React.useState([]), userError = _b[0], setUserError = _b[1];
33
33
  React.useEffect(function () {
34
34
  if (userValidation === 'Valid' && !props.Edit && updatedAD === false)
@@ -39,8 +39,8 @@ var react_interactive_1 = require("@gpa-gemstone/react-interactive");
39
39
  var gpa_symbols_1 = require("@gpa-gemstone/gpa-symbols");
40
40
  var react_redux_1 = require("react-redux");
41
41
  function UserInfo(props) {
42
- var dispatch = react_redux_1.useDispatch();
43
- var currentUser = react_redux_1.useSelector(props.UserSlice.CurrentUser);
42
+ var dispatch = (0, react_redux_1.useDispatch)();
43
+ var currentUser = (0, react_redux_1.useSelector)(props.UserSlice.CurrentUser);
44
44
  var _a = React.useState(currentUser), user = _a[0], setUser = _a[1];
45
45
  var _b = React.useState([]), warnings = _b[0], setWarning = _b[1];
46
46
  var _c = React.useState('None'), hover = _c[0], setHover = _c[1];
@@ -26,11 +26,11 @@ var _ = require("lodash");
26
26
  var react_forms_1 = require("@gpa-gemstone/react-forms");
27
27
  var react_redux_1 = require("react-redux");
28
28
  function UserPermission(props) {
29
- var dispatch = react_redux_1.useDispatch();
30
- var currentRoles = react_redux_1.useSelector(props.RoleSlice.Roles);
31
- var allRoleStatus = react_redux_1.useSelector(props.RoleSlice.Status);
32
- var availableRoles = react_redux_1.useSelector(props.RoleSlice.AvailableRoles);
33
- var currentRoleStatus = react_redux_1.useSelector(props.RoleSlice.CurrentRoleStatus);
29
+ var dispatch = (0, react_redux_1.useDispatch)();
30
+ var currentRoles = (0, react_redux_1.useSelector)(props.RoleSlice.Roles);
31
+ var allRoleStatus = (0, react_redux_1.useSelector)(props.RoleSlice.Status);
32
+ var availableRoles = (0, react_redux_1.useSelector)(props.RoleSlice.AvailableRoles);
33
+ var currentRoleStatus = (0, react_redux_1.useSelector)(props.RoleSlice.CurrentRoleStatus);
34
34
  var _a = React.useState([]), workingRoles = _a[0], setWorkingRoles = _a[1];
35
35
  var _b = React.useState(false), changed = _b[0], setChanged = _b[1];
36
36
  React.useEffect(function () {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gpa-gemstone/common-pages",
3
- "version": "0.0.18",
3
+ "version": "0.0.23",
4
4
  "description": "Common UI pages for GPA products",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -36,29 +36,29 @@
36
36
  },
37
37
  "homepage": "https://github.com/GridProtectionAlliance/gpa-gemstone#readme",
38
38
  "devDependencies": {
39
+ "@types/crypto-js": "4.0.2",
39
40
  "@types/jest": "^26.0.4",
41
+ "@types/jquery": "3.5.6",
40
42
  "jest": "^27.0.6",
41
43
  "prettier": "^2.3.2",
42
44
  "ts-jest": "^27.0.3",
43
45
  "tslint": "^6.1.3",
44
46
  "tslint-config-prettier": "^1.18.0",
45
- "typescript": "4.3.4",
46
- "@types/jquery": "3.5.6",
47
- "@types/crypto-js": "4.0.2"
47
+ "typescript": "4.4.4"
48
48
  },
49
49
  "dependencies": {
50
- "@gpa-gemstone/application-typings": "0.0.31",
51
- "@gpa-gemstone/gpa-symbols": "0.0.13",
52
- "@gpa-gemstone/react-forms": "1.1.13",
53
- "@gpa-gemstone/react-interactive": "1.0.24",
54
- "@gpa-gemstone/react-table": "1.2.5",
55
- "@gpa-gemstone/helper-functions": "0.0.9",
50
+ "@gpa-gemstone/application-typings": "",
51
+ "@gpa-gemstone/gpa-symbols": "",
52
+ "@gpa-gemstone/helper-functions": "",
53
+ "@gpa-gemstone/react-forms": "",
54
+ "@gpa-gemstone/react-interactive": "",
55
+ "@gpa-gemstone/react-table": "",
56
+ "@reduxjs/toolkit": "1.6.0",
57
+ "crypto-js": "4.0.0",
56
58
  "moment": "^2.29.1",
57
59
  "react": "^17.0.2",
58
- "styled-components": "^5.3.0",
59
- "crypto-js": "4.0.0",
60
- "react-redux": "7.2.4",
61
- "@reduxjs/toolkit": "1.6.0"
60
+ "react-redux": "7.2.6",
61
+ "styled-components": "^5.3.3"
62
62
  },
63
63
  "publishConfig": {
64
64
  "access": "public"