@esri/calcite-components 1.0.0-next.411 → 1.0.0-next.414

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (179) hide show
  1. package/dist/calcite/assets/icon/clockForward16.json +1 -0
  2. package/dist/calcite/assets/icon/clockForward24.json +1 -0
  3. package/dist/calcite/assets/icon/clockForward32.json +1 -0
  4. package/dist/calcite/assets/icon/contingentValues16.json +1 -0
  5. package/dist/calcite/assets/icon/contingentValues24.json +1 -0
  6. package/dist/calcite/assets/icon/contingentValues32.json +1 -0
  7. package/dist/calcite/assets/icon/creditCard16.json +1 -0
  8. package/dist/calcite/assets/icon/creditCard24.json +1 -0
  9. package/dist/calcite/assets/icon/creditCard32.json +1 -0
  10. package/dist/calcite/assets/icon/credits16.json +1 -1
  11. package/dist/calcite/assets/icon/credits24.json +1 -1
  12. package/dist/calcite/assets/icon/credits32.json +1 -1
  13. package/dist/calcite/assets/icon/keyboard16.json +1 -0
  14. package/dist/calcite/assets/icon/keyboard24.json +1 -0
  15. package/dist/calcite/assets/icon/keyboard32.json +1 -0
  16. package/dist/calcite/assets/icon/premiumContentUserCredit24.json +1 -1
  17. package/dist/calcite/assets/icon/premiumContentUserCredit32.json +1 -1
  18. package/dist/calcite/assets/icon/select16.json +1 -1
  19. package/dist/calcite/assets/icon/select24.json +1 -1
  20. package/dist/calcite/assets/icon/select32.json +1 -1
  21. package/dist/calcite/assets/icon/userDown16.json +1 -0
  22. package/dist/calcite/assets/icon/userDown24.json +1 -0
  23. package/dist/calcite/assets/icon/userDown32.json +1 -0
  24. package/dist/calcite/assets/icon/userKey16.json +1 -0
  25. package/dist/calcite/assets/icon/userKey24.json +1 -0
  26. package/dist/calcite/assets/icon/userKey32.json +1 -0
  27. package/dist/calcite/assets/icon/userMinus16.json +1 -0
  28. package/dist/calcite/assets/icon/userMinus24.json +1 -0
  29. package/dist/calcite/assets/icon/userMinus32.json +1 -0
  30. package/dist/calcite/assets/icon/userUp16.json +1 -0
  31. package/dist/calcite/assets/icon/userUp24.json +1 -0
  32. package/dist/calcite/assets/icon/userUp32.json +1 -0
  33. package/dist/calcite/assets/icon/userX16.json +1 -0
  34. package/dist/calcite/assets/icon/userX24.json +1 -0
  35. package/dist/calcite/assets/icon/userX32.json +1 -0
  36. package/dist/calcite/assets/icon/utilityNetworkTrace16.json +1 -0
  37. package/dist/calcite/assets/icon/utilityNetworkTrace24.json +1 -0
  38. package/dist/calcite/assets/icon/utilityNetworkTrace32.json +1 -0
  39. package/dist/calcite/calcite.esm.js +1 -1
  40. package/dist/calcite/{p-81f7b919.entry.js → p-0aee798e.entry.js} +1 -1
  41. package/dist/calcite/{p-dc9ff95e.system.entry.js → p-0d09d73b.system.entry.js} +1 -1
  42. package/dist/calcite/{p-00d4b36e.entry.js → p-125c9edc.entry.js} +1 -1
  43. package/dist/calcite/{p-da78fbb6.system.entry.js → p-1c1ad353.system.entry.js} +1 -1
  44. package/dist/calcite/{p-13e36552.system.entry.js → p-236b8f2e.system.entry.js} +1 -1
  45. package/dist/calcite/{p-c6851d0b.system.entry.js → p-38c5a816.system.entry.js} +1 -1
  46. package/dist/calcite/{p-93bf2f70.entry.js → p-5079ec88.entry.js} +1 -1
  47. package/dist/calcite/{p-e88fd904.system.entry.js → p-514f6d94.system.entry.js} +1 -1
  48. package/dist/calcite/{p-9cfa3928.entry.js → p-563bce5c.entry.js} +1 -1
  49. package/dist/calcite/{p-2fbc2a9b.system.entry.js → p-57186636.system.entry.js} +1 -1
  50. package/dist/calcite/p-614d8925.js +5 -0
  51. package/dist/calcite/{p-313fa6fa.system.entry.js → p-640a1577.system.entry.js} +1 -1
  52. package/dist/calcite/{p-02a3ad67.entry.js → p-74b8f15f.entry.js} +1 -1
  53. package/dist/calcite/{p-417c7d5d.entry.js → p-77564c0d.entry.js} +1 -1
  54. package/dist/calcite/{p-783bfba1.entry.js → p-8046175f.entry.js} +1 -1
  55. package/dist/calcite/{p-7863deb5.entry.js → p-8683663f.entry.js} +1 -1
  56. package/dist/calcite/{p-1fe5a777.entry.js → p-8c59090d.entry.js} +1 -1
  57. package/dist/calcite/p-8f93be14.system.js +1 -1
  58. package/dist/calcite/{p-383b48a0.system.entry.js → p-91b23d79.system.entry.js} +1 -1
  59. package/dist/calcite/{p-874ac36f.entry.js → p-949a2fcd.entry.js} +1 -1
  60. package/dist/calcite/p-a0ffad45.entry.js +5 -0
  61. package/dist/calcite/{p-b76ee102.system.entry.js → p-a6686c30.system.entry.js} +1 -1
  62. package/dist/calcite/{p-3a7606c8.entry.js → p-adfa48bc.entry.js} +1 -1
  63. package/dist/calcite/{p-d7395b71.system.entry.js → p-b88fa028.system.entry.js} +1 -1
  64. package/dist/calcite/{p-9f2e3d1e.entry.js → p-b8ce64ec.entry.js} +1 -1
  65. package/dist/calcite/{p-fad60503.entry.js → p-badc48d2.entry.js} +1 -1
  66. package/dist/calcite/p-bcd705be.system.entry.js +5 -0
  67. package/dist/calcite/{p-eb43eb28.system.entry.js → p-c1018bb4.system.entry.js} +1 -1
  68. package/dist/calcite/{p-458933db.system.entry.js → p-cfe2e6ee.system.entry.js} +1 -1
  69. package/dist/calcite/p-daf5f04c.system.js +5 -0
  70. package/dist/calcite/{p-fd0d5d44.system.entry.js → p-fbbf933d.system.entry.js} +1 -1
  71. package/dist/calcite/{p-5a4b0056.system.entry.js → p-fc11382c.system.entry.js} +1 -1
  72. package/dist/calcite/p-fda8b94b.entry.js +5 -0
  73. package/dist/cjs/calcite-button.cjs.entry.js +1 -1
  74. package/dist/cjs/calcite-checkbox.cjs.entry.js +1 -1
  75. package/dist/cjs/calcite-combobox_3.cjs.entry.js +1 -1
  76. package/dist/cjs/calcite-filter.cjs.entry.js +24 -0
  77. package/dist/cjs/calcite-graph_2.cjs.entry.js +1 -1
  78. package/dist/cjs/calcite-inline-editable.cjs.entry.js +1 -1
  79. package/dist/cjs/calcite-input-date-picker.cjs.entry.js +1 -1
  80. package/dist/cjs/calcite-input-time-picker_2.cjs.entry.js +1 -1
  81. package/dist/cjs/calcite-input.cjs.entry.js +1 -1
  82. package/dist/cjs/calcite-label.cjs.entry.js +9 -0
  83. package/dist/cjs/calcite-option_3.cjs.entry.js +1 -1
  84. package/dist/cjs/calcite-radio-button.cjs.entry.js +1 -1
  85. package/dist/cjs/calcite-radio-group_2.cjs.entry.js +1 -1
  86. package/dist/cjs/calcite-rating.cjs.entry.js +1 -1
  87. package/dist/cjs/calcite-switch.cjs.entry.js +1 -1
  88. package/dist/cjs/{label-6b18ca08.js → label-980508de.js} +40 -6
  89. package/dist/collection/components/filter/filter.js +30 -4
  90. package/dist/collection/components/icon/assets/icon/clockForward16.json +1 -0
  91. package/dist/collection/components/icon/assets/icon/clockForward24.json +1 -0
  92. package/dist/collection/components/icon/assets/icon/clockForward32.json +1 -0
  93. package/dist/collection/components/icon/assets/icon/contingentValues16.json +1 -0
  94. package/dist/collection/components/icon/assets/icon/contingentValues24.json +1 -0
  95. package/dist/collection/components/icon/assets/icon/contingentValues32.json +1 -0
  96. package/dist/collection/components/icon/assets/icon/creditCard16.json +1 -0
  97. package/dist/collection/components/icon/assets/icon/creditCard24.json +1 -0
  98. package/dist/collection/components/icon/assets/icon/creditCard32.json +1 -0
  99. package/dist/collection/components/icon/assets/icon/credits16.json +1 -1
  100. package/dist/collection/components/icon/assets/icon/credits24.json +1 -1
  101. package/dist/collection/components/icon/assets/icon/credits32.json +1 -1
  102. package/dist/collection/components/icon/assets/icon/keyboard16.json +1 -0
  103. package/dist/collection/components/icon/assets/icon/keyboard24.json +1 -0
  104. package/dist/collection/components/icon/assets/icon/keyboard32.json +1 -0
  105. package/dist/collection/components/icon/assets/icon/premiumContentUserCredit24.json +1 -1
  106. package/dist/collection/components/icon/assets/icon/premiumContentUserCredit32.json +1 -1
  107. package/dist/collection/components/icon/assets/icon/select16.json +1 -1
  108. package/dist/collection/components/icon/assets/icon/select24.json +1 -1
  109. package/dist/collection/components/icon/assets/icon/select32.json +1 -1
  110. package/dist/collection/components/icon/assets/icon/userDown16.json +1 -0
  111. package/dist/collection/components/icon/assets/icon/userDown24.json +1 -0
  112. package/dist/collection/components/icon/assets/icon/userDown32.json +1 -0
  113. package/dist/collection/components/icon/assets/icon/userKey16.json +1 -0
  114. package/dist/collection/components/icon/assets/icon/userKey24.json +1 -0
  115. package/dist/collection/components/icon/assets/icon/userKey32.json +1 -0
  116. package/dist/collection/components/icon/assets/icon/userMinus16.json +1 -0
  117. package/dist/collection/components/icon/assets/icon/userMinus24.json +1 -0
  118. package/dist/collection/components/icon/assets/icon/userMinus32.json +1 -0
  119. package/dist/collection/components/icon/assets/icon/userUp16.json +1 -0
  120. package/dist/collection/components/icon/assets/icon/userUp24.json +1 -0
  121. package/dist/collection/components/icon/assets/icon/userUp32.json +1 -0
  122. package/dist/collection/components/icon/assets/icon/userX16.json +1 -0
  123. package/dist/collection/components/icon/assets/icon/userX24.json +1 -0
  124. package/dist/collection/components/icon/assets/icon/userX32.json +1 -0
  125. package/dist/collection/components/icon/assets/icon/utilityNetworkTrace16.json +1 -0
  126. package/dist/collection/components/icon/assets/icon/utilityNetworkTrace24.json +1 -0
  127. package/dist/collection/components/icon/assets/icon/utilityNetworkTrace32.json +1 -0
  128. package/dist/collection/components/label/label.js +7 -0
  129. package/dist/collection/utils/label.js +38 -6
  130. package/dist/components/filter.js +24 -0
  131. package/dist/components/label.js +39 -7
  132. package/dist/components/label2.js +7 -0
  133. package/dist/custom-elements/index.js +68 -6
  134. package/dist/esm/calcite-button.entry.js +1 -1
  135. package/dist/esm/calcite-checkbox.entry.js +1 -1
  136. package/dist/esm/calcite-combobox_3.entry.js +1 -1
  137. package/dist/esm/calcite-filter.entry.js +24 -0
  138. package/dist/esm/calcite-graph_2.entry.js +1 -1
  139. package/dist/esm/calcite-inline-editable.entry.js +1 -1
  140. package/dist/esm/calcite-input-date-picker.entry.js +1 -1
  141. package/dist/esm/calcite-input-time-picker_2.entry.js +1 -1
  142. package/dist/esm/calcite-input.entry.js +1 -1
  143. package/dist/esm/calcite-label.entry.js +9 -0
  144. package/dist/esm/calcite-option_3.entry.js +1 -1
  145. package/dist/esm/calcite-radio-button.entry.js +1 -1
  146. package/dist/esm/calcite-radio-group_2.entry.js +1 -1
  147. package/dist/esm/calcite-rating.entry.js +1 -1
  148. package/dist/esm/calcite-switch.entry.js +1 -1
  149. package/dist/esm/{label-2bffc9f4.js → label-68f22660.js} +39 -7
  150. package/dist/esm-es5/calcite-button.entry.js +1 -1
  151. package/dist/esm-es5/calcite-checkbox.entry.js +1 -1
  152. package/dist/esm-es5/calcite-combobox_3.entry.js +1 -1
  153. package/dist/esm-es5/calcite-filter.entry.js +1 -1
  154. package/dist/esm-es5/calcite-graph_2.entry.js +1 -1
  155. package/dist/esm-es5/calcite-inline-editable.entry.js +1 -1
  156. package/dist/esm-es5/calcite-input-date-picker.entry.js +1 -1
  157. package/dist/esm-es5/calcite-input-time-picker_2.entry.js +1 -1
  158. package/dist/esm-es5/calcite-input.entry.js +1 -1
  159. package/dist/esm-es5/calcite-label.entry.js +1 -1
  160. package/dist/esm-es5/calcite-option_3.entry.js +1 -1
  161. package/dist/esm-es5/calcite-radio-button.entry.js +1 -1
  162. package/dist/esm-es5/calcite-radio-group_2.entry.js +1 -1
  163. package/dist/esm-es5/calcite-rating.entry.js +1 -1
  164. package/dist/esm-es5/calcite-switch.entry.js +1 -1
  165. package/dist/esm-es5/label-68f22660.js +5 -0
  166. package/dist/extras/docs-json.json +5 -3
  167. package/dist/types/components/filter/filter.d.ts +2 -1
  168. package/dist/types/components/label/label.d.ts +2 -0
  169. package/dist/types/components.d.ts +2 -2
  170. package/dist/types/preact.d.ts +90 -90
  171. package/dist/types/utils/label.d.ts +3 -1
  172. package/hydrate/index.js +68 -6
  173. package/package.json +8 -9
  174. package/dist/calcite/p-1a3a366d.system.js +0 -5
  175. package/dist/calcite/p-2a3d08b7.entry.js +0 -5
  176. package/dist/calcite/p-9a7c4812.js +0 -5
  177. package/dist/calcite/p-e7dd0a9f.entry.js +0 -5
  178. package/dist/calcite/p-f31de031.system.entry.js +0 -5
  179. package/dist/esm-es5/label-2bffc9f4.js +0 -5
