q2-tecton-elements 1.68.0 → 1.68.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (197) hide show
  1. package/dist/bundle-report.json +262 -217
  2. package/dist/cjs/click-elsewhere.q2-option-list.q2-popover.entry.cjs.js.map +1 -1
  3. package/dist/cjs/click-elsewhere_3.cjs.entry.js +12 -7
  4. package/dist/cjs/click-elsewhere_3.cjs.entry.js.map +1 -1
  5. package/dist/cjs/{index-DmGkqdX2.js → index-De6jFdo_.js} +33 -22
  6. package/dist/cjs/index-De6jFdo_.js.map +1 -0
  7. package/dist/cjs/loader.cjs.js +1 -1
  8. package/dist/cjs/q2-action-group_2.cjs.entry.js +1 -1
  9. package/dist/cjs/q2-action-sheet.cjs.entry.js +1 -1
  10. package/dist/cjs/q2-badge.cjs.entry.js +1 -1
  11. package/dist/cjs/q2-btn_2.cjs.entry.js +1 -1
  12. package/dist/cjs/q2-calendar.cjs.entry.js +1 -1
  13. package/dist/cjs/q2-card-image.cjs.entry.js +1 -1
  14. package/dist/cjs/q2-card.cjs.entry.js +2 -2
  15. package/dist/cjs/q2-card.cjs.entry.js.map +1 -1
  16. package/dist/cjs/q2-card.entry.cjs.js.map +1 -1
  17. package/dist/cjs/q2-carousel-pane.cjs.entry.js +1 -1
  18. package/dist/cjs/q2-carousel.cjs.entry.js +1 -1
  19. package/dist/cjs/q2-chart-area.cjs.entry.js +1 -1
  20. package/dist/cjs/q2-chart-bar.cjs.entry.js +1 -1
  21. package/dist/cjs/q2-chart-donut.cjs.entry.js +1 -1
  22. package/dist/cjs/q2-checkbox-group.cjs.entry.js +1 -1
  23. package/dist/cjs/q2-checkbox.q2-tag.entry.cjs.js.map +1 -1
  24. package/dist/cjs/q2-checkbox_2.cjs.entry.js +47 -5
  25. package/dist/cjs/q2-checkbox_2.cjs.entry.js.map +1 -1
  26. package/dist/cjs/q2-context.cjs.entry.js +1 -1
  27. package/dist/cjs/q2-data-table.cjs.entry.js +1 -1
  28. package/dist/cjs/q2-detail.cjs.entry.js +1 -1
  29. package/dist/cjs/q2-dropdown-item.cjs.entry.js +1 -1
  30. package/dist/cjs/q2-dropdown.cjs.entry.js +1 -1
  31. package/dist/cjs/q2-editable-field.cjs.entry.js +1 -1
  32. package/dist/cjs/q2-file-picker.cjs.entry.js +1 -1
  33. package/dist/cjs/q2-icon.cjs.entry.js +1 -1
  34. package/dist/cjs/q2-input.cjs.entry.js +1 -1
  35. package/dist/cjs/q2-item.cjs.entry.js +1 -1
  36. package/dist/cjs/q2-link_2.cjs.entry.js +1 -1
  37. package/dist/cjs/q2-loc.cjs.entry.js +1 -1
  38. package/dist/cjs/q2-message.cjs.entry.js +1 -1
  39. package/dist/cjs/q2-meter.cjs.entry.js +1 -1
  40. package/dist/cjs/q2-modal.cjs.entry.js +1 -1
  41. package/dist/cjs/q2-month-picker.cjs.entry.js +1 -1
  42. package/dist/cjs/q2-optgroup.cjs.entry.js +1 -1
  43. package/dist/cjs/q2-option.cjs.entry.js +1 -1
  44. package/dist/cjs/q2-otp.cjs.entry.js +1 -1
  45. package/dist/cjs/q2-pagination.cjs.entry.js +1 -1
  46. package/dist/cjs/q2-pill.cjs.entry.js +1 -1
  47. package/dist/cjs/q2-radio-group.cjs.entry.js +1 -1
  48. package/dist/cjs/q2-radio.cjs.entry.js +1 -1
  49. package/dist/cjs/q2-relative-time.cjs.entry.js +1 -1
  50. package/dist/cjs/q2-section.cjs.entry.js +1 -1
  51. package/dist/cjs/q2-select.cjs.entry.js +1 -1
  52. package/dist/cjs/q2-stepper-pane.cjs.entry.js +1 -1
  53. package/dist/cjs/q2-stepper-vertical.cjs.entry.js +1 -1
  54. package/dist/cjs/q2-stepper.cjs.entry.js +1 -1
  55. package/dist/cjs/q2-tab-container.cjs.entry.js +1 -1
  56. package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
  57. package/dist/cjs/q2-textarea.cjs.entry.js +1 -1
  58. package/dist/cjs/q2-toast.cjs.entry.js +1 -1
  59. package/dist/cjs/q2-tooltip.cjs.entry.js +1 -1
  60. package/dist/collection/components/q2-card/q2-card.css +4 -2
  61. package/dist/collection/components/q2-checkbox/q2-checkbox.css +20 -4
  62. package/dist/collection/components/q2-checkbox/q2-checkbox.js +53 -3
  63. package/dist/collection/components/q2-checkbox/q2-checkbox.js.map +1 -1
  64. package/dist/collection/components/q2-popover/q2-popover.css +1 -1
  65. package/dist/collection/components/q2-popover/q2-popover.js +11 -6
  66. package/dist/collection/components/q2-popover/q2-popover.js.map +1 -1
  67. package/dist/collection/utils/index.js +30 -20
  68. package/dist/collection/utils/index.js.map +1 -1
  69. package/dist/components/index2.js +31 -21
  70. package/dist/components/index2.js.map +1 -1
  71. package/dist/components/q2-card.js +1 -1
  72. package/dist/components/q2-card.js.map +1 -1
  73. package/dist/components/q2-checkbox2.js +51 -6
  74. package/dist/components/q2-checkbox2.js.map +1 -1
  75. package/dist/components/q2-popover2.js +12 -7
  76. package/dist/components/q2-popover2.js.map +1 -1
  77. package/dist/components/q2-select2.js +1 -1
  78. package/dist/esm/click-elsewhere.q2-option-list.q2-popover.entry.js.map +1 -1
  79. package/dist/esm/click-elsewhere_3.entry.js +12 -7
  80. package/dist/esm/click-elsewhere_3.entry.js.map +1 -1
  81. package/dist/esm/{index-C5gj0T_3.js → index-CSlW4ulM.js} +33 -23
  82. package/dist/esm/index-CSlW4ulM.js.map +1 -0
  83. package/dist/esm/loader.js +1 -1
  84. package/dist/esm/q2-action-group_2.entry.js +1 -1
  85. package/dist/esm/q2-action-sheet.entry.js +1 -1
  86. package/dist/esm/q2-badge.entry.js +1 -1
  87. package/dist/esm/q2-btn_2.entry.js +1 -1
  88. package/dist/esm/q2-calendar.entry.js +1 -1
  89. package/dist/esm/q2-card-image.entry.js +1 -1
  90. package/dist/esm/q2-card.entry.js +2 -2
  91. package/dist/esm/q2-card.entry.js.map +1 -1
  92. package/dist/esm/q2-carousel-pane.entry.js +1 -1
  93. package/dist/esm/q2-carousel.entry.js +1 -1
  94. package/dist/esm/q2-chart-area.entry.js +1 -1
  95. package/dist/esm/q2-chart-bar.entry.js +1 -1
  96. package/dist/esm/q2-chart-donut.entry.js +1 -1
  97. package/dist/esm/q2-checkbox-group.entry.js +1 -1
  98. package/dist/esm/q2-checkbox.q2-tag.entry.js.map +1 -1
  99. package/dist/esm/q2-checkbox_2.entry.js +47 -5
  100. package/dist/esm/q2-checkbox_2.entry.js.map +1 -1
  101. package/dist/esm/q2-context.entry.js +1 -1
  102. package/dist/esm/q2-data-table.entry.js +1 -1
  103. package/dist/esm/q2-detail.entry.js +1 -1
  104. package/dist/esm/q2-dropdown-item.entry.js +1 -1
  105. package/dist/esm/q2-dropdown.entry.js +1 -1
  106. package/dist/esm/q2-editable-field.entry.js +1 -1
  107. package/dist/esm/q2-file-picker.entry.js +1 -1
  108. package/dist/esm/q2-icon.entry.js +1 -1
  109. package/dist/esm/q2-input.entry.js +1 -1
  110. package/dist/esm/q2-item.entry.js +1 -1
  111. package/dist/esm/q2-link_2.entry.js +1 -1
  112. package/dist/esm/q2-loc.entry.js +1 -1
  113. package/dist/esm/q2-message.entry.js +1 -1
  114. package/dist/esm/q2-meter.entry.js +1 -1
  115. package/dist/esm/q2-modal.entry.js +1 -1
  116. package/dist/esm/q2-month-picker.entry.js +1 -1
  117. package/dist/esm/q2-optgroup.entry.js +1 -1
  118. package/dist/esm/q2-option.entry.js +1 -1
  119. package/dist/esm/q2-otp.entry.js +1 -1
  120. package/dist/esm/q2-pagination.entry.js +1 -1
  121. package/dist/esm/q2-pill.entry.js +1 -1
  122. package/dist/esm/q2-radio-group.entry.js +1 -1
  123. package/dist/esm/q2-radio.entry.js +1 -1
  124. package/dist/esm/q2-relative-time.entry.js +1 -1
  125. package/dist/esm/q2-section.entry.js +1 -1
  126. package/dist/esm/q2-select.entry.js +1 -1
  127. package/dist/esm/q2-stepper-pane.entry.js +1 -1
  128. package/dist/esm/q2-stepper-vertical.entry.js +1 -1
  129. package/dist/esm/q2-stepper.entry.js +1 -1
  130. package/dist/esm/q2-tab-container.entry.js +1 -1
  131. package/dist/esm/q2-tecton-elements.js +1 -1
  132. package/dist/esm/q2-textarea.entry.js +1 -1
  133. package/dist/esm/q2-toast.entry.js +1 -1
  134. package/dist/esm/q2-tooltip.entry.js +1 -1
  135. package/dist/q2-tecton-elements/click-elsewhere.q2-option-list.q2-popover.entry.esm.js.map +1 -1
  136. package/dist/q2-tecton-elements/click-elsewhere_3.entry.js +29 -24
  137. package/dist/q2-tecton-elements/click-elsewhere_3.entry.js.map +1 -1
  138. package/dist/q2-tecton-elements/{index-C5gj0T_3.js → index-CSlW4ulM.js} +36 -24
  139. package/dist/q2-tecton-elements/index-CSlW4ulM.js.map +1 -0
  140. package/dist/q2-tecton-elements/q2-action-group_2.entry.js +1 -1
  141. package/dist/q2-tecton-elements/q2-action-sheet.entry.js +1 -1
  142. package/dist/q2-tecton-elements/q2-badge.entry.js +1 -1
  143. package/dist/q2-tecton-elements/q2-btn_2.entry.js +1 -1
  144. package/dist/q2-tecton-elements/q2-calendar.entry.js +1 -1
  145. package/dist/q2-tecton-elements/q2-card-image.entry.js +1 -1
  146. package/dist/q2-tecton-elements/q2-card.entry.esm.js.map +1 -1
  147. package/dist/q2-tecton-elements/q2-card.entry.js +2 -2
  148. package/dist/q2-tecton-elements/q2-card.entry.js.map +1 -1
  149. package/dist/q2-tecton-elements/q2-carousel-pane.entry.js +1 -1
  150. package/dist/q2-tecton-elements/q2-carousel.entry.js +1 -1
  151. package/dist/q2-tecton-elements/q2-chart-area.entry.js +1 -1
  152. package/dist/q2-tecton-elements/q2-chart-bar.entry.js +3 -3
  153. package/dist/q2-tecton-elements/q2-chart-donut.entry.js +4 -4
  154. package/dist/q2-tecton-elements/q2-checkbox-group.entry.js +1 -1
  155. package/dist/q2-tecton-elements/q2-checkbox.q2-tag.entry.esm.js.map +1 -1
  156. package/dist/q2-tecton-elements/q2-checkbox_2.entry.js +62 -23
  157. package/dist/q2-tecton-elements/q2-checkbox_2.entry.js.map +1 -1
  158. package/dist/q2-tecton-elements/q2-context.entry.js +1 -1
  159. package/dist/q2-tecton-elements/q2-data-table.entry.js +1 -1
  160. package/dist/q2-tecton-elements/q2-detail.entry.js +1 -1
  161. package/dist/q2-tecton-elements/q2-dropdown-item.entry.js +1 -1
  162. package/dist/q2-tecton-elements/q2-dropdown.entry.js +1 -1
  163. package/dist/q2-tecton-elements/q2-editable-field.entry.js +1 -1
  164. package/dist/q2-tecton-elements/q2-file-picker.entry.js +1 -1
  165. package/dist/q2-tecton-elements/q2-icon.entry.js +41 -41
  166. package/dist/q2-tecton-elements/q2-input.entry.js +1 -1
  167. package/dist/q2-tecton-elements/q2-item.entry.js +1 -1
  168. package/dist/q2-tecton-elements/q2-link_2.entry.js +1 -1
  169. package/dist/q2-tecton-elements/q2-loc.entry.js +1 -1
  170. package/dist/q2-tecton-elements/q2-message.entry.js +1 -1
  171. package/dist/q2-tecton-elements/q2-meter.entry.js +1 -1
  172. package/dist/q2-tecton-elements/q2-modal.entry.js +1 -1
  173. package/dist/q2-tecton-elements/q2-month-picker.entry.js +1 -1
  174. package/dist/q2-tecton-elements/q2-optgroup.entry.js +1 -1
  175. package/dist/q2-tecton-elements/q2-option.entry.js +1 -1
  176. package/dist/q2-tecton-elements/q2-otp.entry.js +1 -1
  177. package/dist/q2-tecton-elements/q2-pagination.entry.js +1 -1
  178. package/dist/q2-tecton-elements/q2-pill.entry.js +1 -1
  179. package/dist/q2-tecton-elements/q2-radio-group.entry.js +1 -1
  180. package/dist/q2-tecton-elements/q2-radio.entry.js +1 -1
  181. package/dist/q2-tecton-elements/q2-relative-time.entry.js +4 -4
  182. package/dist/q2-tecton-elements/q2-section.entry.js +1 -1
  183. package/dist/q2-tecton-elements/q2-select.entry.js +1 -1
  184. package/dist/q2-tecton-elements/q2-stepper-pane.entry.js +1 -1
  185. package/dist/q2-tecton-elements/q2-stepper-vertical.entry.js +1 -1
  186. package/dist/q2-tecton-elements/q2-stepper.entry.js +1 -1
  187. package/dist/q2-tecton-elements/q2-tab-container.entry.js +1 -1
  188. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
  189. package/dist/q2-tecton-elements/q2-textarea.entry.js +1 -1
  190. package/dist/q2-tecton-elements/q2-toast.entry.js +1 -1
  191. package/dist/q2-tecton-elements/q2-tooltip.entry.js +1 -1
  192. package/dist/types/components/q2-checkbox/q2-checkbox.d.ts +11 -0
  193. package/dist/types/utils/index.d.ts +8 -2
  194. package/package.json +3 -3
  195. package/dist/cjs/index-DmGkqdX2.js.map +0 -1
  196. package/dist/esm/index-C5gj0T_3.js.map +0 -1
  197. package/dist/q2-tecton-elements/index-C5gj0T_3.js.map +0 -1
