@pushengineering/umg-web-components 2.0.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 (88) hide show
  1. package/dist/node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/css-tag.js +56 -0
  2. package/dist/node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/base.js +9 -0
  3. package/dist/node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/custom-element.js +13 -0
  4. package/dist/node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/property.js +37 -0
  5. package/dist/node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/query-assigned-elements.js +19 -0
  6. package/dist/node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/query.js +34 -0
  7. package/dist/node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/state.js +12 -0
  8. package/dist/node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/reactive-element.js +260 -0
  9. package/dist/node_modules/.pnpm/lit-element@4.0.4/node_modules/lit-element/lit-element.js +50 -0
  10. package/dist/node_modules/.pnpm/lit-html@3.1.2/node_modules/lit-html/directive.js +27 -0
  11. package/dist/node_modules/.pnpm/lit-html@3.1.2/node_modules/lit-html/directives/class-map.js +37 -0
  12. package/dist/node_modules/.pnpm/lit-html@3.1.2/node_modules/lit-html/directives/if-defined.js +10 -0
  13. package/dist/node_modules/.pnpm/lit-html@3.1.2/node_modules/lit-html/directives/map.js +15 -0
  14. package/dist/node_modules/.pnpm/lit-html@3.1.2/node_modules/lit-html/directives/range.js +14 -0
  15. package/dist/node_modules/.pnpm/lit-html@3.1.2/node_modules/lit-html/directives/style-map.js +39 -0
  16. package/dist/node_modules/.pnpm/lit-html@3.1.2/node_modules/lit-html/lit-html.js +259 -0
  17. package/dist/packages/web-components/classes/event-manager/event-manager.js +50 -0
  18. package/dist/packages/web-components/classes/index.js +4 -0
  19. package/dist/packages/web-components/components/badge/badge.js +146 -0
  20. package/dist/packages/web-components/components/banner/banner.js +389 -0
  21. package/dist/packages/web-components/components/banner-image/banner-image.js +161 -0
  22. package/dist/packages/web-components/components/box/box.js +208 -0
  23. package/dist/packages/web-components/components/button/button.js +336 -0
  24. package/dist/packages/web-components/components/button-group/button-group.js +98 -0
  25. package/dist/packages/web-components/components/button-icon/button-icon.js +246 -0
  26. package/dist/packages/web-components/components/caption-card/caption-card.js +331 -0
  27. package/dist/packages/web-components/components/deferred-media/deferred-media.js +212 -0
  28. package/dist/packages/web-components/components/disclosure/disclosure.js +255 -0
  29. package/dist/packages/web-components/components/event-table/event-content.js +106 -0
  30. package/dist/packages/web-components/components/event-table/event-date.js +45 -0
  31. package/dist/packages/web-components/components/event-table/event-table.js +74 -0
  32. package/dist/packages/web-components/components/event-table/event.js +45 -0
  33. package/dist/packages/web-components/components/footer/footer.js +153 -0
  34. package/dist/packages/web-components/components/grid/grid-cell.js +40 -0
  35. package/dist/packages/web-components/components/grid/grid.js +106 -0
  36. package/dist/packages/web-components/components/header/header.js +368 -0
  37. package/dist/packages/web-components/components/header-drawer/header-drawer.js +292 -0
  38. package/dist/packages/web-components/components/header-drawer/menu-drawer.js +176 -0
  39. package/dist/packages/web-components/components/horizontal-stack/horizontal-stack.js +93 -0
  40. package/dist/packages/web-components/components/icon/icon.js +81 -0
  41. package/dist/packages/web-components/components/icon/icons.svg.js +191 -0
  42. package/dist/packages/web-components/components/image/image.js +157 -0
  43. package/dist/packages/web-components/components/index.js +82 -0
  44. package/dist/packages/web-components/components/link/link.js +95 -0
  45. package/dist/packages/web-components/components/link-group/link-group.js +126 -0
  46. package/dist/packages/web-components/components/logo/logo.js +161 -0
  47. package/dist/packages/web-components/components/media-gallery/media-gallery.js +82 -0
  48. package/dist/packages/web-components/components/media-gallery/media.js +31 -0
  49. package/dist/packages/web-components/components/media-text/media-text.js +276 -0
  50. package/dist/packages/web-components/components/media-text/styles/media-size.js +119 -0
  51. package/dist/packages/web-components/components/menu/menu.js +328 -0
  52. package/dist/packages/web-components/components/modal/modal.js +143 -0
  53. package/dist/packages/web-components/components/number-field/number-field.js +339 -0
  54. package/dist/packages/web-components/components/overlay/overlay.js +77 -0
  55. package/dist/packages/web-components/components/page/page.js +105 -0
  56. package/dist/packages/web-components/components/popover/popover.js +163 -0
  57. package/dist/packages/web-components/components/rich-text/rich-text.js +126 -0
  58. package/dist/packages/web-components/components/section/section.js +400 -0
  59. package/dist/packages/web-components/components/select/select.js +359 -0
  60. package/dist/packages/web-components/components/slider/slide.js +68 -0
  61. package/dist/packages/web-components/components/slider/slider-controls.js +258 -0
  62. package/dist/packages/web-components/components/slider/slider.js +374 -0
  63. package/dist/packages/web-components/components/slider/styles/controls.js +98 -0
  64. package/dist/packages/web-components/components/slider/styles/slider.js +233 -0
  65. package/dist/packages/web-components/components/socials/socials.js +96 -0
  66. package/dist/packages/web-components/components/table/table.js +158 -0
  67. package/dist/packages/web-components/components/text/text.js +245 -0
  68. package/dist/packages/web-components/components/text-field/text-field.js +257 -0
  69. package/dist/packages/web-components/components/thumbnail-slider/thumbnail-slide.js +51 -0
  70. package/dist/packages/web-components/components/thumbnail-slider/thumbnail-slider.js +88 -0
  71. package/dist/packages/web-components/components/vertical-stack/vertical-stack.js +95 -0
  72. package/dist/packages/web-components/components/video/video.js +185 -0
  73. package/dist/packages/web-components/scripts/mergeStyles.js +8 -0
  74. package/dist/packages/web-components/scripts/polyfills/scrollyfills.js +43 -0
  75. package/dist/packages/web-components/scripts/settings.js +7 -0
  76. package/dist/packages/web-components/scripts/themeStyleSheet.js +9 -0
  77. package/dist/packages/web-components/scripts/utilities/debounce.js +9 -0
  78. package/dist/packages/web-components/scripts/utilities/paddingTransformations.js +46 -0
  79. package/dist/packages/web-components/styles/button.js +55 -0
  80. package/dist/packages/web-components/styles/fonts.js +181 -0
  81. package/dist/packages/web-components/styles/global.js +40 -0
  82. package/dist/packages/web-components/styles/grid.js +114 -0
  83. package/dist/packages/web-components/styles/group.js +121 -0
  84. package/dist/packages/web-components/styles/icon-size.js +19 -0
  85. package/dist/packages/web-components/styles/link.js +30 -0
  86. package/dist/packages/web-components/styles/placeholder-media.js +27 -0
  87. package/package.json +92 -0
  88. package/readme.md +266 -0
