@esri/calcite-components 5.2.0-next.11 → 5.2.0-next.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. package/dist/cdn/{X5OTLCGH.js → 2CDB7YMV.js} +1 -1
  2. package/dist/cdn/{FB57TK7N.js → 2FMHWMNQ.js} +1 -1
  3. package/dist/cdn/{3CRONO2H.js → 2JZG6CW2.js} +1 -1
  4. package/dist/cdn/{JPUVW4BM.js → 2X4PAO3S.js} +1 -1
  5. package/dist/cdn/{2JMH7LPC.js → 2XK6LELA.js} +1 -1
  6. package/dist/cdn/{3EZDLGBO.js → 354DIEVA.js} +1 -1
  7. package/dist/cdn/{QJMREFZB.js → 44HM425L.js} +1 -1
  8. package/dist/cdn/{CN3GE6PT.js → 46HCGN3Z.js} +1 -1
  9. package/dist/cdn/{LFKTIMOZ.js → 4BURTKNO.js} +1 -1
  10. package/dist/cdn/{KJ3MMRFP.js → 4H7ZPEKZ.js} +1 -1
  11. package/dist/cdn/{JEOK7EMC.js → 52HQQX6Y.js} +1 -1
  12. package/dist/cdn/{GB7SQRWY.js → 5454RDUL.js} +1 -1
  13. package/dist/cdn/{BPA5EXVV.js → 5DZDAOWR.js} +1 -1
  14. package/dist/cdn/{WNRAC2WY.js → 5NGA4EVP.js} +1 -1
  15. package/dist/cdn/{RCFDK4P6.js → 5UROUYS3.js} +1 -1
  16. package/dist/cdn/{L2E2NR2H.js → 5VTZSLYJ.js} +1 -1
  17. package/dist/cdn/{WUHL2RF4.js → 5YB5FJYE.js} +1 -1
  18. package/dist/cdn/{RCRCHQMS.js → 6D5P5PBV.js} +1 -1
  19. package/dist/cdn/{K3U762E3.js → 6LVEPSJF.js} +1 -1
  20. package/dist/cdn/{TQQODXRZ.js → 6PYZSUH3.js} +1 -1
  21. package/dist/cdn/{D7RBRMCT.js → 6WLLLEN3.js} +1 -1
  22. package/dist/cdn/{JYNUT5O6.js → 6ZYLTGE3.js} +1 -1
  23. package/dist/cdn/{MCIO7E44.js → 75NCTK6L.js} +1 -1
  24. package/dist/cdn/{PFED4DAQ.js → 77PTOZSM.js} +1 -1
  25. package/dist/cdn/{5FLAJ7D2.js → 7CSWVJ5M.js} +1 -1
  26. package/dist/cdn/{LOTSIKHS.js → 7G4RBWYJ.js} +1 -1
  27. package/dist/cdn/{BEKZEU4I.js → 7ICPTQE4.js} +1 -1
  28. package/dist/cdn/{R6VINUVM.js → ABPNVHU5.js} +1 -1
  29. package/dist/cdn/{OQ2LTAWF.js → AELZW7AU.js} +1 -1
  30. package/dist/cdn/{KW3PLEX7.js → APMOQ4Y4.js} +1 -1
  31. package/dist/cdn/{R77ROGW2.js → AUR6YRDE.js} +1 -1
  32. package/dist/cdn/{KLDQUGLR.js → B4IGEBPK.js} +1 -1
  33. package/dist/cdn/{I5F3FJAY.js → BBBZ2WYF.js} +1 -1
  34. package/dist/cdn/{DZQK7XAU.js → BHTABSYE.js} +1 -1
  35. package/dist/cdn/{N5VSPAE3.js → BZ6TSXUG.js} +1 -1
  36. package/dist/cdn/{IBIH72UK.js → CAPBWUWG.js} +1 -1
  37. package/dist/cdn/{NGAWCOAE.js → CGFRDHBP.js} +1 -1
  38. package/dist/cdn/{NURKCAEJ.js → CJGWPL4U.js} +1 -1
  39. package/dist/cdn/{GI5F5GIL.js → CRGGJZWM.js} +1 -1
  40. package/dist/cdn/{QNSRPIAF.js → CRPOWZ37.js} +1 -1
  41. package/dist/cdn/{MTOH4QVT.js → CXU6VING.js} +1 -1
  42. package/dist/cdn/{LHTO7FY4.js → CZ7VYDWG.js} +1 -1
  43. package/dist/cdn/{CDIHWTXQ.js → D6LPYA46.js} +1 -1
  44. package/dist/cdn/{FUTBCFE5.js → E63GBURX.js} +1 -1
  45. package/dist/cdn/{MRZOIDQQ.js → E744VP2Z.js} +1 -1
  46. package/dist/cdn/{MYZS7KFS.js → EH3PTZ4U.js} +1 -1
  47. package/dist/cdn/{RAJYPSRB.js → ENRWHPIF.js} +1 -1
  48. package/dist/cdn/{TGKWY4TT.js → ESZT6RT5.js} +1 -1
  49. package/dist/cdn/{W43X4BGF.js → ET7646XY.js} +1 -1
  50. package/dist/cdn/{BI6OUBR4.js → EWZPL6OB.js} +1 -1
  51. package/dist/cdn/{QQMRGXT6.js → FAW4SQGE.js} +1 -1
  52. package/dist/cdn/{2XGJ3QNO.js → FTXGWUZO.js} +1 -1
  53. package/dist/cdn/{T3DTWGCK.js → GADJ2LXH.js} +1 -1
  54. package/dist/cdn/{4RQ5ZGOF.js → GQRIHYNB.js} +1 -1
  55. package/dist/cdn/{CJQSJSTS.js → H4T6A6SI.js} +1 -1
  56. package/dist/cdn/{ALEAEOVB.js → HAV72ZDA.js} +1 -1
  57. package/dist/cdn/{WMWUSGWO.js → HHXN2PES.js} +1 -1
  58. package/dist/cdn/{A7TDONQL.js → HSABUJJ2.js} +1 -1
  59. package/dist/cdn/{PTCA34C2.js → IC54UVU5.js} +1 -1
  60. package/dist/cdn/{WX3UVAG5.js → ICNDY3NT.js} +1 -1
  61. package/dist/cdn/{P42BO7EU.js → IGIOBUYM.js} +1 -1
  62. package/dist/cdn/{G6EVBNHW.js → ISOE5AOQ.js} +1 -1
  63. package/dist/cdn/{63DWPLOW.js → IXZ6PFE7.js} +1 -1
  64. package/dist/cdn/{TFQV64OA.js → J2VPKHPR.js} +1 -1
  65. package/dist/cdn/{JBKYBEOG.js → JBNMR7AO.js} +1 -1
  66. package/dist/cdn/{EAFCYLPB.js → JSJA6AQG.js} +1 -1
  67. package/dist/cdn/{3SETOU5V.js → K2LPDQCB.js} +1 -1
  68. package/dist/cdn/{UBV2M472.js → K44VSQNH.js} +1 -1
  69. package/dist/cdn/{6KINBEDD.js → KXOJANYH.js} +1 -1
  70. package/dist/cdn/{HBUYVYXR.js → KZIIO2XD.js} +1 -1
  71. package/dist/cdn/{CJD35UKW.js → L3FQNCSW.js} +1 -1
  72. package/dist/cdn/{WITBUCKH.js → LJNFFPCF.js} +1 -1
  73. package/dist/cdn/{EJEEDORY.js → LKRC2DI2.js} +1 -1
  74. package/dist/cdn/{FYDHPNCY.js → LMGYSP5H.js} +1 -1
  75. package/dist/cdn/{56KAPM6G.js → LNEHNLWI.js} +1 -1
  76. package/dist/cdn/LPCOIGOZ.js +2 -0
  77. package/dist/cdn/{IOUHSWD2.js → MCWGKKKK.js} +1 -1
  78. package/dist/cdn/{DA2XHTL4.js → MF2UVK2Y.js} +1 -1
  79. package/dist/cdn/{F6ACIE2U.js → MGECKJAN.js} +1 -1
  80. package/dist/cdn/{GDUTBFTC.js → ML7VRYLW.js} +1 -1
  81. package/dist/cdn/{MQ7UFMYF.js → N6U6CWDX.js} +1 -1
  82. package/dist/cdn/{B2PYAAJV.js → NBWS4C5W.js} +1 -1
  83. package/dist/cdn/{FKY6KVFI.js → NEQ464F7.js} +1 -1
  84. package/dist/cdn/{WRI4WTGJ.js → NQEA36ZD.js} +1 -1
  85. package/dist/cdn/{MCRV5ZIG.js → NR2DIL26.js} +1 -1
  86. package/dist/cdn/{MHXRVPMW.js → NTUCRCRT.js} +1 -1
  87. package/dist/cdn/{JSIAJ7SW.js → O6NLIZ6M.js} +1 -1
  88. package/dist/cdn/{5U7ZVAAZ.js → OPBHLBK2.js} +1 -1
  89. package/dist/cdn/{KHZYS5PW.js → OS4SFT2S.js} +1 -1
  90. package/dist/cdn/{GM26E4GK.js → P6DFWXKW.js} +1 -1
  91. package/dist/cdn/{BBQVPQKS.js → PBGLJ2NE.js} +1 -1
  92. package/dist/cdn/{QNAN26PB.js → PBNUGRZX.js} +1 -1
  93. package/dist/cdn/{5LXXJ62H.js → PHDTNRTM.js} +1 -1
  94. package/dist/cdn/{KQT4OVOQ.js → PQYZ3E6P.js} +1 -1
  95. package/dist/cdn/{5XL7IT2K.js → PZNSB5BM.js} +1 -1
  96. package/dist/cdn/{QLMVDHA2.js → QHJT7WEH.js} +1 -1
  97. package/dist/cdn/{HSGC6FUA.js → QXGCF46A.js} +1 -1
  98. package/dist/cdn/{GL7AHGSG.js → QYY75EOV.js} +1 -1
  99. package/dist/cdn/{FGJZEQ7S.js → RLDYC26K.js} +1 -1
  100. package/dist/cdn/{OBIIMTPH.js → RNZE3WNS.js} +1 -1
  101. package/dist/cdn/{ILDL4WCG.js → RSHGM7UO.js} +1 -1
  102. package/dist/cdn/{EC7ULGFR.js → RU5PXLVE.js} +1 -1
  103. package/dist/cdn/{NNQ7SFRC.js → RZAH33G6.js} +1 -1
  104. package/dist/cdn/{XGCFMOII.js → S67ATPSA.js} +1 -1
  105. package/dist/cdn/{VZRT26W2.js → SEFSZCQN.js} +1 -1
  106. package/dist/cdn/{ZSDOYVMG.js → SEQVM5PO.js} +1 -1
  107. package/dist/cdn/{I2BHXDYX.js → SHZ74755.js} +1 -1
  108. package/dist/cdn/{EWSBPNQJ.js → SIVTVAQT.js} +1 -1
  109. package/dist/cdn/{BYHIBMOX.js → SOJIVG6M.js} +1 -1
  110. package/dist/cdn/SR2CE22O.js +2 -0
  111. package/dist/cdn/{DPGSR54A.js → SYYE6RQW.js} +1 -1
  112. package/dist/cdn/{EJWFQHC3.js → TALQPJJZ.js} +1 -1
  113. package/dist/cdn/{W3GTJS5Q.js → TBJEABC5.js} +1 -1
  114. package/dist/cdn/{KNTY5HWG.js → TFYOAEH3.js} +1 -1
  115. package/dist/cdn/{PRMQOCUX.js → TWQ57IRJ.js} +1 -1
  116. package/dist/cdn/{TB4K2SOD.js → UASO6SDG.js} +1 -1
  117. package/dist/cdn/{OYT6TEB6.js → UJWPJWIO.js} +1 -1
  118. package/dist/cdn/{5CSHF46L.js → UPGBCUHE.js} +1 -1
  119. package/dist/cdn/{3KCJ5OBV.js → UUCBJ7TH.js} +1 -1
  120. package/dist/cdn/{BLRDFO6X.js → V5LP26I7.js} +1 -1
  121. package/dist/cdn/{ZAUUAVGQ.js → V63M76YG.js} +1 -1
  122. package/dist/cdn/{DQWH6U7F.js → V67BG7XH.js} +1 -1
  123. package/dist/cdn/{DEFKYCLD.js → VGNEUGPB.js} +1 -1
  124. package/dist/cdn/{6AKAPCTR.js → VUJAJ4W5.js} +1 -1
  125. package/dist/cdn/{RJYU6IPS.js → VVFKNSX5.js} +1 -1
  126. package/dist/cdn/{5LW3L2G4.js → VXFMTQI4.js} +1 -1
  127. package/dist/cdn/{V7AJFYEC.js → WAU5PXO6.js} +1 -1
  128. package/dist/cdn/{PGLPZTZP.js → WDNHEC7F.js} +1 -1
  129. package/dist/cdn/{LR455X6K.js → WDOIKEZ5.js} +1 -1
  130. package/dist/cdn/{IL4G7JFU.js → X4XNQCPA.js} +1 -1
  131. package/dist/cdn/{72B2PF6V.js → X6BHVUUT.js} +1 -1
  132. package/dist/cdn/{Z5ZJ5N7G.js → X7PZUV2N.js} +1 -1
  133. package/dist/cdn/{JQWOF5HF.js → X7RHHBQJ.js} +1 -1
  134. package/dist/cdn/{S7II3I5Q.js → YDKH5LGF.js} +1 -1
  135. package/dist/cdn/{5PGOKPKX.js → YE46XAUA.js} +1 -1
  136. package/dist/cdn/{LRZTFP3T.js → YSRFQCJ4.js} +1 -1
  137. package/dist/cdn/{2ELOLPNF.js → YUKSX2SW.js} +1 -1
  138. package/dist/cdn/{H5UDZR5O.js → ZC4SJHJN.js} +1 -1
  139. package/dist/cdn/{QESRDF5I.js → ZC7MQVIB.js} +1 -1
  140. package/dist/cdn/{S6U2KSPS.js → ZGTWRO3M.js} +1 -1
  141. package/dist/cdn/{JMT3PAOJ.js → ZLW3VJCO.js} +1 -1
  142. package/dist/cdn/{7LYEAGAV.js → ZRAZ7URS.js} +1 -1
  143. package/dist/cdn/{24X5JMHT.js → ZUAZBJFO.js} +1 -1
  144. package/dist/cdn/{6O3DEY2K.js → ZZ2IVCQ7.js} +1 -1
  145. package/dist/cdn/index.js +1 -1
  146. package/dist/chunks/runtime.js +3 -3
  147. package/dist/components/calcite-flow-item/customElement.js +8 -6
  148. package/dist/components/calcite-panel/customElement.js +38 -6
  149. package/dist/components/calcite-tile/customElement.d.ts +1 -1
  150. package/dist/docs/api.json +1 -1
  151. package/dist/docs/docs.json +1 -1
  152. package/dist/docs/vscode.html-custom-data.json +1 -1
  153. package/dist/docs/web-types.json +1 -1
  154. package/dist/loader.js +2 -2
  155. package/package.json +2 -2
  156. package/dist/cdn/N6TVPJ75.js +0 -2
  157. package/dist/cdn/NN7V77MF.js +0 -2
