@shoper/phoenix_design_system 1.18.10-0 → 1.18.10-2

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 (38) hide show
  1. package/build/cjs/packages/phoenix/src/components/accordion/accordion.js +28 -6
  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 +5 -0
  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 +151 -2
  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 +171 -47
  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 +57 -1
  10. package/build/cjs/packages/phoenix/src/components/accordion/accordion_toggler.js.map +1 -1
  11. package/build/cjs/packages/phoenix/src/index.js +6 -5
  12. package/build/cjs/packages/phoenix/src/index.js.map +1 -1
  13. package/build/cjs/packages/utilities/build/esm/packages/utilities/src/feature_flag_utils.js +26 -0
  14. package/build/cjs/packages/utilities/build/esm/packages/utilities/src/feature_flag_utils.js.map +1 -0
  15. package/build/cjs/packages/utilities/build/esm/packages/utilities/src/json_utils.js +25 -0
  16. package/build/cjs/packages/utilities/build/esm/packages/utilities/src/json_utils.js.map +1 -0
  17. package/build/esm/packages/phoenix/src/components/accordion/accordion.d.ts +6 -1
  18. package/build/esm/packages/phoenix/src/components/accordion/accordion.js +29 -7
  19. package/build/esm/packages/phoenix/src/components/accordion/accordion.js.map +1 -1
  20. package/build/esm/packages/phoenix/src/components/accordion/accordion_constants.d.ts +4 -0
  21. package/build/esm/packages/phoenix/src/components/accordion/accordion_constants.js +5 -1
  22. package/build/esm/packages/phoenix/src/components/accordion/accordion_constants.js.map +1 -1
  23. package/build/esm/packages/phoenix/src/components/accordion/accordion_content.d.ts +24 -0
  24. package/build/esm/packages/phoenix/src/components/accordion/accordion_content.js +151 -2
  25. package/build/esm/packages/phoenix/src/components/accordion/accordion_content.js.map +1 -1
  26. package/build/esm/packages/phoenix/src/components/accordion/accordion_group.d.ts +17 -3
  27. package/build/esm/packages/phoenix/src/components/accordion/accordion_group.js +172 -48
  28. package/build/esm/packages/phoenix/src/components/accordion/accordion_group.js.map +1 -1
  29. package/build/esm/packages/phoenix/src/components/accordion/accordion_toggler.d.ts +9 -0
  30. package/build/esm/packages/phoenix/src/components/accordion/accordion_toggler.js +57 -1
  31. package/build/esm/packages/phoenix/src/components/accordion/accordion_toggler.js.map +1 -1
  32. package/build/esm/packages/phoenix/src/components/accordion/accordion_types.d.ts +10 -0
  33. package/build/esm/packages/phoenix/src/index.js +2 -2
  34. package/build/esm/packages/utilities/build/esm/packages/utilities/src/feature_flag_utils.js +22 -0
  35. package/build/esm/packages/utilities/build/esm/packages/utilities/src/feature_flag_utils.js.map +1 -0
  36. package/build/esm/packages/utilities/build/esm/packages/utilities/src/json_utils.js +21 -0
  37. package/build/esm/packages/utilities/build/esm/packages/utilities/src/json_utils.js.map +1 -0
  38. package/package.json +2 -2
@@ -3,15 +3,23 @@ import { html } from 'lit';
3
3
  import { property, state } from 'lit/decorators';
4
4
  import { PhoenixLightLitElement } from '../../core/phoenix_light_lit_element/phoenix_light_lit_element.js';
5
5
  import { phoenixCustomElement } from '../../core/decorators/phoenix_custom_element.js';
6
+ import { Observer } from '../../core/classes/observer/observer.js';
7
+ import { ContextConsumerController } from '../../core/context/context_consumer_controller.js';
8
+ import { BehaviorSubject } from '../../core/classes/behavior_subject/behavior_subject.js';
9
+ import { ContextProviderController } from '../../core/context/context_provider_controller.js';
6
10
  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';
11
+ import { ACCORDION_MODE, ACCORDION_CONTEXTS, ACCORDION_EVENTS, ACCORDION_CSS_CLASSES, ACCORDION_ANIMATION_DURATION } from './accordion_constants.js';
12
+ import { FeatureFlagUtils } from '../../../../utilities/build/esm/packages/utilities/src/feature_flag_utils.js';
8
13
  import { createRef, ref } from 'lit/directives/ref';
