@shoper/phoenix_design_system 0.12.0 → 0.13.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 (23) hide show
  1. package/build/cjs/packages/phoenix/src/components/accordion/accordion_content.js +1 -1
  2. package/build/cjs/packages/phoenix/src/components/accordion/accordion_group.js +6 -4
  3. package/build/cjs/packages/phoenix/src/components/accordion/accordion_group.js.map +1 -1
  4. package/build/cjs/packages/phoenix/src/controllers/transition_controller/transition_controller.js +25 -16
  5. package/build/cjs/packages/phoenix/src/controllers/transition_controller/transition_controller.js.map +1 -1
  6. package/build/cjs/packages/phoenix/src/core/context/context_constants.js +10 -0
  7. package/build/cjs/packages/phoenix/src/core/context/context_constants.js.map +1 -0
  8. package/build/cjs/packages/phoenix/src/core/context/context_consumer_controller.js +32 -28
  9. package/build/cjs/packages/phoenix/src/core/context/context_consumer_controller.js.map +1 -1
  10. package/build/esm/packages/phoenix/src/components/accordion/accordion_content.js +1 -1
  11. package/build/esm/packages/phoenix/src/components/accordion/accordion_group.js +6 -4
  12. package/build/esm/packages/phoenix/src/components/accordion/accordion_group.js.map +1 -1
  13. package/build/esm/packages/phoenix/src/controllers/transition_controller/transition_controller.d.ts +2 -2
  14. package/build/esm/packages/phoenix/src/controllers/transition_controller/transition_controller.js +25 -16
  15. package/build/esm/packages/phoenix/src/controllers/transition_controller/transition_controller.js.map +1 -1
  16. package/build/esm/packages/phoenix/src/core/context/context_constants.d.ts +2 -0
  17. package/build/esm/packages/phoenix/src/core/context/context_constants.js +5 -0
  18. package/build/esm/packages/phoenix/src/core/context/context_constants.js.map +1 -0
  19. package/build/esm/packages/phoenix/src/core/context/context_consumer_controller.d.ts +4 -2
  20. package/build/esm/packages/phoenix/src/core/context/context_consumer_controller.js +32 -28
  21. package/build/esm/packages/phoenix/src/core/context/context_consumer_controller.js.map +1 -1
  22. package/build/esm/packages/phoenix/src/core/context/context_controller_types.d.ts +4 -0
  23. package/package.json +1 -1
@@ -31,7 +31,7 @@ exports.HAccordionContent = class HAccordionContent extends phoenix_light_lit_el
31
31
  this._subscribeObserver();
32
32
  }
33
33
  _setStylingOptions() {
34
- this.style.display = 'block';
34
+ this.style.setProperty('display', 'block', 'important');
35
35
  this._originalHeight = `${this.getBoundingClientRect().height}px`;
36
36
  this.style.display = '';
37
37
  this.style.height = this._originalHeight;
@@ -82,10 +82,12 @@ exports.HAccordionGroup = class HAccordionGroup extends phoenix_light_lit_elemen
82
82
  }
83
83
  }
84
84
  _closeOtherAccordionGroups() {
85
- const $accordion = this.closest('h-accordion');
86
- const $accordionGroups = [...$accordion.querySelectorAll('h-accordion-group')];
87
- const $otherAccordionGroupsWithinAccordion = $accordionGroups.filter(($accordionGroup) => $accordionGroup !== this);
88
- $otherAccordionGroupsWithinAccordion.forEach(($accordionGroup) => $accordionGroup.hide());
85
+ if (!this._isDisabled) {
86
+ const $accordion = this.closest('h-accordion');
87
+ const $accordionGroups = [...$accordion.querySelectorAll('h-accordion-group')];
88
+ const $otherAccordionGroupsWithinAccordion = $accordionGroups.filter(($accordionGroup) => $accordionGroup !== this);
89
+ $otherAccordionGroupsWithinAccordion.forEach(($accordionGroup) => $accordionGroup.hide());
90
+ }
89
91
  }