@@ -61,9 +61,9 @@ function getConfig() {
61
61
  }
62
62
  return effectiveConfig;
63
63
  }
64
- const version = "5.2.0-next.11";
64
+ const version = "5.2.0-next.12";
65
65
  const buildDate = "2026-06-30";
66
- const revision = "44150ac2d";
66
+ const revision = "d59578355";
67
67
  function stampVersion() {
68
68
  const config = getConfig();
69
69
  if (config && config.version) {
@@ -86,7 +86,7 @@ if (!isServer) {
86
86
  if (process.env.NODE_ENV !== "test") {
87
87
  queueMicrotask(stampVersion);
88
88
  }
89
- const runtime = makeRuntime({ defaultAssetPath: "https://cdn.jsdelivr.net/npm/@esri/calcite-components@5.2.0-next.11/dist/cdn/", hydratedAttribute: "calcite-hydrated" });
89
+ const runtime = makeRuntime({ defaultAssetPath: "https://cdn.jsdelivr.net/npm/@esri/calcite-components@5.2.0-next.12/dist/cdn/", hydratedAttribute: "calcite-hydrated" });
90
90
  const { customElement, getAssetPath, setAssetPath } = runtime;
91
91
  export {
92
92
  CSS_UTILITY as C,
@@ -7,7 +7,6 @@ import { createRef, ref } from "lit/directives/ref.js";
7
7
  import { useDirection } from "@arcgis/lumina/controllers";
8
8
  import { S as SLOTS$1 } from "../../chunks/resources8.js";
9
9
  import { u as useT9n } from "../../chunks/useT9n.js";
10
- import { u as useSetFocus } from "../../chunks/useSetFocus.js";
11
10
  import { u as useInteractive } from "../../chunks/useInteractive.js";
12
11
  const CSS = {
13
12
  backButton: "back-button"
@@ -40,7 +39,6 @@ class FlowItem extends LitElement {
40
39
  this.containerRef = createRef();
41
40
  this.direction = useDirection();
42
41
  this.messages = useT9n();
43
- this.focusSetter = useSetFocus()(this);
44
42
  this.interactiveContainer = useInteractive(this);
45
43
  this.closable = false;
46
44
  this.closed = false;
@@ -50,6 +48,7 @@ class FlowItem extends LitElement {
50
48
  this.disabled = false;
51
49
  this.iconFlipRtl = false;
52
50
  this.loading = false;
51
+ this.focusTrapEnabled = false;
53
52
  this.menuOpen = false;
54
53
  this.overlayPositioning = "absolute";
55
54
  this.scale = "m";
@@ -65,7 +64,7 @@ class FlowItem extends LitElement {
65
64
  this.calciteInternalFlowItemChange = createEvent({ cancelable: false });
66
65
  }
67
66
  static {
68
- this.properties = { beforeBack: [0, {}, { attribute: false }], beforeClose: [0, {}, { attribute: false }], closable: [7, {}, { reflect: true, type: Boolean }], closed: [7, {}, { reflect: true, type: Boolean }], collapseDirection: 1, collapsed: [7, {}, { reflect: true, type: Boolean }], collapsible: [7, {}, { reflect: true, type: Boolean }], description: 1, disabled: [7, {}, { reflect: true, type: Boolean }], heading: 1, headingLevel: [11, {}, { type: Number, reflect: true }], icon: [3, { type: String }, { reflect: true }], iconFlipRtl: [7, {}, { reflect: true, type: Boolean }], loading: [7, {}, { reflect: true, type: Boolean }], menuOpen: [7, {}, { reflect: true, type: Boolean }], messageOverrides: [0, {}, { attribute: false }], overlayPositioning: [3, {}, { reflect: true }], scale: [3, {}, { reflect: true }], selected: [7, {}, { reflect: true, type: Boolean }], showBackButton: [5, {}, { type: Boolean }], topLayerDisabled: [7, {}, { reflect: true, type: Boolean }] };
67
+ this.properties = { beforeBack: [0, {}, { attribute: false }], beforeClose: [0, {}, { attribute: false }], closable: [7, {}, { reflect: true, type: Boolean }], closed: [7, {}, { reflect: true, type: Boolean }], collapseDirection: 1, collapsed: [7, {}, { reflect: true, type: Boolean }], collapsible: [7, {}, { reflect: true, type: Boolean }], description: 1, disabled: [7, {}, { reflect: true, type: Boolean }], heading: 1, headingLevel: [11, {}, { type: Number, reflect: true }], icon: [3, { type: String }, { reflect: true }], iconFlipRtl: [7, {}, { reflect: true, type: Boolean }], loading: [7, {}, { reflect: true, type: Boolean }], focusTrapEnabled: [7, {}, { reflect: true, type: Boolean }], focusTrapOptions: [0, {}, { attribute: false }], menuOpen: [7, {}, { reflect: true, type: Boolean }], messageOverrides: [0, {}, { attribute: false }], overlayPositioning: [3, {}, { reflect: true }], scale: [3, {}, { reflect: true }], selected: [7, {}, { reflect: true, type: Boolean }], showBackButton: [5, {}, { type: Boolean }], topLayerDisabled: [7, {}, { reflect: true, type: Boolean }] };
69
68
  }
70
69
  static {
71
70
  this.styles = styles;
@@ -74,7 +73,10 @@ class FlowItem extends LitElement {
74
73
  await this.containerRef.value?.scrollContentTo(options);
75
74
  }
76
75
  async setFocus(options) {
77
- return this.focusSetter(() => this.backButtonRef.value || this.containerRef.value, options);
76
+ return this.containerRef.value?.setFocus(options);
77
+ }
78
+ async updateFocusTrapElements(extraContainers) {
79
+ this.containerRef.value?.updateFocusTrapElements(extraContainers);
78
80
  }
79
81
  willUpdate(changes) {
80
82
  if (changes.has("selected") && (this.hasUpdated || this.selected !== false)) {
@@ -122,8 +124,8 @@ class FlowItem extends LitElement {
122
124
  return showBackButton ? keyed("flow-back-button", html`<calcite-action class=${safeClassMap(CSS.backButton)} .icon=${icon} @click=${backButtonClick} .scale=${this.scale} slot=${SLOTS.headerActionsStart} .text=${label} title=${label ?? nothing} ${ref(this.backButtonRef)}></calcite-action>`) : null;
123
125
  }
124
126
  render() {
125
- const { collapsed, collapseDirection, collapsible, closable, closed, description, disabled, heading, headingLevel, loading, menuOpen, messageOverrides, overlayPositioning, beforeClose, icon, iconFlipRtl } = this;
126
- return this.interactiveContainer({ disabled, children: html`<calcite-panel .beforeClose=${beforeClose} .closable=${closable} .closed=${closed} .collapsed=${collapsed} .collapseDirection=${collapseDirection} .collapsible=${collapsible} .description=${description} .disabled=${disabled} .heading=${heading} .headingLevel=${headingLevel} .icon=${icon} .iconFlipRtl=${iconFlipRtl} .loading=${loading} .menuOpen=${menuOpen} .messageOverrides=${messageOverrides} @calcitePanelClose=${this.handleInternalPanelClose} @calcitePanelScroll=${this.handleInternalPanelScroll} @calcitePanelToggle=${this.handleInternalPanelToggle} .overlayPositioning=${overlayPositioning} .scale=${this.scale} .topLayerDisabled=${this.topLayerDisabled} ${ref(this.containerRef)}>${this.renderBackButton()}<slot name=${SLOTS.actionBar} slot=${SLOTS$1.actionBar}></slot><slot name=${SLOTS.alerts} slot=${SLOTS$1.alerts}></slot><slot name=${SLOTS.headerActionsStart} slot=${SLOTS$1.headerActionsStart}></slot><slot name=${SLOTS.headerActionsEnd} slot=${SLOTS$1.headerActionsEnd}></slot><slot name=${SLOTS.description} slot=${SLOTS$1.description}></slot><slot name=${SLOTS.heading} slot=${SLOTS$1.heading}></slot><slot name=${SLOTS.headerContent} slot=${SLOTS$1.headerContent}></slot><slot name=${SLOTS.headerMenuActions} slot=${SLOTS$1.headerMenuActions}></slot><slot name=${SLOTS.fab} slot=${SLOTS$1.fab}></slot><slot name=${SLOTS.contentTop} slot=${SLOTS$1.contentTop}></slot><slot name=${SLOTS.contentBottom} slot=${SLOTS$1.contentBottom}></slot><slot name=${SLOTS.footerStart} slot=${SLOTS$1.footerStart}></slot><slot name=${SLOTS.footer} slot=${SLOTS$1.footer}></slot><slot name=${SLOTS.footerEnd} slot=${SLOTS$1.footerEnd}></slot><slot></slot></calcite-panel>` });
127
+ const { collapsed, collapseDirection, collapsible, closable, closed, description, disabled, heading, headingLevel, loading, menuOpen, messageOverrides, overlayPositioning, beforeClose, icon, iconFlipRtl, focusTrapEnabled, focusTrapOptions } = this;
128
+ return this.interactiveContainer({ disabled, children: html`<calcite-panel .beforeClose=${beforeClose} .closable=${closable} .closed=${closed} .collapsed=${collapsed} .collapseDirection=${collapseDirection} .collapsible=${collapsible} .description=${description} .disabled=${disabled} .focusTrapEnabled=${focusTrapEnabled} .focusTrapOptions=${focusTrapOptions} .heading=${heading} .headingLevel=${headingLevel} .icon=${icon} .iconFlipRtl=${iconFlipRtl} .loading=${loading} .menuOpen=${menuOpen} .messageOverrides=${messageOverrides} @calcitePanelClose=${this.handleInternalPanelClose} @calcitePanelScroll=${this.handleInternalPanelScroll} @calcitePanelToggle=${this.handleInternalPanelToggle} .overlayPositioning=${overlayPositioning} .scale=${this.scale} .topLayerDisabled=${this.topLayerDisabled} ${ref(this.containerRef)}>${this.renderBackButton()}<slot name=${SLOTS.actionBar} slot=${SLOTS$1.actionBar}></slot><slot name=${SLOTS.alerts} slot=${SLOTS$1.alerts}></slot><slot name=${SLOTS.headerActionsStart} slot=${SLOTS$1.headerActionsStart}></slot><slot name=${SLOTS.headerActionsEnd} slot=${SLOTS$1.headerActionsEnd}></slot><slot name=${SLOTS.description} slot=${SLOTS$1.description}></slot><slot name=${SLOTS.heading} slot=${SLOTS$1.heading}></slot><slot name=${SLOTS.headerContent} slot=${SLOTS$1.headerContent}></slot><slot name=${SLOTS.headerMenuActions} slot=${SLOTS$1.headerMenuActions}></slot><slot name=${SLOTS.fab} slot=${SLOTS$1.fab}></slot><slot name=${SLOTS.contentTop} slot=${SLOTS$1.contentTop}></slot><slot name=${SLOTS.contentBottom} slot=${SLOTS$1.contentBottom}></slot><slot name=${SLOTS.footerStart} slot=${SLOTS$1.footerStart}></slot><slot name=${SLOTS.footer} slot=${SLOTS$1.footer}></slot><slot name=${SLOTS.footerEnd} slot=${SLOTS$1.footerEnd}></slot><slot></slot></calcite-panel>` });
127
129
  }
128
130
  }
129
131
  customElement("calcite-flow-item", FlowItem);
@@ -14,6 +14,7 @@ import { u as useT9n } from "../../chunks/useT9n.js";
14
14
  import { u as useSetFocus } from "../../chunks/useSetFocus.js";
15
15
  import { s as styles$1 } from "../../chunks/header.js";
16
16
  import { u as useInteractive } from "../../chunks/useInteractive.js";
17
+ import { u as useFocusTrap } from "../../chunks/useFocusTrap.js";
17
18
  import { C as CSS, S as SLOTS, I as ICONS, a as IDS } from "../../chunks/resources8.js";
18
19
  const styles = css`:host([disabled]){cursor:default;-webkit-user-select:none;user-select:none;opacity:var(--calcite-opacity-disabled)}:host([disabled]) *,:host([disabled]) ::slotted(*){pointer-events:none}:host{position:relative;box-sizing:border-box;display:flex;block-size:100%;inline-size:100%;flex:1 1 auto;overflow:hidden;border-radius:var(--calcite-panel-corner-radius, var(--calcite-corner-radius-sharp))}slot[name=alerts]::slotted(calcite-alert){block-size:0}:host([disabled]) ::slotted([calcite-hydrated][disabled]),:host([disabled]) [calcite-hydrated][disabled]{opacity:1}.interaction-container{display:contents}:host([scale=s]){--calcite-internal-panel-default-space: var(--calcite-spacing-sm);--calcite-internal-panel-header-vertical-padding: var(--calcite-spacing-sm-plus)}:host([scale=s]) .header-content .heading{font-size:var(--calcite-font-size--1)}:host([scale=s]) .header-content .description{font-size:var(--calcite-font-size--2)}:host([scale=s]) .header-content .icon{margin-inline-end:var(--calcite-spacing-sm)}:host([scale=m]){--calcite-internal-panel-default-space: var(--calcite-spacing-md);--calcite-internal-panel-header-vertical-padding: var(--calcite-spacing-md-plus)}:host([scale=m]) .header-content .heading{font-size:var(--calcite-font-size-0)}:host([scale=m]) .header-content .description{font-size:var(--calcite-font-size--1)}:host([scale=m]) .header-content .icon{margin-inline-end:var(--calcite-spacing-md)}:host(:is([scale=s],[scale=m])){--calcite-internal-panel-action-spacing: var(--calcite-spacing-xxs)}:host([scale=l]){--calcite-internal-panel-action-spacing: var(--calcite-spacing-xs);--calcite-internal-panel-default-space: var(--calcite-spacing-lg);--calcite-internal-panel-header-vertical-padding: var(--calcite-spacing-xl)}:host([scale=l]) .header-content .heading{font-size:var(--calcite-font-size-1)}:host([scale=l]) .header-content .description{font-size:var(--calcite-font-size-0)}:host([scale=l]) .header-content .icon{margin-inline-end:var(--calcite-spacing-lg)}.content-top,.content-bottom{display:flex;align-items:flex-start;align-self:stretch;border-block-start:1px solid var(--calcite-panel-border-color, var(--calcite-color-border-3));background-color:var(--calcite-panel-background-color, var(--calcite-color-foreground-1))}.content-top{padding:var(--calcite-panel-content-top-space, var(--calcite-internal-panel-default-space))}.content-bottom{padding:var(--calcite-panel-content-bottom-space, var(--calcite-internal-panel-default-space))}.container{position:relative;margin:0;display:flex;inline-size:100%;flex:1 1 auto;flex-direction:column;align-items:stretch;overflow:hidden;background-color:var(--calcite-color-background);padding:0;font-size:var(--calcite-font-size-relative-base);color:var(--calcite-color-text-2);transition:max-block-size var(--calcite-animation-timing),inline-size var(--calcite-animation-timing);box-sizing:border-box;font-size:var(--calcite-font-size--1)}.container *{box-sizing:border-box}.header{z-index:var(--calcite-z-index-header);display:flex;flex-direction:column;background-color:var(--calcite-panel-header-background-color, var(--calcite-color-foreground-1));border-block-end:1px solid var(--calcite-panel-border-color, var(--calcite-panel-header-border-block-end, var(--calcite-color-border-3)))}.header-container{display:flex;inline-size:100%;flex-direction:row;align-items:stretch;justify-content:flex-start;flex:0 0 auto}.header-container--border-end{border-block-end:1px solid var(--calcite-panel-border-color, var(--calcite-color-border-3))}.action-bar-container{inline-size:100%}.action-bar-container ::slotted(calcite-action-bar){inline-size:100%}.header-content{display:flex;flex-direction:column;overflow:hidden;padding-inline:.75rem;padding-block:.875rem;margin-inline-end:auto;justify-content:center}.header-content .heading-text-content{flex:1 1 auto;overflow:hidden}.header-content .heading,.header-content .description{display:block;flex:none;overflow-wrap:break-word;padding:0;line-height:var(--calcite-font-line-height-relative-snug)}.header-content .heading{font-weight:var(--calcite-font-weight-medium);color:var(--calcite-panel-heading-text-color, var(--calcite-color-text-1))}.header-content .heading:only-child{margin-block-end:0px}.header-content .description{color:var(--calcite-panel-description-text-color, var(--calcite-color-text-2))}#close,#collapse,calcite-action-menu{--calcite-action-background-color: var(--calcite-panel-header-action-background-color);--calcite-action-background-color-hover: var(--calcite-panel-header-action-background-color-hover);--calcite-action-background-color-press: var(--calcite-panel-header-action-background-color-press);--calcite-action-text-color: var(--calcite-panel-header-action-text-color);--calcite-action-text-color-press: var(--calcite-panel-header-action-text-color-press)}.header-actions{display:flex;flex-direction:row;flex-wrap:nowrap;margin:auto;gap:var(--calcite-internal-panel-action-spacing)}.header-actions--start{margin-inline-start:var(--calcite-internal-panel-action-spacing)}.header-actions--end{margin-inline-end:var(--calcite-internal-panel-action-spacing)}.content-wrapper{position:relative;display:flex;block-size:100%;flex:1 1 auto;flex-direction:column;flex-wrap:nowrap;align-items:stretch;overflow:auto;color:var(--calcite-color-text-2);outline-color:transparent;padding:var(--calcite-panel-space, var(--calcite-panel-content-space, 0));background:var(--calcite-panel-background-color, var(--calcite-color-background))}.content-wrapper:focus-visible{outline:var(--calcite-border-width-md) solid var(--calcite-color-focus, var(--calcite-ui-focus-color, var(--calcite-color-brand)));outline-offset:calc(calc(-1 * var(--calcite-spacing-base)) * calc(1 - (2*clamp(0,var(--calcite-offset-invert-focus),1))))}.header-content{flex:1 1 auto;justify-content:center;padding-block:var(--calcite-internal-panel-header-vertical-padding);padding-inline:var(--calcite-internal-panel-default-space)}.header-content.header--slotted-content{padding:var(--calcite-panel-header-content-space, var(--calcite-internal-panel-header-vertical-padding) var(--calcite-internal-panel-default-space))}.header-content.header--non-slotted-content{align-items:center;flex-direction:row}.footer{margin-block-start:auto;display:flex;flex-direction:row;align-content:space-between;align-items:center;justify-content:center;font-size:var(--calcite-font-size-relative-sm);line-height:var(--calcite-font-line-height-relative-snug);border-block-start:1px solid var(--calcite-panel-border-color, var(--calcite-color-border-3));padding:var(--calcite-panel-footer-space, var(--calcite-panel-footer-padding, var(--calcite-internal-panel-default-space)));background-color:var(--calcite-panel-footer-background-color, var(--calcite-color-foreground-1))}.footer-content{display:flex;flex:1 1 0%;flex-direction:row;align-items:center;justify-content:center}.footer-start{display:flex;flex:1 1 0%;flex-direction:row;align-items:center;justify-content:flex-start;margin-inline-end:auto;gap:var(--calcite-internal-panel-default-space)}.footer-end{display:flex;flex:1 1 0%;flex-direction:row;align-items:center;justify-content:flex-end;margin-inline-start:auto;gap:var(--calcite-internal-panel-default-space)}.fab-container{position:sticky;inset-block-end:0px;z-index:var(--calcite-z-index-sticky);margin-block:0px;margin-inline:auto;display:block;padding:.5rem;inset-inline:0;inline-size:fit-content}calcite-icon{--calcite-icon-color: var(--calcite-panel-icon-color, var(--calcite-ui-icon-color, var(--calcite-color-text-1)))}:host([hidden]){display:none}[hidden]{display:none}`;
19
20
  class Panel extends LitElement {
@@ -24,6 +25,18 @@ class Panel extends LitElement {
24
25
  this.messages = useT9n();
25
26
  this._closed = false;
26
27
  this.focusSetter = useSetFocus()(this);
28
+ this.focusTrapController = useFocusTrap({
29
+ focusTrapOptions: {
30
+ allowOutsideClick: true,
31
+ escapeDeactivates: (event) => {
32
+ if (!event.defaultPrevented && this.closable) {
33
+ this.emitCloseEvent();
34
+ event.preventDefault();
35
+ }
36
+ return false;
37
+ }
38
+ }
39
+ })(this);
27
40
  this.interactiveContainer = useInteractive(this);
28
41
  this.hasActionBar = false;
29
42
  this.hasContentBottom = false;
@@ -46,6 +59,7 @@ class Panel extends LitElement {
46
59
  this.disabled = false;
47
60
  this.iconFlipRtl = false;
48
61
  this.loading = false;
62
+ this.focusTrapEnabled = false;
49
63
  this.menuOpen = false;
50
64
  this.menuPlacement = defaultEndMenuPlacement;
51
65
  this.overlayPositioning = "absolute";
@@ -60,7 +74,7 @@ class Panel extends LitElement {
60
74
  this.listen("calcitePanelClose", this.panelCloseHandler);
61
75
  }
62
76
  static {
63
- this.properties = { hasActionBar: [16, {}, { state: true }], hasContentBottom: [16, {}, { state: true }], hasContentTop: [16, {}, { state: true }], hasEndActions: [16, {}, { state: true }], hasFab: [16, {}, { state: true }], hasFooterContent: [16, {}, { state: true }], hasFooterEndContent: [16, {}, { state: true }], hasFooterStartContent: [16, {}, { state: true }], hasHeaderContent: [16, {}, { state: true }], hasHeaderDescription: [16, {}, { state: true }], hasHeaderHeading: [16, {}, { state: true }], hasMenuItems: [16, {}, { state: true }], hasStartActions: [16, {}, { state: true }], showHeaderContent: [16, {}, { state: true }], beforeClose: [0, {}, { attribute: false }], closable: [7, {}, { reflect: true, type: Boolean }], closed: [7, {}, { reflect: true, type: Boolean }], collapseDirection: 1, collapsed: [7, {}, { reflect: true, type: Boolean }], collapsible: [7, {}, { reflect: true, type: Boolean }], description: 1, disabled: [7, {}, { reflect: true, type: Boolean }], heading: 1, headingLevel: [11, {}, { type: Number, reflect: true }], icon: [3, { type: String }, { reflect: true }], iconFlipRtl: [7, {}, { reflect: true, type: Boolean }], loading: [7, {}, { reflect: true, type: Boolean }], menuFlipPlacements: [0, {}, { attribute: false }], menuOpen: [7, {}, { reflect: true, type: Boolean }], menuPlacement: [3, {}, { reflect: true }], messageOverrides: [0, {}, { attribute: false }], overlayPositioning: [3, {}, { reflect: true }], scale: [3, {}, { reflect: true }], topLayerDisabled: [7, {}, { reflect: true, type: Boolean }] };
77
+ this.properties = { hasActionBar: [16, {}, { state: true }], hasContentBottom: [16, {}, { state: true }], hasContentTop: [16, {}, { state: true }], hasEndActions: [16, {}, { state: true }], hasFab: [16, {}, { state: true }], hasFooterContent: [16, {}, { state: true }], hasFooterEndContent: [16, {}, { state: true }], hasFooterStartContent: [16, {}, { state: true }], hasHeaderContent: [16, {}, { state: true }], hasHeaderDescription: [16, {}, { state: true }], hasHeaderHeading: [16, {}, { state: true }], hasMenuItems: [16, {}, { state: true }], hasStartActions: [16, {}, { state: true }], showHeaderContent: [16, {}, { state: true }], beforeClose: [0, {}, { attribute: false }], closable: [7, {}, { reflect: true, type: Boolean }], closed: [7, {}, { reflect: true, type: Boolean }], collapseDirection: 1, collapsed: [7, {}, { reflect: true, type: Boolean }], collapsible: [7, {}, { reflect: true, type: Boolean }], description: 1, disabled: [7, {}, { reflect: true, type: Boolean }], heading: 1, headingLevel: [11, {}, { type: Number, reflect: true }], icon: [3, { type: String }, { reflect: true }], iconFlipRtl: [7, {}, { reflect: true, type: Boolean }], loading: [7, {}, { reflect: true, type: Boolean }], focusTrapEnabled: [7, {}, { reflect: true, type: Boolean }], focusTrapOptions: [0, {}, { attribute: false }], menuFlipPlacements: [0, {}, { attribute: false }], menuOpen: [7, {}, { reflect: true, type: Boolean }], menuPlacement: [3, {}, { reflect: true }], messageOverrides: [0, {}, { attribute: false }], overlayPositioning: [3, {}, { reflect: true }], scale: [3, {}, { reflect: true }], topLayerDisabled: [7, {}, { reflect: true, type: Boolean }] };
64
78
  }
65
79
  static {
66
80
  this.styles = [styles$1, styles];
@@ -80,6 +94,10 @@ class Panel extends LitElement {
80
94
  async setFocus(options) {
81
95
  return this.focusSetter(() => this.containerRef.value, options);
82
96
  }
97
+ async updateFocusTrapElements(extraContainers) {
98
+ this.focusTrapController.setExtraContainers(extraContainers);
99
+ this.focusTrapController.updateContainerElements();
100
+ }
83
101
  willUpdate(changes) {
84
102
  if (changes.has("collapsed") && this.hasUpdated) {
85
103
  if (this.collapsed) {
@@ -89,10 +107,22 @@ class Panel extends LitElement {
89
107
  }
90
108
  }
91
109
  }
110
+ updated(changes) {
111
+ if (changes.has("focusTrapEnabled") || changes.has("closable") || changes.has("closed")) {
112
+ if (!this.closed && this.closable && this.focusTrapEnabled) {
113
+ this.focusTrapController.activate();
114
+ } else {
115
+ this.focusTrapController.deactivate();
116
+ }
117
+ }
118
+ }
92
119
  disconnectedCallback() {
93
120
  super.disconnectedCallback();
94
121
  this.resizeObserver?.disconnect();
95
122
  }
123
+ focusTrapDisabledOverride() {
124
+ return !this.focusTrapEnabled || !this.closable || this.closed;
125
+ }
96
126
  async setClosedState(value) {
97
127
  if (this.beforeClose && value) {
98
128
  try {
@@ -122,10 +152,11 @@ class Panel extends LitElement {
122
152
  this.calcitePanelClose.emit();
123
153
  }
124
154
  panelKeyDownHandler(event) {
125
- if (this.closable && event.key === "Escape" && !event.defaultPrevented) {
126
- event.preventDefault();
127
- this.emitCloseEvent();
155
+ if (event.key !== "Escape" || event.defaultPrevented || this.closed || !this.closable) {
156
+ return;
128
157
  }
158
+ event.preventDefault();
159
+ this.emitCloseEvent();
129
160
  }
130
161
  panelCloseHandler(event) {
131
162
  if (event.defaultPrevented || event.target !== this.el) {
@@ -255,8 +286,9 @@ class Panel extends LitElement {
255
286
  return html`<div class=${safeClassMap(CSS.fabContainer)} .hidden=${!this.hasFab}><slot name=${SLOTS.fab} @slotchange=${this.handleFabSlotChange}></slot></div>`;
256
287
  }
257
288
  render() {
258
- const { disabled, loading, closed } = this;
259
- const panelNode = html`<article .ariaBusy=${loading} class=${safeClassMap(CSS.container)} .hidden=${closed} ${ref(this.containerRef)}>${this.renderHeaderNode()}${this.renderContent()}${this.renderContentBottom()}${this.renderFooterNode()}${keyed("alerts", html`<slot name=${SLOTS.alerts} @slotchange=${this.handleAlertsSlotChange}></slot>`)}</article>`;
289
+ const { disabled, loading, closed, heading, description, focusTrapEnabled, closable } = this;
290
+ const hasDialogRole = focusTrapEnabled && closable;
291
+ const panelNode = html`<div .ariaBusy=${loading} .ariaDescription=${hasDialogRole && description ? description : void 0} .ariaLabel=${hasDialogRole && heading ? heading : void 0} .ariaLive=${hasDialogRole ? "polite" : void 0} class=${safeClassMap(CSS.container)} .hidden=${closed} .role=${hasDialogRole ? "dialog" : "article"} ${ref(this.containerRef)}>${this.renderHeaderNode()}${this.renderContent()}${this.renderContentBottom()}${this.renderFooterNode()}${keyed("alerts", html`<slot name=${SLOTS.alerts} @slotchange=${this.handleAlertsSlotChange}></slot>`)}</div>`;
260
292
  return this.interactiveContainer({ disabled, children: html`${loading ? html`<calcite-scrim .loading=${loading}></calcite-scrim>` : null}${panelNode}` });
261
293
  }
262
294
  }
@@ -14,7 +14,7 @@ import type { HeadingLevel } from "../functional/Heading.js";
14
14
  * @cssproperty [--calcite-tile-shadow] - Specifies the shadow around the component.
15
15
  * @cssproperty [--calcite-tile-text-color] - Specifies the component's `description` and `icon` text color, but not the `heading` text color.
16
16
  * @cssproperty [--calcite-tile-link-text-color] - Specifies the component's link text color.
17
- * @slot [content-top] - A slot for adding non-actionable elements above the component's content. Content slotted here will render in place of the `icon` property.
17
+ * @slot [content-top] - A slot for adding non-actionable elements above the component's content.
18
18
  * @slot [content-bottom] - A slot for adding non-actionable elements below the component's content.
19
19
  */
20
20
  export abstract class Tile extends LitElement {