@genesislcap/pbc-auth-ui 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +47 -0
- package/dist/dts/index.d.ts +2 -0
- package/dist/dts/index.d.ts.map +1 -0
- package/dist/dts/index.federated.d.ts +1 -0
- package/dist/dts/index.federated.d.ts.map +1 -0
- package/dist/dts/types.d.ts +3 -0
- package/dist/dts/types.d.ts.map +1 -0
- package/dist/dts/user-admin/users.d.ts +568 -0
- package/dist/dts/user-admin/users.d.ts.map +1 -0
- package/dist/dts/user-admin/users.template.d.ts +3 -0
- package/dist/dts/user-admin/users.template.d.ts.map +1 -0
- package/dist/dts/utils/formatting.d.ts +7 -0
- package/dist/dts/utils/formatting.d.ts.map +1 -0
- package/dist/dts/utils/index.d.ts +3 -0
- package/dist/dts/utils/index.d.ts.map +1 -0
- package/dist/dts/utils/logger.d.ts +5 -0
- package/dist/dts/utils/logger.d.ts.map +1 -0
- package/dist/esm/index.federated.js +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/types.js +3 -0
- package/dist/esm/user-admin/users.js +313 -0
- package/dist/esm/user-admin/users.template.js +90 -0
- package/dist/esm/utils/formatting.js +6 -0
- package/dist/esm/utils/index.js +2 -0
- package/dist/esm/utils/logger.js +5 -0
- package/index.html +26 -0
- package/package.json +79 -0
- package/sonar-project.properties +5 -0
package/README.md
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Web Client
|
|
2
|
+
|
|
3
|
+
## Frontend stack
|
|
4
|
+
|
|
5
|
+
Genesis components are standards-based Web Components, making them compatible with almost any modern web framework.
|
|
6
|
+
Our state-of-the-art design system and component set is built on top of
|
|
7
|
+
[Microsoft FAST](https://www.fast.design/docs/introduction/).
|
|
8
|
+
|
|
9
|
+
# Development
|
|
10
|
+
|
|
11
|
+
1. Install dependencies:
|
|
12
|
+
|
|
13
|
+
```shell
|
|
14
|
+
npm run bootstrap
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
2. Start Web development server in watch mode:
|
|
18
|
+
|
|
19
|
+
```shell
|
|
20
|
+
npm run dev
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
3. Build for production:
|
|
24
|
+
|
|
25
|
+
```shell
|
|
26
|
+
npm run build
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Preview production build:
|
|
30
|
+
|
|
31
|
+
```shell
|
|
32
|
+
npm run serve
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Clean
|
|
36
|
+
|
|
37
|
+
Remove distribution and node_modules directories:
|
|
38
|
+
|
|
39
|
+
```shell
|
|
40
|
+
npm run clean
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Baseline task combines `clean` and `bootstrap` tasks into a single command:
|
|
44
|
+
|
|
45
|
+
```shell
|
|
46
|
+
npm run baseline
|
|
47
|
+
```
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=index.federated.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.federated.d.ts","sourceRoot":"","sources":["../../src/index.federated.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO,8DAA+B,CAAC;AAEpD,eAAO,MAAM,OAAO,8DAA+B,CAAC"}
|
|
@@ -0,0 +1,568 @@
|
|
|
1
|
+
import { GridProRendererTypes } from '@genesislcap/foundation-zero-grid-pro';
|
|
2
|
+
import { FASTElement } from '@microsoft/fast-element';
|
|
3
|
+
import { DatasourceConfiguration } from '@genesislcap/foundation-entity-management';
|
|
4
|
+
/**
|
|
5
|
+
* Defines the default columns which are present on the user management component
|
|
6
|
+
*
|
|
7
|
+
* @remarks
|
|
8
|
+
*
|
|
9
|
+
* This is exported so you can override and mix-in custom columns along with the default
|
|
10
|
+
* @public
|
|
11
|
+
*/
|
|
12
|
+
export declare const UsersColumnConfig: ({
|
|
13
|
+
field: string;
|
|
14
|
+
headerName: string;
|
|
15
|
+
enableCellChangeFlash: boolean;
|
|
16
|
+
enableRowGroup: boolean;
|
|
17
|
+
enablePivot: boolean;
|
|
18
|
+
enableValue: boolean;
|
|
19
|
+
} | {
|
|
20
|
+
field: string;
|
|
21
|
+
headerName: string;
|
|
22
|
+
valueFormatter: ({ value }: {
|
|
23
|
+
value: any;
|
|
24
|
+
}) => string;
|
|
25
|
+
enableCellChangeFlash: boolean;
|
|
26
|
+
enableRowGroup: boolean;
|
|
27
|
+
enablePivot: boolean;
|
|
28
|
+
enableValue: boolean;
|
|
29
|
+
})[];
|
|
30
|
+
declare const Users_base: (new (...args: any[]) => {
|
|
31
|
+
"__#1@#_container": import("@genesislcap/foundation-utils").FoundationLayoutContainer | import("@genesislcap/foundation-utils").LayoutCacheContainer | import("@genesislcap/foundation-utils").DOMContainer;
|
|
32
|
+
"__#1@#_latestTokenCode": string;
|
|
33
|
+
"__#1@#_hasFirstLoaded": boolean;
|
|
34
|
+
"__#1@#_cleanupTimeout": NodeJS.Timeout;
|
|
35
|
+
"__#1@#_shouldForceLifecycle": boolean;
|
|
36
|
+
cloneNode(deep?: boolean): Node;
|
|
37
|
+
deepClone(): Node;
|
|
38
|
+
readonly shouldRunDisconnect: boolean;
|
|
39
|
+
readonly shouldRunConnect: boolean;
|
|
40
|
+
"__#1@#_blockLifecycleDueToTokenChange"(lifecycleType: "connect" | "disconnect" | "reconnect"): boolean;
|
|
41
|
+
"__#1@#_tryFindContainingLayout"(e: Element): import("@genesislcap/foundation-utils").FoundationLayoutContainer | import("@genesislcap/foundation-utils").LayoutCacheContainer | import("@genesislcap/foundation-utils").DOMContainer;
|
|
42
|
+
connectedCallback(): void;
|
|
43
|
+
readonly $fastController: import("@microsoft/fast-element").Controller;
|
|
44
|
+
$emit(type: string, detail?: any, options?: Omit<CustomEventInit<any>, "detail">): boolean | void;
|
|
45
|
+
disconnectedCallback(): void;
|
|
46
|
+
attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
|
|
47
|
+
accessKey: string;
|
|
48
|
+
readonly accessKeyLabel: string;
|
|
49
|
+
autocapitalize: string;
|
|
50
|
+
dir: string;
|
|
51
|
+
draggable: boolean;
|
|
52
|
+
hidden: boolean;
|
|
53
|
+
inert: boolean;
|
|
54
|
+
innerText: string;
|
|
55
|
+
lang: string;
|
|
56
|
+
readonly offsetHeight: number;
|
|
57
|
+
readonly offsetLeft: number;
|
|
58
|
+
readonly offsetParent: Element;
|
|
59
|
+
readonly offsetTop: number;
|
|
60
|
+
readonly offsetWidth: number;
|
|
61
|
+
outerText: string;
|
|
62
|
+
spellcheck: boolean;
|
|
63
|
+
title: string;
|
|
64
|
+
translate: boolean;
|
|
65
|
+
attachInternals(): ElementInternals;
|
|
66
|
+
click(): void;
|
|
67
|
+
addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
68
|
+
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
69
|
+
removeEventListener<K_1 extends keyof HTMLElementEventMap>(type: K_1, listener: (this: HTMLElement, ev: HTMLElementEventMap[K_1]) => any, options?: boolean | EventListenerOptions): void;
|
|
70
|
+
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
71
|
+
readonly attributes: NamedNodeMap;
|
|
72
|
+
readonly classList: DOMTokenList;
|
|
73
|
+
className: string;
|
|
74
|
+
readonly clientHeight: number;
|
|
75
|
+
readonly clientLeft: number;
|
|
76
|
+
readonly clientTop: number;
|
|
77
|
+
readonly clientWidth: number;
|
|
78
|
+
/**
|
|
79
|
+
* entityID used to control the definition of an optional entity column which is created with the {@link Users.entityColumn} function.
|
|
80
|
+
* @internal
|
|
81
|
+
*/
|
|
82
|
+
id: string;
|
|
83
|
+
readonly localName: string;
|
|
84
|
+
readonly namespaceURI: string;
|
|
85
|
+
onfullscreenchange: (this: Element, ev: Event) => any;
|
|
86
|
+
onfullscreenerror: (this: Element, ev: Event) => any;
|
|
87
|
+
outerHTML: string;
|
|
88
|
+
readonly ownerDocument: Document;
|
|
89
|
+
readonly part: DOMTokenList;
|
|
90
|
+
readonly prefix: string;
|
|
91
|
+
readonly scrollHeight: number;
|
|
92
|
+
scrollLeft: number;
|
|
93
|
+
scrollTop: number;
|
|
94
|
+
readonly scrollWidth: number;
|
|
95
|
+
readonly shadowRoot: ShadowRoot;
|
|
96
|
+
slot: string;
|
|
97
|
+
readonly tagName: string;
|
|
98
|
+
attachShadow(init: ShadowRootInit): ShadowRoot;
|
|
99
|
+
closest<K_2 extends keyof HTMLElementTagNameMap>(selector: K_2): HTMLElementTagNameMap[K_2];
|
|
100
|
+
closest<K_3 extends keyof SVGElementTagNameMap>(selector: K_3): SVGElementTagNameMap[K_3];
|
|
101
|
+
closest<E extends Element = Element>(selectors: string): E;
|
|
102
|
+
getAttribute(qualifiedName: string): string;
|
|
103
|
+
getAttributeNS(namespace: string, localName: string): string;
|
|
104
|
+
getAttributeNames(): string[];
|
|
105
|
+
getAttributeNode(qualifiedName: string): Attr;
|
|
106
|
+
getAttributeNodeNS(namespace: string, localName: string): Attr;
|
|
107
|
+
getBoundingClientRect(): DOMRect;
|
|
108
|
+
getClientRects(): DOMRectList;
|
|
109
|
+
getElementsByClassName(classNames: string): HTMLCollectionOf<Element>;
|
|
110
|
+
getElementsByTagName<K_4 extends keyof HTMLElementTagNameMap>(qualifiedName: K_4): HTMLCollectionOf<HTMLElementTagNameMap[K_4]>;
|
|
111
|
+
getElementsByTagName<K_5 extends keyof SVGElementTagNameMap>(qualifiedName: K_5): HTMLCollectionOf<SVGElementTagNameMap[K_5]>;
|
|
112
|
+
getElementsByTagName(qualifiedName: string): HTMLCollectionOf<Element>;
|
|
113
|
+
getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1999/xhtml", localName: string): HTMLCollectionOf<HTMLElement>;
|
|
114
|
+
getElementsByTagNameNS(namespaceURI: "http://www.w3.org/2000/svg", localName: string): HTMLCollectionOf<SVGElement>;
|
|
115
|
+
getElementsByTagNameNS(namespace: string, localName: string): HTMLCollectionOf<Element>;
|
|
116
|
+
hasAttribute(qualifiedName: string): boolean;
|
|
117
|
+
hasAttributeNS(namespace: string, localName: string): boolean;
|
|
118
|
+
hasAttributes(): boolean;
|
|
119
|
+
hasPointerCapture(pointerId: number): boolean;
|
|
120
|
+
insertAdjacentElement(where: InsertPosition, element: Element): Element;
|
|
121
|
+
insertAdjacentHTML(position: InsertPosition, text: string): void;
|
|
122
|
+
insertAdjacentText(where: InsertPosition, data: string): void;
|
|
123
|
+
matches(selectors: string): boolean;
|
|
124
|
+
releasePointerCapture(pointerId: number): void;
|
|
125
|
+
removeAttribute(qualifiedName: string): void;
|
|
126
|
+
removeAttributeNS(namespace: string, localName: string): void;
|
|
127
|
+
removeAttributeNode(attr: Attr): Attr;
|
|
128
|
+
requestFullscreen(options?: FullscreenOptions): Promise<void>;
|
|
129
|
+
requestPointerLock(): void;
|
|
130
|
+
scroll(options?: ScrollToOptions): void;
|
|
131
|
+
scroll(x: number, y: number): void;
|
|
132
|
+
scrollBy(options?: ScrollToOptions): void;
|
|
133
|
+
scrollBy(x: number, y: number): void;
|
|
134
|
+
scrollIntoView(arg?: boolean | ScrollIntoViewOptions): void;
|
|
135
|
+
scrollTo(options?: ScrollToOptions): void;
|
|
136
|
+
scrollTo(x: number, y: number): void;
|
|
137
|
+
setAttribute(qualifiedName: string, value: string): void;
|
|
138
|
+
setAttributeNS(namespace: string, qualifiedName: string, value: string): void;
|
|
139
|
+
setAttributeNode(attr: Attr): Attr;
|
|
140
|
+
setAttributeNodeNS(attr: Attr): Attr;
|
|
141
|
+
setPointerCapture(pointerId: number): void;
|
|
142
|
+
toggleAttribute(qualifiedName: string, force?: boolean): boolean;
|
|
143
|
+
webkitMatchesSelector(selectors: string): boolean;
|
|
144
|
+
readonly baseURI: string;
|
|
145
|
+
readonly childNodes: NodeListOf<ChildNode>;
|
|
146
|
+
readonly firstChild: ChildNode;
|
|
147
|
+
readonly isConnected: boolean;
|
|
148
|
+
readonly lastChild: ChildNode;
|
|
149
|
+
readonly nextSibling: ChildNode;
|
|
150
|
+
readonly nodeName: string;
|
|
151
|
+
readonly nodeType: number;
|
|
152
|
+
nodeValue: string;
|
|
153
|
+
readonly parentElement: HTMLElement;
|
|
154
|
+
readonly parentNode: ParentNode;
|
|
155
|
+
readonly previousSibling: ChildNode;
|
|
156
|
+
textContent: string;
|
|
157
|
+
appendChild<T_1 extends Node>(node: T_1): T_1;
|
|
158
|
+
compareDocumentPosition(other: Node): number;
|
|
159
|
+
contains(other: Node): boolean;
|
|
160
|
+
getRootNode(options?: GetRootNodeOptions): Node;
|
|
161
|
+
hasChildNodes(): boolean;
|
|
162
|
+
insertBefore<T_2 extends Node>(node: T_2, child: Node): T_2;
|
|
163
|
+
isDefaultNamespace(namespace: string): boolean;
|
|
164
|
+
isEqualNode(otherNode: Node): boolean;
|
|
165
|
+
isSameNode(otherNode: Node): boolean;
|
|
166
|
+
lookupNamespaceURI(prefix: string): string;
|
|
167
|
+
lookupPrefix(namespace: string): string;
|
|
168
|
+
normalize(): void;
|
|
169
|
+
removeChild<T_3 extends Node>(child: T_3): T_3;
|
|
170
|
+
replaceChild<T_4 extends Node>(node: Node, child: T_4): T_4;
|
|
171
|
+
readonly ATTRIBUTE_NODE: number;
|
|
172
|
+
readonly CDATA_SECTION_NODE: number;
|
|
173
|
+
readonly COMMENT_NODE: number;
|
|
174
|
+
readonly DOCUMENT_FRAGMENT_NODE: number;
|
|
175
|
+
readonly DOCUMENT_NODE: number;
|
|
176
|
+
readonly DOCUMENT_POSITION_CONTAINED_BY: number;
|
|
177
|
+
readonly DOCUMENT_POSITION_CONTAINS: number;
|
|
178
|
+
readonly DOCUMENT_POSITION_DISCONNECTED: number;
|
|
179
|
+
readonly DOCUMENT_POSITION_FOLLOWING: number;
|
|
180
|
+
readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: number;
|
|
181
|
+
readonly DOCUMENT_POSITION_PRECEDING: number;
|
|
182
|
+
readonly DOCUMENT_TYPE_NODE: number;
|
|
183
|
+
readonly ELEMENT_NODE: number;
|
|
184
|
+
readonly ENTITY_NODE: number;
|
|
185
|
+
readonly ENTITY_REFERENCE_NODE: number;
|
|
186
|
+
readonly NOTATION_NODE: number;
|
|
187
|
+
readonly PROCESSING_INSTRUCTION_NODE: number;
|
|
188
|
+
readonly TEXT_NODE: number;
|
|
189
|
+
dispatchEvent(event: Event): boolean;
|
|
190
|
+
ariaAtomic: string;
|
|
191
|
+
ariaAutoComplete: string;
|
|
192
|
+
ariaBusy: string;
|
|
193
|
+
ariaChecked: string;
|
|
194
|
+
ariaColCount: string;
|
|
195
|
+
ariaColIndex: string;
|
|
196
|
+
ariaColIndexText: string;
|
|
197
|
+
ariaColSpan: string;
|
|
198
|
+
ariaCurrent: string;
|
|
199
|
+
ariaDisabled: string;
|
|
200
|
+
ariaExpanded: string;
|
|
201
|
+
ariaHasPopup: string;
|
|
202
|
+
ariaHidden: string;
|
|
203
|
+
ariaInvalid: string;
|
|
204
|
+
ariaKeyShortcuts: string;
|
|
205
|
+
ariaLabel: string;
|
|
206
|
+
ariaLevel: string;
|
|
207
|
+
ariaLive: string;
|
|
208
|
+
ariaModal: string;
|
|
209
|
+
ariaMultiLine: string;
|
|
210
|
+
ariaMultiSelectable: string;
|
|
211
|
+
ariaOrientation: string;
|
|
212
|
+
ariaPlaceholder: string;
|
|
213
|
+
ariaPosInSet: string;
|
|
214
|
+
ariaPressed: string;
|
|
215
|
+
ariaReadOnly: string;
|
|
216
|
+
ariaRequired: string;
|
|
217
|
+
ariaRoleDescription: string;
|
|
218
|
+
ariaRowCount: string;
|
|
219
|
+
ariaRowIndex: string;
|
|
220
|
+
ariaRowIndexText: string;
|
|
221
|
+
ariaRowSpan: string;
|
|
222
|
+
ariaSelected: string;
|
|
223
|
+
ariaSetSize: string;
|
|
224
|
+
ariaSort: string;
|
|
225
|
+
ariaValueMax: string;
|
|
226
|
+
ariaValueMin: string;
|
|
227
|
+
ariaValueNow: string;
|
|
228
|
+
ariaValueText: string;
|
|
229
|
+
role: string;
|
|
230
|
+
animate(keyframes: PropertyIndexedKeyframes | Keyframe[], options?: number | KeyframeAnimationOptions): Animation;
|
|
231
|
+
getAnimations(options?: GetAnimationsOptions): Animation[];
|
|
232
|
+
after(...nodes: (string | Node)[]): void;
|
|
233
|
+
before(...nodes: (string | Node)[]): void;
|
|
234
|
+
remove(): void;
|
|
235
|
+
replaceWith(...nodes: (string | Node)[]): void;
|
|
236
|
+
innerHTML: string;
|
|
237
|
+
readonly nextElementSibling: Element;
|
|
238
|
+
readonly previousElementSibling: Element;
|
|
239
|
+
readonly childElementCount: number;
|
|
240
|
+
readonly children: HTMLCollection;
|
|
241
|
+
readonly firstElementChild: Element;
|
|
242
|
+
readonly lastElementChild: Element;
|
|
243
|
+
append(...nodes: (string | Node)[]): void;
|
|
244
|
+
prepend(...nodes: (string | Node)[]): void;
|
|
245
|
+
querySelector<K_6 extends keyof HTMLElementTagNameMap>(selectors: K_6): HTMLElementTagNameMap[K_6];
|
|
246
|
+
querySelector<K_7 extends keyof SVGElementTagNameMap>(selectors: K_7): SVGElementTagNameMap[K_7];
|
|
247
|
+
querySelector<E_1 extends Element = Element>(selectors: string): E_1;
|
|
248
|
+
querySelectorAll<K_8 extends keyof HTMLElementTagNameMap>(selectors: K_8): NodeListOf<HTMLElementTagNameMap[K_8]>;
|
|
249
|
+
querySelectorAll<K_9 extends keyof SVGElementTagNameMap>(selectors: K_9): NodeListOf<SVGElementTagNameMap[K_9]>;
|
|
250
|
+
querySelectorAll<E_2 extends Element = Element>(selectors: string): NodeListOf<E_2>;
|
|
251
|
+
replaceChildren(...nodes: (string | Node)[]): void;
|
|
252
|
+
readonly assignedSlot: HTMLSlotElement;
|
|
253
|
+
oncopy: (this: DocumentAndElementEventHandlers, ev: ClipboardEvent) => any;
|
|
254
|
+
oncut: (this: DocumentAndElementEventHandlers, ev: ClipboardEvent) => any;
|
|
255
|
+
onpaste: (this: DocumentAndElementEventHandlers, ev: ClipboardEvent) => any;
|
|
256
|
+
readonly style: CSSStyleDeclaration;
|
|
257
|
+
contentEditable: string;
|
|
258
|
+
enterKeyHint: string;
|
|
259
|
+
inputMode: string;
|
|
260
|
+
readonly isContentEditable: boolean;
|
|
261
|
+
onabort: (this: GlobalEventHandlers, ev: UIEvent) => any;
|
|
262
|
+
onanimationcancel: (this: GlobalEventHandlers, ev: AnimationEvent) => any;
|
|
263
|
+
onanimationend: (this: GlobalEventHandlers, ev: AnimationEvent) => any;
|
|
264
|
+
onanimationiteration: (this: GlobalEventHandlers, ev: AnimationEvent) => any;
|
|
265
|
+
onanimationstart: (this: GlobalEventHandlers, ev: AnimationEvent) => any;
|
|
266
|
+
onauxclick: (this: GlobalEventHandlers, ev: MouseEvent) => any;
|
|
267
|
+
onbeforeinput: (this: GlobalEventHandlers, ev: InputEvent) => any;
|
|
268
|
+
onblur: (this: GlobalEventHandlers, ev: FocusEvent) => any;
|
|
269
|
+
oncancel: (this: GlobalEventHandlers, ev: Event) => any;
|
|
270
|
+
oncanplay: (this: GlobalEventHandlers, ev: Event) => any;
|
|
271
|
+
oncanplaythrough: (this: GlobalEventHandlers, ev: Event) => any;
|
|
272
|
+
onchange: (this: GlobalEventHandlers, ev: Event) => any;
|
|
273
|
+
onclick: (this: GlobalEventHandlers, ev: MouseEvent) => any;
|
|
274
|
+
onclose: (this: GlobalEventHandlers, ev: Event) => any;
|
|
275
|
+
oncontextmenu: (this: GlobalEventHandlers, ev: MouseEvent) => any;
|
|
276
|
+
oncuechange: (this: GlobalEventHandlers, ev: Event) => any;
|
|
277
|
+
ondblclick: (this: GlobalEventHandlers, ev: MouseEvent) => any;
|
|
278
|
+
ondrag: (this: GlobalEventHandlers, ev: DragEvent) => any;
|
|
279
|
+
ondragend: (this: GlobalEventHandlers, ev: DragEvent) => any;
|
|
280
|
+
ondragenter: (this: GlobalEventHandlers, ev: DragEvent) => any;
|
|
281
|
+
ondragleave: (this: GlobalEventHandlers, ev: DragEvent) => any;
|
|
282
|
+
ondragover: (this: GlobalEventHandlers, ev: DragEvent) => any;
|
|
283
|
+
ondragstart: (this: GlobalEventHandlers, ev: DragEvent) => any;
|
|
284
|
+
ondrop: (this: GlobalEventHandlers, ev: DragEvent) => any;
|
|
285
|
+
ondurationchange: (this: GlobalEventHandlers, ev: Event) => any;
|
|
286
|
+
onemptied: (this: GlobalEventHandlers, ev: Event) => any;
|
|
287
|
+
onended: (this: GlobalEventHandlers, ev: Event) => any;
|
|
288
|
+
onerror: OnErrorEventHandlerNonNull;
|
|
289
|
+
onfocus: (this: GlobalEventHandlers, ev: FocusEvent) => any;
|
|
290
|
+
onformdata: (this: GlobalEventHandlers, ev: FormDataEvent) => any;
|
|
291
|
+
ongotpointercapture: (this: GlobalEventHandlers, ev: PointerEvent) => any;
|
|
292
|
+
oninput: (this: GlobalEventHandlers, ev: Event) => any;
|
|
293
|
+
oninvalid: (this: GlobalEventHandlers, ev: Event) => any;
|
|
294
|
+
onkeydown: (this: GlobalEventHandlers, ev: KeyboardEvent) => any;
|
|
295
|
+
onkeypress: (this: GlobalEventHandlers, ev: KeyboardEvent) => any;
|
|
296
|
+
onkeyup: (this: GlobalEventHandlers, ev: KeyboardEvent) => any;
|
|
297
|
+
onload: (this: GlobalEventHandlers, ev: Event) => any;
|
|
298
|
+
onloadeddata: (this: GlobalEventHandlers, ev: Event) => any;
|
|
299
|
+
onloadedmetadata: (this: GlobalEventHandlers, ev: Event) => any;
|
|
300
|
+
onloadstart: (this: GlobalEventHandlers, ev: Event) => any;
|
|
301
|
+
onlostpointercapture: (this: GlobalEventHandlers, ev: PointerEvent) => any;
|
|
302
|
+
onmousedown: (this: GlobalEventHandlers, ev: MouseEvent) => any;
|
|
303
|
+
onmouseenter: (this: GlobalEventHandlers, ev: MouseEvent) => any;
|
|
304
|
+
onmouseleave: (this: GlobalEventHandlers, ev: MouseEvent) => any;
|
|
305
|
+
onmousemove: (this: GlobalEventHandlers, ev: MouseEvent) => any;
|
|
306
|
+
onmouseout: (this: GlobalEventHandlers, ev: MouseEvent) => any;
|
|
307
|
+
onmouseover: (this: GlobalEventHandlers, ev: MouseEvent) => any;
|
|
308
|
+
onmouseup: (this: GlobalEventHandlers, ev: MouseEvent) => any;
|
|
309
|
+
onpause: (this: GlobalEventHandlers, ev: Event) => any;
|
|
310
|
+
onplay: (this: GlobalEventHandlers, ev: Event) => any;
|
|
311
|
+
onplaying: (this: GlobalEventHandlers, ev: Event) => any;
|
|
312
|
+
onpointercancel: (this: GlobalEventHandlers, ev: PointerEvent) => any;
|
|
313
|
+
onpointerdown: (this: GlobalEventHandlers, ev: PointerEvent) => any;
|
|
314
|
+
onpointerenter: (this: GlobalEventHandlers, ev: PointerEvent) => any;
|
|
315
|
+
onpointerleave: (this: GlobalEventHandlers, ev: PointerEvent) => any;
|
|
316
|
+
onpointermove: (this: GlobalEventHandlers, ev: PointerEvent) => any;
|
|
317
|
+
onpointerout: (this: GlobalEventHandlers, ev: PointerEvent) => any;
|
|
318
|
+
onpointerover: (this: GlobalEventHandlers, ev: PointerEvent) => any;
|
|
319
|
+
onpointerup: (this: GlobalEventHandlers, ev: PointerEvent) => any;
|
|
320
|
+
onprogress: (this: GlobalEventHandlers, ev: ProgressEvent<EventTarget>) => any;
|
|
321
|
+
onratechange: (this: GlobalEventHandlers, ev: Event) => any;
|
|
322
|
+
onreset: (this: GlobalEventHandlers, ev: Event) => any;
|
|
323
|
+
onresize: (this: GlobalEventHandlers, ev: UIEvent) => any;
|
|
324
|
+
onscroll: (this: GlobalEventHandlers, ev: Event) => any;
|
|
325
|
+
onsecuritypolicyviolation: (this: GlobalEventHandlers, ev: SecurityPolicyViolationEvent) => any;
|
|
326
|
+
onseeked: (this: GlobalEventHandlers, ev: Event) => any;
|
|
327
|
+
onseeking: (this: GlobalEventHandlers, ev: Event) => any;
|
|
328
|
+
onselect: (this: GlobalEventHandlers, ev: Event) => any;
|
|
329
|
+
onselectionchange: (this: GlobalEventHandlers, ev: Event) => any;
|
|
330
|
+
onselectstart: (this: GlobalEventHandlers, ev: Event) => any;
|
|
331
|
+
onslotchange: (this: GlobalEventHandlers, ev: Event) => any;
|
|
332
|
+
onstalled: (this: GlobalEventHandlers, ev: Event) => any;
|
|
333
|
+
onsubmit: (this: GlobalEventHandlers, ev: SubmitEvent) => any;
|
|
334
|
+
onsuspend: (this: GlobalEventHandlers, ev: Event) => any;
|
|
335
|
+
ontimeupdate: (this: GlobalEventHandlers, ev: Event) => any;
|
|
336
|
+
ontoggle: (this: GlobalEventHandlers, ev: Event) => any;
|
|
337
|
+
ontouchcancel?: (this: GlobalEventHandlers, ev: TouchEvent) => any;
|
|
338
|
+
ontouchend?: (this: GlobalEventHandlers, ev: TouchEvent) => any;
|
|
339
|
+
ontouchmove?: (this: GlobalEventHandlers, ev: TouchEvent) => any;
|
|
340
|
+
ontouchstart?: (this: GlobalEventHandlers, ev: TouchEvent) => any;
|
|
341
|
+
ontransitioncancel: (this: GlobalEventHandlers, ev: TransitionEvent) => any;
|
|
342
|
+
ontransitionend: (this: GlobalEventHandlers, ev: TransitionEvent) => any;
|
|
343
|
+
ontransitionrun: (this: GlobalEventHandlers, ev: TransitionEvent) => any;
|
|
344
|
+
ontransitionstart: (this: GlobalEventHandlers, ev: TransitionEvent) => any;
|
|
345
|
+
onvolumechange: (this: GlobalEventHandlers, ev: Event) => any;
|
|
346
|
+
onwaiting: (this: GlobalEventHandlers, ev: Event) => any;
|
|
347
|
+
onwebkitanimationend: (this: GlobalEventHandlers, ev: Event) => any;
|
|
348
|
+
onwebkitanimationiteration: (this: GlobalEventHandlers, ev: Event) => any;
|
|
349
|
+
onwebkitanimationstart: (this: GlobalEventHandlers, ev: Event) => any;
|
|
350
|
+
onwebkittransitionend: (this: GlobalEventHandlers, ev: Event) => any;
|
|
351
|
+
onwheel: (this: GlobalEventHandlers, ev: WheelEvent) => any;
|
|
352
|
+
autofocus: boolean;
|
|
353
|
+
readonly dataset: DOMStringMap;
|
|
354
|
+
nonce?: string;
|
|
355
|
+
tabIndex: number;
|
|
356
|
+
blur(): void;
|
|
357
|
+
focus(options?: FocusOptions): void;
|
|
358
|
+
}) & (new () => HTMLElement & FASTElement) & {
|
|
359
|
+
from<TBase extends {
|
|
360
|
+
new (): HTMLElement;
|
|
361
|
+
prototype: HTMLElement;
|
|
362
|
+
}>(BaseType: TBase): new () => InstanceType<TBase> & FASTElement;
|
|
363
|
+
define<TType extends Function>(type: TType, nameOrDef?: string | import("@microsoft/fast-element").PartialFASTElementDefinition): TType;
|
|
364
|
+
};
|
|
365
|
+
/**
|
|
366
|
+
* Main class which defines the user management functionality
|
|
367
|
+
*
|
|
368
|
+
* @remarks
|
|
369
|
+
*
|
|
370
|
+
* Under the hood the user-management is the entity-management micro-frontend configured for use
|
|
371
|
+
* with the `ALL_USERS` resource.
|
|
372
|
+
*
|
|
373
|
+
* @public
|
|
374
|
+
*
|
|
375
|
+
* @example
|
|
376
|
+
*
|
|
377
|
+
* With no customisation required the user management micro-frontend can simply be dropped into the
|
|
378
|
+
* template as shown. However, it is advised to wrap it in an error boundary component.
|
|
379
|
+
* ```javascript
|
|
380
|
+
* <user-management></user-management>
|
|
381
|
+
* ```
|
|
382
|
+
* With this default example above the columns will be the {@link UsersColumnConfig} as well as the
|
|
383
|
+
* entity and status columns. The entity and status
|
|
384
|
+
* columns are always added regardless of the other columns which are configured.
|
|
385
|
+
*
|
|
386
|
+
* You can add in additional customisation options. For example you can define a custom column and
|
|
387
|
+
* then mix-in with the standard columns
|
|
388
|
+
* ```javascript
|
|
389
|
+
* import { Users, UsersColumnConfig, } from '@genesislcap/foundation-entity-management';
|
|
390
|
+
*
|
|
391
|
+
* const userColumns = [
|
|
392
|
+
* {
|
|
393
|
+
* field: 'ACCESS_TYPE',
|
|
394
|
+
* headerName: 'Access Type',
|
|
395
|
+
* },
|
|
396
|
+
* ];
|
|
397
|
+
*
|
|
398
|
+
* // Definition inside of the html template
|
|
399
|
+
* <user-management :columns=${() => [...UsersColumnConfig, ...userColumns]}></user-management>
|
|
400
|
+
* ```
|
|
401
|
+
*/
|
|
402
|
+
export declare class Users extends Users_base {
|
|
403
|
+
/**
|
|
404
|
+
* DI connect object which is used to interact with the backend.
|
|
405
|
+
*
|
|
406
|
+
* @remarks
|
|
407
|
+
*
|
|
408
|
+
* Requires {@link @genesislcap/foundation-comms#Connect | the connect class} to be registered with the
|
|
409
|
+
* DI container
|
|
410
|
+
* @internal
|
|
411
|
+
*/
|
|
412
|
+
private connect;
|
|
413
|
+
/**
|
|
414
|
+
* Auth provider which is used to confirm authorisation of the user for their user management permissions
|
|
415
|
+
*
|
|
416
|
+
* @remarks
|
|
417
|
+
*
|
|
418
|
+
* Requires {@link @genesislcap/foundation-comms#Auth | the auth class} to be registered with the
|
|
419
|
+
* DI container
|
|
420
|
+
* @internal
|
|
421
|
+
*/
|
|
422
|
+
private auth;
|
|
423
|
+
/**
|
|
424
|
+
* The configuration which is used when interacting with the resource on the backend
|
|
425
|
+
*
|
|
426
|
+
* @remarks
|
|
427
|
+
*
|
|
428
|
+
* Handles the configuration such as how many rows of entities to fetch at a time
|
|
429
|
+
* @internal
|
|
430
|
+
*/
|
|
431
|
+
datasourceConfig: DatasourceConfiguration;
|
|
432
|
+
/**
|
|
433
|
+
* Configuring the resourceName from the entity-management, set to manage the users resource specifically
|
|
434
|
+
* @internal
|
|
435
|
+
*/
|
|
436
|
+
resourceName: string;
|
|
437
|
+
/**
|
|
438
|
+
* This attribute controls whether and how the user manager stores the state of the columns when the user edits them. Defaulted to `entity_users_management`.
|
|
439
|
+
*
|
|
440
|
+
* @remarks
|
|
441
|
+
*
|
|
442
|
+
* Setting this value will set the entity manager to persist the column states through page refreshes etc. An example of what is stored is when the user resizes or reorders columns.
|
|
443
|
+
* This value must be unique for each table in your app otherwise the persisted data will be corrupted.
|
|
444
|
+
* There is an option on the grid for the user to reset the table to the default layout if they wish.
|
|
445
|
+
* @public
|
|
446
|
+
*/
|
|
447
|
+
persistColumnStateKey: string;
|
|
448
|
+
/**
|
|
449
|
+
* Returns a configuration for an optional status column
|
|
450
|
+
*
|
|
451
|
+
* @returns Column configuration for an optional status column
|
|
452
|
+
* @internal
|
|
453
|
+
*/
|
|
454
|
+
statusColumn(): {
|
|
455
|
+
headerName: string;
|
|
456
|
+
field: string;
|
|
457
|
+
minWidth: number;
|
|
458
|
+
width: number;
|
|
459
|
+
suppressSizeToFit: boolean;
|
|
460
|
+
cellRendererSelector: any;
|
|
461
|
+
enableCellChangeFlash: boolean;
|
|
462
|
+
enableRowGroup: boolean;
|
|
463
|
+
enablePivot: boolean;
|
|
464
|
+
enableValue: boolean;
|
|
465
|
+
};
|
|
466
|
+
/**
|
|
467
|
+
* Returns the config for an entity column if the entityID attribute is defined
|
|
468
|
+
*
|
|
469
|
+
* @returns Config for an entity column if the entityID is defined, else an empty array
|
|
470
|
+
* @internal
|
|
471
|
+
*/
|
|
472
|
+
entityColumn(): {
|
|
473
|
+
headerName: string;
|
|
474
|
+
field: string;
|
|
475
|
+
enableCellChangeFlash: boolean;
|
|
476
|
+
enableRowGroup: boolean;
|
|
477
|
+
enablePivot: boolean;
|
|
478
|
+
enableValue: boolean;
|
|
479
|
+
}[];
|
|
480
|
+
/**
|
|
481
|
+
* Column definition, default to the UsersColumnConfig
|
|
482
|
+
*/
|
|
483
|
+
columns: any;
|
|
484
|
+
additionalCreateFields: any;
|
|
485
|
+
additionalUpdateFields: any;
|
|
486
|
+
allAccessType: boolean;
|
|
487
|
+
private entityIdValue;
|
|
488
|
+
/**
|
|
489
|
+
* String which contains event if we have permission to insert user of empty string if not
|
|
490
|
+
*/
|
|
491
|
+
createEvent: string;
|
|
492
|
+
/**
|
|
493
|
+
* String which contains event if we have permission to delete user of empty string if not
|
|
494
|
+
*/
|
|
495
|
+
deleteEvent: string;
|
|
496
|
+
/**
|
|
497
|
+
* String which contains event if we have permission to update user of empty string if not
|
|
498
|
+
*/
|
|
499
|
+
updateEvent: string;
|
|
500
|
+
/**
|
|
501
|
+
* entityID used to control the definition of an optional entity column which is created with the {@link Users.entityColumn} function.
|
|
502
|
+
* @internal
|
|
503
|
+
*/
|
|
504
|
+
entityID: string;
|
|
505
|
+
/**
|
|
506
|
+
* entityID used to display label from the selector of entityID {@link Users.entityColumn} function.
|
|
507
|
+
* @internal
|
|
508
|
+
*/
|
|
509
|
+
entityLabelKey: string;
|
|
510
|
+
/**
|
|
511
|
+
* entityID used to control the definition of an optional entity column which is created with the {@link Users.entityColumn} function.
|
|
512
|
+
* @internal
|
|
513
|
+
*/
|
|
514
|
+
entityLabel: string;
|
|
515
|
+
/**
|
|
516
|
+
* Definition of the `DATASERVER` query which is used when managing Counterpartys
|
|
517
|
+
* @internal
|
|
518
|
+
*/
|
|
519
|
+
availableEntitiesEndpoint: string;
|
|
520
|
+
/**
|
|
521
|
+
* Constructor will set the {@link Users.createEvent} {@link Users.deleteEvent} {@link Users.updateEvent} to match the permissions set from the server
|
|
522
|
+
*/
|
|
523
|
+
constructor();
|
|
524
|
+
connectedCallback(): Promise<void>;
|
|
525
|
+
deepClone(): Node;
|
|
526
|
+
/**
|
|
527
|
+
* Used as the callback function in {@link Users.statusColumn}
|
|
528
|
+
* @internal
|
|
529
|
+
*/
|
|
530
|
+
statusRendererSelector(params: any): {
|
|
531
|
+
component: GridProRendererTypes;
|
|
532
|
+
params: {
|
|
533
|
+
actionClick: () => Promise<void>;
|
|
534
|
+
actionName: string;
|
|
535
|
+
appearance: string;
|
|
536
|
+
};
|
|
537
|
+
};
|
|
538
|
+
/**
|
|
539
|
+
* Changes the status of an entity
|
|
540
|
+
*
|
|
541
|
+
* @remarks
|
|
542
|
+
*
|
|
543
|
+
* The action which is run on the status button from {@link Users.statusRendererSelector}
|
|
544
|
+
*
|
|
545
|
+
* @internal
|
|
546
|
+
*/
|
|
547
|
+
changeStatus(params: any): Promise<void>;
|
|
548
|
+
/**
|
|
549
|
+
* @internal
|
|
550
|
+
*/
|
|
551
|
+
readUserData(user: any): Promise<{
|
|
552
|
+
USER_PROFILES: any[];
|
|
553
|
+
ADDRESS_LINE_1: any;
|
|
554
|
+
ADDRESS_LINE_2: any;
|
|
555
|
+
ADDRESS_LINE_3: any;
|
|
556
|
+
ADDRESS_LINE_4: any;
|
|
557
|
+
ACCESS_TYPE: string;
|
|
558
|
+
} | {
|
|
559
|
+
USER_PROFILES: any[];
|
|
560
|
+
ADDRESS_LINE_1: any;
|
|
561
|
+
ADDRESS_LINE_2: any;
|
|
562
|
+
ADDRESS_LINE_3: any;
|
|
563
|
+
ADDRESS_LINE_4: any;
|
|
564
|
+
ACCESS_TYPE?: undefined;
|
|
565
|
+
}>;
|
|
566
|
+
}
|
|
567
|
+
export {};
|
|
568
|
+
//# sourceMappingURL=users.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../../src/user-admin/users.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAA4B,WAAW,EAAc,MAAM,yBAAyB,CAAC;AAC5F,OAAO,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AAWpF;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;IAoC7B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAkKA;;;OAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAnKL;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,qBASa,KAAM,SAAQ,UAA2B;IACpD;;;;;;;;OAQG;IACM,OAAO,CAAC,OAAO,CAAU;IAElC;;;;;;;;OAQG;IACG,OAAO,CAAC,IAAI,CAAO;IAEzB;;;;;;;OAOG;IACS,gBAAgB,EAAE,uBAAuB,CAAC;IAEtD;;;OAGG;IACG,YAAY,SAAe;IAEjC;;;;;;;;;OASG;IAC8C,qBAAqB,EAAE,MAAM,CAClD;IAE5B;;;;;OAKG;IACI,YAAY;;;;;;;;;;;;IAYnB;;;;;OAKG;IACI,YAAY;;;;;;;;IAYnB;;OAEG;IACS,OAAO,EAAE,GAAG,CAAqB;IAEjC,sBAAsB,EAAE,GAAG,CAAM;IACjC,sBAAsB,EAAE,GAAG,CAAM;IAEjC,aAAa,EAAE,OAAO,CAAC;IACnC,OAAO,CAAC,aAAa,CAAS;IAE9B;;OAEG;IACS,WAAW,EAAE,MAAM,CAAC;IAEhC;;OAEG;IACS,WAAW,EAAE,MAAM,CAAC;IAEhC;;OAEG;IACS,WAAW,EAAE,MAAM,CAAC;IAEhC;;;OAGG;IACG,QAAQ,EAAE,MAAM,CAAqB;IAE3C;;;OAGG;IACG,cAAc,EAAE,MAAM,CAAU;IAEtC;;;OAGG;IACG,WAAW,EAAE,MAAM,CAAkB;IAE3C;;;OAGG;IACG,yBAAyB,EAAE,MAAM,CAAuB;IAE9D;;OAEG;;IAaG,iBAAiB;IAcd,SAAS,IAAI,IAAI;IAc1B;;;OAGG;IACH,sBAAsB,CAAC,MAAM,KAAA;;;;;;;;IAW7B;;;;;;;;OAQG;IACG,YAAY,CAAC,MAAM,KAAA;IAoCzB;;OAEG;IACG,YAAY,CAAC,IAAI,KAAA;;;;;;;;;;;;;;;CAwBxB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"users.template.d.ts","sourceRoot":"","sources":["../../../src/user-admin/users.template.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAqF5D,eAAO,MAAM,aAAa,EAAE,YAmC3B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatting.d.ts","sourceRoot":"","sources":["../../../src/utils/formatting.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,cAAc,sBAAsE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/utils/logger.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,eAAO,MAAM,MAAM,iDAA6B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import('./index');
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './user-admin/users';
|
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
import { __awaiter, __decorate } from "tslib";
|
|
2
|
+
import { Auth, Connect } from '@genesislcap/foundation-comms';
|
|
3
|
+
import { showNotification } from '@genesislcap/foundation-notifications';
|
|
4
|
+
import { LifecycleMixin } from '@genesislcap/foundation-utils';
|
|
5
|
+
import { GridProRendererTypes } from '@genesislcap/foundation-zero-grid-pro';
|
|
6
|
+
import { attr, css, customElement, FASTElement, observable } from '@microsoft/fast-element';
|
|
7
|
+
import { getErrorFormat, logger } from '../utils';
|
|
8
|
+
import { UsersTemplate } from './users.template';
|
|
9
|
+
const defaultColumnConfig = {
|
|
10
|
+
enableCellChangeFlash: true,
|
|
11
|
+
enableRowGroup: false,
|
|
12
|
+
enablePivot: true,
|
|
13
|
+
enableValue: true,
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Defines the default columns which are present on the user management component
|
|
17
|
+
*
|
|
18
|
+
* @remarks
|
|
19
|
+
*
|
|
20
|
+
* This is exported so you can override and mix-in custom columns along with the default
|
|
21
|
+
* @public
|
|
22
|
+
*/
|
|
23
|
+
export const UsersColumnConfig = [
|
|
24
|
+
Object.assign(Object.assign({}, defaultColumnConfig), { field: 'USER_NAME', headerName: 'Username' }),
|
|
25
|
+
Object.assign(Object.assign({}, defaultColumnConfig), { field: 'FIRST_NAME', headerName: 'First Name' }),
|
|
26
|
+
Object.assign(Object.assign({}, defaultColumnConfig), { field: 'LAST_NAME', headerName: 'Last Name' }),
|
|
27
|
+
Object.assign(Object.assign({}, defaultColumnConfig), { field: 'EMAIL_ADDRESS', headerName: 'Email' }),
|
|
28
|
+
Object.assign(Object.assign({}, defaultColumnConfig), { field: 'LAST_LOGIN', headerName: 'Last Login', valueFormatter: ({ value }) => value
|
|
29
|
+
? new Intl.DateTimeFormat('default', {
|
|
30
|
+
year: 'numeric',
|
|
31
|
+
month: 'numeric',
|
|
32
|
+
day: 'numeric',
|
|
33
|
+
hour: 'numeric',
|
|
34
|
+
minute: 'numeric',
|
|
35
|
+
}).format(value)
|
|
36
|
+
: '' }),
|
|
37
|
+
];
|
|
38
|
+
/**
|
|
39
|
+
* Main class which defines the user management functionality
|
|
40
|
+
*
|
|
41
|
+
* @remarks
|
|
42
|
+
*
|
|
43
|
+
* Under the hood the user-management is the entity-management micro-frontend configured for use
|
|
44
|
+
* with the `ALL_USERS` resource.
|
|
45
|
+
*
|
|
46
|
+
* @public
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
*
|
|
50
|
+
* With no customisation required the user management micro-frontend can simply be dropped into the
|
|
51
|
+
* template as shown. However, it is advised to wrap it in an error boundary component.
|
|
52
|
+
* ```javascript
|
|
53
|
+
* <user-management></user-management>
|
|
54
|
+
* ```
|
|
55
|
+
* With this default example above the columns will be the {@link UsersColumnConfig} as well as the
|
|
56
|
+
* entity and status columns. The entity and status
|
|
57
|
+
* columns are always added regardless of the other columns which are configured.
|
|
58
|
+
*
|
|
59
|
+
* You can add in additional customisation options. For example you can define a custom column and
|
|
60
|
+
* then mix-in with the standard columns
|
|
61
|
+
* ```javascript
|
|
62
|
+
* import { Users, UsersColumnConfig, } from '@genesislcap/foundation-entity-management';
|
|
63
|
+
*
|
|
64
|
+
* const userColumns = [
|
|
65
|
+
* {
|
|
66
|
+
* field: 'ACCESS_TYPE',
|
|
67
|
+
* headerName: 'Access Type',
|
|
68
|
+
* },
|
|
69
|
+
* ];
|
|
70
|
+
*
|
|
71
|
+
* // Definition inside of the html template
|
|
72
|
+
* <user-management :columns=${() => [...UsersColumnConfig, ...userColumns]}></user-management>
|
|
73
|
+
* ```
|
|
74
|
+
*/
|
|
75
|
+
let Users = class Users extends LifecycleMixin(FASTElement) {
|
|
76
|
+
/**
|
|
77
|
+
* Returns a configuration for an optional status column
|
|
78
|
+
*
|
|
79
|
+
* @returns Column configuration for an optional status column
|
|
80
|
+
* @internal
|
|
81
|
+
*/
|
|
82
|
+
statusColumn() {
|
|
83
|
+
return Object.assign(Object.assign({}, defaultColumnConfig), { headerName: 'Status', field: 'STATUS', minWidth: 135, width: 135, suppressSizeToFit: true, cellRendererSelector: this.statusRendererSelector.bind(this) });
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Returns the config for an entity column if the entityID attribute is defined
|
|
87
|
+
*
|
|
88
|
+
* @returns Config for an entity column if the entityID is defined, else an empty array
|
|
89
|
+
* @internal
|
|
90
|
+
*/
|
|
91
|
+
entityColumn() {
|
|
92
|
+
return this.entityID
|
|
93
|
+
? [
|
|
94
|
+
Object.assign(Object.assign({}, defaultColumnConfig), { headerName: this.entityLabel, field: this.entityID }),
|
|
95
|
+
]
|
|
96
|
+
: [];
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Constructor will set the {@link Users.createEvent} {@link Users.deleteEvent} {@link Users.updateEvent} to match the permissions set from the server
|
|
100
|
+
*/
|
|
101
|
+
constructor() {
|
|
102
|
+
super();
|
|
103
|
+
/**
|
|
104
|
+
* Configuring the resourceName from the entity-management, set to manage the users resource specifically
|
|
105
|
+
* @internal
|
|
106
|
+
*/
|
|
107
|
+
this.resourceName = 'ALL_USERS';
|
|
108
|
+
/**
|
|
109
|
+
* This attribute controls whether and how the user manager stores the state of the columns when the user edits them. Defaulted to `entity_users_management`.
|
|
110
|
+
*
|
|
111
|
+
* @remarks
|
|
112
|
+
*
|
|
113
|
+
* Setting this value will set the entity manager to persist the column states through page refreshes etc. An example of what is stored is when the user resizes or reorders columns.
|
|
114
|
+
* This value must be unique for each table in your app otherwise the persisted data will be corrupted.
|
|
115
|
+
* There is an option on the grid for the user to reset the table to the default layout if they wish.
|
|
116
|
+
* @public
|
|
117
|
+
*/
|
|
118
|
+
this.persistColumnStateKey = 'entity_users_management';
|
|
119
|
+
/**
|
|
120
|
+
* Column definition, default to the UsersColumnConfig
|
|
121
|
+
*/
|
|
122
|
+
this.columns = UsersColumnConfig;
|
|
123
|
+
this.additionalCreateFields = [];
|
|
124
|
+
this.additionalUpdateFields = [];
|
|
125
|
+
/**
|
|
126
|
+
* entityID used to control the definition of an optional entity column which is created with the {@link Users.entityColumn} function.
|
|
127
|
+
* @internal
|
|
128
|
+
*/
|
|
129
|
+
this.entityID = 'COUNTERPARTY_ID';
|
|
130
|
+
/**
|
|
131
|
+
* entityID used to display label from the selector of entityID {@link Users.entityColumn} function.
|
|
132
|
+
* @internal
|
|
133
|
+
*/
|
|
134
|
+
this.entityLabelKey = 'NAME';
|
|
135
|
+
/**
|
|
136
|
+
* entityID used to control the definition of an optional entity column which is created with the {@link Users.entityColumn} function.
|
|
137
|
+
* @internal
|
|
138
|
+
*/
|
|
139
|
+
this.entityLabel = 'Counterparty';
|
|
140
|
+
/**
|
|
141
|
+
* Definition of the `DATASERVER` query which is used when managing Counterpartys
|
|
142
|
+
* @internal
|
|
143
|
+
*/
|
|
144
|
+
this.availableEntitiesEndpoint = 'ALL_COUNTERPARTYS';
|
|
145
|
+
this.createEvent = this.auth.currentUser.hasPermission('INSERT_USER')
|
|
146
|
+
? 'EVENT_INSERT_USER'
|
|
147
|
+
: '';
|
|
148
|
+
this.deleteEvent = this.auth.currentUser.hasPermission('DELETE_USER')
|
|
149
|
+
? 'EVENT_DELETE_USER'
|
|
150
|
+
: '';
|
|
151
|
+
this.updateEvent = this.auth.currentUser.hasPermission('AMEND_USER') ? 'EVENT_AMEND_USER' : '';
|
|
152
|
+
}
|
|
153
|
+
connectedCallback() {
|
|
154
|
+
const _super = Object.create(null, {
|
|
155
|
+
connectedCallback: { get: () => super.connectedCallback }
|
|
156
|
+
});
|
|
157
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
158
|
+
_super.connectedCallback.call(this);
|
|
159
|
+
// retrieving access type of currently logged-in user
|
|
160
|
+
const userReq = yield this.connect.snapshot('ALL_USERS', {
|
|
161
|
+
CRITERIA_MATCH: `USER_NAME == '${this.auth.currentUser.username}'`,
|
|
162
|
+
});
|
|
163
|
+
if (userReq.ROW[0]) {
|
|
164
|
+
this.allAccessType = userReq.ROW[0].ACCESS_TYPE === 'ALL';
|
|
165
|
+
this.entityIdValue = userReq.ROW[0][this.entityID];
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
deepClone() {
|
|
170
|
+
const copy = super.deepClone();
|
|
171
|
+
copy.additionalCreateFields = structuredClone(this.additionalCreateFields);
|
|
172
|
+
copy.additionalUpdateFields = structuredClone(this.additionalUpdateFields);
|
|
173
|
+
copy.allAccessType = structuredClone(this.allAccessType);
|
|
174
|
+
copy.createEvent = structuredClone(this.createEvent);
|
|
175
|
+
copy.datasourceConfig = structuredClone(this.datasourceConfig);
|
|
176
|
+
copy.deleteEvent = structuredClone(this.deleteEvent);
|
|
177
|
+
copy.updateEvent = structuredClone(this.updateEvent);
|
|
178
|
+
// this.columns[number] might contain a function, so can't use structuredClone
|
|
179
|
+
copy.columns = this.columns ? [...this.columns].map((x) => (Object.assign({}, x))) : this.columns;
|
|
180
|
+
return copy;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Used as the callback function in {@link Users.statusColumn}
|
|
184
|
+
* @internal
|
|
185
|
+
*/
|
|
186
|
+
statusRendererSelector(params) {
|
|
187
|
+
return {
|
|
188
|
+
component: GridProRendererTypes.action,
|
|
189
|
+
params: {
|
|
190
|
+
actionClick: () => this.changeStatus(params),
|
|
191
|
+
actionName: params.value === 'ENABLED' ? 'Deactivate' : 'Activate',
|
|
192
|
+
appearance: 'secondary-orange',
|
|
193
|
+
},
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Changes the status of an entity
|
|
198
|
+
*
|
|
199
|
+
* @remarks
|
|
200
|
+
*
|
|
201
|
+
* The action which is run on the status button from {@link Users.statusRendererSelector}
|
|
202
|
+
*
|
|
203
|
+
* @internal
|
|
204
|
+
*/
|
|
205
|
+
changeStatus(params) {
|
|
206
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
207
|
+
const isEnabled = params.data.STATUS === 'ENABLED';
|
|
208
|
+
// optimistically set value and store previous value
|
|
209
|
+
const previousValue = params.data.STATUS;
|
|
210
|
+
params.setValue(isEnabled ? 'DISABLED' : 'ENABLED');
|
|
211
|
+
const changeStatusRequest = yield this.connect.commitEvent(isEnabled ? 'EVENT_DISABLE_USER' : 'EVENT_ENABLE_USER', {
|
|
212
|
+
DETAILS: {
|
|
213
|
+
USER_NAME: params.data.USER_NAME,
|
|
214
|
+
},
|
|
215
|
+
});
|
|
216
|
+
if (changeStatusRequest.ERROR) {
|
|
217
|
+
logger.error(changeStatusRequest.ERROR);
|
|
218
|
+
const notificationCloseTimeout = 5000;
|
|
219
|
+
changeStatusRequest.ERROR.forEach((err) => {
|
|
220
|
+
showNotification({
|
|
221
|
+
title: err.CODE,
|
|
222
|
+
body: getErrorFormat(err),
|
|
223
|
+
config: {
|
|
224
|
+
toast: { type: 'warning', autoClose: true, closeTimeout: notificationCloseTimeout },
|
|
225
|
+
},
|
|
226
|
+
}, 'zero');
|
|
227
|
+
});
|
|
228
|
+
// bring back original value
|
|
229
|
+
params.setValue(previousValue);
|
|
230
|
+
}
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* @internal
|
|
235
|
+
*/
|
|
236
|
+
readUserData(user) {
|
|
237
|
+
var _a;
|
|
238
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
239
|
+
const userProfiles = yield this.connect.request('PROFILE_USER', {
|
|
240
|
+
REQUEST: {
|
|
241
|
+
USER_NAME: user.USER_NAME,
|
|
242
|
+
},
|
|
243
|
+
});
|
|
244
|
+
const defaultValues = !this.allAccessType && ((_a = this.entityIdValue) === null || _a === void 0 ? void 0 : _a.length)
|
|
245
|
+
? {
|
|
246
|
+
ACCESS_TYPE: 'ENTITY',
|
|
247
|
+
[this.entityID]: this.entityIdValue,
|
|
248
|
+
}
|
|
249
|
+
: {};
|
|
250
|
+
return Object.assign(Object.assign({}, defaultValues), { USER_PROFILES: (userProfiles.REPLY || []).map((profile) => profile.PROFILE_NAME), ADDRESS_LINE_1: user.ADDRESS_LINE1, ADDRESS_LINE_2: user.ADDRESS_LINE2, ADDRESS_LINE_3: user.ADDRESS_LINE3, ADDRESS_LINE_4: user.ADDRESS_LINE4 });
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
};
|
|
254
|
+
__decorate([
|
|
255
|
+
Connect
|
|
256
|
+
], Users.prototype, "connect", void 0);
|
|
257
|
+
__decorate([
|
|
258
|
+
Auth
|
|
259
|
+
], Users.prototype, "auth", void 0);
|
|
260
|
+
__decorate([
|
|
261
|
+
observable
|
|
262
|
+
], Users.prototype, "datasourceConfig", void 0);
|
|
263
|
+
__decorate([
|
|
264
|
+
attr
|
|
265
|
+
], Users.prototype, "resourceName", void 0);
|
|
266
|
+
__decorate([
|
|
267
|
+
attr({ attribute: 'persist-column-state-key' })
|
|
268
|
+
], Users.prototype, "persistColumnStateKey", void 0);
|
|
269
|
+
__decorate([
|
|
270
|
+
observable
|
|
271
|
+
], Users.prototype, "columns", void 0);
|
|
272
|
+
__decorate([
|
|
273
|
+
observable
|
|
274
|
+
], Users.prototype, "additionalCreateFields", void 0);
|
|
275
|
+
__decorate([
|
|
276
|
+
observable
|
|
277
|
+
], Users.prototype, "additionalUpdateFields", void 0);
|
|
278
|
+
__decorate([
|
|
279
|
+
observable
|
|
280
|
+
], Users.prototype, "allAccessType", void 0);
|
|
281
|
+
__decorate([
|
|
282
|
+
observable
|
|
283
|
+
], Users.prototype, "createEvent", void 0);
|
|
284
|
+
__decorate([
|
|
285
|
+
observable
|
|
286
|
+
], Users.prototype, "deleteEvent", void 0);
|
|
287
|
+
__decorate([
|
|
288
|
+
observable
|
|
289
|
+
], Users.prototype, "updateEvent", void 0);
|
|
290
|
+
__decorate([
|
|
291
|
+
attr
|
|
292
|
+
], Users.prototype, "entityID", void 0);
|
|
293
|
+
__decorate([
|
|
294
|
+
attr
|
|
295
|
+
], Users.prototype, "entityLabelKey", void 0);
|
|
296
|
+
__decorate([
|
|
297
|
+
attr
|
|
298
|
+
], Users.prototype, "entityLabel", void 0);
|
|
299
|
+
__decorate([
|
|
300
|
+
attr
|
|
301
|
+
], Users.prototype, "availableEntitiesEndpoint", void 0);
|
|
302
|
+
Users = __decorate([
|
|
303
|
+
customElement({
|
|
304
|
+
name: 'user-management',
|
|
305
|
+
template: UsersTemplate,
|
|
306
|
+
styles: css `
|
|
307
|
+
:host {
|
|
308
|
+
height: 100%;
|
|
309
|
+
}
|
|
310
|
+
`,
|
|
311
|
+
})
|
|
312
|
+
], Users);
|
|
313
|
+
export { Users };
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { html } from '@microsoft/fast-element';
|
|
2
|
+
const conditionalSchemaEntry = (predicate, entry) => {
|
|
3
|
+
return predicate ? [entry] : [];
|
|
4
|
+
};
|
|
5
|
+
const editUserSchema = (edit, allAccessType, entityID, entityLabel, entityLabelKey, availableEntitiesEndpoint, additionalEntries = []) => ({
|
|
6
|
+
type: 'VerticalLayout',
|
|
7
|
+
elements: [
|
|
8
|
+
{
|
|
9
|
+
type: 'Control',
|
|
10
|
+
label: 'Username',
|
|
11
|
+
scope: '#/properties/USER_NAME',
|
|
12
|
+
options: {
|
|
13
|
+
readonly: edit,
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
type: 'Control',
|
|
18
|
+
label: 'Email',
|
|
19
|
+
scope: '#/properties/EMAIL_ADDRESS',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
type: 'Control',
|
|
23
|
+
label: 'First Name',
|
|
24
|
+
scope: '#/properties/FIRST_NAME',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
type: 'Control',
|
|
28
|
+
label: 'Last Name',
|
|
29
|
+
scope: '#/properties/LAST_NAME',
|
|
30
|
+
},
|
|
31
|
+
...conditionalSchemaEntry(!edit, {
|
|
32
|
+
type: 'Control',
|
|
33
|
+
label: 'One Time Password',
|
|
34
|
+
scope: '#/properties/ONE_TIME_PASSWORD',
|
|
35
|
+
}),
|
|
36
|
+
{
|
|
37
|
+
type: 'Control',
|
|
38
|
+
label: 'User Profiles',
|
|
39
|
+
scope: '#/properties/USER_PROFILES',
|
|
40
|
+
options: {
|
|
41
|
+
allOptionsResourceName: 'ALL_PROFILES',
|
|
42
|
+
valueField: 'PROFILE_NAME',
|
|
43
|
+
labelField: 'PROFILE_NAME',
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
...conditionalSchemaEntry(!!entityID, {
|
|
47
|
+
type: 'Control',
|
|
48
|
+
label: 'Access Type',
|
|
49
|
+
scope: '#/properties/ACCESS_TYPE',
|
|
50
|
+
options: {
|
|
51
|
+
hidden: !allAccessType,
|
|
52
|
+
},
|
|
53
|
+
}),
|
|
54
|
+
...conditionalSchemaEntry(!!entityID, {
|
|
55
|
+
type: 'Control',
|
|
56
|
+
scope: `#/properties/${entityID}`,
|
|
57
|
+
options: {
|
|
58
|
+
allOptionsResourceName: availableEntitiesEndpoint,
|
|
59
|
+
valueField: entityID,
|
|
60
|
+
labelField: entityLabelKey || entityID,
|
|
61
|
+
hidden: !allAccessType,
|
|
62
|
+
},
|
|
63
|
+
label: entityLabel,
|
|
64
|
+
}),
|
|
65
|
+
...additionalEntries.map((entry) => typeof entry === 'string'
|
|
66
|
+
? {
|
|
67
|
+
type: 'Control',
|
|
68
|
+
scope: `#/properties/${entry}`,
|
|
69
|
+
}
|
|
70
|
+
: entry),
|
|
71
|
+
],
|
|
72
|
+
});
|
|
73
|
+
export const UsersTemplate = html `
|
|
74
|
+
<entity-management
|
|
75
|
+
resourceName=${(x) => x.resourceName}
|
|
76
|
+
title="User Management"
|
|
77
|
+
entityLabel="User"
|
|
78
|
+
createEvent="${(x) => x.createEvent}"
|
|
79
|
+
:readEventFn=${(x) => (user) => x.readUserData(user)}
|
|
80
|
+
updateEvent="${(x) => x.updateEvent}"
|
|
81
|
+
deleteEvent="${(x) => x.deleteEvent}"
|
|
82
|
+
entityLabel="User Details"
|
|
83
|
+
:updateFormUiSchema=${(x) => editUserSchema(true, x.allAccessType, x.entityID, x.entityLabel, x.entityLabelKey, x.availableEntitiesEndpoint, x.additionalUpdateFields)}
|
|
84
|
+
:createFormUiSchema=${(x) => editUserSchema(false, x.allAccessType, x.entityID, x.entityLabel, x.entityLabelKey, x.availableEntitiesEndpoint, x.additionalCreateFields)}
|
|
85
|
+
persist-column-state-key=${(x) => x.persistColumnStateKey}
|
|
86
|
+
size-columns-to-fit
|
|
87
|
+
:columns=${(x) => [...x.columns, ...x.entityColumn(), x.statusColumn()]}
|
|
88
|
+
:datasourceConfig=${(x) => x.datasourceConfig}
|
|
89
|
+
></entity-management>
|
|
90
|
+
`;
|
package/index.html
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8"/>
|
|
5
|
+
<title>{{htmlWebpackPlugin.options.title}}</title>
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
|
+
</head>
|
|
8
|
+
<style>
|
|
9
|
+
html,
|
|
10
|
+
body {
|
|
11
|
+
width: 100%;
|
|
12
|
+
height: 100%;
|
|
13
|
+
padding: 0;
|
|
14
|
+
margin: 0;
|
|
15
|
+
}
|
|
16
|
+
:not(:defined) {
|
|
17
|
+
visibility: hidden;
|
|
18
|
+
}
|
|
19
|
+
</style>
|
|
20
|
+
<body>
|
|
21
|
+
<user-management></user-management>
|
|
22
|
+
{{#if insertEntryPoint}}
|
|
23
|
+
<script type="module" src="/src/index.ts"></script>
|
|
24
|
+
{{/if}}
|
|
25
|
+
</body>
|
|
26
|
+
</html>
|
package/package.json
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@genesislcap/pbc-auth-ui",
|
|
3
|
+
"description": "Genesis PBC auth UI",
|
|
4
|
+
"version": "1.0.3",
|
|
5
|
+
"license": "SEE LICENSE IN license.txt",
|
|
6
|
+
"main": "dist/esm/index.js",
|
|
7
|
+
"types": "dist/foundation-auth.d.ts",
|
|
8
|
+
"engines": {
|
|
9
|
+
"node": ">=20.0.0"
|
|
10
|
+
},
|
|
11
|
+
"config": {
|
|
12
|
+
"PORT": 5070
|
|
13
|
+
},
|
|
14
|
+
"exports": {
|
|
15
|
+
".": {
|
|
16
|
+
"types": "./dist/foundation-auth.d.ts",
|
|
17
|
+
"default": "./dist/esm/index.js"
|
|
18
|
+
},
|
|
19
|
+
"./e2e": {
|
|
20
|
+
"default": "./test/e2e/index.ts"
|
|
21
|
+
},
|
|
22
|
+
"./package.json": "./package.json"
|
|
23
|
+
},
|
|
24
|
+
"typesVersions": {
|
|
25
|
+
"*": {
|
|
26
|
+
"e2e": [
|
|
27
|
+
"./test/e2e/index.ts"
|
|
28
|
+
]
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"scripts": {
|
|
32
|
+
"bootstrap": "npm install --no-fund --no-audit",
|
|
33
|
+
"bootstrap:ci": "npm ci --no-fund --no-audit",
|
|
34
|
+
"build": "genx build -b ts",
|
|
35
|
+
"build:webpack": "genx build",
|
|
36
|
+
"build:webpack:stats": "genx analyze",
|
|
37
|
+
"clean": "rimraf dist tsconfig.tsbuildinfo",
|
|
38
|
+
"dev": "genx dev -e API_HOST,ENABLE_SSO",
|
|
39
|
+
"dev:docker": "npm run dev -- --host 0.0.0.0",
|
|
40
|
+
"dev:intellij": "genx dev -e ENABLE_SSO",
|
|
41
|
+
"dev:no-open": "npm run dev -- --no-open",
|
|
42
|
+
"dev:https": "npm run dev -- --https",
|
|
43
|
+
"dev:webpack": "npm run dev -- -b webpack",
|
|
44
|
+
"serve": "genx serve",
|
|
45
|
+
"test": "genx test",
|
|
46
|
+
"test:coverage": "genx test --coverage",
|
|
47
|
+
"test:coverage:browser": "genx test --coverage --browser",
|
|
48
|
+
"test:e2e": "genx test --e2e",
|
|
49
|
+
"test:e2e:debug": "genx test --e2e --debug",
|
|
50
|
+
"test:e2e:ui": "genx test --e2e --interactive",
|
|
51
|
+
"test:unit:browser": "genx test --browser",
|
|
52
|
+
"test:unit:browser:watch": "genx test --browser --watch",
|
|
53
|
+
"test:unit:watch": "genx test --watch",
|
|
54
|
+
"test:debug": "genx test --debug"
|
|
55
|
+
},
|
|
56
|
+
"devDependencies": {
|
|
57
|
+
"@genesislcap/foundation-testing": "~14",
|
|
58
|
+
"@genesislcap/genx": "~14",
|
|
59
|
+
"playwright-lighthouse": "^3.1.0",
|
|
60
|
+
"rimraf": "^3.0.2",
|
|
61
|
+
"tslib": "^2.3.1"
|
|
62
|
+
},
|
|
63
|
+
"peerDependencies": {
|
|
64
|
+
"@ag-grid-community/core": "29.2.0",
|
|
65
|
+
"@genesislcap/foundation-comms": "~14",
|
|
66
|
+
"@genesislcap/foundation-entity-management": "~14",
|
|
67
|
+
"@genesislcap/foundation-logger": "~14",
|
|
68
|
+
"@genesislcap/foundation-notifications": "~14",
|
|
69
|
+
"@genesislcap/foundation-utils": "~14",
|
|
70
|
+
"@microsoft/fast-components": "^2.21.3",
|
|
71
|
+
"@microsoft/fast-element": "^1.7.0",
|
|
72
|
+
"@microsoft/fast-foundation": "^2.33.2",
|
|
73
|
+
"@microsoft/fast-router": "^0.4.2"
|
|
74
|
+
},
|
|
75
|
+
"publishConfig": {
|
|
76
|
+
"access": "public"
|
|
77
|
+
},
|
|
78
|
+
"customElements": "dist/custom-elements.json"
|
|
79
|
+
}
|