@justeattakeaway/pie-modal 1.23.0 → 1.24.1

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.
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { LitElement as T, unsafeCSS as K, nothing as c } from "lit";
2
2
  import { html as s, unsafeStatic as H } from "lit/static-html.js";
3
3
  import { property as d, query as R } from "lit/decorators.js";
4
- import { classMap as _ } from "lit/directives/class-map.js";
4
+ import { classMap as x } from "lit/directives/class-map.js";
5
5
  import { ifDefined as h } from "lit/directives/if-defined.js";
6
6
  import "@justeattakeaway/pie-button";
7
7
  import "@justeattakeaway/pie-icon-button";
@@ -14,15 +14,15 @@ const S = class S extends T {
14
14
  this.getAttribute("v") || this.setAttribute("v", S.v);
15
15
  }
16
16
  };
17
- S.v = "1.23.0";
17
+ S.v = "1.24.1";
18
18
  let C = S;
19
- function j(e) {
20
- if (Array.isArray(e)) {
21
- for (var o = 0, t = Array(e.length); o < e.length; o++)
22
- t[o] = e[o];
19
+ function j(a) {
20
+ if (Array.isArray(a)) {
21
+ for (var o = 0, t = Array(a.length); o < a.length; o++)
22
+ t[o] = a[o];
23
23
  return t;
24
24
  } else
25
- return Array.from(e);
25
+ return Array.from(a);
26
26
  }
27
27
  var B = !1;
28
28
  if (typeof window < "u") {
@@ -42,8 +42,8 @@ var O = typeof window < "u" && window.navigator && window.navigator.platform &&
42
42
  return D(t.target) || t.touches.length > 1 ? !0 : (t.preventDefault && t.preventDefault(), !1);
43
43
  }, V = function(o) {
44
44
  if (v === void 0) {
45
- var t = !1, a = window.innerWidth - document.documentElement.clientWidth;
46
- t && a > 0 && (v = document.body.style.paddingRight, document.body.style.paddingRight = a + "px");
45
+ var t = !1, e = window.innerWidth - document.documentElement.clientWidth;
46
+ t && e > 0 && (v = document.body.style.paddingRight, document.body.style.paddingRight = e + "px");
47
47
  }
48
48
  f === void 0 && (f = document.body.style.overflow, document.body.style.overflow = "hidden");
49
49
  }, Y = function() {
@@ -51,8 +51,8 @@ var O = typeof window < "u" && window.navigator && window.navigator.platform &&
51
51
  }, q = function(o) {
52
52
  return o ? o.scrollHeight - o.scrollTop <= o.clientHeight : !1;
53
53
  }, U = function(o, t) {
54
- var a = o.targetTouches[0].clientY - $;
55
- return D(o.target) ? !1 : t && t.scrollTop === 0 && a > 0 || q(t) && a < 0 ? w(o) : (o.stopPropagation(), !0);
54
+ var e = o.targetTouches[0].clientY - $;
55
+ return D(o.target) ? !1 : t && t.scrollTop === 0 && e > 0 || q(t) && e < 0 ? w(o) : (o.stopPropagation(), !0);
56
56
  }, X = function(o, t) {
57
57
  if (!o) {
58
58
  console.error("disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.");
@@ -61,11 +61,11 @@ var O = typeof window < "u" && window.navigator && window.navigator.platform &&
61
61
  if (!g.some(function(i) {
62
62
  return i.targetElement === o;
63
63
  })) {
64
- var a = {
64
+ var e = {
65
65
  targetElement: o,
66
66
  options: {}
67
67
  };
68
- g = [].concat(j(g), [a]), O ? (o.ontouchstart = function(i) {
68
+ g = [].concat(j(g), [e]), O ? (o.ontouchstart = function(i) {
69
69
  i.targetTouches.length === 1 && ($ = i.targetTouches[0].clientY);
70
70
  }, o.ontouchmove = function(i) {
71
71
  i.targetTouches.length === 1 && U(i, o);
@@ -80,7 +80,7 @@ var O = typeof window < "u" && window.navigator && window.navigator.platform &&
80
80
  return t.targetElement !== o;
81
81
  }), O ? (o.ontouchstart = null, o.ontouchmove = null, k && g.length === 0 && (document.removeEventListener("touchmove", w, B ? { passive: !1 } : void 0), k = !1)) : g.length || Y();
82
82
  };
83
- const J = '*,*:after,*:before{box-sizing:inherit}dialog{position:absolute;left:0;right:0;width:-moz-fit-content;width:-webkit-fit-content;width:fit-content;height:-moz-fit-content;height:-webkit-fit-content;height:fit-content;margin:auto;border:solid;padding:1em;background:#fff;color:#000;display:block}dialog:not([open]){display:none}dialog+.backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000001a}._dialog_overlay{position:fixed;top:0;right:0;bottom:0;left:0}dialog.fixed{position:fixed;top:50%;transform:translateY(-50%)}.c-modal{--modal-size-s: 450px;--modal-size-m: 600px;--modal-size-l: 1080px;--modal-border-radius: var(--dt-radius-rounded-d);--modal-font: var(--dt-font-interactive-l-family);--modal-content-color: var(--dt-color-content-default);--modal-bg-color: var(--dt-color-container-default);--modal-elevation: var(--dt-elevation-below-20);--modal-image-slot-bg-color: none;position:fixed;top:0;border-radius:var(--modal-border-radius);border:none;box-shadow:var(--modal-elevation);font-family:var(--modal-font);color:var(--modal-content-color);background-color:var(--modal-bg-color);padding:0;--modal-margin-none: var(--dt-spacing-none);--modal-margin-small: var(--dt-spacing-g);--modal-margin-large: var(--dt-spacing-j);--modal-margin-block: var(--modal-margin-small);--modal-block-size: fit-content;--modal-inline-size: 75%;--modal-max-block-size: calc(100vh - calc(var(--modal-margin-block) * 2));--modal-max-inline-size: var(--modal-size-m);block-size:var(--modal-block-size);inline-size:var(--modal-inline-size);max-block-size:var(--modal-max-block-size);max-inline-size:var(--modal-max-inline-size)}.c-modal:focus-visible{outline:none}@media (max-width: 767px){.c-modal pie-icon-button{--btn-dimension: 40px}}.c-modal[open]{display:flex;flex-direction:column}@media (min-width: 769px){.c-modal{--modal-margin-block: var(--modal-margin-large)}}.c-modal.c-modal--small{--modal-max-inline-size: var(--modal-size-s)}@media (min-width: 769px){.c-modal.c-modal--small{--modal-margin-block: var(--modal-margin-large)}}.c-modal.c-modal--large{--modal-inline-size: 75%;--modal-max-inline-size: var(--modal-size-l);--modal-margin-block: var(--modal-margin-large)}@media (max-width: 767px){.c-modal.c-modal--large,.c-modal.c-modal--medium.c-modal--fullWidthBelowMid{--modal-margin-block: var(--modal-margin-none);--modal-border-radius: var(--dt-radius-rounded-none);--modal-block-size: 100%;--modal-inline-size: 100%;--modal-max-inline-size: 100%}.c-modal.c-modal--large>.c-modal-scrollContainer,.c-modal.c-modal--medium.c-modal--fullWidthBelowMid>.c-modal-scrollContainer{block-size:100%}}.c-modal.c-modal--top{margin-block-start:var(--dt-spacing-j);max-block-size:calc(100% - var(--dt-spacing-j) * 2)}@media (max-width: 767px){.c-modal.c-modal--top.c-modal--large,.c-modal.c-modal--top.c-modal--fullWidthBelowMid.c-modal--medium{margin-block-start:var(--dt-spacing-none);max-block-size:100%}}.c-modal::backdrop{background:var(--dt-color-overlay)}@supports (hanging-punctuation: first) and (font: -apple-system-body) and (-webkit-appearance: none){.c-modal::backdrop{background:#0000008c}}.c-modal .c-modal-closeBtn{grid-area:close;margin-block-start:var(--dt-spacing-b);margin-block-end:var(--dt-spacing-b);margin-inline-start:var(--dt-spacing-none);margin-inline-end:var(--dt-spacing-b)}@media (min-width: 769px){.c-modal .c-modal-closeBtn{margin-block-start:var(--dt-spacing-c);margin-block-end:var(--dt-spacing-c);margin-inline-start:var(--dt-spacing-none);margin-inline-end:var(--dt-spacing-c)}}.c-modal .c-modal-imageSlot.c-modal-imageSlot--illustration{display:flex;justify-content:center;align-items:center;height:200px;background-color:var(--modal-image-slot-bg-color)}.c-modal .c-modal-imageSlot.c-modal-imageSlot--illustration ::slotted([slot=image]){width:168px;height:168px;overflow:hidden}.c-modal .c-modal-imageSlot.c-modal-imageSlot--image{overflow:hidden;aspect-ratio:16/9}.c-modal .c-modal-imageSlot.c-modal-imageSlot--image.c-modal-imageSlot--small{aspect-ratio:3/1}.c-modal .c-modal-imageSlot.c-modal-imageSlot--image.c-modal-imageSlot--large{aspect-ratio:4/3}.c-modal .c-modal-imageSlot.c-modal-imageSlot--image ::slotted([slot=image]){width:100%}@media (min-width: 769px){.c-modal .c-modal-imageSlot.c-modal-imageSlot--image{aspect-ratio:3/1}.c-modal .c-modal-imageSlot.c-modal-imageSlot--image.c-modal-imageSlot--small{aspect-ratio:4/1}.c-modal .c-modal-imageSlot.c-modal-imageSlot--image.c-modal-imageSlot--large{aspect-ratio:21/9}}.c-modal .c-modal-imageSlot .c-modal-closeBtn{position:absolute;inset-block-start:0;inset-inline-end:0;margin-block-start:var(--dt-spacing-d);margin-inline-end:var(--dt-spacing-d)}.c-modal .c-modal-footer{--modal-button-spacing: var(--dt-spacing-d);--modal-footer-padding: var(--dt-spacing-d);display:flex;flex-flow:row-reverse;flex-wrap:wrap;gap:var(--modal-button-spacing);padding:var(--modal-footer-padding)}@media (min-width: 769px){.c-modal .c-modal-footer{--modal-footer-padding: var(--dt-spacing-e)}}@media (max-width: 767px){.c-modal .c-modal-footer.c-modal-footer--stackedActions{flex-direction:column}}.c-modal ::slotted([slot=footer]){display:flex;width:100%}.c-modal ::slotted([slot=headerContent]){grid-area:content;padding-inline-start:var(--dt-spacing-e);padding-inline-end:var(--dt-spacing-e);margin-block-end:var(--dt-spacing-d)}.c-modal .c-modal-header{display:grid;grid-template-areas:"back heading close" "content content content";grid-template-columns:minmax(0,max-content) minmax(0,1fr) minmax(0,max-content);align-items:start}.c-modal .c-modal-heading{--modal-header-font-size: calc(var(--dt-font-heading-m-size--narrow) * 1px);--modal-header-font-line-height: calc(var(--dt-font-heading-m-line-height--narrow) * 1px);--modal-header-font-weight: var(--dt-font-heading-m-weight);--modal-header-font-style: normal;font-size:var(--modal-header-font-size);line-height:var(--modal-header-font-line-height);font-weight:var(--modal-header-font-weight);font-style:var(--modal-header-font-style);margin:0;grid-area:heading;margin-inline-start:var(--dt-spacing-d);margin-inline-end:var(--dt-spacing-d);margin-block:16px}@media (min-width: 769px){.c-modal .c-modal-heading{--modal-header-font-size: calc(var(--dt-font-heading-m-size--wide) * 1px);--modal-header-font-line-height: calc(var(--dt-font-heading-m-line-height--wide) * 1px);margin-inline-start:var(--dt-spacing-e);margin-inline-end:var(--dt-spacing-e);margin-block:22px}}.c-modal .c-modal-heading.c-modal-heading--emphasised{--modal-header-font-size: calc(var(--dt-font-heading-xl-italic-size--narrow) * 1px);--modal-header-font-line-height: calc(var(--dt-font-heading-m-italic-line-height--narrow) * 1px);--modal-header-font-weight: var(--dt-font-heading-xl-italic-weight);--modal-header-font-style: var(--dt-font-heading-xl-italic-font-style);font-variation-settings:"slnt" -20}@media (min-width: 769px){.c-modal .c-modal-heading.c-modal-heading--emphasised{--modal-header-font-size: calc(var(--dt-font-heading-xl-italic-size--wide) * 1px);--modal-header-font-line-height: calc(var(--dt-font-heading-m-italic-line-height--wide) * 1px)}}.c-modal .c-modal-backBtn+.c-modal-heading{margin-inline-start:var(--dt-spacing-b)}@media (min-width: 769px){.c-modal .c-modal-backBtn+.c-modal-heading{margin-inline-start:var(--dt-spacing-c)}}.c-modal.c-modal--dismissible .c-modal-heading{margin-inline-end:var(--dt-spacing-d)}@media (min-width: 769px){.c-modal.c-modal--dismissible .c-modal-heading{margin-inline-end:var(--dt-spacing-e)}}.c-modal .c-modal-backBtn{grid-area:back;margin-block-start:var(--dt-spacing-b);margin-block-end:var(--dt-spacing-b);margin-inline-start:var(--dt-spacing-b);margin-inline-end:var(--dt-spacing-none)}@media (min-width: 769px){.c-modal .c-modal-backBtn{margin-block-start:var(--dt-spacing-c);margin-block-end:var(--dt-spacing-c);margin-inline-start:var(--dt-spacing-c);margin-inline-end:var(--dt-spacing-none)}}.c-modal .c-modal-content{--modal-content-font-size: calc(var(--dt-font-body-l-size) * 1px);--modal-content-font-weight: var(--dt-font-body-l-weight);--modal-content-line-height: calc(var(--dt-font-body-l-line-height) * 1px);--modal-content-padding-block: var(--dt-spacing-a);--modal-content-padding-inline: var(--dt-spacing-d);--modal-content-padding-block-end: var(--dt-spacing-e);position:relative;font-size:var(--modal-content-font-size);line-height:var(--modal-content-line-height);font-weight:var(--modal-content-font-weight);padding-inline-start:var(--modal-content-padding-inline);padding-inline-end:var(--modal-content-padding-inline);padding-block-start:var(--modal-content-padding-block);padding-block-end:var(--modal-content-padding-block-end);flex-grow:1}@media (min-width: 769px){.c-modal .c-modal-content{--modal-content-padding-inline: var(--dt-spacing-e)}}.c-modal .c-modal-content:has(+slot>footer){padding-block-end:var(--modal-content-padding-block)}.c-modal .c-modal-content--scrollable{background:linear-gradient(to bottom,transparent,var(--dt-color-container-default) 75%) center bottom,linear-gradient(transparent,var(--dt-color-border-strong)) center bottom;background-repeat:no-repeat;background-size:100% 48px,100% 12px;background-attachment:local,scroll}.c-modal>.c-modal-scrollContainer{display:flex;flex-direction:column;overflow-y:auto;--bg-scroll-end: linear-gradient(rgba(255, 255, 255, 0), var(--modal-bg-color) 70%) 0 100%;--bg-scroll-bottom: radial-gradient(farthest-corner at 50% 100%, rgba(0, 0, 0, .3), rgba(0, 0, 0, 0)) 0 100%;--bg-size-scroll-end: 100% 40px;--bg-size-scroll-bottom: 100% 8px;background:var(--bg-scroll-end),var(--bg-scroll-bottom);background-repeat:no-repeat;background-size:var(--bg-size-scroll-end),var(--bg-size-scroll-bottom);background-attachment:local,scroll}.c-modal>.c-modal-scrollContainer .c-modal-content{flex-shrink:0}.c-modal.c-modal--pinnedFooter .c-modal-content{overflow-y:auto}.c-modal.c-modal--loading .c-modal-content pie-spinner{display:flex;justify-content:center;align-items:center;padding:var(--dt-spacing-j) calc(var(--dt-spacing-j) + var(--dt-spacing-d))}.c-modal.c-modal--loading .c-modal-content .c-modal-contentInner{display:none}@supports not (aspect-ratio: 1/1){.c-modal .c-modal-scrollContainer{background:none}}.c-modal .c-modal-backBtn-icon:dir(rtl){transform:rotate(180deg)}.c-modal.c-modal--bg-subtle{--modal-image-slot-bg-color: var(--dt-color-container-subtle)}.c-modal.c-modal--bg-brand-01{--modal-bg-color: var(--dt-color-support-brand-01)}.c-modal.c-modal--bg-brand-02{--modal-bg-color: var(--dt-color-support-brand-02)}.c-modal.c-modal--bg-brand-03{--modal-bg-color: var(--dt-color-support-brand-03)}.c-modal.c-modal--bg-brand-03-subtle{--modal-bg-color: var(--dt-color-support-brand-03-subtle)}.c-modal.c-modal--bg-brand-04{--modal-bg-color: var(--dt-color-support-brand-04)}.c-modal.c-modal--bg-brand-04-subtle{--modal-bg-color: var(--dt-color-support-brand-04-subtle)}.c-modal.c-modal--bg-brand-05{--modal-bg-color: var(--dt-color-support-brand-05)}.c-modal.c-modal--bg-brand-05-subtle{--modal-bg-color: var(--dt-color-support-brand-05-subtle)}.c-modal.c-modal--bg-brand-06{--modal-content-color: var(--dt-color-content-inverse);--modal-bg-color: var(--dt-color-support-brand-06)}.c-modal.c-modal--bg-brand-06-subtle{--modal-bg-color: var(--dt-color-support-brand-06-subtle)}.c-modal.c-modal--bg-brand-08{--modal-bg-color: var(--dt-color-support-brand-08)}.c-modal.c-modal--bg-brand-08-subtle{--modal-bg-color: var(--dt-color-support-brand-08-subtle)}', Q = ["h1", "h2", "h3", "h4", "h5", "h6"], Z = ["small", "medium", "large"], oo = ["top", "center"], ko = ["image", "illustration"], eo = ["small", "medium", "large"], to = [
83
+ const J = '*,*:after,*:before{box-sizing:inherit}dialog{position:absolute;left:0;right:0;width:-moz-fit-content;width:-webkit-fit-content;width:fit-content;height:-moz-fit-content;height:-webkit-fit-content;height:fit-content;margin:auto;border:solid;padding:1em;background:#fff;color:#000;display:block}dialog:not([open]){display:none}dialog+.backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000001a}._dialog_overlay{position:fixed;top:0;right:0;bottom:0;left:0}dialog.fixed{position:fixed;top:50%;transform:translateY(-50%)}.c-modal{--modal-size-s: 450px;--modal-size-m: 600px;--modal-size-l: 1080px;--modal-border-radius: var(--dt-radius-rounded-d);--modal-font: var(--dt-font-interactive-l-family);--modal-content-color: var(--dt-color-content-default);--modal-bg-color: var(--dt-color-container-default);--modal-elevation: var(--dt-elevation-below-20);--modal-image-slot-bg-color: none;--modal-easing: var(--dt-motion-easing-persistent-functional);--modal-transition-duration: var(--dt-motion-timing-150);--backdrop-transition-duration: var(--dt-motion-timing-200);opacity:0;transform:translateY(-40px);transition:opacity var(--modal-transition-duration) var(--modal-easing),transform var(--modal-transition-duration) var(--modal-easing),display var(--modal-transition-duration) allow-discrete,overlay var(--backdrop-transition-duration) allow-discrete;position:fixed;top:0;border-radius:var(--modal-border-radius);border:none;box-shadow:var(--modal-elevation);font-family:var(--modal-font);color:var(--modal-content-color);background-color:var(--modal-bg-color);padding:0;display:flex;flex-direction:column;--modal-margin-none: var(--dt-spacing-none);--modal-margin-small: var(--dt-spacing-g);--modal-margin-large: var(--dt-spacing-j);--modal-margin-block: var(--modal-margin-small);--modal-block-size: fit-content;--modal-inline-size: 75%;--modal-max-block-size: calc(100vh - calc(var(--modal-margin-block) * 2));--modal-max-inline-size: var(--modal-size-m);block-size:var(--modal-block-size);inline-size:var(--modal-inline-size);max-block-size:var(--modal-max-block-size);max-inline-size:var(--modal-max-inline-size)}.c-modal:focus-visible{outline:none}@media (max-width: 767px){.c-modal pie-icon-button{--btn-dimension: 40px}}.c-modal[open]{--modal-transition-duration: var(--dt-motion-timing-250);--backdrop-transition-duration: var(--dt-motion-timing-300);opacity:1;transform:translateY(0)}@starting-style{.c-modal[open]{opacity:0;transform:translateY(-40px)}}.c-modal[open]::backdrop{opacity:1}@starting-style{.c-modal[open]::backdrop{opacity:0}}@media (min-width: 769px){.c-modal{--modal-margin-block: var(--modal-margin-large)}}.c-modal.c-modal--small{--modal-max-inline-size: var(--modal-size-s)}@media (min-width: 769px){.c-modal.c-modal--small{--modal-margin-block: var(--modal-margin-large)}}.c-modal.c-modal--large{--modal-inline-size: 75%;--modal-max-inline-size: var(--modal-size-l);--modal-margin-block: var(--modal-margin-large)}@media (max-width: 767px){.c-modal.c-modal--large,.c-modal.c-modal--medium.c-modal--fullWidthBelowMid{--modal-margin-block: var(--modal-margin-none);--modal-border-radius: var(--dt-radius-rounded-none);--modal-block-size: 100%;--modal-inline-size: 100%;--modal-max-inline-size: 100%}.c-modal.c-modal--large>.c-modal-scrollContainer,.c-modal.c-modal--medium.c-modal--fullWidthBelowMid>.c-modal-scrollContainer{block-size:100%}}.c-modal.c-modal--top{margin-block-start:var(--dt-spacing-j);max-block-size:calc(100% - var(--dt-spacing-j) * 2)}@media (max-width: 767px){.c-modal.c-modal--top.c-modal--large,.c-modal.c-modal--top.c-modal--fullWidthBelowMid.c-modal--medium{margin-block-start:var(--dt-spacing-none);max-block-size:100%}}.c-modal::backdrop{background:var(--dt-color-overlay);opacity:0;transition:opacity var(--backdrop-transition-duration) var(--modal-easing),display var(--backdrop-transition-duration) allow-discrete,overlay var(--backdrop-transition-duration) allow-discrete}@supports (hanging-punctuation: first) and (font: -apple-system-body) and (-webkit-appearance: none){.c-modal::backdrop{background:#0000008c}}.c-modal .c-modal-closeBtn{grid-area:close;margin-block-start:var(--dt-spacing-b);margin-block-end:var(--dt-spacing-b);margin-inline-start:var(--dt-spacing-none);margin-inline-end:var(--dt-spacing-b)}@media (min-width: 769px){.c-modal .c-modal-closeBtn{margin-block-start:var(--dt-spacing-c);margin-block-end:var(--dt-spacing-c);margin-inline-start:var(--dt-spacing-none);margin-inline-end:var(--dt-spacing-c)}}.c-modal .c-modal-imageSlot.c-modal-imageSlot--illustration{display:flex;justify-content:center;align-items:center;height:200px;background-color:var(--modal-image-slot-bg-color)}.c-modal .c-modal-imageSlot.c-modal-imageSlot--illustration ::slotted([slot=image]){width:168px;height:168px;overflow:hidden}.c-modal .c-modal-imageSlot.c-modal-imageSlot--image{overflow:hidden;aspect-ratio:16/9}.c-modal .c-modal-imageSlot.c-modal-imageSlot--image.c-modal-imageSlot--small{aspect-ratio:3/1}.c-modal .c-modal-imageSlot.c-modal-imageSlot--image.c-modal-imageSlot--large{aspect-ratio:4/3}.c-modal .c-modal-imageSlot.c-modal-imageSlot--image ::slotted([slot=image]){width:100%}@media (min-width: 769px){.c-modal .c-modal-imageSlot.c-modal-imageSlot--image{aspect-ratio:3/1}.c-modal .c-modal-imageSlot.c-modal-imageSlot--image.c-modal-imageSlot--small{aspect-ratio:4/1}.c-modal .c-modal-imageSlot.c-modal-imageSlot--image.c-modal-imageSlot--large{aspect-ratio:21/9}}.c-modal .c-modal-imageSlot .c-modal-closeBtn{position:absolute;inset-block-start:0;inset-inline-end:0;margin-block-start:var(--dt-spacing-d);margin-inline-end:var(--dt-spacing-d)}.c-modal .c-modal-footer{--modal-button-spacing: var(--dt-spacing-d);--modal-footer-padding: var(--dt-spacing-d);display:flex;flex-flow:row-reverse;flex-wrap:wrap;gap:var(--modal-button-spacing);padding:var(--modal-footer-padding)}@media (min-width: 769px){.c-modal .c-modal-footer{--modal-footer-padding: var(--dt-spacing-e)}}@media (max-width: 767px){.c-modal .c-modal-footer.c-modal-footer--stackedActions{flex-direction:column}}.c-modal ::slotted([slot=footer]){display:flex;width:100%}.c-modal ::slotted([slot=headerContent]){grid-area:content;padding-inline-start:var(--dt-spacing-e);padding-inline-end:var(--dt-spacing-e);margin-block-end:var(--dt-spacing-d)}.c-modal .c-modal-header{display:grid;grid-template-areas:"back heading close" "content content content";grid-template-columns:minmax(0,max-content) minmax(0,1fr) minmax(0,max-content);align-items:start}.c-modal .c-modal-heading{--modal-header-font-size: calc(var(--dt-font-heading-m-size--narrow) * 1px);--modal-header-font-line-height: calc(var(--dt-font-heading-m-line-height--narrow) * 1px);--modal-header-font-weight: var(--dt-font-heading-m-weight);--modal-header-font-style: normal;font-size:var(--modal-header-font-size);line-height:var(--modal-header-font-line-height);font-weight:var(--modal-header-font-weight);font-style:var(--modal-header-font-style);margin:0;grid-area:heading;margin-inline-start:var(--dt-spacing-d);margin-inline-end:var(--dt-spacing-d);margin-block:16px}@media (min-width: 769px){.c-modal .c-modal-heading{--modal-header-font-size: calc(var(--dt-font-heading-m-size--wide) * 1px);--modal-header-font-line-height: calc(var(--dt-font-heading-m-line-height--wide) * 1px);margin-inline-start:var(--dt-spacing-e);margin-inline-end:var(--dt-spacing-e);margin-block:22px}}.c-modal .c-modal-heading.c-modal-heading--emphasised{--modal-header-font-size: calc(var(--dt-font-heading-xl-italic-size--narrow) * 1px);--modal-header-font-line-height: calc(var(--dt-font-heading-m-italic-line-height--narrow) * 1px);--modal-header-font-weight: var(--dt-font-heading-xl-italic-weight);--modal-header-font-style: var(--dt-font-heading-xl-italic-font-style);font-variation-settings:"slnt" -20}@media (min-width: 769px){.c-modal .c-modal-heading.c-modal-heading--emphasised{--modal-header-font-size: calc(var(--dt-font-heading-xl-italic-size--wide) * 1px);--modal-header-font-line-height: calc(var(--dt-font-heading-m-italic-line-height--wide) * 1px)}}.c-modal .c-modal-backBtn+.c-modal-heading{margin-inline-start:var(--dt-spacing-b)}@media (min-width: 769px){.c-modal .c-modal-backBtn+.c-modal-heading{margin-inline-start:var(--dt-spacing-c)}}.c-modal.c-modal--dismissible .c-modal-heading{margin-inline-end:var(--dt-spacing-d)}@media (min-width: 769px){.c-modal.c-modal--dismissible .c-modal-heading{margin-inline-end:var(--dt-spacing-e)}}.c-modal .c-modal-backBtn{grid-area:back;margin-block-start:var(--dt-spacing-b);margin-block-end:var(--dt-spacing-b);margin-inline-start:var(--dt-spacing-b);margin-inline-end:var(--dt-spacing-none)}@media (min-width: 769px){.c-modal .c-modal-backBtn{margin-block-start:var(--dt-spacing-c);margin-block-end:var(--dt-spacing-c);margin-inline-start:var(--dt-spacing-c);margin-inline-end:var(--dt-spacing-none)}}.c-modal .c-modal-content{--modal-content-font-size: calc(var(--dt-font-body-l-size) * 1px);--modal-content-font-weight: var(--dt-font-body-l-weight);--modal-content-line-height: calc(var(--dt-font-body-l-line-height) * 1px);--modal-content-padding-block: var(--dt-spacing-a);--modal-content-padding-inline: var(--dt-spacing-d);--modal-content-padding-block-end: var(--dt-spacing-e);position:relative;font-size:var(--modal-content-font-size);line-height:var(--modal-content-line-height);font-weight:var(--modal-content-font-weight);padding-inline-start:var(--modal-content-padding-inline);padding-inline-end:var(--modal-content-padding-inline);padding-block-start:var(--modal-content-padding-block);padding-block-end:var(--modal-content-padding-block-end);flex-grow:1}@media (min-width: 769px){.c-modal .c-modal-content{--modal-content-padding-inline: var(--dt-spacing-e)}}.c-modal .c-modal-content:has(+slot>footer){padding-block-end:var(--modal-content-padding-block)}.c-modal .c-modal-content--scrollable{background:linear-gradient(to bottom,transparent,var(--dt-color-container-default) 75%) center bottom,linear-gradient(transparent,var(--dt-color-border-strong)) center bottom;background-repeat:no-repeat;background-size:100% 48px,100% 12px;background-attachment:local,scroll}.c-modal>.c-modal-scrollContainer{display:flex;flex-direction:column;overflow-y:auto;--bg-scroll-end: linear-gradient(rgba(255, 255, 255, 0), var(--modal-bg-color) 70%) 0 100%;--bg-scroll-bottom: radial-gradient(farthest-corner at 50% 100%, rgba(0, 0, 0, .3), rgba(0, 0, 0, 0)) 0 100%;--bg-size-scroll-end: 100% 40px;--bg-size-scroll-bottom: 100% 8px;background:var(--bg-scroll-end),var(--bg-scroll-bottom);background-repeat:no-repeat;background-size:var(--bg-size-scroll-end),var(--bg-size-scroll-bottom);background-attachment:local,scroll}.c-modal>.c-modal-scrollContainer .c-modal-content{flex-shrink:0}.c-modal.c-modal--pinnedFooter .c-modal-content{overflow-y:auto}.c-modal.c-modal--loading .c-modal-content pie-spinner{display:flex;justify-content:center;align-items:center;padding:var(--dt-spacing-j) calc(var(--dt-spacing-j) + var(--dt-spacing-d))}.c-modal.c-modal--loading .c-modal-content .c-modal-contentInner{display:none}@supports not (aspect-ratio: 1/1){.c-modal .c-modal-scrollContainer{background:none}}.c-modal .c-modal-backBtn-icon:dir(rtl){transform:rotate(180deg)}.c-modal.c-modal--bg-subtle{--modal-image-slot-bg-color: var(--dt-color-container-subtle)}.c-modal.c-modal--bg-brand-01{--modal-bg-color: var(--dt-color-support-brand-01)}.c-modal.c-modal--bg-brand-02{--modal-bg-color: var(--dt-color-support-brand-02)}.c-modal.c-modal--bg-brand-03{--modal-bg-color: var(--dt-color-support-brand-03)}.c-modal.c-modal--bg-brand-03-subtle{--modal-bg-color: var(--dt-color-support-brand-03-subtle)}.c-modal.c-modal--bg-brand-04{--modal-bg-color: var(--dt-color-support-brand-04)}.c-modal.c-modal--bg-brand-04-subtle{--modal-bg-color: var(--dt-color-support-brand-04-subtle)}.c-modal.c-modal--bg-brand-05{--modal-bg-color: var(--dt-color-support-brand-05)}.c-modal.c-modal--bg-brand-05-subtle{--modal-bg-color: var(--dt-color-support-brand-05-subtle)}.c-modal.c-modal--bg-brand-06{--modal-content-color: var(--dt-color-content-inverse);--modal-bg-color: var(--dt-color-support-brand-06)}.c-modal.c-modal--bg-brand-06-subtle{--modal-bg-color: var(--dt-color-support-brand-06-subtle)}.c-modal.c-modal--bg-brand-08{--modal-bg-color: var(--dt-color-support-brand-08)}.c-modal.c-modal--bg-brand-08-subtle{--modal-bg-color: var(--dt-color-support-brand-08-subtle)}@media (prefers-reduced-motion: reduce){.c-modal,.c-modal::backdrop{transition:none;transform:none}}', Q = ["h1", "h2", "h3", "h4", "h5", "h6"], Z = ["small", "medium", "large"], oo = ["top", "center"], ko = ["image", "illustration"], ao = ["small", "medium", "large"], to = [
84
84
  "default",
85
85
  "subtle",
86
86
  "brand-01",
@@ -95,7 +95,7 @@ const J = '*,*:after,*:before{box-sizing:inherit}dialog{position:absolute;left:0
95
95
  "brand-06-subtle",
96
96
  "brand-08",
97
97
  "brand-08-subtle"
98
- ], L = "pie-modal-close", x = "pie-modal-open", M = "pie-modal-back", ao = "pie-modal-leading-action-click", io = "pie-modal-supporting-action-click", r = {
98
+ ], L = "pie-modal-close", _ = "pie-modal-open", M = "pie-modal-back", eo = "pie-modal-leading-action-click", io = "pie-modal-supporting-action-click", r = {
99
99
  hasBackButton: !1,
100
100
  hasStackedActions: !1,
101
101
  headingLevel: "h2",
@@ -110,61 +110,61 @@ const J = '*,*:after,*:before{box-sizing:inherit}dialog{position:absolute;left:0
110
110
  backgroundColor: "default",
111
111
  imageSlotAspectRatio: "medium"
112
112
  };
113
- var no = Object.defineProperty, lo = Object.getOwnPropertyDescriptor, l = (e, o, t, a) => {
114
- for (var i = a > 1 ? void 0 : a ? lo(o, t) : o, m = e.length - 1, p; m >= 0; m--)
115
- (p = e[m]) && (i = (a ? p(o, t, i) : p(i)) || i);
116
- return a && i && no(o, t, i), i;
113
+ var no = Object.defineProperty, lo = Object.getOwnPropertyDescriptor, l = (a, o, t, e) => {
114
+ for (var i = e > 1 ? void 0 : e ? lo(o, t) : o, m = a.length - 1, p; m >= 0; m--)
115
+ (p = a[m]) && (i = (e ? p(o, t, i) : p(i)) || i);
116
+ return e && i && no(o, t, i), i;
117
117
  };
118
118
  const b = "pie-modal";
119
119
  let n = class extends C {
120
120
  constructor() {
121
- super(...arguments), this.headingLevel = r.headingLevel, this.hasBackButton = r.hasBackButton, this.hasStackedActions = r.hasStackedActions, this.isDismissible = r.isDismissible, this.isHeadingEmphasised = r.isHeadingEmphasised, this.isFooterPinned = r.isFooterPinned, this.isFullWidthBelowMid = r.isFullWidthBelowMid, this.isLoading = r.isLoading, this.isOpen = r.isOpen, this.position = r.position, this.size = r.size, this.backgroundColor = r.backgroundColor, this.imageSlotAspectRatio = r.imageSlotAspectRatio, this._scrollableContainer = null, this._backButtonClicked = !1, this._escKeyAbortController = null, this._preventModalKeyboardDismissal = (e) => {
122
- e.key === "Escape" && e.preventDefault();
123
- }, this._handleDialogLightDismiss = (e) => {
124
- if (!this.isDismissible || e.target !== e.currentTarget)
121
+ super(...arguments), this.headingLevel = r.headingLevel, this.hasBackButton = r.hasBackButton, this.hasStackedActions = r.hasStackedActions, this.isDismissible = r.isDismissible, this.isHeadingEmphasised = r.isHeadingEmphasised, this.isFooterPinned = r.isFooterPinned, this.isFullWidthBelowMid = r.isFullWidthBelowMid, this.isLoading = r.isLoading, this.isOpen = r.isOpen, this.position = r.position, this.size = r.size, this.backgroundColor = r.backgroundColor, this.imageSlotAspectRatio = r.imageSlotAspectRatio, this._scrollableContainer = null, this._backButtonClicked = !1, this._escKeyAbortController = null, this._preventModalKeyboardDismissal = (a) => {
122
+ a.key === "Escape" && a.preventDefault();
123
+ }, this._handleDialogLightDismiss = (a) => {
124
+ if (!this.isDismissible || a.target !== a.currentTarget)
125
125
  return;
126
126
  const o = this._dialog.getBoundingClientRect(), {
127
127
  top: t = 0,
128
- bottom: a = 0,
128
+ bottom: e = 0,
129
129
  left: i = 0,
130
130
  right: m = 0
131
131
  } = o || {};
132
- if (t === 0 && a === 0 && i === 0 && m === 0)
132
+ if (t === 0 && e === 0 && i === 0 && m === 0)
133
133
  return;
134
- (e.clientY < t || e.clientY > a || e.clientX < i || e.clientX > m) && (this.isOpen = !1);
134
+ (a.clientY < t || a.clientY > e || a.clientX < i || a.clientX > m) && (this.isOpen = !1);
135
135
  };
136
136
  }
137
137
  get _modalScrollContainer() {
138
- var e;
139
- return this._scrollableContainer || (this._scrollableContainer = (e = this._dialog) == null ? void 0 : e.querySelector(".c-modal-scrollContainer")), this._scrollableContainer;
138
+ var a;
139
+ return this._scrollableContainer || (this._scrollableContainer = (a = this._dialog) == null ? void 0 : a.querySelector(".c-modal-scrollContainer")), this._scrollableContainer;
140
140
  }
141
141
  connectedCallback() {
142
142
  super.connectedCallback(), this._abortController = new AbortController();
143
- const { signal: e } = this._abortController;
144
- this.addEventListener("click", (o) => this._handleDialogLightDismiss(o)), this._setupEscKeyListener(), document.addEventListener(x, (o) => this._handleModalOpened(o), { signal: e }), document.addEventListener(L, (o) => this._handleModalClosed(o), { signal: e }), document.addEventListener(M, (o) => this._handleModalClosed(o), { signal: e });
143
+ const { signal: a } = this._abortController;
144
+ this.addEventListener("click", (o) => this._handleDialogLightDismiss(o)), this._setupEscKeyListener(), document.addEventListener(_, (o) => this._handleModalOpened(o), { signal: a }), document.addEventListener(L, (o) => this._handleModalClosed(o), { signal: a }), document.addEventListener(M, (o) => this._handleModalClosed(o), { signal: a });
145
145
  }
146
146
  disconnectedCallback() {
147
147
  super.disconnectedCallback(), this._abortController.abort(), this._enableBodyScroll(), this._removeEscKeyEventListener();
148
148
  }
149
- async firstUpdated(e) {
150
- (await import("./dialog-polyfill.esm-CbjBMXAG.js").then((a) => a.default)).registerDialog(this._dialog);
149
+ async firstUpdated(a) {
150
+ (await import("./dialog-polyfill.esm-CbjBMXAG.js").then((e) => e.default)).registerDialog(this._dialog);
151
151
  const { signal: t } = this._abortController;
152
152
  this._dialog.addEventListener("close", () => {
153
153
  this.isOpen = !1;
154
- }, { signal: t }), this._handleModalOpenStateOnFirstRender(e);
154
+ }, { signal: t }), this._handleModalOpenStateOnFirstRender(a);
155
155
  }
156
- updated(e) {
157
- this._handleModalOpenStateChanged(e), this._handleIsDismissibleChanged(e);
156
+ updated(a) {
157
+ this._handleModalOpenStateChanged(a), this._handleIsDismissibleChanged(a);
158
158
  }
159
- _handleIsDismissibleChanged(e) {
160
- const o = e.get("isDismissible"), t = this.isDismissible;
159
+ _handleIsDismissibleChanged(a) {
160
+ const o = a.get("isDismissible"), t = this.isDismissible;
161
161
  !o && t && this._removeEscKeyEventListener(), o && !t && this._setupEscKeyListener();
162
162
  }
163
163
  /**
164
164
  * Opens the dialog element and disables page scrolling
165
165
  */
166
- _handleModalOpened(e) {
167
- const { targetModal: o } = e.detail;
166
+ _handleModalOpened(a) {
167
+ const { targetModal: o } = a.detail;
168
168
  if (o === this) {
169
169
  if (this._dialog.hasAttribute("open") || !this._dialog.isConnected)
170
170
  return;
@@ -176,8 +176,8 @@ let n = class extends C {
176
176
  /**
177
177
  * Closes the dialog element and re-enables page scrolling
178
178
  */
179
- _handleModalClosed(e) {
180
- const { targetModal: o } = e.detail;
179
+ _handleModalClosed(a) {
180
+ const { targetModal: o } = a.detail;
181
181
  o === this && (this._enableBodyScroll(), this._dialog.close(), this._returnFocus(), this._removeEscKeyEventListener());
182
182
  }
183
183
  /**
@@ -186,28 +186,28 @@ let n = class extends C {
186
186
  _setupEscKeyListener() {
187
187
  if (!this._escKeyAbortController && !this.isDismissible) {
188
188
  this._escKeyAbortController = new AbortController();
189
- const { signal: e } = this._escKeyAbortController;
190
- document.addEventListener("keydown", (o) => this._preventModalKeyboardDismissal(o), { signal: e });
189
+ const { signal: a } = this._escKeyAbortController;
190
+ document.addEventListener("keydown", (o) => this._preventModalKeyboardDismissal(o), { signal: a });
191
191
  }
192
192
  }
193
193
  /**
194
194
  * Removes any event listeners set up that are listening to keyboard events and nulls the existing AbortController.
195
195
  */
196
196
  _removeEscKeyEventListener() {
197
- var e;
198
- (e = this._escKeyAbortController) == null || e.abort(), this._escKeyAbortController = null;
197
+ var a;
198
+ (a = this._escKeyAbortController) == null || a.abort(), this._escKeyAbortController = null;
199
199
  }
200
200
  // Handles the value of the isOpen property on first render of the component
201
- _handleModalOpenStateOnFirstRender(e) {
202
- e.get("isOpen") === void 0 && this.isOpen && u(this, x, { targetModal: this });
201
+ _handleModalOpenStateOnFirstRender(a) {
202
+ a.get("isOpen") === void 0 && this.isOpen && u(this, _, { targetModal: this });
203
203
  }
204
204
  // Handles changes to the modal isOpen property by dispatching any appropriate events
205
- _handleModalOpenStateChanged(e) {
206
- const o = e.get("isOpen");
207
- o !== void 0 && (o ? this._backButtonClicked ? (this._backButtonClicked = !1, u(this, M, { targetModal: this })) : u(this, L, { targetModal: this }) : u(this, x, { targetModal: this }));
205
+ _handleModalOpenStateChanged(a) {
206
+ const o = a.get("isOpen");
207
+ o !== void 0 && (o ? this._backButtonClicked ? (this._backButtonClicked = !1, u(this, M, { targetModal: this })) : u(this, L, { targetModal: this }) : u(this, _, { targetModal: this }));
208
208
  }
209
- _handleActionClick(e) {
210
- e === "leading" ? (this._dialog.close("leading"), u(this, ao, { targetModal: this })) : e === "supporting" && (this._dialog.close("supporting"), u(this, io, { targetModal: this }));
209
+ _handleActionClick(a) {
210
+ a === "leading" ? (this._dialog.close("leading"), u(this, eo, { targetModal: this })) : a === "supporting" && (this._dialog.close("supporting"), u(this, io, { targetModal: this }));
211
211
  }
212
212
  /**
213
213
  * Return focus to the specified element, providing the selector is valid
@@ -215,8 +215,8 @@ let n = class extends C {
215
215
  */
216
216
  _returnFocus() {
217
217
  var o, t;
218
- const e = (o = this.returnFocusAfterCloseSelector) == null ? void 0 : o.trim();
219
- e && ((t = document.querySelector(e)) == null || t.focus());
218
+ const a = (o = this.returnFocusAfterCloseSelector) == null ? void 0 : o.trim();
219
+ a && ((t = document.querySelector(a)) == null || t.focus());
220
220
  }
221
221
  /**
222
222
  * Enables body scroll by unlocking the scroll container.
@@ -231,8 +231,8 @@ let n = class extends C {
231
231
  this._modalScrollContainer && X(this._modalScrollContainer);
232
232
  }
233
233
  _getHeaderButtonVariant() {
234
- const { imageSlotMode: e, backgroundColor: o } = this, t = !!e, a = !!o && o !== "default", i = o === "brand-06";
235
- return t ? e === "illustration" && !a ? "ghost-secondary" : i ? "ghost-inverse" : "secondary" : i ? "ghost-inverse" : "ghost-secondary";
234
+ const { imageSlotMode: a, backgroundColor: o } = this, t = !!a, e = !!o && o !== "default", i = o === "brand-06";
235
+ return t ? a === "illustration" && !e ? "ghost-secondary" : i ? "ghost-inverse" : "secondary" : i ? "ghost-inverse" : "ghost-secondary";
236
236
  }
237
237
  /**
238
238
  * Template for the close button element. Called within the
@@ -244,13 +244,13 @@ let n = class extends C {
244
244
  var o, t;
245
245
  if (!this.isDismissible)
246
246
  return c;
247
- const e = this._getHeaderButtonVariant();
247
+ const a = this._getHeaderButtonVariant();
248
248
  return s`
249
249
  <pie-icon-button
250
250
  @click="${() => {
251
251
  this.isOpen = !1;
252
252
  }}"
253
- variant="${e}"
253
+ variant="${a}"
254
254
  class="c-modal-closeBtn"
255
255
  .aria=${h((o = this.aria) == null ? void 0 : o.close) ? { label: (t = this.aria) == null ? void 0 : t.close } : c}
256
256
  data-test-id="modal-close-button">
@@ -258,9 +258,9 @@ let n = class extends C {
258
258
  </pie-icon-button>`;
259
259
  }
260
260
  renderModalImageSlot() {
261
- const { imageSlotMode: e, imageSlotAspectRatio: o } = this;
262
- return e ? s`
263
- <div class="c-modal-imageSlot c-modal-imageSlot--${e} c-modal-imageSlot--${o}" data-test-id="modal-image">
261
+ const { imageSlotMode: a, imageSlotAspectRatio: o } = this;
262
+ return a ? s`
263
+ <div class="c-modal-imageSlot c-modal-imageSlot--${a} c-modal-imageSlot--${o}" data-test-id="modal-image">
264
264
  <slot name="image"></slot>
265
265
  ${this.renderCloseButton()}
266
266
  </div>
@@ -276,13 +276,13 @@ let n = class extends C {
276
276
  var o, t;
277
277
  if (!this.hasBackButton)
278
278
  return c;
279
- const e = this._getHeaderButtonVariant();
279
+ const a = this._getHeaderButtonVariant();
280
280
  return s`
281
281
  <pie-icon-button
282
282
  @click="${() => {
283
283
  this._backButtonClicked = !0, this.isOpen = !1;
284
284
  }}"
285
- variant="${e}"
285
+ variant="${a}"
286
286
  class="c-modal-backBtn"
287
287
  .aria=${h((o = this.aria) == null ? void 0 : o.back) ? { label: (t = this.aria) == null ? void 0 : t.back } : c}
288
288
  data-test-id="modal-back-button">
@@ -300,11 +300,11 @@ let n = class extends C {
300
300
  * @private
301
301
  */
302
302
  renderLeadingAction() {
303
- const { ariaLabel: e, text: o, variant: t = "primary" } = this.leadingAction || {};
303
+ const { ariaLabel: a, text: o, variant: t = "primary" } = this.leadingAction || {};
304
304
  return o ? s`
305
305
  <pie-button
306
306
  variant="${t}"
307
- aria-label="${h(e)}"
307
+ aria-label="${h(a)}"
308
308
  type="submit"
309
309
  ?isFullWidth="${this.hasStackedActions}"
310
310
  @click="${() => this._handleActionClick("leading")}"
@@ -324,12 +324,12 @@ let n = class extends C {
324
324
  * @private
325
325
  */
326
326
  renderSupportingAction() {
327
- var a;
328
- const { ariaLabel: e, text: o, variant: t = "ghost" } = this.supportingAction || {};
329
- return !o || !((a = this.leadingAction) != null && a.text) ? c : s`
327
+ var e;
328
+ const { ariaLabel: a, text: o, variant: t = "ghost" } = this.supportingAction || {};
329
+ return !o || !((e = this.leadingAction) != null && e.text) ? c : s`
330
330
  <pie-button
331
331
  variant="${t}"
332
- aria-label="${h(e)}"
332
+ aria-label="${h(a)}"
333
333
  type="reset"
334
334
  ?isFullWidth="${this.hasStackedActions}"
335
335
  @click="${() => this._handleActionClick("supporting")}"
@@ -345,14 +345,14 @@ let n = class extends C {
345
345
  * @private
346
346
  */
347
347
  renderModalFooter() {
348
- var a, i;
349
- const e = (a = this.leadingAction) == null ? void 0 : a.text;
350
- e || (i = this.supportingAction) != null && i.text && console.warn("You cannot have a supporting action without a leading action. If you only need one button then use a leading action instead.");
348
+ var e, i;
349
+ const a = (e = this.leadingAction) == null ? void 0 : e.text;
350
+ a || (i = this.supportingAction) != null && i.text && console.warn("You cannot have a supporting action without a leading action. If you only need one button then use a leading action instead.");
351
351
  const o = {
352
352
  "c-modal-footer": !0,
353
353
  "c-modal-footer--stackedActions": this.hasStackedActions
354
- }, t = e ? s`
355
- <footer class="${_(o)}" data-test-id="pie-modal-footer">
354
+ }, t = a ? s`
355
+ <footer class="${x(o)}" data-test-id="pie-modal-footer">
356
356
  ${this.renderLeadingAction()}
357
357
  ${this.renderSupportingAction()}
358
358
  </footer>` : c;
@@ -368,8 +368,8 @@ let n = class extends C {
368
368
  renderLoadingSpinner() {
369
369
  if (!this.isLoading)
370
370
  return c;
371
- const e = this.backgroundColor === "brand-06" ? "inverse" : "secondary";
372
- return s`<pie-spinner size="xlarge" variant="${e}"></pie-spinner>`;
371
+ const a = this.backgroundColor === "brand-06" ? "inverse" : "secondary";
372
+ return s`<pie-spinner size="xlarge" variant="${a}"></pie-spinner>`;
373
373
  }
374
374
  /**
375
375
  * Renders the modal inner content and footer of the modal.
@@ -390,22 +390,22 @@ let n = class extends C {
390
390
  * @private
391
391
  */
392
392
  renderHeading() {
393
- const { heading: e, headingLevel: o, isHeadingEmphasised: t } = this, a = H(o);
393
+ const { heading: a, headingLevel: o, isHeadingEmphasised: t } = this, e = H(o);
394
394
  return s`
395
- <${a} id="modal-heading" class="${_({
395
+ <${e} id="modal-heading" class="${x({
396
396
  "c-modal-heading": !0,
397
397
  "c-modal-heading--emphasised": t
398
398
  })}" part="heading" data-test-id="modal-heading">
399
- ${e}
400
- </${a}>
399
+ ${a}
400
+ </${e}>
401
401
  `;
402
402
  }
403
403
  render() {
404
404
  const {
405
- aria: e,
405
+ aria: a,
406
406
  isDismissible: o,
407
407
  isFooterPinned: t,
408
- isFullWidthBelowMid: a,
408
+ isFullWidthBelowMid: e,
409
409
  isLoading: i,
410
410
  position: m,
411
411
  size: p,
@@ -418,15 +418,15 @@ let n = class extends C {
418
418
  "c-modal--dismissible": o,
419
419
  "c-modal--loading": i,
420
420
  "c-modal--pinnedFooter": t,
421
- "c-modal--fullWidthBelowMid": a,
421
+ "c-modal--fullWidthBelowMid": e,
422
422
  [`c-modal--bg-${E}`]: !0
423
- }, A = i && (e == null ? void 0 : e.loading) || void 0;
423
+ }, A = i && (a == null ? void 0 : a.loading) || void 0;
424
424
  return s`
425
425
  <dialog
426
426
  id="dialog"
427
427
  aria-label="${h(A)}"
428
428
  aria-labelledby="${h(A ? void 0 : "modal-heading")}"
429
- class="${_(I)}"
429
+ class="${x(I)}"
430
430
  aria-live="polite"
431
431
  aria-busy="${i ? "true" : "false"}"
432
432
  data-test-id="pie-modal">
@@ -507,7 +507,7 @@ l([
507
507
  ], n.prototype, "imageSlotMode", 2);
508
508
  l([
509
509
  d({ type: String }),
510
- y(b, eo, r.imageSlotAspectRatio)
510
+ y(b, ao, r.imageSlotAspectRatio)
511
511
  ], n.prototype, "imageSlotAspectRatio", 2);
512
512
  l([
513
513
  R("dialog")
@@ -518,14 +518,14 @@ n = l([
518
518
  export {
519
519
  M as ON_MODAL_BACK_EVENT,
520
520
  L as ON_MODAL_CLOSE_EVENT,
521
- ao as ON_MODAL_LEADING_ACTION_CLICK,
522
- x as ON_MODAL_OPEN_EVENT,
521
+ eo as ON_MODAL_LEADING_ACTION_CLICK,
522
+ _ as ON_MODAL_OPEN_EVENT,
523
523
  io as ON_MODAL_SUPPORTING_ACTION_CLICK,
524
524
  n as PieModal,
525
525
  to as backgroundColors,
526
526
  r as defaultProps,
527
527
  Q as headingLevels,
528
- eo as imageSlotAspectRatios,
528
+ ao as imageSlotAspectRatios,
529
529
  ko as imageSlotModes,
530
530
  oo as positions,
531
531
  Z as sizes
package/dist/react.d.ts CHANGED
@@ -160,7 +160,7 @@ export declare const ON_MODAL_OPEN_EVENT = "pie-modal-open";
160
160
  */
161
161
  export declare const ON_MODAL_SUPPORTING_ACTION_CLICK = "pie-modal-supporting-action-click";
162
162
 
163
- export declare const PieModal: React_2.ForwardRefExoticComponent<React_2.PropsWithoutRef<ModalProps> & React_2.RefAttributes<PieModal_2> & PieModalEvents & ReactBaseType>;
163
+ export declare const PieModal: React_2.ForwardRefExoticComponent<React_2.PropsWithChildren<Omit<React_2.PropsWithoutRef<ModalProps>, "children">> & React_2.RefAttributes<PieModal_2> & PieModalEvents & ReactBaseType>;
164
164
 
165
165
  /**
166
166
  * @tagname pie-modal
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@justeattakeaway/pie-modal",
3
- "version": "1.23.0",
3
+ "version": "1.24.1",
4
4
  "description": "PIE design system modal built using web components",
5
5
  "repository": {
6
6
  "type": "git",
@@ -48,11 +48,11 @@
48
48
  "devDependencies": {
49
49
  "@custom-elements-manifest/analyzer": "0.9.0",
50
50
  "@justeat/pie-design-tokens": "7.10.2",
51
- "@justeattakeaway/pie-button": "1.11.0",
51
+ "@justeattakeaway/pie-button": "1.11.1",
52
52
  "@justeattakeaway/pie-components-config": "0.21.0",
53
53
  "@justeattakeaway/pie-css": "0.26.1",
54
54
  "@justeattakeaway/pie-monorepo-utils": "0.7.0",
55
- "@justeattakeaway/pie-text-input": "0.29.11",
55
+ "@justeattakeaway/pie-text-input": "0.29.12",
56
56
  "@justeattakeaway/pie-wrapper-react": "0.14.3",
57
57
  "@types/body-scroll-lock": "3.1.2",
58
58
  "cem-plugin-module-file-extensions": "0.0.5"
@@ -61,10 +61,10 @@
61
61
  "extends": "../../../package.json"
62
62
  },
63
63
  "dependencies": {
64
- "@justeattakeaway/pie-button": "1.11.0",
65
- "@justeattakeaway/pie-icon-button": "2.5.0",
66
- "@justeattakeaway/pie-icons-webc": "1.18.2",
67
- "@justeattakeaway/pie-spinner": "1.3.7",
64
+ "@justeattakeaway/pie-button": "1.11.1",
65
+ "@justeattakeaway/pie-icon-button": "2.6.0",
66
+ "@justeattakeaway/pie-icons-webc": "1.19.0",
67
+ "@justeattakeaway/pie-spinner": "1.4.0",
68
68
  "@justeattakeaway/pie-webc-core": "6.0.1",
69
69
  "body-scroll-lock": "3.1.5",
70
70
  "dialog-polyfill": "0.5.6"
package/src/modal.scss CHANGED
@@ -17,6 +17,9 @@
17
17
  --modal-bg-color: var(--dt-color-container-default);
18
18
  --modal-elevation: var(--dt-elevation-below-20);
19
19
  --modal-image-slot-bg-color: none;
20
+ --modal-easing: var(--dt-motion-easing-persistent-functional);
21
+ --modal-transition-duration: var(--dt-motion-timing-150);
22
+ --backdrop-transition-duration: var(--dt-motion-timing-200);
20
23
 
21
24
  &:focus-visible {
22
25
  outline: none;
@@ -29,13 +32,34 @@
29
32
  }
30
33
  }
31
34
 
35
+ opacity: 0;
36
+ transform: translateY(-40px);
37
+ transition:
38
+ opacity var(--modal-transition-duration) var(--modal-easing),
39
+ transform var(--modal-transition-duration) var(--modal-easing),
40
+ display var(--modal-transition-duration) allow-discrete,
41
+ overlay var(--backdrop-transition-duration) allow-discrete;
42
+
32
43
 
33
44
  &[open] {
34
- // We only apply this when the modal is open,
35
- // otherwise it interferes with the native
36
- // `display: none;` on the dialog element.
37
- display: flex;
38
- flex-direction: column;
45
+ --modal-transition-duration: var(--dt-motion-timing-250);
46
+ --backdrop-transition-duration: var(--dt-motion-timing-300);
47
+
48
+ opacity: 1;
49
+ transform: translateY(0);
50
+
51
+ @starting-style {
52
+ opacity: 0;
53
+ transform: translateY(-40px);
54
+ }
55
+
56
+ &::backdrop {
57
+ opacity: 1;
58
+
59
+ @starting-style {
60
+ opacity: 0;
61
+ }
62
+ }
39
63
  }
40
64
 
41
65
  position: fixed;
@@ -46,8 +70,9 @@
46
70
  font-family: var(--modal-font);
47
71
  color: var(--modal-content-color);
48
72
  background-color: var(--modal-bg-color);
49
-
50
73
  padding: 0;
74
+ display: flex;
75
+ flex-direction: column;
51
76
 
52
77
  --modal-margin-none: var(--dt-spacing-none);
53
78
  --modal-margin-small: var(--dt-spacing-g);
@@ -123,6 +148,11 @@
123
148
 
124
149
  &::backdrop {
125
150
  background: var(--dt-color-overlay);
151
+ opacity: 0;
152
+ transition:
153
+ opacity var(--backdrop-transition-duration) var(--modal-easing),
154
+ display var(--backdrop-transition-duration) allow-discrete,
155
+ overlay var(--backdrop-transition-duration) allow-discrete;
126
156
  }
127
157
 
128
158
  // TODO: Can be removed along with pie-design-tokens dependency
@@ -453,4 +483,12 @@
453
483
  &.c-modal--bg-brand-08 { --modal-bg-color: var(--dt-color-support-brand-08); }
454
484
 
455
485
  &.c-modal--bg-brand-08-subtle { --modal-bg-color: var(--dt-color-support-brand-08-subtle); }
486
+
487
+ @media (prefers-reduced-motion: reduce) {
488
+ &,
489
+ &::backdrop {
490
+ transition: none;
491
+ transform: none;
492
+ }
493
+ }
456
494
  }
package/src/react.ts CHANGED
@@ -29,5 +29,5 @@ type PieModalEvents = {
29
29
  onPieModalSupportingActionClick?: (event: CustomEvent) => void;
30
30
  };
31
31
 
32
- export const PieModal = PieModalReact as React.ForwardRefExoticComponent<React.PropsWithoutRef<ModalProps>
32
+ export const PieModal = PieModalReact as React.ForwardRefExoticComponent<React.PropsWithChildren<Omit<React.PropsWithoutRef<ModalProps>, 'children'>>
33
33
  & React.RefAttributes<PieModalLit> & PieModalEvents & ReactBaseType>;