@shoper/phoenix_design_system 1.18.8-11 → 1.18.8-13

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 (62) hide show
  1. package/build/cjs/packages/phoenix/src/components/accordion/accordion.js +5 -21
  2. package/build/cjs/packages/phoenix/src/components/accordion/accordion.js.map +1 -1
  3. package/build/cjs/packages/phoenix/src/components/accordion/accordion_constants.js +8 -6
  4. package/build/cjs/packages/phoenix/src/components/accordion/accordion_constants.js.map +1 -1
  5. package/build/cjs/packages/phoenix/src/components/accordion/accordion_content.js +2 -125
  6. package/build/cjs/packages/phoenix/src/components/accordion/accordion_content.js.map +1 -1
  7. package/build/cjs/packages/phoenix/src/components/accordion/accordion_group.js +96 -79
  8. package/build/cjs/packages/phoenix/src/components/accordion/accordion_group.js.map +1 -1
  9. package/build/cjs/packages/phoenix/src/components/accordion/accordion_toggler.js +1 -41
  10. package/build/cjs/packages/phoenix/src/components/accordion/accordion_toggler.js.map +1 -1
  11. package/build/cjs/packages/phoenix/src/components/messages/base_message.js +1 -1
  12. package/build/cjs/packages/phoenix/src/index.js +5 -36
  13. package/build/cjs/packages/phoenix/src/index.js.map +1 -1
  14. package/build/esm/packages/phoenix/src/components/accordion/accordion.d.ts +1 -6
  15. package/build/esm/packages/phoenix/src/components/accordion/accordion.js +6 -22
  16. package/build/esm/packages/phoenix/src/components/accordion/accordion.js.map +1 -1
  17. package/build/esm/packages/phoenix/src/components/accordion/accordion_constants.d.ts +4 -3
  18. package/build/esm/packages/phoenix/src/components/accordion/accordion_constants.js +7 -6
  19. package/build/esm/packages/phoenix/src/components/accordion/accordion_constants.js.map +1 -1
  20. package/build/esm/packages/phoenix/src/components/accordion/accordion_content.d.ts +0 -23
  21. package/build/esm/packages/phoenix/src/components/accordion/accordion_content.js +2 -125
  22. package/build/esm/packages/phoenix/src/components/accordion/accordion_content.js.map +1 -1
  23. package/build/esm/packages/phoenix/src/components/accordion/accordion_group.d.ts +11 -15
  24. package/build/esm/packages/phoenix/src/components/accordion/accordion_group.js +97 -80
  25. package/build/esm/packages/phoenix/src/components/accordion/accordion_group.js.map +1 -1
  26. package/build/esm/packages/phoenix/src/components/accordion/accordion_toggler.d.ts +0 -8
  27. package/build/esm/packages/phoenix/src/components/accordion/accordion_toggler.js +1 -41
  28. package/build/esm/packages/phoenix/src/components/accordion/accordion_toggler.js.map +1 -1
  29. package/build/esm/packages/phoenix/src/components/accordion/accordion_types.d.ts +0 -11
  30. package/build/esm/packages/phoenix/src/components/messages/base_message.js +1 -1
  31. package/build/esm/packages/phoenix/src/index.d.ts +0 -5
  32. package/build/esm/packages/phoenix/src/index.js +2 -7
  33. package/build/esm/packages/phoenix/src/index.js.map +1 -1
  34. package/package.json +1 -1
  35. package/build/cjs/packages/phoenix/src/components/details/details.js +0 -33
  36. package/build/cjs/packages/phoenix/src/components/details/details.js.map +0 -1
  37. package/build/cjs/packages/phoenix/src/components/details/details_constants.js +0 -20
  38. package/build/cjs/packages/phoenix/src/components/details/details_constants.js.map +0 -1
  39. package/build/cjs/packages/phoenix/src/components/details/details_content.js +0 -23
  40. package/build/cjs/packages/phoenix/src/components/details/details_content.js.map +0 -1
  41. package/build/cjs/packages/phoenix/src/components/details/details_group.js +0 -154
  42. package/build/cjs/packages/phoenix/src/components/details/details_group.js.map +0 -1
  43. package/build/cjs/packages/phoenix/src/components/details/details_toggler.js +0 -19
  44. package/build/cjs/packages/phoenix/src/components/details/details_toggler.js.map +0 -1
  45. package/build/esm/packages/phoenix/src/components/details/details.d.ts +0 -8
  46. package/build/esm/packages/phoenix/src/components/details/details.js +0 -31
  47. package/build/esm/packages/phoenix/src/components/details/details.js.map +0 -1
  48. package/build/esm/packages/phoenix/src/components/details/details_constants.d.ts +0 -11
  49. package/build/esm/packages/phoenix/src/components/details/details_constants.js +0 -14
  50. package/build/esm/packages/phoenix/src/components/details/details_constants.js.map +0 -1
  51. package/build/esm/packages/phoenix/src/components/details/details_content.d.ts +0 -6
  52. package/build/esm/packages/phoenix/src/components/details/details_content.js +0 -21
  53. package/build/esm/packages/phoenix/src/components/details/details_content.js.map +0 -1
  54. package/build/esm/packages/phoenix/src/components/details/details_group.d.ts +0 -23
  55. package/build/esm/packages/phoenix/src/components/details/details_group.js +0 -152
  56. package/build/esm/packages/phoenix/src/components/details/details_group.js.map +0 -1
  57. package/build/esm/packages/phoenix/src/components/details/details_toggler.d.ts +0 -5
  58. package/build/esm/packages/phoenix/src/components/details/details_toggler.js +0 -17
  59. package/build/esm/packages/phoenix/src/components/details/details_toggler.js.map +0 -1
  60. package/build/esm/packages/phoenix/src/components/details/details_types.d.ts +0 -12
  61. package/build/esm/packages/phoenix/src/components/details/details_types.js +0 -2
  62. package/build/esm/packages/phoenix/src/components/details/details_types.js.map +0 -1
