@shoper/phoenix_design_system 1.18.8 → 1.18.10-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/build/cjs/packages/phoenix/src/components/accordion/accordion.js +6 -19
  2. package/build/cjs/packages/phoenix/src/components/accordion/accordion.js.map +1 -1
  3. package/build/cjs/packages/phoenix/src/components/accordion/accordion_constants.js +8 -6
  4. package/build/cjs/packages/phoenix/src/components/accordion/accordion_constants.js.map +1 -1
  5. package/build/cjs/packages/phoenix/src/components/accordion/accordion_content.js +2 -125
  6. package/build/cjs/packages/phoenix/src/components/accordion/accordion_content.js.map +1 -1
  7. package/build/cjs/packages/phoenix/src/components/accordion/accordion_group.js +105 -88
  8. package/build/cjs/packages/phoenix/src/components/accordion/accordion_group.js.map +1 -1
  9. package/build/cjs/packages/phoenix/src/components/accordion/accordion_toggler.js +1 -41
  10. package/build/cjs/packages/phoenix/src/components/accordion/accordion_toggler.js.map +1 -1
  11. package/build/cjs/packages/phoenix/src/components/form/select/model/select_option.js +2 -1
  12. package/build/cjs/packages/phoenix/src/components/form/select/model/select_option.js.map +1 -1
  13. package/build/cjs/packages/phoenix/src/components/form/select/model/select_option_mapper.js +3 -2
  14. package/build/cjs/packages/phoenix/src/components/form/select/model/select_option_mapper.js.map +1 -1
  15. package/build/cjs/packages/phoenix/src/components/form/select/select.js +87 -14
  16. package/build/cjs/packages/phoenix/src/components/form/select/select.js.map +1 -1
  17. package/build/cjs/packages/phoenix/src/components/form/select/select_utils.js +22 -2
  18. package/build/cjs/packages/phoenix/src/components/form/select/select_utils.js.map +1 -1
  19. package/build/cjs/packages/phoenix/src/components/messages/base_message.js +1 -1
  20. package/build/cjs/packages/phoenix/src/index.js +9 -6
  21. package/build/cjs/packages/phoenix/src/index.js.map +1 -1
  22. package/build/esm/packages/phoenix/src/components/accordion/accordion.d.ts +1 -5
  23. package/build/esm/packages/phoenix/src/components/accordion/accordion.js +7 -20
  24. package/build/esm/packages/phoenix/src/components/accordion/accordion.js.map +1 -1
  25. package/build/esm/packages/phoenix/src/components/accordion/accordion_constants.d.ts +4 -3
  26. package/build/esm/packages/phoenix/src/components/accordion/accordion_constants.js +7 -6
  27. package/build/esm/packages/phoenix/src/components/accordion/accordion_constants.js.map +1 -1
  28. package/build/esm/packages/phoenix/src/components/accordion/accordion_content.d.ts +0 -23
  29. package/build/esm/packages/phoenix/src/components/accordion/accordion_content.js +2 -125
  30. package/build/esm/packages/phoenix/src/components/accordion/accordion_content.js.map +1 -1
  31. package/build/esm/packages/phoenix/src/components/accordion/accordion_group.d.ts +12 -14
  32. package/build/esm/packages/phoenix/src/components/accordion/accordion_group.js +106 -89
  33. package/build/esm/packages/phoenix/src/components/accordion/accordion_group.js.map +1 -1
  34. package/build/esm/packages/phoenix/src/components/accordion/accordion_toggler.d.ts +0 -8
  35. package/build/esm/packages/phoenix/src/components/accordion/accordion_toggler.js +1 -41
  36. package/build/esm/packages/phoenix/src/components/accordion/accordion_toggler.js.map +1 -1
  37. package/build/esm/packages/phoenix/src/components/accordion/accordion_types.d.ts +0 -10
  38. package/build/esm/packages/phoenix/src/components/form/select/model/select_option.d.ts +1 -0
  39. package/build/esm/packages/phoenix/src/components/form/select/model/select_option.js +2 -1
  40. package/build/esm/packages/phoenix/src/components/form/select/model/select_option.js.map +1 -1
  41. package/build/esm/packages/phoenix/src/components/form/select/model/select_option_mapper.js +3 -2
  42. package/build/esm/packages/phoenix/src/components/form/select/model/select_option_mapper.js.map +1 -1
  43. package/build/esm/packages/phoenix/src/components/form/select/model/select_option_types.d.ts +1 -0
  44. package/build/esm/packages/phoenix/src/components/form/select/select.d.ts +5 -0
  45. package/build/esm/packages/phoenix/src/components/form/select/select.js +87 -14
  46. package/build/esm/packages/phoenix/src/components/form/select/select.js.map +1 -1
  47. package/build/esm/packages/phoenix/src/components/form/select/select_utils.d.ts +1 -0
  48. package/build/esm/packages/phoenix/src/components/form/select/select_utils.js +22 -2
  49. package/build/esm/packages/phoenix/src/components/form/select/select_utils.js.map +1 -1
  50. package/build/esm/packages/phoenix/src/components/messages/base_message.js +1 -1
  51. package/build/esm/packages/phoenix/src/index.d.ts +1 -0
  52. package/build/esm/packages/phoenix/src/index.js +3 -2
  53. package/build/esm/packages/phoenix/src/index.js.map +1 -1
  54. package/package.json +2 -2