@@ -3442,8 +3442,11 @@ const TEXT$j = {
3442
3442
  * @internal
3443
3443
  */
3444
3444
  const labelClickEvent = "calciteInternalLabelClick";
3445
+ const labelConnectedEvent = "calciteInternalLabelConnected";
3446
+ const labelDisconnectedEvent = "calciteInternaLabelDisconnected";
3445
3447
  const labelTagName = "calcite-label";
3446
3448
  const onLabelClickMap = new WeakMap();
3449
+ const unlabeledComponents = new Set();
3447
3450
  const findLabelForComponent = (componentEl) => {
3448
3451
  const { id } = componentEl;
3449
3452
  const forLabel = id && queryElementRoots(componentEl, { selector: `${labelTagName}[for="${id}"]` });
@@ -3479,18 +3482,37 @@ function hasAncestorCustomElements(label, componentEl) {
3479
3482
  */
3480
3483
  function connectLabel(component) {
3481
3484
  const labelEl = findLabelForComponent(component.el);
3482
- if (!labelEl || onLabelClickMap.has(labelEl)) {
3485
+ if (onLabelClickMap.has(labelEl)) {
3483
3486
  return;
3484
3487
  }
3485
- component.labelEl = labelEl;
3486
- const boundOnLabelClick = onLabelClick.bind(component);
3487
- onLabelClickMap.set(component.labelEl, boundOnLabelClick);
3488
- component.labelEl.addEventListener(labelClickEvent, boundOnLabelClick);
3488
+ const boundOnLabelConnected = onLabelConnected.bind(component);
3489
+ const boundOnLabelDisconnected = onLabelDisconnected.bind(component);
3490
+ if (labelEl) {
3491
+ const addClickEventListenerToComponentLabel = () => {
3492
+ component.labelEl = labelEl;
3493
+ const boundOnLabelClick = onLabelClick.bind(component);
3494
+ onLabelClickMap.set(component.labelEl, boundOnLabelClick);
3495
+ component.labelEl.addEventListener(labelClickEvent, boundOnLabelClick);
3496
+ };
3497
+ addClickEventListenerToComponentLabel();
3498
+ unlabeledComponents.delete(component);
3499
+ document.removeEventListener(labelConnectedEvent, boundOnLabelConnected);
3500
+ document.addEventListener(labelDisconnectedEvent, boundOnLabelDisconnected);
3501
+ }
3502
+ else if (!labelEl && !unlabeledComponents.has(component)) {
3503
+ boundOnLabelDisconnected();
3504
+ document.removeEventListener(labelDisconnectedEvent, boundOnLabelDisconnected);
3505
+ }
3489
3506
  }
3490
3507
  /**
3491
- * Helper to tear down label interactions on disconnectedCallback.
3508
+ * Helper to tear down label interactions on disconnectedCallback on labelable components.
3492
3509
  */
3493
3510
  function disconnectLabel(component) {
3511
+ const boundOnLabelConnected = onLabelConnected.bind(component);
3512
+ const boundOnLabelDisconnected = onLabelDisconnected.bind(component);
3513
+ unlabeledComponents.delete(component);
3514
+ document.removeEventListener(labelConnectedEvent, boundOnLabelConnected);
3515
+ document.removeEventListener(labelDisconnectedEvent, boundOnLabelDisconnected);
3494
3516
  if (!component.labelEl) {
3495
3517
  return;
3496
3518
  }
@@ -3515,6 +3537,16 @@ function onLabelClick(event) {
3515
3537
  }
3516
3538
  this.onLabelClick(event);
3517
3539
  }
3540
+ function onLabelConnected() {
3541
+ if (unlabeledComponents.has(this)) {
3542
+ connectLabel(this);
3543
+ }
3544
+ }
3545
+ function onLabelDisconnected() {
3546
+ unlabeledComponents.add(this);
3547
+ const boundOnLabelConnected = onLabelConnected.bind(this);
3548
+ document.addEventListener(labelConnectedEvent, boundOnLabelConnected);
3549
+ }
3518
3550
 
3519
3551
  const buttonCss = "@-webkit-keyframes in{0%{opacity:0}100%{opacity:1}}@keyframes in{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes in-down{0%{opacity:0;-webkit-transform:translate3D(0, -5px, 0);transform:translate3D(0, -5px, 0)}100%{opacity:1;-webkit-transform:translate3D(0, 0, 0);transform:translate3D(0, 0, 0)}}@keyframes in-down{0%{opacity:0;-webkit-transform:translate3D(0, -5px, 0);transform:translate3D(0, -5px, 0)}100%{opacity:1;-webkit-transform:translate3D(0, 0, 0);transform:translate3D(0, 0, 0)}}@-webkit-keyframes in-up{0%{opacity:0;-webkit-transform:translate3D(0, 5px, 0);transform:translate3D(0, 5px, 0)}100%{opacity:1;-webkit-transform:translate3D(0, 0, 0);transform:translate3D(0, 0, 0)}}@keyframes in-up{0%{opacity:0;-webkit-transform:translate3D(0, 5px, 0);transform:translate3D(0, 5px, 0)}100%{opacity:1;-webkit-transform:translate3D(0, 0, 0);transform:translate3D(0, 0, 0)}}@-webkit-keyframes in-scale{0%{opacity:0;-webkit-transform:scale3D(0.95, 0.95, 1);transform:scale3D(0.95, 0.95, 1)}100%{opacity:1;-webkit-transform:scale3D(1, 1, 1);transform:scale3D(1, 1, 1)}}@keyframes in-scale{0%{opacity:0;-webkit-transform:scale3D(0.95, 0.95, 1);transform:scale3D(0.95, 0.95, 1)}100%{opacity:1;-webkit-transform:scale3D(1, 1, 1);transform:scale3D(1, 1, 1)}}:root{--calcite-animation-timing:calc(150ms * var(--calcite-internal-duration-factor));--calcite-internal-duration-factor:var(--calcite-duration-factor, 1);--calcite-internal-animation-timing-fast:calc(100ms * var(--calcite-internal-duration-factor));--calcite-internal-animation-timing-medium:calc(200ms * var(--calcite-internal-duration-factor));--calcite-internal-animation-timing-slow:calc(300ms * var(--calcite-internal-duration-factor))}.calcite-animate{opacity:0;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:var(--calcite-animation-timing);animation-duration:var(--calcite-animation-timing)}.calcite-animate__in{-webkit-animation-name:in;animation-name:in}.calcite-animate__in-down{-webkit-animation-name:in-down;animation-name:in-down}.calcite-animate__in-up{-webkit-animation-name:in-up;animation-name:in-up}.calcite-animate__in-scale{-webkit-animation-name:in-scale;animation-name:in-scale}:root{--calcite-popper-transition:var(--calcite-animation-timing)}:host([hidden]){display:none}:host{display:inline-block;width:auto;vertical-align:middle}:host([round]){border-radius:50px}:host([round]) a,:host([round]) button{border-radius:50px}:host button,:host a{outline-offset:0;outline-color:transparent;-webkit-transition:outline-offset 100ms ease-in-out, outline-color 100ms ease-in-out;transition:outline-offset 100ms ease-in-out, outline-color 100ms ease-in-out}:host button:focus,:host a:focus{outline:2px solid var(--calcite-ui-brand);outline-offset:2px}:host button,:host a{--calcite-button-content-margin:0.5rem;--calcite-button-padding-x:7px;--calcite-button-padding-y:3px;padding:var(--calcite-button-padding-y) var(--calcite-button-padding-x) var(--calcite-button-padding-y) var(--calcite-button-padding-x);position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;display:-ms-flexbox;display:flex;height:100%;width:100%;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;border-radius:0px;border-style:none;text-align:center;font-family:inherit;font-weight:var(--calcite-font-weight-normal);-webkit-text-decoration-line:none;text-decoration-line:none;-webkit-transition:color var(--calcite-animation-timing) ease-in-out, background-color var(--calcite-animation-timing) ease-in-out, outline-offset var(--calcite-internal-animation-timing-fast) ease-in-out, outline-color var(--calcite-internal-animation-timing-fast) ease-in-out, -webkit-box-shadow var(--calcite-animation-timing) ease-in-out;transition:color var(--calcite-animation-timing) ease-in-out, background-color var(--calcite-animation-timing) ease-in-out, outline-offset var(--calcite-internal-animation-timing-fast) ease-in-out, outline-color var(--calcite-internal-animation-timing-fast) ease-in-out, -webkit-box-shadow var(--calcite-animation-timing) ease-in-out;transition:color var(--calcite-animation-timing) ease-in-out, background-color var(--calcite-animation-timing) ease-in-out, box-shadow var(--calcite-animation-timing) ease-in-out, outline-offset var(--calcite-internal-animation-timing-fast) ease-in-out, outline-color var(--calcite-internal-animation-timing-fast) ease-in-out;transition:color var(--calcite-animation-timing) ease-in-out, background-color var(--calcite-animation-timing) ease-in-out, box-shadow var(--calcite-animation-timing) ease-in-out, outline-offset var(--calcite-internal-animation-timing-fast) ease-in-out, outline-color var(--calcite-internal-animation-timing-fast) ease-in-out, -webkit-box-shadow var(--calcite-animation-timing) ease-in-out}:host button:hover,:host a:hover{-webkit-text-decoration-line:none;text-decoration-line:none}.content{display:-ms-flexbox;display:flex;-ms-flex-preferred-size:auto;flex-basis:auto;-webkit-margin-start:var(--calcite-button-content-margin);margin-inline-start:var(--calcite-button-content-margin);-webkit-margin-end:var(--calcite-button-content-margin);margin-inline-end:var(--calcite-button-content-margin)}.icon-start-empty .content{-webkit-margin-start:unset;margin-inline-start:unset}.icon-end-empty .content{-webkit-margin-end:unset;margin-inline-end:unset}:host([scale=m]) button,:host([scale=m]) a{--calcite-button-content-margin:0.75rem}:host([scale=l]) button,:host([scale=l]) a{--calcite-button-content-margin:1rem}:host([width=auto]){width:auto}:host([width=half]){width:50%}:host([width=full]){width:100%}:host([alignment=center]:not([width=auto])) a,:host([alignment=center]:not([width=auto])) button{-ms-flex-pack:center;justify-content:center}:host([alignment=start]:not([width=auto])) a,:host([alignment=start]:not([width=auto])) button{-ms-flex-pack:start;justify-content:flex-start}:host([alignment=end]:not([width=auto])) a,:host([alignment=end]:not([width=auto])) button{-ms-flex-pack:end;justify-content:flex-end}:host([alignment*=space-between]:not([width=auto])) a,:host([alignment*=space-between]:not([width=auto])) button{-ms-flex-pack:justify;justify-content:space-between}:host([alignment=icon-start-space-between]:not([width=auto])) .icon--start{-webkit-margin-end:auto;margin-inline-end:auto}:host([alignment=icon-start-space-between]:not([width=auto])) a,:host([alignment=icon-start-space-between]:not([width=auto])) button{text-align:unset}:host([alignment=icon-end-space-between]:not([width=auto])) .icon--end{-webkit-margin-start:auto;margin-inline-start:auto}:host([alignment=icon-end-space-between]:not([width=auto])) a,:host([alignment=icon-end-space-between]:not([width=auto])) button{text-align:unset}:host([alignment=center]) a:not(.content--slotted) .icon--start+.icon--end,:host([alignment=center]) button:not(.content--slotted) .icon--start+.icon--end{-webkit-margin-start:var(--calcite-button-content-margin);margin-inline-start:var(--calcite-button-content-margin)}.icon{position:relative;margin:0px;display:-ms-inline-flexbox;display:inline-flex;font-weight:var(--calcite-font-weight-normal);line-height:inherit}:host([loading]),:host([disabled]){pointer-events:none}:host([loading]) button,:host([loading]) a,:host([disabled]) button,:host([disabled]) a{pointer-events:none;opacity:var(--calcite-ui-opacity-disabled)}@-webkit-keyframes loader-in{0%{width:0;opacity:0;-webkit-transform:scale(0.5);transform:scale(0.5)}100%{width:1em;opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes loader-in{0%{width:0;opacity:0;-webkit-transform:scale(0.5);transform:scale(0.5)}100%{width:1em;opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes loader-out{0%{width:1em;opacity:1;-webkit-transform:scale(1);transform:scale(1)}100%{width:0;opacity:0;-webkit-transform:scale(0.5);transform:scale(0.5)}}@keyframes loader-out{0%{width:1em;opacity:1;-webkit-transform:scale(1);transform:scale(1)}100%{width:0;opacity:0;-webkit-transform:scale(0.5);transform:scale(0.5)}}.calcite-button--loader{display:-ms-flexbox;display:flex}.calcite-button--loader calcite-loader{margin:0px;-webkit-transition:width var(--calcite-internal-animation-timing-slow) ease-in-out, opacity var(--calcite-internal-animation-timing-slow) ease-in-out, -webkit-transform var(--calcite-internal-animation-timing-slow) ease-in-out;transition:width var(--calcite-internal-animation-timing-slow) ease-in-out, opacity var(--calcite-internal-animation-timing-slow) ease-in-out, -webkit-transform var(--calcite-internal-animation-timing-slow) ease-in-out;transition:width var(--calcite-internal-animation-timing-slow) ease-in-out, opacity var(--calcite-internal-animation-timing-slow) ease-in-out, transform var(--calcite-internal-animation-timing-slow) ease-in-out;transition:width var(--calcite-internal-animation-timing-slow) ease-in-out, opacity var(--calcite-internal-animation-timing-slow) ease-in-out, transform var(--calcite-internal-animation-timing-slow) ease-in-out, -webkit-transform var(--calcite-internal-animation-timing-slow) ease-in-out}.calcite-button--loader calcite-loader.loading-in{-webkit-animation-name:loader-in;animation-name:loader-in;-webkit-animation-duration:310ms;animation-duration:310ms}.calcite-button--loader calcite-loader.loading-out{-webkit-animation-name:loader-out;animation-name:loader-out;-webkit-animation-duration:310ms;animation-duration:310ms}:host([loading]) button.content--slotted .calcite-button--loader calcite-loader,:host([loading]) a.content--slotted .calcite-button--loader calcite-loader{-webkit-margin-end:var(--calcite-button-content-margin);margin-inline-end:var(--calcite-button-content-margin)}:host([loading]) button:not(.content--slotted) .icon--start,:host([loading]) button:not(.content--slotted) .icon--end,:host([loading]) a:not(.content--slotted) .icon--start,:host([loading]) a:not(.content--slotted) .icon--end{display:none}:host([appearance=solid]) button,:host([appearance=solid]) a{border-width:1px;border-style:solid;border-color:transparent}:host([appearance=solid][color=blue]) button,:host([appearance=solid][color=blue]) a{background-color:var(--calcite-ui-brand);color:var(--calcite-ui-text-inverse)}:host([appearance=solid][color=blue]) button:hover,:host([appearance=solid][color=blue]) button:focus,:host([appearance=solid][color=blue]) a:hover,:host([appearance=solid][color=blue]) a:focus{background-color:var(--calcite-ui-brand-hover)}:host([appearance=solid][color=blue]) button:active,:host([appearance=solid][color=blue]) a:active{background-color:var(--calcite-ui-brand-press)}:host([appearance=solid][color=blue]) button calcite-loader,:host([appearance=solid][color=blue]) a calcite-loader{color:var(--calcite-ui-text-inverse)}:host([appearance=solid][color=red]) button,:host([appearance=solid][color=red]) a{background-color:var(--calcite-ui-danger);color:var(--calcite-ui-text-inverse)}:host([appearance=solid][color=red]) button:hover,:host([appearance=solid][color=red]) button:focus,:host([appearance=solid][color=red]) a:hover,:host([appearance=solid][color=red]) a:focus{background-color:var(--calcite-ui-danger-hover)}:host([appearance=solid][color=red]) button:active,:host([appearance=solid][color=red]) a:active{background-color:var(--calcite-ui-danger-press)}:host([appearance=solid][color=red]) button calcite-loader,:host([appearance=solid][color=red]) a calcite-loader{color:var(--calcite-ui-text-inverse)}:host([appearance=solid][color=neutral]) button,:host([appearance=solid][color=neutral]) a{background-color:var(--calcite-ui-foreground-3);color:var(--calcite-ui-text-1)}:host([appearance=solid][color=neutral]) button:hover,:host([appearance=solid][color=neutral]) button:focus,:host([appearance=solid][color=neutral]) a:hover,:host([appearance=solid][color=neutral]) a:focus{background-color:var(--calcite-ui-foreground-2)}:host([appearance=solid][color=neutral]) button:active,:host([appearance=solid][color=neutral]) a:active{background-color:var(--calcite-ui-foreground-1)}:host([appearance=solid][color=neutral]) button calcite-loader,:host([appearance=solid][color=neutral]) a calcite-loader{color:var(--calcite-ui-text-1)}:host([appearance=solid][color=inverse]) button,:host([appearance=solid][color=inverse]) a{color:var(--calcite-ui-text-inverse);background-color:var(--calcite-ui-inverse)}:host([appearance=solid][color=inverse]) button:hover,:host([appearance=solid][color=inverse]) button:focus,:host([appearance=solid][color=inverse]) a:hover,:host([appearance=solid][color=inverse]) a:focus{background-color:var(--calcite-ui-inverse-hover)}:host([appearance=solid][color=inverse]) button:active,:host([appearance=solid][color=inverse]) a:active{background-color:var(--calcite-ui-inverse-press)}:host([appearance=solid][color=inverse]) button calcite-loader,:host([appearance=solid][color=inverse]) a calcite-loader{color:var(--calcite-ui-text-inverse)}:host([appearance=outline]) button,:host([appearance=outline]) a{border-width:1px;border-style:solid;background-color:var(--calcite-ui-foreground-1);-webkit-box-shadow:inset 0 0 0 1px transparent;box-shadow:inset 0 0 0 1px transparent}:host([appearance=outline][color=blue]) button,:host([appearance=outline][color=blue]) a{border-color:var(--calcite-ui-brand);color:var(--calcite-ui-brand)}:host([appearance=outline][color=blue]) button:hover,:host([appearance=outline][color=blue]) a:hover{border-color:var(--calcite-ui-brand-hover);color:var(--calcite-ui-brand-hover);-webkit-box-shadow:inset 0 0 0 1px var(--calcite-ui-brand-hover);box-shadow:inset 0 0 0 1px var(--calcite-ui-brand-hover)}:host([appearance=outline][color=blue]) button:focus,:host([appearance=outline][color=blue]) a:focus{border-color:var(--calcite-ui-brand);color:var(--calcite-ui-brand);-webkit-box-shadow:inset 0 0 0 2px var(--calcite-ui-brand);box-shadow:inset 0 0 0 2px var(--calcite-ui-brand)}:host([appearance=outline][color=blue]) button:active,:host([appearance=outline][color=blue]) a:active{border-color:var(--calcite-ui-brand-press);color:var(--calcite-ui-brand-press);-webkit-box-shadow:inset 0 0 0 2px var(--calcite-ui-brand-press);box-shadow:inset 0 0 0 2px var(--calcite-ui-brand-press)}:host([appearance=outline][color=blue]) button calcite-loader,:host([appearance=outline][color=blue]) a calcite-loader{color:var(--calcite-ui-brand)}:host([appearance=outline][color=red]) button,:host([appearance=outline][color=red]) a{border-color:var(--calcite-ui-danger);color:var(--calcite-ui-danger)}:host([appearance=outline][color=red]) button:hover,:host([appearance=outline][color=red]) a:hover{border-color:var(--calcite-ui-danger-hover);color:var(--calcite-ui-danger-hover);-webkit-box-shadow:inset 0 0 0 1px var(--calcite-ui-danger-hover);box-shadow:inset 0 0 0 1px var(--calcite-ui-danger-hover)}:host([appearance=outline][color=red]) button:focus,:host([appearance=outline][color=red]) a:focus{border-color:var(--calcite-ui-danger);color:var(--calcite-ui-danger);-webkit-box-shadow:inset 0 0 0 2px var(--calcite-ui-danger);box-shadow:inset 0 0 0 2px var(--calcite-ui-danger)}:host([appearance=outline][color=red]) button:active,:host([appearance=outline][color=red]) a:active{border-color:var(--calcite-ui-danger-press);color:var(--calcite-ui-danger-press);-webkit-box-shadow:inset 0 0 0 2px var(--calcite-ui-danger-press);box-shadow:inset 0 0 0 2px var(--calcite-ui-danger-press)}:host([appearance=outline][color=red]) button calcite-loader,:host([appearance=outline][color=red]) a calcite-loader{color:var(--calcite-ui-danger)}:host([appearance=outline][color=neutral]) button,:host([appearance=outline][color=neutral]) a{color:var(--calcite-ui-text-1);border-color:var(--calcite-ui-foreground-3)}:host([appearance=outline][color=neutral]) button:hover,:host([appearance=outline][color=neutral]) a:hover{-webkit-box-shadow:inset 0 0 0 1px var(--calcite-ui-foreground-3);box-shadow:inset 0 0 0 1px var(--calcite-ui-foreground-3)}:host([appearance=outline][color=neutral]) button:focus,:host([appearance=outline][color=neutral]) a:focus{-webkit-box-shadow:inset 0 0 0 2px var(--calcite-ui-foreground-3);box-shadow:inset 0 0 0 2px var(--calcite-ui-foreground-3)}:host([appearance=outline][color=neutral]) button:active,:host([appearance=outline][color=neutral]) a:active{-webkit-box-shadow:inset 0 0 0 2px var(--calcite-ui-foreground-3);box-shadow:inset 0 0 0 2px var(--calcite-ui-foreground-3)}:host([appearance=outline][color=neutral]) button calcite-loader,:host([appearance=outline][color=neutral]) a calcite-loader{color:var(--calcite-ui-text-1)}:host([appearance=outline][color=inverse]) button,:host([appearance=outline][color=inverse]) a{color:var(--calcite-ui-text-1);border-color:var(--calcite-ui-inverse)}:host([appearance=outline][color=inverse]) button:hover,:host([appearance=outline][color=inverse]) a:hover{border-color:var(--calcite-ui-inverse-hover);-webkit-box-shadow:inset 0 0 0 1px var(--calcite-ui-inverse-hover);box-shadow:inset 0 0 0 1px var(--calcite-ui-inverse-hover)}:host([appearance=outline][color=inverse]) button:focus,:host([appearance=outline][color=inverse]) a:focus{border-color:var(--calcite-ui-inverse);-webkit-box-shadow:inset 0 0 0 2px var(--calcite-ui-inverse);box-shadow:inset 0 0 0 2px var(--calcite-ui-inverse)}:host([appearance=outline][color=inverse]) button:active,:host([appearance=outline][color=inverse]) a:active{border-color:var(--calcite-ui-inverse-press);-webkit-box-shadow:inset 0 0 0 2px var(--calcite-ui-inverse-press);box-shadow:inset 0 0 0 2px var(--calcite-ui-inverse-press)}:host([appearance=outline][color=inverse]) button calcite-loader,:host([appearance=outline][color=inverse]) a calcite-loader{color:var(--calcite-ui-text-1)}:host([appearance=clear]) button,:host([appearance=clear]) a{border-width:1px;border-style:solid;background-color:transparent;-webkit-box-shadow:inset 0 0 0 1px transparent;box-shadow:inset 0 0 0 1px transparent}:host([appearance=clear][color=blue]) button,:host([appearance=clear][color=blue]) a{border-color:var(--calcite-ui-brand);color:var(--calcite-ui-brand)}:host([appearance=clear][color=blue]) button:hover,:host([appearance=clear][color=blue]) a:hover{border-color:var(--calcite-ui-brand-hover);color:var(--calcite-ui-brand-hover);-webkit-box-shadow:inset 0 0 0 1px var(--calcite-ui-brand-hover);box-shadow:inset 0 0 0 1px var(--calcite-ui-brand-hover)}:host([appearance=clear][color=blue]) button:focus,:host([appearance=clear][color=blue]) a:focus{border-color:var(--calcite-ui-brand);color:var(--calcite-ui-brand);-webkit-box-shadow:inset 0 0 0 2px var(--calcite-ui-brand);box-shadow:inset 0 0 0 2px var(--calcite-ui-brand)}:host([appearance=clear][color=blue]) button:active,:host([appearance=clear][color=blue]) a:active{border-color:var(--calcite-ui-brand-press);color:var(--calcite-ui-brand-press);-webkit-box-shadow:inset 0 0 0 2px var(--calcite-ui-brand-press);box-shadow:inset 0 0 0 2px var(--calcite-ui-brand-press)}:host([appearance=clear][color=blue]) button calcite-loader,:host([appearance=clear][color=blue]) a calcite-loader{color:var(--calcite-ui-brand)}:host([appearance=clear][color=red]) button,:host([appearance=clear][color=red]) a{border-color:var(--calcite-ui-danger);color:var(--calcite-ui-danger)}:host([appearance=clear][color=red]) button:hover,:host([appearance=clear][color=red]) a:hover{border-color:var(--calcite-ui-danger-hover);color:var(--calcite-ui-danger-hover);-webkit-box-shadow:inset 0 0 0 1px var(--calcite-ui-danger-hover);box-shadow:inset 0 0 0 1px var(--calcite-ui-danger-hover)}:host([appearance=clear][color=red]) button:focus,:host([appearance=clear][color=red]) a:focus{border-color:var(--calcite-ui-danger);color:var(--calcite-ui-danger);-webkit-box-shadow:inset 0 0 0 2px var(--calcite-ui-danger);box-shadow:inset 0 0 0 2px var(--calcite-ui-danger)}:host([appearance=clear][color=red]) button:active,:host([appearance=clear][color=red]) a:active{border-color:var(--calcite-ui-danger-press);color:var(--calcite-ui-danger-press);-webkit-box-shadow:inset 0 0 0 2px var(--calcite-ui-danger-press);box-shadow:inset 0 0 0 2px var(--calcite-ui-danger-press)}:host([appearance=clear][color=red]) button calcite-loader,:host([appearance=clear][color=red]) a calcite-loader{color:var(--calcite-ui-danger)}:host([appearance=clear][color=neutral]) button,:host([appearance=clear][color=neutral]) a{color:var(--calcite-ui-text-1);border-color:var(--calcite-ui-foreground-3)}:host([appearance=clear][color=neutral]) button:hover,:host([appearance=clear][color=neutral]) a:hover{-webkit-box-shadow:inset 0 0 0 1px var(--calcite-ui-foreground-3);box-shadow:inset 0 0 0 1px var(--calcite-ui-foreground-3)}:host([appearance=clear][color=neutral]) button:focus,:host([appearance=clear][color=neutral]) a:focus{-webkit-box-shadow:inset 0 0 0 2px var(--calcite-ui-foreground-3);box-shadow:inset 0 0 0 2px var(--calcite-ui-foreground-3)}:host([appearance=clear][color=neutral]) button:active,:host([appearance=clear][color=neutral]) a:active{-webkit-box-shadow:inset 0 0 0 2px var(--calcite-ui-foreground-3);box-shadow:inset 0 0 0 2px var(--calcite-ui-foreground-3)}:host([appearance=clear][color=neutral]) button calcite-loader,:host([appearance=clear][color=neutral]) a calcite-loader{color:var(--calcite-ui-text-1)}:host([appearance=clear][color=inverse]) button,:host([appearance=clear][color=inverse]) a{color:var(--calcite-ui-text-1);border-color:var(--calcite-ui-inverse)}:host([appearance=clear][color=inverse]) button:hover,:host([appearance=clear][color=inverse]) a:hover{border-color:var(--calcite-ui-inverse-hover);-webkit-box-shadow:inset 0 0 0 1px var(--calcite-ui-inverse-hover);box-shadow:inset 0 0 0 1px var(--calcite-ui-inverse-hover)}:host([appearance=clear][color=inverse]) button:focus,:host([appearance=clear][color=inverse]) a:focus{border-color:var(--calcite-ui-inverse);-webkit-box-shadow:inset 0 0 0 2px var(--calcite-ui-inverse);box-shadow:inset 0 0 0 2px var(--calcite-ui-inverse)}:host([appearance=clear][color=inverse]) button:active,:host([appearance=clear][color=inverse]) a:active{border-color:var(--calcite-ui-inverse-press);-webkit-box-shadow:inset 0 0 0 2px var(--calcite-ui-inverse-press);box-shadow:inset 0 0 0 2px var(--calcite-ui-inverse-press)}:host([appearance=clear][color=inverse]) button calcite-loader,:host([appearance=clear][color=inverse]) a calcite-loader{color:var(--calcite-ui-text-1)}:host([appearance=outline][split-child=primary]) button,:host([appearance=clear][split-child=primary]) button{border-inline-end-width:0;border-inline-start-width:1px}:host([appearance=outline][split-child=secondary]) button,:host([appearance=clear][split-child=secondary]) button{border-inline-start-width:0;border-inline-end-width:1px}:host([appearance=transparent]:not(.enable-editing-button)) button,:host([appearance=transparent]:not(.enable-editing-button)) a{background-color:transparent}:host([appearance=transparent]:not(.enable-editing-button)) button:hover,:host([appearance=transparent]:not(.enable-editing-button)) button:focus,:host([appearance=transparent]:not(.enable-editing-button)) a:hover,:host([appearance=transparent]:not(.enable-editing-button)) a:focus{background-color:var(--calcite-button-transparent-hover)}:host([appearance=transparent]:not(.enable-editing-button)) button:active,:host([appearance=transparent]:not(.enable-editing-button)) a:active{background-color:var(--calcite-button-transparent-press)}:host([appearance=transparent][color=blue]) button,:host([appearance=transparent][color=blue]) a{color:var(--calcite-ui-brand)}:host([appearance=transparent][color=blue]) button:hover,:host([appearance=transparent][color=blue]) a:hover{color:var(--calcite-ui-brand-hover)}:host([appearance=transparent][color=blue]) button:focus,:host([appearance=transparent][color=blue]) a:focus{color:var(--calcite-ui-brand)}:host([appearance=transparent][color=blue]) button:active,:host([appearance=transparent][color=blue]) a:active{color:var(--calcite-ui-brand-press)}:host([appearance=transparent][color=blue]) button calcite-loader,:host([appearance=transparent][color=blue]) a calcite-loader{color:var(--calcite-ui-brand)}:host([appearance=transparent][color=red]) button,:host([appearance=transparent][color=red]) a{color:var(--calcite-ui-danger)}:host([appearance=transparent][color=red]) button:hover,:host([appearance=transparent][color=red]) a:hover{color:var(--calcite-ui-danger-hover)}:host([appearance=transparent][color=red]) button:focus,:host([appearance=transparent][color=red]) a:focus{color:var(--calcite-ui-danger)}:host([appearance=transparent][color=red]) button:active,:host([appearance=transparent][color=red]) a:active{color:var(--calcite-ui-danger-press)}:host([appearance=transparent][color=red]) button calcite-loader,:host([appearance=transparent][color=red]) a calcite-loader{color:var(--calcite-ui-danger)}:host([appearance=transparent][color=neutral]:not(.cancel-editing-button)) button,:host([appearance=transparent][color=neutral]:not(.cancel-editing-button)) a,:host([appearance=transparent][color=neutral]:not(.cancel-editing-button)) calcite-loader{color:var(--calcite-ui-text-1)}:host([appearance=transparent][color=neutral].cancel-editing-button) button{border-top-width:1px;border-bottom-width:1px;color:var(--calcite-ui-text-3);border-top-color:var(--calcite-ui-border-input);border-bottom-color:var(--calcite-ui-border-input);border-bottom-style:solid;border-top-style:solid}:host([appearance=transparent][color=neutral].cancel-editing-button) button:not(.content--slotted){--calcite-button-padding-y:0}:host([appearance=transparent][color=neutral].cancel-editing-button) button:hover{color:var(--calcite-ui-text-1)}:host([appearance=transparent][color=neutral].enable-editing-button) button{background-color:transparent}:host(.confirm-changes-button) button:focus,:host(.cancel-editing-button) button:focus,:host(.enable-editing-button) button:focus{outline-offset:-2px}:host([appearance=transparent][color=inverse]) button,:host([appearance=transparent][color=inverse]) a,:host([appearance=transparent][color=inverse]) calcite-loader{color:var(--calcite-ui-text-inverse)}:host([scale=s]) button.content--slotted,:host([scale=s]) a.content--slotted{font-size:var(--calcite-font-size--2);line-height:1rem}:host([scale=s][appearance=transparent]) button.content--slotted,:host([scale=s][appearance=transparent]) a.content--slotted{--calcite-button-padding-x:0.5rem;--calcite-button-padding-y:0.25rem}:host([scale=m]) button.content--slotted,:host([scale=m]) a.content--slotted{--calcite-button-padding-x:11px;font-size:var(--calcite-font-size--1);line-height:1rem}:host([scale=m]:not([appearance=transparent])) button.content--slotted,:host([scale=m]:not([appearance=transparent])) a.content--slotted{--calcite-button-padding-y:7px}:host([scale=m][appearance=transparent]) button.content--slotted,:host([scale=m][appearance=transparent]) a.content--slotted{--calcite-button-padding-x:0.75rem;--calcite-button-padding-y:0.5rem}:host([scale=l]) button.content--slotted,:host([scale=l]) a.content--slotted{--calcite-button-padding-x:15px;font-size:var(--calcite-font-size-0);line-height:1.25rem}:host([scale=l]:not([appearance=transparent])) button.content--slotted,:host([scale=l]:not([appearance=transparent])) a.content--slotted{--calcite-button-padding-y:11px}:host([scale=l][appearance=transparent]) button.content--slotted,:host([scale=l][appearance=transparent]) a.content--slotted{--calcite-button-padding-x:1rem;--calcite-button-padding-y:0.75rem}:host([scale=s]) button:not(.content--slotted),:host([scale=s]) a:not(.content--slotted){--calcite-button-padding-x:0.125rem;--calcite-button-padding-y:3px;width:1.5rem;font-size:var(--calcite-font-size-0);line-height:1.25rem;min-height:1.5rem}:host([scale=s][appearance=transparent]) button:not(.content--slotted),:host([scale=s][appearance=transparent]) a:not(.content--slotted){--calcite-button-padding-y:0.25rem}:host([scale=m]) button:not(.content--slotted),:host([scale=m]) a:not(.content--slotted){--calcite-button-padding-x:0.125rem;--calcite-button-padding-y:7px;width:2rem;font-size:var(--calcite-font-size-0);line-height:1.25rem;min-height:2rem}:host([scale=m][appearance=transparent]) button:not(.content--slotted),:host([scale=m][appearance=transparent]) a:not(.content--slotted){--calcite-button-padding-y:0.5rem}:host([scale=l]) button:not(.content--slotted),:host([scale=l]) a:not(.content--slotted){--calcite-button-padding-x:0.125rem;--calcite-button-padding-y:9px;width:2.75rem;font-size:var(--calcite-font-size-0);line-height:1.25rem;min-height:2.75rem}:host([scale=l][appearance=transparent]) button:not(.content--slotted),:host([scale=l][appearance=transparent]) a:not(.content--slotted){--calcite-button-padding-y:0.625rem}:host([scale=s][icon-start][icon-end]) button:not(.content--slotted),:host([scale=s][icon-start][icon-end]) a:not(.content--slotted){--calcite-button-padding-x:23px;height:1.5rem;font-size:var(--calcite-font-size-0);line-height:1.25rem}:host([scale=s][icon-start][icon-end][appearance=transparent]) button:not(.content--slotted),:host([scale=s][icon-start][icon-end][appearance=transparent]) a:not(.content--slotted){--calcite-button-padding-x:1.5rem}:host([scale=m][icon-start][icon-end]) button:not(.content--slotted),:host([scale=m][icon-start][icon-end]) a:not(.content--slotted){--calcite-button-padding-x:2rem;height:2rem;font-size:var(--calcite-font-size-0);line-height:1.25rem}:host([scale=m][icon-start][icon-end][appearance=transparent]) button:not(.content--slotted),:host([scale=m][icon-start][icon-end][appearance=transparent]) a:not(.content--slotted){--calcite-button-padding-x:33px}:host([scale=l][icon-start][icon-end]) button:not(.content--slotted),:host([scale=l][icon-start][icon-end]) a:not(.content--slotted){--calcite-button-padding-x:43px;height:2.75rem;font-size:var(--calcite-font-size-0);line-height:1.25rem}:host([scale=l][icon-start][icon-end]) button:not(.content--slotted) .icon--start+.icon--end,:host([scale=l][icon-start][icon-end]) a:not(.content--slotted) .icon--start+.icon--end{-webkit-margin-start:1rem;margin-inline-start:1rem}:host([scale=l][icon-start][icon-end][appearance=transparent]) button:not(.content--slotted),:host([scale=l][icon-start][icon-end][appearance=transparent]) a:not(.content--slotted){--calcite-button-padding-x:2.75rem}";
3520
3552
 
@@ -12132,6 +12164,18 @@ let Filter = class extends HTMLElement$1 {
12132
12164
  this.__registerHost();
12133
12165
  this.__attachShadow();
12134
12166
  this.calciteFilterChange = createEvent(this, "calciteFilterChange", 7);
12167
+ // --------------------------------------------------------------------------
12168
+ //
12169
+ // Properties
12170
+ //
12171
+ // --------------------------------------------------------------------------
12172
+ /**
12173
+ * The items to filter through. The filter uses this as the starting point, and returns items
12174
+ * that contain the string entered in the input, using a partial match and recursive search.
12175
+ *
12176
+ * This property is required.
12177
+ */
12178
+ this.items = [];
12135
12179
  /**
12136
12180
  * When true, disabled prevents interaction. This state shows items with lower opacity/grayed.
12137
12181
  */
@@ -12144,6 +12188,10 @@ let Filter = class extends HTMLElement$1 {
12144
12188
  this.filteredItems = [];
12145
12189
  /** specify the scale of filter, defaults to m */
12146
12190
  this.scale = "m";
12191
+ /**
12192
+ * Filter value.
12193
+ */
12194
+ this.value = "";
12147
12195
  // --------------------------------------------------------------------------
12148
12196
  //
12149
12197
  // Private Methods
@@ -12197,6 +12245,14 @@ let Filter = class extends HTMLElement$1 {
12197
12245
  valueHandler(value) {
12198
12246
  this.filter(value);
12199
12247
  }
12248
+ //--------------------------------------------------------------------------
12249
+ //
12250
+ // Lifecycle
12251
+ //
12252
+ //--------------------------------------------------------------------------
12253
+ componentWillLoad() {
12254
+ this.filter(this.value);
12255
+ }
12200
12256
  // --------------------------------------------------------------------------
12201
12257
  //
12202
12258
  // Public Methods
@@ -14471,6 +14527,12 @@ let Label = class extends HTMLElement$1 {
14471
14527
  // Lifecycle
14472
14528
  //
14473
14529
  //--------------------------------------------------------------------------
14530
+ connectedCallback() {
14531
+ document.dispatchEvent(new CustomEvent(labelConnectedEvent));
14532
+ }
14533
+ disconnectedCallback() {
14534
+ document.dispatchEvent(new CustomEvent(labelDisconnectedEvent));
14535
+ }
14474
14536
  render() {
14475
14537
  return (h(Host, { onClick: this.labelClickHandler }, h("div", { class: CSS$r.container }, h("slot", null))));
14476
14538
  }
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import { r as registerInstance, h, g as getElement } from './index-0fefddd1.js';
6
6
  import { c as closestElementCrossShadowBoundary } from './dom-e7fa77b9.js';
7
- import { c as connectLabel, d as disconnectLabel, g as getLabelText } from './label-2bffc9f4.js';
7
+ import { c as connectLabel, d as disconnectLabel, g as getLabelText } from './label-68f22660.js';
8
8
  import { c as createObserver } from './observers-46118290.js';
9
9
  import './guid-196bd5ea.js';
10
10
 
@@ -5,7 +5,7 @@
5
5
  import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-0fefddd1.js';
6
6
  import { g as guid } from './guid-196bd5ea.js';
7
7
  import { c as connectForm, d as disconnectForm, H as HiddenFormInputSlot } from './form-d07b2414.js';
8
- import { c as connectLabel, d as disconnectLabel, g as getLabelText } from './label-2bffc9f4.js';
8
+ import { c as connectLabel, d as disconnectLabel, g as getLabelText } from './label-68f22660.js';
9
9
  import './dom-e7fa77b9.js';
10
10
 
11
11
  const checkboxCss = "@-webkit-keyframes in{0%{opacity:0}100%{opacity:1}}@keyframes in{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes in-down{0%{opacity:0;-webkit-transform:translate3D(0, -5px, 0);transform:translate3D(0, -5px, 0)}100%{opacity:1;-webkit-transform:translate3D(0, 0, 0);transform:translate3D(0, 0, 0)}}@keyframes in-down{0%{opacity:0;-webkit-transform:translate3D(0, -5px, 0);transform:translate3D(0, -5px, 0)}100%{opacity:1;-webkit-transform:translate3D(0, 0, 0);transform:translate3D(0, 0, 0)}}@-webkit-keyframes in-up{0%{opacity:0;-webkit-transform:translate3D(0, 5px, 0);transform:translate3D(0, 5px, 0)}100%{opacity:1;-webkit-transform:translate3D(0, 0, 0);transform:translate3D(0, 0, 0)}}@keyframes in-up{0%{opacity:0;-webkit-transform:translate3D(0, 5px, 0);transform:translate3D(0, 5px, 0)}100%{opacity:1;-webkit-transform:translate3D(0, 0, 0);transform:translate3D(0, 0, 0)}}@-webkit-keyframes in-scale{0%{opacity:0;-webkit-transform:scale3D(0.95, 0.95, 1);transform:scale3D(0.95, 0.95, 1)}100%{opacity:1;-webkit-transform:scale3D(1, 1, 1);transform:scale3D(1, 1, 1)}}@keyframes in-scale{0%{opacity:0;-webkit-transform:scale3D(0.95, 0.95, 1);transform:scale3D(0.95, 0.95, 1)}100%{opacity:1;-webkit-transform:scale3D(1, 1, 1);transform:scale3D(1, 1, 1)}}:root{--calcite-animation-timing:calc(150ms * var(--calcite-internal-duration-factor));--calcite-internal-duration-factor:var(--calcite-duration-factor, 1);--calcite-internal-animation-timing-fast:calc(100ms * var(--calcite-internal-duration-factor));--calcite-internal-animation-timing-medium:calc(200ms * var(--calcite-internal-duration-factor));--calcite-internal-animation-timing-slow:calc(300ms * var(--calcite-internal-duration-factor))}.calcite-animate{opacity:0;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:var(--calcite-animation-timing);animation-duration:var(--calcite-animation-timing)}.calcite-animate__in{-webkit-animation-name:in;animation-name:in}.calcite-animate__in-down{-webkit-animation-name:in-down;animation-name:in-down}.calcite-animate__in-up{-webkit-animation-name:in-up;animation-name:in-up}.calcite-animate__in-scale{-webkit-animation-name:in-scale;animation-name:in-scale}:root{--calcite-popper-transition:var(--calcite-animation-timing)}:host([hidden]){display:none}:host([scale=s]){--calcite-checkbox-size:0.75rem}:host([scale=m]){--calcite-checkbox-size:var(--calcite-font-size--1)}:host([scale=l]){--calcite-checkbox-size:1rem}:host{position:relative;display:-ms-inline-flexbox;display:inline-flex;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}:host .check-svg{pointer-events:none;-webkit-box-sizing:border-box;box-sizing:border-box;display:block;background-color:var(--calcite-ui-foreground-1);fill:currentColor;stroke:currentColor;stroke-width:1;-webkit-transition-property:all;transition-property:all;-webkit-transition-duration:150ms;transition-duration:150ms;-webkit-transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);overflow:hidden;width:var(--calcite-checkbox-size);height:var(--calcite-checkbox-size);-webkit-box-shadow:inset 0 0 0 1px var(--calcite-ui-border-input);box-shadow:inset 0 0 0 1px var(--calcite-ui-border-input);color:var(--calcite-ui-background)}:host([checked]) .check-svg,:host([indeterminate]) .check-svg{background-color:var(--calcite-ui-brand);-webkit-box-shadow:inset 0 0 0 1px var(--calcite-ui-brand);box-shadow:inset 0 0 0 1px var(--calcite-ui-brand)}:host([hovered]) .toggle .check-svg,:host .toggle:hover .check-svg{-webkit-box-shadow:inset 0 0 0 2px var(--calcite-ui-brand);box-shadow:inset 0 0 0 2px var(--calcite-ui-brand)}:host .toggle:focus .check-svg,:host .toggle:active .check-svg{-webkit-box-shadow:inset 0 0 0 1px var(--calcite-ui-brand), 0 0 0 2px var(--calcite-ui-foreground-1), 0 0 0 4px var(--calcite-ui-brand);box-shadow:inset 0 0 0 1px var(--calcite-ui-brand), 0 0 0 2px var(--calcite-ui-foreground-1), 0 0 0 4px var(--calcite-ui-brand);-webkit-transition:var(--calcite-animation-timing);transition:var(--calcite-animation-timing)}:host([disabled]){pointer-events:none;cursor:default;opacity:var(--calcite-ui-opacity-disabled)}::slotted(input[slot=hidden-form-input]){bottom:0 !important;left:0 !important;margin:0 !important;opacity:0 !important;outline:none !important;padding:0 !important;position:absolute !important;right:0 !important;top:0 !important;-webkit-transform:none !important;transform:none !important;-webkit-appearance:none !important;z-index:-1 !important}";
@@ -8,7 +8,7 @@ import { i as isArray, f as forIn } from './forIn-48d8fb84.js';
8
8
  import { u as updatePopper, c as createPopper, C as CSS$2 } from './popper-ae231554.js';
9
9
  import { g as guid } from './guid-196bd5ea.js';
10
10
  import { n as nodeListToArray, d as getElementProp, g as getSlotted } from './dom-e7fa77b9.js';
11
- import { c as connectLabel, d as disconnectLabel, g as getLabelText } from './label-2bffc9f4.js';
11
+ import { c as connectLabel, d as disconnectLabel, g as getLabelText } from './label-68f22660.js';
12
12
  import { c as connectForm, a as afterConnectDefaultValueSet, d as disconnectForm, H as HiddenFormInputSlot } from './form-d07b2414.js';
13
13
  import { c as createObserver } from './observers-46118290.js';
14
14
  import { c as connectConditionalSlotComponent, d as disconnectConditionalSlotComponent } from './conditionalSlot-c4b6c8b1.js';
@@ -29,6 +29,18 @@ let Filter = class {
29
29
  constructor(hostRef) {
30
30
  registerInstance(this, hostRef);
31
31
  this.calciteFilterChange = createEvent(this, "calciteFilterChange", 7);
32
+ // --------------------------------------------------------------------------
33
+ //
34
+ // Properties
35
+ //
36
+ // --------------------------------------------------------------------------
37
+ /**
38
+ * The items to filter through. The filter uses this as the starting point, and returns items
39
+ * that contain the string entered in the input, using a partial match and recursive search.
40
+ *
41
+ * This property is required.
42
+ */
43
+ this.items = [];
32
44
  /**
33
45
  * When true, disabled prevents interaction. This state shows items with lower opacity/grayed.
34
46
  */
@@ -41,6 +53,10 @@ let Filter = class {
41
53
  this.filteredItems = [];
42
54
  /** specify the scale of filter, defaults to m */
43
55
  this.scale = "m";
56
+ /**
57
+ * Filter value.
58
+ */
59
+ this.value = "";
44
60
  // --------------------------------------------------------------------------
45
61
  //
46
62
  // Private Methods
@@ -94,6 +110,14 @@ let Filter = class {
94
110
  valueHandler(value) {
95
111
  this.filter(value);
96
112
  }
113
+ //--------------------------------------------------------------------------
114
+ //
115
+ // Lifecycle
116
+ //
117
+ //--------------------------------------------------------------------------
118
+ componentWillLoad() {
119
+ this.filter(this.value);
120
+ }
97
121
  // --------------------------------------------------------------------------
98
122
  //
99
123
  // Public Methods
@@ -7,7 +7,7 @@ import { g as guid } from './guid-196bd5ea.js';
7
7
  import { c as createObserver } from './observers-46118290.js';
8
8
  import { j as intersects } from './dom-e7fa77b9.js';
9
9
  import { d as decimalPlaces, c as clamp } from './math-456207f5.js';
10
- import { c as connectLabel, d as disconnectLabel } from './label-2bffc9f4.js';
10
+ import { c as connectLabel, d as disconnectLabel } from './label-68f22660.js';
11
11
  import { c as connectForm, d as disconnectForm, a as afterConnectDefaultValueSet, H as HiddenFormInputSlot } from './form-d07b2414.js';
12
12
 
13
13
  /**
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import { r as registerInstance, c as createEvent, h, g as getElement } from './index-0fefddd1.js';
6
6
  import { d as getElementProp, g as getSlotted } from './dom-e7fa77b9.js';
7
- import { c as connectLabel, d as disconnectLabel, g as getLabelText } from './label-2bffc9f4.js';
7
+ import { c as connectLabel, d as disconnectLabel, g as getLabelText } from './label-68f22660.js';
8
8
  import { c as createObserver } from './observers-46118290.js';
9
9
  import './guid-196bd5ea.js';
10
10
 
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-0fefddd1.js';
6
6
  import { T as TEXT, d as dateToISO, a as dateFromISO, b as dateFromRange, g as getLocaleData, s as sameDate, p as parseDateString, i as inRange } from './resources-431fa051.js';
7
- import { c as connectLabel, d as disconnectLabel, g as getLabelText } from './label-2bffc9f4.js';
7
+ import { c as connectLabel, d as disconnectLabel, g as getLabelText } from './label-68f22660.js';
8
8
  import { c as connectForm, d as disconnectForm, H as HiddenFormInputSlot } from './form-d07b2414.js';
9
9
  import { u as updatePopper, C as CSS, c as createPopper } from './popper-ae231554.js';
10
10
  import './locale-fc850b7c.js';
@@ -5,7 +5,7 @@
5
5
  import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-0fefddd1.js';
6
6
  import { g as guid } from './guid-196bd5ea.js';
7
7
  import { i as isValidNumber, n as numberKeys, c as isActivationKey } from './number-8779395f.js';
8
- import { c as connectLabel, d as disconnectLabel, g as getLabelText } from './label-2bffc9f4.js';
8
+ import { c as connectLabel, d as disconnectLabel, g as getLabelText } from './label-68f22660.js';
9
9
  import { c as connectForm, d as disconnectForm, H as HiddenFormInputSlot } from './form-d07b2414.js';
10
10
  import './dom-e7fa77b9.js';
11
11
 
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-0fefddd1.js';
6
6
  import { T as TEXT, g as getSlotted, s as setRequestedIcon, d as getElementProp, a as getElementDir, C as CSS_UTILITY } from './dom-e7fa77b9.js';
7
- import { c as connectLabel, d as disconnectLabel, g as getLabelText } from './label-2bffc9f4.js';
7
+ import { c as connectLabel, d as disconnectLabel, g as getLabelText } from './label-68f22660.js';
8
8
  import { c as connectForm, d as disconnectForm, H as HiddenFormInputSlot } from './form-d07b2414.js';
9
9
  import { d as delocalizeNumberString, g as getDecimalSeparator, l as localizeNumberString } from './locale-fc850b7c.js';
10
10
  import { i as isValidNumber, p as parseNumberString, s as sanitizeNumberString, n as numberKeys } from './number-8779395f.js';
@@ -3,6 +3,9 @@
3
3
  * See https://github.com/Esri/calcite-components/blob/master/LICENSE.md for details.
4
4
  */
5
5
  import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-0fefddd1.js';
6
+ import { l as labelConnectedEvent, a as labelDisconnectedEvent } from './label-68f22660.js';
7
+ import './dom-e7fa77b9.js';
8
+ import './guid-196bd5ea.js';
6
9
 
7
10
  const CSS = {
8
11
  container: "container"
@@ -50,6 +53,12 @@ let Label = class {
50
53
  // Lifecycle
51
54
  //
52
55
  //--------------------------------------------------------------------------
56
+ connectedCallback() {
57
+ document.dispatchEvent(new CustomEvent(labelConnectedEvent));
58
+ }
59
+ disconnectedCallback() {
60
+ document.dispatchEvent(new CustomEvent(labelDisconnectedEvent));
61
+ }
53
62
  render() {
54
63
  return (h(Host, { onClick: this.labelClickHandler }, h("div", { class: CSS.container }, h("slot", null))));
55
64
  }
@@ -5,7 +5,7 @@
5
5
  import { r as registerInstance, c as createEvent, h, g as getElement, F as Fragment } from './index-0fefddd1.js';
6
6
  import { c as createObserver } from './observers-46118290.js';
7
7
  import { f as focusElement } from './dom-e7fa77b9.js';
8
- import { c as connectLabel, d as disconnectLabel } from './label-2bffc9f4.js';
8
+ import { c as connectLabel, d as disconnectLabel } from './label-68f22660.js';
9
9
  import { c as connectForm, d as disconnectForm, a as afterConnectDefaultValueSet, H as HiddenFormInputSlot } from './form-d07b2414.js';
10
10
  import './guid-196bd5ea.js';
11
11
 
@@ -5,7 +5,7 @@
5
5
  import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-0fefddd1.js';
6
6
  import { g as guid } from './guid-196bd5ea.js';
7
7
  import { a as getElementDir, f as focusElement } from './dom-e7fa77b9.js';
8
- import { c as connectLabel, d as disconnectLabel, g as getLabelText } from './label-2bffc9f4.js';
8
+ import { c as connectLabel, d as disconnectLabel, g as getLabelText } from './label-68f22660.js';
9
9
  import { c as connectForm, d as disconnectForm, H as HiddenFormInputSlot } from './form-d07b2414.js';
10
10
  import { g as getRoundRobinIndex } from './array-91a648e2.js';
11
11
 
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-0fefddd1.js';
6
6
  import { a as getElementDir, d as getElementProp } from './dom-e7fa77b9.js';
7
- import { c as connectLabel, d as disconnectLabel } from './label-2bffc9f4.js';
7
+ import { c as connectLabel, d as disconnectLabel } from './label-68f22660.js';
8
8
  import { c as connectForm, d as disconnectForm, H as HiddenFormInputSlot } from './form-d07b2414.js';
9
9
  import './guid-196bd5ea.js';
10
10
 
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import { r as registerInstance, c as createEvent, h, F as Fragment, g as getElement } from './index-0fefddd1.js';
6
6
  import { g as guid } from './guid-196bd5ea.js';
7
- import { c as connectLabel, d as disconnectLabel } from './label-2bffc9f4.js';
7
+ import { c as connectLabel, d as disconnectLabel } from './label-68f22660.js';
8
8
  import { c as connectForm, d as disconnectForm, H as HiddenFormInputSlot } from './form-d07b2414.js';
9
9
  import './dom-e7fa77b9.js';
10
10
 
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-0fefddd1.js';
6
6
  import { f as focusElement } from './dom-e7fa77b9.js';
7
- import { c as connectLabel, d as disconnectLabel, g as getLabelText } from './label-2bffc9f4.js';
7
+ import { c as connectLabel, d as disconnectLabel, g as getLabelText } from './label-68f22660.js';
8
8
  import { c as connectForm, d as disconnectForm, H as HiddenFormInputSlot } from './form-d07b2414.js';
9
9
  import './guid-196bd5ea.js';
10
10
 
@@ -9,8 +9,11 @@ import { q as queryElementRoots, c as closestElementCrossShadowBoundary } from '
9
9
  * @internal
10
10
  */
11
11
  const labelClickEvent = "calciteInternalLabelClick";
12
+ const labelConnectedEvent = "calciteInternalLabelConnected";
13
+ const labelDisconnectedEvent = "calciteInternaLabelDisconnected";
12
14
  const labelTagName = "calcite-label";
13
15
  const onLabelClickMap = new WeakMap();
16
+ const unlabeledComponents = new Set();
14
17
  const findLabelForComponent = (componentEl) => {
15
18
  const { id } = componentEl;
16
19
  const forLabel = id && queryElementRoots(componentEl, { selector: `${labelTagName}[for="${id}"]` });
@@ -46,18 +49,37 @@ function hasAncestorCustomElements(label, componentEl) {
46
49
  */
47
50
  function connectLabel(component) {
48
51
  const labelEl = findLabelForComponent(component.el);
49
- if (!labelEl || onLabelClickMap.has(labelEl)) {
52
+ if (onLabelClickMap.has(labelEl)) {
50
53
  return;
51
54
  }
52
- component.labelEl = labelEl;
53
- const boundOnLabelClick = onLabelClick.bind(component);
54
- onLabelClickMap.set(component.labelEl, boundOnLabelClick);
55
- component.labelEl.addEventListener(labelClickEvent, boundOnLabelClick);
55
+ const boundOnLabelConnected = onLabelConnected.bind(component);
56
+ const boundOnLabelDisconnected = onLabelDisconnected.bind(component);
57
+ if (labelEl) {
58
+ const addClickEventListenerToComponentLabel = () => {
59
+ component.labelEl = labelEl;
60
+ const boundOnLabelClick = onLabelClick.bind(component);
61
+ onLabelClickMap.set(component.labelEl, boundOnLabelClick);
62
+ component.labelEl.addEventListener(labelClickEvent, boundOnLabelClick);
63
+ };
64
+ addClickEventListenerToComponentLabel();
65
+ unlabeledComponents.delete(component);
66
+ document.removeEventListener(labelConnectedEvent, boundOnLabelConnected);
67
+ document.addEventListener(labelDisconnectedEvent, boundOnLabelDisconnected);
68
+ }
69
+ else if (!labelEl && !unlabeledComponents.has(component)) {
70
+ boundOnLabelDisconnected();
71
+ document.removeEventListener(labelDisconnectedEvent, boundOnLabelDisconnected);
72
+ }
56
73
  }
57
74
  /**
58
- * Helper to tear down label interactions on disconnectedCallback.
75
+ * Helper to tear down label interactions on disconnectedCallback on labelable components.
59
76
  */
60
77
  function disconnectLabel(component) {
78
+ const boundOnLabelConnected = onLabelConnected.bind(component);
79
+ const boundOnLabelDisconnected = onLabelDisconnected.bind(component);
80
+ unlabeledComponents.delete(component);
81
+ document.removeEventListener(labelConnectedEvent, boundOnLabelConnected);
82
+ document.removeEventListener(labelDisconnectedEvent, boundOnLabelDisconnected);
61
83
  if (!component.labelEl) {
62
84
  return;
63
85
  }
@@ -82,5 +104,15 @@ function onLabelClick(event) {
82
104
  }
83
105
  this.onLabelClick(event);
84
106
  }
107
+ function onLabelConnected() {
108
+ if (unlabeledComponents.has(this)) {
109
+ connectLabel(this);
110
+ }
111
+ }
112
+ function onLabelDisconnected() {
113
+ unlabeledComponents.add(this);
114
+ const boundOnLabelConnected = onLabelConnected.bind(this);
115
+ document.addEventListener(labelConnectedEvent, boundOnLabelConnected);
116
+ }
85
117
 
86
- export { connectLabel as c, disconnectLabel as d, getLabelText as g };
118
+ export { labelDisconnectedEvent as a, connectLabel as c, disconnectLabel as d, getLabelText as g, labelConnectedEvent as l };