@@ -3,12 +3,7 @@ import { PhoenixLightLitElement } from "../../core/phoenix_light_lit_element/pho
3
3
  export declare class HAccordion extends PhoenixLightLitElement implements IAccordion {
4
4
  disabled: boolean;
5
5
  mode: TAccordionMode;
6
- private _accordionSubject;
7
- private _accordionContext;
8
- constructor();
6
+ updated(): void;
9
7
  enable(): void;
10
8
  disable(): void;
11
- updated(): void;
12
- notify(): void;
13
- private _getProps;
14
9
  }
@@ -2,19 +2,16 @@ import { __decorate, __metadata } from '../../../../../external/tslib/tslib.es6.
2
2
  import { property } from 'lit/decorators';
3
3
  import { PhoenixLightLitElement } from '../../core/phoenix_light_lit_element/phoenix_light_lit_element.js';
4
4
  import { phoenixCustomElement } from '../../core/decorators/phoenix_custom_element.js';
5
- import { BehaviorSubject } from '../../core/classes/behavior_subject/behavior_subject.js';
6
- import { ContextProviderController } from '../../core/context/context_provider_controller.js';
7
- import { ACCORDION_MODE, ACCORDION_CONTEXTS } from './accordion_constants.js';
5
+ import { ACCORDION_MODE, ACCORDION_EVENTS } from './accordion_constants.js';
8
6
 