14
+ import { when } from 'lit/directives/when';
9
15
 
10
16
  let HAccordionGroup = class HAccordionGroup extends PhoenixLightLitElement {
11
17
  constructor() {
12
- super(...arguments);
18
+ super();
13
19
  this.opened = false;
14
20
  this._isDisabled = false;
21
+ this._regionId = typeof self.crypto.randomUUID === 'function' ? self.crypto.randomUUID() : (Math.random() + 1).toString(36).substring(3);
22
+ this._controlsId = typeof self.crypto.randomUUID === 'function' ? self.crypto.randomUUID() : (Math.random() + 1).toString(36).substring(3);
15
23
  this._mode = ACCORDION_MODE.multi;
16
24
  this._$parentAccordion = null;
17
25
  this._detailsRef = createRef();
@@ -36,83 +44,190 @@ let HAccordionGroup = class HAccordionGroup extends PhoenixLightLitElement {
36
44
  $accordionGroup.hide();
37
45
  });
38
46
  };
47
+ this._accordionToggle = () => {
48
+ this.toggle();
49
+ };
39
50
  this._summaryClickHandler = (ev) => {
40
51
  ev.preventDefault();
41
52
  if (!this._isDisabled)
42
53
  this.toggle();
43
54
  };
55
+ this._isDevAccordionOptimizationFlagEnabled = FeatureFlagUtils.isEnabled('dev_accordion_optimization');
56
+ if (!this._isDevAccordionOptimizationFlagEnabled) {
57
+ this._accordionGroupPropsSubject = new BehaviorSubject(this._getProps());
58
+ this._accordionGroupContext = new ContextProviderController(this);
59
+ this._accordionGroupContext.provide(ACCORDION_CONTEXTS.accordionGroupProps, this._accordionGroupPropsSubject);
60
+ this.setAttribute('role', 'none');
61
+ }
44
62
  }
45
63
  connectedCallback() {
46
64
  var _a;
47
65
  super.connectedCallback();
48
- this._$parentAccordion = this.closest('h-accordion');
49
- (_a = this._$parentAccordion) === null || _a === void 0 ? void 0 : _a.addEventListener(ACCORDION_EVENTS.update, this._syncWithParentAccordion);
50
- this._syncWithParentAccordion();
66
+ if (this._isDevAccordionOptimizationFlagEnabled) {
67
+ this._$parentAccordion = this.closest('h-accordion');
68
+ (_a = this._$parentAccordion) === null || _a === void 0 ? void 0 : _a.addEventListener(ACCORDION_EVENTS.update, this._syncWithParentAccordion);
69
+ this._syncWithParentAccordion();
70
+ }
71
+ else {
72
+ this._accordionContextConsumer = new ContextConsumerController(this);
73
+ this._subscribeObserver();
74
+ this.addEventListener(ACCORDION_EVENTS.toggle, this._accordionToggle);
75
+ }
51
76
  }
52
77
  firstUpdated(props) {
53
78
  super.firstUpdated(props);
54
- if (this.opened)
79
+ if (this.opened && this._isDevAccordionOptimizationFlagEnabled)
55
80
  this.show();
56
81
  }
