@shoper/phoenix_design_system 0.2.2-2 → 0.3.1
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/build/cjs/packages/phoenix/src/components/modal/modal.js +19 -8
- package/build/cjs/packages/phoenix/src/components/modal/modal.js.map +1 -1
- package/build/cjs/packages/phoenix/src/components/modal/modal_body.js +2 -1
- package/build/cjs/packages/phoenix/src/components/modal/modal_body.js.map +1 -1
- package/build/cjs/packages/phoenix/src/components/modal/modal_footer.js +1 -0
- package/build/cjs/packages/phoenix/src/components/modal/modal_footer.js.map +1 -1
- package/build/cjs/packages/phoenix/src/components/modal/modal_header.js +1 -0
- package/build/cjs/packages/phoenix/src/components/modal/modal_header.js.map +1 -1
- package/build/cjs/packages/phoenix/src/components/modal/modal_opener.js +43 -0
- package/build/cjs/packages/phoenix/src/components/modal/modal_opener.js.map +1 -0
- package/build/cjs/packages/phoenix/src/core/phoenix_light_lit_element.js +2 -2
- package/build/cjs/packages/phoenix/src/index.js +7 -0
- package/build/cjs/packages/phoenix/src/index.js.map +1 -1
- package/build/esm/packages/phoenix/src/components/modal/modal.d.ts +1 -1
- package/build/esm/packages/phoenix/src/components/modal/modal.js +19 -8
- package/build/esm/packages/phoenix/src/components/modal/modal.js.map +1 -1
- package/build/esm/packages/phoenix/src/components/modal/modal_body.js +2 -1
- package/build/esm/packages/phoenix/src/components/modal/modal_body.js.map +1 -1
- package/build/esm/packages/phoenix/src/components/modal/modal_footer.js +1 -0
- package/build/esm/packages/phoenix/src/components/modal/modal_footer.js.map +1 -1
- package/build/esm/packages/phoenix/src/components/modal/modal_header.js +1 -0
- package/build/esm/packages/phoenix/src/components/modal/modal_header.js.map +1 -1
- package/build/esm/packages/phoenix/src/components/modal/modal_opener.d.ts +9 -0
- package/build/esm/packages/phoenix/src/components/modal/modal_opener.js +41 -0
- package/build/esm/packages/phoenix/src/components/modal/modal_opener.js.map +1 -0
- package/build/esm/packages/phoenix/src/core/phoenix_light_lit_element.d.ts +1 -1
- package/build/esm/packages/phoenix/src/core/phoenix_light_lit_element.js +2 -2
- package/build/esm/packages/phoenix/src/index.d.ts +1 -0
- package/build/esm/packages/phoenix/src/index.js +1 -0
- package/build/esm/packages/phoenix/src/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -15,7 +15,7 @@ exports.HModal = HModal_1 = class HModal extends phoenix_light_lit_element.Phoen
|
|
|
15
15
|
constructor() {
|
|
16
16
|
super();
|
|
17
17
|
this.opened = false;
|
|
18
|
-
this.
|
|
18
|
+
this.class = '';
|
|
19
19
|
this.transition = 'slide-in-top';
|
|
20
20
|
this._firstFocusableElement = undefined;
|
|
21
21
|
this._focusableElements = null;
|
|
@@ -66,7 +66,14 @@ exports.HModal = HModal_1 = class HModal extends phoenix_light_lit_element.Phoen
|
|
|
66
66
|
};
|
|
67
67
|
this._bindCloseOnEsc = (ev) => {
|
|
68
68
|
ev.stopImmediatePropagation();
|
|
69
|
-
const
|
|
69
|
+
const $target = ev.target;
|
|
70
|
+
const closeConditions = [
|
|
71
|
+
ev.key === 'Escape',
|
|
72
|
+
$target.tagName !== 'INPUT',
|
|
73
|
+
ev.ctrlKey === false,
|
|
74
|
+
ev.shiftKey === false,
|
|
75
|
+
ev.altKey === false
|
|
76
|
+
];
|
|
70
77
|
const shouldCloseModal = closeConditions.every((condition) => condition);
|
|
71
78
|
if (shouldCloseModal) {
|
|
72
79
|
const [modalToClose] = HModal_1.openModals.slice(-1);
|
|
@@ -103,10 +110,12 @@ exports.HModal = HModal_1 = class HModal extends phoenix_light_lit_element.Phoen
|
|
|
103
110
|
}
|
|
104
111
|
disconnectedCallback() {
|
|
105
112
|
super.disconnectedCallback();
|
|
113
|
+
this[modal_constants.MODAL_OPENED_PROP] = false;
|
|
106
114
|
document.removeEventListener(modal_constants.MODAL_EVENTS.close, this._handleCloseFromCloseComponent);
|
|
107
115
|
document.removeEventListener('keydown', this._bindCloseOnEsc);
|
|
108
116
|
}
|
|
109
117
|
firstUpdated() {
|
|
118
|
+
super.firstUpdated();
|
|
110
119
|
this._firstFocusableElement = this._focusSentinelStart.value;
|
|
111
120
|
this._lastFocusableElement = this._focusSentinelEnd.value;
|
|
112
121
|
}
|
|
@@ -119,6 +128,7 @@ exports.HModal = HModal_1 = class HModal extends phoenix_light_lit_element.Phoen
|
|
|
119
128
|
var _a;
|
|
120
129
|
if (!this[modal_constants.MODAL_OPENED_PROP]) {
|
|
121
130
|
this[modal_constants.MODAL_OPENED_PROP] = true;
|
|
131
|
+
this._dispatchModalOpenedEvent();
|
|
122
132
|
(_a = this._contentRef.value) === null || _a === void 0 ? void 0 : _a.classList.add(`modal_visible`, `modal_show-${this.transition}-start`);
|
|
123
133
|
window.requestAnimationFrame(() => {
|
|
124
134
|
setTimeout(() => {
|
|
@@ -129,7 +139,6 @@ exports.HModal = HModal_1 = class HModal extends phoenix_light_lit_element.Phoen
|
|
|
129
139
|
setTimeout(() => {
|
|
130
140
|
var _a;
|
|
131
141
|
(_a = this._contentRef.value) === null || _a === void 0 ? void 0 : _a.classList.remove(`modal_show-${this.transition}-start`, `modal_show-${this.transition}-end`);
|
|
132
|
-
this._dispatchModalOpenedEvent();
|
|
133
142
|
}, transitionDuration);
|
|
134
143
|
});
|
|
135
144
|
}
|
|
@@ -165,11 +174,13 @@ exports.HModal = HModal_1 = class HModal extends phoenix_light_lit_element.Phoen
|
|
|
165
174
|
render() {
|
|
166
175
|
return lit.html `
|
|
167
176
|
<h-portal ?disabled="${!this.opened}" to="${modal_constants.MODALS_PORTAL_NAME}" hidden>
|
|
168
|
-
<div
|
|
169
|
-
|
|
170
|
-
<div
|
|
177
|
+
<div class="modal-wrapper ${this.class}">
|
|
178
|
+
<div tabindex="0" ${ref.ref(this._focusSentinelStart)}></div>
|
|
179
|
+
<div ${ref.ref(this._contentRef)} class="modal" role="dialog">
|
|
180
|
+
<div class="modal__container">${this.getSlot('header')} ${this.getSlot('body')} ${this.getSlot('footer')}</div>
|
|
181
|
+
</div>
|
|
182
|
+
<div tabindex="0" ${ref.ref(this._focusSentinelEnd)}></div>
|
|
171
183
|
</div>
|
|
172
|
-
<div tabindex="0" ${ref.ref(this._focusSentinelEnd)}></div>
|
|
173
184
|
</h-portal>
|
|
174
185
|
`;
|
|
175
186
|
}
|
|
@@ -182,7 +193,7 @@ tslib_es6.__decorate([
|
|
|
182
193
|
tslib_es6.__decorate([
|
|
183
194
|
decorators.property({ type: String }),
|
|
184
195
|
tslib_es6.__metadata("design:type", Object)
|
|
185
|
-
], exports.HModal.prototype, "
|
|
196
|
+
], exports.HModal.prototype, "class", void 0);
|
|
186
197
|
tslib_es6.__decorate([
|
|
187
198
|
decorators.property({ type: String }),
|
|
188
199
|
tslib_es6.__metadata("design:type", Object)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA,wBAAwB,4CAAgD;AACxE;AACA;AACA;AACA;AACA;AACA,kBAAkB,oDAAwD;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA,wBAAwB,4CAAgD;AACxE;AACA;AACA;AACA;AACA;AACA,kBAAkB,oDAAwD;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -9,7 +9,8 @@ var phoenix_light_lit_element = require('../../core/phoenix_light_lit_element.js
|
|
|
9
9
|
exports.HModalBody = class HModalBody extends phoenix_light_lit_element.PhoenixLightLitElement {
|
|
10
10
|
constructor() {
|
|
11
11
|
super();
|
|
12
|
-
this.slot = this.hasAttribute('slot') ? this.slot : '
|
|
12
|
+
this.slot = this.hasAttribute('slot') ? this.slot : 'body';
|
|
13
|
+
this.className = `modal__body ${this.className}`;
|
|
13
14
|
}
|
|
14
15
|
};
|
|
15
16
|
exports.HModalBody = tslib_es6.__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA,wBAAwB,4CAAgD;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA,wBAAwB,4CAAgD;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -10,6 +10,7 @@ exports.HModalFooter = class HModalFooter extends phoenix_light_lit_element.Phoe
|
|
|
10
10
|
constructor() {
|
|
11
11
|
super();
|
|
12
12
|
this.slot = this.hasAttribute('slot') ? this.slot : 'footer';
|
|
13
|
+
this.className = `modal__footer ${this.className}`;
|
|
13
14
|
}
|
|
14
15
|
};
|
|
15
16
|
exports.HModalFooter = tslib_es6.__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA,wBAAwB,4CAAgD;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA,wBAAwB,4CAAgD;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -10,6 +10,7 @@ exports.HModalHeader = class HModalHeader extends phoenix_light_lit_element.Phoe
|
|
|
10
10
|
constructor() {
|
|
11
11
|
super();
|
|
12
12
|
this.slot = this.hasAttribute('slot') ? this.slot : 'header';
|
|
13
|
+
this.className = `modal__header ${this.className}`;
|
|
13
14
|
}
|
|
14
15
|
};
|
|
15
16
|
exports.HModalHeader = tslib_es6.__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA,wBAAwB,4CAAgD;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA,wBAAwB,4CAAgD;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var tslib_es6 = require('../../../../../external/tslib/tslib.es6.js');
|
|
6
|
+
var decorators = require('lit/decorators');
|
|
7
|
+
var phoenix_light_lit_element = require('../../core/phoenix_light_lit_element.js');
|
|
8
|
+
|
|
9
|
+
exports.HModalOpener = class HModalOpener extends phoenix_light_lit_element.PhoenixLightLitElement {
|
|
10
|
+
constructor() {
|
|
11
|
+
super();
|
|
12
|
+
this.name = '';
|
|
13
|
+
this.tabIndex = 0;
|
|
14
|
+
this.setAttribute('role', 'button');
|
|
15
|
+
}
|
|
16
|
+
connectedCallback() {
|
|
17
|
+
super.connectedCallback();
|
|
18
|
+
this.addEventListener('click', this._openModal);
|
|
19
|
+
this.addEventListener('keydown', this._openModalOnKeydownEvent);
|
|
20
|
+
}
|
|
21
|
+
disconnectedCallback() {
|
|
22
|
+
this.removeEventListener('click', this._openModal);
|
|
23
|
+
this.removeEventListener('keydown', this._openModalOnKeydownEvent);
|
|
24
|
+
}
|
|
25
|
+
_openModal() {
|
|
26
|
+
const modal = document.querySelector(`h-modal#${this.name}`);
|
|
27
|
+
modal === null || modal === void 0 ? void 0 : modal.open();
|
|
28
|
+
}
|
|
29
|
+
_openModalOnKeydownEvent(ev) {
|
|
30
|
+
if (ev.code === 'Enter' || ev.code === 'Space') {
|
|
31
|
+
this._openModal();
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
tslib_es6.__decorate([
|
|
36
|
+
decorators.property({ type: String }),
|
|
37
|
+
tslib_es6.__metadata("design:type", Object)
|
|
38
|
+
], exports.HModalOpener.prototype, "name", void 0);
|
|
39
|
+
exports.HModalOpener = tslib_es6.__decorate([
|
|
40
|
+
decorators.customElement('h-modal-opener'),
|
|
41
|
+
tslib_es6.__metadata("design:paramtypes", [])
|
|
42
|
+
], exports.HModalOpener);
|
|
43
|
+
//# sourceMappingURL=modal_opener.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA,wBAAwB,4CAAgD;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -12,9 +12,9 @@ class PhoenixLightLitElement extends lit.LitElement {
|
|
|
12
12
|
super();
|
|
13
13
|
this._slots = {};
|
|
14
14
|
}
|
|
15
|
-
|
|
16
|
-
super.connectedCallback();
|
|
15
|
+
firstUpdated() {
|
|
17
16
|
this._slots = this._assignSlots();
|
|
17
|
+
this.requestUpdate();
|
|
18
18
|
}
|
|
19
19
|
_assignSlots() {
|
|
20
20
|
return [...this.querySelectorAll('[slot]')].reduce((acc, $el) => {
|
|
@@ -9,6 +9,7 @@ var hello_button = require('./hello_button.js');
|
|
|
9
9
|
var portal_target = require('./components/portal/portal_target.js');
|
|
10
10
|
var portal = require('./components/portal/portal.js');
|
|
11
11
|
var modal = require('./components/modal/modal.js');
|
|
12
|
+
var modal_opener = require('./components/modal/modal_opener.js');
|
|
12
13
|
var modal_backdrop = require('./components/modal/modal_backdrop.js');
|
|
13
14
|
var modal_body = require('./components/modal/modal_body.js');
|
|
14
15
|
var modal_footer = require('./components/modal/modal_footer.js');
|
|
@@ -44,6 +45,12 @@ Object.defineProperty(exports, 'HModal', {
|
|
|
44
45
|
return modal.HModal;
|
|
45
46
|
}
|
|
46
47
|
});
|
|
48
|
+
Object.defineProperty(exports, 'HModalOpener', {
|
|
49
|
+
enumerable: true,
|
|
50
|
+
get: function () {
|
|
51
|
+
return modal_opener.HModalOpener;
|
|
52
|
+
}
|
|
53
|
+
});
|
|
47
54
|
Object.defineProperty(exports, 'HModalBackdrop', {
|
|
48
55
|
enumerable: true,
|
|
49
56
|
get: function () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -2,7 +2,7 @@ import { TemplateResult } from 'lit';
|
|
|
2
2
|
import { PhoenixLightLitElement } from "../../core/phoenix_light_lit_element";
|
|
3
3
|
export declare class HModal extends PhoenixLightLitElement {
|
|
4
4
|
opened: boolean;
|
|
5
|
-
|
|
5
|
+
class: string;
|
|
6
6
|
transition: string;
|
|
7
7
|
_firstFocusableElement: HTMLElement | undefined;
|
|
8
8
|
_focusableElements: HTMLElement[] | null;
|
|
@@ -11,7 +11,7 @@ let HModal = HModal_1 = class HModal extends PhoenixLightLitElement {
|
|
|
11
11
|
constructor() {
|
|
12
12
|
super();
|
|
13
13
|
this.opened = false;
|
|
14
|
-
this.
|
|
14
|
+
this.class = '';
|
|
15
15
|
this.transition = 'slide-in-top';
|
|
16
16
|
this._firstFocusableElement = undefined;
|
|
17
17
|
this._focusableElements = null;
|
|
@@ -62,7 +62,14 @@ let HModal = HModal_1 = class HModal extends PhoenixLightLitElement {
|
|
|
62
62
|
};
|
|
63
63
|
this._bindCloseOnEsc = (ev) => {
|
|
64
64
|
ev.stopImmediatePropagation();
|
|
65
|
-
const
|
|
65
|
+
const $target = ev.target;
|
|
66
|
+
const closeConditions = [
|
|
67
|
+
ev.key === 'Escape',
|
|
68
|
+
$target.tagName !== 'INPUT',
|
|
69
|
+
ev.ctrlKey === false,
|
|
70
|
+
ev.shiftKey === false,
|
|
71
|
+
ev.altKey === false
|
|
72
|
+
];
|
|
66
73
|
const shouldCloseModal = closeConditions.every((condition) => condition);
|
|
67
74
|
if (shouldCloseModal) {
|
|
68
75
|
const [modalToClose] = HModal_1.openModals.slice(-1);
|
|
@@ -99,10 +106,12 @@ let HModal = HModal_1 = class HModal extends PhoenixLightLitElement {
|
|
|
99
106
|
}
|
|
100
107
|
disconnectedCallback() {
|
|
101
108
|
super.disconnectedCallback();
|
|
109
|
+
this[MODAL_OPENED_PROP] = false;
|
|
102
110
|
document.removeEventListener(MODAL_EVENTS.close, this._handleCloseFromCloseComponent);
|
|
103
111
|
document.removeEventListener('keydown', this._bindCloseOnEsc);
|
|
104
112
|
}
|
|
105
113
|
firstUpdated() {
|
|
114
|
+
super.firstUpdated();
|
|
106
115
|
this._firstFocusableElement = this._focusSentinelStart.value;
|
|
107
116
|
this._lastFocusableElement = this._focusSentinelEnd.value;
|
|
108
117
|
}
|
|
@@ -115,6 +124,7 @@ let HModal = HModal_1 = class HModal extends PhoenixLightLitElement {
|
|
|
115
124
|
var _a;
|
|
116
125
|
if (!this[MODAL_OPENED_PROP]) {
|
|
117
126
|
this[MODAL_OPENED_PROP] = true;
|
|
127
|
+
this._dispatchModalOpenedEvent();
|
|
118
128
|
(_a = this._contentRef.value) === null || _a === void 0 ? void 0 : _a.classList.add(`modal_visible`, `modal_show-${this.transition}-start`);
|
|
119
129
|
window.requestAnimationFrame(() => {
|
|
120
130
|
setTimeout(() => {
|
|
@@ -125,7 +135,6 @@ let HModal = HModal_1 = class HModal extends PhoenixLightLitElement {
|
|
|
125
135
|
setTimeout(() => {
|
|
126
136
|
var _a;
|
|
127
137
|
(_a = this._contentRef.value) === null || _a === void 0 ? void 0 : _a.classList.remove(`modal_show-${this.transition}-start`, `modal_show-${this.transition}-end`);
|
|
128
|
-
this._dispatchModalOpenedEvent();
|
|
129
138
|
}, transitionDuration);
|
|
130
139
|
});
|
|
131
140
|
}
|
|
@@ -161,11 +170,13 @@ let HModal = HModal_1 = class HModal extends PhoenixLightLitElement {
|
|
|
161
170
|
render() {
|
|
162
171
|
return html `
|
|
163
172
|
<h-portal ?disabled="${!this.opened}" to="${MODALS_PORTAL_NAME}" hidden>
|
|
164
|
-
<div
|
|
165
|
-
|
|
166
|
-
<div
|
|
173
|
+
<div class="modal-wrapper ${this.class}">
|
|
174
|
+
<div tabindex="0" ${n(this._focusSentinelStart)}></div>
|
|
175
|
+
<div ${n(this._contentRef)} class="modal" role="dialog">
|
|
176
|
+
<div class="modal__container">${this.getSlot('header')} ${this.getSlot('body')} ${this.getSlot('footer')}</div>
|
|
177
|
+
</div>
|
|
178
|
+
<div tabindex="0" ${n(this._focusSentinelEnd)}></div>
|
|
167
179
|
</div>
|
|
168
|
-
<div tabindex="0" ${n(this._focusSentinelEnd)}></div>
|
|
169
180
|
</h-portal>
|
|
170
181
|
`;
|
|
171
182
|
}
|
|
@@ -178,7 +189,7 @@ __decorate([
|
|
|
178
189
|
__decorate([
|
|
179
190
|
property({ type: String }),
|
|
180
191
|
__metadata("design:type", Object)
|
|
181
|
-
], HModal.prototype, "
|
|
192
|
+
], HModal.prototype, "class", void 0);
|
|
182
193
|
__decorate([
|
|
183
194
|
property({ type: String }),
|
|
184
195
|
__metadata("design:type", Object)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA,uCAAuC,4CAAgD;AACvF;AACA;AACA;AACA;AACA;AACA,yCAAyC,oDAAwD;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA,uCAAuC,4CAAgD;AACvF;AACA;AACA;AACA;AACA;AACA,yCAAyC,oDAAwD;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -5,7 +5,8 @@ import { PhoenixLightLitElement } from '../../core/phoenix_light_lit_element.js'
|
|
|
5
5
|
let HModalBody = class HModalBody extends PhoenixLightLitElement {
|
|
6
6
|
constructor() {
|
|
7
7
|
super();
|
|
8
|
-
this.slot = this.hasAttribute('slot') ? this.slot : '
|
|
8
|
+
this.slot = this.hasAttribute('slot') ? this.slot : 'body';
|
|
9
|
+
this.className = `modal__body ${this.className}`;
|
|
9
10
|
}
|
|
10
11
|
};
|
|
11
12
|
HModalBody = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA,uCAAuC,4CAAgD;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA,uCAAuC,4CAAgD;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA,uCAAuC,4CAAgD;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA,uCAAuC,4CAAgD;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA,uCAAuC,4CAAgD;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA,uCAAuC,4CAAgD;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { PhoenixLightLitElement } from "../../core/phoenix_light_lit_element";
|
|
2
|
+
export declare class HModalOpener extends PhoenixLightLitElement {
|
|
3
|
+
name: string;
|
|
4
|
+
constructor();
|
|
5
|
+
connectedCallback(): void;
|
|
6
|
+
disconnectedCallback(): void;
|
|
7
|
+
private _openModal;
|
|
8
|
+
private _openModalOnKeydownEvent;
|
|
9
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { __decorate, __metadata } from '../../../../../external/tslib/tslib.es6.js';
|
|
2
|
+
import { property, customElement } from 'lit/decorators';
|
|
3
|
+
import { PhoenixLightLitElement } from '../../core/phoenix_light_lit_element.js';
|
|
4
|
+
|
|
5
|
+
let HModalOpener = class HModalOpener extends PhoenixLightLitElement {
|
|
6
|
+
constructor() {
|
|
7
|
+
super();
|
|
8
|
+
this.name = '';
|
|
9
|
+
this.tabIndex = 0;
|
|
10
|
+
this.setAttribute('role', 'button');
|
|
11
|
+
}
|
|
12
|
+
connectedCallback() {
|
|
13
|
+
super.connectedCallback();
|
|
14
|
+
this.addEventListener('click', this._openModal);
|
|
15
|
+
this.addEventListener('keydown', this._openModalOnKeydownEvent);
|
|
16
|
+
}
|
|
17
|
+
disconnectedCallback() {
|
|
18
|
+
this.removeEventListener('click', this._openModal);
|
|
19
|
+
this.removeEventListener('keydown', this._openModalOnKeydownEvent);
|
|
20
|
+
}
|
|
21
|
+
_openModal() {
|
|
22
|
+
const modal = document.querySelector(`h-modal#${this.name}`);
|
|
23
|
+
modal === null || modal === void 0 ? void 0 : modal.open();
|
|
24
|
+
}
|
|
25
|
+
_openModalOnKeydownEvent(ev) {
|
|
26
|
+
if (ev.code === 'Enter' || ev.code === 'Space') {
|
|
27
|
+
this._openModal();
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
__decorate([
|
|
32
|
+
property({ type: String }),
|
|
33
|
+
__metadata("design:type", Object)
|
|
34
|
+
], HModalOpener.prototype, "name", void 0);
|
|
35
|
+
HModalOpener = __decorate([
|
|
36
|
+
customElement('h-modal-opener'),
|
|
37
|
+
__metadata("design:paramtypes", [])
|
|
38
|
+
], HModalOpener);
|
|
39
|
+
|
|
40
|
+
export { HModalOpener };
|
|
41
|
+
//# sourceMappingURL=modal_opener.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA,uCAAuC,4CAAgD;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -2,7 +2,7 @@ import { LitElement, TemplateResult, nothing } from 'lit';
|
|
|
2
2
|
export declare class PhoenixLightLitElement extends LitElement {
|
|
3
3
|
_slots: Record<string, TemplateResult[]>;
|
|
4
4
|
constructor();
|
|
5
|
-
|
|
5
|
+
firstUpdated(): void;
|
|
6
6
|
private _assignSlots;
|
|
7
7
|
getSlot(name: string): TemplateResult[] | typeof nothing;
|
|
8
8
|
createRenderRoot(): PhoenixLightLitElement;
|
|
@@ -8,9 +8,9 @@ class PhoenixLightLitElement extends LitElement {
|
|
|
8
8
|
super();
|
|
9
9
|
this._slots = {};
|
|
10
10
|
}
|
|
11
|
-
|
|
12
|
-
super.connectedCallback();
|
|
11
|
+
firstUpdated() {
|
|
13
12
|
this._slots = this._assignSlots();
|
|
13
|
+
this.requestUpdate();
|
|
14
14
|
}
|
|
15
15
|
_assignSlots() {
|
|
16
16
|
return [...this.querySelectorAll('[slot]')].reduce((acc, $el) => {
|
|
@@ -5,6 +5,7 @@ export { HelloButton } from './hello_button';
|
|
|
5
5
|
export { HPortal } from './components/portal/portal';
|
|
6
6
|
export { HPortalTarget } from './components/portal/portal_target';
|
|
7
7
|
export { HModal } from './components/modal/modal';
|
|
8
|
+
export { HModalOpener } from './components/modal/modal_opener';
|
|
8
9
|
export { HModalBackdrop } from './components/modal/modal_backdrop';
|
|
9
10
|
export { HModalBody } from './components/modal/modal_body';
|
|
10
11
|
export { HModalFooter } from './components/modal/modal_footer';
|
|
@@ -5,6 +5,7 @@ export { HelloButton } from './hello_button.js';
|
|
|
5
5
|
export { HPortalTarget } from './components/portal/portal_target.js';
|
|
6
6
|
export { HPortal } from './components/portal/portal.js';
|
|
7
7
|
export { HModal } from './components/modal/modal.js';
|
|
8
|
+
export { HModalOpener } from './components/modal/modal_opener.js';
|
|
8
9
|
export { HModalBackdrop } from './components/modal/modal_backdrop.js';
|
|
9
10
|
export { HModalBody } from './components/modal/modal_body.js';
|
|
10
11
|
export { HModalFooter } from './components/modal/modal_footer.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|