@shoper/phoenix_design_system 0.25.0-8 → 0.25.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.
Files changed (66) hide show
  1. package/build/cjs/packages/phoenix/src/components/dropdown/dropdown.js +45 -29
  2. package/build/cjs/packages/phoenix/src/components/dropdown/dropdown.js.map +1 -1
  3. package/build/cjs/packages/phoenix/src/components/form/color_swatches_control/color_swatches_control.js +6 -4
  4. package/build/cjs/packages/phoenix/src/components/form/color_swatches_control/color_swatches_control.js.map +1 -1
  5. package/build/cjs/packages/phoenix/src/components/form/input/input_icon.js +9 -4
  6. package/build/cjs/packages/phoenix/src/components/form/input/input_icon.js.map +1 -1
  7. package/build/cjs/packages/phoenix/src/components/icon/icon_constants.js +1 -14
  8. package/build/cjs/packages/phoenix/src/components/icon/icon_constants.js.map +1 -1
  9. package/build/cjs/packages/phoenix/src/components/messages/base_message.js +36 -16
  10. package/build/cjs/packages/phoenix/src/components/messages/base_message.js.map +1 -1
  11. package/build/cjs/packages/phoenix/src/components/messages/base_message_constants.js +2 -0
  12. package/build/cjs/packages/phoenix/src/components/messages/base_message_constants.js.map +1 -1
  13. package/build/cjs/packages/phoenix/src/components/messages/hints/hint.js +0 -1
  14. package/build/cjs/packages/phoenix/src/components/messages/hints/hint.js.map +1 -1
  15. package/build/cjs/packages/phoenix/src/components/messages/tooltips/tooltip.js +0 -1
  16. package/build/cjs/packages/phoenix/src/components/messages/tooltips/tooltip.js.map +1 -1
  17. package/build/cjs/packages/phoenix/src/components/tabs/tabs.js +3 -1
  18. package/build/cjs/packages/phoenix/src/components/tabs/tabs.js.map +1 -1
  19. package/build/cjs/packages/phoenix/src/controllers/btn_controller.js +3 -2
  20. package/build/cjs/packages/phoenix/src/controllers/btn_controller.js.map +1 -1
  21. package/build/cjs/packages/phoenix/src/controllers/keystrokes_controller/keystrokes_controller.js +66 -22
  22. package/build/cjs/packages/phoenix/src/controllers/keystrokes_controller/keystrokes_controller.js.map +1 -1
  23. package/build/cjs/packages/phoenix/src/core/phoenix_light_lit_element/phoenix_light_lit_element.js +11 -4
  24. package/build/cjs/packages/phoenix/src/core/phoenix_light_lit_element/phoenix_light_lit_element.js.map +1 -1
  25. package/build/cjs/packages/phoenix/src/index.js +0 -21
  26. package/build/cjs/packages/phoenix/src/index.js.map +1 -1
  27. package/build/esm/packages/phoenix/src/components/dropdown/dropdown.d.ts +4 -2
  28. package/build/esm/packages/phoenix/src/components/dropdown/dropdown.js +46 -30
  29. package/build/esm/packages/phoenix/src/components/dropdown/dropdown.js.map +1 -1
  30. package/build/esm/packages/phoenix/src/components/form/color_swatches_control/color_swatches_control.d.ts +1 -1
  31. package/build/esm/packages/phoenix/src/components/form/color_swatches_control/color_swatches_control.js +6 -4
  32. package/build/esm/packages/phoenix/src/components/form/color_swatches_control/color_swatches_control.js.map +1 -1
  33. package/build/esm/packages/phoenix/src/components/form/input/input_icon.d.ts +1 -0
  34. package/build/esm/packages/phoenix/src/components/form/input/input_icon.js +9 -4
  35. package/build/esm/packages/phoenix/src/components/form/input/input_icon.js.map +1 -1
  36. package/build/esm/packages/phoenix/src/components/icon/icon_constants.d.ts +0 -13
  37. package/build/esm/packages/phoenix/src/components/icon/icon_constants.js +2 -14
  38. package/build/esm/packages/phoenix/src/components/icon/icon_constants.js.map +1 -1
  39. package/build/esm/packages/phoenix/src/components/messages/base_message.d.ts +6 -3
  40. package/build/esm/packages/phoenix/src/components/messages/base_message.js +37 -17
  41. package/build/esm/packages/phoenix/src/components/messages/base_message.js.map +1 -1
  42. package/build/esm/packages/phoenix/src/components/messages/base_message_constants.d.ts +1 -0
  43. package/build/esm/packages/phoenix/src/components/messages/base_message_constants.js +4 -3
  44. package/build/esm/packages/phoenix/src/components/messages/base_message_constants.js.map +1 -1
  45. package/build/esm/packages/phoenix/src/components/messages/base_message_types.d.ts +4 -0
  46. package/build/esm/packages/phoenix/src/components/messages/hints/hint.js +0 -1
  47. package/build/esm/packages/phoenix/src/components/messages/hints/hint.js.map +1 -1
  48. package/build/esm/packages/phoenix/src/components/messages/tooltips/tooltip.js +0 -1
  49. package/build/esm/packages/phoenix/src/components/messages/tooltips/tooltip.js.map +1 -1
  50. package/build/esm/packages/phoenix/src/components/portal/portal_constants.d.ts +1 -0
  51. package/build/esm/packages/phoenix/src/components/tabs/tabs.d.ts +1 -0
  52. package/build/esm/packages/phoenix/src/components/tabs/tabs.js +3 -1
  53. package/build/esm/packages/phoenix/src/components/tabs/tabs.js.map +1 -1
  54. package/build/esm/packages/phoenix/src/controllers/btn_controller.js +3 -2
  55. package/build/esm/packages/phoenix/src/controllers/btn_controller.js.map +1 -1
  56. package/build/esm/packages/phoenix/src/controllers/keystrokes_controller/keystrokes_controller.d.ts +11 -4
  57. package/build/esm/packages/phoenix/src/controllers/keystrokes_controller/keystrokes_controller.js +66 -22
  58. package/build/esm/packages/phoenix/src/controllers/keystrokes_controller/keystrokes_controller.js.map +1 -1
  59. package/build/esm/packages/phoenix/src/controllers/keystrokes_controller/keystrokes_controller_types.d.ts +2 -1
  60. package/build/esm/packages/phoenix/src/core/phoenix_light_lit_element/phoenix_light_lit_element.d.ts +4 -1
  61. package/build/esm/packages/phoenix/src/core/phoenix_light_lit_element/phoenix_light_lit_element.js +11 -4
  62. package/build/esm/packages/phoenix/src/core/phoenix_light_lit_element/phoenix_light_lit_element.js.map +1 -1
  63. package/build/esm/packages/phoenix/src/index.d.ts +0 -3
  64. package/build/esm/packages/phoenix/src/index.js +0 -3
  65. package/build/esm/packages/phoenix/src/index.js.map +1 -1
  66. package/package.json +1 -1
