@shoper/phoenix_design_system 1.18.10-8 → 1.18.10-9

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 (39) hide show
  1. package/build/cjs/packages/phoenix/src/components/accordion/accordion_content.js +96 -2
  2. package/build/cjs/packages/phoenix/src/components/accordion/accordion_content.js.map +1 -1
  3. package/build/cjs/packages/phoenix/src/components/details/details.js +41 -0
  4. package/build/cjs/packages/phoenix/src/components/details/details.js.map +1 -0
  5. package/build/cjs/packages/phoenix/src/components/details/details_constants.js +23 -0
  6. package/build/cjs/packages/phoenix/src/components/details/details_constants.js.map +1 -0
  7. package/build/cjs/packages/phoenix/src/components/details/details_content.js +38 -0
  8. package/build/cjs/packages/phoenix/src/components/details/details_content.js.map +1 -0
  9. package/build/cjs/packages/phoenix/src/components/details/details_group.js +177 -0
  10. package/build/cjs/packages/phoenix/src/components/details/details_group.js.map +1 -0
  11. package/build/cjs/packages/phoenix/src/components/details/details_toggler.js +27 -0
  12. package/build/cjs/packages/phoenix/src/components/details/details_toggler.js.map +1 -0
  13. package/build/cjs/packages/phoenix/src/index.js +33 -0
  14. package/build/cjs/packages/phoenix/src/index.js.map +1 -1
  15. package/build/esm/packages/phoenix/src/components/accordion/accordion_content.d.ts +15 -0
  16. package/build/esm/packages/phoenix/src/components/accordion/accordion_content.js +96 -2
  17. package/build/esm/packages/phoenix/src/components/accordion/accordion_content.js.map +1 -1
  18. package/build/esm/packages/phoenix/src/components/details/details.d.ts +10 -0
  19. package/build/esm/packages/phoenix/src/components/details/details.js +39 -0
  20. package/build/esm/packages/phoenix/src/components/details/details.js.map +1 -0
  21. package/build/esm/packages/phoenix/src/components/details/details_constants.d.ts +13 -0
  22. package/build/esm/packages/phoenix/src/components/details/details_constants.js +16 -0
  23. package/build/esm/packages/phoenix/src/components/details/details_constants.js.map +1 -0
  24. package/build/esm/packages/phoenix/src/components/details/details_content.d.ts +6 -0
  25. package/build/esm/packages/phoenix/src/components/details/details_content.js +36 -0
  26. package/build/esm/packages/phoenix/src/components/details/details_content.js.map +1 -0
  27. package/build/esm/packages/phoenix/src/components/details/details_group.d.ts +30 -0
  28. package/build/esm/packages/phoenix/src/components/details/details_group.js +175 -0
  29. package/build/esm/packages/phoenix/src/components/details/details_group.js.map +1 -0
  30. package/build/esm/packages/phoenix/src/components/details/details_toggler.d.ts +4 -0
  31. package/build/esm/packages/phoenix/src/components/details/details_toggler.js +25 -0
  32. package/build/esm/packages/phoenix/src/components/details/details_toggler.js.map +1 -0
  33. package/build/esm/packages/phoenix/src/components/details/details_types.d.ts +35 -0
  34. package/build/esm/packages/phoenix/src/components/details/details_types.js +7 -0
  35. package/build/esm/packages/phoenix/src/components/details/details_types.js.map +1 -0
  36. package/build/esm/packages/phoenix/src/index.d.ts +6 -0
  37. package/build/esm/packages/phoenix/src/index.js +5 -0
  38. package/build/esm/packages/phoenix/src/index.js.map +1 -1
  39. package/package.json +2 -2
@@ -3,6 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var tslib_es6 = require('../../../../../external/tslib/tslib.es6.js');
6
+ require('lit');
6
7
  var decorators = require('lit/decorators');
7
8
  var phoenix_light_lit_element = require('../../core/phoenix_light_lit_element/phoenix_light_lit_element.js');
8
9
  var phoenix_custom_element = require('../../core/decorators/phoenix_custom_element.js');
