# What is resolvable-ui-elements?
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.

The JSON file (typically called `elements.json`) can be generated from a spreadsheet used to simplify the data management for a project UI.


## How do I get set up? ###
To install this package run `npm i @j2inn/resolvable-ui-elements`

## Where do I get more info? ###
See: https://finproducts.atlassian.net/wiki/spaces/ECO/pages/32881311778/Element+Types

## Codebase Structure ##

    src
    ├── resolvableElements
    │   ├── elements                # Element classes implementation
    │   ├── interfacesGeneration    # Code for generating interfaces from an elements.json file
    │   ├── react                   # React hooks to use resolvable elements.
    │   └── ...
    └── ...

## BE libraries dependencies ##
If you decide to use the Resolver's `evalFuncName` feature, this library should be used in combination with [finOemAuthzExt](https://bitbucket.org/finproducts/finoemauthzext). The pod allows the usage of the wrapper function.
```typescript
/**
 * Function name to be used for expressions eval,
 * used to enable custom backend permission check using elements path
 * @example
 * customEval(\`page/section/elementName\`, parametersDict)
 */
evalFuncName?: string
```

### v1.0.4 ###
Version 1.0.4 of this library introduces the usage of optional parameters in function evaluation. To be able to use them, [finOemAuthzExt](https://bitbucket.org/finproducts/finoemauthzext) 1.0.2+ should be used for the BE.
