@j2inn/resolvable-ui-elements 0.0.2-beta.2 → 0.0.2-beta.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 CHANGED
@@ -1,22 +1,22 @@
1
- # What is resolvable-ui-elements?
2
- The main goal of this library is to enhance the flexibility of the UI code written, by adding a layer that separates the queries and information used to interact with the backend from the UI code, moving it to a separated JSON file.
3
-
4
- The JSON file (typically called `elements.json`) can be generated from a spreadsheet used to simplify the data management for a project UI.
5
-
6
-
7
- ## How do I get set up? ###
8
- To install this package run `npm i @j2inn/resolvable-ui-elements`
9
-
10
- ## Where do I get more info? ###
11
- See: https://finproducts.atlassian.net/wiki/spaces/ECO/pages/32881311778/Element+Types
12
-
13
- ## Codebase Structure ##
14
-
15
- src
16
- ├── resolvableElements
17
- │ ├── elements # Element classes implementation
18
- │ ├── interfacesGeneration # Code for generating interfaces from an elements.json file
19
- │ ├── react # React hooks to use resolvable elements.
20
- │ └── ...
21
- └── ...
22
-
1
+ # What is resolvable-ui-elements?
2
+ The main goal of this library is to enhance the flexibility of the UI code written, by adding a layer that separates the queries and information used to interact with the backend from the UI code, moving it to a separated JSON file.
3
+
4
+ The JSON file (typically called `elements.json`) can be generated from a spreadsheet used to simplify the data management for a project UI.
5
+
6
+
7
+ ## How do I get set up? ###
8
+ To install this package run `npm i @j2inn/resolvable-ui-elements`
9
+
10
+ ## Where do I get more info? ###
11
+ See: https://finproducts.atlassian.net/wiki/spaces/ECO/pages/32881311778/Element+Types
12
+
13
+ ## Codebase Structure ##
14
+
15
+ src
16
+ ├── resolvableElements
17
+ │ ├── elements # Element classes implementation
18
+ │ ├── interfacesGeneration # Code for generating interfaces from an elements.json file
19
+ │ ├── react # React hooks to use resolvable elements.
20
+ │ └── ...
21
+ └── ...
22
+
@@ -1,17 +1,20 @@
1
1
  import { HDict, HGrid } from 'haystack-core';
2
2
  import { Client, Watch } from 'haystack-nclient';
3
+ export declare const DEFAULT_USER_ROLE_TAG_NAME = "uiElementPermissions";
3
4
  export interface ResolverData {
4
5
  client: Client;
5
6
  user?: HDict;
7
+ userRoleTagName?: string;
6
8
  }
7
9
  /**
8
10
  * Resolver is a mediator for the network interactions during the resolution process,
9
11
  * in order to enable future optimizations.
10
12
  */