@@ -11,34 +12,127 @@ var context_consumer_controller = require('../../core/context/context_consumer_c
11
12
  var accordion_constants = require('./accordion_constants.js');
12
13
  var transition_controller = require('../../controllers/transition_controller/transition_controller.js');
13
14
 
15
+ const RESIZE_DEBOUNCE_MS = 150;
16
+ const MUTATION_DEBOUNCE_MS = 100;
14
17
  exports.HAccordionContent = class HAccordionContent extends phoenix_light_lit_element.PhoenixLightLitElement {
15
18
  constructor() {
16
19
  super();
17
20
  this.transitionName = 'accordion-toggle';
21
+ this._resizeDebounceTimer = null;
22
+ this._mutationDebounceTimer = null;
23
+ this._mutationObserver = null;
24
+ this._handleResize = () => {
25
+ if (this._resizeDebounceTimer !== null) {
26
+ window.cancelAnimationFrame(this._resizeDebounceTimer);
27
+ }
28
+ this._resizeDebounceTimer = window.requestAnimationFrame(() => {
29
+ setTimeout(() => {
30
+ this._setStylingOptions();
31
+ }, RESIZE_DEBOUNCE_MS);
32
+ });
33
+ };
34
+ this._setStylingOptions = () => {
35
+ requestAnimationFrame(() => {
36
+ const previousDisplay = this.style.display;
37
+ this.style.setProperty('display', 'block', 'important');
38
+ this.style.height = 'auto';
39
+ requestAnimationFrame(() => {
40
+ this._setOriginalHeightValue();
41
+ this.style.display = previousDisplay;
42
+ this.style.height = this.hidden ? '0px' : this._originalHeight;
43
+ });
44
+ });
45
+ };
46
+ this._handleMutation = () => {
47
+ if (this._mutationDebounceTimer !== null) {
48
+ window.clearTimeout(this._mutationDebounceTimer);
49
+ }
50
+ this._mutationDebounceTimer = window.setTimeout(() => {
51
+ requestAnimationFrame(() => {
52
+ this.style.height = 'auto';
53
+ requestAnimationFrame(() => {
54
+ this._setOriginalHeightValue();
55
+ if (this.hidden) {
56
+ this.style.height = '0px';
57
+ }
58
+ else {
59
+ this.style.height = this._originalHeight;
60
+ }
61
+ });
62
+ });
63
+ }, MUTATION_DEBOUNCE_MS);
64
+ };
65
+ this._setOriginalHeightValue = () => {
66
+ const newHeight = this.getBoundingClientRect().height;
67
+ if (newHeight !== 0 || this.children.length === 0) {
68
+ this._originalHeight = `${newHeight}px`;
69
+ }
70
+ };
71
+ this._expand = () => {
72
+ this._setHeight(this._originalHeight);
73
+ };
74
+ this._handleTransitionEnd = (e) => {
75
+ if (e.propertyName !== 'height' || e.target !== this) {
76
+ return;
77
+ }
78
+ if (!this.hidden && this.style.height !== '0px') {
79
+ this.style.height = 'auto';
80
+ }
81
+ };
82
+ this._collapse = () => {
83
+ const currentHeight = this.getBoundingClientRect().height;
84
+ this._setHeight(`${currentHeight}px`);
85
+ requestAnimationFrame(() => {
86
+ requestAnimationFrame(() => {
87
+ this._setHeight('0px');
88
+ });
89
+ });
90
+ };
18
91
  this.setAttribute('role', 'region');
92
+ this._boundHandleTransitionEnd = this._handleTransitionEnd.bind(this);
19
93
  }
20
94
  connectedCallback() {
21
95
  super.connectedCallback();
22
96
  this._contextConsumer = new context_consumer_controller.ContextConsumerController(this);
23
97
  this._transitionController = new transition_controller.TransitionController(this, this.transitionName);
24
98
  this._subscribeObserver();
99
+ window.addEventListener('resize', this._handleResize, { passive: true });
100
+ this.addEventListener('transitionend', this._boundHandleTransitionEnd);
101
+ }
102
+ firstUpdated(props) {
103
+ super.firstUpdated(props);
104
+ this._setStylingOptions();
25
105
  }
26
106
  async _subscribeObserver() {
27
107
  this._accordionGroupProps = await this._contextConsumer.consumeAsync(accordion_constants.ACCORDION_CONTEXTS.accordionGroupProps);
28
108
  this._accordionGroupPropsObserver = new observer.Observer((accordionProps) => {
29
109
  this._setAttributes(accordionProps);
30
- accordionProps.opened ? this._transitionController.show() : this._transitionController.hide();
110
+ accordionProps.opened ? this._transitionController.show(this._expand) : this._transitionController.hide(this._collapse);
31
111
  });
32
112
  this._accordionGroupProps.subscribe(this._accordionGroupPropsObserver);
113
+ this._mutationObserver = new MutationObserver(this._handleMutation);
114
+ this._mutationObserver.observe(this, { childList: true, subtree: true });
115
+ }
116
+ _setHeight(height) {
117
+ this.style.height = height;
33
118
  }
34
119
  _setAttributes({ regionId, controlsId }) {
35
120
  this.setAttribute('id', controlsId);
36
121
  this.setAttribute('labelledby', regionId);
37
122
  }
38
123
  disconnectedCallback() {
39
- var _a;
124
+ var _a, _b;
40
125
  super.disconnectedCallback();
41
126
  (_a = this._accordionGroupProps) === null || _a === void 0 ? void 0 : _a.unsubscribe(this._accordionGroupPropsObserver);
127
+ (_b = this._mutationObserver) === null || _b === void 0 ? void 0 : _b.disconnect();
128
+ window.removeEventListener('resize', this._handleResize);
129
+ this.removeEventListener('transitionend', this._boundHandleTransitionEnd);
130
+ if (this._resizeDebounceTimer !== null) {
131
+ window.cancelAnimationFrame(this._resizeDebounceTimer);
132
+ }
133
+ if (this._mutationDebounceTimer !== null) {
134
+ window.clearTimeout(this._mutationDebounceTimer);
135
+ }
42
136
  }
43
137
  };
44
138
  tslib_es6.__decorate([
@@ -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;"}
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA,wBAAwB,4CAAgD;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,41 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var tslib_es6 = require('../../../../../external/tslib/tslib.es6.js');
6
+ var decorators = require('lit/decorators');
7
+ var phoenix_light_lit_element = require('../../core/phoenix_light_lit_element/phoenix_light_lit_element.js');
8
+ var phoenix_custom_element = require('../../core/decorators/phoenix_custom_element.js');
9
+ var details_constants = require('./details_constants.js');
10
+
11
+ exports.HDetails = class HDetails extends phoenix_light_lit_element.PhoenixLightLitElement {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.disabled = false;
15
+ this.mode = details_constants.DETAILS_MODE.multi;
16
+ }
17
+ enable() {
18
+ this.disabled = false;
19
+ }
20
+ disable() {
21
+ this.disabled = true;
22
+ }
23
+ updated() {
24
+ this.notify();
25
+ }
26
+ notify() {
27
+ this.dispatchEvent(new Event(details_constants.DETAILS_EVENTS.update));
28
+ }
29
+ };
30
+ tslib_es6.__decorate([
31
+ decorators.property({ type: Boolean, reflect: true }),
32
+ tslib_es6.__metadata("design:type", Object)
33
+ ], exports.HDetails.prototype, "disabled", void 0);
34
+ tslib_es6.__decorate([
35
+ decorators.property({ type: String }),
36
+ tslib_es6.__metadata("design:type", String)
37
+ ], exports.HDetails.prototype, "mode", void 0);
38
+ exports.HDetails = tslib_es6.__decorate([
39
+ phoenix_custom_element.phoenixCustomElement('h-details')
40
+ ], exports.HDetails);
41
+ //# sourceMappingURL=details.js.map
@@ -0,0 +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;"}
@@ -0,0 +1,23 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const DETAILS_EVENTS = {
6
+ toggle: 'toggleDetails',
7
+ update: 'updateDetails'
8
+ };
9
+ const DETAILS_CSS_CLASSES = {
10
+ open: 'details__open',
11
+ content: 'details__content'
12
+ };
13
+ const DETAILS_MODE = {
14
+ single: 'single',
15
+ multi: 'multi'
16
+ };
17
+ const DETAILS_ANIMATION_DURATION = 400;
18
+
19
+ exports.DETAILS_ANIMATION_DURATION = DETAILS_ANIMATION_DURATION;
20
+ exports.DETAILS_CSS_CLASSES = DETAILS_CSS_CLASSES;
21
+ exports.DETAILS_EVENTS = DETAILS_EVENTS;
22
+ exports.DETAILS_MODE = DETAILS_MODE;
23
+ //# sourceMappingURL=details_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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,38 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var tslib_es6 = require('../../../../../external/tslib/tslib.es6.js');
6
+ var decorators = require('lit/decorators');
7
+ var utilities = require('@dreamcommerce/utilities');
8
+ var phoenix_light_lit_element = require('../../core/phoenix_light_lit_element/phoenix_light_lit_element.js');
9
+ var phoenix_custom_element = require('../../core/decorators/phoenix_custom_element.js');
10
+ var details_constants = require('./details_constants.js');
11
+ var details_group = require('./details_group.js');
12
+
13
+ exports.HDetailsContent = class HDetailsContent extends phoenix_light_lit_element.PhoenixLightLitElement {
14
+ constructor() {
15
+ super();
16
+ this.transitionName = 'details-toggle';
17
+ if (this.parentElement instanceof details_group.HDetailsGroup) {
18
+ this.slot = this.hasAttribute('slot') ? this.slot : 'content';
19
+ }
20
+ else {
21
+ const contentToSlot = utilities.UiDomUtils.findParentByCondition(this, ($el) => $el.parentElement instanceof details_group.HDetailsGroup);
22
+ contentToSlot === null || contentToSlot === void 0 ? void 0 : contentToSlot.setAttribute('slot', 'content');
23
+ }
24
+ }
25
+ connectedCallback() {
26
+ super.connectedCallback();
27
+ this.classList.add(details_constants.DETAILS_CSS_CLASSES.content);
28
+ }
29
+ };
30
+ tslib_es6.__decorate([
31
+ decorators.property(),
32
+ tslib_es6.__metadata("design:type", Object)
33
+ ], exports.HDetailsContent.prototype, "transitionName", void 0);
34
+ exports.HDetailsContent = tslib_es6.__decorate([
35
+ phoenix_custom_element.phoenixCustomElement('h-details-content'),
36
+ tslib_es6.__metadata("design:paramtypes", [])
37
+ ], exports.HDetailsContent);
38
+ //# sourceMappingURL=details_content.js.map
@@ -0,0 +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;"}
@@ -0,0 +1,177 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var tslib_es6 = require('../../../../../external/tslib/tslib.es6.js');
6
+ var lit = require('lit');
7
+ var decorators = require('lit/decorators');
8
+ var phoenix_light_lit_element = require('../../core/phoenix_light_lit_element/phoenix_light_lit_element.js');
9
+ var phoenix_custom_element = require('../../core/decorators/phoenix_custom_element.js');
10
+ var v4 = require('../../../../../external/uuid/dist/esm-browser/v4.js');
11
+ var ref = require('lit/directives/ref');
12
+ var details_constants = require('./details_constants.js');
13
+
14
+ exports.HDetailsGroup = class HDetailsGroup extends phoenix_light_lit_element.PhoenixLightLitElement {
15
+ constructor() {
16
+ super(...arguments);
17
+ this.opened = false;
18
+ this._isDisabled = false;
19
+ this._mode = details_constants.DETAILS_MODE.multi;
20
+ this._$parentDetails = null;
21
+ this._detailsRef = ref.createRef();
22
+ this._togglerId = v4['default']();
23
+ this._animationFrameId = null;
24
+ this._closeTimeoutId = null;
25
+ this._syncWithParentDetails = () => {
26
+ if (!this._$parentDetails)
27
+ return;
28
+ this._mode = this._$parentDetails.mode;
29
+ const shouldBeDisabled = this._$parentDetails.disabled;
30
+ const hasDisabledStateChanged = shouldBeDisabled !== this._isDisabled;
31
+ if (hasDisabledStateChanged) {
32
+ shouldBeDisabled ? this.disable() : this.enable();
33
+ }
34
+ };
35
+ this._hideOtherDetailsGroups = () => {
36
+ var _a;
37
+ if (this._isDisabled)
38
+ return;
39
+ (_a = this._$parentDetails) === null || _a === void 0 ? void 0 : _a.querySelectorAll('h-details-group').forEach(($detailsGroup) => {
40
+ if ($detailsGroup === this)
41
+ return;
42
+ $detailsGroup.hide();
43
+ });
44
+ };
45
+ this._summaryClickHandler = (ev) => {
46
+ ev.preventDefault();
47
+ if (!this._isDisabled)
48
+ this.toggle();
49
+ };
50
+ }
51
+ connectedCallback() {
52
+ var _a;
53
+ super.connectedCallback();
54
+ this._addAttributesToSlottedContentElements();
55
+ this._$parentDetails = this.closest('h-details');
56
+ (_a = this._$parentDetails) === null || _a === void 0 ? void 0 : _a.addEventListener(details_constants.DETAILS_EVENTS.update, this._syncWithParentDetails);
57
+ this._syncWithParentDetails();
58
+ }
59
+ _addAttributesToSlottedContentElements() {
60
+ const slottedContentElements = Array.from(this.querySelectorAll('[slot="content"]'));
61
+ slottedContentElements.forEach(($element) => {
62
+ $element.classList.add(details_constants.DETAILS_CSS_CLASSES.content);
63
+ });
64
+ }
65
+ firstUpdated(props) {
66
+ super.firstUpdated(props);
67
+ if (this.opened)
68
+ this.show();
69
+ }
70
+ disconnectedCallback() {
71
+ var _a;
72
+ super.disconnectedCallback();
73
+ (_a = this._$parentDetails) === null || _a === void 0 ? void 0 : _a.removeEventListener(details_constants.DETAILS_EVENTS.update, this._syncWithParentDetails);
74
+ }
75
+ show() {
76
+ this._handleSingleModeConstraint();
77
+ const $details = this._detailsRef.value;
78
+ if (!$details)
79
+ return;
80
+ this._clearPendingAnimations();
81
+ $details.setAttribute('open', '');
82
+ this._animationFrameId = requestAnimationFrame(() => {
83
+ $details.classList.add(details_constants.DETAILS_CSS_CLASSES.open);
84
+ this._animationFrameId = null;
85
+ });
86
+ this._dispatchToggleEvent($details, true);
87
+ }
88
+ hide() {
89
+ const $details = this._detailsRef.value;
90
+ if (!$details)
91
+ return;
92
+ this._clearPendingAnimations();
93
+ $details.classList.remove(details_constants.DETAILS_CSS_CLASSES.open);
94
+ this._closeTimeoutId = setTimeout(() => {
95
+ $details.removeAttribute('open');
96
+ this._closeTimeoutId = null;
97
+ }, details_constants.DETAILS_ANIMATION_DURATION);
98
+ this._dispatchToggleEvent($details, false);
99
+ }
100
+ _clearPendingAnimations() {
101
+ if (this._animationFrameId !== null) {
102
+ cancelAnimationFrame(this._animationFrameId);
103
+ this._animationFrameId = null;
104
+ }
105
+ if (this._closeTimeoutId !== null) {
106
+ clearTimeout(this._closeTimeoutId);
107
+ this._closeTimeoutId = null;
108
+ }
109
+ }
110
+ _dispatchToggleEvent($details, open) {
111
+ this.emitCustomEvent(details_constants.DETAILS_EVENTS.toggle, {
112
+ detail: { open, target: $details }
113
+ });
114
+ }
115
+ toggle() {
116
+ this._handleSingleModeConstraint();
117
+ const $details = this._detailsRef.value;
118
+ if (!$details)
119
+ return;
120
+ const isOpen = $details.hasAttribute('open');
121
+ isOpen ? this.hide() : this.show();
122
+ }
123
+ _handleSingleModeConstraint() {
124
+ if (this._mode === details_constants.DETAILS_MODE.single) {
125
+ this._hideOtherDetailsGroups();
126
+ }
127
+ }
128
+ enable() {
129
+ if (!this._isDisabled)
130
+ return;
131
+ this._isDisabled = false;
132
+ this.hide();
133
+ }
134
+ disable() {
135
+ if (this._isDisabled)
136
+ return;
137
+ this._isDisabled = true;
138
+ this.show();
139
+ }
140
+ notify() { }
141
+ render() {
142
+ return lit.html `
143
+ <details
144
+ ${ref.ref(this._detailsRef)}
145
+ class="details__details ${this._isDisabled ? 'details__details_disabled' : ''}"
146
+ aria-disabled="${this._isDisabled ? 'true' : 'false'}"
147
+ aria-labelledby="${this._togglerId}"
148
+ >
149
+ <summary
150
+ class="details__summary"
151
+ id="${this._togglerId}"
152
+ @click=${this._summaryClickHandler}
153
+ >
154
+ ${this.getSlot('toggler')}
155
+ </summary>
156
+
157
+ ${this.getSlot('content')}
158
+ </details>
159
+ `;
160
+ }
161
+ };
162
+ tslib_es6.__decorate([
163
+ decorators.property({ type: Boolean, reflect: true }),
164
+ tslib_es6.__metadata("design:type", Object)
165
+ ], exports.HDetailsGroup.prototype, "opened", void 0);
166
+ tslib_es6.__decorate([
167
+ decorators.state(),
168
+ tslib_es6.__metadata("design:type", Object)
169
+ ], exports.HDetailsGroup.prototype, "_isDisabled", void 0);
170
+ tslib_es6.__decorate([
171
+ decorators.state(),
172
+ tslib_es6.__metadata("design:type", String)
173
+ ], exports.HDetailsGroup.prototype, "_mode", void 0);
174
+ exports.HDetailsGroup = tslib_es6.__decorate([
175
+ phoenix_custom_element.phoenixCustomElement('h-details-group')
176
+ ], exports.HDetailsGroup);
177
+ //# sourceMappingURL=details_group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA,wBAAwB,4CAAgD;AACxE;AACA;AACA;AACA;AACA,iBAAiB,qDAAyD;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,27 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var tslib_es6 = require('../../../../../external/tslib/tslib.es6.js');
6
+ var utilities = require('@dreamcommerce/utilities');
7
+ var phoenix_light_lit_element = require('../../core/phoenix_light_lit_element/phoenix_light_lit_element.js');
8
+ var phoenix_custom_element = require('../../core/decorators/phoenix_custom_element.js');
9
+ var details_group = require('./details_group.js');
10
+
11
+ exports.HDetailsToggler = class HDetailsToggler extends phoenix_light_lit_element.PhoenixLightLitElement {
12
+ constructor() {
13
+ super();
14
+ if (this.parentElement instanceof details_group.HDetailsGroup) {
15
+ this.slot = this.hasAttribute('slot') ? this.slot : 'toggler';
16
+ }
17
+ else {
18
+ const contentToSlot = utilities.UiDomUtils.findParentByCondition(this, ($el) => $el.parentElement instanceof details_group.HDetailsGroup);
19
+ contentToSlot === null || contentToSlot === void 0 ? void 0 : contentToSlot.setAttribute('slot', 'toggler');
20
+ }
21
+ }
22
+ };
23
+ exports.HDetailsToggler = tslib_es6.__decorate([
24
+ phoenix_custom_element.phoenixCustomElement('h-details-toggler'),
25
+ tslib_es6.__metadata("design:paramtypes", [])
26
+ ], exports.HDetailsToggler);
27
+ //# sourceMappingURL=details_toggler.js.map
@@ -0,0 +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;"}
@@ -133,6 +133,11 @@ var toggle_button$1 = require('./components/toggle/toggle_button.js');
133
133
  var navigator_share = require('./components/navigator/navigator_share/navigator_share.js');
134
134
  var navigator_controller = require('./components/navigator/navigator_controller/navigator_controller.js');
135
135
  var show_more$1 = require('./components/show-more/show_more.js');
136
+ var details_constants = require('./components/details/details_constants.js');
137
+ var details = require('./components/details/details.js');
138
+ var details_group = require('./components/details/details_group.js');
139
+ var details_toggler = require('./components/details/details_toggler.js');
140
+ var details_content = require('./components/details/details_content.js');
136
141
 
137
142
 
138
143
 
@@ -789,4 +794,32 @@ Object.defineProperty(exports, 'HShowMore', {
789
794
  return show_more$1.HShowMore;
790
795
  }
791
796
  });
797
+ exports.DETAILS_ANIMATION_DURATION = details_constants.DETAILS_ANIMATION_DURATION;
798
+ exports.DETAILS_CSS_CLASSES = details_constants.DETAILS_CSS_CLASSES;
799
+ exports.DETAILS_EVENTS = details_constants.DETAILS_EVENTS;
800
+ exports.DETAILS_MODE = details_constants.DETAILS_MODE;
801
+ Object.defineProperty(exports, 'HDetails', {
802
+ enumerable: true,
803
+ get: function () {
804
+ return details.HDetails;
805
+ }
806
+ });
807
+ Object.defineProperty(exports, 'HDetailsGroup', {
808
+ enumerable: true,
809
+ get: function () {
810
+ return details_group.HDetailsGroup;
811
+ }
812
+ });
813
+ Object.defineProperty(exports, 'HDetailsToggler', {
814
+ enumerable: true,
815
+ get: function () {
816
+ return details_toggler.HDetailsToggler;
817
+ }
818
+ });
819
+ Object.defineProperty(exports, 'HDetailsContent', {
820
+ enumerable: true,
821
+ get: function () {
822
+ return details_content.HDetailsContent;
823
+ }
824
+ });
792
825
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,13 +1,28 @@
1
1
  import { PhoenixLightLitElement } from "../../core/phoenix_light_lit_element/phoenix_light_lit_element";
2
+ import { PropertyValues } from 'lit';
2
3
  export declare class HAccordionContent extends PhoenixLightLitElement {
3
4
  transitionName: string;
4
5
  private _transitionController;
5
6
  private _contextConsumer;
6
7
  private _accordionGroupProps;
7
8
  private _accordionGroupPropsObserver;
9
+ private _originalHeight;
10
+ private _resizeDebounceTimer;
11
+ private _mutationDebounceTimer;
12
+ private _mutationObserver;
13
+ private _boundHandleTransitionEnd;
8
14
  constructor();
9
15
  connectedCallback(): void;
16
+ firstUpdated(props: PropertyValues): void;
17
+ private _handleResize;
18
+ private _setStylingOptions;
10
19
  private _subscribeObserver;
20
+ private _handleMutation;
21
+ private _setOriginalHeightValue;
22
+ private _expand;
23
+ private _handleTransitionEnd;
24
+ private _collapse;
25
+ private _setHeight;
11
26
  private _setAttributes;
12
27
  disconnectedCallback(): void;
13
28
  }
@@ -1,4 +1,5 @@
1
1
  import { __decorate, __metadata } from '../../../../../external/tslib/tslib.es6.js';
2
+ import 'lit';
2
3
  import { property } 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';
@@ -7,34 +8,127 @@ import { ContextConsumerController } from '../../core/context/context_consumer_c
7
8
  import { ACCORDION_CONTEXTS } from './accordion_constants.js';
8
9
  import { TransitionController } from '../../controllers/transition_controller/transition_controller.js';
9
10
 
11
+ const RESIZE_DEBOUNCE_MS = 150;
12
+ const MUTATION_DEBOUNCE_MS = 100;
10
13
  let HAccordionContent = class HAccordionContent extends PhoenixLightLitElement {
11
14
  constructor() {
12
15
  super();
13
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
+ };
14
87
  this.setAttribute('role', 'region');
88
+ this._boundHandleTransitionEnd = this._handleTransitionEnd.bind(this);
15
89
  }
16
90
  connectedCallback() {
17
91
  super.connectedCallback();
18
92
  this._contextConsumer = new ContextConsumerController(this);
19
93
  this._transitionController = new TransitionController(this, this.transitionName);
20
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();
21
101
  }
22
102
  async _subscribeObserver() {
23
103
  this._accordionGroupProps = await this._contextConsumer.consumeAsync(ACCORDION_CONTEXTS.accordionGroupProps);
24
104
  this._accordionGroupPropsObserver = new Observer((accordionProps) => {
25
105
  this._setAttributes(accordionProps);
26
- accordionProps.opened ? this._transitionController.show() : this._transitionController.hide();
106
+ accordionProps.opened ? this._transitionController.show(this._expand) : this._transitionController.hide(this._collapse);
27
107
  });
28
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;
29
114
  }
30
115
  _setAttributes({ regionId, controlsId }) {
31
116
  this.setAttribute('id', controlsId);
32
117
  this.setAttribute('labelledby', regionId);
33
118
  }
34
119
  disconnectedCallback() {
35
- var _a;
120
+ var _a, _b;
36
121
  super.disconnectedCallback();
37
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
+ }
38
132
  }