90
92
  notify() {
91
93
  this._accordionGroupPropsSubject.notify(this._getProps());
@@ -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;"}
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;"}
@@ -14,24 +14,33 @@ class TransitionController {
14
14
  this._transitionDuration = parseFloat(getComputedStyle(this.host).transitionDuration) * 1000;
15
15
  }
16
16
  hostDisconnected() { }
17
- show(callback) {
18
- this.host.hidden = false;
19
- this.host.classList.add(`${this._transitionName}-${transition_controller_constants.TRANSITION_CSS_CLASSES.transitionEnd}`);
20
- requestAnimationFrame(() => {
21
- this.host.classList.remove(`${this._transitionName}-${transition_controller_constants.TRANSITION_CSS_CLASSES.transitionStart}`);
22
- if (typeof callback === 'function')
23
- callback();
17
+ async show(callback) {
18
+ return new Promise((resolve) => {
19
+ this.host.hidden = false;
20
+ this.host.classList.add(`${this._transitionName}-${transition_controller_constants.TRANSITION_CSS_CLASSES.transitionEnd}`);
21
+ requestAnimationFrame(() => {
22
+ this.host.classList.remove(`${this._transitionName}-${transition_controller_constants.TRANSITION_CSS_CLASSES.transitionStart}`);
23
+ if (typeof callback === 'function')
24
+ callback();
25
+ setTimeout(() => {
26
+ this.host.hidden = false;
27
+ resolve();
28
+ }, this._transitionDuration);
29
+ });
24
30
  });
25
31
  }
26
- hide(callback) {
27
- requestAnimationFrame(() => {
28
- if (typeof callback === 'function')
29
- callback();
30
- this.host.classList.add(`${this._transitionName}-${transition_controller_constants.TRANSITION_CSS_CLASSES.transitionStart}`);
31
- this.host.classList.remove(`${this._transitionName}-${transition_controller_constants.TRANSITION_CSS_CLASSES.transitionEnd}`);
32
- setTimeout(() => {
33
- this.host.hidden = true;
34
- }, this._transitionDuration);
32
+ async hide(callback) {
33
+ return new Promise((resolve) => {
34
+ requestAnimationFrame(() => {
35
+ if (typeof callback === 'function')
36
+ callback();
37
+ this.host.classList.add(`${this._transitionName}-${transition_controller_constants.TRANSITION_CSS_CLASSES.transitionStart}`);
38
+ this.host.classList.remove(`${this._transitionName}-${transition_controller_constants.TRANSITION_CSS_CLASSES.transitionEnd}`);
39
+ setTimeout(() => {
40
+ this.host.hidden = true;
41
+ resolve();
42
+ }, this._transitionDuration);
43
+ });
35
44
  });
36
45
  }
37
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const CONTEXT_ASYNC_CONSUMER_DEFAULT_INTERVAL_RATE = 50;
6
+ const CONTEXT_ASYNC_CONSUMER_DFAULT_MAX_WAITING_TIME = 2000;
7
+
8
+ exports.CONTEXT_ASYNC_CONSUMER_DEFAULT_INTERVAL_RATE = CONTEXT_ASYNC_CONSUMER_DEFAULT_INTERVAL_RATE;
9
+ exports.CONTEXT_ASYNC_CONSUMER_DFAULT_MAX_WAITING_TIME = CONTEXT_ASYNC_CONSUMER_DFAULT_MAX_WAITING_TIME;
10
+ //# sourceMappingURL=context_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;"}
@@ -5,25 +5,39 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var tslib_es6 = require('../../../../../external/tslib/tslib.es6.js');
6
6
  require('lit');
7
7
  var context_consumer_messages_names = require('./context_consumer_messages_names.js');
8
+ var context_constants = require('./context_constants.js');
8
9
 
9
- var _ContextConsumerController_host;
10
+ var _ContextConsumerController_host, _ContextConsumerController_asyncConsumerSentinelId, _ContextConsumerController_asyncConsumerIntervalId;
10
11
  class ContextConsumerController {
11
12
  constructor(host) {
12
13
  _ContextConsumerController_host.set(this, void 0);
14
+ _ContextConsumerController_asyncConsumerSentinelId.set(this, void 0);
15
+ _ContextConsumerController_asyncConsumerIntervalId.set(this, void 0);
13
16
  tslib_es6.__classPrivateFieldSet(this, _ContextConsumerController_host, host, "f");
14
17
  tslib_es6.__classPrivateFieldGet(this, _ContextConsumerController_host, "f").addController(this);
15
18
  }
16
19
  consume(key) {
17
- const consumeEvent = new CustomEvent(context_consumer_messages_names.WEB_COMPONENT_CONTEXT_EVENTS.valueRequested, {
18
- bubbles: true,
19
- cancelable: true,
20
- composed: true,
21
- detail: { key }
20
+ return this._consumeValue(key);
21
+ }
22
+ async consumeAsync(key, { intervalRate = context_constants.CONTEXT_ASYNC_CONSUMER_DEFAULT_INTERVAL_RATE, maxWaitingTime = context_constants.CONTEXT_ASYNC_CONSUMER_DFAULT_MAX_WAITING_TIME } = {}) {
23
+ const value = this._consumeValue(key);
24
+ if (value !== undefined)
25
+ return value;
26
+ return new Promise((resolve, reject) => {
27
+ tslib_es6.__classPrivateFieldSet(this, _ContextConsumerController_asyncConsumerIntervalId, setInterval(() => {
28
+ const value = this._consumeValue(key);
29
+ if (value !== undefined) {
30
+ resolve(value);
31
+ }
32
+ }, intervalRate), "f");
33
+ tslib_es6.__classPrivateFieldSet(this, _ContextConsumerController_asyncConsumerSentinelId, setTimeout(() => {
34
+ reject();
35
+ }, maxWaitingTime), "f");
36
+ }).finally(() => {
37
+ this._clearAsyncConsumerIntervals();
22
38
  });
23
- tslib_es6.__classPrivateFieldGet(this, _ContextConsumerController_host, "f").dispatchEvent(consumeEvent);
24
- return consumeEvent.detail[key];
25
39
  }
26
- async consumeAsync(key) {
40
+ _consumeValue(key) {
27
41
  const consumeEvent = new CustomEvent(context_consumer_messages_names.WEB_COMPONENT_CONTEXT_EVENTS.valueRequested, {
28
42
  bubbles: true,
29
43
  cancelable: true,
@@ -31,29 +45,19 @@ class ContextConsumerController {
31
45
  detail: { key }
32
46
  });
33
47
  tslib_es6.__classPrivateFieldGet(this, _ContextConsumerController_host, "f").dispatchEvent(consumeEvent);
34
- if (consumeEvent.detail[key] !== undefined)
35
- return consumeEvent.detail[key];
36
- return new Promise((resolve, reject) => {
37
- const intervalId = setInterval(() => {
38
- tslib_es6.__classPrivateFieldGet(this, _ContextConsumerController_host, "f").dispatchEvent(consumeEvent);
39
- const value = consumeEvent.detail[key];
40
- if (consumeEvent.detail[key] !== undefined) {
41
- clearInterval(intervalId);
42
- clearTimeout(timeoutId);
43
- resolve(value);
44
- }
45
- }, 50);
46
- const timeoutId = setTimeout(() => {
47
- clearInterval(timeoutId);
48
- reject();
49
- }, 2000);
50
- });
48
+ return consumeEvent.detail[key];
51
49
  }
52
50
  // Added to fix typescript error
53
51
  // eslint-disable-next-line @typescript-eslint/no-empty-function
54
- hostConnected() { }
52
+ hostConnected() {
53
+ this._clearAsyncConsumerIntervals();
54
+ }
55
+ _clearAsyncConsumerIntervals() {
56
+ tslib_es6.__classPrivateFieldGet(this, _ContextConsumerController_asyncConsumerSentinelId, "f") && window.clearTimeout(tslib_es6.__classPrivateFieldGet(this, _ContextConsumerController_asyncConsumerSentinelId, "f"));
57
+ tslib_es6.__classPrivateFieldGet(this, _ContextConsumerController_asyncConsumerIntervalId, "f") && clearInterval(tslib_es6.__classPrivateFieldGet(this, _ContextConsumerController_asyncConsumerIntervalId, "f"));
58
+ }
55
59
  }
56
- _ContextConsumerController_host = new WeakMap();
60
+ _ContextConsumerController_host = new WeakMap(), _ContextConsumerController_asyncConsumerSentinelId = new WeakMap(), _ContextConsumerController_asyncConsumerIntervalId = new WeakMap();
57
61
 
58
62
  exports.ContextConsumerController = ContextConsumerController;
59
63
  //# sourceMappingURL=context_consumer_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;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;"}
@@ -27,7 +27,7 @@ let HAccordionContent = class HAccordionContent extends PhoenixLightLitElement {
27
27
  this._subscribeObserver();
28
28
  }
29
29
  _setStylingOptions() {
30
- this.style.display = 'block';
30
+ this.style.setProperty('display', 'block', 'important');
31
31
  this._originalHeight = `${this.getBoundingClientRect().height}px`;
32
32
  this.style.display = '';
33
33
  this.style.height = this._originalHeight;
@@ -78,10 +78,12 @@ let HAccordionGroup = class HAccordionGroup extends PhoenixLightLitElement {
78
78
  }
79
79
  }
80
80
  _closeOtherAccordionGroups() {
81
- const $accordion = this.closest('h-accordion');
82
- const $accordionGroups = [...$accordion.querySelectorAll('h-accordion-group')];
83
- const $otherAccordionGroupsWithinAccordion = $accordionGroups.filter(($accordionGroup) => $accordionGroup !== this);
84
- $otherAccordionGroupsWithinAccordion.forEach(($accordionGroup) => $accordionGroup.hide());
81
+ if (!this._isDisabled) {
82
+ const $accordion = this.closest('h-accordion');
83
+ const $accordionGroups = [...$accordion.querySelectorAll('h-accordion-group')];
84
+ const $otherAccordionGroupsWithinAccordion = $accordionGroups.filter(($accordionGroup) => $accordionGroup !== this);
85
+ $otherAccordionGroupsWithinAccordion.forEach(($accordionGroup) => $accordionGroup.hide());
86
+ }
85
87
  }
86
88
  notify() {
87
89
  this._accordionGroupPropsSubject.notify(this._getProps());
@@ -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;"}
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;"}
@@ -6,6 +6,6 @@ export declare class TransitionController implements ReactiveController {
6
6
  constructor(host: ReactiveControllerHost & HTMLElement, transitionName: string);
7
7
  hostConnected(): void;
8
8
  hostDisconnected(): void;
9
- show(callback?: () => void): void;
10
- hide(callback?: () => void): void;
9
+ show(callback?: () => void): Promise<void>;
10
+ hide(callback?: () => void): Promise<void>;
11
11
  }
@@ -10,24 +10,33 @@ class TransitionController {
10
10
  this._transitionDuration = parseFloat(getComputedStyle(this.host).transitionDuration) * 1000;
11
11
  }
12
12
  hostDisconnected() { }
13
- show(callback) {
14
- this.host.hidden = false;
15
- this.host.classList.add(`${this._transitionName}-${TRANSITION_CSS_CLASSES.transitionEnd}`);
16
- requestAnimationFrame(() => {
17
- this.host.classList.remove(`${this._transitionName}-${TRANSITION_CSS_CLASSES.transitionStart}`);
18
- if (typeof callback === 'function')
19
- callback();
13
+ async show(callback) {
14
+ return new Promise((resolve) => {
15
+ this.host.hidden = false;
16
+ this.host.classList.add(`${this._transitionName}-${TRANSITION_CSS_CLASSES.transitionEnd}`);
17
+ requestAnimationFrame(() => {
18
+ this.host.classList.remove(`${this._transitionName}-${TRANSITION_CSS_CLASSES.transitionStart}`);
19
+ if (typeof callback === 'function')
20
+ callback();
21
+ setTimeout(() => {
22
+ this.host.hidden = false;
23
+ resolve();
24
+ }, this._transitionDuration);
25
+ });
20
26
  });
21
27
  }
22
- hide(callback) {
23
- requestAnimationFrame(() => {
24
- if (typeof callback === 'function')
25
- callback();
26
- this.host.classList.add(`${this._transitionName}-${TRANSITION_CSS_CLASSES.transitionStart}`);
27
- this.host.classList.remove(`${this._transitionName}-${TRANSITION_CSS_CLASSES.transitionEnd}`);
28
- setTimeout(() => {
29
- this.host.hidden = true;
30
- }, this._transitionDuration);
28
+ async hide(callback) {
29
+ return new Promise((resolve) => {
30
+ requestAnimationFrame(() => {
31
+ if (typeof callback === 'function')
32
+ callback();
33
+ this.host.classList.add(`${this._transitionName}-${TRANSITION_CSS_CLASSES.transitionStart}`);
34
+ this.host.classList.remove(`${this._transitionName}-${TRANSITION_CSS_CLASSES.transitionEnd}`);
35
+ setTimeout(() => {
36
+ this.host.hidden = true;
37
+ resolve();
38
+ }, this._transitionDuration);
39
+ });
31
40
  });
32
41
  }
33
42
  }
@@ -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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,2 @@
1
+ export declare const CONTEXT_ASYNC_CONSUMER_DEFAULT_INTERVAL_RATE = 50;
2
+ export declare const CONTEXT_ASYNC_CONSUMER_DFAULT_MAX_WAITING_TIME = 2000;
@@ -0,0 +1,5 @@
1
+ const CONTEXT_ASYNC_CONSUMER_DEFAULT_INTERVAL_RATE = 50;
2
+ const CONTEXT_ASYNC_CONSUMER_DFAULT_MAX_WAITING_TIME = 2000;
3
+
4
+ export { CONTEXT_ASYNC_CONSUMER_DEFAULT_INTERVAL_RATE, CONTEXT_ASYNC_CONSUMER_DFAULT_MAX_WAITING_TIME };
5
+ //# sourceMappingURL=context_constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;"}
@@ -1,9 +1,11 @@
1
- import { TContextValueKey, TWebComponentsContextControllerHost } from "./context_controller_types";
1
+ import { TAsyncConsumerOptions, TContextValueKey, TWebComponentsContextControllerHost } from "./context_controller_types";
2
2
  import { ReactiveController } from 'lit';
3
3
  export declare class ContextConsumerController<TValue> implements ReactiveController {
4
4
  #private;
5
5
  constructor(host: TWebComponentsContextControllerHost);
6
6
  consume(key: TContextValueKey): TValue;
7
- consumeAsync(key: TContextValueKey): Promise<TValue>;
7
+ consumeAsync(key: TContextValueKey, { intervalRate, maxWaitingTime }?: TAsyncConsumerOptions): Promise<TValue>;
8
+ private _consumeValue;
8
9
  hostConnected(): void;
10
+ private _clearAsyncConsumerIntervals;
9
11
  }
@@ -1,25 +1,39 @@
1
1
  import { __classPrivateFieldSet, __classPrivateFieldGet } from '../../../../../external/tslib/tslib.es6.js';
2
2
  import 'lit';
3
3
  import { WEB_COMPONENT_CONTEXT_EVENTS } from './context_consumer_messages_names.js';
4
+ import { CONTEXT_ASYNC_CONSUMER_DEFAULT_INTERVAL_RATE, CONTEXT_ASYNC_CONSUMER_DFAULT_MAX_WAITING_TIME } from './context_constants.js';
4
5
 
5
- var _ContextConsumerController_host;
6
+ var _ContextConsumerController_host, _ContextConsumerController_asyncConsumerSentinelId, _ContextConsumerController_asyncConsumerIntervalId;
6
7
  class ContextConsumerController {
7
8
  constructor(host) {
8
9
  _ContextConsumerController_host.set(this, void 0);
10
+ _ContextConsumerController_asyncConsumerSentinelId.set(this, void 0);
11
+ _ContextConsumerController_asyncConsumerIntervalId.set(this, void 0);
9
12
  __classPrivateFieldSet(this, _ContextConsumerController_host, host, "f");
10
13
  __classPrivateFieldGet(this, _ContextConsumerController_host, "f").addController(this);
11
14
  }
12
15
  consume(key) {
13
- const consumeEvent = new CustomEvent(WEB_COMPONENT_CONTEXT_EVENTS.valueRequested, {
14
- bubbles: true,
15
- cancelable: true,
16
- composed: true,
17
- detail: { key }
16
+ return this._consumeValue(key);
17
+ }
18
+ async consumeAsync(key, { intervalRate = CONTEXT_ASYNC_CONSUMER_DEFAULT_INTERVAL_RATE, maxWaitingTime = CONTEXT_ASYNC_CONSUMER_DFAULT_MAX_WAITING_TIME } = {}) {
19
+ const value = this._consumeValue(key);
20
+ if (value !== undefined)
21
+ return value;
22
+ return new Promise((resolve, reject) => {
23
+ __classPrivateFieldSet(this, _ContextConsumerController_asyncConsumerIntervalId, setInterval(() => {
24
+ const value = this._consumeValue(key);
25
+ if (value !== undefined) {
26
+ resolve(value);
27
+ }
28
+ }, intervalRate), "f");
29
+ __classPrivateFieldSet(this, _ContextConsumerController_asyncConsumerSentinelId, setTimeout(() => {
30
+ reject();
31
+ }, maxWaitingTime), "f");
32
+ }).finally(() => {
33
+ this._clearAsyncConsumerIntervals();
18
34
  });
19
- __classPrivateFieldGet(this, _ContextConsumerController_host, "f").dispatchEvent(consumeEvent);
20
- return consumeEvent.detail[key];
21
35
  }
22
- async consumeAsync(key) {
36
+ _consumeValue(key) {
23
37
  const consumeEvent = new CustomEvent(WEB_COMPONENT_CONTEXT_EVENTS.valueRequested, {
24
38
  bubbles: true,
25
39
  cancelable: true,
@@ -27,29 +41,19 @@ class ContextConsumerController {
27
41
  detail: { key }
28
42
  });
29
43
  __classPrivateFieldGet(this, _ContextConsumerController_host, "f").dispatchEvent(consumeEvent);
30
- if (consumeEvent.detail[key] !== undefined)
31
- return consumeEvent.detail[key];
32
- return new Promise((resolve, reject) => {
33
- const intervalId = setInterval(() => {
34
- __classPrivateFieldGet(this, _ContextConsumerController_host, "f").dispatchEvent(consumeEvent);
35
- const value = consumeEvent.detail[key];
36
- if (consumeEvent.detail[key] !== undefined) {
37
- clearInterval(intervalId);
38
- clearTimeout(timeoutId);
39
- resolve(value);
40
- }
41
- }, 50);
42
- const timeoutId = setTimeout(() => {
43
- clearInterval(timeoutId);
44
- reject();
45
- }, 2000);
46
- });
44
+ return consumeEvent.detail[key];
47
45
  }
48
46
  // Added to fix typescript error
49
47
  // eslint-disable-next-line @typescript-eslint/no-empty-function
50
- hostConnected() { }
48
+ hostConnected() {
49
+ this._clearAsyncConsumerIntervals();
50
+ }
51
+ _clearAsyncConsumerIntervals() {
52
+ __classPrivateFieldGet(this, _ContextConsumerController_asyncConsumerSentinelId, "f") && window.clearTimeout(__classPrivateFieldGet(this, _ContextConsumerController_asyncConsumerSentinelId, "f"));
53
+ __classPrivateFieldGet(this, _ContextConsumerController_asyncConsumerIntervalId, "f") && clearInterval(__classPrivateFieldGet(this, _ContextConsumerController_asyncConsumerIntervalId, "f"));
54
+ }
51
55
  }
52
- _ContextConsumerController_host = new WeakMap();
56
+ _ContextConsumerController_host = new WeakMap(), _ContextConsumerController_asyncConsumerSentinelId = new WeakMap(), _ContextConsumerController_asyncConsumerIntervalId = new WeakMap();
53
57
 
54
58
  export { ContextConsumerController };
55
59
  //# sourceMappingURL=context_consumer_controller.js.map
@@ -1 +1 @@
1
- {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA,+DAA+D,4CAAgD;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,+DAA+D,4CAAgD;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -4,3 +4,7 @@ export declare type TConsumerEventDetails<TValue> = {
4
4
  [key: string]: TValue | TContextValueKey;
5
5
  };
6
6
  export declare type TContextValueKey = string;
7
+ export declare type TAsyncConsumerOptions = {
8
+ intervalRate?: number;
9
+ maxWaitingTime?: number;
10
+ };
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@shoper/phoenix_design_system",
3
3
  "packageManager": "yarn@3.2.0",
4
4
  "sideEffects": false,
5
- "version": "0.12.0",
5
+ "version": "0.13.0",
6
6
  "description": "phoenix design system",
7
7
  "author": "zefirek",
8
8
  "license": "MIT",