@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.
- package/build/cjs/packages/phoenix/src/components/accordion/accordion.js +28 -6
- package/build/cjs/packages/phoenix/src/components/accordion/accordion.js.map +1 -1
- package/build/cjs/packages/phoenix/src/components/accordion/accordion_constants.js +5 -0
- package/build/cjs/packages/phoenix/src/components/accordion/accordion_constants.js.map +1 -1
- package/build/cjs/packages/phoenix/src/components/accordion/accordion_content.js +151 -2
- package/build/cjs/packages/phoenix/src/components/accordion/accordion_content.js.map +1 -1
- package/build/cjs/packages/phoenix/src/components/accordion/accordion_group.js +171 -47
- package/build/cjs/packages/phoenix/src/components/accordion/accordion_group.js.map +1 -1
- package/build/cjs/packages/phoenix/src/components/accordion/accordion_toggler.js +57 -1
- package/build/cjs/packages/phoenix/src/components/accordion/accordion_toggler.js.map +1 -1
- package/build/cjs/packages/phoenix/src/index.js +6 -5
- package/build/cjs/packages/phoenix/src/index.js.map +1 -1
- package/build/cjs/packages/utilities/build/esm/packages/utilities/src/feature_flag_utils.js +26 -0
- package/build/cjs/packages/utilities/build/esm/packages/utilities/src/feature_flag_utils.js.map +1 -0
- package/build/cjs/packages/utilities/build/esm/packages/utilities/src/json_utils.js +25 -0
- package/build/cjs/packages/utilities/build/esm/packages/utilities/src/json_utils.js.map +1 -0
- package/build/esm/packages/phoenix/src/components/accordion/accordion.d.ts +6 -1
- package/build/esm/packages/phoenix/src/components/accordion/accordion.js +29 -7
- package/build/esm/packages/phoenix/src/components/accordion/accordion.js.map +1 -1
- package/build/esm/packages/phoenix/src/components/accordion/accordion_constants.d.ts +4 -0
- package/build/esm/packages/phoenix/src/components/accordion/accordion_constants.js +5 -1
- package/build/esm/packages/phoenix/src/components/accordion/accordion_constants.js.map +1 -1
- package/build/esm/packages/phoenix/src/components/accordion/accordion_content.d.ts +24 -0
- package/build/esm/packages/phoenix/src/components/accordion/accordion_content.js +151 -2
- package/build/esm/packages/phoenix/src/components/accordion/accordion_content.js.map +1 -1
- package/build/esm/packages/phoenix/src/components/accordion/accordion_group.d.ts +17 -3
- package/build/esm/packages/phoenix/src/components/accordion/accordion_group.js +172 -48
- package/build/esm/packages/phoenix/src/components/accordion/accordion_group.js.map +1 -1
- package/build/esm/packages/phoenix/src/components/accordion/accordion_toggler.d.ts +9 -0
- package/build/esm/packages/phoenix/src/components/accordion/accordion_toggler.js +57 -1
- package/build/esm/packages/phoenix/src/components/accordion/accordion_toggler.js.map +1 -1
- package/build/esm/packages/phoenix/src/components/accordion/accordion_types.d.ts +10 -0
- package/build/esm/packages/phoenix/src/index.js +2 -2
- package/build/esm/packages/utilities/build/esm/packages/utilities/src/feature_flag_utils.js +22 -0
- package/build/esm/packages/utilities/build/esm/packages/utilities/src/feature_flag_utils.js.map +1 -0
- package/build/esm/packages/utilities/build/esm/packages/utilities/src/json_utils.js +21 -0
- package/build/esm/packages/utilities/build/esm/packages/utilities/src/json_utils.js.map +1 -0
- 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(
|
|
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
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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
|
-
(
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
this.
|
|
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.
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
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
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
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 (
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
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.
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
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.
|
|
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
|
package/build/esm/packages/utilities/build/esm/packages/utilities/src/feature_flag_utils.js.map
ADDED
|
@@ -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-
|
|
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",
|