39
133
  };
40
134
  __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;"}
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;"}
@@ -0,0 +1,10 @@
1
+ import type { IDetails, TDetailsMode } from './details_types';
2
+ import { PhoenixLightLitElement } from "../../core/phoenix_light_lit_element/phoenix_light_lit_element";
3
+ export declare class HDetails extends PhoenixLightLitElement implements IDetails {
4
+ disabled: boolean;
5
+ mode: TDetailsMode;
6
+ enable(): void;
7
+ disable(): void;
8
+ updated(): void;
9
+ notify(): void;
10
+ }
@@ -0,0 +1,39 @@
1
+ import { __decorate, __metadata } from '../../../../../external/tslib/tslib.es6.js';
2
+ import { property } from 'lit/decorators';
3
+ import { PhoenixLightLitElement } from '../../core/phoenix_light_lit_element/phoenix_light_lit_element.js';
4
+ import { phoenixCustomElement } from '../../core/decorators/phoenix_custom_element.js';
5
+ import { DETAILS_MODE, DETAILS_EVENTS } from './details_constants.js';
6
+
7
+ let HDetails = class HDetails extends PhoenixLightLitElement {
8
+ constructor() {
9
+ super(...arguments);
10
+ this.disabled = false;
11
+ this.mode = DETAILS_MODE.multi;
12
+ }
13
+ enable() {
14
+ this.disabled = false;
15
+ }
16
+ disable() {
17
+ this.disabled = true;
18
+ }
19
+ updated() {
20
+ this.notify();
21
+ }
22
+ notify() {
23
+ this.dispatchEvent(new Event(DETAILS_EVENTS.update));
24
+ }
25
+ };
26
+ __decorate([
27
+ property({ type: Boolean, reflect: true }),
28
+ __metadata("design:type", Object)
29
+ ], HDetails.prototype, "disabled", void 0);
30
+ __decorate([
31
+ property({ type: String }),
32
+ __metadata("design:type", String)
33
+ ], HDetails.prototype, "mode", void 0);
34
+ HDetails = __decorate([
35
+ phoenixCustomElement('h-details')
36
+ ], HDetails);
37
+
38
+ export { HDetails };
39
+ //# sourceMappingURL=details.js.map
@@ -0,0 +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;"}
@@ -0,0 +1,13 @@
1
+ export declare const DETAILS_EVENTS: {
2
+ readonly toggle: "toggleDetails";
3
+ readonly update: "updateDetails";
4
+ };
5
+ export declare const DETAILS_CSS_CLASSES: {
6
+ readonly open: "details__open";
7
+ readonly content: "details__content";
8
+ };
9
+ export declare const DETAILS_MODE: {
10
+ readonly single: "single";
11
+ readonly multi: "multi";
12
+ };
13
+ export declare const DETAILS_ANIMATION_DURATION = 400;
@@ -0,0 +1,16 @@
1
+ const DETAILS_EVENTS = {
2
+ toggle: 'toggleDetails',
3
+ update: 'updateDetails'
4
+ };
5
+ const DETAILS_CSS_CLASSES = {
6
+ open: 'details__open',
7
+ content: 'details__content'
8
+ };
9
+ const DETAILS_MODE = {
10
+ single: 'single',
11
+ multi: 'multi'
12
+ };
13
+ const DETAILS_ANIMATION_DURATION = 400;
14
+
15
+ export { DETAILS_ANIMATION_DURATION, DETAILS_CSS_CLASSES, DETAILS_EVENTS, DETAILS_MODE };
16
+ //# sourceMappingURL=details_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;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,6 @@
1
+ import { PhoenixLightLitElement } from "../../core/phoenix_light_lit_element/phoenix_light_lit_element";
2
+ export declare class HDetailsContent extends PhoenixLightLitElement {
3
+ transitionName: string;
4
+ constructor();
5
+ connectedCallback(): void;
6
+ }
@@ -0,0 +1,36 @@
1
+ import { __decorate, __metadata } from '../../../../../external/tslib/tslib.es6.js';
2
+ import { property } from 'lit/decorators';
3
+ import { UiDomUtils } from '@dreamcommerce/utilities';
4
+ import { PhoenixLightLitElement } from '../../core/phoenix_light_lit_element/phoenix_light_lit_element.js';
5
+ import { phoenixCustomElement } from '../../core/decorators/phoenix_custom_element.js';
6
+ import { DETAILS_CSS_CLASSES } from './details_constants.js';
7
+ import { HDetailsGroup } from './details_group.js';
8
+
9
+ let HDetailsContent = class HDetailsContent extends PhoenixLightLitElement {
10
+ constructor() {
11
+ super();
12
+ this.transitionName = 'details-toggle';
13
+ if (this.parentElement instanceof HDetailsGroup) {
14
+ this.slot = this.hasAttribute('slot') ? this.slot : 'content';
15
+ }
16
+ else {
17
+ const contentToSlot = UiDomUtils.findParentByCondition(this, ($el) => $el.parentElement instanceof HDetailsGroup);
18
+ contentToSlot === null || contentToSlot === void 0 ? void 0 : contentToSlot.setAttribute('slot', 'content');
19
+ }
20
+ }
21
+ connectedCallback() {
22
+ super.connectedCallback();
23
+ this.classList.add(DETAILS_CSS_CLASSES.content);
24
+ }
25
+ };
26
+ __decorate([
27
+ property(),
28
+ __metadata("design:type", Object)
29
+ ], HDetailsContent.prototype, "transitionName", void 0);
30
+ HDetailsContent = __decorate([
31
+ phoenixCustomElement('h-details-content'),
32
+ __metadata("design:paramtypes", [])
33
+ ], HDetailsContent);
34
+
35
+ export { HDetailsContent };
36
+ //# sourceMappingURL=details_content.js.map
@@ -0,0 +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;"}
@@ -0,0 +1,30 @@
1
+ import type { IDetails, IDetailsGroup } from './details_types';
2
+ import { PhoenixLightLitElement } from "../../core/phoenix_light_lit_element/phoenix_light_lit_element";
3
+ import { PropertyValues } from 'lit';
4
+ export declare class HDetailsGroup extends PhoenixLightLitElement implements IDetailsGroup, IDetails {
5
+ opened: boolean;
6
+ private _isDisabled;
7
+ private _mode;
8
+ private _$parentDetails;
9
+ private _detailsRef;
10
+ private _togglerId;
11
+ private _animationFrameId;
12
+ private _closeTimeoutId;
13
+ connectedCallback(): void;
14
+ private _addAttributesToSlottedContentElements;
15
+ firstUpdated(props: PropertyValues): void;
16
+ disconnectedCallback(): void;
17
+ private _syncWithParentDetails;
18
+ show(): void;
19
+ hide(): void;
20
+ private _clearPendingAnimations;
21
+ private _dispatchToggleEvent;
22
+ toggle(): void;
23
+ private _handleSingleModeConstraint;
24
+ private _hideOtherDetailsGroups;
25
+ enable(): void;
26
+ disable(): void;
27
+ notify(): void;
28
+ private _summaryClickHandler;
29
+ protected render(): unknown;
30
+ }
@@ -0,0 +1,175 @@
1
+ import { __decorate, __metadata } from '../../../../../external/tslib/tslib.es6.js';
2
+ import { html } from 'lit';
3
+ import { property, state } from 'lit/decorators';
4
+ import { PhoenixLightLitElement } from '../../core/phoenix_light_lit_element/phoenix_light_lit_element.js';
5
+ import { phoenixCustomElement } from '../../core/decorators/phoenix_custom_element.js';
6
+ import v4 from '../../../../../external/uuid/dist/esm-browser/v4.js';
7
+ import { createRef, ref } from 'lit/directives/ref';
8
+ import { DETAILS_MODE, DETAILS_EVENTS, DETAILS_CSS_CLASSES, DETAILS_ANIMATION_DURATION } from './details_constants.js';
9
+
10
+ let HDetailsGroup = class HDetailsGroup extends PhoenixLightLitElement {
11
+ constructor() {
12
+ super(...arguments);
13
+ this.opened = false;
14
+ this._isDisabled = false;
15
+ this._mode = DETAILS_MODE.multi;
16
+ this._$parentDetails = null;
17
+ this._detailsRef = createRef();
18
+ this._togglerId = v4();
19
+ this._animationFrameId = null;
20
+ this._closeTimeoutId = null;
21
+ this._syncWithParentDetails = () => {
22
+ if (!this._$parentDetails)
23
+ return;
24
+ this._mode = this._$parentDetails.mode;
25
+ const shouldBeDisabled = this._$parentDetails.disabled;
26
+ const hasDisabledStateChanged = shouldBeDisabled !== this._isDisabled;
27
+ if (hasDisabledStateChanged) {
28
+ shouldBeDisabled ? this.disable() : this.enable();
29
+ }
30
+ };
31
+ this._hideOtherDetailsGroups = () => {
32
+ var _a;
33
+ if (this._isDisabled)
34
+ return;
35
+ (_a = this._$parentDetails) === null || _a === void 0 ? void 0 : _a.querySelectorAll('h-details-group').forEach(($detailsGroup) => {
36
+ if ($detailsGroup === this)
37
+ return;
38
+ $detailsGroup.hide();
39
+ });
40
+ };
41
+ this._summaryClickHandler = (ev) => {
42
+ ev.preventDefault();
43
+ if (!this._isDisabled)
44
+ this.toggle();
45
+ };
46
+ }
47
+ connectedCallback() {
48
+ var _a;
49
+ super.connectedCallback();
50
+ this._addAttributesToSlottedContentElements();
51
+ this._$parentDetails = this.closest('h-details');
52
+ (_a = this._$parentDetails) === null || _a === void 0 ? void 0 : _a.addEventListener(DETAILS_EVENTS.update, this._syncWithParentDetails);
53
+ this._syncWithParentDetails();
54
+ }
55
+ _addAttributesToSlottedContentElements() {
56
+ const slottedContentElements = Array.from(this.querySelectorAll('[slot="content"]'));
57
+ slottedContentElements.forEach(($element) => {
58
+ $element.classList.add(DETAILS_CSS_CLASSES.content);
59
+ });
60
+ }
61
+ firstUpdated(props) {
62
+ super.firstUpdated(props);
63
+ if (this.opened)
64
+ this.show();
65
+ }
66
+ disconnectedCallback() {
67
+ var _a;
68
+ super.disconnectedCallback();
69
+ (_a = this._$parentDetails) === null || _a === void 0 ? void 0 : _a.removeEventListener(DETAILS_EVENTS.update, this._syncWithParentDetails);
70
+ }
71
+ show() {
72
+ this._handleSingleModeConstraint();
73
+ const $details = this._detailsRef.value;
74
+ if (!$details)
75
+ return;
76
+ this._clearPendingAnimations();
77
+ $details.setAttribute('open', '');
78
+ this._animationFrameId = requestAnimationFrame(() => {
79
+ $details.classList.add(DETAILS_CSS_CLASSES.open);
80
+ this._animationFrameId = null;
81
+ });
82
+ this._dispatchToggleEvent($details, true);
83
+ }
84
+ hide() {
85
+ const $details = this._detailsRef.value;
86
+ if (!$details)
87
+ return;
88
+ this._clearPendingAnimations();
89
+ $details.classList.remove(DETAILS_CSS_CLASSES.open);
90
+ this._closeTimeoutId = setTimeout(() => {
91
+ $details.removeAttribute('open');
92
+ this._closeTimeoutId = null;
93
+ }, DETAILS_ANIMATION_DURATION);
94
+ this._dispatchToggleEvent($details, false);
95
+ }
96
+ _clearPendingAnimations() {
97
+ if (this._animationFrameId !== null) {
98
+ cancelAnimationFrame(this._animationFrameId);
99
+ this._animationFrameId = null;
100
+ }
101
+ if (this._closeTimeoutId !== null) {
102
+ clearTimeout(this._closeTimeoutId);
103
+ this._closeTimeoutId = null;
104
+ }
105
+ }
106
+ _dispatchToggleEvent($details, open) {
107
+ this.emitCustomEvent(DETAILS_EVENTS.toggle, {
108
+ detail: { open, target: $details }
109
+ });
110
+ }
111
+ toggle() {
112
+ this._handleSingleModeConstraint();
113
+ const $details = this._detailsRef.value;
114
+ if (!$details)
115
+ return;
116
+ const isOpen = $details.hasAttribute('open');
117
+ isOpen ? this.hide() : this.show();
118
+ }
119
+ _handleSingleModeConstraint() {
120
+ if (this._mode === DETAILS_MODE.single) {
121
+ this._hideOtherDetailsGroups();
122
+ }
123
+ }
124
+ enable() {
125
+ if (!this._isDisabled)
126
+ return;
127
+ this._isDisabled = false;
128
+ this.hide();
129
+ }
130
+ disable() {
131
+ if (this._isDisabled)
132
+ return;
133
+ this._isDisabled = true;
134
+ this.show();
135
+ }
136
+ notify() { }
137
+ render() {
138
+ return html `
139
+ <details
140
+ ${ref(this._detailsRef)}
141
+ class="details__details ${this._isDisabled ? 'details__details_disabled' : ''}"
142
+ aria-disabled="${this._isDisabled ? 'true' : 'false'}"
143
+ aria-labelledby="${this._togglerId}"
144
+ >
145
+ <summary
146
+ class="details__summary"
147
+ id="${this._togglerId}"
148
+ @click=${this._summaryClickHandler}
149
+ >
150
+ ${this.getSlot('toggler')}
151
+ </summary>
152
+
153
+ ${this.getSlot('content')}
154
+ </details>
155
+ `;
156
+ }
157
+ };
158
+ __decorate([
159
+ property({ type: Boolean, reflect: true }),
160
+ __metadata("design:type", Object)
161
+ ], HDetailsGroup.prototype, "opened", void 0);
162
+ __decorate([
163
+ state(),
164
+ __metadata("design:type", Object)
165
+ ], HDetailsGroup.prototype, "_isDisabled", void 0);
166
+ __decorate([
167
+ state(),
168
+ __metadata("design:type", String)
169
+ ], HDetailsGroup.prototype, "_mode", void 0);
170
+ HDetailsGroup = __decorate([
171
+ phoenixCustomElement('h-details-group')
172
+ ], HDetailsGroup);
173
+
174
+ export { HDetailsGroup };
175
+ //# sourceMappingURL=details_group.js.map
@@ -0,0 +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;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,4 @@
1
+ import { PhoenixLightLitElement } from "../../core/phoenix_light_lit_element/phoenix_light_lit_element";
2
+ export declare class HDetailsToggler extends PhoenixLightLitElement {
3
+ constructor();
4
+ }
@@ -0,0 +1,25 @@
1
+ import { __decorate, __metadata } from '../../../../../external/tslib/tslib.es6.js';
2
+ import { UiDomUtils } from '@dreamcommerce/utilities';
3
+ import { PhoenixLightLitElement } from '../../core/phoenix_light_lit_element/phoenix_light_lit_element.js';
4
+ import { phoenixCustomElement } from '../../core/decorators/phoenix_custom_element.js';
5
+ import { HDetailsGroup } from './details_group.js';
6
+
7
+ let HDetailsToggler = class HDetailsToggler extends PhoenixLightLitElement {
8
+ constructor() {
9
+ super();
10
+ if (this.parentElement instanceof HDetailsGroup) {
11
+ this.slot = this.hasAttribute('slot') ? this.slot : 'toggler';
12
+ }
13
+ else {
14
+ const contentToSlot = UiDomUtils.findParentByCondition(this, ($el) => $el.parentElement instanceof HDetailsGroup);
15
+ contentToSlot === null || contentToSlot === void 0 ? void 0 : contentToSlot.setAttribute('slot', 'toggler');
16
+ }
17
+ }
18
+ };
19
+ HDetailsToggler = __decorate([
20
+ phoenixCustomElement('h-details-toggler'),
21
+ __metadata("design:paramtypes", [])
22
+ ], HDetailsToggler);
23
+
24
+ export { HDetailsToggler };
25
+ //# sourceMappingURL=details_toggler.js.map
@@ -0,0 +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;"}
@@ -0,0 +1,35 @@
1
+ import { DETAILS_MODE } from './details_constants';
2
+ import { Any } from 'ts-toolbelt';
3
+ import { HDetails } from './details';
4
+ import { HDetailsContent } from "./details_content";
5
+ import { HDetailsGroup } from "./details_group";
6
+ import { HDetailsToggler } from "./details_toggler";
7
+ export interface IDetails {
8
+ enable(): void;
9
+ disable(): void;
10
+ notify(): void;
11
+ }
12
+ export interface IDetailsGroup {
13
+ show(): void;
14
+ hide(): void;
15
+ toggle(): void;
16
+ }
17
+ export declare type TDetailsMode = Any.Keys<typeof DETAILS_MODE>;
18
+ export declare type TDetailsProps = {
19
+ disabled: boolean;
20
+ mode: TDetailsMode;
21
+ };
22
+ export declare type TDetailsGroupProps = {
23
+ opened: boolean;
24
+ disabled: boolean;
25
+ regionId: string;
26
+ controlsId: string;
27
+ };
28
+ declare global {
29
+ interface HTMLElementTagNameMap {
30
+ 'h-details': HDetails;
31
+ 'h-details-group': HDetailsGroup;
32
+ 'h-details-toggler': HDetailsToggler;
33
+ 'h-details-content': HDetailsContent;
34
+ }
35
+ }
@@ -0,0 +1,7 @@
1
+ import './details_constants';
2
+ import 'ts-toolbelt';
3
+ import './details';
4
+ import '@phoenixRoot/components/details/details_content';
5
+ import '@phoenixRoot/components/details/details_group';
6
+ import '@phoenixRoot/components/details/details_toggler';
7
+ //# sourceMappingURL=details_types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"details_types.js","sourceRoot":"","sources":["../../../../../../../src/components/details/details_types.ts"],"names":[],"mappings":"AAAA,OAA6B,qBAAqB,CAAC;AACnD,OAAoB,aAAa,CAAC;AAClC,OAAyB,WAAW,CAAC;AACrC,OAAgC,iDAAiD,CAAC;AAClF,OAA8B,+CAA+C,CAAC;AAC9E,OAAgC,iDAAiD,CAAC"}
@@ -147,5 +147,11 @@ export { NavigatorShare } from './components/navigator/navigator_share/navigator
147
147
  export { NavigatorController } from './components/navigator/navigator_controller/navigator_controller';
