@pushengineering/umg-web-components 3.2.21 → 3.2.23

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 (179) hide show
  1. package/dist/classes/event-manager/event-manager.js.map +1 -1
  2. package/dist/components/accordion/accordion.js +11 -11
  3. package/dist/components/accordion/accordion.js.map +1 -1
  4. package/dist/components/accordion-group/accordion-group.js +3 -3
  5. package/dist/components/accordion-group/accordion-group.js.map +1 -1
  6. package/dist/components/badge/badge.js +8 -8
  7. package/dist/components/badge/badge.js.map +1 -1
  8. package/dist/components/banner/banner.js +17 -17
  9. package/dist/components/banner/banner.js.map +1 -1
  10. package/dist/components/banner-image/banner-image.js +13 -13
  11. package/dist/components/banner-image/banner-image.js.map +1 -1
  12. package/dist/components/box/box.js +14 -14
  13. package/dist/components/box/box.js.map +1 -1
  14. package/dist/components/button/button.d.ts +2 -0
  15. package/dist/components/button/button.d.ts.map +1 -1
  16. package/dist/components/button/button.js +15 -15
  17. package/dist/components/button/button.js.map +1 -1
  18. package/dist/components/button/styles/button-outline.d.ts.map +1 -1
  19. package/dist/components/button/styles/button-outline.js +10 -27
  20. package/dist/components/button/styles/button-outline.js.map +1 -1
  21. package/dist/components/button-group/button-group.d.ts.map +1 -1
  22. package/dist/components/button-group/button-group.js +8 -6
  23. package/dist/components/button-group/button-group.js.map +1 -1
  24. package/dist/components/button-icon/button-icon.d.ts +2 -0
  25. package/dist/components/button-icon/button-icon.d.ts.map +1 -1
  26. package/dist/components/button-icon/button-icon.js +15 -15
  27. package/dist/components/button-icon/button-icon.js.map +1 -1
  28. package/dist/components/caption-card/caption-card.js +15 -15
  29. package/dist/components/caption-card/caption-card.js.map +1 -1
  30. package/dist/components/caption-card/card-popover.js +2 -2
  31. package/dist/components/caption-card/card-popover.js.map +1 -1
  32. package/dist/components/deferred-media/deferred-media.js +9 -9
  33. package/dist/components/deferred-media/deferred-media.js.map +1 -1
  34. package/dist/components/disclosure/disclosure.controller.d.ts +38 -0
  35. package/dist/components/disclosure/disclosure.controller.d.ts.map +1 -0
  36. package/dist/components/disclosure/disclosure.controller.js +173 -0
  37. package/dist/components/disclosure/disclosure.controller.js.map +1 -0
  38. package/dist/components/disclosure/disclosure.d.ts +21 -3
  39. package/dist/components/disclosure/disclosure.d.ts.map +1 -1
  40. package/dist/components/disclosure/disclosure.js +325 -129
  41. package/dist/components/disclosure/disclosure.js.map +1 -1
  42. package/dist/components/disclosure/disclosure.types.d.ts +8 -0
  43. package/dist/components/disclosure/disclosure.types.d.ts.map +1 -0
  44. package/dist/components/disclosure/index.d.ts +3 -1
  45. package/dist/components/disclosure/index.d.ts.map +1 -1
  46. package/dist/components/event-table/event-table.d.ts.map +1 -1
  47. package/dist/components/event-table/event-table.js +22 -9
  48. package/dist/components/event-table/event-table.js.map +1 -1
  49. package/dist/components/event-table/event.d.ts +8 -2
  50. package/dist/components/event-table/event.d.ts.map +1 -1
  51. package/dist/components/event-table/event.js +131 -20
  52. package/dist/components/event-table/event.js.map +1 -1
  53. package/dist/components/footer/footer.js +7 -7
  54. package/dist/components/footer/footer.js.map +1 -1
  55. package/dist/components/grid/grid-cell.js +1 -1
  56. package/dist/components/grid/grid-cell.js.map +1 -1
  57. package/dist/components/grid/grid.js +7 -7
  58. package/dist/components/grid/grid.js.map +1 -1
  59. package/dist/components/header/header.js +23 -23
  60. package/dist/components/header/header.js.map +1 -1
  61. package/dist/components/header-drawer/header-drawer.js +7 -7
  62. package/dist/components/header-drawer/header-drawer.js.map +1 -1
  63. package/dist/components/header-drawer/menu-drawer.js +5 -5
  64. package/dist/components/header-drawer/menu-drawer.js.map +1 -1
  65. package/dist/components/horizontal-stack/horizontal-stack.js +8 -8
  66. package/dist/components/horizontal-stack/horizontal-stack.js.map +1 -1
  67. package/dist/components/icon/icon.js +4 -4
  68. package/dist/components/icon/icon.js.map +1 -1
  69. package/dist/components/image/image.js +10 -10
  70. package/dist/components/image/image.js.map +1 -1
  71. package/dist/components/link/link.d.ts +2 -0
  72. package/dist/components/link/link.d.ts.map +1 -1
  73. package/dist/components/link/link.js +4 -4
  74. package/dist/components/link/link.js.map +1 -1
  75. package/dist/components/link-group/link-group.js +7 -7
  76. package/dist/components/link-group/link-group.js.map +1 -1
  77. package/dist/components/logo/logo.js +11 -11
  78. package/dist/components/logo/logo.js.map +1 -1
  79. package/dist/components/media-gallery/media-gallery.d.ts.map +1 -1
  80. package/dist/components/media-gallery/media-gallery.js +3 -3
  81. package/dist/components/media-gallery/media-gallery.js.map +1 -1
  82. package/dist/components/media-gallery/media.js +2 -2
  83. package/dist/components/media-gallery/media.js.map +1 -1
  84. package/dist/components/media-modal/media-modal.js +15 -15
  85. package/dist/components/media-modal/media-modal.js.map +1 -1
  86. package/dist/components/media-text/media-text.js +18 -18
  87. package/dist/components/media-text/media-text.js.map +1 -1
  88. package/dist/components/menu/menu.d.ts +4 -0
  89. package/dist/components/menu/menu.d.ts.map +1 -1
  90. package/dist/components/menu/menu.js +67 -21
  91. package/dist/components/menu/menu.js.map +1 -1
  92. package/dist/components/menu-bar/menu-bar.js +6 -6
  93. package/dist/components/menu-bar/menu-bar.js.map +1 -1
  94. package/dist/components/number-field/number-field.d.ts.map +1 -1
  95. package/dist/components/number-field/number-field.js +14 -15
  96. package/dist/components/number-field/number-field.js.map +1 -1
  97. package/dist/components/overlay/overlay.js +2 -2
  98. package/dist/components/overlay/overlay.js.map +1 -1
  99. package/dist/components/page/page.js +3 -3
  100. package/dist/components/page/page.js.map +1 -1
  101. package/dist/components/popover/popover.js +5 -5
  102. package/dist/components/popover/popover.js.map +1 -1
  103. package/dist/components/rich-text/rich-text.js +5 -5
  104. package/dist/components/rich-text/rich-text.js.map +1 -1
  105. package/dist/components/section/section-block.d.ts.map +1 -1
  106. package/dist/components/section/section-block.js +12 -12
  107. package/dist/components/section/section-block.js.map +1 -1
  108. package/dist/components/section/section.js +4 -4
  109. package/dist/components/section/section.js.map +1 -1
  110. package/dist/components/select/select.d.ts.map +1 -1
  111. package/dist/components/select/select.js +21 -21
  112. package/dist/components/select/select.js.map +1 -1
  113. package/dist/components/slider/slide.js +4 -4
  114. package/dist/components/slider/slide.js.map +1 -1
  115. package/dist/components/slider/slider-controls.js +13 -13
  116. package/dist/components/slider/slider-controls.js.map +1 -1
  117. package/dist/components/slider/slider.js +32 -32
  118. package/dist/components/slider/slider.js.map +1 -1
  119. package/dist/components/socials/socials.js +9 -9
  120. package/dist/components/socials/socials.js.map +1 -1
  121. package/dist/components/table/table.js +5 -5
  122. package/dist/components/table/table.js.map +1 -1
  123. package/dist/components/text/text.js +16 -16
  124. package/dist/components/text/text.js.map +1 -1
  125. package/dist/components/text-field/text-field.d.ts.map +1 -1
  126. package/dist/components/text-field/text-field.js +14 -14
  127. package/dist/components/text-field/text-field.js.map +1 -1
  128. package/dist/components/thumbnail-slider/thumbnail-slide.js +2 -2
  129. package/dist/components/thumbnail-slider/thumbnail-slide.js.map +1 -1
  130. package/dist/components/thumbnail-slider/thumbnail-slider.js +5 -5
  131. package/dist/components/thumbnail-slider/thumbnail-slider.js.map +1 -1
  132. package/dist/components/vertical-stack/vertical-stack.js +7 -7
  133. package/dist/components/vertical-stack/vertical-stack.js.map +1 -1
  134. package/dist/components/video/video.js +13 -13
  135. package/dist/components/video/video.js.map +1 -1
  136. package/dist/docs/disclosure/disclosure.stories.d.ts.map +1 -1
  137. package/dist/docs/event-table/event-table.stories.d.ts +3 -1
  138. package/dist/docs/event-table/event-table.stories.d.ts.map +1 -1
  139. package/dist/docs/menu/menu.stories.d.ts.map +1 -1
  140. package/dist/node_modules/.pnpm/{@rollup_plugin-typescript@11.1.6_rollup@4.30.1_tslib@2.8.1_typescript@5.7.3 → @rollup_plugin-typescript@11.1.6_rollup@4.55.1_tslib@2.8.1_typescript@5.9.3}/node_modules/tslib/tslib.es6.js.map +1 -1
  141. package/dist/scripts/mergeStyles.js.map +1 -1
  142. package/dist/scripts/polyfills/scrollyfills.js.map +1 -1
  143. package/dist/scripts/settings.js.map +1 -1
  144. package/dist/scripts/themeStyleSheet.js.map +1 -1
  145. package/dist/scripts/utilities/animate.d.ts +11 -0
  146. package/dist/scripts/utilities/animate.d.ts.map +1 -0
  147. package/dist/scripts/utilities/animate.js +28 -0
  148. package/dist/scripts/utilities/animate.js.map +1 -0
  149. package/dist/scripts/utilities/debounce.js.map +1 -1
  150. package/dist/scripts/utilities/paddingTransformations.js.map +1 -1
  151. package/dist/scripts/utilities/slot.d.ts +15 -0
  152. package/dist/scripts/utilities/slot.d.ts.map +1 -0
  153. package/dist/scripts/utilities/slot.js +46 -0
  154. package/dist/scripts/utilities/slot.js.map +1 -0
  155. package/dist/scripts/utilities/slotInitialised.js.map +1 -1
  156. package/dist/styles/button.d.ts.map +1 -1
  157. package/dist/styles/button.js +12 -40
  158. package/dist/styles/button.js.map +1 -1
  159. package/dist/styles/global.d.ts.map +1 -1
  160. package/dist/styles/global.js +4 -13
  161. package/dist/styles/global.js.map +1 -1
  162. package/dist/styles/group.js +4 -4
  163. package/dist/styles/icon-size.js.map +1 -1
  164. package/package.json +1 -1
  165. package/dist/components/event-table/event-content.d.ts +0 -8
  166. package/dist/components/event-table/event-content.d.ts.map +0 -1
  167. package/dist/components/event-table/event-content.js +0 -102
  168. package/dist/components/event-table/event-content.js.map +0 -1
  169. package/dist/components/event-table/event-date.d.ts +0 -6
  170. package/dist/components/event-table/event-date.d.ts.map +0 -1
  171. package/dist/components/event-table/event-date.js +0 -39
  172. package/dist/components/event-table/event-date.js.map +0 -1
  173. package/dist/components/media-modal/styles/content.d.ts +0 -2
  174. package/dist/components/media-modal/styles/content.d.ts.map +0 -1
  175. package/dist/components/media-modal/styles/content.js +0 -41
  176. package/dist/components/media-modal/styles/content.js.map +0 -1
  177. package/dist/node_modules/.pnpm/@rollup_plugin-typescript@11.1.6_rollup@4.16.1_tslib@2.6.2_typescript@5.4.5/node_modules/tslib/tslib.es6.js +0 -31
  178. package/dist/node_modules/.pnpm/@rollup_plugin-typescript@11.1.6_rollup@4.16.1_tslib@2.6.2_typescript@5.4.5/node_modules/tslib/tslib.es6.js.map +0 -1
  179. /package/dist/node_modules/.pnpm/{@rollup_plugin-typescript@11.1.6_rollup@4.30.1_tslib@2.8.1_typescript@5.7.3 → @rollup_plugin-typescript@11.1.6_rollup@4.55.1_tslib@2.8.1_typescript@5.9.3}/node_modules/tslib/tslib.es6.js +0 -0