@@ -1,140 +1,17 @@
1
1
  import { __decorate, __metadata } from '../../../../../external/tslib/tslib.es6.js';
2
- import 'lit';
3
- import { property } from 'lit/decorators';
4
2
  import { PhoenixLightLitElement } from '../../core/phoenix_light_lit_element/phoenix_light_lit_element.js';
5
3
  import { phoenixCustomElement } from '../../core/decorators/phoenix_custom_element.js';
6
- import { Observer } from '../../core/classes/observer/observer.js';
7
- import { ContextConsumerController } from '../../core/context/context_consumer_controller.js';
8
- import { ACCORDION_CONTEXTS } from './accordion_constants.js';
9
- import { TransitionController } from '../../controllers/transition_controller/transition_controller.js';
10
4
 
11
- const RESIZE_DEBOUNCE_MS = 150;
12
- const MUTATION_DEBOUNCE_MS = 100;
13
5
  let HAccordionContent = class HAccordionContent extends PhoenixLightLitElement {
14
6
  constructor() {
15
7
  super();
16
- this.transitionName = 'accordion-toggle';
17
- this._resizeDebounceTimer = null;
18
- this._mutationDebounceTimer = null;
19
- this._mutationObserver = null;
20
- this._handleResize = () => {
21
- if (this._resizeDebounceTimer !== null) {
22
- window.cancelAnimationFrame(this._resizeDebounceTimer);
23
- }
24
- this._resizeDebounceTimer = window.requestAnimationFrame(() => {
25
- setTimeout(() => {
26
- this._setStylingOptions();
27
- }, RESIZE_DEBOUNCE_MS);
28
- });
29
- };
30
- this._setStylingOptions = () => {
31
- requestAnimationFrame(() => {
32
- const previousDisplay = this.style.display;
33
- this.style.setProperty('display', 'block', 'important');
34
- this.style.height = 'auto';
35
- requestAnimationFrame(() => {
36
- this._setOriginalHeightValue();
37
- this.style.display = previousDisplay;
38
- this.style.height = this.hidden ? '0px' : this._originalHeight;
39
- });
40
- });
41
- };
42
- this._handleMutation = () => {
43
- if (this._mutationDebounceTimer !== null) {
44
- window.clearTimeout(this._mutationDebounceTimer);
45
- }
46
- this._mutationDebounceTimer = window.setTimeout(() => {
47
- requestAnimationFrame(() => {
48
- this.style.height = 'auto';
49
- requestAnimationFrame(() => {
50
- this._setOriginalHeightValue();
51
- if (this.hidden) {
52
- this.style.height = '0px';
53
- }
54
- else {
55
- this.style.height = this._originalHeight;
56
- }
57
- });
58
- });
59
- }, MUTATION_DEBOUNCE_MS);
60
- };
61
- this._setOriginalHeightValue = () => {
62
- const newHeight = this.getBoundingClientRect().height;
63
- if (newHeight !== 0 || this.children.length === 0) {
64
- this._originalHeight = `${newHeight}px`;
65
- }
66
- };
67
- this._expand = () => {
68
- this._setHeight(this._originalHeight);
69
- };
70
- this._handleTransitionEnd = (e) => {
71
- if (e.propertyName !== 'height' || e.target !== this) {
72
- return;
73
- }
74
- if (!this.hidden && this.style.height !== '0px') {
75
- this.style.height = 'auto';
76
- }
77
- };
78
- this._collapse = () => {
79
- const currentHeight = this.getBoundingClientRect().height;
80
- this._setHeight(`${currentHeight}px`);
81
- requestAnimationFrame(() => {
82
- requestAnimationFrame(() => {
83
- this._setHeight('0px');
84
- });
85
- });
86
- };
87
- this.setAttribute('role', 'region');
88
- this._boundHandleTransitionEnd = this._handleTransitionEnd.bind(this);
8
+ this.slot = this.hasAttribute('slot') ? this.slot : 'content';
89
9
  }
90
10
  connectedCallback() {
91
11
  super.connectedCallback();
92
- this._contextConsumer = new ContextConsumerController(this);
93
- this._transitionController = new TransitionController(this, this.transitionName);
94
- this._subscribeObserver();
95
- window.addEventListener('resize', this._handleResize, { passive: true });
96
- this.addEventListener('transitionend', this._boundHandleTransitionEnd);
97
- }
98
- firstUpdated(props) {
99
- super.firstUpdated(props);
100
- this._setStylingOptions();
101
- }
102
- async _subscribeObserver() {
103
- this._accordionGroupProps = await this._contextConsumer.consumeAsync(ACCORDION_CONTEXTS.accordionGroupProps);
104
- this._accordionGroupPropsObserver = new Observer((accordionProps) => {
105
- this._setAttributes(accordionProps);
106
- accordionProps.opened ? this._transitionController.show(this._expand) : this._transitionController.hide(this._collapse);
107
- });
108
- this._accordionGroupProps.subscribe(this._accordionGroupPropsObserver);
109
- this._mutationObserver = new MutationObserver(this._handleMutation);
110
- this._mutationObserver.observe(this, { childList: true, subtree: true });
111
- }
112
- _setHeight(height) {
113
- this.style.height = height;
114
- }
115
- _setAttributes({ regionId, controlsId }) {
116
- this.setAttribute('id', controlsId);
117
- this.setAttribute('labelledby', regionId);
118
- }
119
- disconnectedCallback() {
120
- var _a, _b;
121
- super.disconnectedCallback();
122
- (_a = this._accordionGroupProps) === null || _a === void 0 ? void 0 : _a.unsubscribe(this._accordionGroupPropsObserver);
123
- (_b = this._mutationObserver) === null || _b === void 0 ? void 0 : _b.disconnect();
124
- window.removeEventListener('resize', this._handleResize);
125
- this.removeEventListener('transitionend', this._boundHandleTransitionEnd);
126
- if (this._resizeDebounceTimer !== null) {
127
- window.cancelAnimationFrame(this._resizeDebounceTimer);
128
- }
129
- if (this._mutationDebounceTimer !== null) {
130
- window.clearTimeout(this._mutationDebounceTimer);
131
- }
12
+ this.classList.add('accordion-content');
132
13
  }
133
14
  };