@@ -11,6 +11,7 @@ var portal_constants = require('../portal/portal_constants.js');
11
11
  var litHtml = require('lit-html');
12
12
  var backdrop_controller = require('../backdrop/controller/backdrop_controller.js');
13
13
  var decorators_js = require('@lit/reactive-element/decorators.js');
14
+ var keystrokes_controller = require('../../controllers/keystrokes_controller/keystrokes_controller.js');
14
15
  var global_constants = require('../../global_constants.js');
15
16
  var dropdown_constants = require('./dropdown_constants.js');
16
17
  var relative_position_controller_constants = require('../../controllers/relative_position_controller/relative_position_controller_constants.js');
@@ -21,7 +22,7 @@ var relative_position_controller = require('../../controllers/relative_position_
21
22
  var HDropdown_1;
22
23
  exports.HDropdown = HDropdown_1 = class HDropdown extends phoenix_light_lit_element.PhoenixLightLitElement {
23
24
  constructor() {
24
- super(...arguments);
25
+ super();
25
26
  this.opened = false;
26
27
  this.direction = relative_position_controller_constants.DIRECTIONS.bottomCenter;
27
28
  this.toggleOnHover = false;
@@ -55,13 +56,13 @@ exports.HDropdown = HDropdown_1 = class HDropdown extends phoenix_light_lit_elem
55
56
  }, 0);
56
57
  const transitionDuration = parseFloat(getComputedStyle(this.$dropdownContent || this).transitionDuration) * 1000;
57
58
  setTimeout(() => {
58
- var _a, _b, _c;
59
+ var _a, _b;
59
60
  this._dispatchShowDropdownEvent();
60
61
  (_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`);
61
62
  this._toggleScroll();
62
63
  if (!this._lastFocusableElement)
63
64
  this._lastFocusableElement = (_b = this.$dropdownContent) === null || _b === void 0 ? void 0 : _b.lastElementChild;
64
- this._focusOnNextSibling((_c = this.$dropdownContent) === null || _c === void 0 ? void 0 : _c.firstElementChild);
65
+ utilities.UiDomUtils.setFocusToFirstFocusableElementInContainer(this.$dropdownContent);
65
66
  resolve();
66
67
  }, transitionDuration);
67
68
  });
@@ -132,20 +133,35 @@ exports.HDropdown = HDropdown_1 = class HDropdown extends phoenix_light_lit_elem
132
133
  return;
133
134
  await this.hide();
134
135
  };
135
- this._handleFocusWithinDropdown = async (ev) => {
136
+ this._handleForwardFocus = async (ev) => {
137
+ const $focusableElementsWithinDropdownContent = utilities.UiDomUtils.getFocusableElements(this.$dropdownContent);
138
+ const doesNotHaveFocusableElementsInsideContent = $focusableElementsWithinDropdownContent.length <= 0 && this.opened;
139
+ const isActiveElementLastFocusableElement = document.activeElement === this._lastFocusableElement;
140
+ if (doesNotHaveFocusableElementsInsideContent || isActiveElementLastFocusableElement)
141
+ this._focusOnNextElementAfterToggler(ev);
142
+ };
143
+ this._focusOnNextElementAfterToggler = async (ev) => {
144
+ ev.preventDefault();
145
+ const $focusableElements = utilities.UiDomUtils.getFocusableElements(document.body);
146
+ const indexOfDropdownToggler = $focusableElements.indexOf(this.$dropdownToggler);
147
+ const $nextElementToFocus = $focusableElements.find((currentElement, index) => {
148
+ if (index > indexOfDropdownToggler && !currentElement.closest(`${dropdown_constants.DROPDOWN_TOGGLER_NAME}[name="${this.name}"]`))
149
+ return currentElement;
150
+ return null;
151
+ });
152
+ if ($nextElementToFocus)
153
+ $nextElementToFocus.focus();
154
+ await this._hideDropdownsSequentially();
155
+ await this.hide();
156
+ };
157
+ this._handleBackwardFocus = async (ev) => {
136
158
  var _a;
137
- const hasTabBeenPressed = ev.key.toLowerCase() === 'tab';
138
- if (hasTabBeenPressed && document.activeElement === this._lastFocusableElement) {
139
- ev.preventDefault();
140
- this._focusOnNextSibling(this.nextElementSibling || this);
141
- await this._hideDropdownsSequentially();
142
- }
143
159
  const $firstFocusableElement = this.$dropdownContent && utilities.UiDomUtils.getFocusableElement(this.$dropdownContent);
144
- if (hasTabBeenPressed && ev.shiftKey && document.activeElement === $firstFocusableElement) {
145
- ev.preventDefault();
146
- (_a = this.$dropdownToggler) === null || _a === void 0 ? void 0 : _a.focus();
147
- await this._hideDropdownsSequentially();
148
- }
160
+ if (document.activeElement !== $firstFocusableElement)
161
+ return;
162
+ ev.preventDefault();
163
+ (_a = this.$dropdownToggler) === null || _a === void 0 ? void 0 : _a.focus();
164
+ await this._hideDropdownsSequentially();
149
165
  };
150
166
  this._hoverToggle = async (ev) => {
151
167
  if (window.innerWidth < global_constants.BREAKPOINTS.xs)
@@ -169,6 +185,18 @@ exports.HDropdown = HDropdown_1 = class HDropdown extends phoenix_light_lit_elem
169
185
  : this._positionController.position();
170
186
  });
171
187
  };
188
+ new keystrokes_controller.KeystrokesController({
189
+ host: this,
190
+ target: document.body,
191
+ keys: ['tab'],
192
+ callback: this._handleForwardFocus
193
+ });
194
+ new keystrokes_controller.KeystrokesController({
195
+ host: this,
196
+ target: document.body,
197
+ keys: [['shift', 'tab']],
198
+ callback: this._handleBackwardFocus
199
+ });
172
200
  }
173
201
  connectedCallback() {
174
202
  var _a;
@@ -225,7 +253,6 @@ exports.HDropdown = HDropdown_1 = class HDropdown extends phoenix_light_lit_elem
225
253
  document.addEventListener(dropdown_constants.DROPDOWN_EVENTS.hide, this.hide);
226
254
  window.addEventListener('resize', this._observeScrollToggling);
227
255
  document.addEventListener('keydown', this._closeDropdownOnEscape);
228
- document.addEventListener('keydown', this._handleFocusWithinDropdown);
229
256
  if (this.toggleOnHover)
230
257
  document.addEventListener('mouseover', this._hoverToggle);
231
258
  }
@@ -245,17 +272,6 @@ exports.HDropdown = HDropdown_1 = class HDropdown extends phoenix_light_lit_elem
245
272
  (_b = this.$dropdownContent) === null || _b === void 0 ? void 0 : _b.classList.add(global_constants.SCROLLABLE_CLASS_NAME);
246
273
  }
247
274
  }
248
- _focusOnNextSibling(el) {
249
- el.focus();
250
- if (el === document.activeElement)
251
- return;
252
- if (el.firstElementChild) {
253
- this._focusOnNextSibling(el.firstElementChild);
254
- return;
255
- }
256
- if (el.nextElementSibling)
257
- this._focusOnNextSibling(el.nextElementSibling);
258
- }
259
275
  _isHoveredWithinDropdown(element) {
260
276
  var _a;
261
277
  if (element === this)
@@ -287,7 +303,6 @@ exports.HDropdown = HDropdown_1 = class HDropdown extends phoenix_light_lit_elem
287
303
  window.removeEventListener('resize', this._observeScrollToggling);
288
304
  document.removeEventListener('keydown', this._closeDropdownOnEscape);
289
305
  document.removeEventListener(dropdown_constants.DROPDOWN_EVENTS.hide, this.hide);
290
- document.removeEventListener('keydown', this._handleFocusWithinDropdown);
291
306
  if (this.toggleOnHover)
292
307
  document.removeEventListener('mouseover', this._hoverToggle);
293
308
  if (this.opened) {
@@ -334,6 +349,7 @@ tslib_es6.__decorate([
334
349
  tslib_es6.__metadata("design:type", Object)
335
350
  ], exports.HDropdown.prototype, "_lastFocusableElement", void 0);
336
351
  exports.HDropdown = HDropdown_1 = tslib_es6.__decorate([
337
- phoenix_custom_element.phoenixCustomElement('h-dropdown')
352
+ phoenix_custom_element.phoenixCustomElement('h-dropdown'),
353
+ tslib_es6.__metadata("design:paramtypes", [])
338
354
  ], exports.HDropdown);
339
355
  //# sourceMappingURL=dropdown.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,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;"}
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,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;"}
@@ -37,9 +37,11 @@ exports.HColorSwatchesControl = class HColorSwatchesControl extends phoenix_ligh
37
37
  }
38
38
  render() {
39
39
  return lit.html `
40
- <h-input controlName="${this.name}">
41
- <h-input-control type="${input_constants.INPUT_CONTROL_TYPES.hidden}" value="${this.selectedColors}"></h-input-control>
42
- </h-input>
40
+ <h-input-control
41
+ controlName="${this.controlName}"
42
+ type="${input_constants.INPUT_CONTROL_TYPES.hidden}"
43
+ value="${this.selectedColors}"
44
+ ></h-input-control>
43
45
  `;
44
46
  }
45
47
  };
@@ -50,7 +52,7 @@ tslib_es6.__decorate([
50
52
  tslib_es6.__decorate([
51
53
  decorators.property({ type: String }),
52
54
  tslib_es6.__metadata("design:type", String)
53
- ], exports.HColorSwatchesControl.prototype, "name", void 0);
55
+ ], exports.HColorSwatchesControl.prototype, "controlName", void 0);
54
56
  tslib_es6.__decorate([
55
57
  decorators.property({ type: Boolean }),
56
58
  tslib_es6.__metadata("design:type", Boolean)
@@ -1 +1 @@
1
- {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA,wBAAwB,+CAAmD;AAC3E;AACA;AACA;AACA;AACA;AACA,oBAAoB,gDAAoD;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;"}
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA,wBAAwB,+CAAmD;AAC3E;AACA;AACA;AACA;AACA;AACA,oBAAoB,gDAAoD;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;"}
@@ -10,21 +10,26 @@ var phoenix_custom_element = require('../../../core/decorators/phoenix_custom_el
10
10
  var input_constants = require('./input_constants.js');
11
11
  var icon_constants = require('../../icon/icon_constants.js');
12
12
 
13
- exports.HInputIcon = class HInputIcon extends phoenix_light_lit_element.PhoenixLightLitElement {
13
+ var HInputIcon_1;
14
+ exports.HInputIcon = HInputIcon_1 = class HInputIcon extends phoenix_light_lit_element.PhoenixLightLitElement {
14
15
  connectedCallback() {
15
16
  super.connectedCallback();
16
17
  this.classList.add(input_constants.INPUT_CONTROL_CSS_CLASSES.inputIcon, icon_constants.ICON_CSS_CLASSES.icon);
17
18
  }
18
19
  render() {
19
20
  super.render();
20
- return lit.html ` <h-icon icon-name=${this.iconName}></h-icon> `;
21
+ return lit.html `
22
+ <svg>
23
+ <use xlink:href="${HInputIcon_1.src}#${this.iconName}"></use>
24
+ </svg>
25
+ `;
21
26
  }
22
27
  };
23
28
  tslib_es6.__decorate([
24
- decorators.property({ type: String, attribute: 'icon-name' }),
29
+ decorators.property({ type: String }),
25
30
  tslib_es6.__metadata("design:type", String)
26
31
  ], exports.HInputIcon.prototype, "iconName", void 0);
27
- exports.HInputIcon = tslib_es6.__decorate([
32
+ exports.HInputIcon = HInputIcon_1 = tslib_es6.__decorate([
28
33
  phoenix_custom_element.phoenixCustomElement('h-input-icon')
29
34
  ], exports.HInputIcon);
30
35
  //# sourceMappingURL=input_icon.js.map
@@ -1 +1 @@
1
- {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA,wBAAwB,+CAAmD;AAC3E;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,+CAAmD;AAC3E;AACA;AACA;AACA;AACA;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,22 +2,9 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const iconBaseClass = 'icon';
6
5
  const ICON_CSS_CLASSES = {
7
- icon: iconBaseClass,
8
- iconFilled: `${iconBaseClass}_filled`,
9
- iconNoStroke: `${iconBaseClass}_no-stroke`,
10
- iconSizeL: `${iconBaseClass}_l`,
11
- iconSizeXl: `${iconBaseClass}_xl`,
12
- iconSizeXxl: `${iconBaseClass}_xxl`,
13
- iconClickable: `${iconBaseClass}_clickable`
14
- };
15
- const ICON_SIZES_CSS_CLASS_MAP = {
16
- l: ICON_CSS_CLASSES.iconSizeL,
17
- xl: ICON_CSS_CLASSES.iconSizeXl,
18
- xxl: ICON_CSS_CLASSES.iconSizeXxl
6
+ icon: 'icon'
19
7
  };
20
8
 
21
9
  exports.ICON_CSS_CLASSES = ICON_CSS_CLASSES;
22
- exports.ICON_SIZES_CSS_CLASS_MAP = ICON_SIZES_CSS_CLASS_MAP;
23
10
  //# sourceMappingURL=icon_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;AACA;AACA;AACA;"}
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -21,9 +21,9 @@ class BaseMessage extends phoenix_light_lit_element.PhoenixLightLitElement {
21
21
  this.direction = relative_position_controller_constants.DIRECTIONS.topCenter;
22
22
  this.offset = base_message_constants.DEFAULT_MESSAGE_OFFSET;
23
23
  this._setupEventListeners = () => {
24
- this.addEventListener('mouseenter', this._open);
25
- this.addEventListener('mouseleave', this._close);
26
- this.addEventListener('focus', this._open);
24
+ this.addEventListener('mouseenter', this.open);
25
+ this.addEventListener('mouseleave', this.close);
26
+ this.addEventListener('focus', this.open);
27
27
  };
28
28
  this._positionMessage = () => {
29
29
  requestAnimationFrame(() => {
@@ -31,7 +31,7 @@ class BaseMessage extends phoenix_light_lit_element.PhoenixLightLitElement {
31
31
  (_a = this._$messageContent) === null || _a === void 0 ? void 0 : _a.setAttribute('direction', this._positionController.position());
32
32
  });
33
33
  };
34
- this._open = () => {
34
+ this.open = () => {
35
35
  this._tooltipOpenTime = Date.now();
36
36
  clearTimeout(this._closeTimeout);
37
37
  this._openTimeout = setTimeout(() => {
@@ -40,7 +40,7 @@ class BaseMessage extends phoenix_light_lit_element.PhoenixLightLitElement {
40
40
  this.opened = true;
41
41
  }, base_message_constants.MESSAGE_SHOW_DELAY_IN_MS);
42
42
  };
43
- this._close = () => {
43
+ this.close = () => {
44
44
  this._shouldDelayClosing = Date.now() - this._tooltipOpenTime > base_message_constants.MESSAGE_TIME_TO_DELAY_CLOSING_IN_MS;
45
45
  clearTimeout(this._openTimeout);
46
46
  if (!this.opened)
@@ -62,31 +62,46 @@ class BaseMessage extends phoenix_light_lit_element.PhoenixLightLitElement {
62
62
  this._handleFocusWithinMessage = (ev) => {
63
63
  var _a;
64
64
  if (((_a = document.activeElement) === null || _a === void 0 ? void 0 : _a.closest(`.${this._messageComponentName}`)) !== this)
65
- this._close();
66
- if (!document.activeElement)
65
+ this.close();
66
+ if (!document.activeElement || ev.shiftKey)
67
67
  return;
68
68
  const $focusableElements = utilities.UiDomUtils.getFocusableElements(this);
69
69
  const activeElementIndex = $focusableElements.indexOf(document.activeElement);
70
- // jeśli jest przedostatni, to następnym elementem jest sentinel
71
- const isPenultimate = activeElementIndex + 1 === $focusableElements.length - 1;
72
- if (!isPenultimate)
70
+ const isLastFocusableChild = activeElementIndex === $focusableElements.length - 1;
71
+ if (!isLastFocusableChild)
73
72
  return;
74
- this._close();
75
- ev.preventDefault();
76
- const $focusableParentElements = utilities.UiDomUtils.getFocusableElements(document.body);
77
- const sentinelIndex = $focusableParentElements.indexOf(document.activeElement) + 1;
78
- $focusableParentElements[sentinelIndex + 1].focus();
73
+ this.close();
74
+ };
75
+ this._handleReverseTab = () => {
76
+ const $focusableElements = utilities.UiDomUtils.getFocusableElements(document.body);
77
+ const activeElement = document.activeElement;
78
+ const indexOfCurrentlyFocusedElement = $focusableElements.indexOf(activeElement);
79
+ const $previousElement = $focusableElements[indexOfCurrentlyFocusedElement - 1];
80
+ const $previousElementMessageParent = $previousElement === null || $previousElement === void 0 ? void 0 : $previousElement.closest(`h-${this._messageComponentName}`);
81
+ if ($previousElementMessageParent === this)
82
+ return;
83
+ if ($previousElementMessageParent)
84
+ $previousElementMessageParent.open();
85
+ if (this._isBaseMessage(activeElement))
86
+ activeElement.close();
79
87
  };
80
88
  this._clickOutsideController = new click_outside_controller.ClickOutsideController({
81
89
  host: this,
82
90
  container: this,
83
- action: this._close
91
+ action: this.close
84
92
  });
85
93
  new keystrokes_controller.KeystrokesController({
86
94
  host: this,
87
95
  keys: ['tab'],
96
+ target: this,
88
97
  callback: this._handleFocusWithinMessage
89
98
  });
99
+ new keystrokes_controller.KeystrokesController({
100
+ host: this,
101
+ keys: [['shift', 'tab']],
102
+ target: document.body,
103
+ callback: this._handleReverseTab
104
+ });
90
105
  }
91
106
  connectedCallback(messageComponentName = '') {
92
107
  super.connectedCallback();
@@ -113,6 +128,11 @@ class BaseMessage extends phoenix_light_lit_element.PhoenixLightLitElement {
113
128
  $portalTarget.setAttribute(portal_constants.PORTAL_TARGET_NAME_PROP, base_message_constants.DEFAULT_MESSAGE_PORTAL_NAME);
114
129
  document.body.appendChild($portalTarget);
115
130
  }
131
+ _isBaseMessage($element) {
132
+ if (base_message_constants.MESSAGE_ELEMENTS.includes($element.localName))
133
+ return true;
134
+ return false;
135
+ }
116
136
  }
117
137
  tslib_es6.__decorate([
118
138
  decorators.property({ type: Boolean, reflect: true }),
@@ -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;"}
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;"}
@@ -9,6 +9,7 @@ const DEFAULT_MESSAGE_PORTAL_NAME = 'message-portal';
9
9
  const MESSAGE_CONTENT_SLOT_NAME = 'message-content';
10
10
  const MESSAGE_REMOVED_CLASS_NAME = `removed`;
11
11
  const DEFAULT_MESSAGE_OFFSET = 10;
12
+ const MESSAGE_ELEMENTS = [tooltip_constants.TOOLTIP_ELEMENT_NAME, hint_constants.HINT_ELEMENT_NAME];
12
13
  const MESSAGE_CONTENT_ELEMENTS = [tooltip_constants.TOOLTIP_CONTENT_ELEMENT_NAME, hint_constants.HINT_CONTENT_ELEMENT_NAME];
13
14
  const MESSAGE_SHOW_DELAY_IN_MS = 100;
14
15
  const MESSAGE_TIME_TO_DELAY_CLOSING_IN_MS = 500;
@@ -19,6 +20,7 @@ exports.DEFAULT_MESSAGE_PORTAL_NAME = DEFAULT_MESSAGE_PORTAL_NAME;
19
20
  exports.MESSAGE_CLOSE_DELAY_IN_MS = MESSAGE_CLOSE_DELAY_IN_MS;
20
21
  exports.MESSAGE_CONTENT_ELEMENTS = MESSAGE_CONTENT_ELEMENTS;
21
22
  exports.MESSAGE_CONTENT_SLOT_NAME = MESSAGE_CONTENT_SLOT_NAME;
23
+ exports.MESSAGE_ELEMENTS = MESSAGE_ELEMENTS;
22
24
  exports.MESSAGE_REMOVED_CLASS_NAME = MESSAGE_REMOVED_CLASS_NAME;
23
25
  exports.MESSAGE_SHOW_DELAY_IN_MS = MESSAGE_SHOW_DELAY_IN_MS;
24
26
  exports.MESSAGE_TIME_TO_DELAY_CLOSING_IN_MS = MESSAGE_TIME_TO_DELAY_CLOSING_IN_MS;
@@ -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;"}
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;"}
@@ -24,7 +24,6 @@ exports.HHint = class HHint extends base_message.BaseMessage {
24
24
  <h-portal ?disabled="${!this.opened}" @portal.open="${this._positionMessage}" to="${this.portalTarget}" hidden>
25
25
  ${this.getSlot(base_message_constants.MESSAGE_CONTENT_SLOT_NAME)}
26
26
  </h-portal>
27
- <div tabindex="0"></div>
28
27
  `;
29
28
  }
30
29
  };
@@ -1 +1 @@
1
- {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA,wBAAwB,+CAAmD;AAC3E;AACA;AACA;AACA;AACA;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,+CAAmD;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -20,7 +20,6 @@ exports.HTooltip = class HTooltip extends base_message.BaseMessage {
20
20
  <h-portal ?disabled="${!this.opened}" @portal.open="${this._positionMessage}" to="${this.portalTarget}" hidden>
21
21
  ${this.getSlot(base_message_constants.MESSAGE_CONTENT_SLOT_NAME)}
22
22
  </h-portal>
23
- <div tabindex="0"></div>
24
23
  `;
25
24
  }
26
25
  };
@@ -1 +1 @@
1
- {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA,wBAAwB,+CAAmD;AAC3E;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,+CAAmD;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -15,6 +15,7 @@ var tabs_constants = require('./tabs_constants.js');
15
15
  exports.HTabs = class HTabs extends phoenix_light_lit_element.PhoenixLightLitElement {
16
16
  constructor() {
17
17
  super(...arguments);
18
+ this.watchChildrenRendered = true;
18
19
  this._handleArrowNavigation = ({ key }) => {
19
20
  const currentTabIndex = this._getFocusedTabIndex();
20
21
  if (currentTabIndex === undefined)
@@ -44,7 +45,8 @@ exports.HTabs = class HTabs extends phoenix_light_lit_element.PhoenixLightLitEle
44
45
  new keystrokes_controller.KeystrokesController({
45
46
  host: this,
46
47
  keys: ['ArrowRight', 'ArrowLeft'],
47
- callback: this._handleArrowNavigation
48
+ callback: this._handleArrowNavigation,
49
+ target: this
48
50
  });
49
51
  }
50
52
  _getFocusedTabIndex() {
@@ -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;"}
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;"}
@@ -12,8 +12,9 @@ class BtnController {
12
12
  this.host.setAttribute('role', 'button');
13
13
  this._keystrokesController = new keystrokes_controller.KeystrokesController({
14
14
  host,
15
- keys: [' ', 'enter'],
16
- callback
15
+ keys: ['enter', ' '],
16
+ callback,
17
+ target: host
17
18
  });
18
19
  }
19
20
  hostConnected() { }
@@ -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;"}
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;"}
@@ -4,47 +4,91 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var tslib_es6 = require('../../../../../external/tslib/tslib.es6.js');
6
6
  require('lit');
7
- var keystrokes_controller_constants = require('./keystrokes_controller_constants.js');
8
7
 
9
- var _KeystrokesController_host;
8
+ var _KeystrokesController_host, _KeystrokesController_target;
10
9
  class KeystrokesController {
11
- constructor({ host, keys, callback }) {
10
+ constructor({ host, keys, callback, target }) {
12
11
  _KeystrokesController_host.set(this, void 0);
12
+ _KeystrokesController_target.set(this, void 0);
13
13
  this._buffer = [];
14
- this._lastKeyTime = Date.now();
15
- this._catchKeySequence = (ev) => {
16
- // ev.stopImmediatePropagation();
14
+ this._clearBuffer = () => {
15
+ this._buffer = [];
16
+ };
17
+ this._saveKey = (ev) => {
17
18
  const key = ev.key.toLowerCase();
18
- const currentTime = Date.now();
19
- if (currentTime - this._lastKeyTime > keystrokes_controller_constants.KEYSTROKE_DELAY_IN_MS) {
20
- this._buffer = [];
19
+ if (!this._buffer.includes(key))
20
+ this._buffer = [...this._buffer, key];
21
+ this._bindSavedKeysWithCallback(ev, this._buffer);
22
+ };
23
+ this._bindSavedKeysWithCallback = (ev, savedKeys) => {
24
+ if (typeof this._keys === 'string') {
25
+ this._bindWithOneKey(ev, savedKeys);
26
+ return;
21
27
  }
22
- this._buffer.push(key);
23
- this._lastKeyTime = currentTime;
24
- this._bindKeysWithCallback(ev, this._buffer.join(''));
28
+ const areAllKeysPressed = this._isKeySequenceMultiple(this._keys)
29
+ ? this._areAllKeysPressedInMultipleSequences(this._keys, savedKeys)
30
+ : this._isOneOfTheKeysPressed(this._keys, savedKeys);
31
+ if (areAllKeysPressed)
32
+ this._callback(ev);
25
33
  };
26
- this._bindKeysWithCallback = (ev, keySequence) => {
27
- const isCorrectKeyPressed = !!this._keys.find((key) => {
28
- return key.toLowerCase() === keySequence;
34
+ this._bindWithOneKey = (ev, savedKeys) => {
35
+ if (!savedKeys.includes(this._keys))
36
+ return;
37
+ this._callback(ev);
38
+ };
39
+ this._isKeySequenceMultiple = (keySequence) => {
40
+ const firstSequence = keySequence[0];
41
+ if (typeof firstSequence === 'object')
42
+ return true;
43
+ return false;
44
+ };
45
+ this._areAllKeysPressedInMultipleSequences = (keySequences, savedKeys) => {
46
+ return !!keySequences.find((keySequence) => {
47
+ return this._areAllKeysPressedInSingleSequence(keySequence, savedKeys);
29
48
  });
30
- if (isCorrectKeyPressed) {
31
- this._buffer = [];
32
- this._callback(ev);
33
- }
49
+ };
50
+ this._areAllKeysPressedInSingleSequence = (keySequence, savedKeys) => {
51
+ const indexesInSavedKeys = this._calculateIndexesInSavedKeys(keySequence, savedKeys);
52
+ if (indexesInSavedKeys.includes(-1))
53
+ return false;
54
+ const firstPressedKeyIndex = indexesInSavedKeys[0];
55
+ const lastPressedKeyIndex = indexesInSavedKeys[indexesInSavedKeys.length - 1];
56
+ const areKeysPressedSequentially = lastPressedKeyIndex - firstPressedKeyIndex === indexesInSavedKeys.length - 1;
57
+ return areKeysPressedSequentially;
58
+ };
59
+ this._isOneOfTheKeysPressed = (keys, savedKeys) => {
60
+ const indexesInSavedKeys = this._calculateIndexesInSavedKeys(keys, savedKeys);
61
+ return typeof indexesInSavedKeys.find((index) => index > -1) === 'number';
62
+ };
63
+ this._calculateIndexesInSavedKeys = (keySequence, savedKeys) => {
64
+ return keySequence.reduce((allIndexes, currentKeyInSequence) => {
65
+ return [...allIndexes, savedKeys.indexOf(currentKeyInSequence.toLowerCase())];
66
+ }, []);
67
+ };
68
+ // do ogrania jeszcze string czyli zapięcie się na jeden guzik
69
+ this._removeKey = (ev) => {
70
+ const key = ev.key.toLowerCase();
71
+ if (this._buffer.includes(key))
72
+ this._buffer = this._buffer.filter((currentSavedKey) => currentSavedKey !== key);
34
73
  };
35
74
  tslib_es6.__classPrivateFieldSet(this, _KeystrokesController_host, host, "f");
75
+ tslib_es6.__classPrivateFieldSet(this, _KeystrokesController_target, target, "f");
36
76
  this._keys = keys;
37
77
  this._callback = callback;
38
78
  tslib_es6.__classPrivateFieldGet(this, _KeystrokesController_host, "f").addController(this);
79
+ tslib_es6.__classPrivateFieldGet(this, _KeystrokesController_target, "f").addEventListener('keydown', this._saveKey);
80
+ tslib_es6.__classPrivateFieldGet(this, _KeystrokesController_target, "f").addEventListener('keyup', this._removeKey);
39
81
  }
40
82
  hostConnected() {
41
- tslib_es6.__classPrivateFieldGet(this, _KeystrokesController_host, "f").addEventListener('keydown', this._catchKeySequence);
83
+ tslib_es6.__classPrivateFieldGet(this, _KeystrokesController_host, "f").addEventListener('focusout', this._clearBuffer);
42
84
  }
43
85
  hostDisconnected() {
44
- tslib_es6.__classPrivateFieldGet(this, _KeystrokesController_host, "f").removeEventListener('keydown', this._catchKeySequence);
86
+ tslib_es6.__classPrivateFieldGet(this, _KeystrokesController_host, "f").removeEventListener('focusout', this._clearBuffer);
87
+ tslib_es6.__classPrivateFieldGet(this, _KeystrokesController_target, "f").addEventListener('keydown', this._saveKey);
88
+ tslib_es6.__classPrivateFieldGet(this, _KeystrokesController_target, "f").addEventListener('keyup', this._removeKey);
45
89
  }
46
90
  }
47
- _KeystrokesController_host = new WeakMap();
91
+ _KeystrokesController_host = new WeakMap(), _KeystrokesController_target = new WeakMap();
48
92
 
49
93
  exports.KeystrokesController = KeystrokesController;
50
94
  //# sourceMappingURL=keystrokes_controller.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;"}
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;"}
@@ -12,6 +12,8 @@ class PhoenixLightLitElement extends lit.LitElement {
12
12
  constructor() {
13
13
  super(...arguments);
14
14
  this._slots = {};
15
+ this.watchChildrenRendered = false;
16
+ this.watchChildrenConnected = false;
15
17
  this.isWebComponentConnected = false;
16
18
  this.isWebComponentRendered = false;
17
19
  this._childrenForConnectionToWatch = [];
@@ -54,14 +56,16 @@ class PhoenixLightLitElement extends lit.LitElement {
54
56
  this._dispatchLifecycleEvent(phoenix_light_lit_elements_constants.PHOENIX_LIGHT_LIT_ELEMENTS_EVENT_NAMES.rendered);
55
57
  this.isWebComponentRendered = true;
56
58
  }
57
- _setupChildrenWatch() {
59
+ _setupChildrenConnectedWatch() {
58
60
  this._childrenForConnectionToWatch = this.childrenToWatch ? this.childrenToWatch : this._getComponentsNamesForConnectionToWatch();
59
- this._childrenForRenderToWatch = this.childrenToWatch ? this.childrenToWatch : this._getComponentsNamesForRenderedToWatch();
60
61
  if (!this._childrenForConnectionToWatch.length)
61
62
  this.allChildrenConnected();
63
+ this.addEventListener(phoenix_light_lit_elements_constants.PHOENIX_LIGHT_LIT_ELEMENTS_EVENT_NAMES.connected, this._handleComponentConnected);
64
+ }
65
+ _setupChildrenRenderWatch() {
66
+ this._childrenForRenderToWatch = this.childrenToWatch ? this.childrenToWatch : this._getComponentsNamesForRenderedToWatch();
62
67
  if (!this._childrenForRenderToWatch.length)
63
68
  this.allChildrenRendered();
64
- this.addEventListener(phoenix_light_lit_elements_constants.PHOENIX_LIGHT_LIT_ELEMENTS_EVENT_NAMES.connected, this._handleComponentConnected);
65
69
  this.addEventListener(phoenix_light_lit_elements_constants.PHOENIX_LIGHT_LIT_ELEMENTS_EVENT_NAMES.rendered, this._handleComponentRendered);
66
70
  }
67
71
  _getComponentsNamesForConnectionToWatch() {
@@ -74,7 +78,10 @@ class PhoenixLightLitElement extends lit.LitElement {
74
78
  super.connectedCallback();
75
79
  this._dispatchLifecycleEvent(phoenix_light_lit_elements_constants.PHOENIX_LIGHT_LIT_ELEMENTS_EVENT_NAMES.connected);
76
80
  this.isWebComponentConnected = true;
77
- this._setupChildrenWatch();
81
+ if (this.watchChildrenConnected)
82
+ this._setupChildrenConnectedWatch();
83
+ if (this.watchChildrenRendered)
84
+ this._setupChildrenRenderWatch();
78
85
  }
79
86
  allChildrenConnected() { }
80
87
  allChildrenRendered() { }
@@ -1 +1 @@
1
- {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;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;"}
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;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;"}