82
+ async _subscribeObserver() {
83
+ this._accordionProps = await this._accordionContextConsumer.consumeAsync(ACCORDION_CONTEXTS.accordionProps);
84
+ this._accordionPropsObserver = new Observer((accordionProps) => {
85
+ this._mode = accordionProps.mode;
86
+ const hasAccordionBeenDisabled = accordionProps.disabled;
87
+ if (hasAccordionBeenDisabled) {
88
+ this.disable();
89
+ return;
90
+ }
91
+ const hasAccordionBeenEnabled = accordionProps.disabled === false;
92
+ if (hasAccordionBeenEnabled) {
93
+ this.enable();
94
+ return;
95
+ }
96
+ });
97
+ this._accordionProps.subscribe(this._accordionPropsObserver);
98
+ }
57
99
  disconnectedCallback() {
58
100
  var _a;
59
101
  super.disconnectedCallback();
60
- (_a = this._$parentAccordion) === null || _a === void 0 ? void 0 : _a.removeEventListener(ACCORDION_EVENTS.update, this._syncWithParentAccordion);
61
- }
62
- _handleSingleModeConstraint() {
63
- if (this._mode === ACCORDION_MODE.single) {
64
- this._hideOtherDetailsGroups();
102
+ if (this._isDevAccordionOptimizationFlagEnabled) {
103
+ (_a = this._$parentAccordion) === null || _a === void 0 ? void 0 : _a.removeEventListener(ACCORDION_EVENTS.update, this._syncWithParentAccordion);
104
+ }
105
+ else {
106
+ this._accordionProps.unsubscribe(this._accordionPropsObserver);
107
+ this.removeEventListener(ACCORDION_EVENTS.toggle, this._accordionToggle);
65
108
  }
66
- }
67
- toggle() {
68
- this._handleSingleModeConstraint();
69
- const $details = this._detailsRef.value;
70
- if (!$details)
71
- return;
72
- const isOpen = $details.hasAttribute('open');
73
- isOpen ? this.hide() : this.show();
74
109
  }
75
110
  show() {
76
- this._handleSingleModeConstraint();
77
- const $details = this._detailsRef.value;
78
- if (!$details)
79
- return;
80
- $details.setAttribute('open', '');
81
- requestAnimationFrame(() => {
82
- $details.classList.add(ACCORDION_CSS_CLASSES.open);
83
- });
84
- this._dispatchToggleEvent($details, true);
111
+ if (this._isDevAccordionOptimizationFlagEnabled) {
112
+ this._handleSingleModeConstraint();
113
+ const $details = this._detailsRef.value;
114
+ if (!$details)
115
+ return;
116
+ $details.setAttribute('open', '');
117
+ requestAnimationFrame(() => {
118
+ $details.classList.add(ACCORDION_CSS_CLASSES.open);
119
+ });
120
+ this._dispatchToggleEvent($details, true);
121
+ }
122
+ else {
123
+ if (this._mode === ACCORDION_MODE.single)
124
+ this._closeOtherAccordionGroups();
125
+ this.opened = true;
126
+ }
85
127
  }
86
128
  hide() {
87
- const $details = this._detailsRef.value;
88
- if (!$details)
89
- return;
90
- $details.classList.remove(ACCORDION_CSS_CLASSES.open);
91
- setTimeout(() => {
92
- $details.removeAttribute('open');
93
- }, ACCORDION_ANIMATION_DURATION);
94
- this._dispatchToggleEvent($details, false);
129
+ if (this._isDevAccordionOptimizationFlagEnabled) {
130
+ const $details = this._detailsRef.value;
131
+ if (!$details)
132
+ return;
133
+ $details.classList.remove(ACCORDION_CSS_CLASSES.open);
134
+ setTimeout(() => {
135
+ $details.removeAttribute('open');
136
+ }, ACCORDION_ANIMATION_DURATION);
137
+ this._dispatchToggleEvent($details, false);
138
+ }
139
+ else {
140
+ this.opened = false;
141
+ }
95
142
  }
96
143
  _dispatchToggleEvent($details, open) {
97
144
  this.emitCustomEvent(ACCORDION_EVENTS.toggle, {
98
145
  detail: { open, target: $details }
99
146
  });
100
147
  }
148
+ toggle() {
149
+ if (this._isDevAccordionOptimizationFlagEnabled) {
150
+ this._handleSingleModeConstraint();
151
+ const $details = this._detailsRef.value;
152
+ if (!$details)
153
+ return;
154
+ const isOpen = $details.hasAttribute('open');
155
+ isOpen ? this.hide() : this.show();
156
+ }
157
+ else {
158
+ if (this._mode === ACCORDION_MODE.single)
159
+ this._closeOtherAccordionGroups();
160
+ this.opened = !this.opened;
161
+ }
162
+ }
163
+ _handleSingleModeConstraint() {
164
+ if (this._mode === ACCORDION_MODE.single) {
165
+ this._hideOtherDetailsGroups();
166
+ }
167
+ }
101
168
  enable() {
102
- if (!this._isDisabled)
103
- return;
104
- this._isDisabled = false;
105
- this.hide();
169
+ if (this._isDevAccordionOptimizationFlagEnabled) {
170
+ if (!this._isDisabled)
171
+ return;
172
+ this._isDisabled = false;
173
+ this.hide();
174
+ }
175
+ else {
176
+ if (this._isDisabled) {
177
+ this.addEventListener(ACCORDION_EVENTS.toggle, this._accordionToggle);
178
+ this.hide();
179
+ this._isDisabled = false;
180
+ }
181
+ }
106
182
  }
107
183
  disable() {
108
- if (this._isDisabled)
109
- return;
110
- this._isDisabled = true;
111
- this.show();
184
+ if (this._isDevAccordionOptimizationFlagEnabled) {
185
+ if (this._isDisabled)
186
+ return;
187
+ this._isDisabled = true;
188
+ this.show();
189
+ }
190
+ else {
191
+ if (!this._isDisabled) {
192
+ this.removeEventListener(ACCORDION_EVENTS.toggle, this._accordionToggle);
193
+ this.show();
194
+ this._isDisabled = true;
195
+ }
196
+ }
197
+ }
198
+ _closeOtherAccordionGroups() {
199
+ if (!this._isDisabled) {
200
+ const $accordion = this.closest('h-accordion');
201
+ const $accordionGroups = [...$accordion.querySelectorAll('h-accordion-group')];
202
+ const $otherAccordionGroupsWithinAccordion = $accordionGroups.filter(($accordionGroup) => $accordionGroup !== this);
203
+ $otherAccordionGroupsWithinAccordion.forEach(($accordionGroup) => $accordionGroup.hide());
204
+ }
205
+ }
206
+ notify() {
207
+ if (!this._isDevAccordionOptimizationFlagEnabled) {
208
+ this._accordionGroupPropsSubject.notify(this._getProps());
209
+ }
210
+ }
211
+ updated(_changedProperties) {
212
+ if (!this._isDevAccordionOptimizationFlagEnabled) {
213
+ if (_changedProperties.has('opened') ||
214
+ _changedProperties.has('_isDisabled') ||
215
+ _changedProperties.has('_regionId') ||
216
+ _changedProperties.has('_controlsId')) {
217
+ this.notify();
218
+ }
219
+ }
220
+ }
221
+ _getProps() {
222
+ return {
223
+ opened: this.opened,
224
+ disabled: this._isDisabled,
225
+ regionId: this._regionId,
226
+ controlsId: this._controlsId
227
+ };
112
228
  }
113
- notify() { }
114
229
  render() {
115
- return html `
230
+ return when(this._isDevAccordionOptimizationFlagEnabled, () => html `
116
231
  <details
117
232
  ${ref(this._detailsRef)}
118
233
  class="accordion__details ${this._isDisabled ? 'accordion__details_disabled' : ''}"
@@ -129,7 +244,7 @@ let HAccordionGroup = class HAccordionGroup extends PhoenixLightLitElement {
129
244
 
130
245
  ${this.getSlot('content')}
131
246
  </details>
132
- `;
247
+ `);
133
248
  }
134
249
  };