9
7
  let HAccordion = class HAccordion extends PhoenixLightLitElement {
10
8
  constructor() {
11
- super();
9
+ super(...arguments);
12
10
  this.disabled = false;
13
11
  this.mode = ACCORDION_MODE.multi;
14
- this._accordionSubject = new BehaviorSubject(this._getProps());
15
- this._accordionContext = new ContextProviderController(this);
16
- this._accordionContext.provide(ACCORDION_CONTEXTS.accordionProps, this._accordionSubject);
17
- this.setAttribute('role', 'none');
12
+ }
13
+ updated() {
14
+ this.dispatchEvent(new Event(ACCORDION_EVENTS.update));
18
15
  }
19
16
  enable() {
20
17
  this.disabled = false;
@@ -22,18 +19,6 @@ let HAccordion = class HAccordion extends PhoenixLightLitElement {
22
19
  disable() {
23
20
  this.disabled = true;
24
21
  }
25
- updated() {
26
- this.notify();
27
- }
28
- notify() {
29
- this._accordionSubject.notify(this._getProps());
30
- }
31
- _getProps() {
32
- return {
33
- disabled: this.disabled,
34
- mode: this.mode
35
- };
36
- }
37
22
  };
38
23
  __decorate([
39
24
  property({ type: Boolean, reflect: true }),
@@ -44,8 +29,7 @@ __decorate([
44
29
  __metadata("design:type", String)
45
30
  ], HAccordion.prototype, "mode", void 0);
46
31
  HAccordion = __decorate([
47
- phoenixCustomElement('h-accordion'),
48
- __metadata("design:paramtypes", [])
32
+ phoenixCustomElement('h-accordion')
49
33
  ], HAccordion);
50
34
 
51
35
  export { HAccordion };
@@ -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;"}
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;"}
@@ -1,11 +1,12 @@
1
1
  export declare const ACCORDION_EVENTS: {
2
2
  readonly toggle: "toggle";
3
+ readonly update: "updateAccordion";
3
4
  };
4
- export declare const ACCORDION_CONTEXTS: {
5
- readonly accordionProps: "accordionPropsSubject";
6
- readonly accordionGroupProps: "accordionGroupPropsSubject";
5
+ export declare const ACCORDION_CSS_CLASSES: {
6
+ readonly open: "accordion__details_open";
7
7
  };
8
8
  export declare const ACCORDION_MODE: {
9
9
  readonly single: "single";
10
10
  readonly multi: "multi";
11
11
  };
12
+ export declare const ACCORDION_ANIMATION_DURATION = 400;
@@ -1,14 +1,15 @@
1
1
  const ACCORDION_EVENTS = {
2
- toggle: 'toggle'
2
+ toggle: 'toggle',
3
+ update: 'updateAccordion'
3
4
  };
4
- const ACCORDION_CONTEXTS = {
5
- accordionProps: 'accordionPropsSubject',
6
- accordionGroupProps: 'accordionGroupPropsSubject'
5
+ const ACCORDION_CSS_CLASSES = {
6
+ open: 'accordion__details_open'
7
7
  };
8
8
  const ACCORDION_MODE = {
9
9
  single: 'single',
10
10
  multi: 'multi'
11
- };
11
+ };
12
+ const ACCORDION_ANIMATION_DURATION = 400;
12
13
 
13
- export { ACCORDION_CONTEXTS, ACCORDION_EVENTS, ACCORDION_MODE };
14
+ export { ACCORDION_ANIMATION_DURATION, ACCORDION_CSS_CLASSES, ACCORDION_EVENTS, ACCORDION_MODE };
14
15
  //# sourceMappingURL=accordion_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;"}
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,28 +1,5 @@
1
1
  import { PhoenixLightLitElement } from "../../core/phoenix_light_lit_element/phoenix_light_lit_element";
2
- import { PropertyValues } from 'lit';
3
2
  export declare class HAccordionContent extends PhoenixLightLitElement {
4
- transitionName: string;
5
- private _transitionController;
6
- private _contextConsumer;
7
- private _accordionGroupProps;
8
- private _accordionGroupPropsObserver;
9
- private _originalHeight;
10
- private _resizeDebounceTimer;
11
- private _mutationDebounceTimer;
12
- private _mutationObserver;
13
- private _boundHandleTransitionEnd;
14
3
  constructor();
15
4
  connectedCallback(): void;
16
- firstUpdated(props: PropertyValues): void;
17
- private _handleResize;
18
- private _setStylingOptions;
19
- private _subscribeObserver;
20
- private _handleMutation;
21
- private _setOriginalHeightValue;
22
- private _expand;
23
- private _handleTransitionEnd;
24
- private _collapse;
25
- private _setHeight;
26
- private _setAttributes;
27
- disconnectedCallback(): void;
28
5
  }
@@ -1,140 +1,17 @@
1
1
  import { __decorate, __metadata } from '../../../../../external/tslib/tslib.es6.js';
2
- import 'lit';
3
- import { property } from 'lit/decorators';
4
2
  import { PhoenixLightLitElement } from '../../core/phoenix_light_lit_element/phoenix_light_lit_element.js';
5
3
  import { phoenixCustomElement } from '../../core/decorators/phoenix_custom_element.js';
6
- import { Observer } from '../../core/classes/observer/observer.js';
7
- import { ContextConsumerController } from '../../core/context/context_consumer_controller.js';
8
- import { ACCORDION_CONTEXTS } from './accordion_constants.js';
9
- import { TransitionController } from '../../controllers/transition_controller/transition_controller.js';
10
4
 
11
- const RESIZE_DEBOUNCE_MS = 150;
12
- const MUTATION_DEBOUNCE_MS = 100;
13
5
  let HAccordionContent = class HAccordionContent extends PhoenixLightLitElement {
14
6
  constructor() {
15
7
  super();
16
- this.transitionName = 'accordion-toggle';
17
- this._resizeDebounceTimer = null;
18
- this._mutationDebounceTimer = null;
19
- this._mutationObserver = null;
20
- this._handleResize = () => {
21
- if (this._resizeDebounceTimer !== null) {
22
- window.cancelAnimationFrame(this._resizeDebounceTimer);
23
- }
24
- this._resizeDebounceTimer = window.requestAnimationFrame(() => {
25
- setTimeout(() => {
26
- this._setStylingOptions();
27
- }, RESIZE_DEBOUNCE_MS);
28
- });
29
- };
30
- this._setStylingOptions = () => {
31
- requestAnimationFrame(() => {
32
- const previousDisplay = this.style.display;
33
- this.style.setProperty('display', 'block', 'important');
34
- this.style.height = 'auto';
35
- requestAnimationFrame(() => {
36
- this._setOriginalHeightValue();
37
- this.style.display = previousDisplay;
38
- this.style.height = this.hidden ? '0px' : this._originalHeight;
39
- });
40
- });
41
- };
42
- this._handleMutation = () => {
43
- if (this._mutationDebounceTimer !== null) {
44
- window.clearTimeout(this._mutationDebounceTimer);
45
- }
46
- this._mutationDebounceTimer = window.setTimeout(() => {
47
- requestAnimationFrame(() => {
48
- this.style.height = 'auto';
49
- requestAnimationFrame(() => {
50
- this._setOriginalHeightValue();
51
- if (this.hidden) {
52
- this.style.height = '0px';
53
- }
54
- else {
55
- this.style.height = this._originalHeight;
56
- }
57
- });
58
- });
59
- }, MUTATION_DEBOUNCE_MS);
60
- };
61
- this._setOriginalHeightValue = () => {
62
- const newHeight = this.getBoundingClientRect().height;
63
- if (newHeight !== 0 || this.children.length === 0) {
64
- this._originalHeight = `${newHeight}px`;
65
- }
66
- };
67
- this._expand = () => {
68
- this._setHeight(this._originalHeight);
69
- };
70
- this._handleTransitionEnd = (e) => {
71
- if (e.propertyName !== 'height' || e.target !== this) {
72
- return;
73
- }
74
- if (!this.hidden && this.style.height !== '0px') {
75
- this.style.height = 'auto';
76
- }
77
- };
78
- this._collapse = () => {
79
- const currentHeight = this.getBoundingClientRect().height;
80
- this._setHeight(`${currentHeight}px`);
81
- requestAnimationFrame(() => {
82
- requestAnimationFrame(() => {
83
- this._setHeight('0px');
84
- });
85
- });
86
- };
87
- this.setAttribute('role', 'region');
88
- this._boundHandleTransitionEnd = this._handleTransitionEnd.bind(this);
8
+ this.slot = this.hasAttribute('slot') ? this.slot : 'content';
89
9
  }
90
10
  connectedCallback() {
91
11
  super.connectedCallback();
92
- this._contextConsumer = new ContextConsumerController(this);
93
- this._transitionController = new TransitionController(this, this.transitionName);
94
- this._subscribeObserver();
95
- window.addEventListener('resize', this._handleResize, { passive: true });
96
- this.addEventListener('transitionend', this._boundHandleTransitionEnd);
97
- }
98
- firstUpdated(props) {
99
- super.firstUpdated(props);
100
- this._setStylingOptions();
101
- }
102
- async _subscribeObserver() {
103
- this._accordionGroupProps = await this._contextConsumer.consumeAsync(ACCORDION_CONTEXTS.accordionGroupProps);
104
- this._accordionGroupPropsObserver = new Observer((accordionProps) => {
105
- this._setAttributes(accordionProps);
106
- accordionProps.opened ? this._transitionController.show(this._expand) : this._transitionController.hide(this._collapse);
107
- });
108
- this._accordionGroupProps.subscribe(this._accordionGroupPropsObserver);
109
- this._mutationObserver = new MutationObserver(this._handleMutation);
110
- this._mutationObserver.observe(this, { childList: true, subtree: true });
111
- }
112
- _setHeight(height) {
113
- this.style.height = height;
114
- }
115
- _setAttributes({ regionId, controlsId }) {
116
- this.setAttribute('id', controlsId);
117
- this.setAttribute('labelledby', regionId);
118
- }
119
- disconnectedCallback() {
120
- var _a, _b;
121
- super.disconnectedCallback();
122
- (_a = this._accordionGroupProps) === null || _a === void 0 ? void 0 : _a.unsubscribe(this._accordionGroupPropsObserver);
123
- (_b = this._mutationObserver) === null || _b === void 0 ? void 0 : _b.disconnect();
124
- window.removeEventListener('resize', this._handleResize);
125
- this.removeEventListener('transitionend', this._boundHandleTransitionEnd);
126
- if (this._resizeDebounceTimer !== null) {
127
- window.cancelAnimationFrame(this._resizeDebounceTimer);
128
- }
129
- if (this._mutationDebounceTimer !== null) {
130
- window.clearTimeout(this._mutationDebounceTimer);
131
- }
12
+ this.classList.add('accordion-content');
132
13
  }
133
14
  };
134
- __decorate([
135
- property(),
136
- __metadata("design:type", Object)
137
- ], HAccordionContent.prototype, "transitionName", void 0);
138
15
  HAccordionContent = __decorate([
139
16
  phoenixCustomElement('h-accordion-content'),
140
17
  __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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;"}
@@ -1,28 +1,24 @@
1
1
  import type { IAccordion, IAccordionGroup } from './accordion_types';
2
2
  import { PhoenixLightLitElement } from "../../core/phoenix_light_lit_element/phoenix_light_lit_element";
3
+ import { PropertyValues } from 'lit';
3
4
  export declare class HAccordionGroup extends PhoenixLightLitElement implements IAccordionGroup, IAccordion {
4
5
  opened: boolean;
5
6
  private _isDisabled;
6
- private _regionId;
7
- private _controlsId;
8
7
  private _mode;
9
- private _accordionGroupPropsSubject;
10
- private _accordionGroupContext;
11
- private _accordionContextConsumer;
12
- private _accordionProps;
13
- private _accordionPropsObserver;
14
- constructor();
8
+ private _$accordion;
9
+ private _detailsRef;
10
+ private _togglerId;
15
11
  connectedCallback(): void;
16
- private _subscribeObserver;
12
+ firstUpdated(props: PropertyValues): void;
17
13
  disconnectedCallback(): void;
14
+ private _syncWithDetailsWrapper;
15
+ toggle(): void;
18
16
  show(): void;
19
17
  hide(): void;
20
- toggle(): void;
18
+ private _hideOtherDetailsGroups;
19
+ private _dispatchToggleEvent;
21
20
  enable(): void;
22
21
  disable(): void;
23
- private _accordionToggle;
24
- private _closeOtherAccordionGroups;
25
- notify(): void;
26
- protected updated(_changedProperties: Map<string, unknown>): void;
27
- private _getProps;
22
+ private _summaryClickHandler;
23
+ protected render(): unknown;
28
24
  }
@@ -1,109 +1,135 @@
1
1
  import { __decorate, __metadata } from '../../../../../external/tslib/tslib.es6.js';
2
+ import { html } from 'lit';
2
3
  import { property, state } from 'lit/decorators';
3
4
  import { PhoenixLightLitElement } from '../../core/phoenix_light_lit_element/phoenix_light_lit_element.js';
4
5
  import { phoenixCustomElement } from '../../core/decorators/phoenix_custom_element.js';
5
- import { Observer } from '../../core/classes/observer/observer.js';
6
- import { ContextConsumerController } from '../../core/context/context_consumer_controller.js';
7
- import { BehaviorSubject } from '../../core/classes/behavior_subject/behavior_subject.js';
8
- import { ContextProviderController } from '../../core/context/context_provider_controller.js';
9
- import { ACCORDION_MODE, ACCORDION_CONTEXTS, ACCORDION_EVENTS } from './accordion_constants.js';
6
+ import v4 from '../../../../../external/uuid/dist/esm-browser/v4.js';
7
+ import { ACCORDION_MODE, ACCORDION_EVENTS, ACCORDION_CSS_CLASSES, ACCORDION_ANIMATION_DURATION } from './accordion_constants.js';
8
+ import { createRef, ref } from 'lit/directives/ref';
10
9
 
11
10
  let HAccordionGroup = class HAccordionGroup extends PhoenixLightLitElement {
12
11
  constructor() {
13
- super();
12
+ super(...arguments);
14
13
  this.opened = false;
15
14
  this._isDisabled = false;
16
- this._regionId = typeof self.crypto.randomUUID === 'function' ? self.crypto.randomUUID() : (Math.random() + 1).toString(36).substring(3);
17
- this._controlsId = typeof self.crypto.randomUUID === 'function' ? self.crypto.randomUUID() : (Math.random() + 1).toString(36).substring(3);
18
15
  this._mode = ACCORDION_MODE.multi;
19
- this._accordionToggle = () => {
20
- this.toggle();
16
+ this._$accordion = null;
17
+ this._detailsRef = createRef();
18
+ this._togglerId = v4();
19
+ this._syncWithDetailsWrapper = () => {
20
+ if (!this._$accordion)
21
+ return;
22
+ this._mode = this._$accordion.mode;
23
+ if (this._$accordion.disabled && !this._isDisabled) {
24
+ this.disable();
25
+ this.show();
26
+ }
27
+ else if (!this._$accordion.disabled && this._isDisabled) {
28
+ this.enable();
29
+ this.hide();
30
+ }
31
+ };
32
+ this._hideOtherDetailsGroups = () => {
33
+ var _a;
34
+ if (this._isDisabled)
35
+ return;
36
+ (_a = this._$accordion) === null || _a === void 0 ? void 0 : _a.querySelectorAll('h-accordion-group').forEach(($accordionGroup) => {
37
+ if ($accordionGroup === this)
38
+ return;
39
+ $accordionGroup.hide();
40
+ });
41
+ };
42
+ this._summaryClickHandler = (ev) => {
43
+ ev.preventDefault();
44
+ if (!this._isDisabled)
45
+ this.toggle();
21
46
  };
22
- this._accordionGroupPropsSubject = new BehaviorSubject(this._getProps());
23
- this._accordionGroupContext = new ContextProviderController(this);
24
- this._accordionGroupContext.provide(ACCORDION_CONTEXTS.accordionGroupProps, this._accordionGroupPropsSubject);
25
- this.setAttribute('role', 'none');
26
47
  }
27
48
  connectedCallback() {
49
+ var _a;
28
50
  super.connectedCallback();
29
- this._accordionContextConsumer = new ContextConsumerController(this);
30
- this._subscribeObserver();
31
- this.addEventListener(ACCORDION_EVENTS.toggle, this._accordionToggle);
51
+ this._$accordion = this.closest('h-accordion');
52
+ (_a = this._$accordion) === null || _a === void 0 ? void 0 : _a.addEventListener(ACCORDION_EVENTS.update, this._syncWithDetailsWrapper);
53
+ this._syncWithDetailsWrapper();
32
54
  }
33
- async _subscribeObserver() {
34
- this._accordionProps = await this._accordionContextConsumer.consumeAsync(ACCORDION_CONTEXTS.accordionProps);
35
- this._accordionPropsObserver = new Observer((accordionProps) => {
36
- this._mode = accordionProps.mode;
37
- const hasAccordionBeenDisabled = accordionProps.disabled;
38
- if (hasAccordionBeenDisabled) {
39
- this.disable();
40
- return;
41
- }
42
- const hasAccordionBeenEnabled = accordionProps.disabled === false;
43
- if (hasAccordionBeenEnabled) {
44
- this.enable();
45
- return;
46
- }
47
- });
48
- this._accordionProps.subscribe(this._accordionPropsObserver);
55
+ firstUpdated(props) {
56
+ super.firstUpdated(props);
57
+ if (this.opened) {
58
+ this.show();
59
+ }
49
60
  }
50
61
  disconnectedCallback() {
51
- this._accordionProps.unsubscribe(this._accordionPropsObserver);
52
- this.removeEventListener(ACCORDION_EVENTS.toggle, this._accordionToggle);
62
+ var _a;
63
+ super.disconnectedCallback();
64
+ (_a = this._$accordion) === null || _a === void 0 ? void 0 : _a.removeEventListener(ACCORDION_EVENTS.update, this._syncWithDetailsWrapper);
65
+ }
66
+ toggle() {
67
+ if (this._mode === ACCORDION_MODE.single)
68
+ this._hideOtherDetailsGroups();
69
+ const $details = this._detailsRef.value;
70
+ if (!$details)
71
+ return;
72
+ const isOpen = $details.hasAttribute('open');
73
+ isOpen ? this.hide() : this.show();
53
74
  }
54
75
  show() {
55
76
  if (this._mode === ACCORDION_MODE.single)
56
- this._closeOtherAccordionGroups();
57
- this.opened = true;
77
+ this._hideOtherDetailsGroups();
78
+ const $details = this._detailsRef.value;
79
+ if (!$details)
80
+ return;
81
+ $details.setAttribute('open', '');
82
+ requestAnimationFrame(() => {
83
+ $details.classList.add(ACCORDION_CSS_CLASSES.open);
84
+ });
85
+ this._dispatchToggleEvent($details, true);
58
86
  }
59
87
  hide() {
60
- this.opened = false;
88
+ const $details = this._detailsRef.value;
89
+ if (!$details)
90
+ return;
91
+ $details.classList.remove(ACCORDION_CSS_CLASSES.open);
92
+ setTimeout(() => {
93
+ $details.removeAttribute('open');
94
+ }, ACCORDION_ANIMATION_DURATION);
95
+ this._dispatchToggleEvent($details, false);
61
96
  }
62
- toggle() {
63
- if (this._mode === ACCORDION_MODE.single)
64
- this._closeOtherAccordionGroups();
65
- this.opened = !this.opened;
97
+ _dispatchToggleEvent(details, open) {
98
+ this.emitCustomEvent(ACCORDION_EVENTS.toggle, {
99
+ detail: { open, target: details }
100
+ });
66
101
  }
67
102
  enable() {
68
103
  if (this._isDisabled) {
69
- this.addEventListener(ACCORDION_EVENTS.toggle, this._accordionToggle);
70
104
  this.hide();
71
105
  this._isDisabled = false;
72
106
  }
73
107
  }
74
108
  disable() {
75
109
  if (!this._isDisabled) {
76
- this.removeEventListener(ACCORDION_EVENTS.toggle, this._accordionToggle);
77
110
  this.show();
78
111
  this._isDisabled = true;
79
112
  }
80
113
  }
81
- _closeOtherAccordionGroups() {
82
- if (!this._isDisabled) {
83
- const $accordion = this.closest('h-accordion');
84
- const $accordionGroups = [...$accordion.querySelectorAll('h-accordion-group')];
85
- const $otherAccordionGroupsWithinAccordion = $accordionGroups.filter(($accordionGroup) => $accordionGroup !== this);
86
- $otherAccordionGroupsWithinAccordion.forEach(($accordionGroup) => $accordionGroup.hide());
87
- }
88
- }
89
- notify() {
90
- this._accordionGroupPropsSubject.notify(this._getProps());
91
- }
92
- updated(_changedProperties) {
93
- if (_changedProperties.has('opened') ||
94
- _changedProperties.has('_isDisabled') ||
95
- _changedProperties.has('_regionId') ||
96
- _changedProperties.has('_controlsId')) {
97
- this.notify();
98
- }
99
- }
100
- _getProps() {
101
- return {
102
- opened: this.opened,
103
- disabled: this._isDisabled,
104
- regionId: this._regionId,
105
- controlsId: this._controlsId
106
- };
114
+ render() {
115
+ return html `
116
+ <details
117
+ ${ref(this._detailsRef)}
118
+ class="accordion__details ${this._isDisabled ? 'accordion__details_disabled' : ''}"
119
+ aria-disabled="${this._isDisabled ? 'true' : 'false'}"
120
+ aria-labelledby="${this._togglerId}"
121
+ >
122
+ <summary
123
+ class="accordion__summary"
124
+ id="${this._togglerId}"
125
+ @click=${this._summaryClickHandler}
126
+ >
127
+ ${this.getSlot('toggler')}
128
+ </summary>
129
+
130
+ ${this.getSlot('content')}
131
+ </details>
132
+ `;
107
133
  }
108
134
  };
109
135
  __decorate([
@@ -114,21 +140,12 @@ __decorate([
114
140
  state(),
115
141
  __metadata("design:type", Object)
116
142
  ], HAccordionGroup.prototype, "_isDisabled", void 0);
117
- __decorate([
118
- state(),
119
- __metadata("design:type", Object)
120
- ], HAccordionGroup.prototype, "_regionId", void 0);
121
- __decorate([
122
- state(),
123
- __metadata("design:type", Object)
124
- ], HAccordionGroup.prototype, "_controlsId", void 0);
125
143
  __decorate([
126
144
  state(),
127
145
  __metadata("design:type", String)
128
146
  ], HAccordionGroup.prototype, "_mode", void 0);
129
147
  HAccordionGroup = __decorate([
130
- phoenixCustomElement('h-accordion-group'),
131
- __metadata("design:paramtypes", [])
148
+ phoenixCustomElement('h-accordion-group')
132
149
  ], HAccordionGroup);
133
150
 
134
151
  export { HAccordionGroup };
@@ -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;"}
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA,uCAAuC,4CAAgD;AACvF;AACA;AACA;AACA;AACA,eAAe,qDAAyD;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;"}
@@ -1,12 +1,4 @@
1
1
  import { PhoenixLightLitElement } from "../../core/phoenix_light_lit_element/phoenix_light_lit_element";
2
2
  export declare class HAccordionToggler extends PhoenixLightLitElement {
3
- private _contextConsumer;
4
- private _accordionGroupProps;
5
- private _accordionGroupPropsObserver;
6
3
  constructor();
7
- connectedCallback(): Promise<void>;
8
- private _setAttributes;
9
- private _emitTogglerClickedWithKeyboard;
10
- private _emitTogglerClicked;
11
- disconnectedCallback(): void;
12
4
  }
@@ -1,51 +1,11 @@
1
1
  import { __decorate, __metadata } from '../../../../../external/tslib/tslib.es6.js';
2
2
  import { PhoenixLightLitElement } from '../../core/phoenix_light_lit_element/phoenix_light_lit_element.js';
3
3
  import { phoenixCustomElement } from '../../core/decorators/phoenix_custom_element.js';
4
- import { Observer } from '../../core/classes/observer/observer.js';
5
- import { ContextConsumerController } from '../../core/context/context_consumer_controller.js';
6
- import { ACCORDION_EVENTS, ACCORDION_CONTEXTS } from './accordion_constants.js';
7
4
 
8
5
  let HAccordionToggler = class HAccordionToggler extends PhoenixLightLitElement {
9
6
  constructor() {
10
7
  super();
11
- this._emitTogglerClickedWithKeyboard = (ev) => {
12
- if (ev.key !== ' ' && ev.key !== 'Enter')
13
- return;
14
- if (this.getAttribute('aria-disabled') === 'true')
15
- return;
16
- this._emitTogglerClicked();
17
- };
18
- this._emitTogglerClicked = () => {
19
- this.emitCustomEvent(ACCORDION_EVENTS.toggle);
20
- };
21
- this._contextConsumer = new ContextConsumerController(this);
22
- }
23
- async connectedCallback() {
24
- super.connectedCallback();
25
- this._accordionGroupProps = await this._contextConsumer.consumeAsync(ACCORDION_CONTEXTS.accordionGroupProps);
26
- this._accordionGroupPropsObserver = new Observer((accordionProps) => this._setAttributes(accordionProps));
27
- this._accordionGroupProps.subscribe(this._accordionGroupPropsObserver);
28
- this.addEventListener('click', this._emitTogglerClicked);
29
- this.addEventListener('keydown', this._emitTogglerClickedWithKeyboard);
30
- }
31
- _setAttributes({ regionId, opened, controlsId, disabled }) {
32
- this.setAttribute('id', regionId);
33
- this.setAttribute('aria-expanded', opened ? 'true' : 'false');
34
- this.setAttribute('aria-controls', controlsId);
35
- this.setAttribute('aria-disabled', disabled ? 'true' : 'false');
36
- if (disabled) {
37
- this.removeAttribute('role');
38
- this.setAttribute('tabindex', '-1');
39
- }
40
- else {
41
- this.setAttribute('role', 'button');
42
- this.setAttribute('tabindex', '0');
43
- }
44
- }
45
- disconnectedCallback() {
46
- if (this._accordionGroupProps) {
47
- this._accordionGroupProps.unsubscribe(this._accordionGroupPropsObserver);
48
- }
8
+ this.slot = this.hasAttribute('slot') ? this.slot : 'toggler';
49
9
  }
50
10
  };
51
11
  HAccordionToggler = __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;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;"}