134
- __decorate([
135
- property(),
136
- __metadata("design:type", Object)
137
- ], HAccordionContent.prototype, "transitionName", void 0);
138
15
  HAccordionContent = __decorate([
139
16
  phoenixCustomElement('h-accordion-content'),
140
17
  __metadata("design:paramtypes", [])
@@ -1 +1 @@
1
- {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA,uCAAuC,4CAAgD;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA,uCAAuC,4CAAgD;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -1,28 +1,26 @@
1
1
  import type { IAccordion, IAccordionGroup } from './accordion_types';
2
2
  import { PhoenixLightLitElement } from "../../core/phoenix_light_lit_element/phoenix_light_lit_element";
3
+ import { PropertyValues } from 'lit';
3
4
  export declare class HAccordionGroup extends PhoenixLightLitElement implements IAccordionGroup, IAccordion {
4
5
  opened: boolean;
5
6
  private _isDisabled;
6
- private _regionId;
7
- private _controlsId;
8
7
  private _mode;
9
- private _accordionGroupPropsSubject;
10
- private _accordionGroupContext;
11
- private _accordionContextConsumer;
12
- private _accordionProps;
13
- private _accordionPropsObserver;
14
- constructor();
8
+ private _$parentAccordion;
9
+ private _detailsRef;
10
+ private _togglerId;
15
11
  connectedCallback(): void;
16
- private _subscribeObserver;
12
+ firstUpdated(props: PropertyValues): void;
17
13
  disconnectedCallback(): void;
14
+ private _syncWithParentAccordion;
15
+ private _handleSingleModeConstraint;
16
+ toggle(): void;
18
17
  show(): void;
19
18
  hide(): void;
20
- toggle(): void;
19
+ private _hideOtherDetailsGroups;
20
+ private _dispatchToggleEvent;
21
21
  enable(): void;
22
22
  disable(): void;
23
- private _accordionToggle;
24
- private _closeOtherAccordionGroups;
25
23
  notify(): void;
26
- protected updated(_changedProperties: Map<string, unknown>): void;
27
- private _getProps;
24
+ private _summaryClickHandler;
25
+ protected render(): unknown;
28
26
  }
@@ -1,109 +1,135 @@
1
1
  import { __decorate, __metadata } from '../../../../../external/tslib/tslib.es6.js';
2
+ import { html } from 'lit';
2
3
  import { property, state } from 'lit/decorators';
3
4
  import { PhoenixLightLitElement } from '../../core/phoenix_light_lit_element/phoenix_light_lit_element.js';
4
5
  import { phoenixCustomElement } from '../../core/decorators/phoenix_custom_element.js';
5
- import { Observer } from '../../core/classes/observer/observer.js';
6
- import { ContextConsumerController } from '../../core/context/context_consumer_controller.js';
7
- import { BehaviorSubject } from '../../core/classes/behavior_subject/behavior_subject.js';
8
- import { ContextProviderController } from '../../core/context/context_provider_controller.js';
9
- import { ACCORDION_MODE, ACCORDION_CONTEXTS, ACCORDION_EVENTS } from './accordion_constants.js';
6
+ import v4 from '../../../../../external/uuid/dist/esm-browser/v4.js';
7
+ import { ACCORDION_MODE, ACCORDION_EVENTS, ACCORDION_CSS_CLASSES, ACCORDION_ANIMATION_DURATION } from './accordion_constants.js';
8
+ import { createRef, ref } from 'lit/directives/ref';
10
9
 
11
10
  let HAccordionGroup = class HAccordionGroup extends PhoenixLightLitElement {
12
11
  constructor() {
13
- super();
12
+ super(...arguments);
14
13
  this.opened = false;
15
14
  this._isDisabled = false;
16
- this._regionId = typeof self.crypto.randomUUID === 'function' ? self.crypto.randomUUID() : (Math.random() + 1).toString(36).substring(3);
17
- this._controlsId = typeof self.crypto.randomUUID === 'function' ? self.crypto.randomUUID() : (Math.random() + 1).toString(36).substring(3);
18
15
  this._mode = ACCORDION_MODE.multi;
19
- this._accordionToggle = () => {
20
- this.toggle();
16
+ this._$parentAccordion = null;
17
+ this._detailsRef = createRef();
18
+ this._togglerId = v4();
19
+ this._syncWithParentAccordion = () => {
20
+ if (!this._$parentAccordion)
21
+ return;
22
+ this._mode = this._$parentAccordion.mode;
23
+ const shouldBeDisabled = this._$parentAccordion.disabled;
24
+ const hasDisabledStateChanged = shouldBeDisabled !== this._isDisabled;
25
+ if (hasDisabledStateChanged) {
26
+ shouldBeDisabled ? this.disable() : this.enable();
27
+ }
28
+ };
29
+ this._hideOtherDetailsGroups = () => {
30
+ var _a;
31
+ if (this._isDisabled)
32
+ return;
33
+ (_a = this._$parentAccordion) === null || _a === void 0 ? void 0 : _a.querySelectorAll('h-accordion-group').forEach(($accordionGroup) => {
34
+ if ($accordionGroup === this)
35
+ return;
36
+ $accordionGroup.hide();
37
+ });
38
+ };
39
+ this._summaryClickHandler = (ev) => {
40
+ ev.preventDefault();
41
+ if (!this._isDisabled)
42
+ this.toggle();
21
43
  };
22
- this._accordionGroupPropsSubject = new BehaviorSubject(this._getProps());
23
- this._accordionGroupContext = new ContextProviderController(this);
24
- this._accordionGroupContext.provide(ACCORDION_CONTEXTS.accordionGroupProps, this._accordionGroupPropsSubject);
25
- this.setAttribute('role', 'none');
26
44
  }
27
45
  connectedCallback() {
46
+ var _a;
28
47
  super.connectedCallback();
29
- this._accordionContextConsumer = new ContextConsumerController(this);
30
- this._subscribeObserver();
31
- this.addEventListener(ACCORDION_EVENTS.toggle, this._accordionToggle);
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();
32
51
  }
33
- async _subscribeObserver() {
34
- this._accordionProps = await this._accordionContextConsumer.consumeAsync(ACCORDION_CONTEXTS.accordionProps);
35
- this._accordionPropsObserver = new Observer((accordionProps) => {
36
- this._mode = accordionProps.mode;
37
- const hasAccordionBeenDisabled = accordionProps.disabled;
38
- if (hasAccordionBeenDisabled) {
39
- this.disable();
40
- return;
41
- }
42
- const hasAccordionBeenEnabled = accordionProps.disabled === false;
43
- if (hasAccordionBeenEnabled) {
44
- this.enable();
45
- return;
46
- }
47
- });
48
- this._accordionProps.subscribe(this._accordionPropsObserver);
52
+ firstUpdated(props) {
53
+ super.firstUpdated(props);
54
+ if (this.opened)
55
+ this.show();
49
56
  }
50
57
  disconnectedCallback() {
51
- this._accordionProps.unsubscribe(this._accordionPropsObserver);
52
- this.removeEventListener(ACCORDION_EVENTS.toggle, this._accordionToggle);
58
+ var _a;
59
+ 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();
65
+ }
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();
53
74
  }
54
75
  show() {
55
- if (this._mode === ACCORDION_MODE.single)
56
- this._closeOtherAccordionGroups();
57
- this.opened = true;
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);
58
85
  }
59
86
  hide() {
60
- this.opened = false;
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);
61
95
  }
62
- toggle() {
63
- if (this._mode === ACCORDION_MODE.single)
64
- this._closeOtherAccordionGroups();
65
- this.opened = !this.opened;
96
+ _dispatchToggleEvent($details, open) {
97
+ this.emitCustomEvent(ACCORDION_EVENTS.toggle, {
98
+ detail: { open, target: $details }
99
+ });
66
100
  }
67
101
  enable() {
68
- if (this._isDisabled) {
69
- this.addEventListener(ACCORDION_EVENTS.toggle, this._accordionToggle);
70
- this.hide();
71
- this._isDisabled = false;
72
- }
102
+ if (!this._isDisabled)
103
+ return;
104
+ this._isDisabled = false;
105
+ this.hide();
73
106
  }
74
107
  disable() {
75
- if (!this._isDisabled) {
76
- this.removeEventListener(ACCORDION_EVENTS.toggle, this._accordionToggle);
77
- this.show();
78
- this._isDisabled = true;
79
- }
80
- }
81
- _closeOtherAccordionGroups() {
82
- if (!this._isDisabled) {
83
- const $accordion = this.closest('h-accordion');
84
- const $accordionGroups = [...$accordion.querySelectorAll('h-accordion-group')];
85
- const $otherAccordionGroupsWithinAccordion = $accordionGroups.filter(($accordionGroup) => $accordionGroup !== this);
86
- $otherAccordionGroupsWithinAccordion.forEach(($accordionGroup) => $accordionGroup.hide());
87
- }
88
- }
89
- notify() {
90
- this._accordionGroupPropsSubject.notify(this._getProps());
91
- }
92
- updated(_changedProperties) {
93
- if (_changedProperties.has('opened') ||
94
- _changedProperties.has('_isDisabled') ||
95
- _changedProperties.has('_regionId') ||
96
- _changedProperties.has('_controlsId')) {
97
- this.notify();
98
- }
108
+ if (this._isDisabled)
109
+ return;
110
+ this._isDisabled = true;
111
+ this.show();
99
112
  }
100
- _getProps() {
101
- return {
102
- opened: this.opened,
103
- disabled: this._isDisabled,
104
- regionId: this._regionId,
105
- controlsId: this._controlsId
106
- };
113
+ notify() { }
114
+ render() {
115
+ return html `
116
+ <details
117
+ ${ref(this._detailsRef)}
118
+ class="accordion__details ${this._isDisabled ? 'accordion__details_disabled' : ''}"
119
+ aria-disabled="${this._isDisabled ? 'true' : 'false'}"
120
+ aria-labelledby="${this._togglerId}"
121
+ >
122
+ <summary
123
+ class="accordion__summary"
124
+ id="${this._togglerId}"
125
+ @click=${this._summaryClickHandler}
126
+ >
127
+ ${this.getSlot('toggler')}
128
+ </summary>
129
+
130
+ ${this.getSlot('content')}
131
+ </details>
132
+ `;
107
133
  }
108
134
  };
109
135
  __decorate([
@@ -114,21 +140,12 @@ __decorate([
114
140
  state(),
115
141
  __metadata("design:type", Object)
116
142
  ], HAccordionGroup.prototype, "_isDisabled", void 0);
117
- __decorate([
118
- state(),
119
- __metadata("design:type", Object)
120
- ], HAccordionGroup.prototype, "_regionId", void 0);
121
- __decorate([
122
- state(),
123
- __metadata("design:type", Object)
124
- ], HAccordionGroup.prototype, "_controlsId", void 0);
125
143
  __decorate([
126
144
  state(),
127
145
  __metadata("design:type", String)
128
146
  ], HAccordionGroup.prototype, "_mode", void 0);
129
147
  HAccordionGroup = __decorate([
130
- phoenixCustomElement('h-accordion-group'),
131
- __metadata("design:paramtypes", [])
148
+ phoenixCustomElement('h-accordion-group')
132
149
  ], HAccordionGroup);
133
150
 
134
151
  export { HAccordionGroup };
@@ -1 +1 @@
1
- {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA,uCAAuC,4CAAgD;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA,uCAAuC,4CAAgD;AACvF;AACA;AACA;AACA;AACA,eAAe,qDAAyD;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -1,12 +1,4 @@
1
1
  import { PhoenixLightLitElement } from "../../core/phoenix_light_lit_element/phoenix_light_lit_element";
2
2
  export declare class HAccordionToggler extends PhoenixLightLitElement {
3
- private _contextConsumer;
4
- private _accordionGroupProps;
5
- private _accordionGroupPropsObserver;
6
3
  constructor();
7
- connectedCallback(): Promise<void>;
8
- private _setAttributes;
9
- private _emitTogglerClickedWithKeyboard;
10
- private _emitTogglerClicked;
11
- disconnectedCallback(): void;
12
4
  }
@@ -1,51 +1,11 @@
1
1
  import { __decorate, __metadata } from '../../../../../external/tslib/tslib.es6.js';
2
2
  import { PhoenixLightLitElement } from '../../core/phoenix_light_lit_element/phoenix_light_lit_element.js';
3
3
  import { phoenixCustomElement } from '../../core/decorators/phoenix_custom_element.js';
4
- import { Observer } from '../../core/classes/observer/observer.js';
5
- import { ContextConsumerController } from '../../core/context/context_consumer_controller.js';
6
- import { ACCORDION_EVENTS, ACCORDION_CONTEXTS } from './accordion_constants.js';
7
4
 
8
5
  let HAccordionToggler = class HAccordionToggler extends PhoenixLightLitElement {
9
6
  constructor() {
10
7
  super();
11
- this._emitTogglerClickedWithKeyboard = (ev) => {
12
- if (ev.key !== ' ' && ev.key !== 'Enter')
13
- return;
14
- if (this.getAttribute('aria-disabled') === 'true')
15
- return;
16
- this._emitTogglerClicked();
17
- };
18
- this._emitTogglerClicked = () => {
19
- this.emitCustomEvent(ACCORDION_EVENTS.toggle);
20
- };
21
- this._contextConsumer = new ContextConsumerController(this);
22
- }
23
- async connectedCallback() {
24
- super.connectedCallback();
25
- this._accordionGroupProps = await this._contextConsumer.consumeAsync(ACCORDION_CONTEXTS.accordionGroupProps);
26
- this._accordionGroupPropsObserver = new Observer((accordionProps) => this._setAttributes(accordionProps));
27
- this._accordionGroupProps.subscribe(this._accordionGroupPropsObserver);
28
- this.addEventListener('click', this._emitTogglerClicked);
29
- this.addEventListener('keydown', this._emitTogglerClickedWithKeyboard);
30
- }
31
- _setAttributes({ regionId, opened, controlsId, disabled }) {
32
- this.setAttribute('id', regionId);
33
- this.setAttribute('aria-expanded', opened ? 'true' : 'false');
34
- this.setAttribute('aria-controls', controlsId);
35
- this.setAttribute('aria-disabled', disabled ? 'true' : 'false');
36
- if (disabled) {
37
- this.removeAttribute('role');
38
- this.setAttribute('tabindex', '-1');
39
- }
40
- else {
41
- this.setAttribute('role', 'button');
42
- this.setAttribute('tabindex', '0');
43
- }
44
- }
45
- disconnectedCallback() {
46
- if (this._accordionGroupProps) {
47
- this._accordionGroupProps.unsubscribe(this._accordionGroupPropsObserver);
48
- }
8
+ this.slot = this.hasAttribute('slot') ? this.slot : 'toggler';
49
9
  }
50
10
  };
51
11
  HAccordionToggler = __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA,uCAAuC,4CAAgD;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA,uCAAuC,4CAAgD;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -15,16 +15,6 @@ 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
- };
28
18
  declare global {
29
19
  interface HTMLElementTagNameMap {
30
20
  'h-accordion': HAccordion;
@@ -6,6 +6,7 @@ export declare class SelectOption {
6
6
  inactive: boolean;
7
7
  hidden: boolean;
8
8
  content: string;
9
+ isPlaceholder: boolean;
9
10
  private constructor();
10
11
  static create(options: TSelectOptionConstructorOptions): SelectOption;
11
12
  }
@@ -1,11 +1,12 @@
1
1
  class SelectOption {
2
- constructor({ selected = false, hidden = false, disabled = false, value, content, inactive = false }) {
2
+ constructor({ selected = false, hidden = false, disabled = false, value, content, inactive = false, isPlaceholder = false }) {
3
3
  this.value = value;
4
4
  this.selected = selected;
5
5
  this.hidden = hidden;
6
6
  this.disabled = disabled;
7
7
  this.content = content;
8
8
  this.inactive = inactive;
9
+ this.isPlaceholder = isPlaceholder;
9
10
  }
10
11
  static create(options) {
11
12
  return new SelectOption(options);
@@ -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;"}
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;"}
@@ -6,7 +6,7 @@ class SelectOptionMapper {
6
6
  const $optionContent = $option.querySelector(SELECT_RELATED_COMPONENTS_NAMES.optionContent);
7
7
  const optionContentText = ($optionContent === null || $optionContent === void 0 ? void 0 : $optionContent.textContent) || ($optionContent === null || $optionContent === void 0 ? void 0 : $optionContent.innerText);
8
8
  const value = $option.getAttribute('value');
9
- if (!value)
9
+ if (value === null || value === undefined)
10
10
  throw new Error('h-option must contain a unique value');
11
11
  if (!optionContentText)
12
12
  throw new Error('h-options must contains a h-option-content element inside');
@@ -16,7 +16,8 @@ class SelectOptionMapper {
16
16
  hidden: $option.hasAttribute('hidden'),
17
17
  inactive: $option.hasAttribute('inactive'),
18
18
  content: optionContentText,
19
- selected: $option.hasAttribute('selected')
19
+ selected: $option.hasAttribute('selected'),
20
+ isPlaceholder: $option.hasAttribute('placeholder')
20
21
  });
21
22
  }
22
23
  }
@@ -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;"}
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;"}
@@ -5,5 +5,6 @@ export declare type TSelectOption = {
5
5
  disabled?: boolean;
6
6
  hidden?: boolean;
7
7
  inactive?: boolean;
8
+ isPlaceholder?: boolean;
8
9
  };
9
10
  export declare type TSelectOptionConstructorOptions = TSelectOption;
@@ -23,6 +23,7 @@ export declare class HSelect extends PhoenixLightLitElement {
23
23
  optionsList?: TSelectOption[];
24
24
  noDeselect: boolean;
25
25
  assistiveTitleId: string;
26
+ isDevSelectPlaceholderFlagEnabled: boolean;
26
27
  translations: Record<string, string>;
27
28
  private _selectOptionsId;
28
29
  get selectedIndex(): number;
@@ -53,6 +54,10 @@ export declare class HSelect extends PhoenixLightLitElement {
53
54
  attributeChangedCallback(name: string, _old: string | null, value: string | null): void;
54
55
  private _updateOptions;
55
56
  private _getOptions;
57
+ private _addPlaceholderOptionIfNeeded;
58
+ private get _canAddPlaceholder();
59
+ private _createPlaceholderOption;
60
+ private _injectOptionIntoDOM;
56
61
  private _setupEvents;
57
62
  private _handleOptionDeselect;
58
63
  private _updateOptionsView;