@lion/ui 0.0.11 → 0.0.13

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.
Files changed (160) hide show
  1. package/components/accordion/src/LionAccordion.js +22 -9
  2. package/components/accordion/test/lion-accordion.test.js +29 -32
  3. package/components/input-tel/translations/bg.js +3 -1
  4. package/components/input-tel/translations/cs.js +3 -1
  5. package/components/input-tel/translations/de.js +3 -1
  6. package/components/input-tel/translations/en.js +3 -1
  7. package/components/input-tel/translations/es.js +3 -1
  8. package/components/input-tel/translations/fr.js +3 -1
  9. package/components/input-tel/translations/hu.js +3 -1
  10. package/components/input-tel/translations/it.js +3 -1
  11. package/components/input-tel/translations/nl.js +3 -1
  12. package/components/input-tel/translations/pl.js +3 -1
  13. package/components/input-tel/translations/ro.js +3 -1
  14. package/components/input-tel/translations/ru.js +3 -1
  15. package/components/input-tel/translations/sk.js +3 -1
  16. package/components/input-tel/translations/uk.js +3 -1
  17. package/components/input-tel/translations/zh.js +3 -1
  18. package/components/input-tel-dropdown/src/LionInputTelDropdown.js +5 -5
  19. package/components/listbox/src/ListboxMixin.js +0 -4
  20. package/components/listbox/types/ListboxMixinTypes.ts +1 -4
  21. package/components/overlays/src/OverlayController.js +28 -34
  22. package/components/overlays/src/utils/adopt-styles.js +136 -0
  23. package/components/overlays/test/OverlayController.test.js +24 -55
  24. package/components/overlays/test/local-positioning.test.js +1 -1
  25. package/components/overlays/test/utils-tests/adopt-styles.test.js +177 -0
  26. package/components/overlays/test-helpers/createShadowHost.js +16 -0
  27. package/components/overlays/{test/utils-tests/local-positioning-helpers.js → test-helpers/normalizeTransformStyle.js} +0 -0
  28. package/components/select-rich/src/LionSelectRich.js +14 -6
  29. package/components/select-rich/test/lion-select-rich.test.js +25 -1
  30. package/components/tooltip/src/LionTooltip.js +16 -2
  31. package/components/tooltip/test/lion-tooltip.test.js +1 -2
  32. package/custom-elements.json +432 -183
  33. package/dist-types/components/accordion/src/LionAccordion.d.ts.map +1 -1
  34. package/dist-types/components/input-tel/translations/bg-BG.d.ts +3 -1
  35. package/dist-types/components/input-tel/translations/bg.d.ts +3 -1
  36. package/dist-types/components/input-tel/translations/cs-CZ.d.ts +3 -1
  37. package/dist-types/components/input-tel/translations/cs.d.ts +3 -1
  38. package/dist-types/components/input-tel/translations/de-DE.d.ts +3 -1
  39. package/dist-types/components/input-tel/translations/de.d.ts +3 -1
  40. package/dist-types/components/input-tel/translations/en-AU.d.ts +3 -1
  41. package/dist-types/components/input-tel/translations/en-GB.d.ts +3 -1
  42. package/dist-types/components/input-tel/translations/en-US.d.ts +3 -1
  43. package/dist-types/components/input-tel/translations/en.d.ts +3 -1
  44. package/dist-types/components/input-tel/translations/es-ES.d.ts +3 -1
  45. package/dist-types/components/input-tel/translations/es.d.ts +3 -1
  46. package/dist-types/components/input-tel/translations/fr-BE.d.ts +3 -1
  47. package/dist-types/components/input-tel/translations/fr-FR.d.ts +3 -1
  48. package/dist-types/components/input-tel/translations/fr.d.ts +3 -1
  49. package/dist-types/components/input-tel/translations/hu-HU.d.ts +3 -1
  50. package/dist-types/components/input-tel/translations/hu.d.ts +3 -1
  51. package/dist-types/components/input-tel/translations/it-IT.d.ts +3 -1
  52. package/dist-types/components/input-tel/translations/it.d.ts +3 -1
  53. package/dist-types/components/input-tel/translations/nl-BE.d.ts +3 -1
  54. package/dist-types/components/input-tel/translations/nl-NL.d.ts +3 -1
  55. package/dist-types/components/input-tel/translations/nl.d.ts +3 -1
  56. package/dist-types/components/input-tel/translations/pl-PL.d.ts +3 -1
  57. package/dist-types/components/input-tel/translations/pl.d.ts +3 -1
  58. package/dist-types/components/input-tel/translations/ro-RO.d.ts +3 -1
  59. package/dist-types/components/input-tel/translations/ro.d.ts +3 -1
  60. package/dist-types/components/input-tel/translations/ru-RU.d.ts +3 -1
  61. package/dist-types/components/input-tel/translations/ru.d.ts +3 -1
  62. package/dist-types/components/input-tel/translations/sk-SK.d.ts +3 -1
  63. package/dist-types/components/input-tel/translations/sk.d.ts +3 -1
  64. package/dist-types/components/input-tel/translations/uk-UA.d.ts +3 -1
  65. package/dist-types/components/input-tel/translations/uk.d.ts +3 -1
  66. package/dist-types/components/input-tel/translations/zh.d.ts +3 -1
  67. package/dist-types/components/listbox/src/ListboxMixin.d.ts.map +1 -1
  68. package/dist-types/components/listbox/types/ListboxMixinTypes.d.ts +1 -2
  69. package/dist-types/components/listbox/types/ListboxMixinTypes.d.ts.map +1 -1
  70. package/dist-types/components/overlays/src/OverlayController.d.ts +8 -5
  71. package/dist-types/components/overlays/src/OverlayController.d.ts.map +1 -1
  72. package/dist-types/components/overlays/src/utils/adopt-styles.d.ts +24 -0
  73. package/dist-types/components/overlays/src/utils/adopt-styles.d.ts.map +1 -0
  74. package/dist-types/components/overlays/test/OverlayController.test.d.ts.map +1 -1
  75. package/dist-types/components/overlays/test/utils-tests/adopt-styles.test.d.ts +2 -0
  76. package/dist-types/components/overlays/test/utils-tests/adopt-styles.test.d.ts.map +1 -0
  77. package/dist-types/components/overlays/test-helpers/createShadowHost.d.ts +8 -0
  78. package/dist-types/components/overlays/test-helpers/createShadowHost.d.ts.map +1 -0
  79. package/dist-types/components/overlays/{test/utils-tests/local-positioning-helpers.d.ts → test-helpers/normalizeTransformStyle.d.ts} +1 -1
  80. package/dist-types/components/overlays/test-helpers/normalizeTransformStyle.d.ts.map +1 -0
  81. package/dist-types/components/select-rich/src/LionSelectRich.d.ts +35 -3
  82. package/dist-types/components/select-rich/src/LionSelectRich.d.ts.map +1 -1
  83. package/dist-types/components/tooltip/src/LionTooltip.d.ts.map +1 -1
  84. package/dist-types/tsconfig.tsbuildinfo +1 -1
  85. package/docs/components/button/use-cases.md +2 -0
  86. package/docs/components/checkbox-group/overview.md +2 -2
  87. package/docs/components/collapsible/overview.md +1 -1
  88. package/docs/components/combobox/overview.md +1 -1
  89. package/docs/components/combobox/src/demo-selection-display.js +1 -1
  90. package/docs/components/combobox/use-cases.md +1 -1
  91. package/docs/components/dialog/overview.md +1 -1
  92. package/docs/components/dialog/src/demoStyle.js +18 -0
  93. package/docs/components/fieldset/overview.md +5 -5
  94. package/docs/components/form/overview.md +3 -3
  95. package/docs/components/icon/use-cases.md +1 -1
  96. package/docs/components/input/overview.md +1 -1
  97. package/docs/components/input-amount/overview.md +3 -3
  98. package/docs/components/input-date/overview.md +3 -3
  99. package/docs/components/input-datepicker/overview.md +5 -5
  100. package/docs/components/input-email/overview.md +2 -2
  101. package/docs/components/input-iban/overview.md +2 -2
  102. package/docs/components/input-range/overview.md +2 -2
  103. package/docs/components/input-stepper/overview.md +1 -1
  104. package/docs/components/input-tel/overview.md +1 -1
  105. package/docs/components/input-tel/use-cases.md +6 -6
  106. package/docs/components/input-tel-dropdown/overview.md +1 -1
  107. package/docs/components/radio-group/overview.md +3 -3
  108. package/docs/components/select-rich/use-cases.md +30 -24
  109. package/docs/components/tabs/examples.md +1 -1
  110. package/docs/fundamentals/index.md +4 -4
  111. package/docs/fundamentals/node-tools/providence-analytics/LocalConfiguration.md +1 -1
  112. package/docs/fundamentals/node-tools/providence-analytics/QueryResult.md +1 -1
  113. package/docs/fundamentals/node-tools/providence-analytics/analyzer.md +1 -1
  114. package/docs/fundamentals/node-tools/providence-analytics/dashboard.md +1 -1
  115. package/docs/fundamentals/node-tools/providence-analytics/overview.md +3 -3
  116. package/docs/fundamentals/node-tools/publish-docs/overview.md +3 -3
  117. package/docs/fundamentals/node-tools/rocket-preset-extend-lion-docs/overview.md +2 -2
  118. package/docs/fundamentals/systems/core/overview.md +1 -1
  119. package/docs/fundamentals/systems/form/formatting-and-parsing.md +4 -4
  120. package/docs/fundamentals/systems/form/model-value.md +1 -1
  121. package/docs/fundamentals/systems/form/overview.md +28 -28
  122. package/docs/fundamentals/systems/form/validate.md +1 -1
  123. package/docs/fundamentals/systems/localize/overview.md +4 -4
  124. package/docs/fundamentals/systems/overlays/assets/demo-el-using-overlaymixin.mjs +0 -16
  125. package/docs/fundamentals/systems/overlays/configuration.md +18 -32
  126. package/docs/fundamentals/systems/overlays/overview.md +5 -5
  127. package/docs/fundamentals/systems/overlays/use-cases.md +5 -5
  128. package/docs/fundamentals/tools/helpers/overview.md +1 -1
  129. package/docs/fundamentals/tools/singleton-manager/.gitignore +1 -0
  130. package/docs/fundamentals/tools/singleton-manager/example-complex/demo-app.js +93 -0
  131. package/docs/fundamentals/tools/singleton-manager/example-complex/node_modules/overlays/index.js +30 -0
  132. package/docs/fundamentals/tools/singleton-manager/example-complex/node_modules/overlays/instance.js +4 -0
  133. package/docs/fundamentals/tools/singleton-manager/example-complex/node_modules/page-a/page-a.js +35 -0
  134. package/docs/fundamentals/tools/singleton-manager/example-complex/node_modules/page-b/node_modules/overlays/index.js +30 -0
  135. package/docs/fundamentals/tools/singleton-manager/example-complex/node_modules/page-b/node_modules/overlays/instance.js +4 -0
  136. package/docs/fundamentals/tools/singleton-manager/example-complex/node_modules/page-b/page-b.js +49 -0
  137. package/docs/fundamentals/tools/singleton-manager/example-complex/overlayCompatibility.js +70 -0
  138. package/docs/fundamentals/tools/singleton-manager/example-fail/demo-app.js +91 -0
  139. package/docs/fundamentals/tools/singleton-manager/example-fail/node_modules/overlays/index.js +30 -0
  140. package/docs/fundamentals/tools/singleton-manager/example-fail/node_modules/overlays/instance.js +3 -0
  141. package/docs/fundamentals/tools/singleton-manager/example-fail/node_modules/page-a/page-a.js +34 -0
  142. package/docs/fundamentals/tools/singleton-manager/example-fail/node_modules/page-b/node_modules/overlays/index.js +30 -0
  143. package/docs/fundamentals/tools/singleton-manager/example-fail/node_modules/page-b/node_modules/overlays/instance.js +3 -0
  144. package/docs/fundamentals/tools/singleton-manager/example-fail/node_modules/page-b/page-b.js +34 -0
  145. package/docs/fundamentals/tools/singleton-manager/example-success/demo-app.js +93 -0
  146. package/docs/fundamentals/tools/singleton-manager/example-success/node_modules/overlays/index.js +30 -0
  147. package/docs/fundamentals/tools/singleton-manager/example-success/node_modules/overlays/instance.js +4 -0
  148. package/docs/fundamentals/tools/singleton-manager/example-success/node_modules/page-a/page-a.js +34 -0
  149. package/docs/fundamentals/tools/singleton-manager/example-success/node_modules/page-b/node_modules/overlays/index.js +30 -0
  150. package/docs/fundamentals/tools/singleton-manager/example-success/node_modules/page-b/node_modules/overlays/instance.js +4 -0
  151. package/docs/fundamentals/tools/singleton-manager/example-success/node_modules/page-b/page-b.js +34 -0
  152. package/docs/fundamentals/tools/singleton-manager/example-success/overlayCompatibility.js +23 -0
  153. package/docs/fundamentals/tools/singleton-manager/overview.md +4 -4
  154. package/docs/guides/how-to/create-a-custom-field.md +5 -5
  155. package/docs/guides/how-to/extend-a-native-input.md +2 -2
  156. package/docs/guides/index.md +8 -8
  157. package/docs/guides/principles/index.md +5 -5
  158. package/docs/guides/principles/styling.md +1 -1
  159. package/package.json +2 -2
  160. package/dist-types/components/overlays/test/utils-tests/local-positioning-helpers.d.ts.map +0 -1