@@ -0,0 +1,368 @@
1
+ import "../../../../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/reactive-element.js";
2
+ import { html as p } from "../../../../node_modules/.pnpm/lit-html@3.1.2/node_modules/lit-html/lit-html.js";
3
+ import { LitElement as m } from "../../../../node_modules/.pnpm/lit-element@4.0.4/node_modules/lit-element/lit-element.js";
4
+ import { customElement as u } from "../../../../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/custom-element.js";
5
+ import { property as i } from "../../../../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/property.js";
6
+ import { state as h } from "../../../../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/state.js";
7
+ import { query as g } from "../../../../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/query.js";
8
+ import { queryAssignedElements as _ } from "../../../../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/query-assigned-elements.js";
9
+ import { classMap as y } from "../../../../node_modules/.pnpm/lit-html@3.1.2/node_modules/lit-html/directives/class-map.js";
10
+ import { styleMap as c } from "../../../../node_modules/.pnpm/lit-html@3.1.2/node_modules/lit-html/directives/style-map.js";
11
+ import { debounce as v } from "../../scripts/utilities/debounce.js";
12
+ import { global as f } from "../../styles/global.js";
13
+ import { settings as w } from "../../scripts/settings.js";
14
+ import { mergeStyles as b } from "../../scripts/mergeStyles.js";
15
+ import { css as H } from "../../../../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/css-tag.js";
16
+ var x = Object.defineProperty, S = Object.getOwnPropertyDescriptor, r = (e, a, n, s) => {
17
+ for (var o = s > 1 ? void 0 : s ? S(a, n) : a, d = e.length - 1, l; d >= 0; d--)
18
+ (l = e[d]) && (o = (s ? l(a, n, o) : l(o)) || o);
19
+ return s && o && x(a, n, o), o;
20
+ };
21
+ const { prefix: k } = w;
22
+ let t = class extends m {
23
+ constructor() {
24
+ super(...arguments), this.width = "page-width", this.paddingTop = "", this.paddingBottom = "", this.layout = "logo-left", this.logoHidden = !1, this.menuHidden = !1, this.socialsHidden = !1, this.signupHidden = !1, this.colorText = "", this.colorBg = "", this.sticky = !1, this.stickyHideOnScroll = !1, this.transparent = !1, this._transparentScrolling = !1, this._currentScrollPosition = 0, this._debouncedEventsHandler = v((e) => {
25
+ this._eventsHandler(e);
26
+ }, 100), this._eventsHandler = (e) => {
27
+ e.type === "scroll" && this._stickyScroll();
28
+ }, this._removeTransparency = () => {
29
+ (window.scrollY || document.documentElement.scrollTop) > 0 ? this._transparentScrolling = !0 : this._transparentScrolling = !1;
30
+ };
31
+ }
32
+ firstUpdated() {
33
+ this._resizeObserver = new ResizeObserver(() => this._initHeader()), this._resizeObserver.observe(this);
34
+ }
35
+ updated(e) {
36
+ super.updated(e), e.has("stickyHideOnScroll") && (this.stickyHideOnScroll ? window.addEventListener("scroll", this._debouncedEventsHandler) : (window.removeEventListener("scroll", this._debouncedEventsHandler), this.removeAttribute("scrolling-down"))), e.has("transparent") && (this.sticky && this.transparent ? window.addEventListener("scroll", this._removeTransparency) : (window.removeEventListener("scroll", this._removeTransparency), this._transparentScrolling = !1));
37
+ }
38
+ disconnectedCallback() {
39
+ this.sticky && this.transparent && window.removeEventListener("scroll", this._removeTransparency), this.sticky && this.stickyHideOnScroll && window.removeEventListener("scroll", this._debouncedEventsHandler), super.disconnectedCallback();
40
+ }
41
+ _initHeader() {
42
+ this._currentScrollPosition = window.scrollY || document.documentElement.scrollTop, this._headerOuterHeight = this.getBoundingClientRect().bottom;
43
+ const e = this.offsetHeight;
44
+ this.style.setProperty("--um-size-header-inner-height", `${e / 16}rem`), this.style.setProperty("--um-size-header-outer-height", `${this._headerOuterHeight / 16}rem`);
45
+ const a = new CustomEvent("header-details", {
46
+ detail: {
47
+ height: this._headerOuterHeight
48
+ },
49
+ bubbles: !0,
50
+ composed: !0
51
+ });
52
+ this.dispatchEvent(a);
53
+ }
54
+ _stickyScroll() {
55
+ const e = window.scrollY || document.documentElement.scrollTop;
56
+ this.stickyHideOnScroll ? this._headerOuterHeight && e <= this._headerOuterHeight ? this.removeAttribute("scrolling-down") : e > this._currentScrollPosition ? this.setAttribute("scrolling-down", "") : this.removeAttribute("scrolling-down") : this.removeAttribute("scrolling-down"), this._currentScrollPosition = e <= 0 ? 0 : e;
57
+ }
58
+ headerClasses() {
59
+ const e = {
60
+ "header--logo-hidden": this.logoHidden,
61
+ "header--menu-hidden": this.menuHidden,
62
+ "header--socials-hidden": this.socialsHidden,
63
+ "header--signup-hidden": this.signupHidden
64
+ };
65
+ return this.layout && (e["header--" + this.layout] = !0), e;
66
+ }
67
+ headerStyles() {
68
+ let e = {};
69
+ return this.paddingTop && (e = {
70
+ ...e,
71
+ "--um-space-header-padding-top": "var(--um-space-" + this.paddingTop + ")"
72
+ }), this.paddingBottom && (e = {
73
+ ...e,
74
+ "--um-space-header-padding-bottom": "var(--um-space-" + this.paddingBottom + ")"
75
+ }), this.colorText && (e = {
76
+ ...e,
77
+ "--um-color-section-text": this.colorText
78
+ }), this.colorBg && (e = {
79
+ ...e,
80
+ "--um-color-section-bg": this.colorBg
81
+ }), this.transparent && !this._transparentScrolling && (e = {
82
+ ...e,
83
+ "--um-color-section-bg": "0,0,0,0"
84
+ }), e;
85
+ }
86
+ headerInnerStyles() {
87
+ let e = {};
88
+ return this.width === "full-width" && (e = {
89
+ ...e,
90
+ "--um-size-page-width": "100%"
91
+ }), e;
92
+ }
93
+ render() {
94
+ return p`
95
+ <header>
96
+ <div
97
+ part="header"
98
+ class="header${y(this.headerClasses())}"
99
+ style="${c(this.headerStyles())}"
100
+ >
101
+ <div
102
+ class="header__inner"
103
+ style="${c(this.headerInnerStyles())}"
104
+ part="header-inner"
105
+ >
106
+ <div class="header__menu-drawer">
107
+ <slot name="header-drawer"></slot>
108
+ </div>
109
+ <div class="header__logo">
110
+ <slot name="logo"></slot>
111
+ </div>
112
+ <div class="header__menu">
113
+ <slot name="menu"></slot>
114
+ </div>
115
+ <div class="header__actions">
116
+ <div class="header__cart">
117
+ <slot name="user"></slot>
118
+ </div>
119
+ <div class="header__socials">
120
+ <slot name="socials"></slot>
121
+ </div>
122
+ <div class="header__signup">
123
+ <slot name="signup"></slot>
124
+ </div>
125
+ </div>
126
+ </div>
127
+ </div>
128
+ </header>
129
+ `;
130
+ }
131
+ };
132
+ t.styles = b([
133
+ f,
134
+ H`
135
+ :host {
136
+ display:block;
137
+ position: relative;
138
+ z-index: 600;
139
+ }
140
+
141
+ /* Header */
142
+ .header {
143
+ color: rgba(var(--um-color-section-text, var(--um-color-base-text, 62,62,62)));
144
+ background-color: rgba(var(--um-color-section-bg, var(--um-color-base-bg, 246,246,246)));
145
+ transition: all var(--um-animation, 0.4s) ease;
146
+ overflow: hidden;
147
+ }
148
+ .header__inner {
149
+ display: flex;
150
+ align-items: center;
151
+ margin: 0 auto;
152
+ max-width: var(--um-size-page-width, 75rem);
153
+ transition: padding var(--um-animation, 0.4s) ease;
154
+ }
155
+ @media screen and (max-width: 48rem) {
156
+ .header {
157
+ padding-top: calc(var(--um-space-header-padding-top, 1rem) * 0.5);
158
+ padding-bottom: calc(var(--um-space-header-padding-bottom, 1rem) * 0.5);
159
+ }
160
+ .header__inner {
161
+ gap: var(--um-space-24, 1rem);
162
+ padding-left: calc(var(--um-space-header-padding-left, 1.5rem) * 0.5);
163
+ padding-right: calc(var(--um-space-header-padding-right, 1.5rem) * 0.5);
164
+ }
165
+ }
166
+ @media screen and (min-width: 48.06rem) {
167
+ .header {
168
+ padding-top: var(--um-space-header-padding-top, 1rem);
169
+ padding-bottom: var(--um-space-header-padding-bottom, 1rem);
170
+ }
171
+ .header__inner {
172
+ gap: var(--um-space-24, 1.5rem);
173
+ padding-left: var(--um-space-header-padding-left, 1.5rem);
174
+ padding-right: var(--um-space-header-padding-right, 1.5rem);
175
+ }
176
+ }
177
+
178
+ /* Sticky header */
179
+ :host([sticky]) {
180
+ position: sticky;
181
+ top: 0;
182
+ z-index: 1001;
183
+ }
184
+ :host([transparent]) {
185
+ position: absolute;
186
+ width: 100%;
187
+ }
188
+ :host([transparent][sticky]) {
189
+ position: fixed;
190
+ width: 100%;
191
+ }
192
+ :host([sticky][scrolling-down]) header {
193
+ transform: translateY(-100%)
194
+ }
195
+ header {
196
+ transition: all var(--um-animation, 0.4s) ease;
197
+ }
198
+
199
+ /* Header Contents */
200
+ .header .header__menu {
201
+ margin-right: auto;
202
+ }
203
+ .header__actions {
204
+ align-items: center;
205
+ display: flex;
206
+ gap: var(--um-space-32, 2rem);
207
+ margin-left: auto;
208
+ }
209
+ .header__signup {
210
+ white-space: nowrap;
211
+ }
212
+
213
+ /* Hidden header contents */
214
+ .header--logo-hidden .header__logo slot,
215
+ .header--menu-hidden .header__menu slot,
216
+ .header--socials-hidden .header__socials,
217
+ .header--signup-hidden .header__signup {
218
+ display: none;
219
+ }
220
+
221
+ /* Mobile header */
222
+ .header__menu-drawer {
223
+ display: block;
224
+ }
225
+
226
+ @media only screen and (min-width: 64.06rem) {
227
+ .header__menu-drawer {
228
+ display: none;
229
+ }
230
+
231
+ /* Alternative header layouts */
232
+ /* Logo center */
233
+ .header--logo-center .header__menu {
234
+ width: 100%;
235
+ }
236
+ .header--logo-center .header__logo {
237
+ display: flex;
238
+ order: 2;
239
+ justify-content: center;
240
+ width: 100%;
241
+ }
242
+ .header--logo-center .header__actions {
243
+ justify-content: flex-end;
244
+ order: 3;
245
+ width: 100%;
246
+ }
247
+ .header--logo-center.header--menu-hidden .header__logo {
248
+ width: 66.666%;
249
+ }
250
+
251
+ /* Nav center */
252
+ .header--nav-center .header__menu {
253
+ display: flex;
254
+ flex: 1;
255
+ justify-content: center;
256
+ }
257
+ .header--nav-center .header__logo {
258
+ margin-right: auto
259
+ }
260
+ .header--nav-center .header__actions {
261
+ margin-left: auto
262
+ }
263
+ .header--nav-center .header__logo,
264
+ .header--nav-center .header__actions {
265
+ flex: 1;
266
+ }
267
+ .header--nav-center .header__actions {
268
+ display: flex;
269
+ justify-content: flex-end;
270
+ }
271
+
272
+ /* Logo left Content right */
273
+ .header--content-right .header__menu {
274
+ display: flex;
275
+ flex: 1;
276
+ justify-content: right;
277
+ }
278
+
279
+ .header--content-right .header__logo {
280
+ margin-left: auto
281
+ }
282
+ .header--content-right.header--socials-hidden.header--signup-hidden .header__inner {
283
+ padding-right: 0;
284
+ }
285
+ }
286
+ @media only screen and (max-width: 64rem) {
287
+ .header__menu,
288
+ .header__socials,
289
+ .header--nav-center .header__menu {
290
+ display: none;
291
+ }
292
+ .header__menu-drawer {
293
+ display: block;
294
+ margin-right: auto;
295
+ width: 100%;
296
+ }
297
+ .header__logo {
298
+ display: flex;
299
+ justify-content: center;
300
+ width: 100%;
301
+ }
302
+ .header__actions {
303
+ justify-content: flex-end;
304
+ width: 100%;
305
+ }
306
+ }
307
+ `
308
+ ]);
309
+ r([
310
+ i()
311
+ ], t.prototype, "width", 2);
312
+ r([
313
+ i()
314
+ ], t.prototype, "paddingTop", 2);
315
+ r([
316
+ i()
317
+ ], t.prototype, "paddingBottom", 2);
318
+ r([
319
+ i({ type: String })
320
+ ], t.prototype, "layout", 2);
321
+ r([
322
+ i({ type: Boolean })
323
+ ], t.prototype, "logoHidden", 2);
324
+ r([
325
+ i({ type: Boolean })
326
+ ], t.prototype, "menuHidden", 2);
327
+ r([
328
+ i({ type: Boolean })
329
+ ], t.prototype, "socialsHidden", 2);
330
+ r([
331
+ i({ type: Boolean })
332
+ ], t.prototype, "signupHidden", 2);
333
+ r([
334
+ i()
335
+ ], t.prototype, "colorText", 2);
336
+ r([
337
+ i()
338
+ ], t.prototype, "colorBg", 2);
339
+ r([
340
+ i({ type: Boolean })
341
+ ], t.prototype, "sticky", 2);
342
+ r([
343
+ i({ type: Boolean })
344
+ ], t.prototype, "stickyHideOnScroll", 2);
345
+ r([
346
+ i({ type: Boolean })
347
+ ], t.prototype, "transparent", 2);
348
+ r([
349
+ h()
350
+ ], t.prototype, "_headerOuterHeight", 2);
351
+ r([
352
+ h()
353
+ ], t.prototype, "_transparentScrolling", 2);
354
+ r([
355
+ h()
356
+ ], t.prototype, "_currentScrollPosition", 2);
357
+ r([
358
+ g(".header")
359
+ ], t.prototype, "_header", 2);
360
+ r([
361
+ _({ slot: "menu" })
362
+ ], t.prototype, "_menu", 2);
363
+ t = r([
364
+ u(`${k}-header`)
365
+ ], t);
366
+ export {
367
+ t as Header
368
+ };
@@ -0,0 +1,292 @@
1
+ import "../../../../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/reactive-element.js";
2
+ import { html as t } from "../../../../node_modules/.pnpm/lit-html@3.1.2/node_modules/lit-html/lit-html.js";
3
+ import { LitElement as m } from "../../../../node_modules/.pnpm/lit-element@4.0.4/node_modules/lit-element/lit-element.js";
4
+ import { customElement as d } from "../../../../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/custom-element.js";
5
+ import { property as n } from "../../../../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/property.js";
6
+ import { state as p } from "../../../../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/state.js";
7
+ import { query as h } from "../../../../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/query.js";
8
+ import { styleMap as f } from "../../../../node_modules/.pnpm/lit-html@3.1.2/node_modules/lit-html/directives/style-map.js";
9
+ import { global as w } from "../../styles/global.js";
10
+ import { settings as b } from "../../scripts/settings.js";
11
+ import { mergeStyles as g } from "../../scripts/mergeStyles.js";
12
+ import "../disclosure/disclosure.js";
13
+ import "./menu-drawer.js";
14
+ import "../icon/icon.js";
15
+ import { css as y } from "../../../../node_modules/.pnpm/@lit_reactive-element@2.0.4/node_modules/@lit/reactive-element/css-tag.js";
16
+ var v = Object.defineProperty, _ = Object.getOwnPropertyDescriptor, a = (e, r, o, l) => {
17
+ for (var i = l > 1 ? void 0 : l ? _(r, o) : r, c = e.length - 1, u; c >= 0; c--)
18
+ (u = e[c]) && (i = (l ? u(r, o, i) : u(i)) || i);
19
+ return l && i && v(r, o, i), i;
20
+ };
21
+ const { prefix: x } = b;
22
+ let s = class extends m {
23
+ constructor() {
24
+ super(...arguments), this.src = "", this.direction = "down", this._drawerOpen = !1;
25
+ }
26
+ async firstUpdated() {
27
+ this.data === void 0 && this.src && await this.fetchData();
28
+ }
29
+ async fetchData() {
30
+ this.data = await fetch(this.src).then((e) => e.json()), this.requestUpdate();
31
+ }
32
+ closeDrawer() {
33
+ this._drawerOpen = !1, this._drawer.closeDisclosure(), document.body.removeAttribute("style"), this._closeActiveDrawers();
34
+ }
35
+ _openDrawer() {
36
+ this._drawerOpen = !0, document.body.style.overflow = "hidden";
37
+ }
38
+ _closeDrawer() {
39
+ this._drawerOpen = !1, document.body.removeAttribute("style"), this._closeActiveDrawers();
40
+ }
41
+ _closeActiveDrawers() {
42
+ var e;
43
+ if (!this._drawerOpen) {
44
+ const r = (e = this.shadowRoot) == null ? void 0 : e.querySelectorAll("umg-menu-drawer");
45
+ r && r.length && r.forEach((o) => {
46
+ o.closeDrawer();
47
+ });
48
+ }
49
+ }
50
+ menuDrawerStyles() {
51
+ let e = {};
52
+ return this.colorText && (e = {
53
+ ...e,
54
+ "--um-color-menu-drawer-text": this.colorText
55
+ }), this.colorBg && (e = {
56
+ ...e,
57
+ "--um-color-menu-drawer-bg": this.colorBg,
58
+ "--um-color-disclosure-bg": "var(--um-color-menu-drawer-bg)"
59
+ }), e;
60
+ }
61
+ menuList() {
62
+ if (this.data)
63
+ return t`
64
+ <nav>
65
+ <ul class="menu__list" part="menu-list">
66
+ ${this.data.map((e) => t`
67
+ <li>
68
+ ${e.subItems ? t`
69
+ <umg-menu-drawer>
70
+ <span slot="summary">
71
+ ${e.linkText}
72
+ </span>
73
+ <span slot="summary-back">
74
+ ${e.linkText}
75
+ </span>
76
+ <ul slot="submenu" class="submenu">
77
+ ${e.subItems.map((r) => t`
78
+ <li>
79
+ ${r.subItems ? t`
80
+ <umg-menu-drawer>
81
+ <span slot="summary">
82
+ ${r.linkText}
83
+ </span>
84
+ <span slot="summary-back">
85
+ ${r.linkText}
86
+ </span>
87
+ <ul slot="submenu" class="submenu">
88
+ ${r.subItems.map((o) => t`
89
+ <li>
90
+ <a
91
+ class="submenu__link"
92
+ href="${o.linkUrl}"
93
+ @click=${this.closeDrawer}
94
+ part="submenu-link"
95
+ >
96
+ ${o.linkText}
97
+ </a>
98
+ </li>
99
+ `)}
100
+ </ul>
101
+ </umg-menu-drawer>
102
+ ` : t`
103
+ <a
104
+ class="submenu__link"
105
+ href="${r.linkUrl}"
106
+ @click=${this.closeDrawer}
107
+ part="submenu-link"
108
+ >
109
+ ${r.linkText}
110
+ </a>
111
+ `}
112
+ </li>
113
+ `)}
114
+ </ul>
115
+ </umg-menu-drawer>
116
+ ` : t`
117
+ <a
118
+ class="submenu__link"
119
+ href="${e.linkUrl}"
120
+ @click=${this.closeDrawer}
121
+ part="submenu-link"
122
+ >
123
+ ${e.linkText}
124
+ </a>
125
+ `}
126
+ </li>
127
+ `)}
128
+ </ul>
129
+ </nav>
130
+ `;
131
+ }
132
+ render() {
133
+ return t`
134
+ <umg-disclosure
135
+ part="disclosure"
136
+ class="header-drawer"
137
+ style="${f(this.menuDrawerStyles())}"
138
+ direction=${this.direction}
139
+ overlay
140
+ exportparts="disclosure,disclosure-summary,disclosure-drawer,disclosure-content"
141
+ >
142
+ <span slot="icon">
143
+ <umg-icon
144
+ part="icon"
145
+ class="icon icon--open"
146
+ icon="bars"
147
+ size="2xLarge"
148
+ ?open=${this._drawerOpen}
149
+ @click=${this._openDrawer}
150
+ role="presentation"
151
+ aria-hidden="true"
152
+ focusable="false"
153
+ >
154
+ </umg-icon>
155
+ <umg-icon
156
+ part="icon"
157
+ class="icon icon--close"
158
+ icon="close"
159
+ size="2xLarge"
160
+ ?open=${this._drawerOpen}
161
+ @click=${this._closeDrawer}
162
+ role="presentation"
163
+ aria-hidden="true"
164
+ focusable="false"
165
+ >
166
+ </umg-icon>
167
+ </span>
168
+ <div slot="content" class="menu">
169
+ <div
170
+ part="menu-drawer"
171
+ class="menu-drawer"
172
+ >
173
+ ${this.menuList()}
174
+ </div>
175
+ <div
176
+ part="socials"
177
+ class="socials"
178
+ >
179
+ <slot name="socials"></slot>
180
+ </div>
181
+ </div>
182
+ </umg-disclosure>
183
+ `;
184
+ }
185
+ };
186
+ s.styles = g([
187
+ w,
188
+ y`
189
+ /* Burger button */
190
+ .icon--close {
191
+ display: none;
192
+ }
193
+ .icon[open].icon--close {
194
+ display: block;
195
+ }
196
+ .icon--open {
197
+ display: block;
198
+ }
199
+ .icon[open].icon--open {
200
+ display: none;
201
+ }
202
+
203
+ /* Header drawer */
204
+ .header-drawer {
205
+ position: initial;
206
+ }
207
+ .header-drawer::part(disclosure-drawer) {
208
+ top: var(--um-size-header-inner-height, 0);
209
+ }
210
+
211
+ /* Menu drawer */
212
+ .menu {
213
+ display: flex;
214
+ flex-direction: column;
215
+ height: calc(100svh - var(--um-size-header-outer-height));
216
+ font-family: var(--um-font-family-menu, inherit);
217
+ font-size: var(--um-font-size-menu, inherit);
218
+ letter-spacing: 0.05rem;
219
+ }
220
+ .menu-drawer {
221
+ flex: 1;
222
+ position: relative;
223
+ overflow-x: hidden;
224
+ }
225
+
226
+ .menu__list {
227
+ display: flex;
228
+ flex-direction: column;
229
+ color: rgb(var(--um-color-menu-drawer-text, var(--um-color-section-text, var(--um-color-base-text, 62,62,62))), 1);
230
+ list-style: none;
231
+ margin: 0;
232
+ padding: var(--um-space-32, 2rem) 0;
233
+ }
234
+
235
+ /* Submenus */
236
+ .submenu {
237
+ display: flex;
238
+ flex-direction: column;
239
+ list-style: none;
240
+ margin: 0;
241
+ padding: 0;
242
+ width: 100%;
243
+ }
244
+ .submenu__link {
245
+ display: block;
246
+ color: inherit;
247
+ padding: var(--um-space-12, 0.75rem) var(--um-space-24, 1.5rem);
248
+ text-decoration: none;
249
+ transition: background-color var(--um-animation-duration-04, 0.4s) ease;
250
+ }
251
+ .submenu__link:hover {
252
+ background-color: rgba(var(--um-color-page-bg), 0.7);
253
+ }
254
+
255
+ /* Socials */
256
+ .socials {
257
+ display: flex;
258
+ align-items: center;
259
+ justify-content: center;
260
+ padding: var(--um-space-16, 1rem);
261
+ background-color: rgb(var(--um-color-menu-drawer-text, var(--um-color-section-text, var(--um-color-page-text, 62,62,62))), 0.5);
262
+ --um-color-icon-text: rgba(var(--um-color-disclosure-bg, var(--um-color-section-bg, 240, 240, 240)), 1);
263
+ }
264
+ `
265
+ ]);
266
+ a([
267
+ n()
268
+ ], s.prototype, "src", 2);
269
+ a([
270
+ n({ type: Object })
271
+ ], s.prototype, "data", 2);
272
+ a([
273
+ n({ type: String })
274
+ ], s.prototype, "direction", 2);
275
+ a([
276
+ n()
277
+ ], s.prototype, "colorText", 2);
278
+ a([
279
+ n()
280
+ ], s.prototype, "colorBg", 2);
281
+ a([
282
+ p()
283
+ ], s.prototype, "_drawerOpen", 2);
284
+ a([
285
+ h("umg-disclosure")
286
+ ], s.prototype, "_drawer", 2);
287
+ s = a([
288
+ d(`${x}-header-drawer`)
289
+ ], s);
290
+ export {
291
+ s as HeaderDrawer
292
+ };