148
148
  export { HShowMore } from './components/show-more/show_more';
149
149
  export { HShowMoreButton } from './components/show-more/show_more_button';
150
+ export { HDetails } from './components/details/details';
151
+ export { HDetailsGroup } from './components/details/details_group';
152
+ export { HDetailsToggler } from './components/details/details_toggler';
153
+ export { HDetailsContent } from './components/details/details_content';
154
+ export * from './components/details/details_constants';
155
+ export * from './components/details/details_types';
150
156
  export { BehaviorSubject } from './core/classes/behavior_subject/behavior_subject';
151
157
  export { phoenixCustomElement } from './core/decorators/phoenix_custom_element';
@@ -129,4 +129,9 @@ export { HToggleBtn } from './components/toggle/toggle_button.js';
129
129
  export { NavigatorShare } from './components/navigator/navigator_share/navigator_share.js';
130
130
  export { NavigatorController } from './components/navigator/navigator_controller/navigator_controller.js';
131
131
  export { HShowMore } from './components/show-more/show_more.js';
132
+ export { DETAILS_ANIMATION_DURATION, DETAILS_CSS_CLASSES, DETAILS_EVENTS, DETAILS_MODE } from './components/details/details_constants.js';
133
+ export { HDetails } from './components/details/details.js';
134
+ export { HDetailsGroup } from './components/details/details_group.js';
135
+ export { HDetailsToggler } from './components/details/details_toggler.js';
136
+ export { HDetailsContent } from './components/details/details_content.js';
132
137
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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-8",
5
+ "version": "1.18.10-9",
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-2",
34
+ "@dreamcommerce/utilities": "^1.23.2-3",
35
35
  "@shoper/jest_config": "^0.0.0",
36
36
  "@shoper/tsconfig": "^0.0.0",
37
37
  "@splidejs/splide": "4.0.7",