@@ -1,13 +1,15 @@
1
- import { __decorate } from '../../node_modules/.pnpm/@rollup_plugin-typescript@11.1.6_rollup@4.30.1_tslib@2.8.1_typescript@5.7.3/node_modules/tslib/tslib.es6.js';
2
- import { css, LitElement, html } from 'lit';
1
+ import { __decorate } from '../../node_modules/.pnpm/@rollup_plugin-typescript@11.1.6_rollup@4.55.1_tslib@2.8.1_typescript@5.9.3/node_modules/tslib/tslib.es6.js';
2
+ import { css, LitElement, html, nothing } from 'lit';
3
3
  import { customElement } from 'lit/decorators/custom-element.js';
4
4
  import { classMap } from 'lit/directives/class-map.js';
5
5
  import { styleMap } from 'lit/directives/style-map.js';
6
6
  import { property } from 'lit/decorators/property.js';
7
7
  import { query } from 'lit/decorators/query.js';
8
+ import { stopAnimations, animateTo } from '../../scripts/utilities/animate.js';
8
9
  import { global } from '../../styles/global.js';
9
10
  import { settings } from '../../scripts/settings.js';
10
11
  import { mergeStyles } from '../../scripts/mergeStyles.js';
12
+ import { DisclosureController } from './disclosure.controller.js';
11
13
 