@@ -12,23 +12,33 @@ const debounce = (fn, delay = 300) => {
12
12
  function isMobile() {
13
13
  return /Android|webOS|iPhone|iPad|iPod|BlackBerry|Mobile|IEMobile|Windows Phone|Opera Mini/i.test(navigator.userAgent);
14
14
  }
15
+ function getComposedParent(element) {
16
+ if (element.parentElement)
17
+ return element.parentElement;
18
+ const root = element.getRootNode();
19
+ if (root.host)
20
+ return root.host;
21
+ return null;
22
+ }
23
+ function findComposedAncestor(element, predicate, options = {}) {
24
+ const { includeSelf = false, stopAfter = [] } = options;
25
+ let current = includeSelf ? element : getComposedParent(element);
26
+ while (current) {
27
+ if (predicate(current))
28
+ return current;
29
+ if (stopAfter.includes(current))
30
+ break;
31
+ current = getComposedParent(current);
32
+ }
33
+ return null;
34
+ }
35
+ function isInFixedPositionContext(element) {
36
+ return !!findComposedAncestor(element, current => {
37
+ return current.style.position === 'fixed' || getComputedStyle(current).position === 'fixed';
38
+ }, { includeSelf: true });
39
+ }
15
40
  function isInScrollableContainer(element) {
16
- let current = element;
17
- while (current && current !== document.body && current !== document.documentElement) {
18
- // Move to parent
19
- if (current.parentElement) {
20
- current = current.parentElement;
21
- }
22
- else {
23
- // Try to cross shadow DOM boundary
24
- const root = current.getRootNode();
25
- if (root && root.host) {
26
- current = root.host;
27
- }
28
- else {
29
- break;
30
- }
31
- }
41
+ const scrollableContainer = findComposedAncestor(element, current => {
32
42
  const style = window.getComputedStyle(current);
33
43
  const hasScrollableOverflow = style.overflow === 'scroll' ||
34
44
  style.overflow === 'auto' ||
@@ -37,10 +47,10 @@ function isInScrollableContainer(element) {
37
47
  style.overflowY === 'scroll' ||
38
48
  style.overflowY === 'auto';
39
49
  const hasOverflowingContent = current.scrollHeight > current.clientHeight || current.scrollWidth > current.clientWidth;
40
- if (hasScrollableOverflow && hasOverflowingContent) {
41
- return true;
42
- }
43
- }
50
+ return hasScrollableOverflow && hasOverflowingContent;
51
+ }, { stopAfter: [document.body, document.documentElement] });
52
+ if (scrollableContainer)
53
+ return true;
44
54
  // Check if the iframe itself is the scrolling container
45
55
  const isIframe = window !== window.top;
46
56
  if (isIframe && document.documentElement.scrollHeight > window.innerHeight) {
@@ -375,7 +385,7 @@ const getAllText = async (element, options = {}) => {
375
385
  return result;
376
386
  };
377
387
 
378
- export { handleRenamedProp as a, hasSlotContent as b, createGuid as c, isMobile as d, resizeIframe as e, debounce as f, renderMessages as g, handleAriaLabel as h, isEventFromElement as i, handleDeprecationWarning as j, handleColor as k, loc as l, getAriaValueFromProp as m, nextPaint as n, overrideFocus as o, isFirefox as p, getAllText as q, renderLabel as r, setMessageHeight as s, isVisible as t, isInScrollableContainer as u, isRelatedTargetWithinHost as v, waitForNextPaint as w, getBrowserInfo as x };
388
+ export { handleRenamedProp as a, hasSlotContent as b, createGuid as c, isMobile as d, resizeIframe as e, debounce as f, renderMessages as g, handleAriaLabel as h, isEventFromElement as i, handleDeprecationWarning as j, handleColor as k, loc as l, getAriaValueFromProp as m, nextPaint as n, overrideFocus as o, isFirefox as p, getAllText as q, renderLabel as r, setMessageHeight as s, isVisible as t, isInFixedPositionContext as u, isInScrollableContainer as v, waitForNextPaint as w, isRelatedTargetWithinHost as x, getBrowserInfo as y };
379
389
  //# sourceMappingURL=index2.js.map
380
390
 
381
391
  //# sourceMappingURL=index2.js.map
@@ -1 +1 @@
1
- {"file":"index2.js","mappings":";;AAiBa,MAAA,QAAQ,GAAG,CAAsD,EAAK,EAAE,KAAA,GAAgB,GAAG,KAAI;AACxG,IAAA,IAAI,OAAsC;IAC1C,OAAO,UAAU,GAAG,IAAmB,EAAA;QACnC,YAAY,CAAC,OAAO,CAAC;AACrB,QAAA,OAAO,GAAG,UAAU,CAAC,MAAK;AACtB,YAAA,EAAE,CAAC,GAAG,IAAI,CAAC;SACd,EAAE,KAAK,CAAC;AACb,KAAC;AACL;SAUgB,QAAQ,GAAA;IACpB,OAAO,qFAAqF,CAAC,IAAI,CAC7F,SAAS,CAAC,SAAS,CACtB;AACL;AAEM,SAAU,uBAAuB,CAAC,OAAO,EAAA;IAC3C,IAAI,OAAO,GAAG,OAAO;AAErB,IAAA,OAAO,OAAO,IAAI,OAAO,KAAK,QAAQ,CAAC,IAAI,IAAI,OAAO,KAAK,QAAQ,CAAC,eAAe,EAAE;;AAEjF,QAAA,IAAI,OAAO,CAAC,aAAa,EAAE;AACvB,YAAA,OAAO,GAAG,OAAO,CAAC,aAAa;;aAC5B;;AAEH,YAAA,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,EAAE;AAClC,YAAA,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;AACnB,gBAAA,OAAO,GAAG,IAAI,CAAC,IAAI;;iBAChB;gBACH;;;QAIR,MAAM,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC;AAC9C,QAAA,MAAM,qBAAqB,GACvB,KAAK,CAAC,QAAQ,KAAK,QAAQ;YAC3B,KAAK,CAAC,QAAQ,KAAK,MAAM;YACzB,KAAK,CAAC,SAAS,KAAK,QAAQ;YAC5B,KAAK,CAAC,SAAS,KAAK,MAAM;YAC1B,KAAK,CAAC,SAAS,KAAK,QAAQ;AAC5B,YAAA,KAAK,CAAC,SAAS,KAAK,MAAM;AAE9B,QAAA,MAAM,qBAAqB,GACvB,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW;AAE5F,QAAA,IAAI,qBAAqB,IAAI,qBAAqB,EAAE;AAChD,YAAA,OAAO,IAAI;;;;AAKnB,IAAA,MAAM,QAAQ,GAAG,MAAM,KAAK,MAAM,CAAC,GAAG;AACtC,IAAA,IAAI,QAAQ,IAAI,QAAQ,CAAC,eAAe,CAAC,YAAY,GAAG,MAAM,CAAC,WAAW,EAAE;AACxE,QAAA,OAAO,IAAI;;AAGf,IAAA,OAAO,KAAK;AAChB;AAuBgB,SAAA,yBAAyB,CAAC,KAAiB,EAAE,OAAoB,EAAA;AAC7E,IAAA,OAAO,KAAK,CAAC,aAAa,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAqB,CAAC;AAC5F;AAEgB,SAAA,kBAAkB,CAAC,KAAY,EAAE,OAAoB,EAAA;;IACjE,OAAO,CAAA,CAAA,EAAA,GAAA,KAAK,CAAC,YAAY,sDAAK,CAAC,CAAC,MAAK,OAAO;AAChD;AAEM,SAAU,aAAa,CAAC,WAAwB,EAAA;IAClD,WAAW,CAAC,KAAK,GAAG,MAAM,WAAW,KAAX,IAAA,IAAA,WAAW,KAAX,MAAA,GAAA,MAAA,GAAA,WAAW,CAAE,aAAa,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AACrG;SAEgB,SAAS,GAAA;IACrB,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE;AACnD,IAAA,OAAO,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC;AACxC;AAWA;;;;AAIG;AACa,SAAA,oBAAoB,CAAC,IAAY,EAAE,WAAsB,EAAA;IACrE,IAAI,IAAI,KAAK,SAAS;AAAE,QAAA,OAAO,IAAI;AACnC,IAAA,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,KAAK,UAAU,GAAG,IAAI,GAAG,SAAS;AAC/D,IAAA,OAAO,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,EAAE,GAAG,IAAI,GAAG,SAAS;AACvE;AAEA,IAAI,IAAI,GAAW,IAAI;SACP,UAAU,GAAA;IACtB,OAAO,IAAI,EAAE;AACjB;AAEM,SAAU,SAAS,CAAC,EAA6B,EAAA;IACnD,qBAAqB,CAAC,MAAK;QACvB,qBAAqB,CAAC,EAAE,CAAC;AAC7B,KAAC,CAAC;AACN;AAEM,SAAU,SAAS,CAAC,OAAoB,EAAA;IAC1C,OAAO,OAAO,CAAC,WAAW,GAAG,CAAC,IAAI,OAAO,CAAC,YAAY,GAAG,CAAC,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,MAAM,GAAG,CAAC;AACrG;SAEgB,gBAAgB,GAAA;AAC5B,IAAA,OAAO,IAAI,OAAO,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;AACrD;AAiBgB,SAAA,GAAG,CAAC,GAAW,EAAE,IAAqC,EAAA;;AAClE,IAAA,IAAI,CAAC,GAAG;AAAE,QAAA,OAAO,EAAE;IACnB,IAAI,CAAA,CAAA,EAAA,GAAA,MAAM,CAAC,MAAM,0CAAE,SAAS,MAAK,IAAI,EAAE;AACnC,QAAA,OAAO,GAAG;;AAEd,IAAA,OAAO,MAAA,CAAA,EAAA,GAAA,MAAM,aAAN,MAAM,KAAA,MAAA,GAAA,MAAA,GAAN,MAAM,CAAE,cAAc,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,GAAG;AACxD;AAEA;;;;;;;;;;AAUG;SACa,cAAc,GAAA;AAC1B,IAAA,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS;IACrC,IAAI,IAAI,GAAG,SAAS;IACpB,IAAI,OAAO,GAAG,SAAS;;AAGvB,IAAA,MAAM,cAAc,GAAG,2BAA2B,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;IACjG,MAAM,QAAQ,GAAG,cAAc,GAAG,QAAQ,GAAG,SAAS;;IAGtD,IAAI,OAAO,GAAG,SAAS;IACvB,IAAI,cAAc,EAAE;QAChB,MAAM,gBAAgB,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;AACpD,QAAA,MAAM,WAAW,GAAG,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;QACrF,MAAM,YAAY,GAAG,WAAW,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACjE,QAAA,IAAI,gBAAgB,IAAI,YAAY,EAAE;YAClC,OAAO,GAAG,KAAK;;;;AAKvB,IAAA,IAAI,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;;QAEnE,IAAI,GAAG,QAAQ;AACf,QAAA,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;;AAChF,SAAA,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;;QAEpC,IAAI,GAAG,QAAQ;AACf,QAAA,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;AACjD,SAAA,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;QAClC,IAAI,GAAG,MAAM;QACb,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,sBAAsB,CAAC;AACrD,QAAA,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;AACnB,YAAA,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC;;;AAEnB,SAAA,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;QACtC,IAAI,GAAG,SAAS;QAChB,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,qBAAqB,CAAC;AACpD,QAAA,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;AACnB,YAAA,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC;;;AAEnB,SAAA,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;QACrC,IAAI,GAAG,QAAQ;QACf,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,8BAA8B,CAAC;AAC7D,QAAA,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;AACnB,YAAA,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC;;;AAEnB,SAAA,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;QACrC,IAAI,GAAG,QAAQ;QACf,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,0BAA0B,CAAC;AACzD,QAAA,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;AACnB,YAAA,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC;;;IAI1B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE;AAC/C;AAEM,SAAU,WAAW,CAAC,MAA+E,EAAA;IACvG,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM;AACvD,IAAA,MAAM,YAAY,GAAa,CAAC,aAAa,CAAC;IAC9C,IAAI,QAAQ,GAAG,EAAE;IAEjB,IAAI,eAAe,GAAG,SAAS;IAC/B,IAAI,CAAC,eAAe,EAAE;QAClB,MAAM,iBAAiB,GAAG,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAkB,gBAAgB,CAAC;AAChG,QAAA,MAAM,cAAc,GAAG,iBAAiB,CAAC,MAAM,GAAG,CAAC;AACnD,QAAA,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK;AAExB,QAAA,eAAe,GAAG,QAAQ,IAAI,cAAc,GAAG,KAAK,GAAG,IAAI;;AAG/D,IAAA,IAAI,eAAe;AAAE,QAAA,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5C,IAAI,QAAQ,EAAE;QACV,QAAQ,GAAG,CAAM,CAAA,MAAA,EAAA,EAAA,KAAK,EAAC,cAAc,EAAE,EAAA,GAAG,CAAC,+BAA+B,CAAC,CAAQ;;IAEvF,IAAI,QAAQ,EAAE;QACV,QAAQ,GAAG,CAAM,CAAA,MAAA,EAAA,EAAA,KAAK,EAAC,cAAc,EAAE,EAAA,GAAG,CAAC,+BAA+B,CAAC,CAAQ;AACnF,QAAA,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC;;AAEvC,IAAA,QACI,CAAA,CAAA,OAAA,EAAA,EACI,OAAO,EAAE,MAAM,CAAC,OAAO,EACvB,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAA;QAE7B,CAAM,CAAA,MAAA,EAAA,EAAA,IAAI,EAAC,OAAO,EAAA;YACb,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,SAAS;YAC9B,QAAQ,CACN,CACH;AAEhB;AAEgB,SAAA,cAAc,CAAC,MAAmB,EAAE,QAAgB,EAAA;IAChE,OAAO,MAAM,CAAC,aAAa,CAAC,CAAA,OAAA,EAAU,QAAQ,CAAI,EAAA,CAAA,CAAC,KAAK,IAAI;AAChE;AAEM,SAAU,eAAe,CAC3B,MAWW,EAAA;AAEX,IAAA,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM;AAC5B,IAAA,IAAI,CAAC,SAAS;QAAE;;AAGhB,IAAA,MAAM,sBAAsB,GAAG,MAAM,EAAE,CAAC,QAAQ,EAAE;AAClD,IAAA,IAAI,SAAS,KAAK,sBAAsB,EAAE;AACtC,QAAA,MAAM,CAAC,SAAS,GAAG,SAAS;QAC5B;;;IAIJ,IAAI,WAAW,IAAI,MAAM;AAAE,QAAA,MAAM,CAAC,SAAS,GAAG,IAAI;AAClD,IAAA,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC;AAC7B,IAAA,MAAM,CAAC,SAAS,GAAG,SAAS;AAChC;AAEA;;AAEG;AACG,SAAU,iBAAiB,CAC7B,MAAmD,EACnD,OAAe,EACf,OAAe,EACf,aAAuB,EAAA;AAEvB,IAAA,IAAI,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,WAAW;QAAE;;AAG5C,IAAA,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE;AACjB,QAAA,wBAAwB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;;IAGrD,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;AAKrC;SAEgB,wBAAwB,CACpC,MAAmD,EACnD,kBAA0B,EAC1B,kBAA4D,EAAA;;AAE5D,IAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,KAAK,WAAW,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,uBAAuB,EAAE;AAC9F,QAAA,IAAI,MAAM,CAAC,kBAAkB,CAAC,KAAK,WAAW;YAAE;AAEhD,QAAA,MAAM,aAAa,GACf,CAAA,CAAA,EAAA,GAAA,MAAA,CAAA,EAAA,GAAA,MAAM,CAAC,WAAW,0CAAE,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,WAAW,EAAE,0CAAE,KAAK,CAAC,CAAC,CAAC,MAAI,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAM,CAAC,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QAC5G,QAAQ,kBAAkB;AACtB,YAAA,KAAK,MAAM;gBACP,IAAI,kBAAkB,KAAK,MAAM,IAAI,aAAa,KAAK,KAAK,EAAE;AAC1D,oBAAA,OAAO,CAAC,IAAI,CACR,CAAA,2RAAA,CAA6R,CAChS;;qBACE;oBACH,OAAO,CAAC,IAAI,CACR,CAAA,aAAA,EAAgB,kBAAkB,CAAU,OAAA,EAAA,aAAa,CAAoF,kFAAA,CAAA,CAChJ;;gBAEL;AAEJ,YAAA,KAAK,UAAU;gBACX,OAAO,CAAC,IAAI,CACR,CAAA,aAAA,EAAgB,kBAAkB,CAAO,IAAA,EAAA,aAAa,CAAoF,kFAAA,CAAA,CAC7I;gBACD;AAEJ,YAAA,KAAK,QAAQ;gBACT,OAAO,CAAC,IAAI,CACR,CAAA,WAAA,EAAc,kBAAkB,CAAO,IAAA,EAAA,aAAa,CAAoF,kFAAA,CAAA,CAC3I;gBACD;AAEJ,YAAA,KAAK,OAAO;gBACR,OAAO,CAAC,IAAI,CACR,CAAA,UAAA,EAAa,kBAAkB,CAAO,IAAA,EAAA,aAAa,CAAoF,kFAAA,CAAA,CAC1I;gBACD;AAEJ,YAAA;gBACI,OAAO,CAAC,KAAK,CACT,CAAuE,oEAAA,EAAA,kBAAkB,CAAU,OAAA,EAAA,aAAa,CAA0B,uBAAA,EAAA,kBAAkB,CAAE,CAAA,CACjK;;;AAGjB;AAEM,SAAU,cAAc,CAAC,MAAsB,EAAA;AACjD,IAAA,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,GAAG,QAAQ,GAAG,MAAM;AAEhD,IAAA,QACI,CAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAC,oBAAoB,EAAA;QAC3B,CACI,CAAA,YAAA,EAAA,EAAA,UAAU,EAAC,SAAS,EACpB,WAAW,QACX,IAAI,EAAE,IAAI,EAAA,SAAA,EACF,SAAS,EAAA;AAEjB,YAAA,CAAA,CAAA,IAAA,EAAA,EAAI,EAAE,EAAE,MAAM,CAAC,gBAAgB,EAAA,EAC1B,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,KACxB,CAAY,CAAA,IAAA,EAAA,EAAA,SAAA,EAAA,iBAAiB,EAAE,EAAA,GAAG,CAAC,OAAO,CAAC,CAAM,CACpD,CAAC,CACD,CACI,CACX;AAEd;AAEM,SAAU,gBAAgB,CAAC,MAAsB,EAAA;AACnD,IAAA,MAAM,gBAAgB,GAAI,MAAM,CAAC,WAAW,CAAC,UAAyB,CAAC,aAAa,CAChF,qBAAqB,CACxB;IACD,MAAM,SAAS,GAAG,gBAAgB,CAAC,aAAa,CAAC,YAAY,CAAC;IAC9D,SAAS,CAAC,MAAK;QACX,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,QAAQ,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC,MAAM,GAAG,CAAC;QAEpG,IAAI,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAG,EAAA,MAAM,CAAI,EAAA,CAAA;YAAE;AAEzE,QAAA,IAAI,MAAM,KAAK,CAAC,EAAE;AACd,YAAA,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC;AACpC,YAAA,gBAAgB,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC;;aAC5C;AACH,YAAA,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC;YACvC,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAG,EAAA,MAAM,CAAI,EAAA,CAAA,CAAC;;AAEnE,KAAC,CAAC;AACN;AAEO,MAAM,YAAY,GAAG,MAAK;;IAC7B,OAAO,CAAA,EAAA,GAAA,MAAA,MAAM,CAAC,cAAc,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,YAAY,kDAAI;AAClD;AAEA;AACa,MAAA,WAAW,GAAG,CAAC,MAAa,KAAI;AACzC,IAAA,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;QACnE,MAAM,CAAC,MAAM,GAAG,CAAA,SAAA,EAAY,MAAM,CAAC,KAAK,EAAgC;AACxE,QAAA,MAAM,CAAC,KAAK,GAAG,SAAS;;AAEhC;AAEA;;;;;;;;;AASG;AACI,MAAM,UAAU,GAAG,OAAO,OAAO,EAAE,OAAO,GAAG,EAAE,KAAI;AACtD,IAAA,IAAI,CAAC,OAAO;AAAE,QAAA,OAAO,EAAE;AAEvB,IAAA,MAAM,IAAI,GAAG;AACT,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,mBAAmB,EAAE,KAAK;AAC1B,QAAA,kBAAkB,EAAE,KAAK;AACzB,QAAA,GAAG,OAAO;KACb;AAED,IAAA,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AACpF,IAAA,MAAM,cAAc,GAAG,IAAI,OAAO,EAAE;IACpC,IAAI,MAAM,GAAG,EAAE;IAEf,eAAe,WAAW,CAAC,IAAI,EAAA;;AAC3B,QAAA,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE;AAEhE,QAAA,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;;QAGxB,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,EAAE;YAClC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW;YAEnE,IAAI,IAAI,EAAE;;AAEN,gBAAA,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;oBAC1D,MAAM,IAAI,GAAG;;;gBAIjB,MAAM,IAAI,IAAI,CAAC,kBAAkB,GAAG,CAAA,EAAA,GAAA,MAAM,CAAC,cAAc,0CAAE,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;;YAEpF;;;QAIJ,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY,EAAE;;AAErC,YAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,OAAO,IAAI,CAAC,gBAAgB,KAAK,UAAU;AAEzG,YAAA,IAAI,kBAAkB,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAChD,gBAAA,MAAM,IAAI,CAAC,gBAAgB,EAAE;;;AAIjC,YAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,UAAU,EAAE;AACjC,gBAAA,MAAM,WAAW,CAAC,KAAK,CAAC;;;AAI5B,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE;gBACjB,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;AAClD,oBAAA,MAAM,WAAW,CAAC,WAAW,CAAC;;;;AAKtC,YAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,IAAI,OAAO,IAAI,CAAC,aAAa,KAAK,UAAU,EAAE;AACtE,gBAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE;AAE1C,gBAAA,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1B,oBAAA,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE;wBAClC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AAC/B,4BAAA,MAAM,WAAW,CAAC,QAAQ,CAAC;;;;qBAGhC;;AAEH,oBAAA,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE;wBACpC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AAC/B,4BAAA,MAAM,WAAW,CAAC,QAAQ,CAAC;;;;;;;AAQnD,IAAA,MAAM,WAAW,CAAC,OAAO,CAAC;;AAG1B,IAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACX,QAAA,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE;;AAG1B,IAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;QAC1B,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;;AAGxC,IAAA,OAAO,MAAM;AACjB;;;;","names":[],"sources":["src/utils/index.tsx"],"sourcesContent":["import { h } from '@stencil/core';\nimport { Q2Btn } from 'src/components/q2-btn/q2-btn';\nimport { Q2Calendar } from 'src/components/q2-calendar/q2-calendar';\nimport { Q2Carousel } from 'src/components/q2-carousel/q2-carousel';\nimport { Q2Checkbox } from 'src/components/q2-checkbox/q2-checkbox';\nimport { Q2CheckboxGroup } from 'src/components/q2-checkbox-group/q2-checkbox-group';\nimport { Q2RadioGroup } from 'src/components/q2-radio-group/q2-radio-group';\nimport { Q2Dropdown } from 'src/components/q2-dropdown/q2-dropdown';\nimport { Q2DropdownItem } from 'src/components/q2-dropdown-item/q2-dropdown-item';\nimport { Q2EditableField } from 'src/components/q2-editable-field/q2-editable-field';\nimport { Q2Input } from 'src/components/q2-input/q2-input';\nimport { Q2Loading } from 'src/components/q2-loading/q2-loading';\nimport { Q2Radio } from 'src/components/q2-radio/q2-radio';\nimport { Q2Select } from 'src/components/q2-select/q2-select';\nimport { FormFieldTypes } from 'src/util';\nimport { Q2Popover } from '@/components/q2-popover/q2-popover';\n\nexport const debounce = <F extends (...args: Parameters<F>) => ReturnType<F>>(fn: F, delay: number = 300) => {\n let timeout: ReturnType<typeof setTimeout>;\n return function (...args: Parameters<F>) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n fn(...args);\n }, delay);\n };\n};\n\nexport function isAndroid(): boolean {\n return /Android/i.test(navigator.userAgent);\n}\n\nexport function isIOS(): boolean {\n return /iPad|iPhone|iPod/.test(navigator.userAgent);\n}\n\nexport function isMobile(): boolean {\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|Mobile|IEMobile|Windows Phone|Opera Mini/i.test(\n navigator.userAgent\n );\n}\n\nexport function isInScrollableContainer(element) {\n let current = element;\n\n while (current && current !== document.body && current !== document.documentElement) {\n // Move to parent\n if (current.parentElement) {\n current = current.parentElement;\n } else {\n // Try to cross shadow DOM boundary\n const root = current.getRootNode();\n if (root && root.host) {\n current = root.host;\n } else {\n break;\n }\n }\n\n const style = window.getComputedStyle(current);\n const hasScrollableOverflow =\n style.overflow === 'scroll' ||\n style.overflow === 'auto' ||\n style.overflowX === 'scroll' ||\n style.overflowX === 'auto' ||\n style.overflowY === 'scroll' ||\n style.overflowY === 'auto';\n\n const hasOverflowingContent =\n current.scrollHeight > current.clientHeight || current.scrollWidth > current.clientWidth;\n\n if (hasScrollableOverflow && hasOverflowingContent) {\n return true;\n }\n }\n\n // Check if the iframe itself is the scrolling container\n const isIframe = window !== window.top;\n if (isIframe && document.documentElement.scrollHeight > window.innerHeight) {\n return true;\n }\n\n return false;\n}\n\nexport function isHostLosingFocus(event: FocusEvent, hostElement: HTMLElement) {\n const type = event.type;\n const focusInTypes = ['focusin', 'focus'];\n const isFocusIn = focusInTypes.includes(type);\n\n // on focusin: `target` is element losing focus, `relatedTarget` is element gaining focus\n // on focusout: `target` is element gaining focus, `relatedTarget` is element losing focus\n const elementGainingFocus = isFocusIn ? event.target : event.relatedTarget;\n\n const isElementNestedInHostElement = (element: HTMLElement) => {\n if (element === hostElement) return true;\n if (element.parentElement) {\n return isElementNestedInHostElement(element.parentElement);\n }\n return false;\n };\n\n if (!(elementGainingFocus instanceof HTMLElement)) return true;\n return !isElementNestedInHostElement(elementGainingFocus);\n}\n\nexport function isRelatedTargetWithinHost(event: FocusEvent, element: HTMLElement) {\n return event.relatedTarget !== element && !element.contains(event.relatedTarget as Node);\n}\n\nexport function isEventFromElement(event: Event, element: HTMLElement): boolean {\n return event.composedPath?.()[0] === element;\n}\n\nexport function overrideFocus(hostElement: HTMLElement) {\n hostElement.focus = () => hostElement?.dispatchEvent(new FocusEvent('focus', { bubbles: false }));\n}\n\nexport function isFirefox() {\n const userAgent = navigator.userAgent.toLowerCase();\n return userAgent.includes('firefox');\n}\n\nexport function isTouchDevice() {\n return 'ontouchstart' in window || navigator.maxTouchPoints > 0;\n}\n\nexport function isSafari() {\n const userAgent = navigator.userAgent.toLowerCase();\n return userAgent.includes('safari') && !userAgent.includes('chrome');\n}\n\n/**\n * Returns the value of a prop if it is defined and included in the `validValues`\n * array. This is used primarily to prevent Vue wrappers from setting aria props\n * to \"Symbol()\" when the prop is not set.\n */\nexport function getAriaValueFromProp(prop: string, validValues?: string[]) {\n if (prop === undefined) return prop;\n if (!validValues) return prop !== 'Symbol()' ? prop : undefined;\n return validValues.includes(prop) || prop === '' ? prop : undefined;\n}\n\nlet guid: number = 1000;\nexport function createGuid(): number {\n return guid++;\n}\n\nexport function nextPaint(fn: (value?: unknown) => void) {\n requestAnimationFrame(() => {\n requestAnimationFrame(fn);\n });\n}\n\nexport function isVisible(element: HTMLElement) {\n return element.offsetWidth > 0 || element.offsetHeight > 0 || element.getClientRects().length > 0;\n}\n\nexport function waitForNextPaint() {\n return new Promise(resolve => nextPaint(resolve));\n}\n\nexport function capitalize(value: string) {\n return `${value.charAt(0).toUpperCase()}${value.slice(1)}`;\n}\n\nexport function pick(props: string[]): (obj: object) => object {\n return obj => {\n return props.reduce((memo, prop) => {\n return {\n ...memo,\n [prop]: obj[prop],\n };\n }, {});\n };\n}\n\nexport function loc(key: string, subs?: Record<string, any> | string[]) {\n if (!key) return '';\n if (window.Tecton?.noStrings === true) {\n return key;\n }\n return window?.TectonElements?.loc(key, subs) ?? key;\n}\n\n/**\n * Returns browser name, version, platform, and context (browser vs app WebView).\n * Desktop Chrome: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36\n * Desktop Safari: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.4 Safari/605.1.15\n * Desktop Edge: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36 Edg/146.0.0.0\n * Desktop Firefox: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:149.0) Gecko/20100101 Firefox/149.0\n * Mobile app Android: Mozilla/5.0 (Linux; Android 16; sdk_gphone64_arm64 Build/BE2A.250530.026.D1; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/146.0.7680.177 Mobile Safari/537.36\n * Mobile browser Android: Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Mobile Safari/537.36\n * Mobile app iOS: Mozilla/5.0 (iPhone; CPU iPhone OS 18_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148\n * Mobile browser iOS: Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.0.1 Mobile/15E148 Safari/604.1 -> 18.7 is the OS version, 26.0.1 is the Safari version\n */\nexport function getBrowserInfo() {\n const userAgent = navigator.userAgent;\n let name = 'Unknown';\n let version = 'Unknown';\n\n // Detect platform\n const isMobileDevice = /Android|iPhone|iPad|iPod/i.test(userAgent) || userAgent.includes(' iOS/');\n const platform = isMobileDevice ? 'mobile' : 'desktop';\n\n // Detect context — app (WebView) vs standalone browser\n let context = 'browser';\n if (isMobileDevice) {\n const isAndroidWebView = userAgent.includes('; wv)');\n const isIOSDevice = /iPhone|iPad|iPod/.test(userAgent) || userAgent.includes(' iOS/');\n const isIOSWebView = isIOSDevice && !userAgent.includes('Safari');\n if (isAndroidWebView || isIOSWebView) {\n context = 'app';\n }\n }\n\n // Detect browser name and version — check mobile-specific patterns first\n if (userAgent.includes(' iPhone OS') && !userAgent.includes('Safari')) {\n // iOS app WebView — no \"Safari\" token in userAgent\n name = 'Safari';\n version = userAgent.split(' iPhone OS')[1].trim().split(/\\s/)[0].replace(/_/g, '.');\n } else if (userAgent.includes(' iOS/')) {\n // Alternate iOS app userAgent format (e.g. ngam-ios/26.5.0.107 arm64 iOS/26.4 CFNetwork/1.0 Darwin/25.4.0)\n name = 'Safari';\n version = userAgent.split(' iOS/')[1].split(/\\s/)[0];\n } else if (userAgent.includes('Edg')) {\n name = 'Edge';\n const match = userAgent.match(/Edg\\/(\\d+(?:\\.\\d+)+)/);\n if (match && match[1]) {\n version = match[1];\n }\n } else if (userAgent.includes('Firefox')) {\n name = 'Firefox';\n const match = userAgent.match(/Firefox\\/(\\d+\\.\\d+)/);\n if (match && match[1]) {\n version = match[1];\n }\n } else if (userAgent.includes('Chrome')) {\n name = 'Chrome';\n const match = userAgent.match(/Chrome\\/(\\d+\\.\\d+\\.\\d+\\.\\d+)/);\n if (match && match[1]) {\n version = match[1];\n }\n } else if (userAgent.includes('Safari')) {\n name = 'Safari';\n const match = userAgent.match(/Version\\/(\\d+(?:\\.\\d+)+)/);\n if (match && match[1]) {\n version = match[1];\n }\n }\n\n return { name, version, platform, context };\n}\n\nexport function renderLabel(target: FormFieldTypes | Q2RadioGroup | Q2CheckboxGroup | Q2Select | Q2Calendar) {\n const { label, hideLabel, optional, readonly } = target;\n const labelClasses: string[] = ['input-label'];\n let helpText = '';\n\n let shouldHideLabel = hideLabel;\n if (!shouldHideLabel) {\n const labelSlotElements = target.hostElement.querySelectorAll<HTMLSlotElement>('[slot=\"label\"]');\n const hasSlotContent = labelSlotElements.length > 0;\n const hasLabel = !!label;\n\n shouldHideLabel = hasLabel || hasSlotContent ? false : true;\n }\n\n if (shouldHideLabel) labelClasses.push('sr');\n if (optional) {\n helpText = <span class=\"optional-tag\">{loc('tecton.element.input.optional')}</span>;\n }\n if (readonly) {\n helpText = <span class=\"optional-tag\">{loc('tecton.element.input.readonly')}</span>;\n labelClasses.push('readonly-field');\n }\n return (\n <label\n htmlFor={target.inputId}\n class={labelClasses.join(' ')}\n >\n <slot name=\"label\">\n {label ? loc(label) : undefined}\n {helpText}\n </slot>\n </label>\n );\n}\n\nexport function hasSlotContent(target: HTMLElement, slotName: string) {\n return target.querySelector(`[slot=\"${slotName}\"]`) !== null;\n}\n\nexport function handleAriaLabel(\n target:\n | Q2Input\n | Q2Select\n | Q2Radio\n | Q2Checkbox\n | Q2EditableField\n | Q2Dropdown\n | Q2DropdownItem\n | Q2Loading\n | Q2Carousel\n | Q2Calendar\n | Q2Btn\n) {\n const { ariaLabel } = target;\n if (!ariaLabel) return;\n\n // If empty ariaLabel prop is set to primitive symbol by framework wrapper, set ariaLabel to undefined and return\n const FW_WRAPPERS_EMPTY_PROP = Symbol().toString();\n if (ariaLabel === FW_WRAPPERS_EMPTY_PROP) {\n target.ariaLabel = undefined;\n return;\n }\n\n // If ariaLabel is set, set hideLabel to true and set label to ariaLabel\n if ('hideLabel' in target) target.hideLabel = true;\n target.label = loc(ariaLabel);\n target.ariaLabel = undefined;\n}\n\n/**\n * Handles when a prop has been renamed on a component without introducing a breaking change.\n */\nexport function handleRenamedProp(\n target: Q2Btn | Q2Calendar | Q2Dropdown | Q2Popover,\n oldProp: string,\n newProp: string,\n removeOldProp?: boolean\n) {\n if (typeof target[oldProp] === 'undefined') return;\n\n // If old prop has value, aka set in component, call handleDeprecationWarning()\n if (target[oldProp]) {\n handleDeprecationWarning(target, oldProp, 'prop');\n }\n\n target[newProp] = target[oldProp];\n\n if (removeOldProp) {\n delete target[oldProp];\n }\n}\n\nexport function handleDeprecationWarning(\n target: Q2Btn | Q2Calendar | Q2Dropdown | Q2Popover,\n deprecatedItemName: string,\n deprecatedItemType: 'function' | 'prop' | 'method' | 'event'\n) {\n if (window.location.hostname === 'localhost' || window.location.host === 'stack.q2developer.com') {\n if (target[deprecatedItemName] === 'undefined') return;\n\n const componentName =\n target.constructor?.name?.toLowerCase()?.slice(2) || target.hostElement?.tagName?.toLowerCase().slice(3);\n switch (deprecatedItemType) {\n case 'prop':\n if (deprecatedItemName === 'size' && componentName === 'btn') {\n console.warn(\n `The property of size in q2-btn should not be typeof number, or typeof string containing a number. This functionality will be deprecated in an upcoming release. Instead, please use the value 'undefined', or typeof string with any of the following values: \"small\" / \"medium\" / \"large\" `\n );\n } else {\n console.warn(\n `The property ${deprecatedItemName} in q2-${componentName} has been marked for deprecation and will be removed in an upcoming major release.`\n );\n }\n break;\n\n case 'function':\n console.warn(\n `The function ${deprecatedItemName} in ${componentName} has been marked for deprecation and will be removed in an upcoming major release.`\n );\n break;\n\n case 'method':\n console.warn(\n `The method ${deprecatedItemName} in ${componentName} has been marked for deprecation and will be removed in an upcoming major release.`\n );\n break;\n\n case 'event':\n console.warn(\n `The event ${deprecatedItemName} in ${componentName} has been marked for deprecation and will be removed in an upcoming major release.`\n );\n break;\n\n default:\n console.error(\n `handleDeprecationWarning --> No type found for desired deprecation: ${deprecatedItemName} in q2-${componentName}: deprecatedItemType = ${deprecatedItemName}`\n );\n }\n }\n}\n\nexport function renderMessages(target: FormFieldTypes) {\n const type = target.hasError ? 'danger' : 'info';\n\n return (\n <div class=\"messages-container\">\n <q2-message\n appearance=\"minimal\"\n description\n type={type}\n test-id=\"message\"\n >\n <ul id={target.inputDescribedBy}>\n {target.messages.map(message => (\n <li test-id=\"messageListItem\">{loc(message)}</li>\n ))}\n </ul>\n </q2-message>\n </div>\n );\n}\n\nexport function setMessageHeight(target: FormFieldTypes) {\n const messageContainer = (target.hostElement.shadowRoot as ShadowRoot).querySelector<HTMLDivElement>(\n '.messages-container'\n );\n const q2Message = messageContainer.querySelector('q2-message');\n nextPaint(() => {\n const height = target.showMessages && target.hasFocus ? q2Message.getBoundingClientRect().height : 0;\n\n if (messageContainer.style.getPropertyValue('height') === `${height}px`) return;\n\n if (height === 0) {\n q2Message.classList.add('invisible');\n messageContainer.style.removeProperty('height');\n } else {\n q2Message.classList.remove('invisible');\n messageContainer.style.setProperty('height', `${height}px`);\n }\n });\n}\n\nexport const resizeIframe = () => {\n return window.TectonElements?.resizeIframe?.();\n};\n\n// Handling color attribute (deprecated)\nexport const handleColor = (target: Q2Btn) => {\n if (!target.intent && ['primary', 'secondary'].includes(target.color)) {\n target.intent = `workflow-${target.color}` as HTMLQ2BtnElement['intent'];\n target.color = undefined;\n }\n};\n\n/**\n * Gets all translated text content from an element, including shadow DOM content\n *\n * @param {Element} element - The element to extract text from\n * @param {Object} options - Configuration options\n * @param {boolean} [options.trim=true] - Whether to trim whitespace\n * @param {boolean} [options.normalizeWhitespace=false] - Whether to normalize whitespace\n * @param {boolean} [options.skipComponentReady=false] - Skip waiting for components (for test environments)\n * @return {Promise<string>} All translated text content in DOM order\n */\nexport const getAllText = async (element, options = {}) => {\n if (!element) return '';\n\n const opts = {\n trim: true,\n normalizeWhitespace: false,\n skipComponentReady: false,\n ...options,\n };\n\n const nodesToSkip = new Set(['STYLE', 'SCRIPT', 'NOSCRIPT', 'TEMPLATE', '#comment']);\n const processedNodes = new WeakSet();\n let result = '';\n\n async function processNode(node) {\n if (processedNodes.has(node) || nodesToSkip.has(node.nodeName)) return;\n\n processedNodes.add(node);\n\n // Handle text nodes\n if (node.nodeType === Node.TEXT_NODE) {\n const text = opts.trim ? node.textContent.trim() : node.textContent;\n\n if (text) {\n // Add space between adjacent text nodes if needed\n if (result && !result.endsWith(' ') && !text.startsWith(' ')) {\n result += ' ';\n }\n\n // Translate the text\n result += opts.skipComponentReady ? window.TectonElements?.loc(text) : loc(text);\n }\n return;\n }\n\n // Handle element nodes\n if (node.nodeType === Node.ELEMENT_NODE) {\n // Wait for Stencil component if needed\n const isStencilComponent = node.nodeName.startsWith('Q2-') && typeof node.componentOnReady === 'function';\n\n if (isStencilComponent && !opts.skipComponentReady) {\n await node.componentOnReady();\n }\n\n // Process children in light DOM\n for (const child of node.childNodes) {\n await processNode(child);\n }\n\n // Process shadow DOM if present\n if (node.shadowRoot) {\n for (const shadowChild of node.shadowRoot.childNodes) {\n await processNode(shadowChild);\n }\n }\n\n // Handle slot elements with assigned nodes\n if (node.nodeName === 'SLOT' && typeof node.assignedNodes === 'function') {\n const assignedNodes = node.assignedNodes();\n\n if (assignedNodes.length > 0) {\n for (const assigned of assignedNodes) {\n if (!processedNodes.has(assigned)) {\n await processNode(assigned);\n }\n }\n } else {\n // Process slot fallback content\n for (const fallback of node.childNodes) {\n if (!processedNodes.has(fallback)) {\n await processNode(fallback);\n }\n }\n }\n }\n }\n }\n\n await processNode(element);\n\n // Apply final formatting\n if (opts.trim) {\n result = result.trim();\n }\n\n if (opts.normalizeWhitespace) {\n result = result.replace(/\\s+/g, ' ');\n }\n\n return result;\n};\n"],"version":3}
1
+ {"file":"index2.js","mappings":"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","names":[],"sources":["src/utils/index.tsx"],"sourcesContent":["import { h } from '@stencil/core';\nimport { Q2Btn } from 'src/components/q2-btn/q2-btn';\nimport { Q2Calendar } from 'src/components/q2-calendar/q2-calendar';\nimport { Q2Carousel } from 'src/components/q2-carousel/q2-carousel';\nimport { Q2Checkbox } from 'src/components/q2-checkbox/q2-checkbox';\nimport { Q2CheckboxGroup } from 'src/components/q2-checkbox-group/q2-checkbox-group';\nimport { Q2RadioGroup } from 'src/components/q2-radio-group/q2-radio-group';\nimport { Q2Dropdown } from 'src/components/q2-dropdown/q2-dropdown';\nimport { Q2DropdownItem } from 'src/components/q2-dropdown-item/q2-dropdown-item';\nimport { Q2EditableField } from 'src/components/q2-editable-field/q2-editable-field';\nimport { Q2Input } from 'src/components/q2-input/q2-input';\nimport { Q2Loading } from 'src/components/q2-loading/q2-loading';\nimport { Q2Radio } from 'src/components/q2-radio/q2-radio';\nimport { Q2Select } from 'src/components/q2-select/q2-select';\nimport { FormFieldTypes } from 'src/util';\nimport type { Q2Popover } from '@/components/q2-popover/q2-popover';\n\nexport const debounce = <F extends (...args: Parameters<F>) => ReturnType<F>>(fn: F, delay: number = 300) => {\n let timeout: ReturnType<typeof setTimeout>;\n return function (...args: Parameters<F>) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n fn(...args);\n }, delay);\n };\n};\n\nexport function isAndroid(): boolean {\n return /Android/i.test(navigator.userAgent);\n}\n\nexport function isIOS(): boolean {\n return /iPad|iPhone|iPod/.test(navigator.userAgent);\n}\n\nexport function isMobile(): boolean {\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|Mobile|IEMobile|Windows Phone|Opera Mini/i.test(\n navigator.userAgent\n );\n}\n\nexport function getComposedParent(element: HTMLElement): HTMLElement | null {\n if (element.parentElement) return element.parentElement;\n\n const root = element.getRootNode() as ShadowRoot;\n if (root.host) return root.host as HTMLElement;\n\n return null;\n}\n\nexport function findComposedAncestor(\n element: HTMLElement,\n predicate: (element: HTMLElement) => boolean,\n options: { includeSelf?: boolean; stopAfter?: HTMLElement[] } = {}\n): HTMLElement | null {\n const { includeSelf = false, stopAfter = [] } = options;\n let current = includeSelf ? element : getComposedParent(element);\n\n while (current) {\n if (predicate(current)) return current;\n if (stopAfter.includes(current)) break;\n current = getComposedParent(current);\n }\n\n return null;\n}\n\nexport function isInFixedPositionContext(element: HTMLElement): boolean {\n return !!findComposedAncestor(\n element,\n current => {\n return current.style.position === 'fixed' || getComputedStyle(current).position === 'fixed';\n },\n { includeSelf: true }\n );\n}\n\nexport function isInScrollableContainer(element: HTMLElement) {\n const scrollableContainer = findComposedAncestor(\n element,\n current => {\n const style = window.getComputedStyle(current);\n const hasScrollableOverflow =\n style.overflow === 'scroll' ||\n style.overflow === 'auto' ||\n style.overflowX === 'scroll' ||\n style.overflowX === 'auto' ||\n style.overflowY === 'scroll' ||\n style.overflowY === 'auto';\n\n const hasOverflowingContent =\n current.scrollHeight > current.clientHeight || current.scrollWidth > current.clientWidth;\n\n return hasScrollableOverflow && hasOverflowingContent;\n },\n { stopAfter: [document.body, document.documentElement] }\n );\n\n if (scrollableContainer) return true;\n\n // Check if the iframe itself is the scrolling container\n const isIframe = window !== window.top;\n if (isIframe && document.documentElement.scrollHeight > window.innerHeight) {\n return true;\n }\n\n return false;\n}\n\nexport function isHostLosingFocus(event: FocusEvent, hostElement: HTMLElement) {\n const type = event.type;\n const focusInTypes = ['focusin', 'focus'];\n const isFocusIn = focusInTypes.includes(type);\n\n // on focusin: `target` is element losing focus, `relatedTarget` is element gaining focus\n // on focusout: `target` is element gaining focus, `relatedTarget` is element losing focus\n const elementGainingFocus = isFocusIn ? event.target : event.relatedTarget;\n\n const isElementNestedInHostElement = (element: HTMLElement) => {\n if (element === hostElement) return true;\n if (element.parentElement) {\n return isElementNestedInHostElement(element.parentElement);\n }\n return false;\n };\n\n if (!(elementGainingFocus instanceof HTMLElement)) return true;\n return !isElementNestedInHostElement(elementGainingFocus);\n}\n\nexport function isRelatedTargetWithinHost(event: FocusEvent, element: HTMLElement) {\n return event.relatedTarget !== element && !element.contains(event.relatedTarget as Node);\n}\n\nexport function isEventFromElement(event: Event, element: HTMLElement): boolean {\n return event.composedPath?.()[0] === element;\n}\n\nexport function overrideFocus(hostElement: HTMLElement) {\n hostElement.focus = () => hostElement?.dispatchEvent(new FocusEvent('focus', { bubbles: false }));\n}\n\nexport function isFirefox() {\n const userAgent = navigator.userAgent.toLowerCase();\n return userAgent.includes('firefox');\n}\n\nexport function isTouchDevice() {\n return 'ontouchstart' in window || navigator.maxTouchPoints > 0;\n}\n\nexport function isSafari() {\n const userAgent = navigator.userAgent.toLowerCase();\n return userAgent.includes('safari') && !userAgent.includes('chrome');\n}\n\n/**\n * Returns the value of a prop if it is defined and included in the `validValues`\n * array. This is used primarily to prevent Vue wrappers from setting aria props\n * to \"Symbol()\" when the prop is not set.\n */\nexport function getAriaValueFromProp(prop: string, validValues?: string[]) {\n if (prop === undefined) return prop;\n if (!validValues) return prop !== 'Symbol()' ? prop : undefined;\n return validValues.includes(prop) || prop === '' ? prop : undefined;\n}\n\nlet guid: number = 1000;\nexport function createGuid(): number {\n return guid++;\n}\n\nexport function nextPaint(fn: (value?: unknown) => void) {\n requestAnimationFrame(() => {\n requestAnimationFrame(fn);\n });\n}\n\nexport function isVisible(element: HTMLElement) {\n return element.offsetWidth > 0 || element.offsetHeight > 0 || element.getClientRects().length > 0;\n}\n\nexport function waitForNextPaint() {\n return new Promise(resolve => nextPaint(resolve));\n}\n\nexport function capitalize(value: string) {\n return `${value.charAt(0).toUpperCase()}${value.slice(1)}`;\n}\n\nexport function pick(props: string[]): (obj: object) => object {\n return obj => {\n return props.reduce((memo, prop) => {\n return {\n ...memo,\n [prop]: obj[prop],\n };\n }, {});\n };\n}\n\nexport function loc(key: string, subs?: Record<string, any> | string[]) {\n if (!key) return '';\n if (window.Tecton?.noStrings === true) {\n return key;\n }\n return window?.TectonElements?.loc(key, subs) ?? key;\n}\n\n/**\n * Returns browser name, version, platform, and context (browser vs app WebView).\n * Desktop Chrome: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36\n * Desktop Safari: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.4 Safari/605.1.15\n * Desktop Edge: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36 Edg/146.0.0.0\n * Desktop Firefox: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:149.0) Gecko/20100101 Firefox/149.0\n * Mobile app Android: Mozilla/5.0 (Linux; Android 16; sdk_gphone64_arm64 Build/BE2A.250530.026.D1; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/146.0.7680.177 Mobile Safari/537.36\n * Mobile browser Android: Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Mobile Safari/537.36\n * Mobile app iOS: Mozilla/5.0 (iPhone; CPU iPhone OS 18_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148\n * Mobile browser iOS: Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.0.1 Mobile/15E148 Safari/604.1 -> 18.7 is the OS version, 26.0.1 is the Safari version\n */\nexport function getBrowserInfo() {\n const userAgent = navigator.userAgent;\n let name = 'Unknown';\n let version = 'Unknown';\n\n // Detect platform\n const isMobileDevice = /Android|iPhone|iPad|iPod/i.test(userAgent) || userAgent.includes(' iOS/');\n const platform = isMobileDevice ? 'mobile' : 'desktop';\n\n // Detect context — app (WebView) vs standalone browser\n let context = 'browser';\n if (isMobileDevice) {\n const isAndroidWebView = userAgent.includes('; wv)');\n const isIOSDevice = /iPhone|iPad|iPod/.test(userAgent) || userAgent.includes(' iOS/');\n const isIOSWebView = isIOSDevice && !userAgent.includes('Safari');\n if (isAndroidWebView || isIOSWebView) {\n context = 'app';\n }\n }\n\n // Detect browser name and version — check mobile-specific patterns first\n if (userAgent.includes(' iPhone OS') && !userAgent.includes('Safari')) {\n // iOS app WebView — no \"Safari\" token in userAgent\n name = 'Safari';\n version = userAgent.split(' iPhone OS')[1].trim().split(/\\s/)[0].replace(/_/g, '.');\n } else if (userAgent.includes(' iOS/')) {\n // Alternate iOS app userAgent format (e.g. ngam-ios/26.5.0.107 arm64 iOS/26.4 CFNetwork/1.0 Darwin/25.4.0)\n name = 'Safari';\n version = userAgent.split(' iOS/')[1].split(/\\s/)[0];\n } else if (userAgent.includes('Edg')) {\n name = 'Edge';\n const match = userAgent.match(/Edg\\/(\\d+(?:\\.\\d+)+)/);\n if (match && match[1]) {\n version = match[1];\n }\n } else if (userAgent.includes('Firefox')) {\n name = 'Firefox';\n const match = userAgent.match(/Firefox\\/(\\d+\\.\\d+)/);\n if (match && match[1]) {\n version = match[1];\n }\n } else if (userAgent.includes('Chrome')) {\n name = 'Chrome';\n const match = userAgent.match(/Chrome\\/(\\d+\\.\\d+\\.\\d+\\.\\d+)/);\n if (match && match[1]) {\n version = match[1];\n }\n } else if (userAgent.includes('Safari')) {\n name = 'Safari';\n const match = userAgent.match(/Version\\/(\\d+(?:\\.\\d+)+)/);\n if (match && match[1]) {\n version = match[1];\n }\n }\n\n return { name, version, platform, context };\n}\n\nexport function renderLabel(target: FormFieldTypes | Q2RadioGroup | Q2CheckboxGroup | Q2Select | Q2Calendar) {\n const { label, hideLabel, optional, readonly } = target;\n const labelClasses: string[] = ['input-label'];\n let helpText = '';\n\n let shouldHideLabel = hideLabel;\n if (!shouldHideLabel) {\n const labelSlotElements = target.hostElement.querySelectorAll<HTMLSlotElement>('[slot=\"label\"]');\n const hasSlotContent = labelSlotElements.length > 0;\n const hasLabel = !!label;\n\n shouldHideLabel = hasLabel || hasSlotContent ? false : true;\n }\n\n if (shouldHideLabel) labelClasses.push('sr');\n if (optional) {\n helpText = <span class=\"optional-tag\">{loc('tecton.element.input.optional')}</span>;\n }\n if (readonly) {\n helpText = <span class=\"optional-tag\">{loc('tecton.element.input.readonly')}</span>;\n labelClasses.push('readonly-field');\n }\n return (\n <label\n htmlFor={target.inputId}\n class={labelClasses.join(' ')}\n >\n <slot name=\"label\">\n {label ? loc(label) : undefined}\n {helpText}\n </slot>\n </label>\n );\n}\n\nexport function hasSlotContent(target: HTMLElement, slotName: string) {\n return target.querySelector(`[slot=\"${slotName}\"]`) !== null;\n}\n\nexport function handleAriaLabel(\n target:\n | Q2Input\n | Q2Select\n | Q2Radio\n | Q2Checkbox\n | Q2EditableField\n | Q2Dropdown\n | Q2DropdownItem\n | Q2Loading\n | Q2Carousel\n | Q2Calendar\n | Q2Btn\n) {\n const { ariaLabel } = target;\n if (!ariaLabel) return;\n\n // If empty ariaLabel prop is set to primitive symbol by framework wrapper, set ariaLabel to undefined and return\n const FW_WRAPPERS_EMPTY_PROP = Symbol().toString();\n if (ariaLabel === FW_WRAPPERS_EMPTY_PROP) {\n target.ariaLabel = undefined;\n return;\n }\n\n // If ariaLabel is set, set hideLabel to true and set label to ariaLabel\n if ('hideLabel' in target) target.hideLabel = true;\n target.label = loc(ariaLabel);\n target.ariaLabel = undefined;\n}\n\n/**\n * Handles when a prop has been renamed on a component without introducing a breaking change.\n */\nexport function handleRenamedProp(\n target: Q2Btn | Q2Calendar | Q2Dropdown | Q2Popover,\n oldProp: string,\n newProp: string,\n removeOldProp?: boolean\n) {\n if (typeof target[oldProp] === 'undefined') return;\n\n // If old prop has value, aka set in component, call handleDeprecationWarning()\n if (target[oldProp]) {\n handleDeprecationWarning(target, oldProp, 'prop');\n }\n\n target[newProp] = target[oldProp];\n\n if (removeOldProp) {\n delete target[oldProp];\n }\n}\n\nexport function handleDeprecationWarning(\n target: Q2Btn | Q2Calendar | Q2Dropdown | Q2Popover,\n deprecatedItemName: string,\n deprecatedItemType: 'function' | 'prop' | 'method' | 'event'\n) {\n if (window.location.hostname === 'localhost' || window.location.host === 'stack.q2developer.com') {\n if (target[deprecatedItemName] === 'undefined') return;\n\n const componentName =\n target.constructor?.name?.toLowerCase()?.slice(2) || target.hostElement?.tagName?.toLowerCase().slice(3);\n switch (deprecatedItemType) {\n case 'prop':\n if (deprecatedItemName === 'size' && componentName === 'btn') {\n console.warn(\n `The property of size in q2-btn should not be typeof number, or typeof string containing a number. This functionality will be deprecated in an upcoming release. Instead, please use the value 'undefined', or typeof string with any of the following values: \"small\" / \"medium\" / \"large\" `\n );\n } else {\n console.warn(\n `The property ${deprecatedItemName} in q2-${componentName} has been marked for deprecation and will be removed in an upcoming major release.`\n );\n }\n break;\n\n case 'function':\n console.warn(\n `The function ${deprecatedItemName} in ${componentName} has been marked for deprecation and will be removed in an upcoming major release.`\n );\n break;\n\n case 'method':\n console.warn(\n `The method ${deprecatedItemName} in ${componentName} has been marked for deprecation and will be removed in an upcoming major release.`\n );\n break;\n\n case 'event':\n console.warn(\n `The event ${deprecatedItemName} in ${componentName} has been marked for deprecation and will be removed in an upcoming major release.`\n );\n break;\n\n default:\n console.error(\n `handleDeprecationWarning --> No type found for desired deprecation: ${deprecatedItemName} in q2-${componentName}: deprecatedItemType = ${deprecatedItemName}`\n );\n }\n }\n}\n\nexport function renderMessages(target: FormFieldTypes) {\n const type = target.hasError ? 'danger' : 'info';\n\n return (\n <div class=\"messages-container\">\n <q2-message\n appearance=\"minimal\"\n description\n type={type}\n test-id=\"message\"\n >\n <ul id={target.inputDescribedBy}>\n {target.messages.map(message => (\n <li test-id=\"messageListItem\">{loc(message)}</li>\n ))}\n </ul>\n </q2-message>\n </div>\n );\n}\n\nexport function setMessageHeight(target: FormFieldTypes) {\n const messageContainer = (target.hostElement.shadowRoot as ShadowRoot).querySelector<HTMLDivElement>(\n '.messages-container'\n );\n const q2Message = messageContainer.querySelector('q2-message');\n nextPaint(() => {\n const height = target.showMessages && target.hasFocus ? q2Message.getBoundingClientRect().height : 0;\n\n if (messageContainer.style.getPropertyValue('height') === `${height}px`) return;\n\n if (height === 0) {\n q2Message.classList.add('invisible');\n messageContainer.style.removeProperty('height');\n } else {\n q2Message.classList.remove('invisible');\n messageContainer.style.setProperty('height', `${height}px`);\n }\n });\n}\n\nexport const resizeIframe = () => {\n return window.TectonElements?.resizeIframe?.();\n};\n\n// Handling color attribute (deprecated)\nexport const handleColor = (target: Q2Btn) => {\n if (!target.intent && ['primary', 'secondary'].includes(target.color)) {\n target.intent = `workflow-${target.color}` as HTMLQ2BtnElement['intent'];\n target.color = undefined;\n }\n};\n\n/**\n * Gets all translated text content from an element, including shadow DOM content\n *\n * @param {Element} element - The element to extract text from\n * @param {Object} options - Configuration options\n * @param {boolean} [options.trim=true] - Whether to trim whitespace\n * @param {boolean} [options.normalizeWhitespace=false] - Whether to normalize whitespace\n * @param {boolean} [options.skipComponentReady=false] - Skip waiting for components (for test environments)\n * @return {Promise<string>} All translated text content in DOM order\n */\nexport const getAllText = async (element, options = {}) => {\n if (!element) return '';\n\n const opts = {\n trim: true,\n normalizeWhitespace: false,\n skipComponentReady: false,\n ...options,\n };\n\n const nodesToSkip = new Set(['STYLE', 'SCRIPT', 'NOSCRIPT', 'TEMPLATE', '#comment']);\n const processedNodes = new WeakSet();\n let result = '';\n\n async function processNode(node) {\n if (processedNodes.has(node) || nodesToSkip.has(node.nodeName)) return;\n\n processedNodes.add(node);\n\n // Handle text nodes\n if (node.nodeType === Node.TEXT_NODE) {\n const text = opts.trim ? node.textContent.trim() : node.textContent;\n\n if (text) {\n // Add space between adjacent text nodes if needed\n if (result && !result.endsWith(' ') && !text.startsWith(' ')) {\n result += ' ';\n }\n\n // Translate the text\n result += opts.skipComponentReady ? window.TectonElements?.loc(text) : loc(text);\n }\n return;\n }\n\n // Handle element nodes\n if (node.nodeType === Node.ELEMENT_NODE) {\n // Wait for Stencil component if needed\n const isStencilComponent = node.nodeName.startsWith('Q2-') && typeof node.componentOnReady === 'function';\n\n if (isStencilComponent && !opts.skipComponentReady) {\n await node.componentOnReady();\n }\n\n // Process children in light DOM\n for (const child of node.childNodes) {\n await processNode(child);\n }\n\n // Process shadow DOM if present\n if (node.shadowRoot) {\n for (const shadowChild of node.shadowRoot.childNodes) {\n await processNode(shadowChild);\n }\n }\n\n // Handle slot elements with assigned nodes\n if (node.nodeName === 'SLOT' && typeof node.assignedNodes === 'function') {\n const assignedNodes = node.assignedNodes();\n\n if (assignedNodes.length > 0) {\n for (const assigned of assignedNodes) {\n if (!processedNodes.has(assigned)) {\n await processNode(assigned);\n }\n }\n } else {\n // Process slot fallback content\n for (const fallback of node.childNodes) {\n if (!processedNodes.has(fallback)) {\n await processNode(fallback);\n }\n }\n }\n }\n }\n }\n\n await processNode(element);\n\n // Apply final formatting\n if (opts.trim) {\n result = result.trim();\n }\n\n if (opts.normalizeWhitespace) {\n result = result.replace(/\\s+/g, ' ');\n }\n\n return result;\n};\n"],"version":3}
@@ -4,7 +4,7 @@ import { m as mirrorEmit } from './mirror-emit.js';
4
4
  import { d as defineCustomElement$3 } from './q2-avatar2.js';
5
5
  import { d as defineCustomElement$2 } from './q2-icon2.js';
6
6
 
7
- const q2CardCss = "*{box-sizing:border-box}*:active{outline:none}*:focus-visible{outline:none;box-shadow:var(--const-double-focus-ring, 0 0 0 2px #ffffff, 0 0 0 4px #0066cc)}:host{box-shadow:none !important}::-moz-focus-inner{border:none}input,textarea,button{font-family:inherit;font-size:inherit;font-stretch:inherit}:host(.sr),:host(.sr) button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.sr,.sr button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.hidden{display:none}:host([hidden]){display:none}.invisible{visibility:hidden}:host{display:block}.container{--comp-avatar-size:var(--tct-card-avatar-size, var(--t-card-avatar-size, 44px));--comp-bar-width:var(--tct-card-bar-width, var(--t-card-bar-width, var(--app-scale-2x, 10px)));--comp-card-padding:var(--tct-card-padding, var(--t-card-padding, var(--app-scale-4x, 20px)));position:relative;width:100%;text-align:start;height:var(--tct-card-height, 100%);min-height:var(--tct-card-min-height, auto);display:grid;gap:var(--tct-card-gap, var(--t-card-gap, var(--app-scale-3x, 15px)));margin:0;color:var(--tct-card-font-color, var(--tct-card-color, var(--t-card-color, var(--t-text, #4d4d4d))));backdrop-filter:var(--tct-card-backdrop-filter);background:var(--tct-card-background, var(--t-card-background, var(--t-base, #ffffff)));border-width:var(--tct-card-border-width, var(--t-card-border-width, 0px));border-color:var(--tct-card-border-color, var(--t-card-border-color, transparent));border-style:var(--tct-card-border-style, solid);border-radius:var(--tct-card-border-radius, var(--t-card-border-radius, var(--app-border-radius-1, 4px)));backdrop-filter:var(--tct-card-backdrop-filter, none);padding:var(--comp-card-padding);text-decoration:none;transition:box-shadow var(--tct-tween-1, var(--app-tween-1, 0.2s ease));overflow:var(--tct-card-overflow, auto);max-height:var(--tct-card-max-height, none);box-shadow:var(--comp-card-shadow), 0 0 0 rgba(0, 0, 0, 0)}.container.is-small{--comp-avatar-size:var(--tct-card-avatar-size, var(--t-card-avatar-size, 26px))}.container.has-avatar{grid-template-columns:var(--comp-avatar-size) 1fr;--tct-avatar-width:var(--comp-avatar-size);--tct-avatar-height:var(--comp-avatar-size);--tct-icon-size:var(--comp-avatar-size)}.container.elevation-1{--comp-card-shadow:var(--tct-card-elevation-1-box-shadow, var(--app-shadow-1, 0px 0px 2px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.14)))}.container.elevation-2{--comp-card-shadow:var(--tct-card-elevation-2-box-shadow, var(--app-shadow-2, 0px 0px 2px rgba(0, 0, 0, 0.12), 0px 4px 8px rgba(0, 0, 0, 0.14)))}.container.elevation-3{--comp-card-shadow:var(--tct-card-elevation-3-box-shadow, var(--app-shadow-3, 0px 0px 2px rgba(0, 0, 0, 0.12), 0px 8px 16px rgba(0, 0, 0, 0.14)))}.container.elevation-4{--comp-card-shadow:var(--tct-card-elevation-4-box-shadow, var(--app-shadow-4, 0px 0px 8px rgba(0, 0, 0, 0.12), 0px 14px 28px rgba(0, 0, 0, 0.14)))}.container.elevation-5{--comp-card-shadow:var(--tct-card-elevation-5-box-shadow, var(--app-shadow-5, 0px 0px 8px rgba(0, 0, 0, 0.12), 0px 32px 64px rgba(0, 0, 0, 0.14)))}.container.clickable{cursor:pointer}.container.clickable:hover.elevation-1{--comp-card-shadow:var(--tct-card-elevation-1-hover-box-shadow, var(--app-shadow-2, 0px 0px 2px rgba(0, 0, 0, 0.12), 0px 4px 8px rgba(0, 0, 0, 0.14)))}.container.clickable:hover.elevation-2{--comp-card-shadow:var(--tct-card-elevation-2-hover-box-shadow, var(--app-shadow-3, 0px 0px 2px rgba(0, 0, 0, 0.12), 0px 8px 16px rgba(0, 0, 0, 0.14)))}.container.clickable:hover.elevation-3{--comp-card-shadow:var(--tct-card-elevation-3-hover-box-shadow, var(--app-shadow-4, 0px 0px 8px rgba(0, 0, 0, 0.12), 0px 14px 28px rgba(0, 0, 0, 0.14)))}.container.clickable:hover.elevation-4{--comp-card-shadow:var(--tct-card-elevation-4-hover-box-shadow, var(--app-shadow-5, 0px 0px 8px rgba(0, 0, 0, 0.12), 0px 32px 64px rgba(0, 0, 0, 0.14)))}.container.clickable:hover.elevation-5{--comp-card-shadow:var(--tct-card-elevation-5-hover-box-shadow, var(--app-shadow-5, 0px 0px 8px rgba(0, 0, 0, 0.12), 0px 32px 64px rgba(0, 0, 0, 0.14)))}.container.clickable:active.elevation-1{--comp-card-shadow:var(--tct-card-elevation-1-active-box-shadow, var(--app-shadow-1, 0px 0px 2px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.14)))}.container.clickable:active.elevation-2{--comp-card-shadow:var(--tct-card-elevation-2-active-box-shadow, var(--app-shadow-1, 0px 0px 2px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.14)))}.container.clickable:active.elevation-3{--comp-card-shadow:var(--tct-card-elevation-3-active-box-shadow, var(--app-shadow-2, 0px 0px 2px rgba(0, 0, 0, 0.12), 0px 4px 8px rgba(0, 0, 0, 0.14)))}.container.clickable:active.elevation-4{--comp-card-shadow:var(--tct-card-elevation-4-active-box-shadow, var(--app-shadow-3, 0px 0px 2px rgba(0, 0, 0, 0.12), 0px 8px 16px rgba(0, 0, 0, 0.14)))}.container.clickable:active.elevation-5{--comp-card-shadow:var(--tct-card-elevation-5-active-box-shadow, var(--app-shadow-4, 0px 0px 8px rgba(0, 0, 0, 0.12), 0px 14px 28px rgba(0, 0, 0, 0.14)))}.container.clickable:focus-visible{--comp-focus-visible-shadow:var(--comp-card-shadow), var(--const-double-focus-ring);box-shadow:var(--tct-card-focus-visible-box-shadow, var(--comp-focus-visible-shadow))}.container.is-static{cursor:auto;background:var(--tct-card-static-background, var(--tct-card-background, none));color:var(--tct-card-static-font-color, var(--tct-card-color, var(--t-text, #4d4d4d)));backdrop-filter:none;border-radius:0;border:0;text-decoration:initial;padding:0}:host([bar]) .container.is-static{padding-left:var(--comp-card-padding)}.container.is-static,.container.is-static:hover,.container.is-static:active{box-shadow:none}.content{overflow:hidden;display:grid;gap:var(--tct-card-content-gap, var(--t-card-content-gap, var(--app-scale-1x, 5px)));align-content:start}h3,p{margin:0;padding:0;line-height:var(--tct-card-font-height, var(--t-card-font-height, 20px))}h3{font-weight:var(--tct-card-font-weight, var(--t-card-font-weight, 600));font-size:var(--tct-card-font-size, var(--t-card-font-size, 17px));text-overflow:ellipsis;overflow:hidden;display:-webkit-box;-webkit-line-clamp:var(--tct-card-title-line-count, 1);-webkit-box-orient:vertical}p{text-overflow:ellipsis;overflow:hidden;display:-webkit-box;-webkit-line-clamp:var(--tct-card-description-line-count, 2);-webkit-box-orient:vertical;font-size:var(--tct-card-description-font-size, inherit)}.bar{position:absolute;inset:0 auto auto 0;width:var(--comp-bar-width);background:var(--comp-bar-color);height:100%}.bar.color-primary{--comp-bar-color:var(--tct-card-bar-color-primary, var(--t-primary, #5446a4))}.bar.color-secondary{--comp-bar-color:var(--tct-card-bar-color-secondary, var(--t-secondary, #b6b3cc))}.bar.color-tertiary{--comp-bar-color:var(--tct-card-bar-color-tertiary, var(--t-tertiary, #ebe8fc))}.bar.color-info{--comp-bar-color:var(--tct-card-bar-color-info, var(--const-stoplight-info, #0079c1))}.bar.color-success{--comp-bar-color:var(--tct-card-bar-color-success, var(--const-stoplight-success, #0e8a00))}.bar.color-warning{--comp-bar-color:var(--tct-card-bar-color-warning, var(--const-stoplight-warning, #c35500))}.bar.color-alert{--comp-bar-color:var(--tct-card-bar-color-alert, var(--const-stoplight-alert, #c35500))}.bar.color-accent-1{--comp-bar-color:var(--tct-card-bar-color-accent-1, var(--t-accent-1, #e05252))}.bar.color-accent-2{--comp-bar-color:var(--tct-card-bar-color-accent-2, var(--t-accent-2, #e09952))}.bar.color-accent-3{--comp-bar-color:var(--tct-card-bar-color-accent-3, var(--t-accent-3, #e0e052))}.bar.color-accent-4{--comp-bar-color:var(--tct-card-bar-color-accent-4, var(--t-accent-4, #99e052))}.bar.color-accent-5{--comp-bar-color:var(--tct-card-bar-color-accent-5, var(--t-accent-5, #52e052))}.bar.color-accent-6{--comp-bar-color:var(--tct-card-bar-color-accent-6, var(--t-accent-6, #52e099))}.bar.color-accent-7{--comp-bar-color:var(--tct-card-bar-color-accent-7, var(--t-accent-7, #52e0e0))}.bar.color-accent-8{--comp-bar-color:var(--tct-card-bar-color-accent-8, var(--t-accent-8, #5299e0))}.bar.color-accent-9{--comp-bar-color:var(--tct-card-bar-color-accent-9, var(--t-accent-9, #5252e0))}.bar.color-accent-10{--comp-bar-color:var(--tct-card-bar-color-accent-10, var(--t-accent-10, #9952e0))}.bar.color-accent-11{--comp-bar-color:var(--tct-card-bar-color-accent-11, var(--t-accent-11, #e052e0))}.bar.color-accent-12{--comp-bar-color:var(--tct-card-bar-color-accent-12, var(--t-accent-12, #e05299))}";
7
+ const q2CardCss = "*{box-sizing:border-box}*:active{outline:none}*:focus-visible{outline:none;box-shadow:var(--const-double-focus-ring, 0 0 0 2px #ffffff, 0 0 0 4px #0066cc)}:host{box-shadow:none !important}::-moz-focus-inner{border:none}input,textarea,button{font-family:inherit;font-size:inherit;font-stretch:inherit}:host(.sr),:host(.sr) button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.sr,.sr button{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.hidden{display:none}:host([hidden]){display:none}.invisible{visibility:hidden}:host{display:block}.container{--comp-avatar-size:var(--tct-card-avatar-size, var(--t-card-avatar-size, 44px));--comp-bar-width:var(--tct-card-bar-width, var(--t-card-bar-width, var(--app-scale-2x, 10px)));--comp-card-padding:var(--tct-card-padding, var(--t-card-padding, var(--app-scale-4x, 20px)));position:relative;width:100%;text-align:start;height:var(--tct-card-height, 100%);min-height:var(--tct-card-min-height, auto);display:grid;gap:var(--tct-card-gap, var(--t-card-gap, var(--app-scale-3x, 15px)));margin:0;color:var(--tct-card-font-color, var(--tct-card-color, var(--t-card-color, var(--t-text, #4d4d4d))));backdrop-filter:var(--tct-card-backdrop-filter);background:var(--tct-card-background, var(--t-card-background, var(--t-base, #ffffff)));border-width:var(--tct-card-border-width, var(--t-card-border-width, 0px));border-color:var(--tct-card-border-color, var(--t-card-border-color, transparent));border-style:var(--tct-card-border-style, solid);border-radius:var(--tct-card-border-radius, var(--t-card-border-radius, var(--app-border-radius-1, 4px)));backdrop-filter:var(--tct-card-backdrop-filter, none);padding:var(--comp-card-padding);text-decoration:none;transition:box-shadow var(--tct-tween-1, var(--app-tween-1, 0.2s ease));overflow:var(--tct-card-overflow, auto);max-height:var(--tct-card-max-height, none);box-shadow:var(--comp-card-shadow), 0 0 0 rgba(0, 0, 0, 0)}.container.is-small{--comp-avatar-size:var(--tct-card-avatar-size, var(--t-card-avatar-size, 26px))}.container.has-avatar{grid-template-columns:var(--comp-avatar-size) 1fr;--tct-avatar-width:var(--comp-avatar-size);--tct-avatar-height:var(--comp-avatar-size);--tct-icon-size:var(--comp-avatar-size)}.container.elevation-1{--comp-card-shadow:var(--tct-card-elevation-1-box-shadow, var(--app-shadow-1, 0px 0px 2px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.14)))}.container.elevation-2{--comp-card-shadow:var(--tct-card-elevation-2-box-shadow, var(--app-shadow-2, 0px 0px 2px rgba(0, 0, 0, 0.12), 0px 4px 8px rgba(0, 0, 0, 0.14)))}.container.elevation-3{--comp-card-shadow:var(--tct-card-elevation-3-box-shadow, var(--app-shadow-3, 0px 0px 2px rgba(0, 0, 0, 0.12), 0px 8px 16px rgba(0, 0, 0, 0.14)))}.container.elevation-4{--comp-card-shadow:var(--tct-card-elevation-4-box-shadow, var(--app-shadow-4, 0px 0px 8px rgba(0, 0, 0, 0.12), 0px 14px 28px rgba(0, 0, 0, 0.14)))}.container.elevation-5{--comp-card-shadow:var(--tct-card-elevation-5-box-shadow, var(--app-shadow-5, 0px 0px 8px rgba(0, 0, 0, 0.12), 0px 32px 64px rgba(0, 0, 0, 0.14)))}.container.clickable{cursor:pointer}.container.clickable:hover.elevation-1{--comp-card-shadow:var(--tct-card-elevation-1-hover-box-shadow, var(--app-shadow-2, 0px 0px 2px rgba(0, 0, 0, 0.12), 0px 4px 8px rgba(0, 0, 0, 0.14)))}.container.clickable:hover.elevation-2{--comp-card-shadow:var(--tct-card-elevation-2-hover-box-shadow, var(--app-shadow-3, 0px 0px 2px rgba(0, 0, 0, 0.12), 0px 8px 16px rgba(0, 0, 0, 0.14)))}.container.clickable:hover.elevation-3{--comp-card-shadow:var(--tct-card-elevation-3-hover-box-shadow, var(--app-shadow-4, 0px 0px 8px rgba(0, 0, 0, 0.12), 0px 14px 28px rgba(0, 0, 0, 0.14)))}.container.clickable:hover.elevation-4{--comp-card-shadow:var(--tct-card-elevation-4-hover-box-shadow, var(--app-shadow-5, 0px 0px 8px rgba(0, 0, 0, 0.12), 0px 32px 64px rgba(0, 0, 0, 0.14)))}.container.clickable:hover.elevation-5{--comp-card-shadow:var(--tct-card-elevation-5-hover-box-shadow, var(--app-shadow-5, 0px 0px 8px rgba(0, 0, 0, 0.12), 0px 32px 64px rgba(0, 0, 0, 0.14)))}.container.clickable:active.elevation-1{--comp-card-shadow:var(--tct-card-elevation-1-active-box-shadow, var(--app-shadow-1, 0px 0px 2px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.14)))}.container.clickable:active.elevation-2{--comp-card-shadow:var(--tct-card-elevation-2-active-box-shadow, var(--app-shadow-1, 0px 0px 2px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.14)))}.container.clickable:active.elevation-3{--comp-card-shadow:var(--tct-card-elevation-3-active-box-shadow, var(--app-shadow-2, 0px 0px 2px rgba(0, 0, 0, 0.12), 0px 4px 8px rgba(0, 0, 0, 0.14)))}.container.clickable:active.elevation-4{--comp-card-shadow:var(--tct-card-elevation-4-active-box-shadow, var(--app-shadow-3, 0px 0px 2px rgba(0, 0, 0, 0.12), 0px 8px 16px rgba(0, 0, 0, 0.14)))}.container.clickable:active.elevation-5{--comp-card-shadow:var(--tct-card-elevation-5-active-box-shadow, var(--app-shadow-4, 0px 0px 8px rgba(0, 0, 0, 0.12), 0px 14px 28px rgba(0, 0, 0, 0.14)))}.container.clickable:focus-visible{--comp-focus-visible-shadow:var(--comp-card-shadow), var(--const-double-focus-ring);box-shadow:var(--tct-card-focus-visible-box-shadow, var(--comp-focus-visible-shadow))}.container.is-static{cursor:auto;background:var(--tct-card-static-background, var(--tct-card-background, none));color:var(--tct-card-static-font-color, var(--tct-card-color, var(--t-text, #4d4d4d)));backdrop-filter:none;border-radius:0;border:0;text-decoration:initial;padding:0}:host([bar]) .container.is-static{padding-left:var(--comp-card-padding)}.container.is-static,.container.is-static:hover,.container.is-static:active{box-shadow:none}.content{overflow:hidden;display:grid;gap:var(--tct-card-content-gap, var(--t-card-content-gap, var(--app-scale-1x, 5px)));align-content:start}h3,p{margin:0;padding:0}h3{font-weight:var(--tct-card-font-weight, var(--t-card-font-weight, 600));font-size:var(--tct-card-font-size, var(--t-card-font-size, 17px));line-height:var(--tct-card-title-line-height, var(--app-line-height, 1.428571429em));text-overflow:ellipsis;overflow:hidden;display:-webkit-box;-webkit-line-clamp:var(--tct-card-title-line-count, 1);-webkit-box-orient:vertical}p{text-overflow:ellipsis;overflow:hidden;display:-webkit-box;-webkit-line-clamp:var(--tct-card-description-line-count, 2);-webkit-box-orient:vertical;font-size:var(--tct-card-description-font-size, inherit);line-height:var(--tct-card-description-line-height, var(--app-line-height, 1.428571429em))}.bar{position:absolute;inset:0 auto auto 0;width:var(--comp-bar-width);background:var(--comp-bar-color);height:100%}.bar.color-primary{--comp-bar-color:var(--tct-card-bar-color-primary, var(--t-primary, #5446a4))}.bar.color-secondary{--comp-bar-color:var(--tct-card-bar-color-secondary, var(--t-secondary, #b6b3cc))}.bar.color-tertiary{--comp-bar-color:var(--tct-card-bar-color-tertiary, var(--t-tertiary, #ebe8fc))}.bar.color-info{--comp-bar-color:var(--tct-card-bar-color-info, var(--const-stoplight-info, #0079c1))}.bar.color-success{--comp-bar-color:var(--tct-card-bar-color-success, var(--const-stoplight-success, #0e8a00))}.bar.color-warning{--comp-bar-color:var(--tct-card-bar-color-warning, var(--const-stoplight-warning, #c35500))}.bar.color-alert{--comp-bar-color:var(--tct-card-bar-color-alert, var(--const-stoplight-alert, #c35500))}.bar.color-accent-1{--comp-bar-color:var(--tct-card-bar-color-accent-1, var(--t-accent-1, #e05252))}.bar.color-accent-2{--comp-bar-color:var(--tct-card-bar-color-accent-2, var(--t-accent-2, #e09952))}.bar.color-accent-3{--comp-bar-color:var(--tct-card-bar-color-accent-3, var(--t-accent-3, #e0e052))}.bar.color-accent-4{--comp-bar-color:var(--tct-card-bar-color-accent-4, var(--t-accent-4, #99e052))}.bar.color-accent-5{--comp-bar-color:var(--tct-card-bar-color-accent-5, var(--t-accent-5, #52e052))}.bar.color-accent-6{--comp-bar-color:var(--tct-card-bar-color-accent-6, var(--t-accent-6, #52e099))}.bar.color-accent-7{--comp-bar-color:var(--tct-card-bar-color-accent-7, var(--t-accent-7, #52e0e0))}.bar.color-accent-8{--comp-bar-color:var(--tct-card-bar-color-accent-8, var(--t-accent-8, #5299e0))}.bar.color-accent-9{--comp-bar-color:var(--tct-card-bar-color-accent-9, var(--t-accent-9, #5252e0))}.bar.color-accent-10{--comp-bar-color:var(--tct-card-bar-color-accent-10, var(--t-accent-10, #9952e0))}.bar.color-accent-11{--comp-bar-color:var(--tct-card-bar-color-accent-11, var(--t-accent-11, #e052e0))}.bar.color-accent-12{--comp-bar-color:var(--tct-card-bar-color-accent-12, var(--t-accent-12, #e05299))}";
8
8
 
9
9
  const PREDEFINED_COLORS = [
10
10
  'primary',
@@ -1 +1 @@
1
- {"file":"q2-card.js","mappings":"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","names":["Q2Card","__stencil_proxyCustomElement"],"sources":["src/components/q2-card/q2-card.scss?tag=q2-card&encapsulation=shadow","src/components/q2-card/q2-card.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n@import './variables';\n\n:host {\n display: block;\n}\n\n.container {\n --comp-avatar-size: #{var-list(var-prefixer(card-avatar-size), 44px)};\n --comp-bar-width: #{var-list(var-prefixer(card-bar-width), --app-scale-2x, 10px)};\n --comp-card-padding: #{var-list(var-prefixer(card-padding), --app-scale-4x, 20px)};\n\n position: relative;\n width: 100%;\n text-align: start;\n height: var-list(--tct-card-height, 100%);\n min-height: var-list(--tct-card-min-height, auto);\n display: grid;\n gap: var-list(var-prefixer(card-gap), --app-scale-3x, 15px);\n margin: 0;\n color: var-list(--tct-card-font-color, var-prefixer(card-color), --t-text, #4d4d4d);\n backdrop-filter: var(--tct-card-backdrop-filter);\n\n background: var-list(var-prefixer(card-background), --t-base, #ffffff);\n border-width: var-list(var-prefixer(card-border-width), 0px);\n border-color: var-list(var-prefixer(card-border-color), transparent);\n border-style: var-list(--tct-card-border-style, solid);\n border-radius: var-list(var-prefixer(card-border-radius), --app-border-radius-1, 4px);\n backdrop-filter: var-list(--tct-card-backdrop-filter, none);\n padding: var(--comp-card-padding);\n text-decoration: none;\n transition: box-shadow var-list(--tct-tween-1, --app-tween-1, unquote('0.2s ease'));\n overflow: var(--tct-card-overflow, auto);\n max-height: var-list(--tct-card-max-height, none);\n box-shadow:\n var(--comp-card-shadow),\n 0 0 0 rgba(0, 0, 0, 0);\n\n &.is-small {\n --comp-avatar-size: #{var-list(var-prefixer(card-avatar-size), 26px)};\n }\n &.has-avatar {\n grid-template-columns: var(--comp-avatar-size) 1fr;\n --tct-avatar-width: var(--comp-avatar-size);\n --tct-avatar-height: var(--comp-avatar-size);\n --tct-icon-size: var(--comp-avatar-size);\n }\n\n &.elevation-1 {\n --comp-card-shadow: #{var-list(\n --tct-card-elevation-1-box-shadow,\n --app-shadow-1,\n #{unquote('0px 0px 2px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.14)')}\n )};\n }\n &.elevation-2 {\n --comp-card-shadow: #{var-list(\n --tct-card-elevation-2-box-shadow,\n --app-shadow-2,\n #{unquote('0px 0px 2px rgba(0, 0, 0, 0.12), 0px 4px 8px rgba(0, 0, 0, 0.14)')}\n )};\n }\n &.elevation-3 {\n --comp-card-shadow: #{var-list(\n --tct-card-elevation-3-box-shadow,\n --app-shadow-3,\n #{unquote('0px 0px 2px rgba(0, 0, 0, 0.12), 0px 8px 16px rgba(0, 0, 0, 0.14)')}\n )};\n }\n &.elevation-4 {\n --comp-card-shadow: #{var-list(\n --tct-card-elevation-4-box-shadow,\n --app-shadow-4,\n #{unquote('0px 0px 8px rgba(0, 0, 0, 0.12), 0px 14px 28px rgba(0, 0, 0, 0.14)')}\n )};\n }\n &.elevation-5 {\n --comp-card-shadow: #{var-list(\n --tct-card-elevation-5-box-shadow,\n --app-shadow-5,\n #{unquote('0px 0px 8px rgba(0, 0, 0, 0.12), 0px 32px 64px rgba(0, 0, 0, 0.14)')}\n )};\n }\n\n &.clickable {\n cursor: pointer;\n\n &:hover {\n &.elevation-1 {\n --comp-card-shadow: #{var-list(\n --tct-card-elevation-1-hover-box-shadow,\n --app-shadow-2,\n #{unquote('0px 0px 2px rgba(0, 0, 0, 0.12), 0px 4px 8px rgba(0, 0, 0, 0.14)')}\n )};\n }\n &.elevation-2 {\n --comp-card-shadow: #{var-list(\n --tct-card-elevation-2-hover-box-shadow,\n --app-shadow-3,\n #{unquote('0px 0px 2px rgba(0, 0, 0, 0.12), 0px 8px 16px rgba(0, 0, 0, 0.14)')}\n )};\n }\n &.elevation-3 {\n --comp-card-shadow: #{var-list(\n --tct-card-elevation-3-hover-box-shadow,\n --app-shadow-4,\n #{unquote('0px 0px 8px rgba(0, 0, 0, 0.12), 0px 14px 28px rgba(0, 0, 0, 0.14)')}\n )};\n }\n &.elevation-4 {\n --comp-card-shadow: #{var-list(\n --tct-card-elevation-4-hover-box-shadow,\n --app-shadow-5,\n #{unquote('0px 0px 8px rgba(0, 0, 0, 0.12), 0px 32px 64px rgba(0, 0, 0, 0.14)')}\n )};\n }\n &.elevation-5 {\n --comp-card-shadow: #{var-list(\n --tct-card-elevation-5-hover-box-shadow,\n --app-shadow-5,\n #{unquote('0px 0px 8px rgba(0, 0, 0, 0.12), 0px 32px 64px rgba(0, 0, 0, 0.14)')}\n )};\n }\n }\n\n &:active {\n &.elevation-1 {\n --comp-card-shadow: #{var-list(\n --tct-card-elevation-1-active-box-shadow,\n --app-shadow-1,\n #{unquote('0px 0px 2px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.14)')}\n )};\n }\n &.elevation-2 {\n --comp-card-shadow: #{var-list(\n --tct-card-elevation-2-active-box-shadow,\n --app-shadow-1,\n #{unquote('0px 0px 2px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.14)')}\n )};\n }\n &.elevation-3 {\n --comp-card-shadow: #{var-list(\n --tct-card-elevation-3-active-box-shadow,\n --app-shadow-2,\n #{unquote('0px 0px 2px rgba(0, 0, 0, 0.12), 0px 4px 8px rgba(0, 0, 0, 0.14)')}\n )};\n }\n &.elevation-4 {\n --comp-card-shadow: #{var-list(\n --tct-card-elevation-4-active-box-shadow,\n --app-shadow-3,\n #{unquote('0px 0px 2px rgba(0, 0, 0, 0.12), 0px 8px 16px rgba(0, 0, 0, 0.14)')}\n )};\n }\n &.elevation-5 {\n --comp-card-shadow: #{var-list(\n --tct-card-elevation-5-active-box-shadow,\n --app-shadow-4,\n #{unquote('0px 0px 8px rgba(0, 0, 0, 0.12), 0px 14px 28px rgba(0, 0, 0, 0.14)')}\n )};\n }\n }\n &:focus-visible {\n --comp-focus-visible-shadow: var(--comp-card-shadow), var(--const-double-focus-ring);\n box-shadow: var-list(--tct-card-focus-visible-box-shadow, --comp-focus-visible-shadow);\n }\n }\n\n &.is-static {\n cursor: auto;\n background: var-list(--tct-card-static-background, --tct-card-background, none);\n color: var-list(--tct-card-static-font-color, --tct-card-color, --t-text, #4d4d4d);\n backdrop-filter: none;\n border-radius: 0;\n border: 0;\n text-decoration: initial;\n padding: 0;\n\n :host([bar]) & {\n padding-left: var(--comp-card-padding);\n }\n\n &,\n &:hover,\n &:active {\n box-shadow: none;\n }\n }\n}\n\n.content {\n overflow: hidden;\n display: grid;\n gap: var-list(var-prefixer(card-content-gap), --app-scale-1x, 5px);\n align-content: start;\n}\n\nh3,\np {\n margin: 0;\n padding: 0;\n line-height: var-list(var-prefixer(card-font-height), 20px);\n}\n\nh3 {\n font-weight: var-list(var-prefixer(card-font-weight), 600);\n font-size: var-list(var-prefixer(card-font-size), 17px);\n @include line-clamp(var(--tct-card-title-line-count, 1));\n}\n\np {\n @include line-clamp(var(--tct-card-description-line-count, 2));\n font-size: var(--tct-card-description-font-size, inherit);\n}\n\n.bar {\n position: absolute;\n inset: 0 auto auto 0;\n width: var(--comp-bar-width);\n background: var(--comp-bar-color);\n height: 100%;\n\n &.color-primary {\n --comp-bar-color: #{var-list(--tct-card-bar-color-primary, --t-primary, #5446a4)};\n }\n\n &.color-secondary {\n --comp-bar-color: #{var-list(--tct-card-bar-color-secondary, --t-secondary, #b6b3cc)};\n }\n\n &.color-tertiary {\n --comp-bar-color: #{var-list(--tct-card-bar-color-tertiary, --t-tertiary, #ebe8fc)};\n }\n\n &.color-info {\n --comp-bar-color: #{var-list(--tct-card-bar-color-info, --const-stoplight-info, #0079c1)};\n }\n\n &.color-success {\n --comp-bar-color: #{var-list(--tct-card-bar-color-success, --const-stoplight-success, #0e8a00)};\n }\n\n &.color-warning {\n --comp-bar-color: #{var-list(--tct-card-bar-color-warning, --const-stoplight-warning, #c35500)};\n }\n\n &.color-alert {\n --comp-bar-color: #{var-list(--tct-card-bar-color-alert, --const-stoplight-alert, #c35500)};\n }\n\n &.color-accent-1 {\n --comp-bar-color: #{var-list(--tct-card-bar-color-accent-1, --t-accent-1, #e05252)};\n }\n\n &.color-accent-2 {\n --comp-bar-color: #{var-list(--tct-card-bar-color-accent-2, --t-accent-2, #e09952)};\n }\n\n &.color-accent-3 {\n --comp-bar-color: #{var-list(--tct-card-bar-color-accent-3, --t-accent-3, #e0e052)};\n }\n\n &.color-accent-4 {\n --comp-bar-color: #{var-list(--tct-card-bar-color-accent-4, --t-accent-4, #99e052)};\n }\n\n &.color-accent-5 {\n --comp-bar-color: #{var-list(--tct-card-bar-color-accent-5, --t-accent-5, #52e052)};\n }\n\n &.color-accent-6 {\n --comp-bar-color: #{var-list(--tct-card-bar-color-accent-6, --t-accent-6, #52e099)};\n }\n\n &.color-accent-7 {\n --comp-bar-color: #{var-list(--tct-card-bar-color-accent-7, --t-accent-7, #52e0e0)};\n }\n\n &.color-accent-8 {\n --comp-bar-color: #{var-list(--tct-card-bar-color-accent-8, --t-accent-8, #5299e0)};\n }\n\n &.color-accent-9 {\n --comp-bar-color: #{var-list(--tct-card-bar-color-accent-9, --t-accent-9, #5252e0)};\n }\n\n &.color-accent-10 {\n --comp-bar-color: #{var-list(--tct-card-bar-color-accent-10, --t-accent-10, #9952e0)};\n }\n\n &.color-accent-11 {\n --comp-bar-color: #{var-list(--tct-card-bar-color-accent-11, --t-accent-11, #e052e0)};\n }\n\n &.color-accent-12 {\n --comp-bar-color: #{var-list(--tct-card-bar-color-accent-12, --t-accent-12, #e05299)};\n }\n}\n","import { Component, ComponentInterface, Prop, Event, h, Fragment, Listen, Element, EventEmitter } from '@stencil/core';\nimport { overrideFocus, isEventFromElement } from 'src/utils';\nimport mirrorEmit from '@/utils/mirror-emit';\nconst PREDEFINED_COLORS = [\n 'primary',\n 'secondary',\n 'tertiary',\n 'info',\n 'success',\n 'warning',\n 'alert',\n 'accent-1',\n 'accent-2',\n 'accent-3',\n 'accent-4',\n 'accent-5',\n 'accent-6',\n 'accent-7',\n 'accent-8',\n 'accent-9',\n 'accent-10',\n 'accent-11',\n 'accent-12',\n];\n\n/**\n * @name Card\n * @category Display\n * @summary Use for grouping related content in a contained, elevated surface.\n */\n@Component({ tag: 'q2-card', shadow: true, styleUrl: 'q2-card.scss' })\nexport class Q2Card implements ComponentInterface {\n // #region Own Properties\n\n avatarElement: HTMLElement;\n clickableElement: HTMLElement;\n containerElement: HTMLElement;\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region Public Property API\n\n /**\n * The [q2-icon](https://tecton.q2developer.com/design-system/q2-icon/) to be displayed in the avatar location.\n *\n * Please use q2-item instead.\n *\n * @deprecated\n */\n @Prop({ reflect: true })\n avatarIcon: string;\n\n /**\n * The initials to be placed in the avatar of the card.\n *\n * Please use q2-item instead.\n *\n * @deprecated\n */\n @Prop({ reflect: true })\n avatarInitials: string;\n\n /**\n * The name to be used for the avatar of the card which will be converted to initials.\n *\n * Please use q2-item instead.\n *\n * @deprecated\n */\n @Prop({ reflect: true })\n avatarName: string;\n\n /**\n * The source of the image to be displayed in the avatar location.\n *\n * Please use q2-item instead.\n *\n * @deprecated\n */\n @Prop({ reflect: true })\n avatarSrc: string;\n\n /**\n * Indicates that a bar should be displayed and which color to use. Predefined colors that may be used as values are:\n *\n * - primary\n * - secondary\n * - tertiary\n * - info\n * - success\n * - warning\n * - alert\n * - accent-1\n * - accent-2\n * - accent-3\n * - accent-4\n * - accent-5\n * - accent-6\n * - accent-7\n * - accent-8\n * - accent-9\n * - accent-10\n * - accent-11\n * - accent-12\n *\n * Any other value (e.g. `\"#990000\"`, `\"purple\"`) will be treated as a custom color.\n */\n @Prop({ reflect: true })\n bar: string;\n\n /**\n * The description of the card (truncated after two lines).\n *\n * Please use q2-item instead.\n *\n * @deprecated\n */\n @Prop({ reflect: true })\n description: string;\n\n /**\n * The size of the box-shadow applied to the component, giving it a sense of depth.\n *\n * @info\n * Set to `0` to disable.\n */\n @Prop({ reflect: true })\n elevation: 0 | 1 | 2 | 3 | 4 | 5 = 2;\n\n /**\n * Display the card with a view optimized for smaller displays.\n *\n * Please use q2-item instead.\n *\n * @deprecated\n */\n @Prop({ reflect: true })\n isSmall: boolean;\n\n /**\n * Display the card with no borders, padding, drop-shadows, or clickable behavior.\n *\n * Please use q2-item instead.\n *\n * @deprecated\n */\n @Prop({ reflect: true })\n isStatic: boolean;\n\n /**\n * Target to be applied to the link when a URL is provided.\n *\n * @warning\n * Do not use in Online Banking. Use the `openURL` capability on the click event instead.\n */\n @Prop({ reflect: true })\n target: '_self' | '_blank' | '_parent' | '_top';\n\n /**\n * The title of the card.\n *\n * Please use q2-item instead.\n *\n * @deprecated\n */\n @Prop({ reflect: true })\n title: string;\n\n /** Alters the interactive behavior of the card while maintaining visual appearance. */\n @Prop({ reflect: true })\n type: 'clickable' | 'non-clickable' = 'clickable';\n\n /**\n * URL to navigate the user to when the card is clicked.\n *\n * @warning\n * Do not use in Online Banking. Use the `openURL` capability on the click event instead.\n */\n @Prop({ reflect: true })\n url: string;\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when the card is clicked and the `url` property is not provided.\n * @deprecated Use 'tctClick' instead\n */\n @Event()\n click: EventEmitter<undefined>;\n\n /**\n * Emitted when the card is clicked and the `url` property is not provided.\n */\n @Event()\n tctClick: EventEmitter<undefined>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n // Clean up manual click override\n if (this.hostElement) {\n this.hostElement.click = null;\n }\n\n // Nullify DOM references\n this.avatarElement = null;\n this.clickableElement = null;\n this.containerElement = null;\n }\n\n componentDidLoad() {\n const { hostElement, clickableElement } = this;\n hostElement.click = () => clickableElement.click();\n overrideFocus(this.hostElement);\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('focus')\n onHostElementFocus(event) {\n if (!isEventFromElement(event, this.hostElement)) return;\n this.clickableElement.focus();\n }\n\n // #endregion\n // #region Local Methods\n\n generateAvatar() {\n const { avatarName, avatarInitials, avatarSrc, avatarIcon } = this;\n\n if (avatarIcon) {\n return (\n <q2-icon\n type={avatarIcon}\n ref={e => (this.avatarElement = e)}\n test-id=\"avatar\"\n ></q2-icon>\n );\n } else if (avatarName || avatarInitials || avatarSrc) {\n return (\n <q2-avatar\n name={avatarName}\n initials={avatarInitials}\n src={avatarSrc}\n ref={e => (this.avatarElement = e)}\n test-id=\"avatar\"\n ></q2-avatar>\n );\n }\n }\n\n generateContainerClasses() {\n const { isSmall, avatarName, avatarInitials, avatarSrc, avatarIcon, isStatic, type, elevation } = this;\n const result = ['container', type];\n const hasAvatar = avatarName || avatarInitials || avatarSrc || avatarIcon;\n if (isSmall) result.push('is-small');\n if (hasAvatar) result.push('has-avatar');\n if (isStatic) result.push('is-static');\n if (!isStatic && elevation && elevation > 0) result.push(`elevation-${elevation}`);\n\n return result.join(' ');\n }\n\n generateContent() {\n return (\n <Fragment>\n {this.bar && (\n <div\n class={this.getBarClasses()}\n test-id=\"bar\"\n style={this.getBarStyles()}\n ></div>\n )}\n {this.generateAvatar()}\n <div\n class=\"content\"\n test-id=\"contentContainer\"\n ref={e => (this.containerElement = e)}\n >\n {this.title && <h3 test-id=\"title\">{this.title}</h3>}\n {this.description && <p test-id=\"description\">{this.description}</p>}\n <slot />\n </div>\n </Fragment>\n );\n }\n\n getBarClasses() {\n const { bar } = this;\n\n return {\n bar: true,\n [`color-${bar}`]: this.isBarColorPredefined(),\n };\n }\n\n getBarStyles() {\n const { bar } = this;\n\n return this.isBarColorPredefined() ? {} : { '--comp-bar-color': bar };\n }\n\n handleClick = (event: MouseEvent) => {\n if (this.url) return true;\n event.preventDefault();\n event.stopPropagation();\n mirrorEmit(this, ['click', 'tctClick'], undefined);\n };\n\n isBarColorPredefined() {\n return PREDEFINED_COLORS.includes(this.bar);\n }\n\n // #endregion\n // #region Render Methods\n\n render() {\n const { url, isStatic, type } = this;\n if (isStatic || type === 'non-clickable')\n return (\n <div\n ref={e => (this.clickableElement = e)}\n class={this.generateContainerClasses()}\n test-id=\"clickableElement\"\n >\n {this.generateContent()}\n </div>\n );\n else if (!!url)\n return (\n <a\n ref={e => (this.clickableElement = e)}\n href={this.url}\n class={this.generateContainerClasses()}\n target={this.target}\n rel=\"noopener noreferrer\"\n test-id=\"clickableElement\"\n onClick={this.handleClick}\n >\n {this.generateContent()}\n </a>\n );\n else\n return (\n <button\n ref={e => (this.clickableElement = e)}\n class={this.generateContainerClasses()}\n test-id=\"clickableElement\"\n type=\"button\"\n onClick={this.handleClick}\n >\n {this.generateContent()}\n </button>\n );\n }\n\n // #endregion\n}\n"],"version":3}
1
+ {"file":"q2-card.js","mappings":"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","names":["Q2Card","__stencil_proxyCustomElement"],"sources":["src/components/q2-card/q2-card.scss?tag=q2-card&encapsulation=shadow","src/components/q2-card/q2-card.tsx"],"sourcesContent":["@import '../../styles/host.scss';\n@import '../../styles/functions';\n@import './variables';\n\n:host {\n display: block;\n}\n\n.container {\n --comp-avatar-size: #{var-list(var-prefixer(card-avatar-size), 44px)};\n --comp-bar-width: #{var-list(var-prefixer(card-bar-width), --app-scale-2x, 10px)};\n --comp-card-padding: #{var-list(var-prefixer(card-padding), --app-scale-4x, 20px)};\n\n position: relative;\n width: 100%;\n text-align: start;\n height: var-list(--tct-card-height, 100%);\n min-height: var-list(--tct-card-min-height, auto);\n display: grid;\n gap: var-list(var-prefixer(card-gap), --app-scale-3x, 15px);\n margin: 0;\n color: var-list(--tct-card-font-color, var-prefixer(card-color), --t-text, #4d4d4d);\n backdrop-filter: var(--tct-card-backdrop-filter);\n\n background: var-list(var-prefixer(card-background), --t-base, #ffffff);\n border-width: var-list(var-prefixer(card-border-width), 0px);\n border-color: var-list(var-prefixer(card-border-color), transparent);\n border-style: var-list(--tct-card-border-style, solid);\n border-radius: var-list(var-prefixer(card-border-radius), --app-border-radius-1, 4px);\n backdrop-filter: var-list(--tct-card-backdrop-filter, none);\n padding: var(--comp-card-padding);\n text-decoration: none;\n transition: box-shadow var-list(--tct-tween-1, --app-tween-1, unquote('0.2s ease'));\n overflow: var(--tct-card-overflow, auto);\n max-height: var-list(--tct-card-max-height, none);\n box-shadow:\n var(--comp-card-shadow),\n 0 0 0 rgba(0, 0, 0, 0);\n\n &.is-small {\n --comp-avatar-size: #{var-list(var-prefixer(card-avatar-size), 26px)};\n }\n &.has-avatar {\n grid-template-columns: var(--comp-avatar-size) 1fr;\n --tct-avatar-width: var(--comp-avatar-size);\n --tct-avatar-height: var(--comp-avatar-size);\n --tct-icon-size: var(--comp-avatar-size);\n }\n\n &.elevation-1 {\n --comp-card-shadow: #{var-list(\n --tct-card-elevation-1-box-shadow,\n --app-shadow-1,\n #{unquote('0px 0px 2px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.14)')}\n )};\n }\n &.elevation-2 {\n --comp-card-shadow: #{var-list(\n --tct-card-elevation-2-box-shadow,\n --app-shadow-2,\n #{unquote('0px 0px 2px rgba(0, 0, 0, 0.12), 0px 4px 8px rgba(0, 0, 0, 0.14)')}\n )};\n }\n &.elevation-3 {\n --comp-card-shadow: #{var-list(\n --tct-card-elevation-3-box-shadow,\n --app-shadow-3,\n #{unquote('0px 0px 2px rgba(0, 0, 0, 0.12), 0px 8px 16px rgba(0, 0, 0, 0.14)')}\n )};\n }\n &.elevation-4 {\n --comp-card-shadow: #{var-list(\n --tct-card-elevation-4-box-shadow,\n --app-shadow-4,\n #{unquote('0px 0px 8px rgba(0, 0, 0, 0.12), 0px 14px 28px rgba(0, 0, 0, 0.14)')}\n )};\n }\n &.elevation-5 {\n --comp-card-shadow: #{var-list(\n --tct-card-elevation-5-box-shadow,\n --app-shadow-5,\n #{unquote('0px 0px 8px rgba(0, 0, 0, 0.12), 0px 32px 64px rgba(0, 0, 0, 0.14)')}\n )};\n }\n\n &.clickable {\n cursor: pointer;\n\n &:hover {\n &.elevation-1 {\n --comp-card-shadow: #{var-list(\n --tct-card-elevation-1-hover-box-shadow,\n --app-shadow-2,\n #{unquote('0px 0px 2px rgba(0, 0, 0, 0.12), 0px 4px 8px rgba(0, 0, 0, 0.14)')}\n )};\n }\n &.elevation-2 {\n --comp-card-shadow: #{var-list(\n --tct-card-elevation-2-hover-box-shadow,\n --app-shadow-3,\n #{unquote('0px 0px 2px rgba(0, 0, 0, 0.12), 0px 8px 16px rgba(0, 0, 0, 0.14)')}\n )};\n }\n &.elevation-3 {\n --comp-card-shadow: #{var-list(\n --tct-card-elevation-3-hover-box-shadow,\n --app-shadow-4,\n #{unquote('0px 0px 8px rgba(0, 0, 0, 0.12), 0px 14px 28px rgba(0, 0, 0, 0.14)')}\n )};\n }\n &.elevation-4 {\n --comp-card-shadow: #{var-list(\n --tct-card-elevation-4-hover-box-shadow,\n --app-shadow-5,\n #{unquote('0px 0px 8px rgba(0, 0, 0, 0.12), 0px 32px 64px rgba(0, 0, 0, 0.14)')}\n )};\n }\n &.elevation-5 {\n --comp-card-shadow: #{var-list(\n --tct-card-elevation-5-hover-box-shadow,\n --app-shadow-5,\n #{unquote('0px 0px 8px rgba(0, 0, 0, 0.12), 0px 32px 64px rgba(0, 0, 0, 0.14)')}\n )};\n }\n }\n\n &:active {\n &.elevation-1 {\n --comp-card-shadow: #{var-list(\n --tct-card-elevation-1-active-box-shadow,\n --app-shadow-1,\n #{unquote('0px 0px 2px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.14)')}\n )};\n }\n &.elevation-2 {\n --comp-card-shadow: #{var-list(\n --tct-card-elevation-2-active-box-shadow,\n --app-shadow-1,\n #{unquote('0px 0px 2px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.14)')}\n )};\n }\n &.elevation-3 {\n --comp-card-shadow: #{var-list(\n --tct-card-elevation-3-active-box-shadow,\n --app-shadow-2,\n #{unquote('0px 0px 2px rgba(0, 0, 0, 0.12), 0px 4px 8px rgba(0, 0, 0, 0.14)')}\n )};\n }\n &.elevation-4 {\n --comp-card-shadow: #{var-list(\n --tct-card-elevation-4-active-box-shadow,\n --app-shadow-3,\n #{unquote('0px 0px 2px rgba(0, 0, 0, 0.12), 0px 8px 16px rgba(0, 0, 0, 0.14)')}\n )};\n }\n &.elevation-5 {\n --comp-card-shadow: #{var-list(\n --tct-card-elevation-5-active-box-shadow,\n --app-shadow-4,\n #{unquote('0px 0px 8px rgba(0, 0, 0, 0.12), 0px 14px 28px rgba(0, 0, 0, 0.14)')}\n )};\n }\n }\n &:focus-visible {\n --comp-focus-visible-shadow: var(--comp-card-shadow), var(--const-double-focus-ring);\n box-shadow: var-list(--tct-card-focus-visible-box-shadow, --comp-focus-visible-shadow);\n }\n }\n\n &.is-static {\n cursor: auto;\n background: var-list(--tct-card-static-background, --tct-card-background, none);\n color: var-list(--tct-card-static-font-color, --tct-card-color, --t-text, #4d4d4d);\n backdrop-filter: none;\n border-radius: 0;\n border: 0;\n text-decoration: initial;\n padding: 0;\n\n :host([bar]) & {\n padding-left: var(--comp-card-padding);\n }\n\n &,\n &:hover,\n &:active {\n box-shadow: none;\n }\n }\n}\n\n.content {\n overflow: hidden;\n display: grid;\n gap: var-list(var-prefixer(card-content-gap), --app-scale-1x, 5px);\n align-content: start;\n}\n\nh3,\np {\n margin: 0;\n padding: 0;\n}\n\nh3 {\n font-weight: var-list(var-prefixer(card-font-weight), 600);\n font-size: var-list(var-prefixer(card-font-size), 17px);\n line-height: var-list(--tct-card-title-line-height, --app-line-height, 1.428571429em);\n @include line-clamp(var(--tct-card-title-line-count, 1));\n}\n\np {\n @include line-clamp(var(--tct-card-description-line-count, 2));\n font-size: var(--tct-card-description-font-size, inherit);\n line-height: var-list(--tct-card-description-line-height, --app-line-height, 1.428571429em);\n}\n\n.bar {\n position: absolute;\n inset: 0 auto auto 0;\n width: var(--comp-bar-width);\n background: var(--comp-bar-color);\n height: 100%;\n\n &.color-primary {\n --comp-bar-color: #{var-list(--tct-card-bar-color-primary, --t-primary, #5446a4)};\n }\n\n &.color-secondary {\n --comp-bar-color: #{var-list(--tct-card-bar-color-secondary, --t-secondary, #b6b3cc)};\n }\n\n &.color-tertiary {\n --comp-bar-color: #{var-list(--tct-card-bar-color-tertiary, --t-tertiary, #ebe8fc)};\n }\n\n &.color-info {\n --comp-bar-color: #{var-list(--tct-card-bar-color-info, --const-stoplight-info, #0079c1)};\n }\n\n &.color-success {\n --comp-bar-color: #{var-list(--tct-card-bar-color-success, --const-stoplight-success, #0e8a00)};\n }\n\n &.color-warning {\n --comp-bar-color: #{var-list(--tct-card-bar-color-warning, --const-stoplight-warning, #c35500)};\n }\n\n &.color-alert {\n --comp-bar-color: #{var-list(--tct-card-bar-color-alert, --const-stoplight-alert, #c35500)};\n }\n\n &.color-accent-1 {\n --comp-bar-color: #{var-list(--tct-card-bar-color-accent-1, --t-accent-1, #e05252)};\n }\n\n &.color-accent-2 {\n --comp-bar-color: #{var-list(--tct-card-bar-color-accent-2, --t-accent-2, #e09952)};\n }\n\n &.color-accent-3 {\n --comp-bar-color: #{var-list(--tct-card-bar-color-accent-3, --t-accent-3, #e0e052)};\n }\n\n &.color-accent-4 {\n --comp-bar-color: #{var-list(--tct-card-bar-color-accent-4, --t-accent-4, #99e052)};\n }\n\n &.color-accent-5 {\n --comp-bar-color: #{var-list(--tct-card-bar-color-accent-5, --t-accent-5, #52e052)};\n }\n\n &.color-accent-6 {\n --comp-bar-color: #{var-list(--tct-card-bar-color-accent-6, --t-accent-6, #52e099)};\n }\n\n &.color-accent-7 {\n --comp-bar-color: #{var-list(--tct-card-bar-color-accent-7, --t-accent-7, #52e0e0)};\n }\n\n &.color-accent-8 {\n --comp-bar-color: #{var-list(--tct-card-bar-color-accent-8, --t-accent-8, #5299e0)};\n }\n\n &.color-accent-9 {\n --comp-bar-color: #{var-list(--tct-card-bar-color-accent-9, --t-accent-9, #5252e0)};\n }\n\n &.color-accent-10 {\n --comp-bar-color: #{var-list(--tct-card-bar-color-accent-10, --t-accent-10, #9952e0)};\n }\n\n &.color-accent-11 {\n --comp-bar-color: #{var-list(--tct-card-bar-color-accent-11, --t-accent-11, #e052e0)};\n }\n\n &.color-accent-12 {\n --comp-bar-color: #{var-list(--tct-card-bar-color-accent-12, --t-accent-12, #e05299)};\n }\n}\n","import { Component, ComponentInterface, Prop, Event, h, Fragment, Listen, Element, EventEmitter } from '@stencil/core';\nimport { overrideFocus, isEventFromElement } from 'src/utils';\nimport mirrorEmit from '@/utils/mirror-emit';\nconst PREDEFINED_COLORS = [\n 'primary',\n 'secondary',\n 'tertiary',\n 'info',\n 'success',\n 'warning',\n 'alert',\n 'accent-1',\n 'accent-2',\n 'accent-3',\n 'accent-4',\n 'accent-5',\n 'accent-6',\n 'accent-7',\n 'accent-8',\n 'accent-9',\n 'accent-10',\n 'accent-11',\n 'accent-12',\n];\n\n/**\n * @name Card\n * @category Display\n * @summary Use for grouping related content in a contained, elevated surface.\n */\n@Component({ tag: 'q2-card', shadow: true, styleUrl: 'q2-card.scss' })\nexport class Q2Card implements ComponentInterface {\n // #region Own Properties\n\n avatarElement: HTMLElement;\n clickableElement: HTMLElement;\n containerElement: HTMLElement;\n\n // #endregion\n // #region Host HTML Element\n\n @Element()\n hostElement: HTMLElement;\n\n // #endregion\n // #region Public Property API\n\n /**\n * The [q2-icon](https://tecton.q2developer.com/design-system/q2-icon/) to be displayed in the avatar location.\n *\n * Please use q2-item instead.\n *\n * @deprecated\n */\n @Prop({ reflect: true })\n avatarIcon: string;\n\n /**\n * The initials to be placed in the avatar of the card.\n *\n * Please use q2-item instead.\n *\n * @deprecated\n */\n @Prop({ reflect: true })\n avatarInitials: string;\n\n /**\n * The name to be used for the avatar of the card which will be converted to initials.\n *\n * Please use q2-item instead.\n *\n * @deprecated\n */\n @Prop({ reflect: true })\n avatarName: string;\n\n /**\n * The source of the image to be displayed in the avatar location.\n *\n * Please use q2-item instead.\n *\n * @deprecated\n */\n @Prop({ reflect: true })\n avatarSrc: string;\n\n /**\n * Indicates that a bar should be displayed and which color to use. Predefined colors that may be used as values are:\n *\n * - primary\n * - secondary\n * - tertiary\n * - info\n * - success\n * - warning\n * - alert\n * - accent-1\n * - accent-2\n * - accent-3\n * - accent-4\n * - accent-5\n * - accent-6\n * - accent-7\n * - accent-8\n * - accent-9\n * - accent-10\n * - accent-11\n * - accent-12\n *\n * Any other value (e.g. `\"#990000\"`, `\"purple\"`) will be treated as a custom color.\n */\n @Prop({ reflect: true })\n bar: string;\n\n /**\n * The description of the card (truncated after two lines).\n *\n * Please use q2-item instead.\n *\n * @deprecated\n */\n @Prop({ reflect: true })\n description: string;\n\n /**\n * The size of the box-shadow applied to the component, giving it a sense of depth.\n *\n * @info\n * Set to `0` to disable.\n */\n @Prop({ reflect: true })\n elevation: 0 | 1 | 2 | 3 | 4 | 5 = 2;\n\n /**\n * Display the card with a view optimized for smaller displays.\n *\n * Please use q2-item instead.\n *\n * @deprecated\n */\n @Prop({ reflect: true })\n isSmall: boolean;\n\n /**\n * Display the card with no borders, padding, drop-shadows, or clickable behavior.\n *\n * Please use q2-item instead.\n *\n * @deprecated\n */\n @Prop({ reflect: true })\n isStatic: boolean;\n\n /**\n * Target to be applied to the link when a URL is provided.\n *\n * @warning\n * Do not use in Online Banking. Use the `openURL` capability on the click event instead.\n */\n @Prop({ reflect: true })\n target: '_self' | '_blank' | '_parent' | '_top';\n\n /**\n * The title of the card.\n *\n * Please use q2-item instead.\n *\n * @deprecated\n */\n @Prop({ reflect: true })\n title: string;\n\n /** Alters the interactive behavior of the card while maintaining visual appearance. */\n @Prop({ reflect: true })\n type: 'clickable' | 'non-clickable' = 'clickable';\n\n /**\n * URL to navigate the user to when the card is clicked.\n *\n * @warning\n * Do not use in Online Banking. Use the `openURL` capability on the click event instead.\n */\n @Prop({ reflect: true })\n url: string;\n\n // #endregion\n // #region Events\n\n /**\n * Emitted when the card is clicked and the `url` property is not provided.\n * @deprecated Use 'tctClick' instead\n */\n @Event()\n click: EventEmitter<undefined>;\n\n /**\n * Emitted when the card is clicked and the `url` property is not provided.\n */\n @Event()\n tctClick: EventEmitter<undefined>;\n\n // #endregion\n // #region Component Lifecycle Events\n\n disconnectedCallback() {\n // Clean up manual click override\n if (this.hostElement) {\n this.hostElement.click = null;\n }\n\n // Nullify DOM references\n this.avatarElement = null;\n this.clickableElement = null;\n this.containerElement = null;\n }\n\n componentDidLoad() {\n const { hostElement, clickableElement } = this;\n hostElement.click = () => clickableElement.click();\n overrideFocus(this.hostElement);\n }\n\n // #endregion\n // #region Listeners\n\n @Listen('focus')\n onHostElementFocus(event) {\n if (!isEventFromElement(event, this.hostElement)) return;\n this.clickableElement.focus();\n }\n\n // #endregion\n // #region Local Methods\n\n generateAvatar() {\n const { avatarName, avatarInitials, avatarSrc, avatarIcon } = this;\n\n if (avatarIcon) {\n return (\n <q2-icon\n type={avatarIcon}\n ref={e => (this.avatarElement = e)}\n test-id=\"avatar\"\n ></q2-icon>\n );\n } else if (avatarName || avatarInitials || avatarSrc) {\n return (\n <q2-avatar\n name={avatarName}\n initials={avatarInitials}\n src={avatarSrc}\n ref={e => (this.avatarElement = e)}\n test-id=\"avatar\"\n ></q2-avatar>\n );\n }\n }\n\n generateContainerClasses() {\n const { isSmall, avatarName, avatarInitials, avatarSrc, avatarIcon, isStatic, type, elevation } = this;\n const result = ['container', type];\n const hasAvatar = avatarName || avatarInitials || avatarSrc || avatarIcon;\n if (isSmall) result.push('is-small');\n if (hasAvatar) result.push('has-avatar');\n if (isStatic) result.push('is-static');\n if (!isStatic && elevation && elevation > 0) result.push(`elevation-${elevation}`);\n\n return result.join(' ');\n }\n\n generateContent() {\n return (\n <Fragment>\n {this.bar && (\n <div\n class={this.getBarClasses()}\n test-id=\"bar\"\n style={this.getBarStyles()}\n ></div>\n )}\n {this.generateAvatar()}\n <div\n class=\"content\"\n test-id=\"contentContainer\"\n ref={e => (this.containerElement = e)}\n >\n {this.title && <h3 test-id=\"title\">{this.title}</h3>}\n {this.description && <p test-id=\"description\">{this.description}</p>}\n <slot />\n </div>\n </Fragment>\n );\n }\n\n getBarClasses() {\n const { bar } = this;\n\n return {\n bar: true,\n [`color-${bar}`]: this.isBarColorPredefined(),\n };\n }\n\n getBarStyles() {\n const { bar } = this;\n\n return this.isBarColorPredefined() ? {} : { '--comp-bar-color': bar };\n }\n\n handleClick = (event: MouseEvent) => {\n if (this.url) return true;\n event.preventDefault();\n event.stopPropagation();\n mirrorEmit(this, ['click', 'tctClick'], undefined);\n };\n\n isBarColorPredefined() {\n return PREDEFINED_COLORS.includes(this.bar);\n }\n\n // #endregion\n // #region Render Methods\n\n render() {\n const { url, isStatic, type } = this;\n if (isStatic || type === 'non-clickable')\n return (\n <div\n ref={e => (this.clickableElement = e)}\n class={this.generateContainerClasses()}\n test-id=\"clickableElement\"\n >\n {this.generateContent()}\n </div>\n );\n else if (!!url)\n return (\n <a\n ref={e => (this.clickableElement = e)}\n href={this.url}\n class={this.generateContainerClasses()}\n target={this.target}\n rel=\"noopener noreferrer\"\n test-id=\"clickableElement\"\n onClick={this.handleClick}\n >\n {this.generateContent()}\n </a>\n );\n else\n return (\n <button\n ref={e => (this.clickableElement = e)}\n class={this.generateContainerClasses()}\n test-id=\"clickableElement\"\n type=\"button\"\n onClick={this.handleClick}\n >\n {this.generateContent()}\n </button>\n );\n }\n\n // #endregion\n}\n"],"version":3}