@shoper/phoenix_design_system 1.13.0 → 1.14.1-0
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/color_swatches/color_item/color_item.js +21 -29
- package/build/cjs/packages/phoenix/src/components/color_swatches/color_item/color_item.js.map +1 -1
- package/build/cjs/packages/phoenix/src/components/color_swatches/color_item/color_item_constants.js +0 -4
- package/build/cjs/packages/phoenix/src/components/color_swatches/color_item/color_item_constants.js.map +1 -1
- package/build/cjs/packages/phoenix/src/components/color_swatches/color_swatches.js +121 -11
- package/build/cjs/packages/phoenix/src/components/color_swatches/color_swatches.js.map +1 -1
- package/build/cjs/packages/phoenix/src/components/color_swatches/color_swatches_constants.js +0 -2
- package/build/cjs/packages/phoenix/src/components/color_swatches/color_swatches_constants.js.map +1 -1
- package/build/cjs/packages/phoenix/src/components/dropdown/dropdown.js +114 -37
- package/build/cjs/packages/phoenix/src/components/dropdown/dropdown.js.map +1 -1
- package/build/cjs/packages/phoenix/src/components/dropdown/dropdown_close.js +4 -4
- package/build/cjs/packages/phoenix/src/components/dropdown/dropdown_content.js +12 -9
- package/build/cjs/packages/phoenix/src/components/dropdown/dropdown_content.js.map +1 -1
- package/build/cjs/packages/phoenix/src/components/dropdown/dropdown_toggler.js +13 -24
- package/build/cjs/packages/phoenix/src/components/dropdown/dropdown_toggler.js.map +1 -1
- package/build/cjs/packages/phoenix/src/components/form/select/select.js +3 -4
- package/build/cjs/packages/phoenix/src/components/form/select/select.js.map +1 -1
- package/build/cjs/packages/phoenix/src/components/messages/base_message.js +16 -47
- package/build/cjs/packages/phoenix/src/components/messages/base_message.js.map +1 -1
- package/build/cjs/packages/phoenix/src/components/messages/base_message_constants.js +0 -2
- package/build/cjs/packages/phoenix/src/components/messages/base_message_constants.js.map +1 -1
- package/build/cjs/packages/phoenix/src/controllers/keystrokes_controller/keystrokes_controller.js +13 -2
- package/build/cjs/packages/phoenix/src/controllers/keystrokes_controller/keystrokes_controller.js.map +1 -1
- package/build/cjs/packages/phoenix/src/index.js +5 -5
- package/build/esm/packages/phoenix/src/components/color_swatches/color_item/color_item.d.ts +3 -6
- package/build/esm/packages/phoenix/src/components/color_swatches/color_item/color_item.js +22 -30
- package/build/esm/packages/phoenix/src/components/color_swatches/color_item/color_item.js.map +1 -1
- package/build/esm/packages/phoenix/src/components/color_swatches/color_item/color_item_constants.js +1 -4
- package/build/esm/packages/phoenix/src/components/color_swatches/color_item/color_item_constants.js.map +1 -1
- package/build/esm/packages/phoenix/src/components/color_swatches/color_swatches.d.ts +11 -1
- package/build/esm/packages/phoenix/src/components/color_swatches/color_swatches.js +124 -14
- package/build/esm/packages/phoenix/src/components/color_swatches/color_swatches.js.map +1 -1
- package/build/esm/packages/phoenix/src/components/color_swatches/color_swatches_constants.js +1 -2
- package/build/esm/packages/phoenix/src/components/color_swatches/color_swatches_constants.js.map +1 -1
- package/build/esm/packages/phoenix/src/components/dropdown/dropdown.d.ts +13 -4
- package/build/esm/packages/phoenix/src/components/dropdown/dropdown.js +115 -38
- package/build/esm/packages/phoenix/src/components/dropdown/dropdown.js.map +1 -1
- package/build/esm/packages/phoenix/src/components/dropdown/dropdown_close.js +4 -4
- package/build/esm/packages/phoenix/src/components/dropdown/dropdown_content.d.ts +1 -2
- package/build/esm/packages/phoenix/src/components/dropdown/dropdown_content.js +12 -9
- package/build/esm/packages/phoenix/src/components/dropdown/dropdown_content.js.map +1 -1
- package/build/esm/packages/phoenix/src/components/dropdown/dropdown_toggler.d.ts +1 -2
- package/build/esm/packages/phoenix/src/components/dropdown/dropdown_toggler.js +14 -25
- package/build/esm/packages/phoenix/src/components/dropdown/dropdown_toggler.js.map +1 -1
- package/build/esm/packages/phoenix/src/components/form/select/select.js +3 -4
- package/build/esm/packages/phoenix/src/components/form/select/select.js.map +1 -1
- package/build/esm/packages/phoenix/src/components/messages/base_message.d.ts +2 -3
- package/build/esm/packages/phoenix/src/components/messages/base_message.js +18 -49
- package/build/esm/packages/phoenix/src/components/messages/base_message.js.map +1 -1
- package/build/esm/packages/phoenix/src/components/messages/base_message_constants.js +3 -4
- package/build/esm/packages/phoenix/src/components/messages/base_message_constants.js.map +1 -1
- package/build/esm/packages/phoenix/src/controllers/keystrokes_controller/keystrokes_controller.d.ts +2 -1
- package/build/esm/packages/phoenix/src/controllers/keystrokes_controller/keystrokes_controller.js +13 -2
- package/build/esm/packages/phoenix/src/controllers/keystrokes_controller/keystrokes_controller.js.map +1 -1
- package/build/esm/packages/phoenix/src/controllers/keystrokes_controller/keystrokes_controller_types.d.ts +1 -0
- package/build/esm/packages/phoenix/src/index.js +1 -1
- package/package.json +1 -1
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { __decorate, __metadata } from '../../../../../external/tslib/tslib.es6.js';
|
|
2
2
|
import { html, nothing } from 'lit';
|
|
3
3
|
import { property } from 'lit/decorators';
|
|
4
|
-
import { ArrayUtils } from '@dreamcommerce/utilities';
|
|
4
|
+
import { UiDomUtils, ArrayUtils } from '@dreamcommerce/utilities';
|
|
5
5
|
import { PhoenixLightLitElement } from '../../core/phoenix_light_lit_element/phoenix_light_lit_element.js';
|
|
6
6
|
import { phoenixCustomElement } from '../../core/decorators/phoenix_custom_element.js';
|
|
7
|
+
import { KeystrokesController } from '../../controllers/keystrokes_controller/keystrokes_controller.js';
|
|
7
8
|
import 'lit-html';
|
|
8
|
-
import { COLOR_SWATCHES_EVENT_NAMES, COLOR_ITEM_TAG_NAME, COLOR_SWATCHES_CSS_CLASSES,
|
|
9
|
-
import {
|
|
9
|
+
import { COLOR_SWATCHES_EVENT_NAMES, COLOR_ITEM_TAG_NAME, COLOR_SWATCHES_CSS_CLASSES, COLOR_SWATCHES_HIDDEN_ATTRIBUTE } from './color_swatches_constants.js';
|
|
10
|
+
import { COLOR_ITEM_SELECTED_ATTRIBUTE } from './color_item/color_item_constants.js';
|
|
10
11
|
|
|
11
12
|
let HColorSwatches = class HColorSwatches extends PhoenixLightLitElement {
|
|
12
13
|
constructor() {
|
|
@@ -14,8 +15,87 @@ let HColorSwatches = class HColorSwatches extends PhoenixLightLitElement {
|
|
|
14
15
|
this.multiple = false;
|
|
15
16
|
this.selectedColors = [];
|
|
16
17
|
this.showMoreBtnText = 'Pokaż wszystkie kolory';
|
|
17
|
-
this.
|
|
18
|
-
|
|
18
|
+
this._setupEvents = () => {
|
|
19
|
+
if (this.getAttribute('role') === 'group') {
|
|
20
|
+
this._setupCheckboxGroupEvents();
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
this._setupRadioGroupEvents();
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
this._setupCheckboxGroupEvents = () => {
|
|
27
|
+
this._setupColorClickEvents();
|
|
28
|
+
};
|
|
29
|
+
this._setupRadioGroupEvents = () => {
|
|
30
|
+
document.body.addEventListener('keydown', this._focusOnSelectedColor);
|
|
31
|
+
this.addEventListener('keydown', this._handleTabNavigation);
|
|
32
|
+
this.addEventListener('keyup', this._handleRadioNavigation);
|
|
33
|
+
this._setupColorClickEvents();
|
|
34
|
+
};
|
|
35
|
+
this._setupColorClickEvents = () => {
|
|
36
|
+
if (!this._$colorSwatchesChildren)
|
|
37
|
+
return;
|
|
38
|
+
this._$colorSwatchesChildren.forEach(($colorItem) => {
|
|
39
|
+
$colorItem.addEventListener('click', this._handleColorClicked);
|
|
40
|
+
new KeystrokesController({
|
|
41
|
+
host: this,
|
|
42
|
+
keys: [' '],
|
|
43
|
+
callback: this._handleColorClicked,
|
|
44
|
+
target: $colorItem
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
};
|
|
48
|
+
this._handleColorClicked = (ev) => {
|
|
49
|
+
ev.preventDefault();
|
|
50
|
+
const $colorItem = ev.target;
|
|
51
|
+
if ($colorItem.unclickable)
|
|
52
|
+
return;
|
|
53
|
+
this._toggleColorItem($colorItem);
|
|
54
|
+
this._dispatchColorChangeEvent($colorItem);
|
|
55
|
+
};
|
|
56
|
+
this._handleTabNavigation = (ev) => {
|
|
57
|
+
if (ev.key !== 'Tab')
|
|
58
|
+
return;
|
|
59
|
+
ev.preventDefault();
|
|
60
|
+
if (ev.shiftKey) {
|
|
61
|
+
const $firstFocusableColor = UiDomUtils.getFocusableElement(this);
|
|
62
|
+
UiDomUtils.getPreviousFocusableElement($firstFocusableColor).focus();
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
const $LastFocusableColor = UiDomUtils.getLastFocusableElement(this);
|
|
66
|
+
UiDomUtils.getNextFocusableElement($LastFocusableColor).focus();
|
|
67
|
+
};
|
|
68
|
+
this._handleRadioNavigation = (ev) => {
|
|
69
|
+
const changeToNextKeys = ['ArrowDown', 'ArrowRight'];
|
|
70
|
+
const changeToPreviousKeys = ['ArrowUp', 'ArrowLeft'];
|
|
71
|
+
if (!changeToNextKeys.includes(ev.key) && !changeToPreviousKeys.includes(ev.key))
|
|
72
|
+
return;
|
|
73
|
+
ev.preventDefault();
|
|
74
|
+
if (changeToNextKeys.includes(ev.key)) {
|
|
75
|
+
this._handleChangeToNextColorItem(ev);
|
|
76
|
+
}
|
|
77
|
+
if (changeToPreviousKeys.includes(ev.key)) {
|
|
78
|
+
this._handleChangeToPreviousColorItem(ev);
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
this._focusOnSelectedColor = (ev) => {
|
|
82
|
+
if (ev.key !== 'Tab' || this.multiple)
|
|
83
|
+
return;
|
|
84
|
+
if (ev.shiftKey) {
|
|
85
|
+
const $previousFocusableElement = UiDomUtils.getPreviousFocusableElement(document.activeElement);
|
|
86
|
+
if (this.contains($previousFocusableElement) && this.selectedColors.length > 0) {
|
|
87
|
+
ev.preventDefault();
|
|
88
|
+
this.selectedColors[0].focus();
|
|
89
|
+
}
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
const $nextFocusableElement = UiDomUtils.getNextFocusableElement(document.activeElement);
|
|
93
|
+
if (this.contains($nextFocusableElement) && this.selectedColors.length > 0) {
|
|
94
|
+
ev.preventDefault();
|
|
95
|
+
this.selectedColors[0].focus();
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
this._handleColorChange = ($colorItem) => {
|
|
19
99
|
this._toggleColorItem($colorItem);
|
|
20
100
|
this._dispatchColorChangeEvent($colorItem);
|
|
21
101
|
};
|
|
@@ -52,6 +132,8 @@ let HColorSwatches = class HColorSwatches extends PhoenixLightLitElement {
|
|
|
52
132
|
}
|
|
53
133
|
connectedCallback() {
|
|
54
134
|
super.connectedCallback();
|
|
135
|
+
this.setAttribute('role', this.multiple ? 'group' : 'radiogroup');
|
|
136
|
+
this._$colorSwatchesChildren = [...this.children];
|
|
55
137
|
this._setupEvents();
|
|
56
138
|
this._addCssClasses();
|
|
57
139
|
this.numberOfVisibleColors && this._hideItems(this.numberOfVisibleColors);
|
|
@@ -64,11 +146,9 @@ let HColorSwatches = class HColorSwatches extends PhoenixLightLitElement {
|
|
|
64
146
|
this.classList.add(COLOR_SWATCHES_CSS_CLASSES.colorSwatches);
|
|
65
147
|
}
|
|
66
148
|
_hideItems(numberOfVisibleColors) {
|
|
67
|
-
var _a;
|
|
68
|
-
this._$colorSwatchesChildren = (_a = document.querySelector(COLOR_SWATCHES_TAG_NAME)) === null || _a === void 0 ? void 0 : _a.children;
|
|
69
149
|
if (!this._$colorSwatchesChildren)
|
|
70
150
|
return;
|
|
71
|
-
|
|
151
|
+
this._$colorSwatchesChildren.forEach(($colorSwatchesChild, index) => {
|
|
72
152
|
if (index > numberOfVisibleColors - 1) {
|
|
73
153
|
$colorSwatchesChild.setAttribute(COLOR_SWATCHES_HIDDEN_ATTRIBUTE, '');
|
|
74
154
|
}
|
|
@@ -79,17 +159,40 @@ let HColorSwatches = class HColorSwatches extends PhoenixLightLitElement {
|
|
|
79
159
|
var _a;
|
|
80
160
|
if (!this._$colorSwatchesChildren)
|
|
81
161
|
return;
|
|
82
|
-
|
|
162
|
+
this._$colorSwatchesChildren.forEach(($colorSwatchesChild) => {
|
|
83
163
|
$colorSwatchesChild.removeAttribute(COLOR_SWATCHES_HIDDEN_ATTRIBUTE);
|
|
84
164
|
});
|
|
85
165
|
(_a = this.querySelector('h-color-swatches-show-more')) === null || _a === void 0 ? void 0 : _a.setAttribute(COLOR_SWATCHES_HIDDEN_ATTRIBUTE, '');
|
|
86
166
|
});
|
|
87
167
|
}
|
|
88
|
-
|
|
89
|
-
|
|
168
|
+
_handleChangeToNextColorItem({ target }) {
|
|
169
|
+
const $colorItem = target;
|
|
170
|
+
const $nextFocusableElement = UiDomUtils.getNextFocusableElement($colorItem);
|
|
171
|
+
let $nextColorItem;
|
|
172
|
+
if (!this.contains($nextFocusableElement)) {
|
|
173
|
+
$nextColorItem = UiDomUtils.getFocusableElement(this);
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
$nextColorItem = $nextFocusableElement;
|
|
177
|
+
}
|
|
178
|
+
$nextColorItem.focus();
|
|
179
|
+
this._handleColorChange($nextColorItem);
|
|
180
|
+
}
|
|
181
|
+
_handleChangeToPreviousColorItem({ target }) {
|
|
182
|
+
const $colorItem = target;
|
|
183
|
+
const $previousFocusableElement = UiDomUtils.getPreviousFocusableElement($colorItem);
|
|
184
|
+
let $previousColorItem;
|
|
185
|
+
if (!this.contains($previousFocusableElement)) {
|
|
186
|
+
$previousColorItem = UiDomUtils.getLastFocusableElement(this);
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
$previousColorItem = $previousFocusableElement;
|
|
190
|
+
}
|
|
191
|
+
$previousColorItem.focus();
|
|
192
|
+
this._handleColorChange($previousColorItem);
|
|
90
193
|
}
|
|
91
194
|
_toggleColorItem($colorItem) {
|
|
92
|
-
this.multiple ? this._handleColorClickedForMultipleMode($colorItem) : this.
|
|
195
|
+
this.multiple ? this._handleColorClickedForMultipleMode($colorItem) : this._handleColorChangeForSingleMode($colorItem);
|
|
93
196
|
}
|
|
94
197
|
_handleColorClickedForMultipleMode($colorItem) {
|
|
95
198
|
!this._isColorAlreadyExistInArray($colorItem)
|
|
@@ -97,17 +200,20 @@ let HColorSwatches = class HColorSwatches extends PhoenixLightLitElement {
|
|
|
97
200
|
: this._removeExistingColorFromArray($colorItem);
|
|
98
201
|
this._toggleSelectedAttribute($colorItem);
|
|
99
202
|
}
|
|
100
|
-
|
|
203
|
+
_handleColorChangeForSingleMode($colorItem) {
|
|
101
204
|
const $previouslySelected = this.selectedColors[0];
|
|
102
205
|
this._toggleSelectedAttribute($colorItem);
|
|
103
|
-
if ($previouslySelected && $previouslySelected !== $colorItem)
|
|
206
|
+
if ($previouslySelected && $previouslySelected !== $colorItem) {
|
|
104
207
|
$previouslySelected.removeAttribute(COLOR_ITEM_SELECTED_ATTRIBUTE);
|
|
208
|
+
$previouslySelected.setAttribute('aria-checked', 'false');
|
|
209
|
+
}
|
|
105
210
|
this.selectedColors = $previouslySelected === $colorItem ? [] : [$colorItem];
|
|
106
211
|
}
|
|
107
212
|
_toggleSelectedAttribute($colorItem) {
|
|
108
213
|
$colorItem.hasAttribute(COLOR_ITEM_SELECTED_ATTRIBUTE)
|
|
109
214
|
? $colorItem.removeAttribute(COLOR_ITEM_SELECTED_ATTRIBUTE)
|
|
110
215
|
: $colorItem.setAttribute(COLOR_ITEM_SELECTED_ATTRIBUTE, '');
|
|
216
|
+
$colorItem.setAttribute('aria-checked', 'true');
|
|
111
217
|
}
|
|
112
218
|
_isColorAlreadyExistInArray($colorItem) {
|
|
113
219
|
return this.selectedColors.includes($colorItem);
|
|
@@ -116,6 +222,10 @@ let HColorSwatches = class HColorSwatches extends PhoenixLightLitElement {
|
|
|
116
222
|
const indexOfAlreadyExistingColor = this.selectedColors.indexOf($colorItem);
|
|
117
223
|
this.selectedColors.splice(indexOfAlreadyExistingColor, 1);
|
|
118
224
|
}
|
|
225
|
+
disconnectedCallback() {
|
|
226
|
+
super.disconnectedCallback();
|
|
227
|
+
document.body.removeEventListener('keydown', this._focusOnSelectedColor);
|
|
228
|
+
}
|
|
119
229
|
render() {
|
|
120
230
|
return html `
|
|
121
231
|
${this.getSlot('default')}
|
|
@@ -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;"}
|
|
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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
package/build/esm/packages/phoenix/src/components/color_swatches/color_swatches_constants.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
const colorSwatchesBaseCssClass = 'color-swatches';
|
|
2
|
-
const COLOR_SWATCHES_TAG_NAME = 'h-color-swatches';
|
|
3
2
|
const COLOR_ITEM_TAG_NAME = 'h-color-item';
|
|
4
3
|
const COLOR_SWATCHES_CSS_CLASSES = {
|
|
5
4
|
colorSwatches: colorSwatchesBaseCssClass,
|
|
@@ -12,5 +11,5 @@ const COLOR_SWATCHES_EVENT_NAMES = {
|
|
|
12
11
|
};
|
|
13
12
|
const COLOR_SWATCHES_HIDDEN_ATTRIBUTE = 'hidden';
|
|
14
13
|
|
|
15
|
-
export { COLOR_ITEM_TAG_NAME, COLOR_SWATCHES_CSS_CLASSES, COLOR_SWATCHES_EVENT_NAMES, COLOR_SWATCHES_HIDDEN_ATTRIBUTE
|
|
14
|
+
export { COLOR_ITEM_TAG_NAME, COLOR_SWATCHES_CSS_CLASSES, COLOR_SWATCHES_EVENT_NAMES, COLOR_SWATCHES_HIDDEN_ATTRIBUTE };
|
|
16
15
|
//# sourceMappingURL=color_swatches_constants.js.map
|
package/build/esm/packages/phoenix/src/components/color_swatches/color_swatches_constants.js.map
CHANGED
|
@@ -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;
|
|
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;"}
|
|
@@ -15,6 +15,8 @@ export declare class HDropdown extends PhoenixLightLitElement implements IDropdo
|
|
|
15
15
|
contentWidth: TDropdownContentWidth;
|
|
16
16
|
portalTarget: string;
|
|
17
17
|
mobilePosition: TMobileElementPosition;
|
|
18
|
+
id: string;
|
|
19
|
+
preventFocusTrap: boolean;
|
|
18
20
|
$dropdownToggler: HDropdownToggler | null;
|
|
19
21
|
$dropdownContent: HDropdownContent | null;
|
|
20
22
|
$nestedDropdownContentElements?: HDropdownContent[];
|
|
@@ -40,12 +42,19 @@ export declare class HDropdown extends PhoenixLightLitElement implements IDropdo
|
|
|
40
42
|
private _observeScrollToggling;
|
|
41
43
|
private _toggleScroll;
|
|
42
44
|
private _closeDropdownOnEscape;
|
|
43
|
-
private
|
|
44
|
-
private
|
|
45
|
-
private
|
|
46
|
-
private
|
|
45
|
+
private _keepFocusWithinDropdownForwards;
|
|
46
|
+
private _handleFocusOnNextElementAfterDropdown;
|
|
47
|
+
private _handleFocusFromTogglerForwards;
|
|
48
|
+
private _handleFocusFromSentinelEndForwards;
|
|
49
|
+
private _keepFocusWithinDropdownBackwards;
|
|
50
|
+
private _handleDefaultFocusFromDropdownBackwards;
|
|
51
|
+
private _handleFocusFromTogglerBackwards;
|
|
52
|
+
private _handleFocusFromSentinelStartBackwards;
|
|
53
|
+
private _getTrulyFocusableElements;
|
|
54
|
+
private _isElementTrulyFocusable;
|
|
47
55
|
private _hoverToggle;
|
|
48
56
|
private _isHoveredWithinDropdown;
|
|
57
|
+
private _focusOnFirstContentElement;
|
|
49
58
|
private _setupInitialDropdownProperties;
|
|
50
59
|
isOpened: () => boolean;
|
|
51
60
|
private _positionDropdownContent;
|
|
@@ -6,8 +6,9 @@ import { property } from '@lit/reactive-element/decorators.js';
|
|
|
6
6
|
import { KeystrokesController } from '../../controllers/keystrokes_controller/keystrokes_controller.js';
|
|
7
7
|
import { html } from 'lit-html';
|
|
8
8
|
import { BREAKPOINTS, SCROLLABLE_CLASS_NAME } from '../../global_constants.js';
|
|
9
|
-
import { DEFAULT_DROPDOWN_PORTAL_NAME, DROPDOWN_CONTENT_CSS_CLASSES, DROPDOWN_EVENTS, DROPDOWN_CONTAINER_NAME,
|
|
9
|
+
import { DEFAULT_DROPDOWN_PORTAL_NAME, DROPDOWN_CONTENT_CSS_CLASSES, DROPDOWN_EVENTS, DROPDOWN_CONTAINER_NAME, DROPDOWN_CONTENT_WIDTH, DROPDOWN_CONTENT_NAME, DROPDOWN_TOGGLER_NAME } from './dropdown_constants.js';
|
|
10
10
|
import { RELATIVE_POSITION_CONTROLLER_EVENTS, DEFAULT_THROTTLE_WAIT_TIME } from '../../controllers/relative_position_controller/relative_position_controller_constants.js';
|
|
11
|
+
import v4 from '../../../../../external/uuid/dist/esm-browser/v4.js';
|
|
11
12
|
import { PORTAL_TARGET_COMPONENT_NAME, PORTAL_TARGET_NAME_PROP } from '../portal/portal_constants.js';
|
|
12
13
|
import { BackdropController } from '../backdrop/controller/backdrop_controller.js';
|
|
13
14
|
import { ClickOutsideController } from '../../controllers/click_outside_controller/click_outside_controller.js';
|
|
@@ -25,6 +26,8 @@ let HDropdown = HDropdown_1 = class HDropdown extends PhoenixLightLitElement {
|
|
|
25
26
|
this.transition = 'direction';
|
|
26
27
|
this.offset = 0;
|
|
27
28
|
this.portalTarget = DEFAULT_DROPDOWN_PORTAL_NAME;
|
|
29
|
+
this.id = v4();
|
|
30
|
+
this.preventFocusTrap = false;
|
|
28
31
|
this._backdropController = new BackdropController();
|
|
29
32
|
this._handleClickOutside = async (target) => {
|
|
30
33
|
var _a, _b;
|
|
@@ -41,7 +44,7 @@ let HDropdown = HDropdown_1 = class HDropdown extends PhoenixLightLitElement {
|
|
|
41
44
|
return;
|
|
42
45
|
}
|
|
43
46
|
await this.show();
|
|
44
|
-
|
|
47
|
+
this._focusOnFirstContentElement();
|
|
45
48
|
};
|
|
46
49
|
this.show = async () => {
|
|
47
50
|
if (this.opened)
|
|
@@ -132,44 +135,32 @@ let HDropdown = HDropdown_1 = class HDropdown extends PhoenixLightLitElement {
|
|
|
132
135
|
return;
|
|
133
136
|
await this.hide();
|
|
134
137
|
};
|
|
135
|
-
this.
|
|
136
|
-
|
|
137
|
-
if (!this
|
|
138
|
+
this._keepFocusWithinDropdownForwards = (ev) => {
|
|
139
|
+
var _a, _b;
|
|
140
|
+
if (ev.shiftKey === true || !this.$dropdownContent || !this.opened)
|
|
138
141
|
return;
|
|
139
|
-
const $
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
this._handleFocusOnNextElement = async (ev) => {
|
|
147
|
-
var _a;
|
|
148
|
-
ev.preventDefault();
|
|
149
|
-
const $focusableElements = UiDomUtils.getFocusableElements(document.body);
|
|
150
|
-
const indexOfDropdownToggler = $focusableElements.indexOf(this.$dropdownToggler);
|
|
151
|
-
const $nextElementToFocus = (_a = $focusableElements[indexOfDropdownToggler + 1]) !== null && _a !== void 0 ? _a : $focusableElements[0];
|
|
152
|
-
await this._hideDropdownsSequentially();
|
|
153
|
-
await this.hide();
|
|
154
|
-
this._focusOnNextElementAfterToggler($nextElementToFocus);
|
|
155
|
-
};
|
|
156
|
-
this._focusOnNextElementAfterToggler = ($elementToFocus) => {
|
|
157
|
-
var _a;
|
|
158
|
-
const isTogglerLastChildOfPreviousDropdown = ($elementToFocus === null || $elementToFocus === void 0 ? void 0 : $elementToFocus.closest(DROPDOWN_CONTENT_NAME)) === this.$dropdownContent;
|
|
159
|
-
if (isTogglerLastChildOfPreviousDropdown) {
|
|
160
|
-
(_a = this.$dropdownToggler) === null || _a === void 0 ? void 0 : _a.focus();
|
|
142
|
+
const $target = ev.target;
|
|
143
|
+
if (((_a = this.$dropdownContent) === null || _a === void 0 ? void 0 : _a.contains($target)) && this.preventFocusTrap) {
|
|
144
|
+
this._handleFocusOnNextElementAfterDropdown(ev);
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
if ((_b = this.$dropdownToggler) === null || _b === void 0 ? void 0 : _b.contains($target)) {
|
|
148
|
+
this._handleFocusFromTogglerForwards(ev);
|
|
161
149
|
return;
|
|
162
150
|
}
|
|
163
|
-
|
|
151
|
+
this._handleFocusFromSentinelEndForwards(ev, $target);
|
|
164
152
|
};
|
|
165
|
-
this.
|
|
166
|
-
|
|
167
|
-
const $firstFocusableElement = this.$dropdownContent && UiDomUtils.getFocusableElement(this.$dropdownContent);
|
|
168
|
-
if (document.activeElement !== $firstFocusableElement)
|
|
153
|
+
this._keepFocusWithinDropdownBackwards = (ev) => {
|
|
154
|
+
if (!this.opened || !this.$dropdownContent)
|
|
169
155
|
return;
|
|
170
|
-
ev.
|
|
171
|
-
(
|
|
172
|
-
|
|
156
|
+
const $target = ev.target;
|
|
157
|
+
if (this.preventFocusTrap) {
|
|
158
|
+
this._handleDefaultFocusFromDropdownBackwards(ev);
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
this._handleFocusFromTogglerBackwards(ev, $target);
|
|
162
|
+
this._handleFocusFromSentinelStartBackwards(ev, $target);
|
|
163
|
+
}
|
|
173
164
|
};
|
|
174
165
|
this._hoverToggle = async (ev) => {
|
|
175
166
|
if (window.innerWidth < BREAKPOINTS.xs)
|
|
@@ -181,12 +172,19 @@ let HDropdown = HDropdown_1 = class HDropdown extends PhoenixLightLitElement {
|
|
|
181
172
|
const isHoveredWithinDropdown = this._isHoveredWithinDropdown(ev.target);
|
|
182
173
|
if (isHoveredWithinDropdown && !this.opened) {
|
|
183
174
|
await this.show();
|
|
184
|
-
|
|
175
|
+
this._focusOnFirstContentElement();
|
|
185
176
|
return;
|
|
186
177
|
}
|
|
187
178
|
if (!isHoveredWithinDropdown && this.opened)
|
|
188
179
|
await this._hideDropdownsSequentially();
|
|
189
180
|
};
|
|
181
|
+
this._focusOnFirstContentElement = () => {
|
|
182
|
+
if (!this.$dropdownContent)
|
|
183
|
+
return;
|
|
184
|
+
const $firstFocusableElement = this._getTrulyFocusableElements(this.$dropdownContent)[0];
|
|
185
|
+
if ($firstFocusableElement)
|
|
186
|
+
$firstFocusableElement.focus();
|
|
187
|
+
};
|
|
190
188
|
this.isOpened = () => this.opened;
|
|
191
189
|
this._positionDropdownContent = () => {
|
|
192
190
|
if (this.contentWidth === DROPDOWN_CONTENT_WIDTH.full)
|
|
@@ -212,13 +210,14 @@ let HDropdown = HDropdown_1 = class HDropdown extends PhoenixLightLitElement {
|
|
|
212
210
|
host: this,
|
|
213
211
|
target: document.body,
|
|
214
212
|
keys: ['tab'],
|
|
215
|
-
callback: this.
|
|
213
|
+
callback: this._keepFocusWithinDropdownForwards
|
|
216
214
|
});
|
|
217
215
|
new KeystrokesController({
|
|
218
216
|
host: this,
|
|
219
217
|
target: document.body,
|
|
220
218
|
keys: [['shift', 'tab']],
|
|
221
|
-
callback: this.
|
|
219
|
+
callback: this._keepFocusWithinDropdownBackwards,
|
|
220
|
+
containerSelectors: ['h-dropdown', 'h-dropdown-content']
|
|
222
221
|
});
|
|
223
222
|
}
|
|
224
223
|
async connectedCallback() {
|
|
@@ -294,6 +293,74 @@ let HDropdown = HDropdown_1 = class HDropdown extends PhoenixLightLitElement {
|
|
|
294
293
|
(_b = this.$dropdownContent) === null || _b === void 0 ? void 0 : _b.classList.add(SCROLLABLE_CLASS_NAME);
|
|
295
294
|
}
|
|
296
295
|
}
|
|
296
|
+
_handleFocusOnNextElementAfterDropdown(ev) {
|
|
297
|
+
ev.preventDefault();
|
|
298
|
+
this.hide();
|
|
299
|
+
UiDomUtils.getNextFocusableElement(this.$dropdownToggler || this).focus();
|
|
300
|
+
return;
|
|
301
|
+
}
|
|
302
|
+
_handleFocusFromTogglerForwards(ev) {
|
|
303
|
+
if (!this.$dropdownContent)
|
|
304
|
+
return;
|
|
305
|
+
const trulyFocusableElements = this._getTrulyFocusableElements(this.$dropdownContent);
|
|
306
|
+
if (trulyFocusableElements.length === 0)
|
|
307
|
+
return;
|
|
308
|
+
ev.preventDefault();
|
|
309
|
+
trulyFocusableElements[0].focus();
|
|
310
|
+
}
|
|
311
|
+
_handleFocusFromSentinelEndForwards(ev, $target) {
|
|
312
|
+
var _a;
|
|
313
|
+
if (!this.$dropdownContent)
|
|
314
|
+
return;
|
|
315
|
+
const trulyFocusableElements = this._getTrulyFocusableElements(this.$dropdownContent);
|
|
316
|
+
const $lastFocusableElement = trulyFocusableElements.slice(-1)[0];
|
|
317
|
+
if ($target !== $lastFocusableElement)
|
|
318
|
+
return;
|
|
319
|
+
ev.preventDefault();
|
|
320
|
+
(_a = this.$dropdownToggler) === null || _a === void 0 ? void 0 : _a.focus();
|
|
321
|
+
}
|
|
322
|
+
_handleDefaultFocusFromDropdownBackwards(ev) {
|
|
323
|
+
ev.preventDefault();
|
|
324
|
+
this.hide();
|
|
325
|
+
UiDomUtils.getPreviousFocusableElement(this.$dropdownToggler || this).focus();
|
|
326
|
+
}
|
|
327
|
+
_handleFocusFromTogglerBackwards(ev, $target) {
|
|
328
|
+
var _a;
|
|
329
|
+
if ($target !== this.$dropdownToggler && !((_a = this.$dropdownToggler) === null || _a === void 0 ? void 0 : _a.contains($target)) || !this.$dropdownContent)
|
|
330
|
+
return;
|
|
331
|
+
ev.preventDefault();
|
|
332
|
+
const trulyFocusableElements = this._getTrulyFocusableElements(this.$dropdownContent);
|
|
333
|
+
if (trulyFocusableElements.length === 0)
|
|
334
|
+
return;
|
|
335
|
+
const $lastFocusableElement = trulyFocusableElements.slice(-1)[0];
|
|
336
|
+
$lastFocusableElement.focus();
|
|
337
|
+
}
|
|
338
|
+
_handleFocusFromSentinelStartBackwards(ev, $target) {
|
|
339
|
+
var _a;
|
|
340
|
+
if (!this.$dropdownContent)
|
|
341
|
+
return;
|
|
342
|
+
const $firstFocusableElement = this._getTrulyFocusableElements(this.$dropdownContent)[0];
|
|
343
|
+
if ($target !== $firstFocusableElement)
|
|
344
|
+
return;
|
|
345
|
+
ev.preventDefault();
|
|
346
|
+
(_a = this.$dropdownToggler) === null || _a === void 0 ? void 0 : _a.focus();
|
|
347
|
+
}
|
|
348
|
+
_getTrulyFocusableElements($container) {
|
|
349
|
+
const focusableElements = UiDomUtils.getFocusableElements($container);
|
|
350
|
+
return focusableElements.filter(($el) => this._isElementTrulyFocusable($el));
|
|
351
|
+
}
|
|
352
|
+
_isElementTrulyFocusable($el) {
|
|
353
|
+
const style = window.getComputedStyle($el);
|
|
354
|
+
if (style.display === 'none' || style.visibility === 'hidden') {
|
|
355
|
+
return false;
|
|
356
|
+
}
|
|
357
|
+
if ($el.nodeName === 'H-PORTAL')
|
|
358
|
+
return true;
|
|
359
|
+
const $parent = $el.parentElement;
|
|
360
|
+
if (!$parent)
|
|
361
|
+
return true;
|
|
362
|
+
return this._isElementTrulyFocusable($parent);
|
|
363
|
+
}
|
|
297
364
|
_isHoveredWithinDropdown(element) {
|
|
298
365
|
var _a;
|
|
299
366
|
if (element === this)
|
|
@@ -317,6 +384,8 @@ let HDropdown = HDropdown_1 = class HDropdown extends PhoenixLightLitElement {
|
|
|
317
384
|
return;
|
|
318
385
|
if (!this._hasScrollableClassInitially)
|
|
319
386
|
this._hasScrollableClassInitially = this.$dropdownContent.classList.contains(SCROLLABLE_CLASS_NAME);
|
|
387
|
+
if (!this.preventFocusTrap)
|
|
388
|
+
this.$dropdownContent.setAttribute('aria-modal', 'true');
|
|
320
389
|
}
|
|
321
390
|
_getDropdownContentWidth() {
|
|
322
391
|
const isMobileResolution = document.documentElement.clientWidth < BREAKPOINTS.xs;
|
|
@@ -385,6 +454,14 @@ __decorate([
|
|
|
385
454
|
property({ type: String, attribute: 'mobile-position' }),
|
|
386
455
|
__metadata("design:type", String)
|
|
387
456
|
], HDropdown.prototype, "mobilePosition", void 0);
|
|
457
|
+
__decorate([
|
|
458
|
+
property({ type: String, attribute: 'id', reflect: true }),
|
|
459
|
+
__metadata("design:type", Object)
|
|
460
|
+
], HDropdown.prototype, "id", void 0);
|
|
461
|
+
__decorate([
|
|
462
|
+
property({ type: Boolean, attribute: 'prevent-focus-trap' }),
|
|
463
|
+
__metadata("design:type", Object)
|
|
464
|
+
], HDropdown.prototype, "preventFocusTrap", void 0);
|
|
388
465
|
HDropdown = HDropdown_1 = __decorate([
|
|
389
466
|
phoenixCustomElement('h-dropdown'),
|
|
390
467
|
__metadata("design:paramtypes", [])
|
|
@@ -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,uBAAuB,4CAAgD;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,eAAe,qDAAyD;AACxE;AACA;AACA;AACA,uBAAuB,4CAAgD;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,6 +9,10 @@ let HDropdownClose = class HDropdownClose extends PhoenixLightLitElement {
|
|
|
9
9
|
constructor() {
|
|
10
10
|
super();
|
|
11
11
|
this.name = '';
|
|
12
|
+
this._closeDropdown = () => {
|
|
13
|
+
const dropdown = document.querySelector(`h-dropdown[name="${this.name}"]`);
|
|
14
|
+
dropdown === null || dropdown === void 0 ? void 0 : dropdown.hide();
|
|
15
|
+
};
|
|
12
16
|
this.className = `${DROPDOWN_CSS_CLASSES.close} ${this.className}`;
|
|
13
17
|
}
|
|
14
18
|
connectedCallback() {
|
|
@@ -16,10 +20,6 @@ let HDropdownClose = class HDropdownClose extends PhoenixLightLitElement {
|
|
|
16
20
|
this._btnController = new BtnController(this, this._closeDropdown);
|
|
17
21
|
this.addEventListener('click', this._closeDropdown);
|
|
18
22
|
}
|
|
19
|
-
async _closeDropdown() {
|
|
20
|
-
const dropdown = document.querySelector(`h-dropdown[name="${this.name}"]`);
|
|
21
|
-
await (dropdown === null || dropdown === void 0 ? void 0 : dropdown.hide());
|
|
22
|
-
}
|
|
23
23
|
};
|
|
24
24
|
__decorate([
|
|
25
25
|
property({ type: String }),
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { TemplateResult } from 'lit';
|
|
2
1
|
import { PhoenixLightLitElement } from "../../core/phoenix_light_lit_element/phoenix_light_lit_element";
|
|
3
2
|
export declare class HDropdownContent extends PhoenixLightLitElement {
|
|
4
3
|
name: string;
|
|
5
4
|
constructor();
|
|
6
5
|
connectedCallback(): void;
|
|
7
|
-
|
|
6
|
+
private _setupRole;
|
|
8
7
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __decorate, __metadata } from '../../../../../external/tslib/tslib.es6.js';
|
|
2
|
-
import { html } from 'lit';
|
|
3
2
|
import { property } from 'lit/decorators';
|
|
3
|
+
import { UiDomUtils } from '@dreamcommerce/utilities';
|
|
4
4
|
import { PhoenixLightLitElement } from '../../core/phoenix_light_lit_element/phoenix_light_lit_element.js';
|
|
5
5
|
import { phoenixCustomElement } from '../../core/decorators/phoenix_custom_element.js';
|
|
6
6
|
import { DROPDOWN_CSS_CLASSES } from './dropdown_constants.js';
|
|
@@ -9,19 +9,22 @@ let HDropdownContent = class HDropdownContent extends PhoenixLightLitElement {
|
|
|
9
9
|
constructor() {
|
|
10
10
|
super();
|
|
11
11
|
this.name = '';
|
|
12
|
+
this._setupRole = () => {
|
|
13
|
+
const $focusableElements = UiDomUtils.getFocusableElements(this);
|
|
14
|
+
const role = $focusableElements.length < 2 ? 'dialog' : 'menu';
|
|
15
|
+
this.setAttribute('role', role);
|
|
16
|
+
if (role === 'menu') {
|
|
17
|
+
Array.from(this.children).forEach((element) => {
|
|
18
|
+
element.setAttribute('role', 'menuitem');
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
};
|
|
12
22
|
this.slot = this.hasAttribute('slot') ? this.slot : 'content';
|
|
13
23
|
}
|
|
14
24
|
connectedCallback() {
|
|
15
25
|
super.connectedCallback();
|
|
16
26
|
this.classList.add(DROPDOWN_CSS_CLASSES.content);
|
|
17
|
-
this.
|
|
18
|
-
Array.from(this.children).forEach((element) => {
|
|
19
|
-
element.setAttribute('role', 'menuitem');
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
render() {
|
|
23
|
-
super.render();
|
|
24
|
-
return html ` <div role="dialog">${this.getSlot('content')}</div> `;
|
|
27
|
+
this._setupRole();
|
|
25
28
|
}
|
|
26
29
|
};
|
|
27
30
|
__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;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;"}
|
|
@@ -6,9 +6,8 @@ export declare class HDropdownToggler extends PhoenixLightLitElement {
|
|
|
6
6
|
private _$dropdown;
|
|
7
7
|
constructor();
|
|
8
8
|
connectedCallback(): void;
|
|
9
|
+
private _setupTogglerAria;
|
|
9
10
|
private _dispatchToggleDropdownEventWithKeyboard;
|
|
10
11
|
private _dispatchToggleDropdownEventOnMobile;
|
|
11
12
|
private _dispatchToggleDropdownEvent;
|
|
12
|
-
private _handleFocusToOpenedDropdown;
|
|
13
|
-
disconnectedCallback(): void;
|
|
14
13
|
}
|