@shoper/phoenix_design_system 0.8.1 → 0.8.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/backdrop/backdrop.js +71 -0
- package/build/cjs/packages/phoenix/src/components/{modal/modal_backdrop.js.map → backdrop/backdrop.js.map} +1 -1
- package/build/cjs/packages/phoenix/src/components/backdrop/backdrop_constants.js +16 -0
- package/build/cjs/packages/phoenix/src/components/backdrop/backdrop_constants.js.map +1 -0
- package/build/cjs/packages/phoenix/src/components/dropdown/dropdown.js +63 -44
- package/build/cjs/packages/phoenix/src/components/dropdown/dropdown.js.map +1 -1
- package/build/cjs/packages/phoenix/src/components/dropdown/dropdown_constants.js +0 -2
- package/build/cjs/packages/phoenix/src/components/dropdown/dropdown_constants.js.map +1 -1
- package/build/cjs/packages/phoenix/src/components/modal/modal.js +15 -6
- package/build/cjs/packages/phoenix/src/components/modal/modal.js.map +1 -1
- package/build/cjs/packages/phoenix/src/global_constants.js +9 -2
- package/build/cjs/packages/phoenix/src/global_constants.js.map +1 -1
- package/build/cjs/packages/phoenix/src/index.js +7 -7
- package/build/esm/packages/phoenix/src/components/{modal/modal_backdrop.d.ts → backdrop/backdrop.d.ts} +6 -2
- package/build/esm/packages/phoenix/src/components/backdrop/backdrop.js +69 -0
- package/build/esm/packages/phoenix/src/components/{modal/modal_backdrop.js.map → backdrop/backdrop.js.map} +1 -1
- package/build/esm/packages/phoenix/src/components/backdrop/backdrop_constants.d.ts +6 -0
- package/build/esm/packages/phoenix/src/components/backdrop/backdrop_constants.js +10 -0
- package/build/esm/packages/phoenix/src/components/backdrop/backdrop_constants.js.map +1 -0
- package/build/esm/packages/phoenix/src/components/backdrop/backdrop_types.d.ts +3 -0
- package/build/esm/packages/phoenix/src/components/backdrop/backdrop_types.js +2 -0
- package/build/esm/packages/phoenix/src/components/backdrop/backdrop_types.js.map +1 -0
- package/build/esm/packages/phoenix/src/components/dropdown/dropdown.d.ts +5 -2
- package/build/esm/packages/phoenix/src/components/dropdown/dropdown.js +64 -45
- package/build/esm/packages/phoenix/src/components/dropdown/dropdown.js.map +1 -1
- package/build/esm/packages/phoenix/src/components/dropdown/dropdown_constants.js +1 -2
- package/build/esm/packages/phoenix/src/components/dropdown/dropdown_constants.js.map +1 -1
- package/build/esm/packages/phoenix/src/components/modal/modal.d.ts +2 -2
- package/build/esm/packages/phoenix/src/components/modal/modal.js +15 -6
- package/build/esm/packages/phoenix/src/components/modal/modal.js.map +1 -1
- package/build/esm/packages/phoenix/src/global_constants.d.ts +8 -1
- package/build/esm/packages/phoenix/src/global_constants.js +9 -2
- package/build/esm/packages/phoenix/src/global_constants.js.map +1 -1
- package/build/esm/packages/phoenix/src/index.d.ts +1 -1
- package/build/esm/packages/phoenix/src/index.js +1 -1
- package/package.json +1 -1
- package/build/cjs/packages/phoenix/src/components/modal/modal_backdrop.js +0 -66
- package/build/esm/packages/phoenix/src/components/dropdown/dropdown_backdrop.d.ts +0 -11
- package/build/esm/packages/phoenix/src/components/dropdown/dropdown_backdrop.js +0 -54
- package/build/esm/packages/phoenix/src/components/dropdown/dropdown_backdrop.js.map +0 -1
- package/build/esm/packages/phoenix/src/components/modal/modal_backdrop.js +0 -64
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var tslib_es6 = require('../../../../../external/tslib/tslib.es6.js');
|
|
6
|
+
var lit = require('lit');
|
|
7
|
+
var decorators = require('lit/decorators');
|
|
8
|
+
var phoenix_light_lit_element = require('../../core/phoenix_light_lit_element.js');
|
|
9
|
+
var phoenix_custom_element = require('../../core/decorators/phoenix_custom_element.js');
|
|
10
|
+
var backdrop_constants = require('./backdrop_constants.js');
|
|
11
|
+
|
|
12
|
+
exports.HBackdrop = class HBackdrop extends phoenix_light_lit_element.PhoenixLightLitElement {
|
|
13
|
+
constructor() {
|
|
14
|
+
super(...arguments);
|
|
15
|
+
this.visible = false;
|
|
16
|
+
this.onClickArray = [];
|
|
17
|
+
this._show = () => {
|
|
18
|
+
this.visible = true;
|
|
19
|
+
};
|
|
20
|
+
this._hide = () => {
|
|
21
|
+
this.visible = false;
|
|
22
|
+
};
|
|
23
|
+
this.addOnClick = (onClick) => {
|
|
24
|
+
this.onClickArray = [...this.onClickArray, onClick];
|
|
25
|
+
};
|
|
26
|
+
this._fireClickEvents = () => {
|
|
27
|
+
this.onClickArray.forEach((clickEvent) => {
|
|
28
|
+
clickEvent();
|
|
29
|
+
});
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
connectedCallback() {
|
|
33
|
+
super.connectedCallback();
|
|
34
|
+
document.addEventListener(backdrop_constants.BACKDROP_EVENTS.show, this._show);
|
|
35
|
+
document.addEventListener(backdrop_constants.BACKDROP_EVENTS.hide, this._hide);
|
|
36
|
+
}
|
|
37
|
+
disconnectedCallback() {
|
|
38
|
+
super.disconnectedCallback();
|
|
39
|
+
document.removeEventListener(backdrop_constants.BACKDROP_EVENTS.show, this._show);
|
|
40
|
+
document.removeEventListener(backdrop_constants.BACKDROP_EVENTS.hide, this._hide);
|
|
41
|
+
}
|
|
42
|
+
updated() {
|
|
43
|
+
if (this.visible)
|
|
44
|
+
this._disableScrolling();
|
|
45
|
+
else
|
|
46
|
+
this._enableScrolling();
|
|
47
|
+
}
|
|
48
|
+
_disableScrolling() {
|
|
49
|
+
document.body.style.overflow = 'hidden';
|
|
50
|
+
document.body.style.paddingRight = '15px';
|
|
51
|
+
}
|
|
52
|
+
_enableScrolling() {
|
|
53
|
+
document.body.style.removeProperty('overflow');
|
|
54
|
+
document.body.style.removeProperty('padding-right');
|
|
55
|
+
}
|
|
56
|
+
render() {
|
|
57
|
+
return lit.html ` <div aria-hidden="true" ?hidden="${!this.visible}" @click="${this._fireClickEvents}" class="${backdrop_constants.BACKDROP_CLASS}"></div>`;
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
tslib_es6.__decorate([
|
|
61
|
+
decorators.property({ type: Boolean }),
|
|
62
|
+
tslib_es6.__metadata("design:type", Object)
|
|
63
|
+
], exports.HBackdrop.prototype, "visible", void 0);
|
|
64
|
+
tslib_es6.__decorate([
|
|
65
|
+
decorators.state(),
|
|
66
|
+
tslib_es6.__metadata("design:type", Array)
|
|
67
|
+
], exports.HBackdrop.prototype, "onClickArray", void 0);
|
|
68
|
+
exports.HBackdrop = tslib_es6.__decorate([
|
|
69
|
+
phoenix_custom_element.phoenixCustomElement('h-backdrop')
|
|
70
|
+
], exports.HBackdrop);
|
|
71
|
+
//# sourceMappingURL=backdrop.js.map
|
|
@@ -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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
const BACKDROP_NAME = 'h-backdrop';
|
|
6
|
+
const BACKDROP_CLASS = 'backdrop';
|
|
7
|
+
const BACKDROP_EVENT = 'backdrop';
|
|
8
|
+
const BACKDROP_EVENTS = {
|
|
9
|
+
show: `${BACKDROP_EVENT}.show`,
|
|
10
|
+
hide: `${BACKDROP_EVENT}.hide`
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
exports.BACKDROP_CLASS = BACKDROP_CLASS;
|
|
14
|
+
exports.BACKDROP_EVENTS = BACKDROP_EVENTS;
|
|
15
|
+
exports.BACKDROP_NAME = BACKDROP_NAME;
|
|
16
|
+
//# sourceMappingURL=backdrop_constants.js.map
|
|
@@ -0,0 +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;"}
|
|
@@ -8,11 +8,12 @@ var decorators = require('lit/decorators');
|
|
|
8
8
|
var phoenix_light_lit_element = require('../../core/phoenix_light_lit_element.js');
|
|
9
9
|
var phoenix_custom_element = require('../../core/decorators/phoenix_custom_element.js');
|
|
10
10
|
var portal_constants = require('../portal/portal_constants.js');
|
|
11
|
+
var backdrop_constants = require('../backdrop/backdrop_constants.js');
|
|
11
12
|
var dropdown_constants = require('./dropdown_constants.js');
|
|
13
|
+
var global_constants = require('../../global_constants.js');
|
|
12
14
|
var click_outside_controller_messages = require('../../controllers/click_outside_controller/click_outside_controller_messages.js');
|
|
13
15
|
var click_outside_controller = require('../../controllers/click_outside_controller/click_outside_controller.js');
|
|
14
16
|
var relative_position_controller_constants = require('../../controllers/relative_position_controller/relative_position_controller_constants.js');
|
|
15
|
-
var global_constants = require('../../global_constants.js');
|
|
16
17
|
var relative_position_controller = require('../../controllers/relative_position_controller/relative_position_controller.js');
|
|
17
18
|
|
|
18
19
|
exports.HDropdown = class HDropdown extends phoenix_light_lit_element.PhoenixLightLitElement {
|
|
@@ -24,14 +25,19 @@ exports.HDropdown = class HDropdown extends phoenix_light_lit_element.PhoenixLig
|
|
|
24
25
|
this.name = '';
|
|
25
26
|
this.transition = 'direction';
|
|
26
27
|
this.portalTarget = dropdown_constants.DEFAULT_DROPDOWN_PORTAL_NAME;
|
|
28
|
+
this._closeDropdown = () => {
|
|
29
|
+
const dropdowns = document.querySelectorAll(dropdown_constants.DROPDOWN_CONTAINER_NAME);
|
|
30
|
+
dropdowns.forEach((dropdown) => {
|
|
31
|
+
const opened = dropdown.getAttribute('opened');
|
|
32
|
+
if (opened !== null)
|
|
33
|
+
dropdown.hide();
|
|
34
|
+
});
|
|
35
|
+
};
|
|
27
36
|
this.toggle = () => {
|
|
28
37
|
this.opened ? this.hide() : this.show();
|
|
29
38
|
};
|
|
30
39
|
this.show = async () => {
|
|
31
|
-
|
|
32
|
-
bubbles: true
|
|
33
|
-
});
|
|
34
|
-
this.dispatchEvent(showDropdownEvent);
|
|
40
|
+
this._dispatchShowDropdownEvent();
|
|
35
41
|
return new Promise((resolve) => {
|
|
36
42
|
var _a;
|
|
37
43
|
(_a = this.$dropdownContent) === null || _a === void 0 ? void 0 : _a.classList.add(dropdown_constants.DROPDOWN_CONTENT_VISIBLE_CLASS, `${dropdown_constants.DROPDOWN_CONTENT_SHOW}-${this.transition}-start`);
|
|
@@ -44,42 +50,60 @@ exports.HDropdown = class HDropdown extends phoenix_light_lit_element.PhoenixLig
|
|
|
44
50
|
setTimeout(() => {
|
|
45
51
|
var _a;
|
|
46
52
|
this.opened = true;
|
|
47
|
-
this.
|
|
53
|
+
this._dispatchShowDropdownEvent();
|
|
48
54
|
(_a = this.$dropdownContent) === null || _a === void 0 ? void 0 : _a.classList.remove(`${dropdown_constants.DROPDOWN_CONTENT_SHOW}-${this.transition}-start`, `${dropdown_constants.DROPDOWN_CONTENT_SHOW}-${this.transition}-end`);
|
|
49
55
|
resolve();
|
|
50
56
|
}, transitionDuration);
|
|
51
57
|
});
|
|
52
58
|
});
|
|
53
59
|
};
|
|
54
|
-
this.
|
|
60
|
+
this._dispatchShowDropdownEvent = () => {
|
|
61
|
+
const showDropdownEvent = new Event(dropdown_constants.DROPDOWN_EVENTS.show, {
|
|
62
|
+
bubbles: true
|
|
63
|
+
});
|
|
64
|
+
this.dispatchEvent(showDropdownEvent);
|
|
65
|
+
if (window.innerWidth >= global_constants.BREAKPOINTS.xs)
|
|
66
|
+
return;
|
|
67
|
+
const showBackdropEvent = new Event(backdrop_constants.BACKDROP_EVENTS.show, {
|
|
68
|
+
bubbles: true
|
|
69
|
+
});
|
|
70
|
+
this.dispatchEvent(showBackdropEvent);
|
|
71
|
+
};
|
|
72
|
+
this.hide = async () => new Promise((resolve) => {
|
|
73
|
+
const transitionDuration = parseFloat(getComputedStyle(this.$dropdownContent || this).transitionDuration) * 1000;
|
|
74
|
+
window.requestAnimationFrame(() => {
|
|
75
|
+
var _a, _b;
|
|
76
|
+
(_a = this.$dropdownContent) === null || _a === void 0 ? void 0 : _a.classList.remove(`${dropdown_constants.DROPDOWN_CONTENT_HIDE}-${this.transition}-start`);
|
|
77
|
+
(_b = this.$dropdownContent) === null || _b === void 0 ? void 0 : _b.classList.add(`${dropdown_constants.DROPDOWN_CONTENT_HIDE}-${this.transition}-end`);
|
|
78
|
+
setTimeout(() => {
|
|
79
|
+
var _a;
|
|
80
|
+
(_a = this.$dropdownContent) === null || _a === void 0 ? void 0 : _a.classList.remove(`${dropdown_constants.DROPDOWN_CONTENT_HIDE}-${this.transition}-start`, `${dropdown_constants.DROPDOWN_CONTENT_HIDE}-${this.transition}-end`);
|
|
81
|
+
this.opened = false;
|
|
82
|
+
this._dispatchHideDropdownEvent();
|
|
83
|
+
resolve();
|
|
84
|
+
}, transitionDuration);
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
this._dispatchHideDropdownEvent = () => {
|
|
55
88
|
const hideDropdownEvent = new Event(dropdown_constants.DROPDOWN_EVENTS.hide, {
|
|
56
89
|
bubbles: true
|
|
57
90
|
});
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
(_b = this.$dropdownContent) === null || _b === void 0 ? void 0 : _b.classList.add(`${dropdown_constants.DROPDOWN_CONTENT_HIDE}-${this.transition}-end`);
|
|
64
|
-
setTimeout(() => {
|
|
65
|
-
var _a;
|
|
66
|
-
(_a = this.$dropdownContent) === null || _a === void 0 ? void 0 : _a.classList.remove(`${dropdown_constants.DROPDOWN_CONTENT_HIDE}-${this.transition}-start`, `${dropdown_constants.DROPDOWN_CONTENT_HIDE}-${this.transition}-end`);
|
|
67
|
-
this.opened = false;
|
|
68
|
-
this.dispatchEvent(hideDropdownEvent);
|
|
69
|
-
resolve();
|
|
70
|
-
}, transitionDuration);
|
|
71
|
-
});
|
|
91
|
+
this.dispatchEvent(hideDropdownEvent);
|
|
92
|
+
if (window.innerWidth >= global_constants.BREAKPOINTS.xs)
|
|
93
|
+
return;
|
|
94
|
+
const hideBackdropEvent = new Event(backdrop_constants.BACKDROP_EVENTS.hide, {
|
|
95
|
+
bubbles: true
|
|
72
96
|
});
|
|
97
|
+
this.dispatchEvent(hideBackdropEvent);
|
|
73
98
|
};
|
|
74
99
|
this._hoverToggle = async (ev) => {
|
|
100
|
+
if (window.innerWidth < global_constants.BREAKPOINTS.xs)
|
|
101
|
+
return;
|
|
75
102
|
if (!ev.target) {
|
|
76
103
|
await this.hide();
|
|
77
104
|
return;
|
|
78
105
|
}
|
|
79
|
-
const isHoveredWithinDropdown = this.
|
|
80
|
-
(this.$dropdownContent && this._isDescendantOfParent(this.$dropdownContent, ev.target)) ||
|
|
81
|
-
ev.target === this ||
|
|
82
|
-
ev.target === this.$dropdownContent;
|
|
106
|
+
const isHoveredWithinDropdown = this._isHoveredWithinDropdown(ev.target);
|
|
83
107
|
if (isHoveredWithinDropdown && !this.opened) {
|
|
84
108
|
await this.show();
|
|
85
109
|
return;
|
|
@@ -89,15 +113,6 @@ exports.HDropdown = class HDropdown extends phoenix_light_lit_element.PhoenixLig
|
|
|
89
113
|
return;
|
|
90
114
|
}
|
|
91
115
|
};
|
|
92
|
-
this._isDescendantOfParent = function (parent, child) {
|
|
93
|
-
let parentNode = child.parentNode;
|
|
94
|
-
while (parentNode) {
|
|
95
|
-
if (parentNode === parent)
|
|
96
|
-
return true;
|
|
97
|
-
parentNode = parentNode.parentNode;
|
|
98
|
-
}
|
|
99
|
-
return false;
|
|
100
|
-
};
|
|
101
116
|
this._positionDropdownContent = () => {
|
|
102
117
|
requestAnimationFrame(() => {
|
|
103
118
|
this.opened && this._positionController.position();
|
|
@@ -107,7 +122,7 @@ exports.HDropdown = class HDropdown extends phoenix_light_lit_element.PhoenixLig
|
|
|
107
122
|
connectedCallback() {
|
|
108
123
|
super.connectedCallback();
|
|
109
124
|
this._appendDropdownPortal();
|
|
110
|
-
this.
|
|
125
|
+
this._appendBackdrop();
|
|
111
126
|
if (!this.$dropdownContent)
|
|
112
127
|
this.$dropdownContent = this.querySelector(dropdown_constants.DROPDOWN_CONTENT_NAME);
|
|
113
128
|
if (!this.$dropdownToggler)
|
|
@@ -135,20 +150,20 @@ exports.HDropdown = class HDropdown extends phoenix_light_lit_element.PhoenixLig
|
|
|
135
150
|
document.body.appendChild($portalTarget);
|
|
136
151
|
}
|
|
137
152
|
}
|
|
138
|
-
|
|
139
|
-
const $
|
|
140
|
-
if (!$
|
|
141
|
-
const $
|
|
142
|
-
document.body.appendChild($
|
|
153
|
+
_appendBackdrop() {
|
|
154
|
+
const $backdrop = document.querySelector(backdrop_constants.BACKDROP_NAME);
|
|
155
|
+
if (!$backdrop) {
|
|
156
|
+
const $newBackdrop = document.createElement(backdrop_constants.BACKDROP_NAME);
|
|
157
|
+
document.body.appendChild($newBackdrop);
|
|
158
|
+
$newBackdrop.addOnClick(this._closeDropdown);
|
|
143
159
|
}
|
|
144
160
|
}
|
|
145
161
|
_setupListeners() {
|
|
146
162
|
var _a;
|
|
147
163
|
this.addEventListener(click_outside_controller_messages.CLICK_OUTSIDE_CONTROLLER_MESSAGES.clickedOutside, this._handleClickOutside);
|
|
148
164
|
(_a = this.$dropdownToggler) === null || _a === void 0 ? void 0 : _a.addEventListener('toggle', this.toggle);
|
|
149
|
-
if (this.toggleOnHover
|
|
165
|
+
if (this.toggleOnHover)
|
|
150
166
|
document.addEventListener('mouseover', this._hoverToggle);
|
|
151
|
-
}
|
|
152
167
|
}
|
|
153
168
|
_handleClickOutside() {
|
|
154
169
|
var _a;
|
|
@@ -157,13 +172,17 @@ exports.HDropdown = class HDropdown extends phoenix_light_lit_element.PhoenixLig
|
|
|
157
172
|
this.hide();
|
|
158
173
|
(_a = this.$dropdownToggler) === null || _a === void 0 ? void 0 : _a.setAttribute('aria-expanded', 'false');
|
|
159
174
|
}
|
|
175
|
+
_isHoveredWithinDropdown(element) {
|
|
176
|
+
const isDescendantOfDropdown = element.closest(`${dropdown_constants.DROPDOWN_CONTAINER_NAME}[name="${this.name}"]`) !== null;
|
|
177
|
+
const isDescendantOfContent = this.$dropdownContent && element.closest(`${dropdown_constants.DROPDOWN_CONTENT_NAME}[name="${this.name}"]`) !== null;
|
|
178
|
+
return isDescendantOfDropdown || isDescendantOfContent || element === this || element === this.$dropdownContent;
|
|
179
|
+
}
|
|
160
180
|
disconnectedCallback() {
|
|
161
181
|
var _a;
|
|
162
182
|
super.disconnectedCallback();
|
|
163
183
|
(_a = this.$dropdownToggler) === null || _a === void 0 ? void 0 : _a.removeEventListener('toggle', this.toggle);
|
|
164
|
-
if (this.toggleOnHover
|
|
184
|
+
if (this.toggleOnHover)
|
|
165
185
|
document.removeEventListener('mouseover', this._hoverToggle);
|
|
166
|
-
}
|
|
167
186
|
this.opened = false;
|
|
168
187
|
}
|
|
169
188
|
render() {
|
|
@@ -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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -6,7 +6,6 @@ const DROPDOWN_NAME = 'dropdown';
|
|
|
6
6
|
const DROPDOWN_CONTAINER_NAME = `h-${DROPDOWN_NAME}`;
|
|
7
7
|
const DROPDOWN_TOGGLER_NAME = `${DROPDOWN_CONTAINER_NAME}-toggler`;
|
|
8
8
|
const DROPDOWN_CONTENT_NAME = `${DROPDOWN_CONTAINER_NAME}-content`;
|
|
9
|
-
const DROPDOWN_BACKDROP_NAME = `${DROPDOWN_CONTAINER_NAME}-backdrop`;
|
|
10
9
|
const DEFAULT_DROPDOWN_PORTAL_NAME = 'dropdown-portal';
|
|
11
10
|
const DROPDOWN_EVENT = 'dropdown';
|
|
12
11
|
const DROPDOWN_EVENTS = {
|
|
@@ -22,7 +21,6 @@ const DROPDOWN_CONTENT_SHOW = `${DROPDOWN_CONTENT_CLASS}_show`;
|
|
|
22
21
|
const DROPDOWN_CONTENT_HIDE = `${DROPDOWN_CONTENT_CLASS}_hide`;
|
|
23
22
|
|
|
24
23
|
exports.DEFAULT_DROPDOWN_PORTAL_NAME = DEFAULT_DROPDOWN_PORTAL_NAME;
|
|
25
|
-
exports.DROPDOWN_BACKDROP_NAME = DROPDOWN_BACKDROP_NAME;
|
|
26
24
|
exports.DROPDOWN_CLASS = DROPDOWN_CLASS;
|
|
27
25
|
exports.DROPDOWN_CONTAINER_NAME = DROPDOWN_CONTAINER_NAME;
|
|
28
26
|
exports.DROPDOWN_CONTENT_CLASS = DROPDOWN_CONTENT_CLASS;
|
|
@@ -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;
|
|
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;"}
|
|
@@ -8,6 +8,7 @@ var decorators = require('lit/decorators');
|
|
|
8
8
|
var phoenix_light_lit_element = require('../../core/phoenix_light_lit_element.js');
|
|
9
9
|
var phoenix_custom_element = require('../../core/decorators/phoenix_custom_element.js');
|
|
10
10
|
var portal_constants = require('../portal/portal_constants.js');
|
|
11
|
+
var backdrop_constants = require('../backdrop/backdrop_constants.js');
|
|
11
12
|
var modal_constants = require('./modal_constants.js');
|
|
12
13
|
var ref = require('../../../../../external/lit-html/directives/ref.js');
|
|
13
14
|
|
|
@@ -93,11 +94,11 @@ exports.HModal = HModal_1 = class HModal extends phoenix_light_lit_element.Phoen
|
|
|
93
94
|
document.body.appendChild($portalTarget);
|
|
94
95
|
}
|
|
95
96
|
}
|
|
96
|
-
static
|
|
97
|
-
const $
|
|
98
|
-
if (!$
|
|
99
|
-
const $
|
|
100
|
-
document.body.appendChild($
|
|
97
|
+
static _appendBackdrop() {
|
|
98
|
+
const $backdrop = document.querySelector(backdrop_constants.BACKDROP_NAME);
|
|
99
|
+
if (!$backdrop) {
|
|
100
|
+
const $newBackdrop = document.createElement(backdrop_constants.BACKDROP_NAME);
|
|
101
|
+
document.body.appendChild($newBackdrop);
|
|
101
102
|
}
|
|
102
103
|
}
|
|
103
104
|
static isSomeModalOpen() {
|
|
@@ -106,7 +107,7 @@ exports.HModal = HModal_1 = class HModal extends phoenix_light_lit_element.Phoen
|
|
|
106
107
|
connectedCallback() {
|
|
107
108
|
super.connectedCallback();
|
|
108
109
|
HModal_1._appendModalsPortal();
|
|
109
|
-
HModal_1.
|
|
110
|
+
HModal_1._appendBackdrop();
|
|
110
111
|
document.addEventListener('keydown', this._keepFocusWithinModal);
|
|
111
112
|
document.addEventListener(modal_constants.MODAL_EVENTS.close, this._handleCloseFromCloseComponent);
|
|
112
113
|
}
|
|
@@ -150,7 +151,11 @@ exports.HModal = HModal_1 = class HModal extends phoenix_light_lit_element.Phoen
|
|
|
150
151
|
const openModalEvent = new CustomEvent(modal_constants.MODAL_EVENTS.opened, {
|
|
151
152
|
bubbles: true
|
|
152
153
|
});
|
|
154
|
+
const openBackdropEvent = new CustomEvent(backdrop_constants.BACKDROP_EVENTS.show, {
|
|
155
|
+
bubbles: true
|
|
156
|
+
});
|
|
153
157
|
this.dispatchEvent(openModalEvent);
|
|
158
|
+
this.dispatchEvent(openBackdropEvent);
|
|
154
159
|
}
|
|
155
160
|
async close() {
|
|
156
161
|
return new Promise((resolve) => {
|
|
@@ -173,7 +178,11 @@ exports.HModal = HModal_1 = class HModal extends phoenix_light_lit_element.Phoen
|
|
|
173
178
|
const closeModalEvent = new CustomEvent(modal_constants.MODAL_EVENTS.closed, {
|
|
174
179
|
bubbles: true
|
|
175
180
|
});
|
|
181
|
+
const closeBackdropEvent = new CustomEvent(backdrop_constants.BACKDROP_EVENTS.hide, {
|
|
182
|
+
bubbles: true
|
|
183
|
+
});
|
|
176
184
|
this.dispatchEvent(closeModalEvent);
|
|
185
|
+
this.dispatchEvent(closeBackdropEvent);
|
|
177
186
|
}
|
|
178
187
|
render() {
|
|
179
188
|
return lit.html `
|
|
@@ -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,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;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,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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -2,7 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
const
|
|
5
|
+
const BREAKPOINTS = {
|
|
6
|
+
xs: 576,
|
|
7
|
+
sm: 768,
|
|
8
|
+
md: 1000,
|
|
9
|
+
lg: 1200,
|
|
10
|
+
xl: 1440,
|
|
11
|
+
xxl: 1920
|
|
12
|
+
};
|
|
6
13
|
|
|
7
|
-
exports.
|
|
14
|
+
exports.BREAKPOINTS = BREAKPOINTS;
|
|
8
15
|
//# sourceMappingURL=global_constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;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;"}
|
|
@@ -10,7 +10,6 @@ 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
12
|
var modal_opener = require('./components/modal/modal_opener.js');
|
|
13
|
-
var modal_backdrop = require('./components/modal/modal_backdrop.js');
|
|
14
13
|
var modal_body = require('./components/modal/modal_body.js');
|
|
15
14
|
var modal_footer = require('./components/modal/modal_footer.js');
|
|
16
15
|
var modal_header = require('./components/modal/modal_header.js');
|
|
@@ -18,6 +17,7 @@ var modal_close = require('./components/modal/modal_close.js');
|
|
|
18
17
|
var keystrokes_controller = require('./controllers/keystrokes_controller/keystrokes_controller.js');
|
|
19
18
|
var btn_controller = require('./controllers/btn_controller.js');
|
|
20
19
|
var click_outside_controller = require('./controllers/click_outside_controller/click_outside_controller.js');
|
|
20
|
+
var backdrop = require('./components/backdrop/backdrop.js');
|
|
21
21
|
var relative_position_controller = require('./controllers/relative_position_controller/relative_position_controller.js');
|
|
22
22
|
var dropdown = require('./components/dropdown/dropdown.js');
|
|
23
23
|
var toggle_element_aria_controller = require('./controllers/toggle_element_aria_controller/toggle_element_aria_controller.js');
|
|
@@ -59,12 +59,6 @@ Object.defineProperty(exports, 'HModalOpener', {
|
|
|
59
59
|
return modal_opener.HModalOpener;
|
|
60
60
|
}
|
|
61
61
|
});
|
|
62
|
-
Object.defineProperty(exports, 'HModalBackdrop', {
|
|
63
|
-
enumerable: true,
|
|
64
|
-
get: function () {
|
|
65
|
-
return modal_backdrop.HModalBackdrop;
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
62
|
Object.defineProperty(exports, 'HModalBody', {
|
|
69
63
|
enumerable: true,
|
|
70
64
|
get: function () {
|
|
@@ -92,6 +86,12 @@ Object.defineProperty(exports, 'HModalClose', {
|
|
|
92
86
|
exports.KeystrokesController = keystrokes_controller.KeystrokesController;
|
|
93
87
|
exports.BtnController = btn_controller.BtnController;
|
|
94
88
|
exports.ClickOutsideController = click_outside_controller.ClickOutsideController;
|
|
89
|
+
Object.defineProperty(exports, 'HBackdrop', {
|
|
90
|
+
enumerable: true,
|
|
91
|
+
get: function () {
|
|
92
|
+
return backdrop.HBackdrop;
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
95
|
exports.RelativePositionController = relative_position_controller.RelativePositionController;
|
|
96
96
|
Object.defineProperty(exports, 'HDropdown', {
|
|
97
97
|
enumerable: true,
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import { TemplateResult } from 'lit';
|
|
1
2
|
import { PhoenixLightLitElement } from "../../core/phoenix_light_lit_element";
|
|
2
|
-
export declare class
|
|
3
|
+
export declare class HBackdrop extends PhoenixLightLitElement {
|
|
3
4
|
visible: boolean;
|
|
5
|
+
onClickArray: (() => void)[];
|
|
4
6
|
connectedCallback(): void;
|
|
5
7
|
disconnectedCallback(): void;
|
|
6
8
|
private _show;
|
|
@@ -8,5 +10,7 @@ export declare class HModalBackdrop extends PhoenixLightLitElement {
|
|
|
8
10
|
protected updated(): void;
|
|
9
11
|
private _disableScrolling;
|
|
10
12
|
private _enableScrolling;
|
|
11
|
-
|
|
13
|
+
addOnClick: (onClick: () => void) => void;
|
|
14
|
+
private _fireClickEvents;
|
|
15
|
+
protected render(): TemplateResult;
|
|
12
16
|
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { __decorate, __metadata } from '../../../../../external/tslib/tslib.es6.js';
|
|
2
|
+
import { html } from 'lit';
|
|
3
|
+
import { property, state } from 'lit/decorators';
|
|
4
|
+
import { PhoenixLightLitElement } from '../../core/phoenix_light_lit_element.js';
|
|
5
|
+
import { phoenixCustomElement } from '../../core/decorators/phoenix_custom_element.js';
|
|
6
|
+
import { BACKDROP_EVENTS, BACKDROP_CLASS } from './backdrop_constants.js';
|
|
7
|
+
|
|
8
|
+
let HBackdrop = class HBackdrop extends PhoenixLightLitElement {
|
|
9
|
+
constructor() {
|
|
10
|
+
super(...arguments);
|
|
11
|
+
this.visible = false;
|
|
12
|
+
this.onClickArray = [];
|
|
13
|
+
this._show = () => {
|
|
14
|
+
this.visible = true;
|
|
15
|
+
};
|
|
16
|
+
this._hide = () => {
|
|
17
|
+
this.visible = false;
|
|
18
|
+
};
|
|
19
|
+
this.addOnClick = (onClick) => {
|
|
20
|
+
this.onClickArray = [...this.onClickArray, onClick];
|
|
21
|
+
};
|
|
22
|
+
this._fireClickEvents = () => {
|
|
23
|
+
this.onClickArray.forEach((clickEvent) => {
|
|
24
|
+
clickEvent();
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
connectedCallback() {
|
|
29
|
+
super.connectedCallback();
|
|
30
|
+
document.addEventListener(BACKDROP_EVENTS.show, this._show);
|
|
31
|
+
document.addEventListener(BACKDROP_EVENTS.hide, this._hide);
|
|
32
|
+
}
|
|
33
|
+
disconnectedCallback() {
|
|
34
|
+
super.disconnectedCallback();
|
|
35
|
+
document.removeEventListener(BACKDROP_EVENTS.show, this._show);
|
|
36
|
+
document.removeEventListener(BACKDROP_EVENTS.hide, this._hide);
|
|
37
|
+
}
|
|
38
|
+
updated() {
|
|
39
|
+
if (this.visible)
|
|
40
|
+
this._disableScrolling();
|
|
41
|
+
else
|
|
42
|
+
this._enableScrolling();
|
|
43
|
+
}
|
|
44
|
+
_disableScrolling() {
|
|
45
|
+
document.body.style.overflow = 'hidden';
|
|
46
|
+
document.body.style.paddingRight = '15px';
|
|
47
|
+
}
|
|
48
|
+
_enableScrolling() {
|
|
49
|
+
document.body.style.removeProperty('overflow');
|
|
50
|
+
document.body.style.removeProperty('padding-right');
|
|
51
|
+
}
|
|
52
|
+
render() {
|
|
53
|
+
return html ` <div aria-hidden="true" ?hidden="${!this.visible}" @click="${this._fireClickEvents}" class="${BACKDROP_CLASS}"></div>`;
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
__decorate([
|
|
57
|
+
property({ type: Boolean }),
|
|
58
|
+
__metadata("design:type", Object)
|
|
59
|
+
], HBackdrop.prototype, "visible", void 0);
|
|
60
|
+
__decorate([
|
|
61
|
+
state(),
|
|
62
|
+
__metadata("design:type", Array)
|
|
63
|
+
], HBackdrop.prototype, "onClickArray", void 0);
|
|
64
|
+
HBackdrop = __decorate([
|
|
65
|
+
phoenixCustomElement('h-backdrop')
|
|
66
|
+
], HBackdrop);
|
|
67
|
+
|
|
68
|
+
export { HBackdrop };
|
|
69
|
+
//# sourceMappingURL=backdrop.js.map
|
|
@@ -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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
const BACKDROP_NAME = 'h-backdrop';
|
|
2
|
+
const BACKDROP_CLASS = 'backdrop';
|
|
3
|
+
const BACKDROP_EVENT = 'backdrop';
|
|
4
|
+
const BACKDROP_EVENTS = {
|
|
5
|
+
show: `${BACKDROP_EVENT}.show`,
|
|
6
|
+
hide: `${BACKDROP_EVENT}.hide`
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export { BACKDROP_CLASS, BACKDROP_EVENTS, BACKDROP_NAME };
|
|
10
|
+
//# sourceMappingURL=backdrop_constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backdrop_types.js","sourceRoot":"","sources":["../../../../../../../src/components/backdrop/backdrop_types.ts"],"names":[],"mappings":""}
|
|
@@ -14,14 +14,17 @@ export declare class HDropdown extends PhoenixLightLitElement implements IDropdo
|
|
|
14
14
|
private _clickOutsideController;
|
|
15
15
|
connectedCallback(): void;
|
|
16
16
|
private _appendDropdownPortal;
|
|
17
|
-
private
|
|
17
|
+
private _appendBackdrop;
|
|
18
|
+
private _closeDropdown;
|
|
18
19
|
private _setupListeners;
|
|
19
20
|
private _handleClickOutside;
|
|
20
21
|
toggle: () => void;
|
|
21
22
|
show: () => Promise<void>;
|
|
23
|
+
private _dispatchShowDropdownEvent;
|
|
22
24
|
hide: () => Promise<void>;
|
|
25
|
+
private _dispatchHideDropdownEvent;
|
|
23
26
|
private _hoverToggle;
|
|
24
|
-
private
|
|
27
|
+
private _isHoveredWithinDropdown;
|
|
25
28
|
private _positionDropdownContent;
|
|
26
29
|
disconnectedCallback(): void;
|
|
27
30
|
render(): TemplateResult;
|
|
@@ -4,11 +4,12 @@ import { property } from 'lit/decorators';
|
|
|
4
4
|
import { PhoenixLightLitElement } from '../../core/phoenix_light_lit_element.js';
|
|
5
5
|
import { phoenixCustomElement } from '../../core/decorators/phoenix_custom_element.js';
|
|
6
6
|
import { PORTAL_TARGET_COMPONENT_NAME, PORTAL_TARGET_NAME_PROP } from '../portal/portal_constants.js';
|
|
7
|
-
import {
|
|
7
|
+
import { BACKDROP_EVENTS, BACKDROP_NAME } from '../backdrop/backdrop_constants.js';
|
|
8
|
+
import { DEFAULT_DROPDOWN_PORTAL_NAME, DROPDOWN_CONTAINER_NAME, DROPDOWN_CONTENT_VISIBLE_CLASS, DROPDOWN_CONTENT_SHOW, DROPDOWN_EVENTS, DROPDOWN_CONTENT_HIDE, DROPDOWN_CONTENT_NAME, DROPDOWN_TOGGLER_NAME } from './dropdown_constants.js';
|
|
9
|
+
import { BREAKPOINTS } from '../../global_constants.js';
|
|
8
10
|
import { CLICK_OUTSIDE_CONTROLLER_MESSAGES } from '../../controllers/click_outside_controller/click_outside_controller_messages.js';
|
|
9
11
|
import { ClickOutsideController } from '../../controllers/click_outside_controller/click_outside_controller.js';
|
|
10
12
|
import { DIRECTIONS } from '../../controllers/relative_position_controller/relative_position_controller_constants.js';
|
|
11
|
-
import { MOBILE_SCREEN_WIDTH } from '../../global_constants.js';
|
|
12
13
|
import { RelativePositionController } from '../../controllers/relative_position_controller/relative_position_controller.js';
|
|
13
14
|
|
|
14
15
|
let HDropdown = class HDropdown extends PhoenixLightLitElement {
|
|
@@ -20,14 +21,19 @@ let HDropdown = class HDropdown extends PhoenixLightLitElement {
|
|
|
20
21
|
this.name = '';
|
|
21
22
|
this.transition = 'direction';
|
|
22
23
|
this.portalTarget = DEFAULT_DROPDOWN_PORTAL_NAME;
|
|
24
|
+
this._closeDropdown = () => {
|
|
25
|
+
const dropdowns = document.querySelectorAll(DROPDOWN_CONTAINER_NAME);
|
|
26
|
+
dropdowns.forEach((dropdown) => {
|
|
27
|
+
const opened = dropdown.getAttribute('opened');
|
|
28
|
+
if (opened !== null)
|
|
29
|
+
dropdown.hide();
|
|
30
|
+
});
|
|
31
|
+
};
|
|
23
32
|
this.toggle = () => {
|
|
24
33
|
this.opened ? this.hide() : this.show();
|
|
25
34
|
};
|
|
26
35
|
this.show = async () => {
|
|
27
|
-
|
|
28
|
-
bubbles: true
|
|
29
|
-
});
|
|
30
|
-
this.dispatchEvent(showDropdownEvent);
|
|
36
|
+
this._dispatchShowDropdownEvent();
|
|
31
37
|
return new Promise((resolve) => {
|
|
32
38
|
var _a;
|
|
33
39
|
(_a = this.$dropdownContent) === null || _a === void 0 ? void 0 : _a.classList.add(DROPDOWN_CONTENT_VISIBLE_CLASS, `${DROPDOWN_CONTENT_SHOW}-${this.transition}-start`);
|
|
@@ -40,42 +46,60 @@ let HDropdown = class HDropdown extends PhoenixLightLitElement {
|
|
|
40
46
|
setTimeout(() => {
|
|
41
47
|
var _a;
|
|
42
48
|
this.opened = true;
|
|
43
|
-
this.
|
|
49
|
+
this._dispatchShowDropdownEvent();
|
|
44
50
|
(_a = this.$dropdownContent) === null || _a === void 0 ? void 0 : _a.classList.remove(`${DROPDOWN_CONTENT_SHOW}-${this.transition}-start`, `${DROPDOWN_CONTENT_SHOW}-${this.transition}-end`);
|
|
45
51
|
resolve();
|
|
46
52
|
}, transitionDuration);
|
|
47
53
|
});
|
|
48
54
|
});
|
|
49
55
|
};
|
|
50
|
-
this.
|
|
56
|
+
this._dispatchShowDropdownEvent = () => {
|
|
57
|
+
const showDropdownEvent = new Event(DROPDOWN_EVENTS.show, {
|
|
58
|
+
bubbles: true
|
|
59
|
+
});
|
|
60
|
+
this.dispatchEvent(showDropdownEvent);
|
|
61
|
+
if (window.innerWidth >= BREAKPOINTS.xs)
|
|
62
|
+
return;
|
|
63
|
+
const showBackdropEvent = new Event(BACKDROP_EVENTS.show, {
|
|
64
|
+
bubbles: true
|
|
65
|
+
});
|
|
66
|
+
this.dispatchEvent(showBackdropEvent);
|
|
67
|
+
};
|
|
68
|
+
this.hide = async () => new Promise((resolve) => {
|
|
69
|
+
const transitionDuration = parseFloat(getComputedStyle(this.$dropdownContent || this).transitionDuration) * 1000;
|
|
70
|
+
window.requestAnimationFrame(() => {
|
|
71
|
+
var _a, _b;
|
|
72
|
+
(_a = this.$dropdownContent) === null || _a === void 0 ? void 0 : _a.classList.remove(`${DROPDOWN_CONTENT_HIDE}-${this.transition}-start`);
|
|
73
|
+
(_b = this.$dropdownContent) === null || _b === void 0 ? void 0 : _b.classList.add(`${DROPDOWN_CONTENT_HIDE}-${this.transition}-end`);
|
|
74
|
+
setTimeout(() => {
|
|
75
|
+
var _a;
|
|
76
|
+
(_a = this.$dropdownContent) === null || _a === void 0 ? void 0 : _a.classList.remove(`${DROPDOWN_CONTENT_HIDE}-${this.transition}-start`, `${DROPDOWN_CONTENT_HIDE}-${this.transition}-end`);
|
|
77
|
+
this.opened = false;
|
|
78
|
+
this._dispatchHideDropdownEvent();
|
|
79
|
+
resolve();
|
|
80
|
+
}, transitionDuration);
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
this._dispatchHideDropdownEvent = () => {
|
|
51
84
|
const hideDropdownEvent = new Event(DROPDOWN_EVENTS.hide, {
|
|
52
85
|
bubbles: true
|
|
53
86
|
});
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
(_b = this.$dropdownContent) === null || _b === void 0 ? void 0 : _b.classList.add(`${DROPDOWN_CONTENT_HIDE}-${this.transition}-end`);
|
|
60
|
-
setTimeout(() => {
|
|
61
|
-
var _a;
|
|
62
|
-
(_a = this.$dropdownContent) === null || _a === void 0 ? void 0 : _a.classList.remove(`${DROPDOWN_CONTENT_HIDE}-${this.transition}-start`, `${DROPDOWN_CONTENT_HIDE}-${this.transition}-end`);
|
|
63
|
-
this.opened = false;
|
|
64
|
-
this.dispatchEvent(hideDropdownEvent);
|
|
65
|
-
resolve();
|
|
66
|
-
}, transitionDuration);
|
|
67
|
-
});
|
|
87
|
+
this.dispatchEvent(hideDropdownEvent);
|
|
88
|
+
if (window.innerWidth >= BREAKPOINTS.xs)
|
|
89
|
+
return;
|
|
90
|
+
const hideBackdropEvent = new Event(BACKDROP_EVENTS.hide, {
|
|
91
|
+
bubbles: true
|
|
68
92
|
});
|
|
93
|
+
this.dispatchEvent(hideBackdropEvent);
|
|
69
94
|
};
|
|
70
95
|
this._hoverToggle = async (ev) => {
|
|
96
|
+
if (window.innerWidth < BREAKPOINTS.xs)
|
|
97
|
+
return;
|
|
71
98
|
if (!ev.target) {
|
|
72
99
|
await this.hide();
|
|
73
100
|
return;
|
|
74
101
|
}
|
|
75
|
-
const isHoveredWithinDropdown = this.
|
|
76
|
-
(this.$dropdownContent && this._isDescendantOfParent(this.$dropdownContent, ev.target)) ||
|
|
77
|
-
ev.target === this ||
|
|
78
|
-
ev.target === this.$dropdownContent;
|
|
102
|
+
const isHoveredWithinDropdown = this._isHoveredWithinDropdown(ev.target);
|
|
79
103
|
if (isHoveredWithinDropdown && !this.opened) {
|
|
80
104
|
await this.show();
|
|
81
105
|
return;
|
|
@@ -85,15 +109,6 @@ let HDropdown = class HDropdown extends PhoenixLightLitElement {
|
|
|
85
109
|
return;
|
|
86
110
|
}
|
|
87
111
|
};
|
|
88
|
-
this._isDescendantOfParent = function (parent, child) {
|
|
89
|
-
let parentNode = child.parentNode;
|
|
90
|
-
while (parentNode) {
|
|
91
|
-
if (parentNode === parent)
|
|
92
|
-
return true;
|
|
93
|
-
parentNode = parentNode.parentNode;
|
|
94
|
-
}
|
|
95
|
-
return false;
|
|
96
|
-
};
|
|
97
112
|
this._positionDropdownContent = () => {
|
|
98
113
|
requestAnimationFrame(() => {
|
|
99
114
|
this.opened && this._positionController.position();
|
|
@@ -103,7 +118,7 @@ let HDropdown = class HDropdown extends PhoenixLightLitElement {
|
|
|
103
118
|
connectedCallback() {
|
|
104
119
|
super.connectedCallback();
|
|
105
120
|
this._appendDropdownPortal();
|
|
106
|
-
this.
|
|
121
|
+
this._appendBackdrop();
|
|
107
122
|
if (!this.$dropdownContent)
|
|
108
123
|
this.$dropdownContent = this.querySelector(DROPDOWN_CONTENT_NAME);
|
|
109
124
|
if (!this.$dropdownToggler)
|
|
@@ -131,20 +146,20 @@ let HDropdown = class HDropdown extends PhoenixLightLitElement {
|
|
|
131
146
|
document.body.appendChild($portalTarget);
|
|
132
147
|
}
|
|
133
148
|
}
|
|
134
|
-
|
|
135
|
-
const $
|
|
136
|
-
if (!$
|
|
137
|
-
const $
|
|
138
|
-
document.body.appendChild($
|
|
149
|
+
_appendBackdrop() {
|
|
150
|
+
const $backdrop = document.querySelector(BACKDROP_NAME);
|
|
151
|
+
if (!$backdrop) {
|
|
152
|
+
const $newBackdrop = document.createElement(BACKDROP_NAME);
|
|
153
|
+
document.body.appendChild($newBackdrop);
|
|
154
|
+
$newBackdrop.addOnClick(this._closeDropdown);
|
|
139
155
|
}
|
|
140
156
|
}
|
|
141
157
|
_setupListeners() {
|
|
142
158
|
var _a;
|
|
143
159
|
this.addEventListener(CLICK_OUTSIDE_CONTROLLER_MESSAGES.clickedOutside, this._handleClickOutside);
|
|
144
160
|
(_a = this.$dropdownToggler) === null || _a === void 0 ? void 0 : _a.addEventListener('toggle', this.toggle);
|
|
145
|
-
if (this.toggleOnHover
|
|
161
|
+
if (this.toggleOnHover)
|
|
146
162
|
document.addEventListener('mouseover', this._hoverToggle);
|
|
147
|
-
}
|
|
148
163
|
}
|
|
149
164
|
_handleClickOutside() {
|
|
150
165
|
var _a;
|
|
@@ -153,13 +168,17 @@ let HDropdown = class HDropdown extends PhoenixLightLitElement {
|
|
|
153
168
|
this.hide();
|
|
154
169
|
(_a = this.$dropdownToggler) === null || _a === void 0 ? void 0 : _a.setAttribute('aria-expanded', 'false');
|
|
155
170
|
}
|
|
171
|
+
_isHoveredWithinDropdown(element) {
|
|
172
|
+
const isDescendantOfDropdown = element.closest(`${DROPDOWN_CONTAINER_NAME}[name="${this.name}"]`) !== null;
|
|
173
|
+
const isDescendantOfContent = this.$dropdownContent && element.closest(`${DROPDOWN_CONTENT_NAME}[name="${this.name}"]`) !== null;
|
|
174
|
+
return isDescendantOfDropdown || isDescendantOfContent || element === this || element === this.$dropdownContent;
|
|
175
|
+
}
|
|
156
176
|
disconnectedCallback() {
|
|
157
177
|
var _a;
|
|
158
178
|
super.disconnectedCallback();
|
|
159
179
|
(_a = this.$dropdownToggler) === null || _a === void 0 ? void 0 : _a.removeEventListener('toggle', this.toggle);
|
|
160
|
-
if (this.toggleOnHover
|
|
180
|
+
if (this.toggleOnHover)
|
|
161
181
|
document.removeEventListener('mouseover', this._hoverToggle);
|
|
162
|
-
}
|
|
163
182
|
this.opened = false;
|
|
164
183
|
}
|
|
165
184
|
render() {
|
|
@@ -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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,6 @@ const DROPDOWN_NAME = 'dropdown';
|
|
|
2
2
|
const DROPDOWN_CONTAINER_NAME = `h-${DROPDOWN_NAME}`;
|
|
3
3
|
const DROPDOWN_TOGGLER_NAME = `${DROPDOWN_CONTAINER_NAME}-toggler`;
|
|
4
4
|
const DROPDOWN_CONTENT_NAME = `${DROPDOWN_CONTAINER_NAME}-content`;
|
|
5
|
-
const DROPDOWN_BACKDROP_NAME = `${DROPDOWN_CONTAINER_NAME}-backdrop`;
|
|
6
5
|
const DEFAULT_DROPDOWN_PORTAL_NAME = 'dropdown-portal';
|
|
7
6
|
const DROPDOWN_EVENT = 'dropdown';
|
|
8
7
|
const DROPDOWN_EVENTS = {
|
|
@@ -17,5 +16,5 @@ const DROPDOWN_CONTENT_VISIBLE_CLASS = `${DROPDOWN_CONTENT_CLASS}_visible`;
|
|
|
17
16
|
const DROPDOWN_CONTENT_SHOW = `${DROPDOWN_CONTENT_CLASS}_show`;
|
|
18
17
|
const DROPDOWN_CONTENT_HIDE = `${DROPDOWN_CONTENT_CLASS}_hide`;
|
|
19
18
|
|
|
20
|
-
export { DEFAULT_DROPDOWN_PORTAL_NAME,
|
|
19
|
+
export { DEFAULT_DROPDOWN_PORTAL_NAME, DROPDOWN_CLASS, DROPDOWN_CONTAINER_NAME, DROPDOWN_CONTENT_CLASS, DROPDOWN_CONTENT_HIDE, DROPDOWN_CONTENT_NAME, DROPDOWN_CONTENT_SHOW, DROPDOWN_CONTENT_VISIBLE_CLASS, DROPDOWN_EVENTS, DROPDOWN_NAME, DROPDOWN_OPENED_ATTRIBUTE_NAME, DROPDOWN_TOGGLER_CLASS, DROPDOWN_TOGGLER_NAME };
|
|
21
20
|
//# sourceMappingURL=dropdown_constants.js.map
|
|
@@ -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;
|
|
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;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PropertyValues, 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;
|
|
@@ -13,7 +13,7 @@ export declare class HModal extends PhoenixLightLitElement {
|
|
|
13
13
|
private _propsChangeStrategies;
|
|
14
14
|
private static openModals;
|
|
15
15
|
private static _appendModalsPortal;
|
|
16
|
-
private static
|
|
16
|
+
private static _appendBackdrop;
|
|
17
17
|
static isSomeModalOpen(): boolean;
|
|
18
18
|
constructor();
|
|
19
19
|
connectedCallback(): void;
|
|
@@ -4,6 +4,7 @@ import { property, state } from 'lit/decorators';
|
|
|
4
4
|
import { PhoenixLightLitElement } from '../../core/phoenix_light_lit_element.js';
|
|
5
5
|
import { phoenixCustomElement } from '../../core/decorators/phoenix_custom_element.js';
|
|
6
6
|
import { PORTAL_TARGET_NAME_PROP } from '../portal/portal_constants.js';
|
|
7
|
+
import { BACKDROP_NAME, BACKDROP_EVENTS } from '../backdrop/backdrop_constants.js';
|
|
7
8
|
import { MODAL_OPENED_PROP, FOCUSABLE_ELEMENTS_WITHIN_MODAL, MODALS_PORTAL_NAME, MODAL_EVENTS } from './modal_constants.js';
|
|
8
9
|
import { createRef as e, ref as n } from '../../../../../external/lit-html/directives/ref.js';
|
|
9
10
|
|
|
@@ -89,11 +90,11 @@ let HModal = HModal_1 = class HModal extends PhoenixLightLitElement {
|
|
|
89
90
|
document.body.appendChild($portalTarget);
|
|
90
91
|
}
|
|
91
92
|
}
|
|
92
|
-
static
|
|
93
|
-
const $
|
|
94
|
-
if (!$
|
|
95
|
-
const $
|
|
96
|
-
document.body.appendChild($
|
|
93
|
+
static _appendBackdrop() {
|
|
94
|
+
const $backdrop = document.querySelector(BACKDROP_NAME);
|
|
95
|
+
if (!$backdrop) {
|
|
96
|
+
const $newBackdrop = document.createElement(BACKDROP_NAME);
|
|
97
|
+
document.body.appendChild($newBackdrop);
|
|
97
98
|
}
|
|
98
99
|
}
|
|
99
100
|
static isSomeModalOpen() {
|
|
@@ -102,7 +103,7 @@ let HModal = HModal_1 = class HModal extends PhoenixLightLitElement {
|
|
|
102
103
|
connectedCallback() {
|
|
103
104
|
super.connectedCallback();
|
|
104
105
|
HModal_1._appendModalsPortal();
|
|
105
|
-
HModal_1.
|
|
106
|
+
HModal_1._appendBackdrop();
|
|
106
107
|
document.addEventListener('keydown', this._keepFocusWithinModal);
|
|
107
108
|
document.addEventListener(MODAL_EVENTS.close, this._handleCloseFromCloseComponent);
|
|
108
109
|
}
|
|
@@ -146,7 +147,11 @@ let HModal = HModal_1 = class HModal extends PhoenixLightLitElement {
|
|
|
146
147
|
const openModalEvent = new CustomEvent(MODAL_EVENTS.opened, {
|
|
147
148
|
bubbles: true
|
|
148
149
|
});
|
|
150
|
+
const openBackdropEvent = new CustomEvent(BACKDROP_EVENTS.show, {
|
|
151
|
+
bubbles: true
|
|
152
|
+
});
|
|
149
153
|
this.dispatchEvent(openModalEvent);
|
|
154
|
+
this.dispatchEvent(openBackdropEvent);
|
|
150
155
|
}
|
|
151
156
|
async close() {
|
|
152
157
|
return new Promise((resolve) => {
|
|
@@ -169,7 +174,11 @@ let HModal = HModal_1 = class HModal extends PhoenixLightLitElement {
|
|
|
169
174
|
const closeModalEvent = new CustomEvent(MODAL_EVENTS.closed, {
|
|
170
175
|
bubbles: true
|
|
171
176
|
});
|
|
177
|
+
const closeBackdropEvent = new CustomEvent(BACKDROP_EVENTS.hide, {
|
|
178
|
+
bubbles: true
|
|
179
|
+
});
|
|
172
180
|
this.dispatchEvent(closeModalEvent);
|
|
181
|
+
this.dispatchEvent(closeBackdropEvent);
|
|
173
182
|
}
|
|
174
183
|
render() {
|
|
175
184
|
return html `
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA,uCAAuC,4CAAgD;AACvF;AACA;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;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,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;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;AACA;AACA;"}
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -7,7 +7,6 @@ export { HPortal } from './components/portal/portal';
|
|
|
7
7
|
export { HPortalTarget } from './components/portal/portal_target';
|
|
8
8
|
export { HModal } from './components/modal/modal';
|
|
9
9
|
export { HModalOpener } from './components/modal/modal_opener';
|
|
10
|
-
export { HModalBackdrop } from './components/modal/modal_backdrop';
|
|
11
10
|
export { HModalBody } from './components/modal/modal_body';
|
|
12
11
|
export { HModalFooter } from './components/modal/modal_footer';
|
|
13
12
|
export { HModalHeader } from './components/modal/modal_header';
|
|
@@ -20,3 +19,4 @@ export { ClickOutsideController } from './controllers/click_outside_controller/c
|
|
|
20
19
|
export { KeystrokesController } from './controllers/keystrokes_controller/keystrokes_controller';
|
|
21
20
|
export { RelativePositionController } from './controllers/relative_position_controller/relative_position_controller';
|
|
22
21
|
export { ToggleElementAriaController } from './controllers/toggle_element_aria_controller/toggle_element_aria_controller';
|
|
22
|
+
export { HBackdrop } from './components/backdrop/backdrop';
|
|
@@ -6,7 +6,6 @@ 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
8
|
export { HModalOpener } from './components/modal/modal_opener.js';
|
|
9
|
-
export { HModalBackdrop } from './components/modal/modal_backdrop.js';
|
|
10
9
|
export { HModalBody } from './components/modal/modal_body.js';
|
|
11
10
|
export { HModalFooter } from './components/modal/modal_footer.js';
|
|
12
11
|
export { HModalHeader } from './components/modal/modal_header.js';
|
|
@@ -14,6 +13,7 @@ export { HModalClose } from './components/modal/modal_close.js';
|
|
|
14
13
|
export { KeystrokesController } from './controllers/keystrokes_controller/keystrokes_controller.js';
|
|
15
14
|
export { BtnController } from './controllers/btn_controller.js';
|
|
16
15
|
export { ClickOutsideController } from './controllers/click_outside_controller/click_outside_controller.js';
|
|
16
|
+
export { HBackdrop } from './components/backdrop/backdrop.js';
|
|
17
17
|
export { RelativePositionController } from './controllers/relative_position_controller/relative_position_controller.js';
|
|
18
18
|
export { HDropdown } from './components/dropdown/dropdown.js';
|
|
19
19
|
export { ToggleElementAriaController } from './controllers/toggle_element_aria_controller/toggle_element_aria_controller.js';
|
package/package.json
CHANGED
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var tslib_es6 = require('../../../../../external/tslib/tslib.es6.js');
|
|
6
|
-
var lit = require('lit');
|
|
7
|
-
var decorators = require('lit/decorators');
|
|
8
|
-
var phoenix_light_lit_element = require('../../core/phoenix_light_lit_element.js');
|
|
9
|
-
var phoenix_custom_element = require('../../core/decorators/phoenix_custom_element.js');
|
|
10
|
-
var modal_constants = require('./modal_constants.js');
|
|
11
|
-
var modal = require('./modal.js');
|
|
12
|
-
|
|
13
|
-
exports.HModalBackdrop = class HModalBackdrop extends phoenix_light_lit_element.PhoenixLightLitElement {
|
|
14
|
-
constructor() {
|
|
15
|
-
super(...arguments);
|
|
16
|
-
this.visible = false;
|
|
17
|
-
this._show = () => {
|
|
18
|
-
if (!this.visible) {
|
|
19
|
-
this.visible = true;
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
this._hide = () => {
|
|
23
|
-
if (!modal.HModal.isSomeModalOpen()) {
|
|
24
|
-
this.visible = false;
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
connectedCallback() {
|
|
29
|
-
super.connectedCallback();
|
|
30
|
-
document.addEventListener(modal_constants.MODAL_EVENTS.opened, this._show);
|
|
31
|
-
document.addEventListener(modal_constants.MODAL_EVENTS.closed, this._hide);
|
|
32
|
-
}
|
|
33
|
-
disconnectedCallback() {
|
|
34
|
-
super.disconnectedCallback();
|
|
35
|
-
document.removeEventListener(modal_constants.MODAL_EVENTS.opened, this._show);
|
|
36
|
-
document.removeEventListener(modal_constants.MODAL_EVENTS.closed, this._hide);
|
|
37
|
-
}
|
|
38
|
-
updated() {
|
|
39
|
-
if (modal.HModal.isSomeModalOpen()) {
|
|
40
|
-
this.visible = true;
|
|
41
|
-
this._disableScrolling();
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
this._enableScrolling();
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
_disableScrolling() {
|
|
48
|
-
document.body.style.overflow = 'hidden';
|
|
49
|
-
document.body.style.paddingRight = '15px';
|
|
50
|
-
}
|
|
51
|
-
_enableScrolling() {
|
|
52
|
-
document.body.style.removeProperty('overflow');
|
|
53
|
-
document.body.style.removeProperty('padding-right');
|
|
54
|
-
}
|
|
55
|
-
render() {
|
|
56
|
-
return lit.html ` <div aria-hidden="true" ?hidden="${!this.visible}" class="modal-backdrop"></div>`;
|
|
57
|
-
}
|
|
58
|
-
};
|
|
59
|
-
tslib_es6.__decorate([
|
|
60
|
-
decorators.property({ type: Boolean }),
|
|
61
|
-
tslib_es6.__metadata("design:type", Object)
|
|
62
|
-
], exports.HModalBackdrop.prototype, "visible", void 0);
|
|
63
|
-
exports.HModalBackdrop = tslib_es6.__decorate([
|
|
64
|
-
phoenix_custom_element.phoenixCustomElement('h-modal-backdrop')
|
|
65
|
-
], exports.HModalBackdrop);
|
|
66
|
-
//# sourceMappingURL=modal_backdrop.js.map
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { TemplateResult } from 'lit';
|
|
2
|
-
import { PhoenixLightLitElement } from "../../core/phoenix_light_lit_element";
|
|
3
|
-
export declare class HDropdownBackdrop extends PhoenixLightLitElement {
|
|
4
|
-
visible: boolean;
|
|
5
|
-
connectedCallback(): void;
|
|
6
|
-
disconnectedCallback(): void;
|
|
7
|
-
private _show;
|
|
8
|
-
private _hide;
|
|
9
|
-
private _closeDropdown;
|
|
10
|
-
protected render(): TemplateResult;
|
|
11
|
-
}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { __decorate, __metadata } from "tslib";
|
|
2
|
-
import { DROPDOWN_BACKDROP_CLASS, DROPDOWN_CONTAINER_NAME, DROPDOWN_EVENTS } from '@phoenixRoot/components/dropdown/dropdown_constants';
|
|
3
|
-
import { html } from 'lit';
|
|
4
|
-
import './dropdown_types';
|
|
5
|
-
import { PhoenixLightLitElement } from '@phoenixRoot/core/phoenix_light_lit_element';
|
|
6
|
-
import { phoenixCustomElement } from '@phoenixRoot/core/decorators/phoenix_custom_element';
|
|
7
|
-
import { property } from 'lit/decorators';
|
|
8
|
-
let HDropdownBackdrop = class HDropdownBackdrop extends PhoenixLightLitElement {
|
|
9
|
-
constructor() {
|
|
10
|
-
super(...arguments);
|
|
11
|
-
this.visible = false;
|
|
12
|
-
this._show = () => {
|
|
13
|
-
this.visible = true;
|
|
14
|
-
};
|
|
15
|
-
this._hide = () => {
|
|
16
|
-
this.visible = false;
|
|
17
|
-
};
|
|
18
|
-
this._closeDropdown = () => {
|
|
19
|
-
const dropdowns = document.querySelectorAll(DROPDOWN_CONTAINER_NAME);
|
|
20
|
-
dropdowns.forEach((dropdown) => {
|
|
21
|
-
const opened = dropdown.getAttribute('opened');
|
|
22
|
-
if (opened !== null)
|
|
23
|
-
dropdown.hide();
|
|
24
|
-
});
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
connectedCallback() {
|
|
28
|
-
super.connectedCallback();
|
|
29
|
-
document.addEventListener(DROPDOWN_EVENTS.show, this._show);
|
|
30
|
-
document.addEventListener(DROPDOWN_EVENTS.hide, this._hide);
|
|
31
|
-
}
|
|
32
|
-
disconnectedCallback() {
|
|
33
|
-
super.disconnectedCallback();
|
|
34
|
-
document.removeEventListener(DROPDOWN_EVENTS.show, this._show);
|
|
35
|
-
document.removeEventListener(DROPDOWN_EVENTS.hide, this._hide);
|
|
36
|
-
}
|
|
37
|
-
render() {
|
|
38
|
-
return html ` <div
|
|
39
|
-
aria-hidden="true"
|
|
40
|
-
?hidden="${!this.visible}"
|
|
41
|
-
@click="${this._closeDropdown}"
|
|
42
|
-
class="${DROPDOWN_BACKDROP_CLASS}"
|
|
43
|
-
></div>`;
|
|
44
|
-
}
|
|
45
|
-
};
|
|
46
|
-
__decorate([
|
|
47
|
-
property({ type: Boolean }),
|
|
48
|
-
__metadata("design:type", Object)
|
|
49
|
-
], HDropdownBackdrop.prototype, "visible", void 0);
|
|
50
|
-
HDropdownBackdrop = __decorate([
|
|
51
|
-
phoenixCustomElement('h-dropdown-backdrop')
|
|
52
|
-
], HDropdownBackdrop);
|
|
53
|
-
export { HDropdownBackdrop };
|
|
54
|
-
//# sourceMappingURL=dropdown_backdrop.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dropdown_backdrop.js","sourceRoot":"","sources":["../../../../../../../src/components/dropdown/dropdown_backdrop.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,qDAAqD,CAAC;AACxI,OAAO,EAAkB,IAAI,EAAE,MAAM,KAAK,CAAC;AAE3C,OAA0B,kBAAkB,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qDAAqD,CAAC;AAC3F,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,IAAa,iBAAiB,GAA9B,MAAa,iBAAkB,SAAQ,sBAAsB;IAA7D;;QAEI,YAAO,GAAG,KAAK,CAAC;QAgBR,UAAK,GAAG,GAAG,EAAE;YACjB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACxB,CAAC,CAAC;QAEM,UAAK,GAAG,GAAG,EAAE;YACjB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACzB,CAAC,CAAC;QAEM,mBAAc,GAAG,GAAG,EAAE;YAC1B,MAAM,SAAS,GAAG,QAAQ,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;YAErE,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;gBAC3B,MAAM,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;gBAC/C,IAAI,MAAM,KAAK,IAAI;oBAAG,QAAiC,CAAC,IAAI,EAAE,CAAC;YACnE,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;IAUN,CAAC;IAvCU,iBAAiB;QACpB,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAE1B,QAAQ,CAAC,gBAAgB,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5D,QAAQ,CAAC,gBAAgB,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAChE,CAAC;IAEM,oBAAoB;QACvB,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAE7B,QAAQ,CAAC,mBAAmB,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/D,QAAQ,CAAC,mBAAmB,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACnE,CAAC;IAmBS,MAAM;QACZ,OAAO,IAAI,CAAA;;uBAEI,CAAC,IAAI,CAAC,OAAO;sBACd,IAAI,CAAC,cAAc;qBACpB,uBAAuB;gBAC5B,CAAC;IACb,CAAC;CACJ,CAAA;AAzCG;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;;kDACZ;AAFP,iBAAiB;IAD7B,oBAAoB,CAAC,qBAAqB,CAAC;GAC/B,iBAAiB,CA2C7B;SA3CY,iBAAiB"}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { __decorate, __metadata } from '../../../../../external/tslib/tslib.es6.js';
|
|
2
|
-
import { html } from 'lit';
|
|
3
|
-
import { property } from 'lit/decorators';
|
|
4
|
-
import { PhoenixLightLitElement } from '../../core/phoenix_light_lit_element.js';
|
|
5
|
-
import { phoenixCustomElement } from '../../core/decorators/phoenix_custom_element.js';
|
|
6
|
-
import { MODAL_EVENTS } from './modal_constants.js';
|
|
7
|
-
import { HModal } from './modal.js';
|
|
8
|
-
|
|
9
|
-
let HModalBackdrop = class HModalBackdrop extends PhoenixLightLitElement {
|
|
10
|
-
constructor() {
|
|
11
|
-
super(...arguments);
|
|
12
|
-
this.visible = false;
|
|
13
|
-
this._show = () => {
|
|
14
|
-
if (!this.visible) {
|
|
15
|
-
this.visible = true;
|
|
16
|
-
}
|
|
17
|
-
};
|
|
18
|
-
this._hide = () => {
|
|
19
|
-
if (!HModal.isSomeModalOpen()) {
|
|
20
|
-
this.visible = false;
|
|
21
|
-
}
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
connectedCallback() {
|
|
25
|
-
super.connectedCallback();
|
|
26
|
-
document.addEventListener(MODAL_EVENTS.opened, this._show);
|
|
27
|
-
document.addEventListener(MODAL_EVENTS.closed, this._hide);
|
|
28
|
-
}
|
|
29
|
-
disconnectedCallback() {
|
|
30
|
-
super.disconnectedCallback();
|
|
31
|
-
document.removeEventListener(MODAL_EVENTS.opened, this._show);
|
|
32
|
-
document.removeEventListener(MODAL_EVENTS.closed, this._hide);
|
|
33
|
-
}
|
|
34
|
-
updated() {
|
|
35
|
-
if (HModal.isSomeModalOpen()) {
|
|
36
|
-
this.visible = true;
|
|
37
|
-
this._disableScrolling();
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
this._enableScrolling();
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
_disableScrolling() {
|
|
44
|
-
document.body.style.overflow = 'hidden';
|
|
45
|
-
document.body.style.paddingRight = '15px';
|
|
46
|
-
}
|
|
47
|
-
_enableScrolling() {
|
|
48
|
-
document.body.style.removeProperty('overflow');
|
|
49
|
-
document.body.style.removeProperty('padding-right');
|
|
50
|
-
}
|
|
51
|
-
render() {
|
|
52
|
-
return html ` <div aria-hidden="true" ?hidden="${!this.visible}" class="modal-backdrop"></div>`;
|
|
53
|
-
}
|
|
54
|
-
};
|
|
55
|
-
__decorate([
|
|
56
|
-
property({ type: Boolean }),
|
|
57
|
-
__metadata("design:type", Object)
|
|
58
|
-
], HModalBackdrop.prototype, "visible", void 0);
|
|
59
|
-
HModalBackdrop = __decorate([
|
|
60
|
-
phoenixCustomElement('h-modal-backdrop')
|
|
61
|
-
], HModalBackdrop);
|
|
62
|
-
|
|
63
|
-
export { HModalBackdrop };
|
|
64
|
-
//# sourceMappingURL=modal_backdrop.js.map
|