@@ -0,0 +1,30 @@
1
+ export class OverlaysManager {
2
+ name = 'OverlayManager 2.x';
3
+
4
+ _blockBody = false;
5
+
6
+ constructor() {
7
+ this._setupBlocker();
8
+ }
9
+
10
+ _setupBlocker() {
11
+ const blocker = document.createElement('div');
12
+ blocker.setAttribute('style', 'border: 2px solid #8d0606; margin: 10px; padding: 10px; width: 140px; text-align: center;');
13
+ blocker.innerText = `Blocker for ${this.name}`;
14
+
15
+ const target = document.getElementById('overlay-target');
16
+ target.appendChild(blocker);
17
+
18
+ this.blocker = blocker;
19
+ }
20
+
21
+ blockBody() {
22
+ this._blockBody = true;
23
+ this.blocker.style.backgroundColor = '#ff6161';
24
+ }
25
+
26
+ unBlockBody() {
27
+ this._blockBody = false;
28
+ this.blocker.style.backgroundColor = 'transparent';
29
+ }
30
+ }
@@ -0,0 +1,4 @@
1
+ import { OverlaysManager } from './index.js';
2
+ import { singletonManager } from 'singleton-manager';
3
+
4
+ export const overlays = singletonManager.get('overlays::overlays::2.x') || new OverlaysManager();
@@ -0,0 +1,49 @@
1
+ import { LitElement, html, css } from 'lit-element';
2
+ import { overlays } from 'overlays/instance.js';
3
+
4
+ export class PageB extends LitElement {
5
+ getInstance(sym, fallback) {
6
+ const ev = new CustomEvent('request-instance', {
7
+ detail: { key: sym },
8
+ bubbles: true,
9
+ cancelable: true,
10
+ composed: true,
11
+ });
12
+ this.dispatchEvent(ev);
13
+ return ev.detail.instance || fallback();
14
+ }
15
+
16
+ connectedCallback() {
17
+ super.connectedCallback();
18
+ }
19
+
20
+ static get styles() {
21
+ return css`
22
+ :host {
23
+ display: block;
24
+ padding: 10px;
25
+ border: 2px solid #ccc;
26
+ }
27
+ `;
28
+ }
29
+
30
+ render() {
31
+ return html`
32
+ <h3>I am page B</h3>
33
+ <p>Overlays Status:</p>
34
+ <p>Name: ${overlays.name}</p>
35
+ <p>Blocked: ${overlays._blockBody}</p>
36
+ <button @click=${() => {
37
+ overlays.blockBody(); this.requestUpdate();
38
+ }}>block</button>
39
+ <button @click=${() => {
40
+ overlays.unBlockBody(); this.requestUpdate();
41
+ }}>un-block</button>
42
+ <button @click=${() => {
43
+ this.requestUpdate();
44
+ }}>refresh</button>
45
+ `;
46
+ }
47
+ }
48
+
49
+ customElements.define('page-b', PageB);
@@ -0,0 +1,70 @@
1
+ import { OverlaysManager } from 'overlays';
2
+ import { singletonManager } from 'singleton-manager';
3
+ import { OverlaysManager as OverlaysManager2 } from './node_modules/page-b/node_modules/overlays/index.js';
4
+
5
+ let compatibleManager1;
6
+ let compatibleManager2;
7
+
8
+ const blocker = document.createElement('div');
9
+ blocker.setAttribute(
10
+ 'style',
11
+ 'border: 2px solid #8d0606; margin: 10px; padding: 10px; width: 140px; text-align: center;',
12
+ );
13
+ blocker.innerText = `Shared Blocker for App`;
14
+ document.body.appendChild(blocker);
15
+
16
+ class CompatibleManager1 extends OverlaysManager {
17
+ constructor() {
18
+ super();
19
+ this.name = 'Compatible1 from App';
20
+ }
21
+
22
+ block(sync = true) {
23
+ super.block();
24
+ if (sync) {
25
+ compatibleManager2.blockBody(false);
26
+ }
27
+ }
28
+
29
+ unBlock(sync = true) {
30
+ super.unBlock();
31
+ if (sync) {
32
+ compatibleManager2.unBlockBody(false);
33
+ }
34
+ }
35
+
36
+ _setupBlocker() {
37
+ this.blocker = blocker;
38
+ }
39
+ }
40
+
41
+ class CompatibleManager2 extends OverlaysManager2 {
42
+ constructor() {
43
+ super();
44
+ this.name = 'Compatible2 from App';
45
+ }
46
+
47
+ blockBody(sync = true) {
48
+ super.blockBody();
49
+ if (sync) {
50
+ compatibleManager1.block();
51
+ }
52
+ }
53
+
54
+ unBlockBody(sync = true) {
55
+ super.unBlockBody();
56
+ if (sync) {
57
+ compatibleManager1.unBlock();
58
+ }
59
+ }
60
+
61
+ _setupBlocker() {
62
+ this.blocker = blocker;
63
+ }
64
+ }
65
+
66
+ compatibleManager1 = new CompatibleManager1();
67
+ compatibleManager2 = new CompatibleManager2();
68
+
69
+ singletonManager.set('overlays::overlays::1.x', compatibleManager1);
70
+ singletonManager.set('overlays::overlays::2.x', compatibleManager2);
@@ -0,0 +1,91 @@
1
+ import { LitElement, css, html } from 'lit';
2
+
3
+ import 'page-a/page-a.js';
4
+ import 'page-b/page-b.js';
5
+
6
+ class DemoApp extends LitElement {
7
+ constructor() {
8
+ super();
9
+ this.page = 'A';
10
+ }
11
+
12
+ static get properties() {
13
+ return {
14
+ page: { type: String },
15
+ };
16
+ }
17
+
18
+ static get styles() {
19
+ return css`
20
+ :host {
21
+ display: block;
22
+ max-width: 680px;
23
+ margin: 0 auto;
24
+ }
25
+
26
+ nav {
27
+ padding: 0 10px 10px 10px;
28
+ }
29
+
30
+ button {
31
+ border: none;
32
+ padding: 1rem 2rem;
33
+ background: #0069ed;
34
+ color: #fff;
35
+ font-size: 1rem;
36
+ cursor: pointer;
37
+ text-align: center;
38
+ transition: background 250ms ease-in-out, transform 150ms ease;
39
+ }
40
+
41
+ button:hover,
42
+ button:focus {
43
+ background: #0053ba;
44
+ }
45
+
46
+ button:focus {
47
+ outline: 1px solid #fff;
48
+ outline-offset: -4px;
49
+ }
50
+
51
+ button:active {
52
+ transform: scale(0.99);
53
+ }
54
+
55
+ button.active {
56
+ background: #33a43f;
57
+ }
58
+
59
+ h1 {
60
+ text-align: center;
61
+ }
62
+ `;
63
+ }
64
+
65
+ render() {
66
+ return html`
67
+ <h1>Demo App</h1>
68
+ <nav>
69
+ <button
70
+ class=${this.page === 'A' ? 'active' : ''}
71
+ @click=${() => {
72
+ this.page = 'A';
73
+ }}
74
+ >
75
+ Page A
76
+ </button>
77
+ <button
78
+ class=${this.page === 'B' ? 'active' : ''}
79
+ @click=${() => {
80
+ this.page = 'B';
81
+ }}
82
+ >
83
+ Page B
84
+ </button>
85
+ </nav>
86
+ ${this.page === 'A' ? html` <page-a></page-a> ` : html` <page-b></page-b> `}
87
+ `;
88
+ }
89
+ }
90
+
91
+ customElements.define('demo-app', DemoApp);
@@ -0,0 +1,30 @@
1
+ export class OverlaysManager {
2
+ name = 'OverlayManager 1.x';
3
+
4
+ blockBody = false;
5
+
6
+ constructor() {
7
+ this._setupBlocker();
8
+ }
9
+
10
+ _setupBlocker() {
11
+ const blocker = document.createElement('div');
12
+ blocker.setAttribute('style', 'border: 2px solid #8d0606; margin: 10px; padding: 10px; width: 180px; text-align: center;');
13
+ blocker.innerText = `Blocker for ${this.name}`;
14
+
15
+ const target = document.getElementById('overlay-target');
16
+ target.appendChild(blocker);
17
+
18
+ this.blocker = blocker;
19
+ }
20
+
21
+ block() {
22
+ this.blockBody = true;
23
+ this.blocker.style.backgroundColor = '#ff6161';
24
+ }
25
+
26
+ unBlock() {
27
+ this.blockBody = false;
28
+ this.blocker.style.backgroundColor = 'transparent';
29
+ }
30
+ }
@@ -0,0 +1,3 @@
1
+ import { OverlaysManager } from './index.js';
2
+
3
+ export const overlays = new OverlaysManager();
@@ -0,0 +1,34 @@
1
+ import { LitElement, html, css } from 'lit-element';
2
+ import { overlays } from 'overlays/instance.js';
3
+
4
+ export class PageA extends LitElement {
5
+ static get styles() {
6
+ return css`
7
+ :host {
8
+ display: block;
9
+ padding: 10px;
10
+ border: 2px solid #ccc;
11
+ }
12
+ `;
13
+ }
14
+
15
+ render() {
16
+ return html`
17
+ <h3>I am page A</h3>
18
+ <p>Overlays Status:</p>
19
+ <p>Name: ${overlays.name}</p>
20
+ <p>Blocked: ${overlays.blockBody}</p>
21
+ <button @click=${() => {
22
+ overlays.block(); this.requestUpdate();
23
+ }}>block</button>
24
+ <button @click=${() => {
25
+ overlays.unBlock(); this.requestUpdate();
26
+ }}>un-block</button>
27
+ <button @click=${() => {
28
+ this.requestUpdate();
29
+ }}>refresh</button>
30
+ `;
31
+ }
32
+ }
33
+
34
+ customElements.define('page-a', PageA);
@@ -0,0 +1,30 @@
1
+ export class OverlaysManager {
2
+ name = 'OverlayManager 2.x';
3
+
4
+ _blockBody = false;
5
+
6
+ constructor() {
7
+ this._setupBlocker();
8
+ }
9
+
10
+ _setupBlocker() {
11
+ const blocker = document.createElement('div');
12
+ blocker.setAttribute('style', 'border: 2px solid #8d0606; margin: 10px; padding: 10px; width: 180px; text-align: center;');
13
+ blocker.innerText = `Blocker for ${this.name}`;
14
+
15
+ const target = document.getElementById('overlay-target');
16
+ target.appendChild(blocker);
17
+
18
+ this.blocker = blocker;
19
+ }
20
+
21
+ blockBody() {
22
+ this._blockBody = true;
23
+ this.blocker.style.backgroundColor = '#ff6161';
24
+ }
25
+
26
+ unBlockBody() {
27
+ this._blockBody = false;
28
+ this.blocker.style.backgroundColor = 'transparent';
29
+ }
30
+ }
@@ -0,0 +1,3 @@
1
+ import { OverlaysManager } from './index.js';
2
+
3
+ export const overlays = new OverlaysManager();
@@ -0,0 +1,34 @@
1
+ import { LitElement, html, css } from 'lit-element';
2
+ import { overlays } from 'overlays/instance.js';
3
+
4
+ export class PageB extends LitElement {
5
+ static get styles() {
6
+ return css`
7
+ :host {
8
+ display: block;
9
+ padding: 10px;
10
+ border: 2px solid #ccc;
11
+ }
12
+ `;
13
+ }
14
+
15
+ render() {
16
+ return html`
17
+ <h3>I am page B</h3>
18
+ <p>Overlays Status:</p>
19
+ <p>Name: ${overlays.name}</p>
20
+ <p>Blocked: ${overlays._blockBody}</p>
21
+ <button @click=${() => {
22
+ overlays.blockBody(); this.requestUpdate();
23
+ }}>block</button>
24
+ <button @click=${() => {
25
+ overlays.unBlockBody(); this.requestUpdate();
26
+ }}>un-block</button>
27
+ <button @click=${() => {
28
+ this.requestUpdate();
29
+ }}>refresh</button>
30
+ `;
31
+ }
32
+ }
33
+
34
+ customElements.define('page-b', PageB);
@@ -0,0 +1,93 @@
1
+ import { LitElement, css, html } from 'lit';
2
+
3
+ import './overlayCompatibility.js';
4
+
5
+ import 'page-a/page-a.js';
6
+ import 'page-b/page-b.js';
7
+
8
+ class DemoApp extends LitElement {
9
+ constructor() {
10
+ super();
11
+ this.page = 'A';
12
+ }
13
+
14
+ static get properties() {
15
+ return {
16
+ page: { type: String },
17
+ };
18
+ }
19
+
20
+ static get styles() {
21
+ return css`
22
+ :host {
23
+ display: block;
24
+ max-width: 680px;
25
+ margin: 0 auto;
26
+ }
27
+
28
+ nav {
29
+ padding: 0 10px 10px 10px;
30
+ }
31
+
32
+ button {
33
+ border: none;
34
+ padding: 1rem 2rem;
35
+ background: #0069ed;
36
+ color: #fff;
37
+ font-size: 1rem;
38
+ cursor: pointer;
39
+ text-align: center;
40
+ transition: background 250ms ease-in-out, transform 150ms ease;
41
+ }
42
+
43
+ button:hover,
44
+ button:focus {
45
+ background: #0053ba;
46
+ }
47
+
48
+ button:focus {
49
+ outline: 1px solid #fff;
50
+ outline-offset: -4px;
51
+ }
52
+
53
+ button:active {
54
+ transform: scale(0.99);
55
+ }
56
+
57
+ button.active {
58
+ background: #33a43f;
59
+ }
60
+
61
+ h1 {
62
+ text-align: center;
63
+ }
64
+ `;
65
+ }
66
+
67
+ render() {
68
+ return html`
69
+ <h1>Demo App</h1>
70
+ <nav>
71
+ <button
72
+ class=${this.page === 'A' ? 'active' : ''}
73
+ @click=${() => {
74
+ this.page = 'A';
75
+ }}
76
+ >
77
+ Page A
78
+ </button>
79
+ <button
80
+ class=${this.page === 'B' ? 'active' : ''}
81
+ @click=${() => {
82
+ this.page = 'B';
83
+ }}
84
+ >
85
+ Page B
86
+ </button>
87
+ </nav>
88
+ ${this.page === 'A' ? html` <page-a></page-a> ` : html` <page-b></page-b> `}
89
+ `;
90
+ }
91
+ }
92
+
93
+ customElements.define('demo-app', DemoApp);
@@ -0,0 +1,30 @@
1
+ export class OverlaysManager {
2
+ name = 'OverlayManager 1.x';
3
+
4
+ blockBody = false;
5
+
6
+ constructor() {
7
+ this._setupBlocker();
8
+ }
9
+
10
+ _setupBlocker() {
11
+ const blocker = document.createElement('div');
12
+ blocker.setAttribute('style', 'border: 2px solid #8d0606; margin: 10px; padding: 10px; width: 140px; text-align: center;');
13
+ blocker.innerText = `Blocker for ${this.name}`;
14
+
15
+ const target = document.getElementById('overlay-target');
16
+ target.appendChild(blocker);
17
+
18
+ this.blocker = blocker;
19
+ }
20
+
21
+ block() {
22
+ this.blockBody = true;
23
+ this.blocker.style.backgroundColor = '#ff6161';
24
+ }
25
+
26
+ unBlock() {
27
+ this.blockBody = false;
28
+ this.blocker.style.backgroundColor = 'transparent';
29
+ }
30
+ }
@@ -0,0 +1,4 @@
1
+ import { OverlaysManager } from './index.js';
2
+ import { singletonManager } from 'singleton-manager';
3
+
4
+ export const overlays = singletonManager.get('overlays::overlays::1.x') || new OverlaysManager();
@@ -0,0 +1,34 @@
1
+ import { LitElement, html, css } from 'lit-element';
2
+ import { overlays } from 'overlays/instance.js';
3
+
4
+ export class PageA extends LitElement {
5
+ static get styles() {
6
+ return css`
7
+ :host {
8
+ display: block;
9
+ padding: 10px;
10
+ border: 2px solid #ccc;
11
+ }
12
+ `;
13
+ }
14
+
15
+ render() {
16
+ return html`
17
+ <h3>I am page A</h3>
18
+ <p>Overlays Status:</p>
19
+ <p>Name: ${overlays.name}</p>
20
+ <p>Blocked: ${overlays.blockBody}</p>
21
+ <button @click=${() => {
22
+ overlays.block(); this.requestUpdate();
23
+ }}>block</button>
24
+ <button @click=${() => {
25
+ overlays.unBlock(); this.requestUpdate();
26
+ }}>un-block</button>
27
+ <button @click=${() => {
28
+ this.requestUpdate();
29
+ }}>refresh</button>
30
+ `;
31
+ }
32
+ }
33
+
34
+ customElements.define('page-a', PageA);
@@ -0,0 +1,30 @@
1
+ export class OverlaysManager {
2
+ name = 'OverlayManager 2.x';
3
+
4
+ blockBody = false;
5
+
6
+ constructor() {
7
+ this._setupBlocker();
8
+ }
9
+
10
+ _setupBlocker() {
11
+ const blocker = document.createElement('div');
12
+ blocker.setAttribute('style', 'border: 2px solid #8d0606; margin: 10px; padding: 10px; width: 140px; text-align: center;');
13
+ blocker.innerText = `Blocker for ${this.name}`;
14
+
15
+ const target = document.getElementById('overlay-target');
16
+ target.appendChild(blocker);
17
+
18
+ this.blocker = blocker;
19
+ }
20
+
21
+ blockingBody() {
22
+ this.blockBody = true;
23
+ this.blocker.style.backgroundColor = '#ff6161';
24
+ }
25
+
26
+ unBlockingBody() {
27
+ this.blockBody = false;
28
+ this.blocker.style.backgroundColor = 'transparent';
29
+ }
30
+ }
@@ -0,0 +1,4 @@
1
+ import { OverlaysManager } from './index.js';
2
+ import { singletonManager } from 'singleton-manager';
3
+
4
+ export const overlays = singletonManager.get('overlays::overlays::2.x') || new OverlaysManager();
@@ -0,0 +1,34 @@
1
+ import { LitElement, html, css } from 'lit-element';
2
+ import { overlays } from 'overlays/instance.js';
3
+
4
+ export class PageB extends LitElement {
5
+ static get styles() {
6
+ return css`
7
+ :host {
8
+ display: block;
9
+ padding: 10px;
10
+ border: 2px solid #ccc;
11
+ }
12
+ `;
13
+ }
14
+
15
+ render() {
16
+ return html`
17
+ <h3>I am page B</h3>
18
+ <p>Overlays Status:</p>
19
+ <p>Name: ${overlays.name}</p>
20
+ <p>Blocked: ${overlays.blockBody}</p>
21
+ <button @click=${() => {
22
+ overlays.blockingBody(); this.requestUpdate();
23
+ }}>block</button>
24
+ <button @click=${() => {
25
+ overlays.unBlockingBody(); this.requestUpdate();
26
+ }}>un-block</button>
27
+ <button @click=${() => {
28
+ this.requestUpdate();
29
+ }}>refresh</button>
30
+ `;
31
+ }
32
+ }
33
+
34
+ customElements.define('page-b', PageB);
@@ -0,0 +1,23 @@
1
+ import { OverlaysManager } from 'overlays';
2
+ import { singletonManager } from 'singleton-manager';
3
+
4
+ class CompatibleManager extends OverlaysManager {
5
+ constructor() {
6
+ super();
7
+ this.name = 'Compatible from App';
8
+ this.blocker.innerText = `Blocker for ${this.name}`;
9
+ }
10
+
11
+ blockingBody() {
12
+ this.block();
13
+ }
14
+
15
+ unBlockingBody() {
16
+ this.unBlock();
17
+ }
18
+ }
19
+
20
+ const compatibleManager = new CompatibleManager();
21
+
22
+ singletonManager.set('overlays::overlays::1.x', compatibleManager);
23
+ singletonManager.set('overlays::overlays::2.x', compatibleManager);
@@ -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/ab906fc13bf192b10758b8b9e868c8b404e16958/docs/fundamentals/tools/singleton-manager/#non-goals).
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/2c104e9b2b56458f1eb75d2d8ee8c3aadfef1af3/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/ab906fc13bf192b10758b8b9e868c8b404e16958/docs/fundamentals/tools/singleton-manager/example-fail/index.md). <br>
162
+ ➡️ See [it on the example page](https://github.com/ing-bank/lion/blob/2c104e9b2b56458f1eb75d2d8ee8c3aadfef1af3/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/ab906fc13bf192b10758b8b9e868c8b404e16958/docs/fundamentals/tools/singleton-manager/example-success/index.md). <br>
205
+ ➡️ See [it on the example page](https://github.com/ing-bank/lion/blob/2c104e9b2b56458f1eb75d2d8ee8c3aadfef1af3/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/ab906fc13bf192b10758b8b9e868c8b404e16958/docs/fundamentals/tools/singleton-manager/example-complex/index.md). <br>
246
+ ➡️ See [it on the example page](https://github.com/ing-bank/lion/blob/2c104e9b2b56458f1eb75d2d8ee8c3aadfef1af3/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
  ---