11
13
  export declare class Resolver {
12
- constructor({ client, user }: ResolverData);
14
+ constructor({ client, user, userRoleTagName, }: ResolverData);
13
15
  client: Client;
14
16
  user?: HDict;
17
+ userRoleTagName?: string;
15
18
  read(filter: string): Promise<HGrid<HDict>>;
16
19
  makeWatch(dis: string, grid: HGrid<HDict>): Promise<Watch>;
17
20
  eval(expr: string): Promise<HGrid<HDict>>;
@@ -3,18 +3,21 @@
3
3
  * Copyright (c) 2022, J2 Innovations. All Rights Reserved
4
4
  */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.Resolver = void 0;
6
+ exports.Resolver = exports.DEFAULT_USER_ROLE_TAG_NAME = void 0;
7
+ exports.DEFAULT_USER_ROLE_TAG_NAME = 'uiElementPermissions';
7
8
  /**
8
9
  * Resolver is a mediator for the network interactions during the resolution process,
9
10
  * in order to enable future optimizations.
10
11
  */
11
12
  class Resolver {
12
- constructor({ client, user }) {
13
+ constructor({ client, user, userRoleTagName = exports.DEFAULT_USER_ROLE_TAG_NAME, }) {
13
14
  this.client = client;
14
15
  this.user = user;
16
+ this.userRoleTagName = userRoleTagName;
15
17
  }
16
18
  client;
17
19
  user;
20
+ userRoleTagName;
18
21
  async read(filter) {
19
22
  return this.client.ext.read(filter);
20
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Resolver.js","sourceRoot":"","sources":["../../src/resolvableElements/Resolver.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAUH;;;GAGG;AACH,MAAa,QAAQ;IACpB,YAAY,EAAE,MAAM,EAAE,IAAI,EAAgB;QACzC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IACjB,CAAC;IAED,MAAM,CAAQ;IACd,IAAI,CAAQ;IAEZ,KAAK,CAAC,IAAI,CAAC,MAAc;QACxB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACpC,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,GAAW,EAAE,IAAkB;QAC9C,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAC7C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAY;QACtB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAClC,CAAC;CACD;AApBD,4BAoBC"}
1
+ {"version":3,"file":"Resolver.js","sourceRoot":"","sources":["../../src/resolvableElements/Resolver.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAKU,QAAA,0BAA0B,GAAG,sBAAsB,CAAA;AAQhE;;;GAGG;AACH,MAAa,QAAQ;IACpB,YAAY,EACX,MAAM,EACN,IAAI,EACJ,eAAe,GAAG,kCAA0B,GAC9B;QACd,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,eAAe,GAAG,eAAe,CAAA;IACvC,CAAC;IAED,MAAM,CAAQ;IACd,IAAI,CAAQ;IACZ,eAAe,CAAS;IAExB,KAAK,CAAC,IAAI,CAAC,MAAc;QACxB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACpC,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,GAAW,EAAE,IAAkB;QAC9C,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAC7C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAY;QACtB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAClC,CAAC;CACD;AA1BD,4BA0BC"}
@@ -4,7 +4,7 @@
4
4
  */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.UiElement = void 0;
7
- const USER_ROLE_TAG_NAME = 'uiElementPermissions';
7
+ const Resolver_1 = require("../Resolver");
8
8
  /**
9
9
  * Base UiElement class
10
10
  */
@@ -25,7 +25,7 @@ class UiElement {
25
25
  console.log(this);
26
26
  }
27
27
  isAccessAllowed(meta) {
28
- return UiElement.#isElementAccessible(meta, this.resolver.user);
28
+ return UiElement.#isElementAccessible(meta, this.resolver.user, this.resolver.userRoleTagName);
29
29
  }
30
30
  _value;
31
31
  get value() {
@@ -36,11 +36,11 @@ class UiElement {
36
36
  this.onUpdate(value);
37
37
  }
38
38
  onUpdate;
39
- static #isElementAccessible(meta, user) {
39
+ static #isElementAccessible(meta, user, userRoleTagName = Resolver_1.DEFAULT_USER_ROLE_TAG_NAME) {
40
40
  if (!meta || !meta.access || UiElement.#isSuperuser(user)) {
41
41
  return true;
42
42
  }
43
- const userRole = user?.get(USER_ROLE_TAG_NAME);
43
+ const userRole = user?.get(userRoleTagName);
44
44
  if (userRole && meta.access.includes(userRole.value)) {
45
45
  return true;
46
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"UiElement.js","sourceRoot":"","sources":["../../../src/resolvableElements/elements/UiElement.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAKH,MAAM,kBAAkB,GAAG,sBAAsB,CAAA;AAiBjD;;GAEG;AACH,MAAsB,SAAS;IAC9B,YAAY,EACX,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,QAAQ,GACqB;QAC7B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IACzB,CAAC;IACD,QAAQ,CAAU;IAElB,KAAK,CAAgB;IAErB,IAAI,CAAS;IAEb,MAAM;QACL,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAA;IAC7B,CAAC;IACD,OAAO;QACN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAClB,CAAC;IAED,eAAe,CAAC,IAAoB;QACnC,OAAO,SAAS,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAChE,CAAC;IAES,MAAM,CAAU;IAE1B,IAAI,KAAK;QACR,OAAO,IAAI,CAAC,MAAM,CAAA;IACnB,CAAC;IAED,IAAI,KAAK,CAAC,KAA0B;QACnC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IACrB,CAAC;IACD,QAAQ,CAAsC;IAE9C,MAAM,CAAC,oBAAoB,CAAC,IAAoB,EAAE,IAAY;QAC7D,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;YAC1D,OAAO,IAAI,CAAA;SACX;QAED,MAAM,QAAQ,GAAG,IAAI,EAAE,GAAG,CAAO,kBAAkB,CAAC,CAAA;QACpD,IAAI,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YACrD,OAAO,IAAI,CAAA;SACX;QAED,OAAO,KAAK,CAAA;IACb,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,IAAY;QAC/B,OAAO,IAAI,EAAE,GAAG,CAAO,UAAU,CAAC,EAAE,KAAK,KAAK,IAAI,CAAA;IACnD,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,GAAG,MAA8B;QACnD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACvD,CAAC;CACD;AA7DD,8BA6DC"}
1
+ {"version":3,"file":"UiElement.js","sourceRoot":"","sources":["../../../src/resolvableElements/elements/UiElement.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAGH,0CAAkE;AAiBlE;;GAEG;AACH,MAAsB,SAAS;IAC9B,YAAY,EACX,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,QAAQ,GACqB;QAC7B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IACzB,CAAC;IACD,QAAQ,CAAU;IAElB,KAAK,CAAgB;IAErB,IAAI,CAAS;IAEb,MAAM;QACL,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAA;IAC7B,CAAC;IACD,OAAO;QACN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAClB,CAAC;IAED,eAAe,CAAC,IAAoB;QACnC,OAAO,SAAS,CAAC,oBAAoB,CACpC,IAAI,EACJ,IAAI,CAAC,QAAQ,CAAC,IAAI,EAClB,IAAI,CAAC,QAAQ,CAAC,eAAe,CAC7B,CAAA;IACF,CAAC;IAES,MAAM,CAAU;IAE1B,IAAI,KAAK;QACR,OAAO,IAAI,CAAC,MAAM,CAAA;IACnB,CAAC;IAED,IAAI,KAAK,CAAC,KAA0B;QACnC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IACrB,CAAC;IACD,QAAQ,CAAsC;IAE9C,MAAM,CAAC,oBAAoB,CAC1B,IAAoB,EACpB,IAAY,EACZ,eAAe,GAAG,qCAA0B;QAE5C,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;YAC1D,OAAO,IAAI,CAAA;SACX;QAED,MAAM,QAAQ,GAAG,IAAI,EAAE,GAAG,CAAO,eAAe,CAAC,CAAA;QACjD,IAAI,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YACrD,OAAO,IAAI,CAAA;SACX;QAED,OAAO,KAAK,CAAA;IACb,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,IAAY;QAC/B,OAAO,IAAI,EAAE,GAAG,CAAO,UAAU,CAAC,EAAE,KAAK,KAAK,IAAI,CAAA;IACnD,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,GAAG,MAA8B;QACnD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACvD,CAAC;CACD;AArED,8BAqEC"}
@@ -1,4 +1,8 @@
1
1
  import React, { PropsWithChildren } from 'react';
2
2
  import { Resolver } from '../Resolver';
3
3
  export declare function useResolverContext(): Resolver;
4
- export declare const ResolverProvider: React.FC<PropsWithChildren>;
4
+ interface ResolverProviderProps extends PropsWithChildren {
5
+ userRoleTagName?: string;
6
+ }
7
+ export declare const ResolverProvider: React.FC<ResolverProviderProps>;
8
+ export {};
@@ -42,13 +42,13 @@ function useResolverContext() {
42
42
  return (0, react_1.useContext)(ResolverContext);
43
43
  }
44
44
  exports.useResolverContext = useResolverContext;
45
- const ResolverProvider = ({ children }) => {
45
+ const ResolverProvider = ({ userRoleTagName, children, }) => {
46
46
  const client = (0, haystack_react_1.useClient)();
47
47
  const user = (0, useCurrentUser_1.useCurrentUser)();
48
- const [resolver, setResolver] = (0, react_1.useState)(() => new Resolver_1.Resolver({ client, user }));
48
+ const [resolver, setResolver] = (0, react_1.useState)(() => new Resolver_1.Resolver({ client, user, userRoleTagName }));
49
49
  (0, react_1.useEffect)(() => {
50
- setResolver(new Resolver_1.Resolver({ client, user }));
51
- }, [client, user]);
50
+ setResolver(new Resolver_1.Resolver({ client, user, userRoleTagName }));
51
+ }, [client, user, userRoleTagName]);
52
52
  return (<ResolverContext.Provider value={resolver}>
53
53
  {children}
54
54
  </ResolverContext.Provider>);
@@ -1 +1 @@
1
- {"version":3,"file":"useResolverContext.jsx","sourceRoot":"","sources":["../../../src/resolvableElements/react/useResolverContext.tsx"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uDAAyC;AACzC,mDAA0C;AAC1C,+CAKc;AACd,yDAAqD;AACrD,0CAAsC;AAEtC,MAAM,eAAe,GAAG,eAAK,CAAC,aAAa,CAC1C,IAAI,mBAAQ,CAAC;IACZ,MAAM,EAAE,IAAI,yBAAM,CAAC;QAClB,IAAI,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;KACnC,CAAC;CACF,CAAC,CACF,CAAA;AAED,eAAe,CAAC,WAAW,GAAG,iBAAiB,CAAA;AAE/C,SAAgB,kBAAkB;IACjC,OAAO,IAAA,kBAAU,EAAC,eAAe,CAAC,CAAA;AACnC,CAAC;AAFD,gDAEC;AAEM,MAAM,gBAAgB,GAAgC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC7E,MAAM,MAAM,GAAG,IAAA,0BAAS,GAAE,CAAA;IAC1B,MAAM,IAAI,GAAG,IAAA,+BAAc,GAAE,CAAA;IAE7B,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EACvC,GAAG,EAAE,CAAC,IAAI,mBAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CACpC,CAAA;IAED,IAAA,iBAAS,EAAC,GAAG,EAAE;QACd,WAAW,CAAC,IAAI,mBAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IAC5C,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAA;IAElB,OAAO,CACN,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CACzC;GAAA,CAAC,QAAQ,CACV;EAAA,EAAE,eAAe,CAAC,QAAQ,CAAC,CAC3B,CAAA;AACF,CAAC,CAAA;AAjBY,QAAA,gBAAgB,oBAiB5B"}
1
+ {"version":3,"file":"useResolverContext.jsx","sourceRoot":"","sources":["../../../src/resolvableElements/react/useResolverContext.tsx"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uDAAyC;AACzC,mDAA0C;AAC1C,+CAKc;AACd,yDAAqD;AACrD,0CAAsC;AAEtC,MAAM,eAAe,GAAG,eAAK,CAAC,aAAa,CAC1C,IAAI,mBAAQ,CAAC;IACZ,MAAM,EAAE,IAAI,yBAAM,CAAC;QAClB,IAAI,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;KACnC,CAAC;CACF,CAAC,CACF,CAAA;AAED,eAAe,CAAC,WAAW,GAAG,iBAAiB,CAAA;AAE/C,SAAgB,kBAAkB;IACjC,OAAO,IAAA,kBAAU,EAAC,eAAe,CAAC,CAAA;AACnC,CAAC;AAFD,gDAEC;AAMM,MAAM,gBAAgB,GAAoC,CAAC,EACjE,eAAe,EACf,QAAQ,GACR,EAAE,EAAE;IACJ,MAAM,MAAM,GAAG,IAAA,0BAAS,GAAE,CAAA;IAC1B,MAAM,IAAI,GAAG,IAAA,+BAAc,GAAE,CAAA;IAE7B,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EACvC,GAAG,EAAE,CAAC,IAAI,mBAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CACrD,CAAA;IAED,IAAA,iBAAS,EAAC,GAAG,EAAE;QACd,WAAW,CAAC,IAAI,mBAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC,CAAA;IAC7D,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC,CAAA;IAEnC,OAAO,CACN,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CACzC;GAAA,CAAC,QAAQ,CACV;EAAA,EAAE,eAAe,CAAC,QAAQ,CAAC,CAC3B,CAAA;AACF,CAAC,CAAA;AApBY,QAAA,gBAAgB,oBAoB5B"}
@@ -1,17 +1,20 @@
1
1
  import { HDict, HGrid } from 'haystack-core';
2
2
  import { Client, Watch } from 'haystack-nclient';
3
+ export declare const DEFAULT_USER_ROLE_TAG_NAME = "uiElementPermissions";
3
4
  export interface ResolverData {
4
5
  client: Client;
5
6
  user?: HDict;
7
+ userRoleTagName?: string;
6
8
  }
7
9
  /**
8
10
  * Resolver is a mediator for the network interactions during the resolution process,
9
11
  * in order to enable future optimizations.
10
12
  */
11
13
  export declare class Resolver {
12
- constructor({ client, user }: ResolverData);
14
+ constructor({ client, user, userRoleTagName, }: ResolverData);
13
15
  client: Client;
14
16
  user?: HDict;
17
+ userRoleTagName?: string;
15
18
  read(filter: string): Promise<HGrid<HDict>>;
16
19
  makeWatch(dis: string, grid: HGrid<HDict>): Promise<Watch>;
17
20
  eval(expr: string): Promise<HGrid<HDict>>;
@@ -1,17 +1,20 @@
1
1
  /*
2
2
  * Copyright (c) 2022, J2 Innovations. All Rights Reserved
3
3
  */
4
+ export const DEFAULT_USER_ROLE_TAG_NAME = 'uiElementPermissions';
4
5
  /**
5
6
  * Resolver is a mediator for the network interactions during the resolution process,
6
7
  * in order to enable future optimizations.
7
8
  */
8
9
  export class Resolver {
9
- constructor({ client, user }) {
10
+ constructor({ client, user, userRoleTagName = DEFAULT_USER_ROLE_TAG_NAME, }) {
10
11
  this.client = client;
11
12
  this.user = user;
13
+ this.userRoleTagName = userRoleTagName;
12
14
  }
13
15
  client;
14
16
  user;
17
+ userRoleTagName;
15
18
  async read(filter) {
16
19
  return this.client.ext.read(filter);
17
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Resolver.js","sourceRoot":"","sources":["../../src/resolvableElements/Resolver.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH;;;GAGG;AACH,MAAM,OAAO,QAAQ;IACpB,YAAY,EAAE,MAAM,EAAE,IAAI,EAAgB;QACzC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IACjB,CAAC;IAED,MAAM,CAAQ;IACd,IAAI,CAAQ;IAEZ,KAAK,CAAC,IAAI,CAAC,MAAc;QACxB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACpC,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,GAAW,EAAE,IAAkB;QAC9C,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAC7C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAY;QACtB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAClC,CAAC;CACD"}
1
+ {"version":3,"file":"Resolver.js","sourceRoot":"","sources":["../../src/resolvableElements/Resolver.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,MAAM,CAAC,MAAM,0BAA0B,GAAG,sBAAsB,CAAA;AAQhE;;;GAGG;AACH,MAAM,OAAO,QAAQ;IACpB,YAAY,EACX,MAAM,EACN,IAAI,EACJ,eAAe,GAAG,0BAA0B,GAC9B;QACd,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,eAAe,GAAG,eAAe,CAAA;IACvC,CAAC;IAED,MAAM,CAAQ;IACd,IAAI,CAAQ;IACZ,eAAe,CAAS;IAExB,KAAK,CAAC,IAAI,CAAC,MAAc;QACxB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACpC,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,GAAW,EAAE,IAAkB;QAC9C,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAC7C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAY;QACtB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAClC,CAAC;CACD"}
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  * Copyright (c) 2022, J2 Innovations. All Rights Reserved
3
3
  */
4
- const USER_ROLE_TAG_NAME = 'uiElementPermissions';
4
+ import { DEFAULT_USER_ROLE_TAG_NAME } from '../Resolver';
5
5
  /**
6
6
  * Base UiElement class
7
7
  */
@@ -22,7 +22,7 @@ export class UiElement {
22
22
  console.log(this);
23
23
  }
24
24
  isAccessAllowed(meta) {
25
- return UiElement.#isElementAccessible(meta, this.resolver.user);
25
+ return UiElement.#isElementAccessible(meta, this.resolver.user, this.resolver.userRoleTagName);
26
26
  }
27
27
  _value;
28
28
  get value() {
@@ -33,11 +33,11 @@ export class UiElement {
33
33
  this.onUpdate(value);
34
34
  }
35
35
  onUpdate;
36
- static #isElementAccessible(meta, user) {
36
+ static #isElementAccessible(meta, user, userRoleTagName = DEFAULT_USER_ROLE_TAG_NAME) {
37
37
  if (!meta || !meta.access || UiElement.#isSuperuser(user)) {
38
38
  return true;
39
39
  }
40
- const userRole = user?.get(USER_ROLE_TAG_NAME);
40
+ const userRole = user?.get(userRoleTagName);
41
41
  if (userRole && meta.access.includes(userRole.value)) {
42
42
  return true;
43
43
  }
@@ -1 +1 @@
1
- {"version":3,"file":"UiElement.js","sourceRoot":"","sources":["../../../src/resolvableElements/elements/UiElement.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,MAAM,kBAAkB,GAAG,sBAAsB,CAAA;AAiBjD;;GAEG;AACH,MAAM,OAAgB,SAAS;IAC9B,YAAY,EACX,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,QAAQ,GACqB;QAC7B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IACzB,CAAC;IACD,QAAQ,CAAU;IAElB,KAAK,CAAgB;IAErB,IAAI,CAAS;IAEb,MAAM;QACL,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAA;IAC7B,CAAC;IACD,OAAO;QACN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAClB,CAAC;IAED,eAAe,CAAC,IAAoB;QACnC,OAAO,SAAS,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAChE,CAAC;IAES,MAAM,CAAU;IAE1B,IAAI,KAAK;QACR,OAAO,IAAI,CAAC,MAAM,CAAA;IACnB,CAAC;IAED,IAAI,KAAK,CAAC,KAA0B;QACnC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IACrB,CAAC;IACD,QAAQ,CAAsC;IAE9C,MAAM,CAAC,oBAAoB,CAAC,IAAoB,EAAE,IAAY;QAC7D,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;YAC1D,OAAO,IAAI,CAAA;SACX;QAED,MAAM,QAAQ,GAAG,IAAI,EAAE,GAAG,CAAO,kBAAkB,CAAC,CAAA;QACpD,IAAI,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YACrD,OAAO,IAAI,CAAA;SACX;QAED,OAAO,KAAK,CAAA;IACb,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,IAAY;QAC/B,OAAO,IAAI,EAAE,GAAG,CAAO,UAAU,CAAC,EAAE,KAAK,KAAK,IAAI,CAAA;IACnD,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,GAAG,MAA8B;QACnD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACvD,CAAC;CACD"}
1
+ {"version":3,"file":"UiElement.js","sourceRoot":"","sources":["../../../src/resolvableElements/elements/UiElement.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,0BAA0B,EAAY,MAAM,aAAa,CAAA;AAiBlE;;GAEG;AACH,MAAM,OAAgB,SAAS;IAC9B,YAAY,EACX,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,QAAQ,GACqB;QAC7B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IACzB,CAAC;IACD,QAAQ,CAAU;IAElB,KAAK,CAAgB;IAErB,IAAI,CAAS;IAEb,MAAM;QACL,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAA;IAC7B,CAAC;IACD,OAAO;QACN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAClB,CAAC;IAED,eAAe,CAAC,IAAoB;QACnC,OAAO,SAAS,CAAC,oBAAoB,CACpC,IAAI,EACJ,IAAI,CAAC,QAAQ,CAAC,IAAI,EAClB,IAAI,CAAC,QAAQ,CAAC,eAAe,CAC7B,CAAA;IACF,CAAC;IAES,MAAM,CAAU;IAE1B,IAAI,KAAK;QACR,OAAO,IAAI,CAAC,MAAM,CAAA;IACnB,CAAC;IAED,IAAI,KAAK,CAAC,KAA0B;QACnC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IACrB,CAAC;IACD,QAAQ,CAAsC;IAE9C,MAAM,CAAC,oBAAoB,CAC1B,IAAoB,EACpB,IAAY,EACZ,eAAe,GAAG,0BAA0B;QAE5C,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;YAC1D,OAAO,IAAI,CAAA;SACX;QAED,MAAM,QAAQ,GAAG,IAAI,EAAE,GAAG,CAAO,eAAe,CAAC,CAAA;QACjD,IAAI,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YACrD,OAAO,IAAI,CAAA;SACX;QAED,OAAO,KAAK,CAAA;IACb,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,IAAY;QAC/B,OAAO,IAAI,EAAE,GAAG,CAAO,UAAU,CAAC,EAAE,KAAK,KAAK,IAAI,CAAA;IACnD,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,GAAG,MAA8B;QACnD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACvD,CAAC;CACD"}
@@ -1,4 +1,8 @@
1
1
  import React, { PropsWithChildren } from 'react';
2
2
  import { Resolver } from '../Resolver';
3
3
  export declare function useResolverContext(): Resolver;
4
- export declare const ResolverProvider: React.FC<PropsWithChildren>;
4
+ interface ResolverProviderProps extends PropsWithChildren {
5
+ userRoleTagName?: string;
6
+ }
7
+ export declare const ResolverProvider: React.FC<ResolverProviderProps>;
8
+ export {};
@@ -15,13 +15,13 @@ ResolverContext.displayName = 'ResolverContext';
15
15
  export function useResolverContext() {
16
16
  return useContext(ResolverContext);
17
17
  }
18
- export const ResolverProvider = ({ children }) => {
18
+ export const ResolverProvider = ({ userRoleTagName, children, }) => {
19
19
  const client = useClient();
20
20
  const user = useCurrentUser();
21
- const [resolver, setResolver] = useState(() => new Resolver({ client, user }));
21
+ const [resolver, setResolver] = useState(() => new Resolver({ client, user, userRoleTagName }));
22
22
  useEffect(() => {
23
- setResolver(new Resolver({ client, user }));
24
- }, [client, user]);
23
+ setResolver(new Resolver({ client, user, userRoleTagName }));
24
+ }, [client, user, userRoleTagName]);
25
25
  return (<ResolverContext.Provider value={resolver}>
26
26
  {children}
27
27
  </ResolverContext.Provider>);
@@ -1 +1 @@
1
- {"version":3,"file":"useResolverContext.jsx","sourceRoot":"","sources":["../../../src/resolvableElements/react/useResolverContext.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,EAAE,EAEb,UAAU,EACV,SAAS,EACT,QAAQ,GACR,MAAM,OAAO,CAAA;AACd,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEtC,MAAM,eAAe,GAAG,KAAK,CAAC,aAAa,CAC1C,IAAI,QAAQ,CAAC;IACZ,MAAM,EAAE,IAAI,MAAM,CAAC;QAClB,IAAI,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;KACnC,CAAC;CACF,CAAC,CACF,CAAA;AAED,eAAe,CAAC,WAAW,GAAG,iBAAiB,CAAA;AAE/C,MAAM,UAAU,kBAAkB;IACjC,OAAO,UAAU,CAAC,eAAe,CAAC,CAAA;AACnC,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAgC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC7E,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,IAAI,GAAG,cAAc,EAAE,CAAA;IAE7B,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CACvC,GAAG,EAAE,CAAC,IAAI,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CACpC,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACd,WAAW,CAAC,IAAI,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IAC5C,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAA;IAElB,OAAO,CACN,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CACzC;GAAA,CAAC,QAAQ,CACV;EAAA,EAAE,eAAe,CAAC,QAAQ,CAAC,CAC3B,CAAA;AACF,CAAC,CAAA"}
1
+ {"version":3,"file":"useResolverContext.jsx","sourceRoot":"","sources":["../../../src/resolvableElements/react/useResolverContext.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,EAAE,EAEb,UAAU,EACV,SAAS,EACT,QAAQ,GACR,MAAM,OAAO,CAAA;AACd,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEtC,MAAM,eAAe,GAAG,KAAK,CAAC,aAAa,CAC1C,IAAI,QAAQ,CAAC;IACZ,MAAM,EAAE,IAAI,MAAM,CAAC;QAClB,IAAI,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;KACnC,CAAC;CACF,CAAC,CACF,CAAA;AAED,eAAe,CAAC,WAAW,GAAG,iBAAiB,CAAA;AAE/C,MAAM,UAAU,kBAAkB;IACjC,OAAO,UAAU,CAAC,eAAe,CAAC,CAAA;AACnC,CAAC;AAMD,MAAM,CAAC,MAAM,gBAAgB,GAAoC,CAAC,EACjE,eAAe,EACf,QAAQ,GACR,EAAE,EAAE;IACJ,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,IAAI,GAAG,cAAc,EAAE,CAAA;IAE7B,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CACvC,GAAG,EAAE,CAAC,IAAI,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CACrD,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACd,WAAW,CAAC,IAAI,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC,CAAA;IAC7D,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC,CAAA;IAEnC,OAAO,CACN,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CACzC;GAAA,CAAC,QAAQ,CACV;EAAA,EAAE,eAAe,CAAC,QAAQ,CAAC,CAC3B,CAAA;AACF,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@j2inn/resolvable-ui-elements",
3
- "version": "0.0.2-beta.2",
3
+ "version": "0.0.2-beta.3",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",