@lion/ui 0.8.5 → 0.8.7
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/components/calendar/src/LionCalendar.js +5 -1
- package/components/combobox/test/lion-combobox.test.js +13 -11
- package/components/core/src/ScopedElementsMixin.js +2 -2
- package/components/core/test/ScopedElementsMixin.test.js +34 -1
- package/components/core/test/SlotMixin.test.js +19 -33
- package/components/core/test-helpers/isActiveElement.js +14 -0
- package/components/dialog/test/lion-dialog.test.js +6 -5
- package/components/form/test/lion-form.test.js +20 -18
- package/components/form-core/test/lion-field.test.js +15 -14
- package/components/form-core/test-suites/NativeTextFieldMixin.suite.js +8 -6
- package/components/form-core/test-suites/ValidateMixin.suite.js +7 -7
- package/components/form-integrations/test/dialog-integrations.test.js +6 -5
- package/components/input-datepicker/test/lion-input-datepicker.test.js +25 -1
- package/components/overlays/src/OverlayController.js +25 -1
- package/components/overlays/src/OverlayMixin.js +17 -4
- package/components/overlays/src/utils/adopt-styles.js +3 -3
- package/components/overlays/src/utils/contain-focus.js +1 -1
- package/components/overlays/test/OverlayController.test.js +46 -13
- package/components/overlays/test/utils-tests/contain-focus.test.js +21 -16
- package/components/select-rich/test/lion-select-rich.test.js +15 -17
- package/components/switch/test/lion-switch.test.js +7 -6
- package/custom-elements.json +157 -7
- package/dist-types/components/calendar/src/LionCalendar.d.ts.map +1 -1
- package/dist-types/components/combobox/test/lion-combobox.test.d.ts.map +1 -1
- package/dist-types/components/{overlays/src/utils/get-deep-active-element.d.ts → core/src/getDeepActiveElement.d.ts} +1 -1
- package/dist-types/components/core/src/getDeepActiveElement.d.ts.map +1 -0
- package/dist-types/components/core/test/SlotMixin.test.d.ts.map +1 -1
- package/dist-types/components/core/test-helpers/isActiveElement.d.ts +13 -0
- package/dist-types/components/core/test-helpers/isActiveElement.d.ts.map +1 -0
- package/dist-types/components/dialog/test/lion-dialog.test.d.ts.map +1 -1
- package/dist-types/components/form/test/lion-form.test.d.ts.map +1 -1
- package/dist-types/components/form-core/test/lion-field.test.d.ts +2 -2
- package/dist-types/components/form-core/test/lion-field.test.d.ts.map +1 -1
- package/dist-types/components/form-core/test-suites/NativeTextFieldMixin.suite.d.ts +2 -2
- package/dist-types/components/form-core/test-suites/NativeTextFieldMixin.suite.d.ts.map +1 -1
- package/dist-types/components/form-integrations/test/dialog-integrations.test.d.ts.map +1 -1
- package/dist-types/components/overlays/src/OverlayController.d.ts +2 -0
- package/dist-types/components/overlays/src/OverlayController.d.ts.map +1 -1
- package/dist-types/components/overlays/src/OverlayMixin.d.ts.map +1 -1
- package/dist-types/components/overlays/test/OverlayController.test.d.ts.map +1 -1
- package/dist-types/components/select-rich/test/lion-select-rich.test.d.ts +2 -2
- package/dist-types/components/select-rich/test/lion-select-rich.test.d.ts.map +1 -1
- package/dist-types/components/switch/test/lion-switch.test.d.ts +1 -1
- package/dist-types/components/switch/test/lion-switch.test.d.ts.map +1 -1
- package/dist-types/exports/overlays.d.ts +2 -2
- package/dist-types/tsconfig.tsbuildinfo +1 -1
- package/docs/components/checkbox-group/overview.md +2 -2
- package/docs/components/collapsible/overview.md +1 -1
- package/docs/components/combobox/overview.md +1 -1
- package/docs/components/combobox/use-cases.md +1 -1
- package/docs/components/dialog/overview.md +1 -1
- package/docs/components/fieldset/overview.md +5 -5
- package/docs/components/form/overview.md +3 -3
- package/docs/components/form/use-cases.md +157 -8
- package/docs/components/icon/use-cases.md +1 -1
- package/docs/components/input/overview.md +1 -1
- package/docs/components/input-amount/overview.md +3 -3
- package/docs/components/input-date/overview.md +3 -3
- package/docs/components/input-datepicker/overview.md +5 -5
- package/docs/components/input-email/overview.md +2 -2
- package/docs/components/input-file/overview.md +1 -1
- package/docs/components/input-iban/overview.md +2 -2
- package/docs/components/input-range/overview.md +2 -2
- package/docs/components/input-stepper/overview.md +1 -1
- package/docs/components/input-tel/overview.md +1 -1
- package/docs/components/input-tel/use-cases.md +6 -6
- package/docs/components/input-tel-dropdown/overview.md +1 -1
- package/docs/components/listbox/use-cases.md +1 -1
- package/docs/components/radio-group/overview.md +3 -3
- package/docs/components/select/use-cases.md +1 -1
- package/docs/components/select-rich/use-cases.md +1 -1
- package/docs/components/tabs/examples.md +1 -1
- package/docs/fundamentals/index.md +4 -4
- package/docs/fundamentals/node-tools/providence-analytics/overview.md +42 -139
- package/docs/fundamentals/node-tools/publish-docs/overview.md +3 -3
- package/docs/fundamentals/node-tools/rocket-preset-extend-lion-docs/overview.md +2 -2
- package/docs/fundamentals/rationales/accessibility.md +1 -1
- package/docs/fundamentals/systems/core/SlotMixin.md +1 -1
- package/docs/fundamentals/systems/core/overview.md +1 -1
- package/docs/fundamentals/systems/form/formatting-and-parsing.md +4 -4
- package/docs/fundamentals/systems/form/model-value.md +1 -1
- package/docs/fundamentals/systems/form/overview.md +28 -28
- package/docs/fundamentals/systems/form/validate.md +2 -2
- package/docs/fundamentals/systems/localize/overview.md +4 -4
- package/docs/fundamentals/systems/overlays/configuration.md +2 -2
- package/docs/fundamentals/systems/overlays/overview.md +5 -5
- package/docs/fundamentals/systems/overlays/use-cases.md +2 -2
- package/docs/fundamentals/tools/helpers/overview.md +1 -1
- package/docs/fundamentals/tools/singleton-manager/overview.md +4 -4
- package/docs/guides/how-to/create-a-custom-field.md +5 -5
- package/docs/guides/how-to/create-a-form.md +4 -4
- package/docs/guides/how-to/extend-a-native-input.md +2 -2
- package/docs/guides/index.md +8 -8
- package/docs/guides/principles/index.md +5 -5
- package/docs/guides/principles/styling.md +1 -1
- package/exports/overlays.js +3 -2
- package/overlays.js +3 -2
- package/package.json +1 -1
- package/dist-types/components/overlays/src/utils/get-deep-active-element.d.ts.map +0 -1
- package/docs/fundamentals/node-tools/providence-analytics/LocalConfiguration.md +0 -68
- package/docs/fundamentals/node-tools/providence-analytics/QueryResult.md +0 -111
- package/docs/fundamentals/node-tools/providence-analytics/analyzer.md +0 -69
- package/docs/fundamentals/node-tools/providence-analytics/assets/_mermaid.svg.js +0 -1226
- package/docs/fundamentals/node-tools/providence-analytics/dashboard.md +0 -22
- /package/components/{overlays/src/utils/get-deep-active-element.js → core/src/getDeepActiveElement.js} +0 -0
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
```js script
|
|
4
4
|
import { html } from '@mdjs/mdjs-preview';
|
|
5
|
-
import { providenceFlowSvg, providenceInternalFlowSvg } from './assets/_mermaid.svg.js';
|
|
6
5
|
```
|
|
7
6
|
|
|
8
7
|
Providence is the 'All Seeing Eye' that generates usage statistics by analyzing code.
|
|
@@ -10,8 +9,6 @@ It measures the effectivity and popularity of your software.
|
|
|
10
9
|
With just a few commands you can measure the impact for (breaking) changes, making
|
|
11
10
|
your release process more stable and predictable.
|
|
12
11
|
|
|
13
|
-
Providence can be used as a dev dependency in a project for which metrics
|
|
14
|
-
can be generated via analyzers (see below).
|
|
15
12
|
For instance for a repo "lion-based-ui" that extends @lion/\* we can answer questions like:
|
|
16
13
|
|
|
17
14
|
- **Which subsets of my product are popular?**
|
|
@@ -23,170 +20,76 @@ For instance for a repo "lion-based-ui" that extends @lion/\* we can answer ques
|
|
|
23
20
|
|
|
24
21
|
- etc...
|
|
25
22
|
|
|
26
|
-
|
|
27
|
-
|
|
23
|
+
Providence uses abstract syntax trees (ASTs) to have the most advanced analysis possible.
|
|
24
|
+
It does this via the [oxc parser](https://oxc.rs/docs/guide/usage/parser.html), the quickest parser available today!
|
|
28
25
|
|
|
29
|
-
##
|
|
26
|
+
## Run
|
|
30
27
|
|
|
31
|
-
|
|
28
|
+
Providence expects an analyzer name that tells it what type of analysis to run:
|
|
32
29
|
|
|
33
30
|
```bash
|
|
34
|
-
|
|
31
|
+
npx providence analyze <analyzer-name>
|
|
35
32
|
```
|
|
36
33
|
|
|
37
|
-
|
|
34
|
+
By default Providence ships these analyzers:
|
|
38
35
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
> The example above illustrates how to run the "match-imports" analyzer for reference project 'lion-based-ui'. Note that it is possible to run other analyzers and configurations supported by providence as well. For a full overview of cli options, run `npx providence --help`. All supported analyzers will be viewed when running `npx providence analyze`
|
|
46
|
-
|
|
47
|
-
You are now ready to use providence in your project. All
|
|
48
|
-
data will be stored in json files in the folder `./providence-output`
|
|
49
|
-
|
|
50
|
-

|
|
51
|
-
|
|
52
|
-
## Setup: Dashboard
|
|
53
|
-
|
|
54
|
-
### Add "providence:dashboard" script to package.json
|
|
55
|
-
|
|
56
|
-
```js
|
|
57
|
-
...
|
|
58
|
-
"scripts": {
|
|
59
|
-
...
|
|
60
|
-
"providence:dashboard": "providence dashboard"
|
|
61
|
-
}
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
### Add providence.conf.js
|
|
65
|
-
|
|
66
|
-
```js
|
|
67
|
-
export default {
|
|
68
|
-
referenceCollections: {
|
|
69
|
-
'lion-based-ui-collection': [
|
|
70
|
-
'./node_modules/lion-based-ui/packages/x',
|
|
71
|
-
'./node_modules/lion-based-ui/packages/y',
|
|
72
|
-
],
|
|
73
|
-
},
|
|
74
|
-
};
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
Run `npm run providence:dashboard`
|
|
78
|
-
|
|
79
|
-

|
|
80
|
-
|
|
81
|
-
## Setup: about result output
|
|
82
|
-
|
|
83
|
-
All output files will be stored in `./providence-output`.
|
|
84
|
-
This means they will be committed to git, so your colleagues don't have to
|
|
85
|
-
rerun the analysis (for large projects with many dependencies this can be time consuming)
|
|
86
|
-
and can directly start the dashboard usage metrics.
|
|
87
|
-
Also, note that the files serve as cache (they are stored with hashes based on project version and analyzer configuration). This means that an interrupted analysis can be
|
|
88
|
-
resumed later on.
|
|
89
|
-
|
|
90
|
-
## Conceptual overview
|
|
91
|
-
|
|
92
|
-
Providence performs queries on one or more search targets.
|
|
93
|
-
These search targets consist of one or more software projects (javascript/html repositories)
|
|
94
|
-
|
|
95
|
-
The diagram below shows how `providenceMain` function can be used from an external context.
|
|
96
|
-
|
|
97
|
-
```js story
|
|
98
|
-
export const providenceFlow = () => providenceFlowSvg;
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
## Flow inside providence
|
|
102
|
-
|
|
103
|
-
The diagram below depicts the flow inside the `providenceMain` function.
|
|
104
|
-
It uses:
|
|
105
|
-
|
|
106
|
-
- InputDataService
|
|
107
|
-
Used to create a data structure based on a folder (for instance the search target or
|
|
108
|
-
the references root). The structure creates entries for every file, which get enriched with code,
|
|
109
|
-
ast results, query results etc. Returns `InputData` object.
|
|
110
|
-
- QueryService
|
|
111
|
-
Requires a `queryConfig` and `InputData` object. It will perform a query (grep search or ast analysis)
|
|
112
|
-
and returns a `QueryResult`.
|
|
113
|
-
It also contains helpers for the creation of a `queryConfig`
|
|
114
|
-
- ReportService
|
|
115
|
-
The result gets outputted to the user. Currently, a log to the console and/or a dump to a json file
|
|
116
|
-
are available as output formats.
|
|
117
|
-
|
|
118
|
-
```js story
|
|
119
|
-
export const providenceInternalFlow = () => providenceInternalFlowSvg;
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
## Queries
|
|
123
|
-
|
|
124
|
-
Providence requires a queries as input.
|
|
125
|
-
Queries are defined as objects and can be of two types:
|
|
126
|
-
|
|
127
|
-
- feature-query
|
|
128
|
-
- ast-analyzer
|
|
129
|
-
|
|
130
|
-
A `QueryConfig` is required as input to run the `providenceMain` function.
|
|
131
|
-
This object specifies the type of query and contains the relevant meta
|
|
132
|
-
information that will later be outputted in the `QueryResult` (the JSON object that
|
|
133
|
-
the `providenceMain` function returns.)
|
|
134
|
-
|
|
135
|
-
## Analyzer Query
|
|
136
|
-
|
|
137
|
-
Analyzer queries are also created via `QueryConfig`s.
|
|
138
|
-
|
|
139
|
-
Analyzers can be described as predefined queries that use AST traversal.
|
|
36
|
+
- find-imports
|
|
37
|
+
- find-exports
|
|
38
|
+
- find-classes
|
|
39
|
+
- match-imports
|
|
40
|
+
- match-subclasses
|
|
140
41
|
|
|
141
|
-
|
|
42
|
+
Let's say we run `find-imports`:
|
|
142
43
|
|
|
143
44
|
```bash
|
|
144
|
-
providence analyze
|
|
45
|
+
npx providence analyze find-imports
|
|
145
46
|
```
|
|
146
47
|
|
|
147
|
-
Now
|
|
48
|
+
Now it retrieves all relevant data about es module imports.
|
|
49
|
+
There are plenty of edge cases that it needs to take into account here;
|
|
50
|
+
you can have a look at the tests to get an idea about all different cases Providence handles for you.
|
|
148
51
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
-
|
|
153
|
-
|
|
154
|
-
- etc...
|
|
52
|
+
## Projects
|
|
53
|
+
|
|
54
|
+
Providence uses the concept of projects. A project is a piece of software to analyze:
|
|
55
|
+
usually an npm artifact or a git (mono-)repository. What all projects have in common,
|
|
56
|
+
is a package.json. From it, the following project data is derived:
|
|
155
57
|
|
|
156
|
-
|
|
58
|
+
- the name
|
|
59
|
+
- the version
|
|
60
|
+
- the files it uses for scanning. One of the following strategies is usually followed:
|
|
61
|
+
- exportmap entrypoints (by 'expanding' package.json "exports" on file system)
|
|
62
|
+
- npm files (it reads package.json "files" | .npmignore)
|
|
63
|
+
- the git files (it reads .gitignore)
|
|
64
|
+
- a custom defined list
|
|
157
65
|
|
|
158
|
-
|
|
159
|
-
## Running providence from its own repo
|
|
66
|
+
For a "find" analyzer, there is one project involved (the target project).
|
|
160
67
|
|
|
161
|
-
|
|
68
|
+
We can specify it like this (we override the default current working directory):
|
|
162
69
|
|
|
163
70
|
```bash
|
|
164
|
-
|
|
71
|
+
npx providence analyze find-imports -t /importing/project
|
|
165
72
|
```
|
|
166
73
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
By adding a reference project, you can automatically see how code in your reference project is
|
|
170
|
-
used across the search target projects.
|
|
171
|
-
Under the hood, this automatically creates a set of queries for you.
|
|
74
|
+
For a "match" analyzer, there is also a reference project.
|
|
75
|
+
Here we match the exports of the reference project (-r) against the imports of the target project (-t).
|
|
172
76
|
|
|
173
77
|
```bash
|
|
174
|
-
|
|
78
|
+
npx providence analyze match-imports -t /importing/project -r /exporting/project
|
|
175
79
|
```
|
|
176
80
|
|
|
177
|
-
|
|
81
|
+
## Utils
|
|
178
82
|
|
|
179
|
-
|
|
83
|
+
Providence comes with many tools for deep traversal of identifiers,
|
|
84
|
+
the (babel like) traversal of ast trees in oxc and swc and more.
|
|
85
|
+
Also more generic utils for caching and performant globbing come delivered with Providence.
|
|
180
86
|
|
|
181
|
-
|
|
182
|
-
git submodule update --init --recursive
|
|
183
|
-
```
|
|
87
|
+
For a better understanding, check out the utils folders (tests and code).
|
|
184
88
|
|
|
185
|
-
|
|
89
|
+
## More
|
|
186
90
|
|
|
187
|
-
|
|
91
|
+
For more options, see:
|
|
188
92
|
|
|
189
93
|
```bash
|
|
190
|
-
|
|
94
|
+
npx providence --help
|
|
191
95
|
```
|
|
192
|
-
-->
|
|
@@ -31,7 +31,7 @@ For a Mono Repository
|
|
|
31
31
|
```md
|
|
32
32
|
# My Pkg
|
|
33
33
|
|
|
34
|
-
[=> See Source <=](https://github.com/ing-bank/lion/blob/
|
|
34
|
+
[=> See Source <=](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/fundamentals/docs/deep/dir/overview.md)
|
|
35
35
|
```
|
|
36
36
|
|
|
37
37
|
## CLI flags
|
|
@@ -61,7 +61,7 @@ Bring the `overview.md` in a docs folder along.
|
|
|
61
61
|
👉 `packages/[my-package]/docs/overview.md`
|
|
62
62
|
|
|
63
63
|
```md
|
|
64
|
-
[=> See Source <=](https://github.com/ing-bank/lion/blob/
|
|
64
|
+
[=> See Source <=](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/fundamentals/docs/deep/dir/overview.md)
|
|
65
65
|
```
|
|
66
66
|
|
|
67
67
|
Add a `use-cases.md`
|
|
@@ -69,7 +69,7 @@ Add a `use-cases.md`
|
|
|
69
69
|
👉 `packages/[my-package]/docs/use-cases.md`
|
|
70
70
|
|
|
71
71
|
```md
|
|
72
|
-
[=> See Source <=](https://github.com/ing-bank/lion/blob/
|
|
72
|
+
[=> See Source <=](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/fundamentals/docs/deep/dir/use-cases.md)
|
|
73
73
|
```
|
|
74
74
|
|
|
75
75
|
So you will end up with something like this in your package.
|
|
@@ -7,7 +7,7 @@ To do this automatically you can use this preset for [rocket](https://rocket.mod
|
|
|
7
7
|
|
|
8
8
|
## Features
|
|
9
9
|
|
|
10
|
-
- Import lion documentation and adjust it using [remark-extend](https://github.com/ing-bank/lion/blob/
|
|
10
|
+
- Import lion documentation and adjust it using [remark-extend](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/fundamentals/node-tools/remark-extend/overview.md)
|
|
11
11
|
- Renames named imports and all it's usage
|
|
12
12
|
- Adjusts import paths
|
|
13
13
|
- Replace tags in template literals
|
|
@@ -38,7 +38,7 @@ export default {
|
|
|
38
38
|
|
|
39
39
|
## Reusing documentation
|
|
40
40
|
|
|
41
|
-
To take an existing documentation you can "import" it using [remark-extend](https://github.com/ing-bank/lion/blob/
|
|
41
|
+
To take an existing documentation you can "import" it using [remark-extend](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/fundamentals/node-tools/remark-extend/overview.md).
|
|
42
42
|
|
|
43
43
|
As an example you can create `docs/components/tabs/overview.md`.
|
|
44
44
|
|
|
@@ -25,4 +25,4 @@ Internally, we delegate all intricacies involved in managing light dom to SlotMi
|
|
|
25
25
|
SlotMixin automatically mediates between light dom provided by the user ('public slots') and light dom provided by the component author ('private slots').
|
|
26
26
|
Also, SlotMixin allows to hook into the reactive update loop of LitElement (automatically rerendering on property changes) and it automatically respects
|
|
27
27
|
the scoped registry belonging to the shadow root.
|
|
28
|
-
More details about SlotMixin can be found in the [SlotMixin documentation](https://github.com/ing-bank/lion/blob/
|
|
28
|
+
More details about SlotMixin can be found in the [SlotMixin documentation](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/fundamentals/systems/core/SlotMixin.md)
|
|
@@ -152,4 +152,4 @@ This will make sure that the slot provided by the user always takes precedence a
|
|
|
152
152
|
|
|
153
153
|
### Default slot
|
|
154
154
|
|
|
155
|
-
As can be seen in the example of [SlotFunctionResults](https://github.com/ing-bank/lion/blob/
|
|
155
|
+
As can be seen in the example of [SlotFunctionResults](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/fundamentals/systems/core/#slotfunctionresults), '' can be used to add content to the default slot
|
|
@@ -15,7 +15,7 @@ import { LitElement, html, render } from 'lit-element';
|
|
|
15
15
|
|
|
16
16
|
## Features
|
|
17
17
|
|
|
18
|
-
- [function to deduplicate mixins (dedupeMixin)](https://github.com/ing-bank/lion/blob/
|
|
18
|
+
- [function to deduplicate mixins (dedupeMixin)](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/fundamentals/systems/core/#deduping-of-mixins)
|
|
19
19
|
- Mixin to handle disabled (DisabledMixin)
|
|
20
20
|
- Mixin to handle disabled AND tabIndex (DisabledWithTabIndexMixin)
|
|
21
21
|
- Mixin to manage auto-generated needed slot elements in light dom (SlotMixin)
|
|
@@ -23,7 +23,7 @@ Our fields can automatically format/parse/serialize user input or an input set i
|
|
|
23
23
|
|
|
24
24
|
Below are some concrete examples of implementations of formatters and parsers mimicking a (basic) amount input.
|
|
25
25
|
|
|
26
|
-
> For an actual amount input, check out [lion-input-amount](https://github.com/ing-bank/lion/blob/
|
|
26
|
+
> For an actual amount input, check out [lion-input-amount](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/components/input-amount/overview.md).
|
|
27
27
|
> This comes with its own formatter, parser, serializer.
|
|
28
28
|
|
|
29
29
|
### Parsers & modelValue
|
|
@@ -230,16 +230,16 @@ Below we show three flow diagrams to show the flow of formatting, serializing an
|
|
|
230
230
|
|
|
231
231
|
Where a user changes the input with their keyboard:
|
|
232
232
|
|
|
233
|
-

|
|
234
234
|
|
|
235
235
|
### Unparseable flow
|
|
236
236
|
|
|
237
237
|
Where a user sets the input to something that is not parseable by the parser:
|
|
238
238
|
|
|
239
|
-

|
|
240
240
|
|
|
241
241
|
### Imperative / programmatic flow
|
|
242
242
|
|
|
243
243
|
Where the developer sets the modelValue of the input programmatically:
|
|
244
244
|
|
|
245
|
-

|
|
@@ -21,7 +21,7 @@ level, via:
|
|
|
21
21
|
> Internal/private concepts like viewValue, formattedValue, serializedValue are therefore not
|
|
22
22
|
> recommended as a means of interaction.
|
|
23
23
|
|
|
24
|
-
For more information about parsing and the Unparseable type, see [Formatting and Parsing](https://github.com/ing-bank/lion/blob/
|
|
24
|
+
For more information about parsing and the Unparseable type, see [Formatting and Parsing](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/fundamentals/systems/form/formatting-and-parsing.md)
|
|
25
25
|
|
|
26
26
|
### Event meta
|
|
27
27
|
|
|
@@ -20,9 +20,9 @@ Fields (think of an input, textarea, select) are the actual form controls the en
|
|
|
20
20
|
|
|
21
21
|
On top of this, they feature:
|
|
22
22
|
|
|
23
|
-
- [formatting/parsing/serializing](https://github.com/ing-bank/lion/blob/
|
|
24
|
-
- Advanced [validation](https://github.com/ing-bank/lion/blob/
|
|
25
|
-
- Creation of advanced user interaction scenarios via [interaction states](https://github.com/ing-bank/lion/blob/
|
|
23
|
+
- [formatting/parsing/serializing](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/fundamentals/systems/form/formatting-and-parsing.md) of view values.
|
|
24
|
+
- Advanced [validation](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/fundamentals/systems/form/validate.md) possibilities.
|
|
25
|
+
- Creation of advanced user interaction scenarios via [interaction states](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/fundamentals/systems/form/interaction-states.md).
|
|
26
26
|
- Provision of labels and help texts in an easy, declarative manner.
|
|
27
27
|
- Accessibility out of the box.
|
|
28
28
|
- Advanced styling possibilities: map your own Design System to the internal HTML structure.
|
|
@@ -31,33 +31,33 @@ On top of this, they feature:
|
|
|
31
31
|
|
|
32
32
|
### Platform fields (wrappers)
|
|
33
33
|
|
|
34
|
-
- [LionInput](https://github.com/ing-bank/lion/blob/
|
|
35
|
-
- [LionTextarea](https://github.com/ing-bank/lion/blob/
|
|
36
|
-
- [LionSelect](https://github.com/ing-bank/lion/blob/
|
|
34
|
+
- [LionInput](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/components/input/overview.md), a wrapper for `<input>`.
|
|
35
|
+
- [LionTextarea](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/components/textarea/overview.md), a wrapper for `<textarea>`.
|
|
36
|
+
- [LionSelect](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/components/select/overview.md), a wrapper for `<select>`.
|
|
37
37
|
|
|
38
38
|
### Custom fields (wrappers)
|
|
39
39
|
|
|
40
|
-
Whenever a native form control doesn't exist or is not sufficient, a [custom form field](https://github.com/ing-bank/lion/blob/
|
|
40
|
+
Whenever a native form control doesn't exist or is not sufficient, a [custom form field](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/guides/how-to/create-a-custom-field.md) should be created. One could think of components like:
|
|
41
41
|
|
|
42
|
-
- [LionCombobox](https://github.com/ing-bank/lion/blob/
|
|
43
|
-
- [LionDate](https://github.com/ing-bank/lion/blob/
|
|
44
|
-
- [LionDatepicker](https://github.com/ing-bank/lion/blob/
|
|
45
|
-
- [LionListbox](https://github.com/ing-bank/lion/blob/
|
|
46
|
-
- [LionInputAmount](https://github.com/ing-bank/lion/blob/
|
|
47
|
-
- [LionInputEmail](https://github.com/ing-bank/lion/blob/
|
|
48
|
-
- [LionInputIban](https://github.com/ing-bank/lion/blob/
|
|
49
|
-
- [LionInputRange](https://github.com/ing-bank/lion/blob/
|
|
50
|
-
- [LionInputStepper](https://github.com/ing-bank/lion/blob/
|
|
51
|
-
- [LionSelectRich](https://github.com/ing-bank/lion/blob/
|
|
42
|
+
- [LionCombobox](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/components/combobox/overview.md), a custom implementation of a combobox.
|
|
43
|
+
- [LionDate](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/components/input-date/overview.md), an alternative for `<input type="date">`.
|
|
44
|
+
- [LionDatepicker](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/components/input-datepicker/overview.md), an alternative for `<input type="date">` including a calendar dropdown.
|
|
45
|
+
- [LionListbox](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/components/listbox/overview.md), a custom implementation of a listbox.
|
|
46
|
+
- [LionInputAmount](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/components/input-amount/overview.md), an alternative for `<input type="number">` special for amounts.
|
|
47
|
+
- [LionInputEmail](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/components/input-email/overview.md), an alternative for `<input type="email">`.
|
|
48
|
+
- [LionInputIban](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/components/input-iban/overview.md), an ING specific for an input with IBAN numbers.
|
|
49
|
+
- [LionInputRange](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/components/input-range/overview.md), an alternative for `<input type="range">`.
|
|
50
|
+
- [LionInputStepper](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/components/input-stepper/overview.md), an alternative for `<input type="number">`.
|
|
51
|
+
- [LionSelectRich](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/components/select-rich/overview.md), an alternative for `<select>` with multiline options.
|
|
52
52
|
|
|
53
53
|
### Choice Input Fields
|
|
54
54
|
|
|
55
55
|
For form controls which return a `checked-state` you can use the `lion-choice-input` mixin. It is used in:
|
|
56
56
|
|
|
57
|
-
- [LionCheckbox](https://github.com/ing-bank/lion/blob/
|
|
57
|
+
- [LionCheckbox](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/components/checkbox-group/overview.md), a wrapper for `<input type="checkbox">`.
|
|
58
58
|
- LionOption, an alternative for `<option>`.
|
|
59
|
-
- [LionRadio](https://github.com/ing-bank/lion/blob/
|
|
60
|
-
- [LionSwitch](https://github.com/ing-bank/lion/blob/
|
|
59
|
+
- [LionRadio](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/components/radio-group/overview.md), a wrapper for `<input type="radio">`.
|
|
60
|
+
- [LionSwitch](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/components/switch/overview.md), a custom implementation of a switch.
|
|
61
61
|
|
|
62
62
|
Which contains the following features:
|
|
63
63
|
|
|
@@ -69,14 +69,14 @@ Which contains the following features:
|
|
|
69
69
|
|
|
70
70
|
Fieldsets are groups of fields. They can be considered fields on their own as well, since they partly share the normalized API via `FormControlMixin`. Fieldsets are the basis for:
|
|
71
71
|
|
|
72
|
-
- [LionFieldset](https://github.com/ing-bank/lion/blob/
|
|
73
|
-
- [LionForm](https://github.com/ing-bank/lion/blob/
|
|
74
|
-
- [LionCheckboxGroup](https://github.com/ing-bank/lion/blob/
|
|
75
|
-
- [LionRadioGroup](https://github.com/ing-bank/lion/blob/
|
|
72
|
+
- [LionFieldset](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/components/fieldset/overview.md), a wrapper around multiple input fields or other fieldsets.
|
|
73
|
+
- [LionForm](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/components/form/overview.md), enhances the functionality of the native `<form>` component.
|
|
74
|
+
- [LionCheckboxGroup](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/components/checkbox-group/overview.md), a wrapper component for multiple checkboxes.
|
|
75
|
+
- [LionRadioGroup](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/components/radio-group/overview.md), a wrapper component for multiple radio inputs.
|
|
76
76
|
|
|
77
77
|
## Other Resources
|
|
78
78
|
|
|
79
|
-
- [Model Value](https://github.com/ing-bank/lion/blob/
|
|
80
|
-
- [Formatting and parsing](https://github.com/ing-bank/lion/blob/
|
|
81
|
-
- [Interaction states](https://github.com/ing-bank/lion/blob/
|
|
82
|
-
- [Validation System](https://github.com/ing-bank/lion/blob/
|
|
79
|
+
- [Model Value](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/fundamentals/systems/form/model-value.md)
|
|
80
|
+
- [Formatting and parsing](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/fundamentals/systems/form/formatting-and-parsing.md)
|
|
81
|
+
- [Interaction states](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/fundamentals/systems/form/interaction-states.md)
|
|
82
|
+
- [Validation System](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/fundamentals/systems/form/validate.md)
|
|
@@ -57,7 +57,7 @@ Validation happens on every change of `modelValue`. A change in modelValue can b
|
|
|
57
57
|
|
|
58
58
|
## When validation feedback will be shown
|
|
59
59
|
|
|
60
|
-
Although validation happens realtime under the hood, displaying validity feedback in realtime may not always lead to the desired User Experience. Together with [interaction states](https://github.com/ing-bank/lion/blob/
|
|
60
|
+
Although validation happens realtime under the hood, displaying validity feedback in realtime may not always lead to the desired User Experience. Together with [interaction states](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/fundamentals/systems/form/interaction-states.md),
|
|
61
61
|
validity states can determine whether a validation message should be shown along the input field.
|
|
62
62
|
|
|
63
63
|
## Assessing field validation state programmatically
|
|
@@ -232,7 +232,7 @@ export const requiredValidator = () => html`
|
|
|
232
232
|
`;
|
|
233
233
|
```
|
|
234
234
|
|
|
235
|
-
The default `Required` validation message is "Please, enter a(n) {fieldName}". In which the "fieldName" can be provided separately via the `fieldName` attribute, with a fallback to the label. See [override fieldname](https://github.com/ing-bank/lion/blob/
|
|
235
|
+
The default `Required` validation message is "Please, enter a(n) {fieldName}". In which the "fieldName" can be provided separately via the `fieldName` attribute, with a fallback to the label. See [override fieldname](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/fundamentals/systems/form/#override-fieldname) for more information.
|
|
236
236
|
|
|
237
237
|
Specific required messages for a select and file-upload are created.
|
|
238
238
|
|
|
@@ -9,15 +9,15 @@ In it's simplest form it is a function that returns the translated text for a na
|
|
|
9
9
|
- Formatting of numbers, amounts
|
|
10
10
|
- Formatting of dates
|
|
11
11
|
|
|
12
|
-
Further examples and a more in depth description can be found at the [Use Cases Page](https://github.com/ing-bank/lion/blob/
|
|
12
|
+
Further examples and a more in depth description can be found at the [Use Cases Page](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/fundamentals/systems/localize/use-cases.md).
|
|
13
13
|
|
|
14
14
|
## Content
|
|
15
15
|
|
|
16
16
|
| Feature | Description |
|
|
17
17
|
| ---------------------------------------- | --------------------------------------------- |
|
|
18
|
-
| [Translate Text](https://github.com/ing-bank/lion/blob/
|
|
19
|
-
| [Format Numbers](https://github.com/ing-bank/lion/blob/
|
|
20
|
-
| [Format Dates](https://github.com/ing-bank/lion/blob/
|
|
18
|
+
| [Translate Text](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/fundamentals/systems/localize/text.md) | Load and translate text in multiple languages |
|
|
19
|
+
| [Format Numbers](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/fundamentals/systems/localize/numbers.md) | Format numbers in multiple languages |
|
|
20
|
+
| [Format Dates](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/fundamentals/systems/localize/dates.md) | Format dates in multiple languages |
|
|
21
21
|
|
|
22
22
|
## Installation
|
|
23
23
|
|
|
@@ -69,7 +69,7 @@ export const placementGlobal = () => {
|
|
|
69
69
|
|
|
70
70
|
## isTooltip (placementMode: 'local')
|
|
71
71
|
|
|
72
|
-
As specified in the [overlay rationale](https://github.com/ing-bank/lion/blob/
|
|
72
|
+
As specified in the [overlay rationale](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/fundamentals/systems/overlays/rationale.md) there are only two official types of overlays: dialogs and tooltips. And their main differences are:
|
|
73
73
|
|
|
74
74
|
- Dialogs have a modal option, tooltips don’t
|
|
75
75
|
- Dialogs have interactive content, tooltips don’t
|
|
@@ -400,7 +400,7 @@ Features:
|
|
|
400
400
|
|
|
401
401
|
> Popper strictly is scoped on positioning. **It does not change the dimensions of the content node nor the invoker node**.
|
|
402
402
|
> This also means that if you use the arrow feature, you are in charge of styling it properly, use the data-popper-placement attribute for this.
|
|
403
|
-
> An example implementation can be found in [lion-tooltip](https://github.com/ing-bank/lion/blob/
|
|
403
|
+
> An example implementation can be found in [lion-tooltip](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/components/tooltip/overview.md), where an arrow is set by default.
|
|
404
404
|
|
|
405
405
|
To override the default options we set for local mode, you add a `popperConfig` object to the config passed to the OverlayController.
|
|
406
406
|
Here's a succinct overview of some often used popper properties:
|
|
@@ -6,7 +6,7 @@ Manages their position on the screen relative to other elements, including other
|
|
|
6
6
|
|
|
7
7
|
Its purpose is to make it easy to use our Overlay System declaratively. It can be easily extended where needed, to override event listeners and more.
|
|
8
8
|
|
|
9
|
-
See [lion-dialog](../../../components/dialog/overview.md) and [lion-tooltip](https://github.com/ing-bank/lion/blob/
|
|
9
|
+
See [lion-dialog](../../../components/dialog/overview.md) and [lion-tooltip](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/components/tooltip/overview.md) for example Web Component implementations using the Overlay System.
|
|
10
10
|
|
|
11
11
|
## Features
|
|
12
12
|
|
|
@@ -18,9 +18,9 @@ See [lion-dialog](../../../components/dialog/overview.md) and [lion-tooltip](htt
|
|
|
18
18
|
- lion-overlay web component:
|
|
19
19
|
- Show content when clicking the invoker
|
|
20
20
|
- Have a `.config` object to set or update the OverlayController's configuration
|
|
21
|
-
- [**OverlaysManager**](https://github.com/ing-bank/lion/blob/
|
|
22
|
-
- [**OverlayController**](https://github.com/ing-bank/lion/blob/
|
|
23
|
-
- [**OverlayMixin**](https://github.com/ing-bank/lion/blob/
|
|
21
|
+
- [**OverlaysManager**](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/fundamentals/systems/overlays/use-cases.md#overlaysmanager), a global repository keeping track of all different types of overlays
|
|
22
|
+
- [**OverlayController**](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/fundamentals/systems/overlays/use-cases.md#overlaycontroller), a single controller class for handling overlays
|
|
23
|
+
- [**OverlayMixin**](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/fundamentals/systems/overlays/use-cases.md#overlaymixin), a mixin that can be used to create webcomponents that use the OverlayController under the hood
|
|
24
24
|
|
|
25
25
|
Usually you will use `lion-dialog` (or `lion-tooltip` if this makes more sense).
|
|
26
26
|
|
|
@@ -110,4 +110,4 @@ class MyOverlayComponent extends OverlayMixin(LitElement) {
|
|
|
110
110
|
|
|
111
111
|
## Rationales
|
|
112
112
|
|
|
113
|
-
Please check the [system rationals](https://github.com/ing-bank/lion/blob/
|
|
113
|
+
Please check the [system rationals](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/fundamentals/systems/overlays/rationale.md) folder, where we go more in-depth.
|
|
@@ -21,7 +21,7 @@ The overlay system allows to create different types of overlays like dialogs, to
|
|
|
21
21
|
It's designed to be highly flexible, while still delivering sensible defaults.
|
|
22
22
|
On top of this, the system was built having accessibility in mind.
|
|
23
23
|
|
|
24
|
-
For a detailed rationale, please consult [Rationale](https://github.com/ing-bank/lion/blob/
|
|
24
|
+
For a detailed rationale, please consult [Rationale](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/fundamentals/systems/overlays/rationale.md).
|
|
25
25
|
|
|
26
26
|
```js preview-story
|
|
27
27
|
export const main = () => html`
|
|
@@ -69,7 +69,7 @@ Global refers to overlays where the content is positioned in a global root node
|
|
|
69
69
|
|
|
70
70
|
Overlays can be configured in many ways to suit your needs. We go in-depth into each option in the Overlay System - Configuration chapter.
|
|
71
71
|
|
|
72
|
-
We also export a few [preset configuration objects](https://github.com/ing-bank/lion/blob/
|
|
72
|
+
We also export a few [preset configuration objects](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/fundamentals/systems/overlays/configuration.md).
|
|
73
73
|
|
|
74
74
|
- withModalDialogConfig
|
|
75
75
|
- withDropdownConfig
|
|
@@ -9,7 +9,7 @@ Therefore, they may not have the same quality standards as our other packages.
|
|
|
9
9
|
|
|
10
10
|
| Package | Description |
|
|
11
11
|
| -------------------------------------- | ----------------------- |
|
|
12
|
-
| [sb-action-logger](https://github.com/ing-bank/lion/blob/
|
|
12
|
+
| [sb-action-logger](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/fundamentals/tools/helpers/action-logger.md) | Storybook action logger |
|
|
13
13
|
|
|
14
14
|
## Installation
|
|
15
15
|
|
|
@@ -9,7 +9,7 @@ Primarily useful if two major version of a package with a singleton is used.
|
|
|
9
9
|
npm i --save singleton-manager
|
|
10
10
|
```
|
|
11
11
|
|
|
12
|
-
⚠️ You need to make SURE that only ONE version of `singleton-manager` is installed. For how see [Non Goals](https://github.com/ing-bank/lion/blob/
|
|
12
|
+
⚠️ You need to make SURE that only ONE version of `singleton-manager` is installed. For how see [Non Goals](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/fundamentals/tools/singleton-manager/#non-goals).
|
|
13
13
|
|
|
14
14
|
### Example Singleton Users
|
|
15
15
|
|
|
@@ -159,7 +159,7 @@ Steps to reproduce:
|
|
|
159
159
|
1. Page A click on block
|
|
160
160
|
2. Page B => "Blocked: false" (even when hitting the refresh button)
|
|
161
161
|
|
|
162
|
-
➡️ See [it on the example page](https://github.com/ing-bank/lion/blob/
|
|
162
|
+
➡️ See [it on the example page](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/fundamentals/tools/singleton-manager/example-fail/index.md). <br>
|
|
163
163
|
➡️ See [the code](https://github.com/ing-bank/lion/tree/master/docs/fundamentals/tools/singleton-manager/example-fail/demo-app.js).
|
|
164
164
|
|
|
165
165
|
---
|
|
@@ -202,7 +202,7 @@ See it in action
|
|
|
202
202
|
npm run start:singleton
|
|
203
203
|
```
|
|
204
204
|
|
|
205
|
-
➡️ See [it on the example page](https://github.com/ing-bank/lion/blob/
|
|
205
|
+
➡️ See [it on the example page](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/fundamentals/tools/singleton-manager/example-success/index.md). <br>
|
|
206
206
|
➡️ See [the code](https://github.com/ing-bank/lion/tree/master/docs/fundamentals/tools/singleton-manager/example-success/demo-app.js).
|
|
207
207
|
|
|
208
208
|
---
|
|
@@ -243,7 +243,7 @@ See it in action
|
|
|
243
243
|
npm run start:singleton-complex
|
|
244
244
|
```
|
|
245
245
|
|
|
246
|
-
➡️ See [it on the example page](https://github.com/ing-bank/lion/blob/
|
|
246
|
+
➡️ See [it on the example page](https://github.com/ing-bank/lion/blob/104c49449ebf5b60a1aa22a05e1a9ed8562bd6aa/docs/fundamentals/tools/singleton-manager/example-complex/index.md). <br>
|
|
247
247
|
➡️ See [the code](https://github.com/ing-bank/lion/tree/master/docs/fundamentals/tools/singleton-manager/example-complex/demo-app.js).
|
|
248
248
|
|
|
249
249
|
---
|