@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.
- package/components/accordion/src/LionAccordion.js +22 -9
- package/components/accordion/test/lion-accordion.test.js +29 -32
- package/components/icon/src/LionIcon.js +11 -4
- package/components/input-tel/translations/bg.js +3 -1
- package/components/input-tel/translations/cs.js +3 -1
- package/components/input-tel/translations/de.js +3 -1
- package/components/input-tel/translations/en.js +3 -1
- package/components/input-tel/translations/es.js +3 -1
- package/components/input-tel/translations/fr.js +3 -1
- package/components/input-tel/translations/hu.js +3 -1
- package/components/input-tel/translations/it.js +3 -1
- package/components/input-tel/translations/nl.js +3 -1
- package/components/input-tel/translations/pl.js +3 -1
- package/components/input-tel/translations/ro.js +3 -1
- package/components/input-tel/translations/ru.js +3 -1
- package/components/input-tel/translations/sk.js +3 -1
- package/components/input-tel/translations/uk.js +3 -1
- package/components/input-tel/translations/zh.js +3 -1
- package/components/input-tel-dropdown/src/LionInputTelDropdown.js +5 -5
- package/components/listbox/src/ListboxMixin.js +0 -4
- package/components/listbox/types/ListboxMixinTypes.ts +1 -4
- package/components/localize/src/LocalizeMixin.js +4 -3
- package/components/overlays/src/OverlayController.js +14 -25
- package/components/overlays/src/utils/adopt-styles.js +136 -0
- package/components/overlays/test/OverlayController.test.js +8 -55
- package/components/overlays/test/local-positioning.test.js +1 -1
- package/components/overlays/test/utils-tests/adopt-styles.test.js +177 -0
- package/components/overlays/test-helpers/createShadowHost.js +16 -0
- package/components/overlays/{test/utils-tests/local-positioning-helpers.js → test-helpers/normalizeTransformStyle.js} +0 -0
- package/components/select-rich/src/LionSelectRich.js +12 -6
- package/components/select-rich/test/lion-select-rich.test.js +25 -1
- package/custom-elements.json +418 -113
- package/dist-types/components/accordion/src/LionAccordion.d.ts.map +1 -1
- package/dist-types/components/icon/src/LionIcon.d.ts.map +1 -1
- package/dist-types/components/input-tel/translations/bg-BG.d.ts +3 -1
- package/dist-types/components/input-tel/translations/bg.d.ts +3 -1
- package/dist-types/components/input-tel/translations/cs-CZ.d.ts +3 -1
- package/dist-types/components/input-tel/translations/cs.d.ts +3 -1
- package/dist-types/components/input-tel/translations/de-DE.d.ts +3 -1
- package/dist-types/components/input-tel/translations/de.d.ts +3 -1
- package/dist-types/components/input-tel/translations/en-AU.d.ts +3 -1
- package/dist-types/components/input-tel/translations/en-GB.d.ts +3 -1
- package/dist-types/components/input-tel/translations/en-US.d.ts +3 -1
- package/dist-types/components/input-tel/translations/en.d.ts +3 -1
- package/dist-types/components/input-tel/translations/es-ES.d.ts +3 -1
- package/dist-types/components/input-tel/translations/es.d.ts +3 -1
- package/dist-types/components/input-tel/translations/fr-BE.d.ts +3 -1
- package/dist-types/components/input-tel/translations/fr-FR.d.ts +3 -1
- package/dist-types/components/input-tel/translations/fr.d.ts +3 -1
- package/dist-types/components/input-tel/translations/hu-HU.d.ts +3 -1
- package/dist-types/components/input-tel/translations/hu.d.ts +3 -1
- package/dist-types/components/input-tel/translations/it-IT.d.ts +3 -1
- package/dist-types/components/input-tel/translations/it.d.ts +3 -1
- package/dist-types/components/input-tel/translations/nl-BE.d.ts +3 -1
- package/dist-types/components/input-tel/translations/nl-NL.d.ts +3 -1
- package/dist-types/components/input-tel/translations/nl.d.ts +3 -1
- package/dist-types/components/input-tel/translations/pl-PL.d.ts +3 -1
- package/dist-types/components/input-tel/translations/pl.d.ts +3 -1
- package/dist-types/components/input-tel/translations/ro-RO.d.ts +3 -1
- package/dist-types/components/input-tel/translations/ro.d.ts +3 -1
- package/dist-types/components/input-tel/translations/ru-RU.d.ts +3 -1
- package/dist-types/components/input-tel/translations/ru.d.ts +3 -1
- package/dist-types/components/input-tel/translations/sk-SK.d.ts +3 -1
- package/dist-types/components/input-tel/translations/sk.d.ts +3 -1
- package/dist-types/components/input-tel/translations/uk-UA.d.ts +3 -1
- package/dist-types/components/input-tel/translations/uk.d.ts +3 -1
- package/dist-types/components/input-tel/translations/zh.d.ts +3 -1
- package/dist-types/components/listbox/src/ListboxMixin.d.ts.map +1 -1
- package/dist-types/components/listbox/types/ListboxMixinTypes.d.ts +1 -2
- package/dist-types/components/listbox/types/ListboxMixinTypes.d.ts.map +1 -1
- package/dist-types/components/localize/src/LocalizeMixin.d.ts +1 -0
- package/dist-types/components/localize/src/LocalizeMixin.d.ts.map +1 -1
- package/dist-types/components/overlays/src/OverlayController.d.ts +5 -1
- package/dist-types/components/overlays/src/OverlayController.d.ts.map +1 -1
- package/dist-types/components/overlays/src/utils/adopt-styles.d.ts +24 -0
- package/dist-types/components/overlays/src/utils/adopt-styles.d.ts.map +1 -0
- package/dist-types/components/overlays/test/OverlayController.test.d.ts.map +1 -1
- package/dist-types/components/overlays/test/utils-tests/adopt-styles.test.d.ts +2 -0
- package/dist-types/components/overlays/test/utils-tests/adopt-styles.test.d.ts.map +1 -0
- package/dist-types/components/overlays/test-helpers/createShadowHost.d.ts +8 -0
- package/dist-types/components/overlays/test-helpers/createShadowHost.d.ts.map +1 -0
- package/dist-types/components/overlays/{test/utils-tests/local-positioning-helpers.d.ts → test-helpers/normalizeTransformStyle.d.ts} +1 -1
- package/dist-types/components/overlays/test-helpers/normalizeTransformStyle.d.ts.map +1 -0
- package/dist-types/components/select-rich/src/LionSelectRich.d.ts +8 -8
- package/dist-types/components/select-rich/src/LionSelectRich.d.ts.map +1 -1
- package/dist-types/tsconfig.tsbuildinfo +1 -1
- package/docs/components/button/use-cases.md +2 -0
- 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/src/demo-selection-display.js +1 -1
- package/docs/components/combobox/use-cases.md +1 -1
- package/docs/components/dialog/overview.md +1 -1
- package/docs/components/dialog/src/demoStyle.js +18 -0
- package/docs/components/fieldset/overview.md +5 -5
- package/docs/components/form/overview.md +3 -3
- 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-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/radio-group/overview.md +3 -3
- package/docs/components/select-rich/use-cases.md +30 -24
- package/docs/components/tabs/examples.md +1 -1
- package/docs/fundamentals/index.md +4 -4
- package/docs/fundamentals/node-tools/providence-analytics/LocalConfiguration.md +1 -1
- package/docs/fundamentals/node-tools/providence-analytics/QueryResult.md +1 -1
- package/docs/fundamentals/node-tools/providence-analytics/analyzer.md +1 -1
- package/docs/fundamentals/node-tools/providence-analytics/dashboard.md +1 -1
- package/docs/fundamentals/node-tools/providence-analytics/overview.md +3 -3
- 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/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 +1 -1
- package/docs/fundamentals/systems/localize/overview.md +4 -4
- package/docs/fundamentals/systems/overlays/assets/demo-el-using-overlaymixin.mjs +0 -16
- package/docs/fundamentals/systems/overlays/configuration.md +13 -25
- package/docs/fundamentals/systems/overlays/overview.md +5 -5
- package/docs/fundamentals/systems/overlays/use-cases.md +5 -5
- package/docs/fundamentals/tools/helpers/overview.md +1 -1
- package/docs/fundamentals/tools/singleton-manager/.gitignore +1 -0
- package/docs/fundamentals/tools/singleton-manager/example-complex/demo-app.js +93 -0
- package/docs/fundamentals/tools/singleton-manager/example-complex/node_modules/overlays/index.js +30 -0
- package/docs/fundamentals/tools/singleton-manager/example-complex/node_modules/overlays/instance.js +4 -0
- package/docs/fundamentals/tools/singleton-manager/example-complex/node_modules/page-a/page-a.js +35 -0
- package/docs/fundamentals/tools/singleton-manager/example-complex/node_modules/page-b/node_modules/overlays/index.js +30 -0
- package/docs/fundamentals/tools/singleton-manager/example-complex/node_modules/page-b/node_modules/overlays/instance.js +4 -0
- package/docs/fundamentals/tools/singleton-manager/example-complex/node_modules/page-b/page-b.js +49 -0
- package/docs/fundamentals/tools/singleton-manager/example-complex/overlayCompatibility.js +70 -0
- package/docs/fundamentals/tools/singleton-manager/example-fail/demo-app.js +91 -0
- package/docs/fundamentals/tools/singleton-manager/example-fail/node_modules/overlays/index.js +30 -0
- package/docs/fundamentals/tools/singleton-manager/example-fail/node_modules/overlays/instance.js +3 -0
- package/docs/fundamentals/tools/singleton-manager/example-fail/node_modules/page-a/page-a.js +34 -0
- package/docs/fundamentals/tools/singleton-manager/example-fail/node_modules/page-b/node_modules/overlays/index.js +30 -0
- package/docs/fundamentals/tools/singleton-manager/example-fail/node_modules/page-b/node_modules/overlays/instance.js +3 -0
- package/docs/fundamentals/tools/singleton-manager/example-fail/node_modules/page-b/page-b.js +34 -0
- package/docs/fundamentals/tools/singleton-manager/example-success/demo-app.js +93 -0
- package/docs/fundamentals/tools/singleton-manager/example-success/node_modules/overlays/index.js +30 -0
- package/docs/fundamentals/tools/singleton-manager/example-success/node_modules/overlays/instance.js +4 -0
- package/docs/fundamentals/tools/singleton-manager/example-success/node_modules/page-a/page-a.js +34 -0
- package/docs/fundamentals/tools/singleton-manager/example-success/node_modules/page-b/node_modules/overlays/index.js +30 -0
- package/docs/fundamentals/tools/singleton-manager/example-success/node_modules/page-b/node_modules/overlays/instance.js +4 -0
- package/docs/fundamentals/tools/singleton-manager/example-success/node_modules/page-b/page-b.js +34 -0
- package/docs/fundamentals/tools/singleton-manager/example-success/overlayCompatibility.js +23 -0
- 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/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/package.json +2 -2
- package/dist-types/components/overlays/test/utils-tests/local-positioning-helpers.d.ts.map +0 -1
package/docs/fundamentals/tools/singleton-manager/example-complex/node_modules/page-b/page-b.js
ADDED
|
@@ -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,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,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);
|
package/docs/fundamentals/tools/singleton-manager/example-success/node_modules/overlays/index.js
ADDED
|
@@ -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
|
+
}
|
package/docs/fundamentals/tools/singleton-manager/example-success/node_modules/page-a/page-a.js
ADDED
|
@@ -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
|
+
}
|
package/docs/fundamentals/tools/singleton-manager/example-success/node_modules/page-b/page-b.js
ADDED
|
@@ -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/
|
|
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/
|
|
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/
|
|
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/
|
|
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
|
---
|