@nysds/nys-globalfooter 1.11.2 → 1.11.3

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.
@@ -1,508 +1,12 @@
1
- import { css as A, LitElement as U, html as p } from "lit";
2
- /*!
3
- * ▒█▄░▒█ ▒█░░▒█ ▒█▀▀▀█ ▒█▀▀▄ ▒█▀▀▀█
4
- * ▒█▒█▒█ ▒█▄▄▄█ ░▀▀▀▄▄ ▒█░▒█ ░▀▀▀▄▄
5
- * ▒█░░▀█ ░░▒█░░ ▒█▄▄▄█ ▒█▄▄▀ ▒█▄▄▄█
6
- *
7
- * Global Footer Component
8
- * Part of the New York State Design System
9
- * Repository: https://github.com/its-hcd/nysds
10
- * License: MIT
11
- */
12
- /**
13
- * @license
14
- * Copyright 2019 Google LLC
15
- * SPDX-License-Identifier: BSD-3-Clause
16
- */
17
- const f = globalThis, u = f.ShadowRoot && (f.ShadyCSS === void 0 || f.ShadyCSS.nativeShadow) && "adoptedStyleSheets" in Document.prototype && "replace" in CSSStyleSheet.prototype, x = Symbol(), E = /* @__PURE__ */ new WeakMap();
18
- let k = class {
19
- constructor(t, e, o) {
20
- if (this._$cssResult$ = !0, o !== x) throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");
21
- this.cssText = t, this.t = e;
22
- }
23
- get styleSheet() {
24
- let t = this.o;
25
- const e = this.t;
26
- if (u && t === void 0) {
27
- const o = e !== void 0 && e.length === 1;
28
- o && (t = E.get(e)), t === void 0 && ((this.o = t = new CSSStyleSheet()).replaceSync(this.cssText), o && E.set(e, t));
29
- }
30
- return t;
31
- }
32
- toString() {
33
- return this.cssText;
34
- }
35
- };
36
- const O = (n) => new k(typeof n == "string" ? n : n + "", void 0, x), M = (n, t) => {
37
- if (u) n.adoptedStyleSheets = t.map(((e) => e instanceof CSSStyleSheet ? e : e.styleSheet));
38
- else for (const e of t) {
39
- const o = document.createElement("style"), s = f.litNonce;
40
- s !== void 0 && o.setAttribute("nonce", s), o.textContent = e.cssText, n.appendChild(o);
41
- }
42
- }, $ = u ? (n) => n : (n) => n instanceof CSSStyleSheet ? ((t) => {
43
- let e = "";
44
- for (const o of t.cssRules) e += o.cssText;
45
- return O(e);
46
- })(n) : n;
47
- /**
48
- * @license
49
- * Copyright 2017 Google LLC
50
- * SPDX-License-Identifier: BSD-3-Clause
51
- */
52
- const { is: L, defineProperty: N, getOwnPropertyDescriptor: z, getOwnPropertyNames: T, getOwnPropertySymbols: R, getPrototypeOf: D } = Object, y = globalThis, S = y.trustedTypes, j = S ? S.emptyScript : "", q = y.reactiveElementPolyfillSupport, c = (n, t) => n, g = { toAttribute(n, t) {
53
- switch (t) {
54
- case Boolean:
55
- n = n ? j : null;
56
- break;
57
- case Object:
58
- case Array:
59
- n = n == null ? n : JSON.stringify(n);
60
- }
61
- return n;
62
- }, fromAttribute(n, t) {
63
- let e = n;
64
- switch (t) {
65
- case Boolean:
66
- e = n !== null;
67
- break;
68
- case Number:
69
- e = n === null ? null : Number(n);
70
- break;
71
- case Object:
72
- case Array:
73
- try {
74
- e = JSON.parse(n);
75
- } catch {
76
- e = null;
77
- }
78
- }
79
- return e;
80
- } }, m = (n, t) => !L(n, t), w = { attribute: !0, type: String, converter: g, reflect: !1, useDefault: !1, hasChanged: m };
81
- Symbol.metadata ??= Symbol("metadata"), y.litPropertyMetadata ??= /* @__PURE__ */ new WeakMap();
82
- class h extends HTMLElement {
83
- static addInitializer(t) {
84
- this._$Ei(), (this.l ??= []).push(t);
85
- }
86
- static get observedAttributes() {
87
- return this.finalize(), this._$Eh && [...this._$Eh.keys()];
88
- }
89
- static createProperty(t, e = w) {
90
- if (e.state && (e.attribute = !1), this._$Ei(), this.prototype.hasOwnProperty(t) && ((e = Object.create(e)).wrapped = !0), this.elementProperties.set(t, e), !e.noAccessor) {
91
- const o = Symbol(), s = this.getPropertyDescriptor(t, o, e);
92
- s !== void 0 && N(this.prototype, t, s);
93
- }
94
- }
95
- static getPropertyDescriptor(t, e, o) {
96
- const { get: s, set: r } = z(this.prototype, t) ?? { get() {
97
- return this[e];
98
- }, set(i) {
99
- this[e] = i;
100
- } };
101
- return { get: s, set(i) {
102
- const a = s?.call(this);
103
- r?.call(this, i), this.requestUpdate(t, a, o);
104
- }, configurable: !0, enumerable: !0 };
105
- }
106
- static getPropertyOptions(t) {
107
- return this.elementProperties.get(t) ?? w;
108
- }
109
- static _$Ei() {
110
- if (this.hasOwnProperty(c("elementProperties"))) return;
111
- const t = D(this);
112
- t.finalize(), t.l !== void 0 && (this.l = [...t.l]), this.elementProperties = new Map(t.elementProperties);
113
- }
114
- static finalize() {
115
- if (this.hasOwnProperty(c("finalized"))) return;
116
- if (this.finalized = !0, this._$Ei(), this.hasOwnProperty(c("properties"))) {
117
- const e = this.properties, o = [...T(e), ...R(e)];
118
- for (const s of o) this.createProperty(s, e[s]);
119
- }
120
- const t = this[Symbol.metadata];
121
- if (t !== null) {
122
- const e = litPropertyMetadata.get(t);
123
- if (e !== void 0) for (const [o, s] of e) this.elementProperties.set(o, s);
124
- }
125
- this._$Eh = /* @__PURE__ */ new Map();
126
- for (const [e, o] of this.elementProperties) {
127
- const s = this._$Eu(e, o);
128
- s !== void 0 && this._$Eh.set(s, e);
129
- }
130
- this.elementStyles = this.finalizeStyles(this.styles);
131
- }
132
- static finalizeStyles(t) {
133
- const e = [];
134
- if (Array.isArray(t)) {
135
- const o = new Set(t.flat(1 / 0).reverse());
136
- for (const s of o) e.unshift($(s));
137
- } else t !== void 0 && e.push($(t));
138
- return e;
139
- }
140
- static _$Eu(t, e) {
141
- const o = e.attribute;
142
- return o === !1 ? void 0 : typeof o == "string" ? o : typeof t == "string" ? t.toLowerCase() : void 0;
143
- }
144
- constructor() {
145
- super(), this._$Ep = void 0, this.isUpdatePending = !1, this.hasUpdated = !1, this._$Em = null, this._$Ev();
146
- }
147
- _$Ev() {
148
- this._$ES = new Promise(((t) => this.enableUpdating = t)), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), this.constructor.l?.forEach(((t) => t(this)));
149
- }
150
- addController(t) {
151
- (this._$EO ??= /* @__PURE__ */ new Set()).add(t), this.renderRoot !== void 0 && this.isConnected && t.hostConnected?.();
152
- }
153
- removeController(t) {
154
- this._$EO?.delete(t);
155
- }
156
- _$E_() {
157
- const t = /* @__PURE__ */ new Map(), e = this.constructor.elementProperties;
158
- for (const o of e.keys()) this.hasOwnProperty(o) && (t.set(o, this[o]), delete this[o]);
159
- t.size > 0 && (this._$Ep = t);
160
- }
161
- createRenderRoot() {
162
- const t = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);
163
- return M(t, this.constructor.elementStyles), t;
164
- }
165
- connectedCallback() {
166
- this.renderRoot ??= this.createRenderRoot(), this.enableUpdating(!0), this._$EO?.forEach(((t) => t.hostConnected?.()));
167
- }
168
- enableUpdating(t) {
169
- }
170
- disconnectedCallback() {
171
- this._$EO?.forEach(((t) => t.hostDisconnected?.()));
172
- }
173
- attributeChangedCallback(t, e, o) {
174
- this._$AK(t, o);
175
- }
176
- _$ET(t, e) {
177
- const o = this.constructor.elementProperties.get(t), s = this.constructor._$Eu(t, o);
178
- if (s !== void 0 && o.reflect === !0) {
179
- const r = (o.converter?.toAttribute !== void 0 ? o.converter : g).toAttribute(e, o.type);
180
- this._$Em = t, r == null ? this.removeAttribute(s) : this.setAttribute(s, r), this._$Em = null;
181
- }
182
- }
183
- _$AK(t, e) {
184
- const o = this.constructor, s = o._$Eh.get(t);
185
- if (s !== void 0 && this._$Em !== s) {
186
- const r = o.getPropertyOptions(s), i = typeof r.converter == "function" ? { fromAttribute: r.converter } : r.converter?.fromAttribute !== void 0 ? r.converter : g;
187
- this._$Em = s;
188
- const a = i.fromAttribute(e, r.type);
189
- this[s] = a ?? this._$Ej?.get(s) ?? a, this._$Em = null;
190
- }
191
- }
192
- requestUpdate(t, e, o) {
193
- if (t !== void 0) {
194
- const s = this.constructor, r = this[t];
195
- if (o ??= s.getPropertyOptions(t), !((o.hasChanged ?? m)(r, e) || o.useDefault && o.reflect && r === this._$Ej?.get(t) && !this.hasAttribute(s._$Eu(t, o)))) return;
196
- this.C(t, e, o);
197
- }
198
- this.isUpdatePending === !1 && (this._$ES = this._$EP());
199
- }
200
- C(t, e, { useDefault: o, reflect: s, wrapped: r }, i) {
201
- o && !(this._$Ej ??= /* @__PURE__ */ new Map()).has(t) && (this._$Ej.set(t, i ?? e ?? this[t]), r !== !0 || i !== void 0) || (this._$AL.has(t) || (this.hasUpdated || o || (e = void 0), this._$AL.set(t, e)), s === !0 && this._$Em !== t && (this._$Eq ??= /* @__PURE__ */ new Set()).add(t));
202
- }
203
- async _$EP() {
204
- this.isUpdatePending = !0;
205
- try {
206
- await this._$ES;
207
- } catch (e) {
208
- Promise.reject(e);
209
- }
210
- const t = this.scheduleUpdate();
211
- return t != null && await t, !this.isUpdatePending;
212
- }
213
- scheduleUpdate() {
214
- return this.performUpdate();
215
- }
216
- performUpdate() {
217
- if (!this.isUpdatePending) return;
218
- if (!this.hasUpdated) {
219
- if (this.renderRoot ??= this.createRenderRoot(), this._$Ep) {
220
- for (const [s, r] of this._$Ep) this[s] = r;
221
- this._$Ep = void 0;
222
- }
223
- const o = this.constructor.elementProperties;
224
- if (o.size > 0) for (const [s, r] of o) {
225
- const { wrapped: i } = r, a = this[s];
226
- i !== !0 || this._$AL.has(s) || a === void 0 || this.C(s, void 0, r, a);
227
- }
228
- }
229
- let t = !1;
230
- const e = this._$AL;
231
- try {
232
- t = this.shouldUpdate(e), t ? (this.willUpdate(e), this._$EO?.forEach(((o) => o.hostUpdate?.())), this.update(e)) : this._$EM();
233
- } catch (o) {
234
- throw t = !1, this._$EM(), o;
235
- }
236
- t && this._$AE(e);
237
- }
238
- willUpdate(t) {
239
- }
240
- _$AE(t) {
241
- this._$EO?.forEach(((e) => e.hostUpdated?.())), this.hasUpdated || (this.hasUpdated = !0, this.firstUpdated(t)), this.updated(t);
242
- }
243
- _$EM() {
244
- this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = !1;
245
- }
246
- get updateComplete() {
247
- return this.getUpdateComplete();
248
- }
249
- getUpdateComplete() {
250
- return this._$ES;
251
- }
252
- shouldUpdate(t) {
253
- return !0;
254
- }
255
- update(t) {
256
- this._$Eq &&= this._$Eq.forEach(((e) => this._$ET(e, this[e]))), this._$EM();
257
- }
258
- updated(t) {
259
- }
260
- firstUpdated(t) {
261
- }
262
- }
263
- h.elementStyles = [], h.shadowRootOptions = { mode: "open" }, h[c("elementProperties")] = /* @__PURE__ */ new Map(), h[c("finalized")] = /* @__PURE__ */ new Map(), q?.({ ReactiveElement: h }), (y.reactiveElementVersions ??= []).push("2.1.1");
264
- /**
265
- * @license
266
- * Copyright 2017 Google LLC
267
- * SPDX-License-Identifier: BSD-3-Clause
268
- */
269
- const H = { attribute: !0, type: String, converter: g, reflect: !1, hasChanged: m }, B = (n = H, t, e) => {
270
- const { kind: o, metadata: s } = e;
271
- let r = globalThis.litPropertyMetadata.get(s);
272
- if (r === void 0 && globalThis.litPropertyMetadata.set(s, r = /* @__PURE__ */ new Map()), o === "setter" && ((n = Object.create(n)).wrapped = !0), r.set(e.name, n), o === "accessor") {
273
- const { name: i } = e;
274
- return { set(a) {
275
- const d = t.get.call(this);
276
- t.set.call(this, a), this.requestUpdate(i, d, n);
277
- }, init(a) {
278
- return a !== void 0 && this.C(i, void 0, n, a), a;
279
- } };
280
- }
281
- if (o === "setter") {
282
- const { name: i } = e;
283
- return function(a) {
284
- const d = this[i];
285
- t.call(this, a), this.requestUpdate(i, d, n);
286
- };
287
- }
288
- throw Error("Unsupported decorator location: " + o);
289
- };
290
- function _(n) {
291
- return (t, e) => typeof e == "object" ? B(n, t, e) : ((o, s, r) => {
292
- const i = s.hasOwnProperty(r);
293
- return s.constructor.createProperty(r, o), i ? Object.getOwnPropertyDescriptor(s, r) : void 0;
294
- })(n, t, e);
295
- }
296
- /**
297
- * @license
298
- * Copyright 2017 Google LLC
299
- * SPDX-License-Identifier: BSD-3-Clause
300
- */
301
- function J(n) {
302
- return _({ ...n, state: !0, attribute: !1 });
303
- }
304
- const K = A`
305
- :host {
306
- /* Global Footer Styles */
307
- --_nys-globalfooter-color: var(
308
- --nys-color-text,
309
- var(--nys-color-neutral-900, #1b1b1b)
310
- );
311
- --_nys-globalfooter-background-color: var(
312
- --nys-color-theme-weaker,
313
- var(--nys-color-state-blue-50, #eff6fb)
314
- );
315
- --_nys-globalfooter-gap: var(--nys-space-300, 24px);
316
- --_nys-globalfooter-padding--y: var(--nys-space-400, 32px);
317
- --_nys-globalfooter-padding--gutter: var(--nys-gutter-sm, 20px);
318
- --_nys-globalfooter-font-size--agency: var(
319
- --nys-font-size-agency-xl,
320
- var(--nys-font-size-2xl, 22px)
321
- );
322
- --_nys-globalfooter-font-size--link: var(
323
- --nys-font-size-body-md,
324
- var(--nys-font-size-md, 16px)
325
- );
326
- --_nys-globalfooter-line-height--agency: normal;
327
- --_nys-globalfooter-font-weight--regular: var(
328
- --nys-font-weight-regular,
329
- 400
330
- );
331
- --_nys-globalfooter-font-weight--semibold: var(
332
- --nys-font-weight-semibold,
333
- 600
334
- );
335
- --_nys-globalfooter-max-width: var(--nys-max-content-width, 1280px);
336
-
337
- /* Agency Name */
338
- --_nys-globalfooter-font-family--agency: var(
339
- --nys-font-family-agency,
340
- "D Sari",
341
- Arial,
342
- sans-serif
343
- );
344
-
345
- /* Links */
346
- --_nys-globalfooter-column-gap: var(--nys-space-400, 32px);
347
- --_nys-globalfooter-row-gap: var(--nys-space-400, 32px);
348
- --_nys-globalfooter-line-height--link: var(
349
- --nys-font-lineheight-ui-md,
350
- 24px
351
- );
352
- --_nys-globalfooter-letter-spacing: var(
353
- --nys-font-letterspacing-ui-md,
354
- var(--nys-font-letterspacing-400, 0.044px)
355
- );
356
- --_nys-globalfooter-font-family--link: var(
357
- --nys-font-family-ui,
358
- var(
359
- --nys-font-family-sans,
360
- "Proxima Nova",
361
- "Helvetica Neue",
362
- "Helvetica",
363
- "Arial",
364
- sans-serif
365
- )
366
- );
367
- --_nys-globalfooter-text-decoration-thickness: var(--nys-size-2px, 2px);
368
-
369
- /* Divider */
370
- --_nys-globalfooter-background--divider: var(--nys-color-theme, #154973);
371
- --_nys-globalfooter-margin--divider: var(--nys-space-50, 4px);
372
- }
373
-
374
- .nys-globalfooter {
375
- display: flex;
376
- padding: var(--_nys-globalfooter-padding--y)
377
- var(--_nys-globalfooter-padding--gutter);
378
- justify-content: center;
379
- background-color: var(--_nys-globalfooter-background-color);
380
- color: var(--_nys-globalfooter-color);
381
- width: 100%;
382
- box-sizing: border-box;
383
- }
384
-
385
- /** Main Container **/
386
- .nys-globalfooter__main-container {
387
- display: flex;
388
- flex-direction: column;
389
- gap: var(--_nys-globalfooter-gap);
390
- width: 100%;
391
- max-width: var(--_nys-globalfooter-max-width);
392
- }
393
-
394
- /* The Agency Name */
395
- .nys-globalfooter__name {
396
- text-align: left;
397
- margin: 0;
398
- color: var(--_nys-globalfooter-color);
399
- font-family: var(--_nys-globalfooter-font-family--agency);
400
- font-size: var(--_nys-globalfooter-font-size--agency);
401
- font-style: normal;
402
- font-weight: var(--_nys-globalfooter-font-weight--semibold);
403
- line-height: var(--_nys-globalfooter-line-height--agency);
404
- letter-spacing: normal;
405
- }
406
-
407
- /** Slotted content resets (menu links - cloned into shadowDOM from lightDOM) **/
408
- ul {
409
- list-style-type: none;
410
- padding: 0;
411
- margin: 0;
412
- }
413
-
414
- li {
415
- margin: 0;
416
- padding: 0;
417
- }
418
-
419
- a,
420
- span {
421
- color: var(--_nys-globalfooter-color);
422
- text-decoration: none;
423
- font-family: var(--_nys-globalfooter-font-family--link);
424
- font-size: var(--_nys-globalfooter-font-size--link);
425
- font-style: normal;
426
- font-weight: var(--_nys-globalfooter-font-weight--semibold);
427
- line-height: var(--_nys-globalfooter-line-height--link);
428
- letter-spacing: var(--_nys-globalfooter-letter-spacing);
429
- }
430
-
431
- ul li > span + ul li a {
432
- font-weight: var(--_nys-globalfooter-font-weight--regular);
433
- }
434
-
435
- a:hover {
436
- text-decoration: underline;
437
- }
438
- a:active {
439
- text-decoration-thickness: var(
440
- --_nys-globalfooter-text-decoration-thickness
441
- );
442
- }
443
-
444
- /** Specific layout for menu links (grouped or singular list of menus) **/
445
- .nys-globalfooter__content {
446
- width: 100%;
447
- }
448
-
449
- .nys-globalfooter__content ul {
450
- display: flex;
451
- flex-direction: column;
452
- gap: var(--_nys-globalfooter-row-gap) var(--_nys-globalfooter-column-gap);
453
- flex-wrap: wrap;
454
- }
455
-
456
- /** Column Menus **/
457
- .nys-globalfooter__content ul li:has(span ~ ul) {
458
- flex: 1;
459
- display: flex;
460
- flex-direction: column;
461
- }
462
-
463
- .nys-globalfooter__content ul:has(li > span ~ ul) {
464
- --_nys-globalfooter-column-gap: var(--nys-space-500, 40px);
465
- }
466
-
467
- .nys-globalfooter__content ul li > span ~ ul {
468
- display: flex;
469
- flex-direction: column;
470
- gap: var(--nys-space-200, 16px);
471
- }
472
-
473
- .divider {
474
- margin-top: var(--_nys-globalfooter-margin--divider);
475
- margin-bottom: var(--nys-space-300, 24px);
476
- }
477
-
478
- /* Breakpoints using NYSDS Guidelines (Menu Links) */
479
- @media (min-width: 768px) {
480
- /* Tablet (MD - Above 768px) */
481
- .nys-globalfooter__content ul {
482
- flex-direction: row;
483
- }
484
- .nys-globalfooter__content ul li:has(span ~ ul) {
485
- flex: 1 0 205px;
486
- }
487
- :host {
488
- --_nys-globalfooter-padding--gutter: var(--nys-gutter-lg, 32px);
489
- --_nys-globalfooter-row-gap: var(--nys-space-600, 48px);
490
- }
491
- }
492
-
493
- @media (min-width: 1280px) {
494
- /* Large Desktop (XL - Above 1280px) */
495
- :host {
496
- --_nys-globalfooter-padding--gutter: var(--nys-gutter-xl, 64px);
497
- }
498
- }
499
- `;
500
- var W = Object.defineProperty, b = (n, t, e, o) => {
501
- for (var s = void 0, r = n.length - 1, i; r >= 0; r--)
502
- (i = n[r]) && (s = i(t, e, s) || s);
503
- return s && W(t, e, s), s;
1
+ import { LitElement as h, unsafeCSS as m, html as i } from "lit";
2
+ import { property as c, state as b } from "lit/decorators.js";
3
+ const _ = ':host{--_nys-globalfooter-color: var( --nys-color-text, var(--nys-color-neutral-900, #1b1b1b) );--_nys-globalfooter-background-color: var( --nys-color-theme-weaker, var(--nys-color-state-blue-50, #eff6fb) );--_nys-globalfooter-gap: var(--nys-space-300, 24px);--_nys-globalfooter-padding--y: var(--nys-space-400, 32px);--_nys-globalfooter-padding--gutter: var(--nys-gutter-sm, 20px);--_nys-globalfooter-font-size--agency: var( --nys-font-size-agency-xl, var(--nys-font-size-2xl, 22px) );--_nys-globalfooter-font-size--link: var( --nys-font-size-body-md, var(--nys-font-size-md, 16px) );--_nys-globalfooter-line-height--agency: normal;--_nys-globalfooter-font-weight--regular: var( --nys-font-weight-regular, 400 );--_nys-globalfooter-font-weight--semibold: var( --nys-font-weight-semibold, 600 );--_nys-globalfooter-max-width: var(--nys-max-content-width, 1280px);--_nys-globalfooter-font-family--agency: var( --nys-font-family-agency, "D Sari", Arial, sans-serif );--_nys-globalfooter-column-gap: var(--nys-space-400, 32px);--_nys-globalfooter-row-gap: var(--nys-space-400, 32px);--_nys-globalfooter-line-height--link: var( --nys-font-lineheight-ui-md, 24px );--_nys-globalfooter-letter-spacing: var( --nys-font-letterspacing-ui-md, var(--nys-font-letterspacing-400, .044px) );--_nys-globalfooter-font-family--link: var( --nys-font-family-ui, var( --nys-font-family-sans, "Proxima Nova", "Helvetica Neue", "Helvetica", "Arial", sans-serif ) );--_nys-globalfooter-text-decoration-thickness: var(--nys-size-2px, 2px);--_nys-globalfooter-background--divider: var(--nys-color-theme, #154973);--_nys-globalfooter-margin--divider: var(--nys-space-50, 4px)}.nys-globalfooter{display:flex;padding:var(--_nys-globalfooter-padding--y) var(--_nys-globalfooter-padding--gutter);justify-content:center;background-color:var(--_nys-globalfooter-background-color);color:var(--_nys-globalfooter-color);width:100%;box-sizing:border-box}.nys-globalfooter__main-container{display:flex;flex-direction:column;gap:var(--_nys-globalfooter-gap);width:100%;max-width:var(--_nys-globalfooter-max-width)}.nys-globalfooter__name{text-align:left;margin:0;color:var(--_nys-globalfooter-color);font-family:var(--_nys-globalfooter-font-family--agency);font-size:var(--_nys-globalfooter-font-size--agency);font-style:normal;font-weight:var(--_nys-globalfooter-font-weight--semibold);line-height:var(--_nys-globalfooter-line-height--agency);letter-spacing:normal}ul{list-style-type:none;padding:0;margin:0}li{margin:0;padding:0}a,span{color:var(--_nys-globalfooter-color);text-decoration:none;font-family:var(--_nys-globalfooter-font-family--link);font-size:var(--_nys-globalfooter-font-size--link);font-style:normal;font-weight:var(--_nys-globalfooter-font-weight--semibold);line-height:var(--_nys-globalfooter-line-height--link);letter-spacing:var(--_nys-globalfooter-letter-spacing)}ul li>span+ul li a{font-weight:var(--_nys-globalfooter-font-weight--regular)}a:hover{text-decoration:underline}a:active{text-decoration-thickness:var(--_nys-globalfooter-text-decoration-thickness)}.nys-globalfooter__content{width:100%}.nys-globalfooter__content ul{display:flex;flex-direction:column;gap:var(--_nys-globalfooter-row-gap) var(--_nys-globalfooter-column-gap);flex-wrap:wrap}.nys-globalfooter__content ul li:has(span~ul){flex:1;display:flex;flex-direction:column}.nys-globalfooter__content ul:has(li>span~ul){--_nys-globalfooter-column-gap: var(--nys-space-500, 40px)}.nys-globalfooter__content ul li>span~ul{display:flex;flex-direction:column;gap:var(--nys-space-200, 16px)}.divider{margin-top:var(--_nys-globalfooter-margin--divider);margin-bottom:var(--nys-space-300, 24px)}@media(min-width:768px){.nys-globalfooter__content ul{flex-direction:row}.nys-globalfooter__content ul li:has(span~ul){flex:1 0 205px}:host{--_nys-globalfooter-padding--gutter: var(--nys-gutter-lg, 32px);--_nys-globalfooter-row-gap: var(--nys-space-600, 48px)}}@media(min-width:1280px){:host{--_nys-globalfooter-padding--gutter: var(--nys-gutter-xl, 64px)}}';
4
+ var v = Object.defineProperty, g = (y, a, l, n) => {
5
+ for (var o = void 0, e = y.length - 1, t; e >= 0; e--)
6
+ (t = y[e]) && (o = t(a, l, o) || o);
7
+ return o && v(a, l, o), o;
504
8
  };
505
- const v = class v extends U {
9
+ const f = class f extends h {
506
10
  constructor() {
507
11
  super(...arguments), this.agencyName = "", this.homepageLink = "", this.slotHasContent = !0;
508
12
  }
@@ -513,35 +17,35 @@ const v = class v extends U {
513
17
  /******************** Functions ********************/
514
18
  // Gets called when the slot content changes and directly appends the slotted elements into the shadow DOM
515
19
  async _handleSlotChange() {
516
- const t = this.shadowRoot?.querySelector("slot");
517
- if (!t) return;
518
- const e = t?.assignedNodes({ flatten: !0 }).filter((r) => r.nodeType === Node.ELEMENT_NODE);
519
- await Promise.resolve(), this.slotHasContent = e.length > 0;
520
- const o = this.shadowRoot?.querySelector(
20
+ const a = this.shadowRoot?.querySelector("slot");
21
+ if (!a) return;
22
+ const l = a?.assignedNodes({ flatten: !0 }).filter((e) => e.nodeType === Node.ELEMENT_NODE);
23
+ await Promise.resolve(), this.slotHasContent = l.length > 0;
24
+ const n = this.shadowRoot?.querySelector(
521
25
  ".nys-globalfooter__content"
522
- ), s = e?.some(
523
- (r) => r.tagName === "H4"
26
+ ), o = l?.some(
27
+ (e) => e.tagName === "H4"
524
28
  );
525
- o && (o.classList.toggle("columns", s), o.classList.toggle("small", !s), o.innerHTML = "", e.forEach((i) => {
526
- if (i.nodeType === Node.ELEMENT_NODE) {
527
- const a = i.cloneNode(!0);
528
- ["script", "iframe", "object", "embed", "img"].forEach((P) => {
529
- a.querySelectorAll(P).forEach((C) => C.remove());
530
- }), o.appendChild(a), i.remove();
29
+ n && (n.classList.toggle("columns", o), n.classList.toggle("small", !o), n.innerHTML = "", l.forEach((t) => {
30
+ if (t.nodeType === Node.ELEMENT_NODE) {
31
+ const r = t.cloneNode(!0);
32
+ ["script", "iframe", "object", "embed", "img"].forEach((d) => {
33
+ r.querySelectorAll(d).forEach((p) => p.remove());
34
+ }), n.appendChild(r), t.remove();
531
35
  }
532
- }), o.querySelectorAll("span").forEach((i) => {
533
- const a = document.createElement("nys-divider");
534
- a.classList.add("divider"), i.insertAdjacentElement("afterend", a);
36
+ }), n.querySelectorAll("span").forEach((t) => {
37
+ const r = document.createElement("nys-divider");
38
+ r.classList.add("divider"), t.insertAdjacentElement("afterend", r);
535
39
  }));
536
40
  }
537
41
  render() {
538
- return p`
42
+ return i`
539
43
  <footer class="nys-globalfooter">
540
44
  <div class="nys-globalfooter__main-container">
541
- ${this.homepageLink?.trim() ? p`<a href=${this.homepageLink?.trim()}>
45
+ ${this.homepageLink?.trim() ? i`<a href=${this.homepageLink?.trim()}>
542
46
  <h2 class="nys-globalfooter__name">${this.agencyName}</h2>
543
- </a>` : p`<h2 class="nys-globalfooter__name">${this.agencyName}</h2>`}
544
- ${this.slotHasContent ? p`<div class="nys-globalfooter__content">
47
+ </a>` : i`<h2 class="nys-globalfooter__name">${this.agencyName}</h2>`}
48
+ ${this.slotHasContent ? i`<div class="nys-globalfooter__content">
545
49
  <slot
546
50
  style="display: hidden"
547
51
  @slotchange="${this._handleSlotChange}"
@@ -552,19 +56,19 @@ const v = class v extends U {
552
56
  `;
553
57
  }
554
58
  };
555
- v.styles = K;
556
- let l = v;
557
- b([
558
- _({ type: String })
559
- ], l.prototype, "agencyName");
560
- b([
561
- _({ type: String })
562
- ], l.prototype, "homepageLink");
563
- b([
564
- J()
565
- ], l.prototype, "slotHasContent");
566
- customElements.get("nys-globalfooter") || customElements.define("nys-globalfooter", l);
59
+ f.styles = m(_);
60
+ let s = f;
61
+ g([
62
+ c({ type: String })
63
+ ], s.prototype, "agencyName");
64
+ g([
65
+ c({ type: String })
66
+ ], s.prototype, "homepageLink");
67
+ g([
68
+ b()
69
+ ], s.prototype, "slotHasContent");
70
+ customElements.get("nys-globalfooter") || customElements.define("nys-globalfooter", s);
567
71
  export {
568
- l as NysGlobalFooter
72
+ s as NysGlobalFooter
569
73
  };
570
74
  //# sourceMappingURL=nys-globalfooter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nys-globalfooter.js","sources":["../../../node_modules/@lit/reactive-element/css-tag.js","../../../node_modules/@lit/reactive-element/reactive-element.js","../../../node_modules/@lit/reactive-element/decorators/property.js","../../../node_modules/@lit/reactive-element/decorators/state.js","../src/nys-globalfooter.styles.ts","../src/nys-globalfooter.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,s=Symbol(),o=new WeakMap;class n{constructor(t,e,o){if(this._$cssResult$=!0,o!==s)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const s=this.t;if(e&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=o.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&o.set(s,t))}return t}toString(){return this.cssText}}const r=t=>new n(\"string\"==typeof t?t:t+\"\",void 0,s),i=(t,...e)=>{const o=1===t.length?t[0]:e.reduce(((e,s,o)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(s)+t[o+1]),t[0]);return new n(o,t,s)},S=(s,o)=>{if(e)s.adoptedStyleSheets=o.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet));else for(const e of o){const o=document.createElement(\"style\"),n=t.litNonce;void 0!==n&&o.setAttribute(\"nonce\",n),o.textContent=e.cssText,s.appendChild(o)}},c=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const s of t.cssRules)e+=s.cssText;return r(e)})(t):t;export{n as CSSResult,S as adoptStyles,i as css,c as getCompatibleStyle,e as supportsAdoptingStyleSheets,r as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n","import{getCompatibleStyle as t,adoptStyles as s}from\"./css-tag.js\";export{CSSResult,css,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{is:i,defineProperty:e,getOwnPropertyDescriptor:h,getOwnPropertyNames:r,getOwnPropertySymbols:o,getPrototypeOf:n}=Object,a=globalThis,c=a.trustedTypes,l=c?c.emptyScript:\"\",p=a.reactiveElementPolyfillSupport,d=(t,s)=>t,u={toAttribute(t,s){switch(s){case Boolean:t=t?l:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,s){let i=t;switch(s){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},f=(t,s)=>!i(t,s),b={attribute:!0,type:String,converter:u,reflect:!1,useDefault:!1,hasChanged:f};Symbol.metadata??=Symbol(\"metadata\"),a.litPropertyMetadata??=new WeakMap;class y extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,s=b){if(s.state&&(s.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(t)&&((s=Object.create(s)).wrapped=!0),this.elementProperties.set(t,s),!s.noAccessor){const i=Symbol(),h=this.getPropertyDescriptor(t,i,s);void 0!==h&&e(this.prototype,t,h)}}static getPropertyDescriptor(t,s,i){const{get:e,set:r}=h(this.prototype,t)??{get(){return this[s]},set(t){this[s]=t}};return{get:e,set(s){const h=e?.call(this);r?.call(this,s),this.requestUpdate(t,h,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??b}static _$Ei(){if(this.hasOwnProperty(d(\"elementProperties\")))return;const t=n(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(d(\"finalized\")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(d(\"properties\"))){const t=this.properties,s=[...r(t),...o(t)];for(const i of s)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const s=litPropertyMetadata.get(t);if(void 0!==s)for(const[t,i]of s)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,s]of this.elementProperties){const i=this._$Eu(t,s);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(s){const i=[];if(Array.isArray(s)){const e=new Set(s.flat(1/0).reverse());for(const s of e)i.unshift(t(s))}else void 0!==s&&i.push(t(s));return i}static _$Eu(t,s){const i=s.attribute;return!1===i?void 0:\"string\"==typeof i?i:\"string\"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((t=>t(this)))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,s=this.constructor.elementProperties;for(const i of s.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return s(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((t=>t.hostConnected?.()))}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach((t=>t.hostDisconnected?.()))}attributeChangedCallback(t,s,i){this._$AK(t,i)}_$ET(t,s){const i=this.constructor.elementProperties.get(t),e=this.constructor._$Eu(t,i);if(void 0!==e&&!0===i.reflect){const h=(void 0!==i.converter?.toAttribute?i.converter:u).toAttribute(s,i.type);this._$Em=t,null==h?this.removeAttribute(e):this.setAttribute(e,h),this._$Em=null}}_$AK(t,s){const i=this.constructor,e=i._$Eh.get(t);if(void 0!==e&&this._$Em!==e){const t=i.getPropertyOptions(e),h=\"function\"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:u;this._$Em=e;const r=h.fromAttribute(s,t.type);this[e]=r??this._$Ej?.get(e)??r,this._$Em=null}}requestUpdate(t,s,i){if(void 0!==t){const e=this.constructor,h=this[t];if(i??=e.getPropertyOptions(t),!((i.hasChanged??f)(h,s)||i.useDefault&&i.reflect&&h===this._$Ej?.get(t)&&!this.hasAttribute(e._$Eu(t,i))))return;this.C(t,s,i)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(t,s,{useDefault:i,reflect:e,wrapped:h},r){i&&!(this._$Ej??=new Map).has(t)&&(this._$Ej.set(t,r??s??this[t]),!0!==h||void 0!==r)||(this._$AL.has(t)||(this.hasUpdated||i||(s=void 0),this._$AL.set(t,s)),!0===e&&this._$Em!==t&&(this._$Eq??=new Set).add(t))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,s]of this._$Ep)this[t]=s;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[s,i]of t){const{wrapped:t}=i,e=this[s];!0!==t||this._$AL.has(s)||void 0===e||this.C(s,void 0,i,e)}}let t=!1;const s=this._$AL;try{t=this.shouldUpdate(s),t?(this.willUpdate(s),this._$EO?.forEach((t=>t.hostUpdate?.())),this.update(s)):this._$EM()}catch(s){throw t=!1,this._$EM(),s}t&&this._$AE(s)}willUpdate(t){}_$AE(t){this._$EO?.forEach((t=>t.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Eq&&=this._$Eq.forEach((t=>this._$ET(t,this[t]))),this._$EM()}updated(t){}firstUpdated(t){}}y.elementStyles=[],y.shadowRootOptions={mode:\"open\"},y[d(\"elementProperties\")]=new Map,y[d(\"finalized\")]=new Map,p?.({ReactiveElement:y}),(a.reactiveElementVersions??=[]).push(\"2.1.1\");export{y as ReactiveElement,s as adoptStyles,u as defaultConverter,t as getCompatibleStyle,f as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n","import{defaultConverter as t,notEqual as e}from\"../reactive-element.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o={attribute:!0,type:String,converter:t,reflect:!1,hasChanged:e},r=(t=o,e,r)=>{const{kind:n,metadata:i}=r;let s=globalThis.litPropertyMetadata.get(i);if(void 0===s&&globalThis.litPropertyMetadata.set(i,s=new Map),\"setter\"===n&&((t=Object.create(t)).wrapped=!0),s.set(r.name,t),\"accessor\"===n){const{name:o}=r;return{set(r){const n=e.get.call(this);e.set.call(this,r),this.requestUpdate(o,n,t)},init(e){return void 0!==e&&this.C(o,void 0,t,e),e}}}if(\"setter\"===n){const{name:o}=r;return function(r){const n=this[o];e.call(this,r),this.requestUpdate(o,n,t)}}throw Error(\"Unsupported decorator location: \"+n)};function n(t){return(e,o)=>\"object\"==typeof o?r(t,e,o):((t,e,o)=>{const r=e.hasOwnProperty(o);return e.constructor.createProperty(o,t),r?Object.getOwnPropertyDescriptor(e,o):void 0})(t,e,o)}export{n as property,r as standardProperty};\n//# sourceMappingURL=property.js.map\n","import{property as t}from\"./property.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function r(r){return t({...r,state:!0,attribute:!1})}export{r as state};\n//# sourceMappingURL=state.js.map\n","import { css } from \"lit\";\n\nexport default css`\n :host {\n /* Global Footer Styles */\n --_nys-globalfooter-color: var(\n --nys-color-text,\n var(--nys-color-neutral-900, #1b1b1b)\n );\n --_nys-globalfooter-background-color: var(\n --nys-color-theme-weaker,\n var(--nys-color-state-blue-50, #eff6fb)\n );\n --_nys-globalfooter-gap: var(--nys-space-300, 24px);\n --_nys-globalfooter-padding--y: var(--nys-space-400, 32px);\n --_nys-globalfooter-padding--gutter: var(--nys-gutter-sm, 20px);\n --_nys-globalfooter-font-size--agency: var(\n --nys-font-size-agency-xl,\n var(--nys-font-size-2xl, 22px)\n );\n --_nys-globalfooter-font-size--link: var(\n --nys-font-size-body-md,\n var(--nys-font-size-md, 16px)\n );\n --_nys-globalfooter-line-height--agency: normal;\n --_nys-globalfooter-font-weight--regular: var(\n --nys-font-weight-regular,\n 400\n );\n --_nys-globalfooter-font-weight--semibold: var(\n --nys-font-weight-semibold,\n 600\n );\n --_nys-globalfooter-max-width: var(--nys-max-content-width, 1280px);\n\n /* Agency Name */\n --_nys-globalfooter-font-family--agency: var(\n --nys-font-family-agency,\n \"D Sari\",\n Arial,\n sans-serif\n );\n\n /* Links */\n --_nys-globalfooter-column-gap: var(--nys-space-400, 32px);\n --_nys-globalfooter-row-gap: var(--nys-space-400, 32px);\n --_nys-globalfooter-line-height--link: var(\n --nys-font-lineheight-ui-md,\n 24px\n );\n --_nys-globalfooter-letter-spacing: var(\n --nys-font-letterspacing-ui-md,\n var(--nys-font-letterspacing-400, 0.044px)\n );\n --_nys-globalfooter-font-family--link: var(\n --nys-font-family-ui,\n var(\n --nys-font-family-sans,\n \"Proxima Nova\",\n \"Helvetica Neue\",\n \"Helvetica\",\n \"Arial\",\n sans-serif\n )\n );\n --_nys-globalfooter-text-decoration-thickness: var(--nys-size-2px, 2px);\n\n /* Divider */\n --_nys-globalfooter-background--divider: var(--nys-color-theme, #154973);\n --_nys-globalfooter-margin--divider: var(--nys-space-50, 4px);\n }\n\n .nys-globalfooter {\n display: flex;\n padding: var(--_nys-globalfooter-padding--y)\n var(--_nys-globalfooter-padding--gutter);\n justify-content: center;\n background-color: var(--_nys-globalfooter-background-color);\n color: var(--_nys-globalfooter-color);\n width: 100%;\n box-sizing: border-box;\n }\n\n /** Main Container **/\n .nys-globalfooter__main-container {\n display: flex;\n flex-direction: column;\n gap: var(--_nys-globalfooter-gap);\n width: 100%;\n max-width: var(--_nys-globalfooter-max-width);\n }\n\n /* The Agency Name */\n .nys-globalfooter__name {\n text-align: left;\n margin: 0;\n color: var(--_nys-globalfooter-color);\n font-family: var(--_nys-globalfooter-font-family--agency);\n font-size: var(--_nys-globalfooter-font-size--agency);\n font-style: normal;\n font-weight: var(--_nys-globalfooter-font-weight--semibold);\n line-height: var(--_nys-globalfooter-line-height--agency);\n letter-spacing: normal;\n }\n\n /** Slotted content resets (menu links - cloned into shadowDOM from lightDOM) **/\n ul {\n list-style-type: none;\n padding: 0;\n margin: 0;\n }\n\n li {\n margin: 0;\n padding: 0;\n }\n\n a,\n span {\n color: var(--_nys-globalfooter-color);\n text-decoration: none;\n font-family: var(--_nys-globalfooter-font-family--link);\n font-size: var(--_nys-globalfooter-font-size--link);\n font-style: normal;\n font-weight: var(--_nys-globalfooter-font-weight--semibold);\n line-height: var(--_nys-globalfooter-line-height--link);\n letter-spacing: var(--_nys-globalfooter-letter-spacing);\n }\n\n ul li > span + ul li a {\n font-weight: var(--_nys-globalfooter-font-weight--regular);\n }\n\n a:hover {\n text-decoration: underline;\n }\n a:active {\n text-decoration-thickness: var(\n --_nys-globalfooter-text-decoration-thickness\n );\n }\n\n /** Specific layout for menu links (grouped or singular list of menus) **/\n .nys-globalfooter__content {\n width: 100%;\n }\n\n .nys-globalfooter__content ul {\n display: flex;\n flex-direction: column;\n gap: var(--_nys-globalfooter-row-gap) var(--_nys-globalfooter-column-gap);\n flex-wrap: wrap;\n }\n\n /** Column Menus **/\n .nys-globalfooter__content ul li:has(span ~ ul) {\n flex: 1;\n display: flex;\n flex-direction: column;\n }\n\n .nys-globalfooter__content ul:has(li > span ~ ul) {\n --_nys-globalfooter-column-gap: var(--nys-space-500, 40px);\n }\n\n .nys-globalfooter__content ul li > span ~ ul {\n display: flex;\n flex-direction: column;\n gap: var(--nys-space-200, 16px);\n }\n\n .divider {\n margin-top: var(--_nys-globalfooter-margin--divider);\n margin-bottom: var(--nys-space-300, 24px);\n }\n\n /* Breakpoints using NYSDS Guidelines (Menu Links) */\n @media (min-width: 768px) {\n /* Tablet (MD - Above 768px) */\n .nys-globalfooter__content ul {\n flex-direction: row;\n }\n .nys-globalfooter__content ul li:has(span ~ ul) {\n flex: 1 0 205px;\n }\n :host {\n --_nys-globalfooter-padding--gutter: var(--nys-gutter-lg, 32px);\n --_nys-globalfooter-row-gap: var(--nys-space-600, 48px);\n }\n }\n\n @media (min-width: 1280px) {\n /* Large Desktop (XL - Above 1280px) */\n :host {\n --_nys-globalfooter-padding--gutter: var(--nys-gutter-xl, 64px);\n }\n }\n`;\n","import { LitElement, html } from \"lit\";\nimport { property, state } from \"lit/decorators.js\";\nimport styles from \"./nys-globalfooter.styles\";\n\nexport class NysGlobalFooter extends LitElement {\n static styles = styles;\n\n /********************** Properties **********************/\n @property({ type: String }) agencyName = \"\";\n @property({ type: String }) homepageLink = \"\";\n @state() private slotHasContent = true;\n\n /**************** Lifecycle Methods ****************/\n\n firstUpdated() {\n // Check for slot content after rendering\n const slot = this.shadowRoot?.querySelector<HTMLSlotElement>(\"slot\");\n slot?.addEventListener(\"slotchange\", () => this._handleSlotChange());\n this._handleSlotChange(); // Initial check\n }\n\n /******************** Functions ********************/\n // Gets called when the slot content changes and directly appends the slotted elements into the shadow DOM\n private async _handleSlotChange() {\n const slot = this.shadowRoot?.querySelector<HTMLSlotElement>(\"slot\");\n if (!slot) return;\n\n const assignedNodes = slot\n ?.assignedNodes({ flatten: true })\n .filter((node) => node.nodeType === Node.ELEMENT_NODE) as Element[]; // Filter to elements only\n\n await Promise.resolve(); // Wait for current update cycle to complete before modifying reactive state (solves the lit issue \"scheduled an update\")\n\n // Update slotHasContent based on assigned elements\n this.slotHasContent = assignedNodes.length > 0;\n\n // Determine layout based on content structure\n const container = this.shadowRoot?.querySelector(\n \".nys-globalfooter__content\",\n );\n const hasMultipleGroups = assignedNodes?.some(\n (node) => node.tagName === \"H4\",\n );\n\n // Toggle layout classes\n if (container) {\n container.classList.toggle(\"columns\", hasMultipleGroups);\n container.classList.toggle(\"small\", !hasMultipleGroups);\n\n // Clear existing children in the container\n container.innerHTML = \"\";\n\n // Clone and append slotted elements into the shadow DOM container\n assignedNodes.forEach((node) => {\n if (node.nodeType === Node.ELEMENT_NODE) {\n const cleanNode = node.cloneNode(true);\n\n // Remove <script>, <iframe>, <object>, and any potentially dangerous elements XSS\n const dangerousTags = [\"script\", \"iframe\", \"object\", \"embed\", \"img\"];\n dangerousTags.forEach((tag) => {\n (cleanNode as Element)\n .querySelectorAll(tag)\n .forEach((element) => element.remove());\n });\n container.appendChild(cleanNode);\n node.remove(); // Remove from light DOM to avoid duplication\n }\n });\n\n const spans = container.querySelectorAll(\"span\");\n spans.forEach((span) => {\n const divider = document.createElement(\"nys-divider\");\n divider.classList.add(\"divider\");\n span.insertAdjacentElement(\"afterend\", divider);\n });\n }\n }\n\n render() {\n return html`\n <footer class=\"nys-globalfooter\">\n <div class=\"nys-globalfooter__main-container\">\n ${!this.homepageLink?.trim()\n ? html`<h2 class=\"nys-globalfooter__name\">${this.agencyName}</h2>`\n : html`<a href=${this.homepageLink?.trim()}>\n <h2 class=\"nys-globalfooter__name\">${this.agencyName}</h2>\n </a>`}\n ${this.slotHasContent\n ? html`<div class=\"nys-globalfooter__content\">\n <slot\n style=\"display: hidden\"\n @slotchange=\"${this._handleSlotChange}\"\n ></slot>\n </div>`\n : \"\"}\n </div>\n </footer>\n `;\n }\n}\n\nif (!customElements.get(\"nys-globalfooter\")) {\n customElements.define(\"nys-globalfooter\", NysGlobalFooter);\n}\n"],"names":["t","e","s","o","n$2","r","n","S","c","i","h","a","l","p","d","u","f","b","y","styles","css","_NysGlobalFooter","LitElement","slot","assignedNodes","node","container","hasMultipleGroups","cleanNode","tag","element","span","divider","html","NysGlobalFooter","__decorateClass","property","state"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
1
+ {"version":3,"file":"nys-globalfooter.js","sources":["../src/nys-globalfooter.ts"],"sourcesContent":["import { LitElement, html, unsafeCSS } from \"lit\";\nimport { property, state } from \"lit/decorators.js\";\n// @ts-ignore: SCSS module imported via bundler as inline\nimport styles from \"./nys-globalfooter.scss?inline\";\n\nexport class NysGlobalFooter extends LitElement {\n static styles = unsafeCSS(styles);\n\n /********************** Properties **********************/\n @property({ type: String }) agencyName = \"\";\n @property({ type: String }) homepageLink = \"\";\n @state() private slotHasContent = true;\n\n /**************** Lifecycle Methods ****************/\n\n firstUpdated() {\n // Check for slot content after rendering\n const slot = this.shadowRoot?.querySelector<HTMLSlotElement>(\"slot\");\n slot?.addEventListener(\"slotchange\", () => this._handleSlotChange());\n this._handleSlotChange(); // Initial check\n }\n\n /******************** Functions ********************/\n // Gets called when the slot content changes and directly appends the slotted elements into the shadow DOM\n private async _handleSlotChange() {\n const slot = this.shadowRoot?.querySelector<HTMLSlotElement>(\"slot\");\n if (!slot) return;\n\n const assignedNodes = slot\n ?.assignedNodes({ flatten: true })\n .filter((node) => node.nodeType === Node.ELEMENT_NODE) as Element[]; // Filter to elements only\n\n await Promise.resolve(); // Wait for current update cycle to complete before modifying reactive state (solves the lit issue \"scheduled an update\")\n\n // Update slotHasContent based on assigned elements\n this.slotHasContent = assignedNodes.length > 0;\n\n // Determine layout based on content structure\n const container = this.shadowRoot?.querySelector(\n \".nys-globalfooter__content\",\n );\n const hasMultipleGroups = assignedNodes?.some(\n (node) => node.tagName === \"H4\",\n );\n\n // Toggle layout classes\n if (container) {\n container.classList.toggle(\"columns\", hasMultipleGroups);\n container.classList.toggle(\"small\", !hasMultipleGroups);\n\n // Clear existing children in the container\n container.innerHTML = \"\";\n\n // Clone and append slotted elements into the shadow DOM container\n assignedNodes.forEach((node) => {\n if (node.nodeType === Node.ELEMENT_NODE) {\n const cleanNode = node.cloneNode(true);\n\n // Remove <script>, <iframe>, <object>, and any potentially dangerous elements XSS\n const dangerousTags = [\"script\", \"iframe\", \"object\", \"embed\", \"img\"];\n dangerousTags.forEach((tag) => {\n (cleanNode as Element)\n .querySelectorAll(tag)\n .forEach((element) => element.remove());\n });\n container.appendChild(cleanNode);\n node.remove(); // Remove from light DOM to avoid duplication\n }\n });\n\n const spans = container.querySelectorAll(\"span\");\n spans.forEach((span) => {\n const divider = document.createElement(\"nys-divider\");\n divider.classList.add(\"divider\");\n span.insertAdjacentElement(\"afterend\", divider);\n });\n }\n }\n\n render() {\n return html`\n <footer class=\"nys-globalfooter\">\n <div class=\"nys-globalfooter__main-container\">\n ${!this.homepageLink?.trim()\n ? html`<h2 class=\"nys-globalfooter__name\">${this.agencyName}</h2>`\n : html`<a href=${this.homepageLink?.trim()}>\n <h2 class=\"nys-globalfooter__name\">${this.agencyName}</h2>\n </a>`}\n ${this.slotHasContent\n ? html`<div class=\"nys-globalfooter__content\">\n <slot\n style=\"display: hidden\"\n @slotchange=\"${this._handleSlotChange}\"\n ></slot>\n </div>`\n : \"\"}\n </div>\n </footer>\n `;\n }\n}\n\nif (!customElements.get(\"nys-globalfooter\")) {\n customElements.define(\"nys-globalfooter\", NysGlobalFooter);\n}\n"],"names":["_NysGlobalFooter","LitElement","slot","assignedNodes","node","container","hasMultipleGroups","cleanNode","tag","element","span","divider","html","unsafeCSS","styles","NysGlobalFooter","__decorateClass","property","state"],"mappings":";;;;;;;;AAKO,MAAMA,IAAN,MAAMA,UAAwBC,EAAW;AAAA,EAAzC,cAAA;AAAA,UAAA,GAAA,SAAA,GAIuB,KAAA,aAAa,IACb,KAAA,eAAe,IAClC,KAAQ,iBAAiB;AAAA,EAAA;AAAA;AAAA,EAIlC,eAAe;AAGb,IADa,KAAK,YAAY,cAA+B,MAAM,GAC7D,iBAAiB,cAAc,MAAM,KAAK,mBAAmB,GACnE,KAAK,kBAAA;AAAA,EACP;AAAA;AAAA;AAAA,EAIA,MAAc,oBAAoB;AAChC,UAAMC,IAAO,KAAK,YAAY,cAA+B,MAAM;AACnE,QAAI,CAACA,EAAM;AAEX,UAAMC,IAAgBD,GAClB,cAAc,EAAE,SAAS,GAAA,CAAM,EAChC,OAAO,CAACE,MAASA,EAAK,aAAa,KAAK,YAAY;AAEvD,UAAM,QAAQ,QAAA,GAGd,KAAK,iBAAiBD,EAAc,SAAS;AAG7C,UAAME,IAAY,KAAK,YAAY;AAAA,MACjC;AAAA,IAAA,GAEIC,IAAoBH,GAAe;AAAA,MACvC,CAACC,MAASA,EAAK,YAAY;AAAA,IAAA;AAI7B,IAAIC,MACFA,EAAU,UAAU,OAAO,WAAWC,CAAiB,GACvDD,EAAU,UAAU,OAAO,SAAS,CAACC,CAAiB,GAGtDD,EAAU,YAAY,IAGtBF,EAAc,QAAQ,CAACC,MAAS;AAC9B,UAAIA,EAAK,aAAa,KAAK,cAAc;AACvC,cAAMG,IAAYH,EAAK,UAAU,EAAI;AAIrC,QADsB,CAAC,UAAU,UAAU,UAAU,SAAS,KAAK,EACrD,QAAQ,CAACI,MAAQ;AAC5B,UAAAD,EACE,iBAAiBC,CAAG,EACpB,QAAQ,CAACC,MAAYA,EAAQ,QAAQ;AAAA,QAC1C,CAAC,GACDJ,EAAU,YAAYE,CAAS,GAC/BH,EAAK,OAAA;AAAA,MACP;AAAA,IACF,CAAC,GAEaC,EAAU,iBAAiB,MAAM,EACzC,QAAQ,CAACK,MAAS;AACtB,YAAMC,IAAU,SAAS,cAAc,aAAa;AACpD,MAAAA,EAAQ,UAAU,IAAI,SAAS,GAC/BD,EAAK,sBAAsB,YAAYC,CAAO;AAAA,IAChD,CAAC;AAAA,EAEL;AAAA,EAEA,SAAS;AACP,WAAOC;AAAA;AAAA;AAAA,YAGE,KAAK,cAAc,KAAA,IAElBA,YAAe,KAAK,cAAc,MAAM;AAAA,qDACD,KAAK,UAAU;AAAA,sBAFtDA,uCAA0C,KAAK,UAAU,OAGpD;AAAA,YACP,KAAK,iBACHA;AAAA;AAAA;AAAA,iCAGmB,KAAK,iBAAiB;AAAA;AAAA,wBAGzC,EAAE;AAAA;AAAA;AAAA;AAAA,EAId;AACF;AA9FEZ,EAAO,SAASa,EAAUC,CAAM;AAD3B,IAAMC,IAANf;AAIuBgB,EAAA;AAAA,EAA3BC,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GAJfF,EAIiB,WAAA,YAAA;AACAC,EAAA;AAAA,EAA3BC,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GALfF,EAKiB,WAAA,cAAA;AACXC,EAAA;AAAA,EAAhBE,EAAA;AAAM,GANIH,EAMM,WAAA,gBAAA;AA2Fd,eAAe,IAAI,kBAAkB,KACxC,eAAe,OAAO,oBAAoBA,CAAe;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nysds/nys-globalfooter",
3
- "version": "1.11.2",
3
+ "version": "1.11.3",
4
4
  "description": "The Globalfooter component from the NYS Design System.",
5
5
  "module": "dist/nys-globalfooter.js",
6
6
  "types": "dist/index.d.ts",
@@ -23,12 +23,12 @@
23
23
  "lit-analyze": "lit-analyzer '**/*.ts'"
24
24
  },
25
25
  "dependencies": {
26
- "@nysds/nys-divider": "^1.11.2"
26
+ "@nysds/nys-divider": "^1.11.3"
27
27
  },
28
28
  "devDependencies": {
29
- "lit": "^3.2.1",
30
- "typescript": "^5.7.2",
31
- "vite": "^7.1.2"
29
+ "lit": "^3.3.1",
30
+ "typescript": "^5.9.3",
31
+ "vite": "^7.1.12"
32
32
  },
33
33
  "keywords": [
34
34
  "new-york-state",
package/dist/index.d.ts DELETED
@@ -1 +0,0 @@
1
- export * from "./nys-globalfooter";
@@ -1,13 +0,0 @@
1
- import { LitElement } from "lit";
2
- export declare class NysGlobalFooter extends LitElement {
3
- static styles: import("lit").CSSResult;
4
- /********************** Properties **********************/
5
- agencyName: string;
6
- homepageLink: string;
7
- private slotHasContent;
8
- /**************** Lifecycle Methods ****************/
9
- firstUpdated(): void;
10
- /******************** Functions ********************/
11
- private _handleSlotChange;
12
- render(): import("lit-html").TemplateResult<1>;
13
- }
@@ -1 +0,0 @@
1
- export {};
@@ -1,2 +0,0 @@
1
- declare const _default: import("lit").CSSResult;
2
- export default _default;