12
14
  const { prefix } = settings;
13
15
  let Disclosure = class Disclosure extends LitElement {
@@ -19,28 +21,196 @@ let Disclosure = class Disclosure extends LitElement {
19
21
  this.summaryWidth = 'fit-content';
20
22
  this.detailsWidth = 'fit-content';
21
23
  this.justify = 'start';
22
- this.mobileJustify = 'start';
24
+ this.iconPosition = 'right';
23
25
  this.iconAnimation = 'flip';
24
26
  this.border = false;
25
27
  this.open = false;
26
- this.disclosureOpen = () => {
28
+ this.controller = DisclosureController.getInstance();
29
+ this.isAnimating = false;
30
+ this.lastInteractionWasKeyboard = false;
31
+ this.disclosureOpen = async () => {
27
32
  this.open = true;
28
- this._details.setAttribute('open', '');
33
+ await new Promise((resolve) => {
34
+ requestAnimationFrame(() => resolve());
35
+ });
36
+ while (this.isAnimating) {
37
+ await new Promise((resolve) => {
38
+ requestAnimationFrame(() => resolve());
39
+ });
40
+ }
29
41
  };
30
- this.disclosureClose = () => {
42
+ this.disclosureClose = async () => {
31
43
  this.open = false;
32
- this._details.removeAttribute('open');
44
+ await new Promise((resolve) => {
45
+ requestAnimationFrame(() => resolve());
46
+ });
47
+ while (this.isAnimating) {
48
+ await new Promise((resolve) => {
49
+ requestAnimationFrame(() => resolve());
50
+ });
51
+ }
33
52
  };
34
53
  this.getDisclosureOpenState = () => {
35
54
  return this.open;
36
55
  };
56
+ this._handleKeyDown = () => {
57
+ this.lastInteractionWasKeyboard = true;
58
+ };
59
+ this._handleMouseDown = () => {
60
+ this.lastInteractionWasKeyboard = false;
61
+ };
62
+ this._handleTouchStart = () => {
63
+ this.lastInteractionWasKeyboard = false;
64
+ };
65
+ }
66
+ connectedCallback() {
67
+ super.connectedCallback();
68
+ if (this.groupId) {
69
+ this.controller.addHost(this);
70
+ this._registerWithGroup();
71
+ }
72
+ document.addEventListener('keydown', this._handleKeyDown, true);
73
+ document.addEventListener('mousedown', this._handleMouseDown, true);
74
+ document.addEventListener('touchstart', this._handleTouchStart, true);
75
+ }
76
+ disconnectedCallback() {
77
+ super.disconnectedCallback();
78
+ if (this.currentGroupId) {
79
+ this.controller.unregisterDisclosure(this, this.currentGroupId);
80
+ }
81
+ if (this.groupId) {
82
+ this.controller.removeHost(this);
83
+ }
84
+ document.removeEventListener('keydown', this._handleKeyDown, true);
85
+ document.removeEventListener('mousedown', this._handleMouseDown, true);
86
+ document.removeEventListener('touchstart', this._handleTouchStart, true);
87
+ this.currentGroupId = undefined;
88
+ }
89
+ _registerWithGroup() {
90
+ if (this.groupId) {
91
+ this.currentGroupId = this.groupId;
92
+ this.controller.registerDisclosure(this, this.groupId);
93
+ }
94
+ }
95
+ _handleGroupIdChange() {
96
+ if (this.currentGroupId) {
97
+ this.controller.unregisterDisclosure(this, this.currentGroupId);
98
+ this.currentGroupId = undefined;
99
+ }
100
+ if (this.groupId) {
101
+ this.controller.addHost(this);
102
+ this._registerWithGroup();
103
+ }
104
+ else {
105
+ this.controller.removeHost(this);
106
+ }
107
+ }
108
+ async firstUpdated() {
109
+ if (this.open && this._detailsContent) {
110
+ this._detailsContent.style.height = '0';
111
+ this._detailsContent.style.overflowY = 'hidden';
112
+ await new Promise((resolve) => {
113
+ requestAnimationFrame(() => {
114
+ requestAnimationFrame(() => {
115
+ resolve();
116
+ });
117
+ });
118
+ });
119
+ if (this.open && this._detailsContent) {
120
+ await this._startOpeningAnimation();
121
+ }
122
+ }
123
+ else if (this._detailsContent) {
124
+ this._detailsContent.style.overflowY = 'hidden';
125
+ }
126
+ }
127
+ async _startOpeningAnimation() {
128
+ if (!this._drawer || !this._detailsContent)
129
+ return;
130
+ await stopAnimations(this._detailsContent);
131
+ this._details.setAttribute('open', '');
132
+ this._detailsContent.style.height = '0';
133
+ this._detailsContent.style.opacity = '0';
134
+ this._detailsContent.style.overflowY = 'hidden';
135
+ await new Promise((resolve) => {
136
+ requestAnimationFrame(() => {
137
+ requestAnimationFrame(() => {
138
+ resolve();
139
+ });
140
+ });
141
+ });
142
+ if (!this.open || !this._detailsContent) {
143
+ this.isAnimating = false;
144
+ return;
145
+ }
146
+ const targetHeight = this._detailsContent.scrollHeight;
147
+ const keyframes = [
148
+ { height: '0', opacity: '0' },
149
+ { height: `${targetHeight}px`, opacity: '1' },
150
+ ];
151
+ const options = {
152
+ duration: 100,
153
+ easing: 'linear',
154
+ };
155
+ await animateTo(this._detailsContent, keyframes, options);
156
+ this._detailsContent.style.height = 'auto';
157
+ this._detailsContent.style.opacity = '1';
158
+ this._detailsContent.style.overflowY = 'auto';
159
+ this.isAnimating = false;
160
+ }
161
+ async _startClosingAnimation() {
162
+ if (!this._drawer || !this._detailsContent)
163
+ return;
164
+ await stopAnimations(this._detailsContent);
165
+ const currentHeight = this._detailsContent.scrollHeight;
166
+ this._detailsContent.style.height = `${currentHeight}px`;
167
+ this._detailsContent.style.overflowY = 'auto';
168
+ await new Promise((resolve) => {
169
+ requestAnimationFrame(() => resolve());
170
+ });
171
+ const keyframes = [
172
+ { height: `${currentHeight}px`, opacity: '1' },
173
+ { height: '0', opacity: '0' },
174
+ ];
175
+ const options = {
176
+ duration: 200,
177
+ easing: 'linear',
178
+ };
179
+ await animateTo(this._detailsContent, keyframes, options);
180
+ this._detailsContent.style.height = '0';
181
+ this._detailsContent.style.opacity = '0';
182
+ this._detailsContent.style.overflowY = 'hidden';
183
+ this._details.removeAttribute('open');
184
+ this.isAnimating = false;
37
185
  }
38
186
  updated(changedProperties) {
187
+ if (changedProperties.has('groupId')) {
188
+ this._handleGroupIdChange();
189
+ }
39
190
  if (changedProperties.has('open')) {
191
+ if (this.open) {
192
+ this._details.setAttribute('open', '');
193
+ }
194
+ else {
195
+ this._details.removeAttribute('open');
196
+ }
40
197
  if (this.open === true) {
41
- setTimeout(() => {
42
- this._detailsContent.classList.add('opening');
43
- });
198
+ if (this.isAnimating)
199
+ return;
200
+ this.isAnimating = true;
201
+ if (this.currentGroupId) {
202
+ this.controller.notifyDisclosureOpening(this, this.currentGroupId).then(() => {
203
+ if (this.open) {
204
+ this._startOpeningAnimation();
205
+ }
206
+ else {
207
+ this.isAnimating = false;
208
+ }
209
+ });
210
+ }
211
+ else {
212
+ this._startOpeningAnimation();
213
+ }
44
214
  this.dispatchEvent(new CustomEvent('umg-disclosure:opened', {
45
215
  detail: {
46
216
  target: this,
@@ -50,9 +220,13 @@ let Disclosure = class Disclosure extends LitElement {
50
220
  }));
51
221
  }
52
222
  else if (this.open === false) {
53
- setTimeout(() => {
54
- this._detailsContent.classList.remove('opening');
55
- });
223
+ if (this.isAnimating)
224
+ return;
225
+ this.isAnimating = true;
226
+ if (this.currentGroupId) {
227
+ this.controller.notifyDisclosureClosing(this, this.currentGroupId);
228
+ }
229
+ this._startClosingAnimation();
56
230
  this.dispatchEvent(new CustomEvent('umg-disclosure:closed', {
57
231
  detail: {
58
232
  target: this,
@@ -63,15 +237,16 @@ let Disclosure = class Disclosure extends LitElement {
63
237
  }
64
238
  }
65
239
  }
66
- _summaryClick() {
240
+ _summaryClick(e) {
241
+ e.preventDefault();
67
242
  this.open = !this.open;
68
243
  }
69
244
  summaryClasses() {
70
245
  const classes = {};
71
246
  classes['disclosure__summary--icon-' + this.iconAnimation] = true;
72
247
  classes['disclosure__summary--justify-' + this.justify] = true;
73
- classes['disclosure__summary--mobile-justify-' + this.mobileJustify] = true;
74
248
  classes['disclosure__summary--' + this.summaryWidth] = true;
249
+ classes['disclosure__summary--icon-position-' + this.iconPosition] = true;
75
250
  return classes;
76
251
  }
77
252
  drawerClasses() {
@@ -118,11 +293,29 @@ let Disclosure = class Disclosure extends LitElement {
118
293
  }
119
294
  return classes;
120
295
  }
296
+ _handleFocusIn(e) {
297
+ if (this.lastInteractionWasKeyboard) {
298
+ const focusTarget = e.composedPath()[1];
299
+ focusTarget.classList.add('focus-visible');
300
+ }
301
+ }
302
+ _handleFocusOut(e) {
303
+ const focusTarget = e.composedPath()[1];
304
+ focusTarget.classList.remove('focus-visible');
305
+ }
121
306
  render() {
307
+ const centeringPin = (this.iconPosition === 'pin-left'
308
+ && this.justify === 'center')
309
+ || (this.iconPosition === 'pin-right'
310
+ && this.justify === 'center')
311
+ ? html `<div class="summary-centering-pin"></div>`
312
+ : nothing;
122
313
  return html `
123
314
  <details
124
315
  part="disclosure"
125
316
  class="disclosure__details"
317
+ @focusin=${this._handleFocusIn}
318
+ @focusout=${this._handleFocusOut}
126
319
  >
127
320
  <summary
128
321
  part="disclosure-summary"
@@ -133,8 +326,13 @@ let Disclosure = class Disclosure extends LitElement {
133
326
  @click=${this._summaryClick}
134
327
  >
135
328
  <div class="disclosure__summary-content">
136
- <slot name="summary"></slot>
137
- <slot name="icon"></slot>
329
+ ${centeringPin}
330
+ <div class="summary__content">
331
+ <slot name="summary"></slot>
332
+ </div>
333
+ <div class="summary__icon">
334
+ <slot name="icon"></slot>
335
+ </div>
138
336
  </div>
139
337
  </summary>
140
338
  <div
@@ -158,6 +356,10 @@ let Disclosure = class Disclosure extends LitElement {
158
356
  Disclosure.styles = mergeStyles([
159
357
  global,
160
358
  css `
359
+ :host {
360
+ display: block;
361
+ }
362
+
161
363
  :host([overlay]) {
162
364
  position: relative;
163
365
  }
@@ -165,10 +367,20 @@ Disclosure.styles = mergeStyles([
165
367
  ::slotted(*[slot=summary]) {
166
368
  flex: 0 1 auto;
167
369
  }
370
+
168
371
  ::slotted(*[slot=icon]) {
169
372
  transition: transform 0.2s ease;
170
373
  }
171
374
 
375
+ .disclosure__details {
376
+ overflow: hidden;
377
+ border-style: solid;
378
+ border-radius: var(--umg-border-disclosure-corner-radius, 0);
379
+ border-width: var(--umg-border-disclosure-width, 0.0625em);
380
+ border-color: rgb(from var(--umg-color-disclosure-border, rgb(0, 0, 0, 0)) r g b / alpha);
381
+ padding: var(--umg-space-disclosure-padding, 0.5rem);
382
+ }
383
+
172
384
  /** Summary */
173
385
  .disclosure__details summary::-webkit-details-marker {
174
386
  display:none;
@@ -176,27 +388,18 @@ Disclosure.styles = mergeStyles([
176
388
 
177
389
  .disclosure__summary {
178
390
  cursor: pointer;
179
- display: flex;
180
- align-items: center;
181
- justify-content: start;
182
- gap: var(--umg-space-8, 0.5rem);
183
391
  list-style: none;
184
392
  padding: var(--umg-space-summary-padding, 0.5rem);
185
- border: 0.0625rem solid var(--umg-color-summary-border, rgb(0,0,0,0));
393
+ color: rgb(from var(--umg-color-summary-text, var(--umg-color-base-text, rgb(0,0,0))) r g b);
394
+ background-color: rgb(from var(--umg-color-summary-background, var(--umg-color-base-background, rgb(255, 255, 255))) r g b / alpha);
395
+ border-style: solid;
396
+ border-width: var(--umg-border-summary-width, 0.0625em);
397
+ border-color: rgb(from var(--umg-color-summary-border, rgb(0,0,0,0)) r g b / alpha);
186
398
  border-radius: var(--umg-border-base-corner-radius, 0);
187
- color: var(--umg-color-summary-text, var(--umg-color-base-text, rgb(0,0,0)));
188
- background-color: var(--umg-color-summary-background, rgb(255, 255, 255));
189
- }
190
-
191
- @supports (color: rgb(from white r g b)) {
192
- .disclosure__summary {
193
- border-color: rgb(from var(--umg-color-summary-border, rgb(0,0,0,0)) r g b / alpha);
194
- color: rgb(from var(--umg-color-summary-text, var(--umg-color-base-text, rgb(0,0,0))) r g b);
195
- background-color: rgb(from var(--umg-color-summary-background, var(--umg-color-base-background, rgb(255, 255, 255))) r g b / alpha);
196
- }
399
+ --umg-color-base-text: var(--umg-color-summary-text, inherit);
197
400
  }
198
401
 
199
- .disclosure__summary-content {
402
+ .disclosure__summary-content {
200
403
  display: flex;
201
404
  align-items: center;
202
405
  justify-content: start;
@@ -207,34 +410,73 @@ Disclosure.styles = mergeStyles([
207
410
  .disclosure__summary--fit-content {
208
411
  width: fit-content;
209
412
  }
413
+
210
414
  .disclosure__summary--fill {
211
415
  width: 100%;
212
416
  }
213
417
 
214
- /** Summary justify content */
215
- .disclosure__summary--justify-center {
418
+ /** Summary content alignment */
419
+ .disclosure__summary--justify-start .disclosure__summary-content {
420
+ justify-content: start;
421
+ }
422
+
423
+ .disclosure__summary--justify-center .disclosure__summary-content {
216
424
  justify-content: center;
217
425
  }
218
- .disclosure__summary--justify-end {
426
+
427
+ .disclosure__summary--justify-end .disclosure__summary-content {
219
428
  justify-content: end;
220
429
  }
221
- .disclosure__summary--justify-space-between {
222
- justify-content: space-between;
430
+
431
+ /* Summary icon position */
432
+ .disclosure__summary--icon-position-left .disclosure__summary-content,
433
+ .disclosure__summary--icon-position-pin-left .disclosure__summary-content {
434
+ flex-direction: row-reverse;
435
+ }
436
+
437
+ .disclosure__summary--icon-position-pin-right .summary-centering-pin {
438
+ flex: 1;
439
+ margin-right: auto;
223
440
  }
224
- @media screen and (max-width: 48rem) {
225
- .disclosure__summary--mobile-justify-center {
226
- justify-content: center;
227
- }
228
- .disclosure__summary--mobile-justify-end {
229
- justify-content: end;
230
- }
231
- .disclosure__summary--mobile-justify-space-between {
232
- justify-content: space-between;
233
- }
441
+
442
+ .disclosure__summary--icon-position-pin-left .summary-centering-pin {
443
+ flex: 1;
444
+ margin-left: auto;
234
445
  }
235
446
 
236
- .disclosure__summary--icon-left {
237
- flex-direction: row-reverse;
447
+ /* Icon pinned Left */
448
+ .disclosure__summary--icon-position-pin-left .summary__icon {
449
+ flex: 1;
450
+ margin-right: auto;
451
+ }
452
+
453
+ .disclosure__summary--icon-position-pin-left.disclosure__summary--justify-start .summary__icon {
454
+ flex: 0;
455
+ margin-right: unset;
456
+ }
457
+
458
+ .disclosure__summary--icon-position-pin-left.disclosure__summary--justify-center .summary__content,
459
+ .disclosure__summary--icon-position-pin-right.disclosure__summary--justify-center .summary__content {
460
+ flex: 0 0 auto;
461
+ margin-left: auto;
462
+ margin-right: auto;
463
+ }
464
+
465
+ /* Icon pinned Right */
466
+ .disclosure__summary--icon-position-pin-right .disclosure__summary-content .summary__icon {
467
+ flex: 1;
468
+ margin-left: auto;
469
+ }
470
+
471
+ .disclosure__summary--icon-position-pin-right .disclosure__summary-content .summary__icon ::slotted(*[slot=icon]) {
472
+ display: block;
473
+ width: fit-content;
474
+ margin-left: auto;
475
+ }
476
+
477
+ .disclosure__summary--icon-position-pin-right.disclosure__summary--justify-end .summary__icon {
478
+ flex: 0 0 auto;
479
+ margin-left: unset;
238
480
  }
239
481
 
240
482
  /** Drawer */
@@ -242,6 +484,7 @@ Disclosure.styles = mergeStyles([
242
484
  min-width: fit-content;
243
485
  overflow: hidden;
244
486
  }
487
+
245
488
  .disclosure__drawer:not(.disclosure__drawer--overlay) {
246
489
  margin-top: var(--umg-space-disclosure-distance, 1rem)
247
490
  }
@@ -264,25 +507,16 @@ Disclosure.styles = mergeStyles([
264
507
 
265
508
  @media screen and (min-width: 48.06rem) {
266
509
  .disclosure__drawer--overlay.disclosure__drawer--align-right:not(.disclosure__drawer--fill) .disclosure__content {
267
- box-shadow: -0.250rem -0.250rem 0.5rem 0 var(--umg-color-base-shadow, rgb(0,0,0,0));
510
+ box-shadow: -0.250rem 0.250rem 0.5rem 0 rgb(from var(--umg-color-base-shadow, rgb(0,0,0,0)) r g b / alpha);
268
511
  margin: 0 0 0.750rem 0.750rem;
269
512
  }
270
- @supports (color: rgb(from white r g b)) {
271
- .disclosure__drawer--overlay.disclosure__drawer--align-right:not(.disclosure__drawer--fill) .disclosure__content {
272
- box-shadow: -0.250rem 0.250rem 0.5rem 0 rgb(from var(--umg-color-base-shadow, rgb(0,0,0,0)) r g b / alpha);
273
- }
274
- }
275
513
  }
514
+
276
515
  @media screen and (min-width: 48.06rem) {
277
516
  .disclosure__drawer--overlay.disclosure__drawer--align-left:not(.disclosure__drawer--fill) .disclosure__content {
278
- box-shadow: 0.250rem 0.250rem 0.5rem 0 var(--umg-color-base-shadow, rgb(0,0,0,0));
517
+ box-shadow: 0.250rem 0.250rem 0.5rem 0 rgb(from var(--umg-color-base-shadow, rgb(0,0,0,0)) r g b / alpha);
279
518
  margin: 0 0.750rem 0.750rem 0;
280
519
  }
281
- @supports (color: rgb(from white r g b)) {
282
- .disclosure__drawer--overlay.disclosure__drawer--align-left:not(.disclosure__drawer--fill) .disclosure__content {
283
- box-shadow: 0.250rem 0.250rem 0.5rem 0 rgb(from var(--umg-color-base-shadow, rgb(0,0,0,0)) r g b / alpha);
284
- }
285
- }
286
520
  }
287
521
 
288
522
  .disclosure__drawer--fill.disclosure__drawer--overlay {
@@ -302,69 +536,25 @@ Disclosure.styles = mergeStyles([
302
536
  /* Disclosure content */
303
537
  .disclosure__content {
304
538
  border-radius: var(--umg-border-base-corner-radius);
305
- overflow-y: auto;
539
+ overflow: hidden;
306
540
  border-style: solid;
307
- border-width: 0.0625rem;
308
- padding: var(--umg-space-details-padding, 0.5rem 0);
309
-
310
- color: var(--umg-color-details-text, var(--umg-color-base-text, rgb(0,0,0)));
311
- background-color: var(--umg-color-details-background, var(--umg-color-base-background, rgb(255, 255, 255)));
312
- border-color: var(--umg-color-details-border, var(--umg-color-base-border, rgb(0,0,0,0)));
541
+ border-width: var(--umg-border-details-width, 0.0625em);
542
+ border-color: rgb(from var(--umg-color-details-border, var(--umg-color-base-border, rgb(0,0,0,0))) r g b / alpha);
543
+ padding: var(--umg-space-details-padding, 0.5rem);
544
+ color: rgb(from var(--umg-color-details-text, var(--umg-color-base-text, rgb(0,0,0))) r g b);
545
+ background-color: rgb(from var(--umg-color-details-background, var(--umg-color-base-background, rgb(255, 255, 255))) r g b);
546
+ height: 0;
547
+ min-height: 0;
313
548
 
314
549
  --umg-color-base-text: var(--umg-color-details-text);
315
550
  --umg-color-base-background: var(--umg-color-details-background);
316
551
  }
317
-
318
- @supports (color: rgb(from white r g b)) {
319
- .disclosure__content {
320
- color: rgb(from var(--umg-color-details-text, var(--umg-color-base-text, rgb(0,0,0))) r g b);
321
- background-color: rgb(from var(--umg-color-details-background, var(--umg-color-base-background, rgb(255, 255, 255))) r g b);
322
- border-color: rgb(from var(--umg-color-details-border, var(--umg-color-base-border, rgb(0,0,0,0))) r g b / alpha);
323
- }
324
- }
552
+
325
553
 
326
554
  /* Toggle state */
327
555
  .disclosure__details[open] .disclosure__summary--icon-flip ::slotted(*[slot=icon]) {
328
556
  transform: rotate(180deg);
329
557
  }
330
- .disclosure__drawer {
331
- visibility: hidden;
332
- }
333
- .disclosure__content {
334
- visibility: hidden;
335
- }
336
-
337
- .disclosure__details[open] .disclosure__drawer.opening {
338
- visibility: visible;
339
- }
340
-
341
- .disclosure__details[open] .disclosure__content.opening {
342
- transition: transform 0.2s ease, visibility 0.2s ease;
343
- visibility: visible;
344
- }
345
-
346
- /* Opening direction */
347
- .disclosure__content.open--vertical {
348
- transform: translateY(var(--umg-animation-disclosure-origin));
349
- }
350
- .disclosure__details[open] .disclosure__content.open--vertical.opening {
351
- transform: translateY(0);
352
- }
353
- .disclosure__details[open] .disclosure__content.open--horizontal.opening {
354
- transform: translateX(0);
355
- }
356
- .disclosure__content.open--horizontal {
357
- transform: translateX(var(--umg-animation-disclosure-origin));
358
- }
359
-
360
- @media screen and (max-width: 48rem) {
361
- .disclosure__content.open--vertical {
362
- transform: translateY(var(--umg-animation-disclosure-origin-mobile));
363
- }
364
- .disclosure__content.open--horizontal {
365
- transform: translateX(var(--umg-animation-disclosure-origin-mobile));
366
- }
367
- }
368
558
 
369
559
  /* Content overflow scrollbar */
370
560
  .disclosure__content::-webkit-scrollbar {
@@ -390,46 +580,52 @@ Disclosure.styles = mergeStyles([
390
580
  ]);
391
581
  __decorate([
392
582
  property()
393
- ], Disclosure.prototype, "direction", undefined);
583
+ ], Disclosure.prototype, "direction", void 0);
394
584
  __decorate([
395
585
  property({ type: Boolean })
396
- ], Disclosure.prototype, "mobileDirectionInverse", undefined);
586
+ ], Disclosure.prototype, "mobileDirectionInverse", void 0);
397
587
  __decorate([
398
588
  property({ type: Boolean })
399
- ], Disclosure.prototype, "overlay", undefined);
589
+ ], Disclosure.prototype, "overlay", void 0);
400
590
  __decorate([
401
591
  property()
402
- ], Disclosure.prototype, "summaryWidth", undefined);
592
+ ], Disclosure.prototype, "summaryWidth", void 0);
403
593
  __decorate([
404
594
  property()
405
- ], Disclosure.prototype, "detailsWidth", undefined);
595
+ ], Disclosure.prototype, "detailsWidth", void 0);
406
596
  __decorate([
407
597
  property()
408
- ], Disclosure.prototype, "justify", undefined);
598
+ ], Disclosure.prototype, "justify", void 0);
409
599
  __decorate([
410
600
  property()
411
- ], Disclosure.prototype, "mobileJustify", undefined);
601
+ ], Disclosure.prototype, "iconPosition", void 0);
412
602
  __decorate([
413
603
  property()
414
- ], Disclosure.prototype, "iconAnimation", undefined);
604
+ ], Disclosure.prototype, "iconAnimation", void 0);
415
605
  __decorate([
416
606
  property({ type: Boolean })
417
- ], Disclosure.prototype, "border", undefined);
607
+ ], Disclosure.prototype, "border", void 0);
418
608
  __decorate([
419
609
  property()
420
- ], Disclosure.prototype, "align", undefined);
610
+ ], Disclosure.prototype, "align", void 0);
421
611
  __decorate([
422
612
  property({ type: Boolean, reflect: true })
423
- ], Disclosure.prototype, "open", undefined);
613
+ ], Disclosure.prototype, "open", void 0);
614
+ __decorate([
615
+ property()
616
+ ], Disclosure.prototype, "groupId", void 0);
424
617
  __decorate([
425
618
  query('summary')
426
- ], Disclosure.prototype, "_summary", undefined);
619
+ ], Disclosure.prototype, "_summary", void 0);
427
620
  __decorate([
428
621
  query('details')
429
- ], Disclosure.prototype, "_details", undefined);
622
+ ], Disclosure.prototype, "_details", void 0);
430
623
  __decorate([
431
624
  query('.disclosure__content')
432
- ], Disclosure.prototype, "_detailsContent", undefined);
625
+ ], Disclosure.prototype, "_detailsContent", void 0);
626
+ __decorate([
627
+ query('.disclosure__drawer')
628
+ ], Disclosure.prototype, "_drawer", void 0);
433
629
  Disclosure = __decorate([
434
630
  customElement(`${prefix}-disclosure`)
435
631
  ], Disclosure);