@lion/ui 0.0.12 → 0.0.14

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 (162) 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/icon/src/LionIcon.js +11 -4
  4. package/components/input-tel/translations/bg.js +3 -1
  5. package/components/input-tel/translations/cs.js +3 -1
  6. package/components/input-tel/translations/de.js +3 -1
  7. package/components/input-tel/translations/en.js +3 -1
  8. package/components/input-tel/translations/es.js +3 -1
  9. package/components/input-tel/translations/fr.js +3 -1
  10. package/components/input-tel/translations/hu.js +3 -1
  11. package/components/input-tel/translations/it.js +3 -1
  12. package/components/input-tel/translations/nl.js +3 -1
  13. package/components/input-tel/translations/pl.js +3 -1
  14. package/components/input-tel/translations/ro.js +3 -1
  15. package/components/input-tel/translations/ru.js +3 -1
  16. package/components/input-tel/translations/sk.js +3 -1
  17. package/components/input-tel/translations/uk.js +3 -1
  18. package/components/input-tel/translations/zh.js +3 -1
  19. package/components/input-tel-dropdown/src/LionInputTelDropdown.js +5 -5
  20. package/components/listbox/src/ListboxMixin.js +0 -4
  21. package/components/listbox/types/ListboxMixinTypes.ts +1 -4
  22. package/components/localize/src/LocalizeMixin.js +4 -3
  23. package/components/overlays/src/OverlayController.js +14 -25
  24. package/components/overlays/src/utils/adopt-styles.js +136 -0
  25. package/components/overlays/test/OverlayController.test.js +8 -55
  26. package/components/overlays/test/local-positioning.test.js +1 -1
  27. package/components/overlays/test/utils-tests/adopt-styles.test.js +177 -0
  28. package/components/overlays/test-helpers/createShadowHost.js +16 -0
  29. package/components/overlays/{test/utils-tests/local-positioning-helpers.js → test-helpers/normalizeTransformStyle.js} +0 -0
  30. package/components/select-rich/src/LionSelectRich.js +12 -6
  31. package/components/select-rich/test/lion-select-rich.test.js +25 -1
  32. package/custom-elements.json +418 -113
  33. package/dist-types/components/accordion/src/LionAccordion.d.ts.map +1 -1
  34. package/dist-types/components/icon/src/LionIcon.d.ts.map +1 -1
  35. package/dist-types/components/input-tel/translations/bg-BG.d.ts +3 -1
  36. package/dist-types/components/input-tel/translations/bg.d.ts +3 -1
  37. package/dist-types/components/input-tel/translations/cs-CZ.d.ts +3 -1
  38. package/dist-types/components/input-tel/translations/cs.d.ts +3 -1
  39. package/dist-types/components/input-tel/translations/de-DE.d.ts +3 -1
  40. package/dist-types/components/input-tel/translations/de.d.ts +3 -1
  41. package/dist-types/components/input-tel/translations/en-AU.d.ts +3 -1
  42. package/dist-types/components/input-tel/translations/en-GB.d.ts +3 -1
  43. package/dist-types/components/input-tel/translations/en-US.d.ts +3 -1
  44. package/dist-types/components/input-tel/translations/en.d.ts +3 -1
  45. package/dist-types/components/input-tel/translations/es-ES.d.ts +3 -1
  46. package/dist-types/components/input-tel/translations/es.d.ts +3 -1
  47. package/dist-types/components/input-tel/translations/fr-BE.d.ts +3 -1
  48. package/dist-types/components/input-tel/translations/fr-FR.d.ts +3 -1
  49. package/dist-types/components/input-tel/translations/fr.d.ts +3 -1
  50. package/dist-types/components/input-tel/translations/hu-HU.d.ts +3 -1
  51. package/dist-types/components/input-tel/translations/hu.d.ts +3 -1
  52. package/dist-types/components/input-tel/translations/it-IT.d.ts +3 -1
  53. package/dist-types/components/input-tel/translations/it.d.ts +3 -1
  54. package/dist-types/components/input-tel/translations/nl-BE.d.ts +3 -1
  55. package/dist-types/components/input-tel/translations/nl-NL.d.ts +3 -1
  56. package/dist-types/components/input-tel/translations/nl.d.ts +3 -1
  57. package/dist-types/components/input-tel/translations/pl-PL.d.ts +3 -1
  58. package/dist-types/components/input-tel/translations/pl.d.ts +3 -1
  59. package/dist-types/components/input-tel/translations/ro-RO.d.ts +3 -1
  60. package/dist-types/components/input-tel/translations/ro.d.ts +3 -1
  61. package/dist-types/components/input-tel/translations/ru-RU.d.ts +3 -1
  62. package/dist-types/components/input-tel/translations/ru.d.ts +3 -1
  63. package/dist-types/components/input-tel/translations/sk-SK.d.ts +3 -1
  64. package/dist-types/components/input-tel/translations/sk.d.ts +3 -1
  65. package/dist-types/components/input-tel/translations/uk-UA.d.ts +3 -1
  66. package/dist-types/components/input-tel/translations/uk.d.ts +3 -1
  67. package/dist-types/components/input-tel/translations/zh.d.ts +3 -1
  68. package/dist-types/components/listbox/src/ListboxMixin.d.ts.map +1 -1
  69. package/dist-types/components/listbox/types/ListboxMixinTypes.d.ts +1 -2
  70. package/dist-types/components/listbox/types/ListboxMixinTypes.d.ts.map +1 -1
  71. package/dist-types/components/localize/src/LocalizeMixin.d.ts +1 -0
  72. package/dist-types/components/localize/src/LocalizeMixin.d.ts.map +1 -1
  73. package/dist-types/components/overlays/src/OverlayController.d.ts +5 -1
  74. package/dist-types/components/overlays/src/OverlayController.d.ts.map +1 -1
  75. package/dist-types/components/overlays/src/utils/adopt-styles.d.ts +24 -0
  76. package/dist-types/components/overlays/src/utils/adopt-styles.d.ts.map +1 -0
  77. package/dist-types/components/overlays/test/OverlayController.test.d.ts.map +1 -1
  78. package/dist-types/components/overlays/test/utils-tests/adopt-styles.test.d.ts +2 -0
  79. package/dist-types/components/overlays/test/utils-tests/adopt-styles.test.d.ts.map +1 -0
  80. package/dist-types/components/overlays/test-helpers/createShadowHost.d.ts +8 -0
  81. package/dist-types/components/overlays/test-helpers/createShadowHost.d.ts.map +1 -0
  82. package/dist-types/components/overlays/{test/utils-tests/local-positioning-helpers.d.ts → test-helpers/normalizeTransformStyle.d.ts} +1 -1
  83. package/dist-types/components/overlays/test-helpers/normalizeTransformStyle.d.ts.map +1 -0
  84. package/dist-types/components/select-rich/src/LionSelectRich.d.ts +8 -8
  85. package/dist-types/components/select-rich/src/LionSelectRich.d.ts.map +1 -1
  86. package/dist-types/tsconfig.tsbuildinfo +1 -1
  87. package/docs/components/button/use-cases.md +2 -0
  88. package/docs/components/checkbox-group/overview.md +2 -2
  89. package/docs/components/collapsible/overview.md +1 -1
  90. package/docs/components/combobox/overview.md +1 -1
  91. package/docs/components/combobox/src/demo-selection-display.js +1 -1
  92. package/docs/components/combobox/use-cases.md +1 -1
  93. package/docs/components/dialog/overview.md +1 -1
  94. package/docs/components/dialog/src/demoStyle.js +18 -0
  95. package/docs/components/fieldset/overview.md +5 -5
  96. package/docs/components/form/overview.md +3 -3
  97. package/docs/components/icon/use-cases.md +1 -1
  98. package/docs/components/input/overview.md +1 -1
  99. package/docs/components/input-amount/overview.md +3 -3
  100. package/docs/components/input-date/overview.md +3 -3
  101. package/docs/components/input-datepicker/overview.md +5 -5
  102. package/docs/components/input-email/overview.md +2 -2
  103. package/docs/components/input-iban/overview.md +2 -2
  104. package/docs/components/input-range/overview.md +2 -2
  105. package/docs/components/input-stepper/overview.md +1 -1
  106. package/docs/components/input-tel/overview.md +1 -1
  107. package/docs/components/input-tel/use-cases.md +6 -6
  108. package/docs/components/input-tel-dropdown/overview.md +1 -1
  109. package/docs/components/radio-group/overview.md +3 -3
  110. package/docs/components/select-rich/use-cases.md +30 -24
  111. package/docs/components/tabs/examples.md +1 -1
  112. package/docs/fundamentals/index.md +4 -4
  113. package/docs/fundamentals/node-tools/providence-analytics/LocalConfiguration.md +1 -1
  114. package/docs/fundamentals/node-tools/providence-analytics/QueryResult.md +1 -1
  115. package/docs/fundamentals/node-tools/providence-analytics/analyzer.md +1 -1
  116. package/docs/fundamentals/node-tools/providence-analytics/dashboard.md +1 -1
  117. package/docs/fundamentals/node-tools/providence-analytics/overview.md +3 -3
  118. package/docs/fundamentals/node-tools/publish-docs/overview.md +3 -3
  119. package/docs/fundamentals/node-tools/rocket-preset-extend-lion-docs/overview.md +2 -2
  120. package/docs/fundamentals/systems/core/overview.md +1 -1
  121. package/docs/fundamentals/systems/form/formatting-and-parsing.md +4 -4
  122. package/docs/fundamentals/systems/form/model-value.md +1 -1
  123. package/docs/fundamentals/systems/form/overview.md +28 -28
  124. package/docs/fundamentals/systems/form/validate.md +1 -1
  125. package/docs/fundamentals/systems/localize/overview.md +4 -4
  126. package/docs/fundamentals/systems/overlays/assets/demo-el-using-overlaymixin.mjs +0 -16
  127. package/docs/fundamentals/systems/overlays/configuration.md +13 -25
  128. package/docs/fundamentals/systems/overlays/overview.md +5 -5
  129. package/docs/fundamentals/systems/overlays/use-cases.md +5 -5
  130. package/docs/fundamentals/tools/helpers/overview.md +1 -1
  131. package/docs/fundamentals/tools/singleton-manager/.gitignore +1 -0
  132. package/docs/fundamentals/tools/singleton-manager/example-complex/demo-app.js +93 -0
  133. package/docs/fundamentals/tools/singleton-manager/example-complex/node_modules/overlays/index.js +30 -0
  134. package/docs/fundamentals/tools/singleton-manager/example-complex/node_modules/overlays/instance.js +4 -0
  135. package/docs/fundamentals/tools/singleton-manager/example-complex/node_modules/page-a/page-a.js +35 -0
  136. package/docs/fundamentals/tools/singleton-manager/example-complex/node_modules/page-b/node_modules/overlays/index.js +30 -0
  137. package/docs/fundamentals/tools/singleton-manager/example-complex/node_modules/page-b/node_modules/overlays/instance.js +4 -0
  138. package/docs/fundamentals/tools/singleton-manager/example-complex/node_modules/page-b/page-b.js +49 -0
  139. package/docs/fundamentals/tools/singleton-manager/example-complex/overlayCompatibility.js +70 -0
  140. package/docs/fundamentals/tools/singleton-manager/example-fail/demo-app.js +91 -0
  141. package/docs/fundamentals/tools/singleton-manager/example-fail/node_modules/overlays/index.js +30 -0
  142. package/docs/fundamentals/tools/singleton-manager/example-fail/node_modules/overlays/instance.js +3 -0
  143. package/docs/fundamentals/tools/singleton-manager/example-fail/node_modules/page-a/page-a.js +34 -0
  144. package/docs/fundamentals/tools/singleton-manager/example-fail/node_modules/page-b/node_modules/overlays/index.js +30 -0
  145. package/docs/fundamentals/tools/singleton-manager/example-fail/node_modules/page-b/node_modules/overlays/instance.js +3 -0
  146. package/docs/fundamentals/tools/singleton-manager/example-fail/node_modules/page-b/page-b.js +34 -0
  147. package/docs/fundamentals/tools/singleton-manager/example-success/demo-app.js +93 -0
  148. package/docs/fundamentals/tools/singleton-manager/example-success/node_modules/overlays/index.js +30 -0
  149. package/docs/fundamentals/tools/singleton-manager/example-success/node_modules/overlays/instance.js +4 -0
  150. package/docs/fundamentals/tools/singleton-manager/example-success/node_modules/page-a/page-a.js +34 -0
  151. package/docs/fundamentals/tools/singleton-manager/example-success/node_modules/page-b/node_modules/overlays/index.js +30 -0
  152. package/docs/fundamentals/tools/singleton-manager/example-success/node_modules/page-b/node_modules/overlays/instance.js +4 -0
  153. package/docs/fundamentals/tools/singleton-manager/example-success/node_modules/page-b/page-b.js +34 -0
  154. package/docs/fundamentals/tools/singleton-manager/example-success/overlayCompatibility.js +23 -0
  155. package/docs/fundamentals/tools/singleton-manager/overview.md +4 -4
  156. package/docs/guides/how-to/create-a-custom-field.md +5 -5
  157. package/docs/guides/how-to/extend-a-native-input.md +2 -2
  158. package/docs/guides/index.md +8 -8
  159. package/docs/guides/principles/index.md +5 -5
  160. package/docs/guides/principles/styling.md +1 -1
  161. package/package.json +2 -2
  162. package/dist-types/components/overlays/test/utils-tests/local-positioning-helpers.d.ts.map +0 -1
@@ -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/ed5016dcea7f081f0c5d4716a3dcba30c0e64c85/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/c7ce3afabd95988fe0cc2f466ffed78890796fa3/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/ed5016dcea7f081f0c5d4716a3dcba30c0e64c85/docs/fundamentals/tools/singleton-manager/example-fail/index.md). <br>
162
+ ➡️ See [it on the example page](https://github.com/ing-bank/lion/blob/c7ce3afabd95988fe0cc2f466ffed78890796fa3/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/ed5016dcea7f081f0c5d4716a3dcba30c0e64c85/docs/fundamentals/tools/singleton-manager/example-success/index.md). <br>
205
+ ➡️ See [it on the example page](https://github.com/ing-bank/lion/blob/c7ce3afabd95988fe0cc2f466ffed78890796fa3/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/ed5016dcea7f081f0c5d4716a3dcba30c0e64c85/docs/fundamentals/tools/singleton-manager/example-complex/index.md). <br>
246
+ ➡️ See [it on the example page](https://github.com/ing-bank/lion/blob/c7ce3afabd95988fe0cc2f466ffed78890796fa3/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
  ---