135
250
  __decorate([
@@ -140,12 +255,21 @@ __decorate([
140
255
  state(),
141
256
  __metadata("design:type", Object)
142
257
  ], HAccordionGroup.prototype, "_isDisabled", void 0);
258
+ __decorate([
259
+ state(),
260
+ __metadata("design:type", Object)
261
+ ], HAccordionGroup.prototype, "_regionId", void 0);
262
+ __decorate([
263
+ state(),
264
+ __metadata("design:type", Object)
265
+ ], HAccordionGroup.prototype, "_controlsId", void 0);
143
266
  __decorate([
144
267
  state(),
145
268
  __metadata("design:type", String)
146
269
  ], HAccordionGroup.prototype, "_mode", void 0);
147
270
  HAccordionGroup = __decorate([
148
- phoenixCustomElement('h-accordion-group')
271
+ phoenixCustomElement('h-accordion-group'),
272
+ __metadata("design:paramtypes", [])
149
273
  ], HAccordionGroup);
150
274
 
151
275
  export { HAccordionGroup };
@@ -1 +1 @@
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
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA,uCAAuC,4CAAgD;AACvF;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,4 +1,13 @@
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
+ private _isDevAccordionOptimizationFlagEnabled;
3
7
  constructor();
8
+ connectedCallback(): Promise<void>;
9
+ private _setAttributes;
10
+ private _emitTogglerClickedWithKeyboard;
11
+ private _emitTogglerClicked;
12
+ disconnectedCallback(): void;
4
13
  }
@@ -1,11 +1,67 @@
1
1
  import { __decorate, __metadata } from '../../../../../external/tslib/tslib.es6.js';
2
+ import { FeatureFlagUtils, UiDomUtils } from '@dreamcommerce/utilities';
2
3
  import { PhoenixLightLitElement } from '../../core/phoenix_light_lit_element/phoenix_light_lit_element.js';
3
4
  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 { ACCORDION_EVENTS, ACCORDION_CONTEXTS } from './accordion_constants.js';
8
+ import { HAccordion } from './accordion.js';
4
9
 
5
10
  let HAccordionToggler = class HAccordionToggler extends PhoenixLightLitElement {
6
11
  constructor() {
7
12
  super();
8
- this.slot = this.hasAttribute('slot') ? this.slot : 'toggler';
13
+ this._emitTogglerClickedWithKeyboard = (ev) => {
14
+ if (ev.key !== ' ' && ev.key !== 'Enter')
15
+ return;
16
+ if (this.getAttribute('aria-disabled') === 'true')
17
+ return;
18
+ this._emitTogglerClicked();
19
+ };
20
+ this._emitTogglerClicked = () => {
21
+ this.emitCustomEvent(ACCORDION_EVENTS.toggle);
22
+ };
23
+ this._isDevAccordionOptimizationFlagEnabled = FeatureFlagUtils.isEnabled('dev_accordion_optimization');
24
+ if (this._isDevAccordionOptimizationFlagEnabled) {
25
+ if (this.parentElement instanceof HAccordion) {
26
+ this.slot = this.hasAttribute('slot') ? this.slot : 'content';
27
+ }
28
+ else {
29
+ const contentToSlot = UiDomUtils.findParentByCondition(this, ($el) => $el.parentElement instanceof HAccordion);
30
+ contentToSlot === null || contentToSlot === void 0 ? void 0 : contentToSlot.setAttribute('slot', 'content');
31
+ }
32
+ }
33
+ else {
34
+ this._contextConsumer = new ContextConsumerController(this);
35
+ }
36
+ }
37
+ async connectedCallback() {
38
+ super.connectedCallback();
39
+ if (!this._isDevAccordionOptimizationFlagEnabled) {
40
+ this._accordionGroupProps = await this._contextConsumer.consumeAsync(ACCORDION_CONTEXTS.accordionGroupProps);
41
+ this._accordionGroupPropsObserver = new Observer((accordionProps) => this._setAttributes(accordionProps));
42
+ this._accordionGroupProps.subscribe(this._accordionGroupPropsObserver);
43
+ this.addEventListener('click', this._emitTogglerClicked);
44
+ this.addEventListener('keydown', this._emitTogglerClickedWithKeyboard);
45
+ }
46
+ }
47
+ _setAttributes({ regionId, opened, controlsId, disabled }) {
48
+ this.setAttribute('id', regionId);
49
+ this.setAttribute('aria-expanded', opened ? 'true' : 'false');
50
+ this.setAttribute('aria-controls', controlsId);
51
+ this.setAttribute('aria-disabled', disabled ? 'true' : 'false');
52
+ if (disabled) {
53
+ this.removeAttribute('role');
54
+ this.setAttribute('tabindex', '-1');
55
+ }
56
+ else {
57
+ this.setAttribute('role', 'button');
58
+ this.setAttribute('tabindex', '0');
59
+ }
60
+ }
61
+ disconnectedCallback() {
62
+ if (this._accordionGroupProps && !this._isDevAccordionOptimizationFlagEnabled) {
63
+ this._accordionGroupProps.unsubscribe(this._accordionGroupPropsObserver);
64
+ }
9
65
  }
10
66
  };
11
67
  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;"}
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;"}
@@ -15,6 +15,16 @@ export interface IAccordionGroup {
15
15
  toggle(): void;
16
16
  }
17
17
  export declare type TAccordionMode = Any.Keys<typeof ACCORDION_MODE>;
18
+ export declare type TAccordionProps = {
19
+ disabled: boolean;
20
+ mode: TAccordionMode;
21
+ };
22
+ export declare type TAccordionGroupProps = {
23
+ opened: boolean;
24
+ disabled: boolean;
25
+ regionId: string;
26
+ controlsId: string;
27
+ };
18
28
  declare global {
19
29
  interface HTMLElementTagNameMap {
20
30
  'h-accordion': HAccordion;
@@ -71,11 +71,11 @@ export { HRadioControl } from './components/form/radio/radio_control.js';
71
71
  export { TEXTAREA_CONTROL_CSS_CLASSES, TEXTAREA_CONTROL_EVENTS, TEXTAREA_PROPS_TO_SYNC, TEXTAREA_SLOTS } from './components/form/textarea/textarea_constants.js';
72
72
  export { HTextarea } from './components/form/textarea/textarea.js';
73
73
  export { HTextareaControl } from './components/form/textarea/textarea_control.js';
74
- export { ACCORDION_ANIMATION_DURATION, ACCORDION_CSS_CLASSES, ACCORDION_EVENTS, ACCORDION_MODE } from './components/accordion/accordion_constants.js';
74
+ export { ACCORDION_ANIMATION_DURATION, ACCORDION_CONTEXTS, ACCORDION_CSS_CLASSES, ACCORDION_EVENTS, ACCORDION_MODE } from './components/accordion/accordion_constants.js';
75
75
  export { HAccordion } from './components/accordion/accordion.js';
76
76
  export { HAccordionGroup } from './components/accordion/accordion_group.js';
77
- export { HAccordionToggler } from './components/accordion/accordion_toggler.js';
78
77
  export { HAccordionContent } from './components/accordion/accordion_content.js';
78
+ export { HAccordionToggler } from './components/accordion/accordion_toggler.js';
79
79
  export { HDropdownClose } from './components/dropdown/dropdown_close.js';
80
80
  export { HToggleButtonGroup } from './components/groups/toggle_button_group/toggle_button_group.js';
81
81
  export { HToggleButton } from './components/groups/toggle_button_group/toggle_button.js';
@@ -0,0 +1,22 @@
1
+ import { JsonUtils } from './json_utils.js';
2
+
3
+ class FeatureFlagUtils {
4
+ static _initialize() {
5
+ if (this._flags !== null)
6
+ return;
7
+ const $script = document.getElementById('featureFlags');
8
+ this._flags = $script ? this._toObjectFromJsonScriptTag($script) : null;
9
+ }
10
+ static _toObjectFromJsonScriptTag(scriptTag) {
11
+ const scriptContent = scriptTag.textContent;
12
+ return JsonUtils.fromJson(scriptContent) || {};
13
+ }
14
+ static isEnabled(flagName) {
15
+ this._initialize();
16
+ return !!this._flags[flagName];
17
+ }
18
+ }
19
+ FeatureFlagUtils._flags = null;
20
+
21
+ export { FeatureFlagUtils };
22
+ //# sourceMappingURL=feature_flag_utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,21 @@
1
+ class JsonUtils {
2
+ static toJson(value) {
3
+ try {
4
+ return JSON.stringify(value);
5
+ }
6
+ catch (error) {
7
+ console.error(error);
8
+ }
9
+ }
10
+ static fromJson(value) {
11
+ try {
12
+ return JSON.parse(value);
13
+ }
14
+ catch (error) {
15
+ console.error(error);
16
+ }
17
+ }
18
+ }
19
+
20
+ export { JsonUtils };
21
+ //# sourceMappingURL=json_utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
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": "1.18.10-0",
5
+ "version": "1.18.10-2",
6
6
  "description": "phoenix design system",
7
7
  "author": "zefirek",
8
8
  "license": "MIT",
@@ -31,7 +31,7 @@
31
31
  "@splidejs/splide-extension-auto-scroll": "0.5.3"
32
32
  },
33
33
  "devDependencies": {
34
- "@dreamcommerce/utilities": "^1.23.2",
34
+ "@dreamcommerce/utilities": "^1.23.2-1",
35
35
  "@shoper/jest_config": "^0.0.0",
36
36
  "@shoper/tsconfig": "^0.0.0",
37
37
  "@splidejs/splide": "4.0.7",