q2-tecton-elements 1.13.0-alpha.0 → 1.13.0

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 (234) hide show
  1. package/dist/cjs/click-elsewhere.cjs.entry.js +5 -7
  2. package/dist/cjs/{icons-4595ee47.js → icons-08ffe5c9.js} +394 -384
  3. package/dist/cjs/{index-c2e53804.js → index-7febb200.js} +112 -65
  4. package/dist/cjs/{index-a55d3c34.js → index-dd823ee6.js} +27 -14
  5. package/dist/cjs/loader.cjs.js +3 -3
  6. package/dist/cjs/q2-avatar.cjs.entry.js +2 -2
  7. package/dist/cjs/q2-badge.cjs.entry.js +43 -0
  8. package/dist/cjs/q2-btn_2.cjs.entry.js +13 -13
  9. package/dist/cjs/q2-calendar.cjs.entry.js +53 -59
  10. package/dist/cjs/q2-card.cjs.entry.js +127 -0
  11. package/dist/cjs/q2-carousel-pane.cjs.entry.js +5 -5
  12. package/dist/cjs/q2-carousel.cjs.entry.js +318 -106
  13. package/dist/cjs/q2-checkbox-group.cjs.entry.js +6 -3
  14. package/dist/cjs/q2-checkbox.cjs.entry.js +18 -10
  15. package/dist/cjs/q2-dropdown-item.cjs.entry.js +7 -7
  16. package/dist/cjs/q2-dropdown.cjs.entry.js +8 -17
  17. package/dist/cjs/q2-editable-field.cjs.entry.js +5 -8
  18. package/dist/cjs/q2-icon.cjs.entry.js +3 -3
  19. package/dist/cjs/q2-input.cjs.entry.js +439 -437
  20. package/dist/cjs/q2-loading-element.cjs.entry.js +3 -3
  21. package/dist/cjs/q2-loc.cjs.entry.js +2 -2
  22. package/dist/cjs/q2-message.cjs.entry.js +5 -5
  23. package/dist/cjs/q2-optgroup.cjs.entry.js +3 -3
  24. package/dist/cjs/q2-option-list.cjs.entry.js +359 -0
  25. package/dist/cjs/q2-option.cjs.entry.js +3 -11
  26. package/dist/cjs/q2-pagination.cjs.entry.js +116 -0
  27. package/dist/cjs/q2-pill.cjs.entry.js +137 -0
  28. package/dist/cjs/q2-radio-group.cjs.entry.js +43 -18
  29. package/dist/cjs/q2-radio.cjs.entry.js +21 -4
  30. package/dist/cjs/q2-section.cjs.entry.js +5 -7
  31. package/dist/cjs/q2-select.cjs.entry.js +23 -26
  32. package/dist/cjs/q2-stepper-pane.cjs.entry.js +42 -4
  33. package/dist/cjs/q2-stepper-vertical.cjs.entry.js +278 -0
  34. package/dist/cjs/q2-stepper.cjs.entry.js +10 -12
  35. package/dist/cjs/q2-tab-container.cjs.entry.js +12 -8
  36. package/dist/cjs/q2-tab-pane.cjs.entry.js +1 -1
  37. package/dist/cjs/q2-tag.cjs.entry.js +94 -0
  38. package/dist/cjs/q2-tecton-elements.cjs.js +3 -3
  39. package/dist/cjs/q2-textarea.cjs.entry.js +8 -8
  40. package/dist/cjs/{shapes-086c0365.js → shapes-305746b5.js} +9 -16
  41. package/dist/cjs/tecton-tab-pane.cjs.entry.js +2 -5
  42. package/dist/collection/collection-manifest.json +10 -3
  43. package/dist/collection/components/click-elsewhere/index.js +4 -6
  44. package/dist/collection/components/q2-badge/index.js +148 -0
  45. package/dist/collection/components/q2-badge/styles.css +134 -0
  46. package/dist/collection/components/q2-btn/index.js +14 -14
  47. package/dist/collection/components/q2-btn/styles.css +1 -1
  48. package/dist/collection/components/q2-calendar/helpers.js +22 -20
  49. package/dist/collection/components/q2-calendar/index.js +44 -37
  50. package/dist/collection/components/q2-calendar/validation.js +4 -2
  51. package/dist/collection/components/q2-card/index.js +347 -0
  52. package/dist/collection/components/q2-card/styles.css +177 -0
  53. package/dist/collection/components/q2-carousel/index.js +11 -16
  54. package/dist/collection/components/q2-carousel/styles.css +3 -3
  55. package/dist/collection/components/q2-carousel-pane/index.js +2 -2
  56. package/dist/collection/components/q2-carousel-pane/styles.css +8 -3
  57. package/dist/collection/components/q2-checkbox/index.js +37 -12
  58. package/dist/collection/components/q2-checkbox-group/index.js +22 -1
  59. package/dist/collection/components/q2-dropdown/index.js +6 -15
  60. package/dist/collection/components/q2-dropdown-item/index.js +5 -5
  61. package/dist/collection/components/q2-editable-field/index.js +3 -6
  62. package/dist/collection/components/q2-icon/icons.js +393 -383
  63. package/dist/collection/components/q2-input/formatting/credit-card.js +15 -13
  64. package/dist/collection/components/q2-input/formatting/currency.js +162 -162
  65. package/dist/collection/components/q2-input/formatting/date.js +1 -1
  66. package/dist/collection/components/q2-input/formatting/generic.js +7 -8
  67. package/dist/collection/components/q2-input/formatting/number.js +6 -9
  68. package/dist/collection/components/q2-input/formatting/numeric.js +5 -5
  69. package/dist/collection/components/q2-input/formatting/phone.js +215 -215
  70. package/dist/collection/components/q2-input/formatting/postal.js +1 -1
  71. package/dist/collection/components/q2-input/index.js +81 -25
  72. package/dist/collection/components/q2-input/styles.css +19 -14
  73. package/dist/collection/components/q2-loading/index.js +4 -4
  74. package/dist/collection/components/q2-loading/skeleton/q2-loading-element/index.js +1 -1
  75. package/dist/collection/components/q2-loading/skeleton/shapes.js +8 -15
  76. package/dist/collection/components/q2-message/index.js +3 -3
  77. package/dist/collection/components/q2-optgroup/index.js +1 -1
  78. package/dist/collection/components/q2-option/index.js +19 -25
  79. package/dist/collection/components/q2-option/styles.css +5 -0
  80. package/dist/collection/components/q2-option-list/index.js +648 -0
  81. package/dist/collection/components/q2-option-list/styles.css +128 -0
  82. package/dist/collection/components/q2-pagination/index.js +275 -0
  83. package/dist/collection/components/q2-pagination/styles.css +120 -0
  84. package/dist/collection/components/q2-pill/index.js +324 -0
  85. package/dist/collection/components/q2-pill/styles.css +229 -0
  86. package/dist/collection/components/q2-radio/index.js +38 -1
  87. package/dist/collection/components/q2-radio-group/index.js +66 -24
  88. package/dist/collection/components/q2-section/index.js +5 -7
  89. package/dist/collection/components/q2-select/index.js +40 -25
  90. package/dist/collection/components/q2-stepper/index.js +8 -10
  91. package/dist/collection/components/q2-stepper/styles.css +5 -5
  92. package/dist/collection/components/q2-stepper-pane/index.js +133 -5
  93. package/dist/collection/components/q2-stepper-vertical/index.js +346 -0
  94. package/dist/collection/components/q2-stepper-vertical/styles.css +273 -0
  95. package/dist/collection/components/q2-tab-container/index.js +11 -7
  96. package/dist/collection/components/q2-tag/index.js +200 -0
  97. package/dist/collection/components/q2-tag/styles.css +141 -0
  98. package/dist/collection/components/q2-textarea/index.js +6 -6
  99. package/dist/collection/components/tecton-tab-pane/index.js +3 -10
  100. package/dist/collection/utils/index.js +25 -13
  101. package/dist/esm/click-elsewhere.entry.js +5 -7
  102. package/dist/esm/{icons-3ee662ea.js → icons-b1e11526.js} +394 -384
  103. package/dist/esm/{index-ec6660af.js → index-0ff8de52.js} +27 -15
  104. package/dist/esm/{index-be8376c0.js → index-dbfb3ecc.js} +112 -65
  105. package/dist/esm/loader.js +3 -3
  106. package/dist/esm/polyfills/css-shim.js +1 -1
  107. package/dist/esm/q2-avatar.entry.js +2 -2
  108. package/dist/esm/q2-badge.entry.js +39 -0
  109. package/dist/esm/q2-btn_2.entry.js +13 -13
  110. package/dist/esm/q2-calendar.entry.js +53 -59
  111. package/dist/esm/q2-card.entry.js +123 -0
  112. package/dist/esm/q2-carousel-pane.entry.js +5 -5
  113. package/dist/esm/q2-carousel.entry.js +318 -106
  114. package/dist/esm/q2-checkbox-group.entry.js +6 -3
  115. package/dist/esm/q2-checkbox.entry.js +18 -10
  116. package/dist/esm/q2-dropdown-item.entry.js +7 -7
  117. package/dist/esm/q2-dropdown.entry.js +8 -17
  118. package/dist/esm/q2-editable-field.entry.js +5 -8
  119. package/dist/esm/q2-icon.entry.js +3 -3
  120. package/dist/esm/q2-input.entry.js +439 -437
  121. package/dist/esm/q2-loading-element.entry.js +3 -3
  122. package/dist/esm/q2-loc.entry.js +2 -2
  123. package/dist/esm/q2-message.entry.js +5 -5
  124. package/dist/esm/q2-optgroup.entry.js +3 -3
  125. package/dist/esm/q2-option-list.entry.js +355 -0
  126. package/dist/esm/q2-option.entry.js +3 -11
  127. package/dist/esm/q2-pagination.entry.js +112 -0
  128. package/dist/esm/q2-pill.entry.js +133 -0
  129. package/dist/esm/q2-radio-group.entry.js +43 -18
  130. package/dist/esm/q2-radio.entry.js +21 -4
  131. package/dist/esm/q2-section.entry.js +5 -7
  132. package/dist/esm/q2-select.entry.js +23 -26
  133. package/dist/esm/q2-stepper-pane.entry.js +42 -4
  134. package/dist/esm/q2-stepper-vertical.entry.js +274 -0
  135. package/dist/esm/q2-stepper.entry.js +10 -12
  136. package/dist/esm/q2-tab-container.entry.js +12 -8
  137. package/dist/esm/q2-tab-pane.entry.js +1 -1
  138. package/dist/esm/q2-tag.entry.js +90 -0
  139. package/dist/esm/q2-tecton-elements.js +3 -3
  140. package/dist/esm/q2-textarea.entry.js +8 -8
  141. package/dist/esm/{shapes-81c11dfe.js → shapes-cff4e1f0.js} +9 -16
  142. package/dist/esm/tecton-tab-pane.entry.js +2 -5
  143. package/dist/loader/index.d.ts +0 -1
  144. package/dist/q2-tecton-elements/{p-75e87cca.entry.js → p-00e8f782.entry.js} +1 -1
  145. package/dist/q2-tecton-elements/p-0900bec1.entry.js +1 -0
  146. package/dist/q2-tecton-elements/p-10264ecb.entry.js +1 -0
  147. package/dist/q2-tecton-elements/p-123cdfb9.entry.js +1 -0
  148. package/dist/q2-tecton-elements/{p-fbf7c5e6.entry.js → p-1305ec5f.entry.js} +1 -1
  149. package/dist/q2-tecton-elements/p-148391d6.entry.js +1 -0
  150. package/dist/q2-tecton-elements/p-1dfaee64.entry.js +1 -0
  151. package/dist/q2-tecton-elements/{p-32ad664c.entry.js → p-221abbf6.entry.js} +1 -1
  152. package/dist/q2-tecton-elements/{p-c90a6016.js → p-255b2b4c.js} +1 -1
  153. package/dist/q2-tecton-elements/p-27736b6b.entry.js +1 -0
  154. package/dist/q2-tecton-elements/p-2846ab94.entry.js +1 -0
  155. package/dist/q2-tecton-elements/p-2bc1de01.entry.js +1 -0
  156. package/dist/q2-tecton-elements/{p-8ea2c4f7.entry.js → p-2c15414c.entry.js} +1 -1
  157. package/dist/q2-tecton-elements/p-2caa89fd.js +1 -0
  158. package/dist/q2-tecton-elements/p-327cca41.entry.js +1 -0
  159. package/dist/q2-tecton-elements/p-3a420dbf.entry.js +1 -0
  160. package/dist/q2-tecton-elements/p-3abcb09d.entry.js +1 -0
  161. package/dist/q2-tecton-elements/p-3fe98e3e.entry.js +1 -0
  162. package/dist/q2-tecton-elements/{p-bb2e110a.entry.js → p-430a979b.entry.js} +1 -1
  163. package/dist/q2-tecton-elements/{p-7e6fc65d.entry.js → p-45eb7739.entry.js} +1 -1
  164. package/dist/q2-tecton-elements/{p-750bcd33.entry.js → p-49b2abc4.entry.js} +1 -1
  165. package/dist/q2-tecton-elements/{p-9b50c3c3.entry.js → p-4ab30466.entry.js} +1 -1
  166. package/dist/q2-tecton-elements/p-50e218c7.entry.js +1 -0
  167. package/dist/q2-tecton-elements/p-5bbf2bfe.entry.js +1 -0
  168. package/dist/q2-tecton-elements/{p-ac859fcc.entry.js → p-6fec9235.entry.js} +1 -1
  169. package/dist/q2-tecton-elements/p-824aebd9.js +1 -0
  170. package/dist/q2-tecton-elements/p-a4ae89cc.entry.js +1 -0
  171. package/dist/q2-tecton-elements/{p-50967020.entry.js → p-a5562aaa.entry.js} +1 -1
  172. package/dist/q2-tecton-elements/p-ae4fed23.entry.js +1 -0
  173. package/dist/q2-tecton-elements/p-b2302cd3.entry.js +1 -0
  174. package/dist/q2-tecton-elements/p-c20cbb2d.entry.js +1 -0
  175. package/dist/q2-tecton-elements/p-ca7a3380.entry.js +1 -0
  176. package/dist/q2-tecton-elements/{p-a6f8d09a.entry.js → p-d33e152c.entry.js} +1 -1
  177. package/dist/q2-tecton-elements/{p-9024859f.entry.js → p-d5218cd6.entry.js} +1 -1
  178. package/dist/q2-tecton-elements/p-d52b435e.entry.js +1 -0
  179. package/dist/q2-tecton-elements/p-dd02cf8d.js +1 -0
  180. package/dist/q2-tecton-elements/{p-07a5d703.entry.js → p-e0e7ae8b.entry.js} +1 -1
  181. package/dist/q2-tecton-elements/{p-7e030e92.entry.js → p-ede12fc1.entry.js} +1 -1
  182. package/dist/q2-tecton-elements/{p-df182f61.entry.js → p-fdfbe75b.entry.js} +1 -1
  183. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
  184. package/dist/test/elements/q2-tag-test.js +151 -0
  185. package/dist/test/helpers.js +20 -9
  186. package/dist/types/components/q2-badge/index.d.ts +13 -0
  187. package/dist/types/components/q2-btn/index.d.ts +3 -3
  188. package/dist/types/components/q2-calendar/helpers.d.ts +1 -0
  189. package/dist/types/components/q2-calendar/index.d.ts +2 -1
  190. package/dist/types/components/q2-calendar/validation.d.ts +1 -1
  191. package/dist/types/components/q2-card/index.d.ts +35 -0
  192. package/dist/types/components/q2-checkbox/index.d.ts +3 -1
  193. package/dist/types/components/q2-checkbox-group/index.d.ts +1 -0
  194. package/dist/types/components/q2-dropdown/index.d.ts +1 -1
  195. package/dist/types/components/q2-editable-field/index.d.ts +1 -1
  196. package/dist/types/components/q2-input/formatting/credit-card.d.ts +1 -3
  197. package/dist/types/components/q2-input/index.d.ts +5 -2
  198. package/dist/types/components/q2-option/index.d.ts +2 -3
  199. package/dist/types/components/q2-option-list/index.d.ts +62 -0
  200. package/dist/types/components/q2-pagination/index.d.ts +30 -0
  201. package/dist/types/components/q2-pill/index.d.ts +39 -0
  202. package/dist/types/components/q2-radio/index.d.ts +4 -1
  203. package/dist/types/components/q2-radio-group/index.d.ts +5 -1
  204. package/dist/types/components/q2-select/index.d.ts +2 -1
  205. package/dist/types/components/q2-stepper/index.d.ts +1 -1
  206. package/dist/types/components/q2-stepper-pane/index.d.ts +16 -1
  207. package/dist/types/components/q2-stepper-vertical/index.d.ts +52 -0
  208. package/dist/types/components/q2-tab-container/index.d.ts +1 -1
  209. package/dist/types/components/q2-tag/index.d.ts +28 -0
  210. package/dist/types/components/tecton-tab-pane/index.d.ts +2 -2
  211. package/dist/types/components.d.ts +235 -11
  212. package/dist/types/global.d.ts +1 -0
  213. package/dist/types/stencil-public-runtime.d.ts +6 -4
  214. package/dist/types/util.d.ts +2 -10
  215. package/dist/types/utils/index.d.ts +1 -0
  216. package/dist/types/workspace/workspace/Tecton_tecton-production_master/packages/q2-tecton-elements/.stencil/test/elements/q2-tag-test.d.ts +1 -0
  217. package/dist/types/workspace/workspace/{_production_release_1.11.0-alpha → Tecton_tecton-production_master}/packages/q2-tecton-elements/.stencil/test/helpers.d.ts +6 -3
  218. package/package.json +13 -13
  219. package/dist/q2-tecton-elements/p-06fff43d.entry.js +0 -1
  220. package/dist/q2-tecton-elements/p-080839ed.js +0 -1
  221. package/dist/q2-tecton-elements/p-29a37091.entry.js +0 -1
  222. package/dist/q2-tecton-elements/p-37aba2a4.js +0 -1
  223. package/dist/q2-tecton-elements/p-4cd00f1a.js +0 -1
  224. package/dist/q2-tecton-elements/p-6702eb4d.entry.js +0 -1
  225. package/dist/q2-tecton-elements/p-768e3a5d.entry.js +0 -1
  226. package/dist/q2-tecton-elements/p-843b1ee9.entry.js +0 -1
  227. package/dist/q2-tecton-elements/p-943c7745.entry.js +0 -1
  228. package/dist/q2-tecton-elements/p-95a73559.entry.js +0 -1
  229. package/dist/q2-tecton-elements/p-9a977ee6.entry.js +0 -1
  230. package/dist/q2-tecton-elements/p-b281c349.entry.js +0 -1
  231. package/dist/q2-tecton-elements/p-c5e55b9f.entry.js +0 -1
  232. package/dist/q2-tecton-elements/p-ccbe9158.entry.js +0 -1
  233. package/dist/q2-tecton-elements/p-db6f90ac.entry.js +0 -1
  234. package/dist/q2-tecton-elements/p-fa6eea5c.entry.js +0 -1
@@ -1,5 +1,5 @@
1
- import { r as registerInstance } from './index-be8376c0.js';
2
- import { a as atoms } from './shapes-81c11dfe.js';
1
+ import { r as registerInstance } from './index-dbfb3ecc.js';
2
+ import { a as atoms } from './shapes-cff4e1f0.js';
3
3
 
4
4
  const stylesCss = "q2-loading-element{display:block}.skeleton-shape.rectangle:not(.no-margin){margin:var(--tct-loading-skeleton-vertical-gap, var(--tct-scale-2, 10px)) var(--tct-loading-skeleton-horizontal-gap, var(--tct-scale-2, 10px))}.skeleton-shape.circle,.skeleton-shape.rectangle{background-color:var(--tct-loading-skeleton-element-bg, var(--tct-gray-l3, var(--t-gray-14, #f2f2f2)))}.skeleton-shape.circle{border-radius:50%;padding-top:100%}";
5
5
 
@@ -12,7 +12,7 @@ const Q2Loading = class {
12
12
  ? atoms[this.shape]({
13
13
  width: this.width,
14
14
  height: this.height,
15
- borderRadius: this.borderRadius
15
+ borderRadius: this.borderRadius,
16
16
  })
17
17
  : '';
18
18
  }
@@ -1,5 +1,5 @@
1
- import { r as registerInstance, h } from './index-be8376c0.js';
2
- import { l as loc } from './index-ec6660af.js';
1
+ import { r as registerInstance, h } from './index-dbfb3ecc.js';
2
+ import { l as loc } from './index-0ff8de52.js';
3
3
 
4
4
  const stylesCss = "*{box-sizing:border-box}*:active{outline:none}*:focus{outline:none;box-shadow:var(--const-global-focus)}:host{box-shadow:none !important}::-moz-focus-inner{border:none}input,textarea,button{font-family:inherit;font-size: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:inline}";
5
5
 
@@ -1,5 +1,5 @@
1
- import { r as registerInstance, h, g as getElement } from './index-be8376c0.js';
2
- import { e as isFirefox, o as overrideFocus, n as nextPaint, i as isEventFromElement } from './index-ec6660af.js';
1
+ import { r as registerInstance, h, g as getElement } from './index-dbfb3ecc.js';
2
+ import { f as isFirefox, o as overrideFocus, n as nextPaint, i as isEventFromElement } from './index-0ff8de52.js';
3
3
 
4
4
  const stylesCss = "*{box-sizing:border-box}*:active{outline:none}*:focus{outline:none;box-shadow:var(--const-global-focus)}:host{box-shadow:none !important}::-moz-focus-inner{border:none}input,textarea,button{font-family:inherit;font-size: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}:host([hidden]){display:none}.message{border-left-width:var(--tct-message-bar-width, var(--t-message-bar-width, var(--app-scale-1, 5px)));border-left-style:solid;display:grid;gap:var(--tct-scale-1, var(--app-scale-1, 5px));align-items:flex-start;background:var(--tct-message-bg, var(--t-message-bg, var(--tct-gray-14, var(--t-gray-14, var(--tct-gray-l3, var(--app-gray-l3, #f2f2f2))))));color:var(--tct-message-font-color, var(--t-message-font-color, inherit));box-shadow:var(--tct-message-box-shadow, var(--t-message-box-shadow, inherit));border-radius:var(--tct-message-border-radius, var(--t-message-border-radius, inherit))}.message:focus{box-shadow:var(--const-global-focus)}.message-icon{width:24px}.message-content{flex:1}::slotted(ul){padding-left:var(--tct-scale-l3, var(--app-scale-3, 15px))}:host(:not([appearance])),:host([appearance=standard]){margin:var(--tct-scale-l3, var(--app-scale-3, 15px)) 0}:host(:not([appearance])) .message,:host([appearance=standard]) .message{grid-template-columns:24px 1fr;--comp-padding:var(--tct-message-padding, var(--t-message-padding, var(--app-scale-3, 15px)));padding:var(--comp-padding);padding-top:calc(var(--comp-padding) - var(--tct-scale-1, var(--app-scale-1, 5px)));padding-left:calc(var(--comp-padding) - var(--tct-scale-2, var(--app-scale-2, 10px)))}:host(:not([appearance])) .message-content,:host([appearance=standard]) .message-content{padding-top:var(--tct-scale-1, var(--app-scale-1, 5px))}:host(:not([appearance])) ::slotted(ul),:host([appearance=standard]) ::slotted(ul){margin:var(--tct-scale-l3, var(--app-scale-3, 15px)) 0}:host([appearance=minimal]){margin:0}:host([appearance=minimal]) .message{padding:var(--tct-message-minimal-padding, var(--t-message-minimal-padding, var(--app-scale-2, 10px)));grid-template-columns:1fr}:host([appearance=minimal]) ::slotted(ul){margin:var(--tct-scale-1, var(--app-scale-1, 5px)) 0}:host(:not([type])) .message,:host([type=info]) .message{border-left-color:var(--tct-stoplight-info, var(--const-stoplight-info, #0079c1))}:host(:not([type])) .message-icon,:host([type=info]) .message-icon{--tct-icon-stroke-primary:var(--tct-stoplight-info, var(--const-stoplight-info, #0079c1));--tct-icon-stroke-secondary:var(--tct-stoplight-info, var(--const-stoplight-info, #0079c1))}:host([type=success]) .message{border-left-color:var(--tct-stoplight-success, var(--const-stoplight-success, #0e8a00))}:host([type=success]) .message-icon{--tct-icon-stroke-primary:var(--tct-stoplight-success, var(--const-stoplight-success, #0e8a00));--tct-icon-stroke-secondary:var(--tct-stoplight-success, var(--const-stoplight-success, #0e8a00))}:host([type=warning]) .message{border-left-color:var(--tct-stoplight-warning, var(--const-stoplight-warning, #f0b400))}:host([type=warning]) .message-icon{--tct-icon-stroke-primary:var(--tct-stoplight-warning, var(--const-stoplight-warning, #f0b400));--tct-icon-stroke-secondary:var(--tct-stoplight-warning, var(--const-stoplight-warning, #f0b400))}:host([type=error]) .message,:host([type=danger]) .message{border-left-color:var(--tct-stoplight-error, var(--const-stoplight-alert, #c30000))}:host([type=error]) .message-icon,:host([type=danger]) .message-icon{--tct-icon-stroke-primary:var(--tct-stoplight-error, var(--const-stoplight-alert, #c30000));--tct-icon-stroke-secondary:var(--tct-stoplight-error, var(--const-stoplight-alert, #c30000))}";
5
5
 
@@ -45,10 +45,10 @@ function generateIcon(type) {
45
45
  warning: 'warning',
46
46
  danger: 'error',
47
47
  error: 'error',
48
- info: 'info'
48
+ info: 'info',
49
49
  };
50
- const icon = iconMap[type] || iconMap['info'];
51
- return h("q2-icon", { type: icon, class: "message-icon" });
50
+ const icon = iconMap[type] || iconMap.info;
51
+ return (h("q2-icon", { type: icon, class: "message-icon" }));
52
52
  }
53
53
  Q2Message.style = stylesCss;
54
54
 
@@ -1,5 +1,5 @@
1
- import { r as registerInstance, h, g as getElement } from './index-be8376c0.js';
2
- import { c as createGuid, l as loc } from './index-ec6660af.js';
1
+ import { r as registerInstance, h, g as getElement } from './index-dbfb3ecc.js';
2
+ import { c as createGuid, l as loc } from './index-0ff8de52.js';
3
3
 
4
4
  const stylesCss = "*{box-sizing:border-box}*:active{outline:none}*:focus{outline:none;box-shadow:var(--const-global-focus)}:host{box-shadow:none !important}::-moz-focus-inner{border:none}input,textarea,button{font-family:inherit;font-size: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}.q2-optgroup-header{background-color:var(--tct-optgroup-header-bg, var(--tct-gray-13, var(--t-gray-13, var(--tct-gray-l2, var(--app-gray-l2, #e6e6e6)))));padding:var(--tct-scale-1, var(--app-scale-1, 5px)) var(--tct-scale-2, var(--app-scale-2, 10px));font-weight:var(--tct-optgroup-header-font-weight, 600);text-transform:var(--tct-optgroup-header-text-transform, uppercase);}";
5
5
 
@@ -18,7 +18,7 @@ const Q2Optgroup = class {
18
18
  const observer = new MutationObserver(this.setHidden);
19
19
  observer.observe(this.hostElement, { childList: true, attributes: true, subtree: true });
20
20
  this.mutationObserver = observer;
21
- //set initially
21
+ // set initially
22
22
  this.setHidden();
23
23
  this.disabledWatcher(this.disabled);
24
24
  }
@@ -0,0 +1,355 @@
1
+ import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-dbfb3ecc.js';
2
+ import { o as overrideFocus, i as isEventFromElement } from './index-0ff8de52.js';
3
+
4
+ const stylesCss = "*{box-sizing:border-box}*:active{outline:none}*:focus{outline:none;box-shadow:var(--const-global-focus)}:host{box-shadow:none !important}::-moz-focus-inner{border:none}input,textarea,button{font-family:inherit;font-size: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{position:relative;width:100%;display:block}.content{margin-top:var(--tct-option-list-margin, var(--t-option-list-margin, var(--app-scale-1x, 5px)));position:absolute;height:0;opacity:0;visibility:hidden;background-color:var(--app-white);color:var(--t-font-color);z-index:100;width:max-content;min-width:var(--tct-option-list-min-width, var(--t-option-list-min-width, 135px));box-shadow:var(--app-shadow-1);overflow:hidden;text-align:start;transition:opacity var(--app-tween-1);border-radius:var(--tct-option-list-border-radius, var(--t-option-list-border-radius, 0));--comp-scrollbar-size:var(--tct-scrollbar-size, var(--t-scrollbar-size, var(--app-scale-1x, 5px)));--comp-scrollbar-border-radius:var(--tct-scrollbar-border-radius, var(--t-scrollbar-border-radius, var(--app-border-radius-1, 3px)));--comp-scrollbar-color:var(--tct-scrollbar-color, var(--t-scrollbar-color, var(--t-a11y-gray-color, #747474)));scrollbar-width:thin;scrollbar-color:var(--comp-scrollbar-color) transparent}.content::-webkit-scrollbar{width:var(--comp-scrollbar-size);height:var(--comp-scrollbar-size);margin:5px}.content::-webkit-scrollbar-thumb{background:var(--comp-scrollbar-color);border-radius:var(--comp-scrollbar-border-radius)}.content::-webkit-scrollbar-track{background:transparent;border-radius:var(--comp-scrollbar-border-radius)}:host(:not([align=right])) .content{left:0}:host([align=right]) .content{right:0}:host([open]) .content{display:block;height:auto;overflow:auto;opacity:1;visibility:visible}:host([is-sizeable]) .content{display:block;height:auto}:host([alignment=right]) .content{left:unset;right:0}";
5
+
6
+ const Q2OptionList = class {
7
+ constructor(hostRef) {
8
+ registerInstance(this, hostRef);
9
+ this.change = createEvent(this, "change", 7);
10
+ this.optionListState = createEvent(this, "optionListState", 7);
11
+ this.role = 'listbox';
12
+ this.direction = 'down';
13
+ this.selectedOptions = [];
14
+ this.scheduledAfterRender = [];
15
+ /// Event Handlers ///
16
+ /* tslint:disable:cyclomatic-complexity */
17
+ this.keydownHandler = (event, ignoreSelectionEvents) => {
18
+ event.stopPropagation();
19
+ const { activeIndex, customSearch, allOptions } = this;
20
+ const { key, shiftKey } = event;
21
+ let newOption;
22
+ switch (key) {
23
+ case ' ':
24
+ case 'Enter':
25
+ if (ignoreSelectionEvents) {
26
+ this.setDefaultActiveElement();
27
+ break;
28
+ }
29
+ event.preventDefault();
30
+ newOption = allOptions.find(element => element.active);
31
+ if (!newOption || newOption.disabled)
32
+ break;
33
+ this.selectOption(newOption.value);
34
+ break;
35
+ case 'ArrowUp':
36
+ event.preventDefault();
37
+ const isFirstOption = activeIndex === 0;
38
+ if (isFirstOption)
39
+ break;
40
+ if (activeIndex === undefined) {
41
+ this.setDefaultActiveElement();
42
+ }
43
+ else {
44
+ const nextIndex = this.getNextVisibleIndex(-1);
45
+ if (nextIndex === -1)
46
+ break;
47
+ this.adjustActiveOptionAndScroll(nextIndex - activeIndex);
48
+ }
49
+ break;
50
+ case 'ArrowDown':
51
+ event.preventDefault();
52
+ const isLastOption = activeIndex === allOptions.length - 1;
53
+ if (isLastOption)
54
+ break;
55
+ if (activeIndex === undefined) {
56
+ this.setDefaultActiveElement();
57
+ }
58
+ else {
59
+ const nextIndex = this.getNextVisibleIndex(1);
60
+ if (nextIndex === -1)
61
+ break;
62
+ this.adjustActiveOptionAndScroll(nextIndex - activeIndex);
63
+ }
64
+ break;
65
+ case 'Home':
66
+ event.preventDefault();
67
+ this.openDropdownWithActiveElement(0);
68
+ break;
69
+ case 'End':
70
+ event.preventDefault();
71
+ this.openDropdownWithActiveElement(allOptions.length - 1);
72
+ break;
73
+ case 'PageUp':
74
+ event.preventDefault();
75
+ this.openDropdownWithActiveElement(Math.max(activeIndex - 10, 0));
76
+ break;
77
+ case 'PageDown':
78
+ event.preventDefault();
79
+ this.openDropdownWithActiveElement(Math.min(activeIndex + 10, allOptions.length - 1));
80
+ break;
81
+ case 'Tab':
82
+ if (ignoreSelectionEvents)
83
+ break;
84
+ if (shiftKey)
85
+ break;
86
+ newOption = allOptions.find(element => element.active);
87
+ if (!newOption || newOption.disabled)
88
+ return;
89
+ this.selectOption(newOption.value);
90
+ break;
91
+ case 'Esc':
92
+ case 'Escape':
93
+ if (this.noSelect)
94
+ this.setActiveElement(null);
95
+ this.open = false;
96
+ break;
97
+ default:
98
+ if (customSearch)
99
+ break;
100
+ if (!key.match(/^[A-Za-z0-9]$/))
101
+ break;
102
+ // search in non-searchable select: alpha-numeric only
103
+ this.searchAndFocus(key);
104
+ break;
105
+ }
106
+ };
107
+ /* tslint:enable:cyclomatic-complexity */
108
+ this.focusoutHandler = (event) => {
109
+ const { relatedTarget } = event;
110
+ const isInDropdown = this.allOptions.includes(relatedTarget);
111
+ const isInLightDom = !isInDropdown && this.hostElement.contains(relatedTarget);
112
+ if (isInDropdown || isInLightDom) {
113
+ event.stopPropagation();
114
+ }
115
+ };
116
+ this.clickHandler = (event) => {
117
+ const target = event.target;
118
+ if (target.localName !== 'q2-option' || target.disabled) {
119
+ return;
120
+ }
121
+ this.selectOption(target.value);
122
+ };
123
+ }
124
+ /// LifeCycle Hooks ///
125
+ componentWillLoad() {
126
+ this.hasOptions = !!this.hostElement.querySelectorAll('q2-option').length;
127
+ }
128
+ componentDidLoad() {
129
+ overrideFocus(this.hostElement);
130
+ this.checkOptions();
131
+ }
132
+ componentDidRender() {
133
+ this.scheduledAfterRender.forEach(fn => fn());
134
+ this.scheduledAfterRender = [];
135
+ }
136
+ /// Getters ///
137
+ get allOptions() {
138
+ return this.getRootSlot(this.hostElement);
139
+ }
140
+ /// Helpers ///
141
+ checkOptions() {
142
+ const { noSelect, type, allOptions } = this;
143
+ if (!noSelect && !type)
144
+ return;
145
+ const optionRole = type === 'menu' ? 'menuitem' : 'option';
146
+ allOptions.forEach(option => {
147
+ if (noSelect)
148
+ option.noSelect = true;
149
+ if (type)
150
+ option.role = optionRole;
151
+ });
152
+ }
153
+ getRootSlot(element) {
154
+ var _a;
155
+ const slot = element.querySelector('slot');
156
+ const assignedElements = (_a = slot === null || slot === void 0 ? void 0 : slot.assignedElements()) !== null && _a !== void 0 ? _a : Array.from(element.children);
157
+ const hasAnotherSlot = !!assignedElements.length && assignedElements[0].tagName === 'SLOT';
158
+ if (hasAnotherSlot) {
159
+ return this.getRootSlot(assignedElements[0]);
160
+ }
161
+ else {
162
+ return assignedElements;
163
+ }
164
+ }
165
+ scrollToActiveOption() {
166
+ const activeOption = this.allOptions[this.activeIndex];
167
+ activeOption === null || activeOption === void 0 ? void 0 : activeOption.scrollIntoView({ block: 'nearest' });
168
+ }
169
+ resizeIframe() {
170
+ var _a, _b;
171
+ return (_b = (_a = window.TectonElements) === null || _a === void 0 ? void 0 : _a.resizeIframe) === null || _b === void 0 ? void 0 : _b.call(_a);
172
+ }
173
+ openDropdownWithActiveElement(activeIndex) {
174
+ if (this.disabled)
175
+ return;
176
+ this.activeIndex = activeIndex;
177
+ this.open = true;
178
+ this.setActiveOption();
179
+ this.setFocusedOption();
180
+ this.scheduledAfterRender.push(() => {
181
+ this.scrollToActiveOption();
182
+ this.resizeIframe();
183
+ });
184
+ }
185
+ getDefaultActiveIndex() {
186
+ const { allOptions } = this;
187
+ const firstSelected = allOptions.findIndex(element => element.selected);
188
+ if (firstSelected > -1)
189
+ return firstSelected;
190
+ const firstEnabled = allOptions.findIndex(element => !element.hidden);
191
+ if (firstEnabled > -1)
192
+ return firstEnabled;
193
+ return 0;
194
+ }
195
+ updateSingleOptionAttrs() {
196
+ var _a, _b;
197
+ const { allOptions, selectedOptions } = this;
198
+ const singleValue = (_b = (_a = selectedOptions[0]) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : undefined;
199
+ allOptions.forEach(element => {
200
+ element.selected = element.value === singleValue;
201
+ });
202
+ }
203
+ updateMultipleOptionAttrs() {
204
+ const { allOptions, selectedOptions } = this;
205
+ const selectedValues = selectedOptions.map(option => option.value);
206
+ allOptions.forEach(element => {
207
+ element.selected = selectedValues.includes(element.value);
208
+ });
209
+ }
210
+ setActiveOption() {
211
+ if (!this.open)
212
+ return;
213
+ const activeIndex = this.activeIndex;
214
+ this.allOptions.forEach((element, elementIndex) => {
215
+ element.active = activeIndex === elementIndex;
216
+ });
217
+ }
218
+ setFocusedOption() {
219
+ const option = this.allOptions[this.activeIndex];
220
+ if (!option)
221
+ return;
222
+ setTimeout(() => {
223
+ option.focus();
224
+ }, 25);
225
+ }
226
+ getNextVisibleIndex(direction) {
227
+ let index = this.activeIndex + direction;
228
+ while (index >= 0 && index <= this.allOptions.length - 1) {
229
+ const { display, visibility } = window.getComputedStyle(this.allOptions[index]);
230
+ if (display !== 'none' && visibility !== 'hidden') {
231
+ return index;
232
+ }
233
+ index = index + direction;
234
+ }
235
+ return -1;
236
+ }
237
+ selectOption(selectedValue) {
238
+ const option = this.allOptions.find(({ value }) => value === selectedValue);
239
+ const valueObject = {
240
+ value: selectedValue,
241
+ display: option.display || option.innerText.trim(),
242
+ };
243
+ const { multiple, noSelect } = this;
244
+ let values;
245
+ if (multiple) {
246
+ const { selectedOptions = [] } = this;
247
+ const isAlreadySelected = !!selectedOptions.find(({ value }) => value === selectedValue);
248
+ if (isAlreadySelected) {
249
+ values = selectedOptions.filter(({ value }) => value !== selectedValue);
250
+ }
251
+ else {
252
+ values = [...selectedOptions, valueObject];
253
+ }
254
+ }
255
+ else {
256
+ values = [valueObject];
257
+ }
258
+ if (noSelect)
259
+ this.setActiveElement(null);
260
+ else
261
+ this.selectedOptions = values;
262
+ this.change.emit({ value: selectedValue, values });
263
+ if (multiple)
264
+ return;
265
+ this.open = false;
266
+ }
267
+ adjustActiveOptionAndScroll(numToAdd) {
268
+ this.activeIndex += numToAdd;
269
+ this.setActiveOption();
270
+ this.setFocusedOption();
271
+ this.scrollToActiveOption();
272
+ }
273
+ resetTimer() {
274
+ if (this.searchStringTimer) {
275
+ clearTimeout(this.searchStringTimer);
276
+ }
277
+ this.searchStringTimer = window.setTimeout(() => {
278
+ this.searchString = null;
279
+ }, 2000);
280
+ }
281
+ searchAndFocus(key) {
282
+ this.resetTimer();
283
+ let searchString = this.searchString ? `${this.searchString}${key}` : key;
284
+ searchString = searchString.replace(/[^0-9a-z]/gi, '');
285
+ this.searchString = searchString;
286
+ const searchRegEx = new RegExp(searchString, 'i');
287
+ const foundIndex = this.allOptions.findIndex(option => option.value === searchString || option.textContent.match(searchRegEx));
288
+ if (foundIndex === -1)
289
+ return;
290
+ this.setActiveElement(foundIndex);
291
+ }
292
+ /// Watchers ///
293
+ selectedOptionsUpdated() {
294
+ if (this.multiple) {
295
+ this.updateMultipleOptionAttrs();
296
+ }
297
+ else {
298
+ this.updateSingleOptionAttrs();
299
+ }
300
+ }
301
+ openChanged(newValue) {
302
+ this.optionListState.emit({ open: newValue });
303
+ }
304
+ /// Listeners ///
305
+ delegateFocus(event) {
306
+ if (!isEventFromElement(event, this.hostElement))
307
+ return;
308
+ this.open = true;
309
+ this.setDefaultActiveElement();
310
+ }
311
+ handleClick(event) {
312
+ event.stopPropagation();
313
+ }
314
+ /// Public Methods ///
315
+ toggle() {
316
+ const isOpen = !this.open;
317
+ this.open = isOpen;
318
+ }
319
+ setDefaultActiveElement() {
320
+ this.activeIndex = this.getDefaultActiveIndex();
321
+ this.setActiveOption();
322
+ this.setFocusedOption();
323
+ }
324
+ setActiveElement(index) {
325
+ this.activeIndex = index;
326
+ this.setActiveOption();
327
+ this.setFocusedOption();
328
+ }
329
+ handleExternalKeydown(event) {
330
+ const keysThatTriggerOpen = ['ArrowDown', 'ArrowUp', 'PageDown', 'PageUp', 'Home', 'End'];
331
+ if (keysThatTriggerOpen.includes(event.key)) {
332
+ this.open = true;
333
+ }
334
+ const keysThatTriggerDefault = ['ArrowDown', 'ArrowUp'];
335
+ if (keysThatTriggerDefault.includes(event.key)) {
336
+ event.preventDefault();
337
+ this.setDefaultActiveElement();
338
+ }
339
+ else {
340
+ this.keydownHandler(event, true);
341
+ }
342
+ }
343
+ /// DOM ///
344
+ render() {
345
+ return (h(Host, null, h("div", { class: "content", ref: el => (this.contentElement = el), onFocusout: this.focusoutHandler }, h("div", { class: "options", role: this.type || 'listbox', onKeyDown: this.keydownHandler, onClick: this.clickHandler }, h("slot", null)))));
346
+ }
347
+ get hostElement() { return getElement(this); }
348
+ static get watchers() { return {
349
+ "selectedOptions": ["selectedOptionsUpdated"],
350
+ "open": ["openChanged"]
351
+ }; }
352
+ };
353
+ Q2OptionList.style = stylesCss;
354
+
355
+ export { Q2OptionList as q2_option_list };
@@ -1,26 +1,18 @@
1
- import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-be8376c0.js';
1
+ import { r as registerInstance, h, H as Host, g as getElement } from './index-dbfb3ecc.js';
2
2
 
3
- const stylesCss = "*{box-sizing:border-box}*:active{outline:none}*:focus{outline:none;box-shadow:var(--const-global-focus)}:host{box-shadow:none !important}::-moz-focus-inner{border:none}input,textarea,button{font-family:inherit;font-size: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{padding:0 var(--tct-scale-2, var(--app-scale-2, 10px));min-height:44px;align-items:center;cursor:pointer;grid-template-columns:var(--tct-option-selected-icon-size, var(--tct-scale-3, var(--app-scale-3, 15px))) 1fr;align-items:center;grid-template-areas:\"icon content\";gap:var(--tct-scale-1, var(--app-scale-1, 5px))}:host([aria-disabled]){cursor:not-allowed;opacity:var(--tct-disabled-opacity, var(--app-disabled-opacity, 0.4));pointer-events:none}:host([aria-hidden]){display:none}:host(:not([hidden]):not([aria-hidden])){display:grid}:host(:not([aria-disabled]):hover),:host([active]),:host(:focus){background-color:var(--tct-option-active-bg, var(--tct-gray-14, var(--t-gray-14, var(--tct-gray-l3, var(--app-gray-l3, #f2f2f2)))))}q2-icon{grid-area:icon;--tct-icon-size:var(--tct-option-selected-icon-size, var(--tct-scale-3, var(--app-scale-3, 15px)))}.content{display:block;grid-area:content}:host(:not([multiline])) .content{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}";
3
+ const stylesCss = "*{box-sizing:border-box}*:active{outline:none}*:focus{outline:none;box-shadow:var(--const-global-focus)}:host{box-shadow:none !important}::-moz-focus-inner{border:none}input,textarea,button{font-family:inherit;font-size: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{padding:0 var(--tct-scale-2, var(--app-scale-2, 10px));min-height:44px;align-items:center;cursor:pointer;grid-template-columns:var(--tct-option-selected-icon-size, var(--tct-scale-3, var(--app-scale-3, 15px))) 1fr;align-items:center;grid-template-areas:\"icon content\";gap:var(--tct-scale-1, var(--app-scale-1, 5px))}:host([_no-select]){grid-template-columns:1fr;grid-template-areas:\"content\"}:host([aria-disabled]){cursor:not-allowed;opacity:var(--tct-disabled-opacity, var(--app-disabled-opacity, 0.4));pointer-events:none}:host([aria-hidden]){display:none}:host(:not([hidden]):not([aria-hidden])){display:grid}:host(:not([aria-disabled]):hover),:host([active]),:host(:focus){background-color:var(--tct-option-active-bg, var(--tct-gray-14, var(--t-gray-14, var(--tct-gray-l3, var(--app-gray-l3, #f2f2f2)))))}q2-icon{grid-area:icon;--tct-icon-size:var(--tct-option-selected-icon-size, var(--tct-scale-3, var(--app-scale-3, 15px)))}.content{display:block;grid-area:content}:host(:not([multiline])) .content{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}";
4
4
 
5
5
  const Q2Option = class {
6
6
  constructor(hostRef) {
7
7
  registerInstance(this, hostRef);
8
- this.click = createEvent(this, "click", 7);
9
8
  this.role = 'option';
10
9
  this.tabindex = '-1';
11
10
  this._multiSelectHidden = false;
12
- this.onClick = (event) => {
13
- event.stopImmediatePropagation();
14
- const { disabled, disabledGroup } = this;
15
- if (disabled || disabledGroup)
16
- return;
17
- this.click.emit();
18
- };
19
11
  }
20
12
  render() {
21
13
  const { disabled, disabledGroup, selected, _multiSelectHidden } = this;
22
14
  const isDisabled = disabled || disabledGroup;
23
- return (h(Host, { "aria-disabled": isDisabled ? 'true' : undefined, "aria-selected": selected ? 'true' : undefined, "aria-hidden": _multiSelectHidden ? 'true' : undefined }, this.selected && h("q2-icon", { type: "checkmark" }), h("div", { class: "content", onClick: this.onClick }, h("slot", null))));
15
+ return (h(Host, { "aria-disabled": isDisabled ? 'true' : undefined, "aria-selected": selected ? 'true' : undefined, "aria-hidden": _multiSelectHidden ? 'true' : undefined }, this.selected && h("q2-icon", { type: "checkmark" }), h("div", { class: "content" }, h("slot", null))));
24
16
  }
25
17
  get hostElement() { return getElement(this); }
26
18
  };
@@ -0,0 +1,112 @@
1
+ import { r as registerInstance, c as createEvent, h, g as getElement } from './index-dbfb3ecc.js';
2
+ import { o as overrideFocus, i as isEventFromElement, l as loc, n as nextPaint } from './index-0ff8de52.js';
3
+
4
+ const stylesCss = "*{box-sizing:border-box}*:active{outline:none}*:focus{outline:none;box-shadow:var(--const-global-focus)}:host{box-shadow:none !important}::-moz-focus-inner{border:none}input,textarea,button{font-family:inherit;font-size: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{text-align:right;display:block}:host([hidden]){display:none}.container{display:inline-flex;column-gap:var(--tct-pagination-column-gap, var(--t-pagination-column-gap, var(--app-scale-2x, 10px)));align-items:center;height:var(--tct-pagination-height, var(--t-pagination-height, 44px))}.btn-group{display:flex;gap:var(--tct-pagination-btn-gap, var(--t-pagination-btn-gap, 0))}.description,.controls{white-space:nowrap}.controls{display:grid;grid-template-columns:auto 50px auto;align-items:center;gap:var(--tct-pagination-controls-gap, var(--t-pagination-controls-gap, var(--app-scale-1x, 5px)))}.controls[hidden]{display:none}.input-wrapper{height:var(--tct-pagination-height, var(--t-pagination-height, 44px));display:flex;align-items:center}q2-icon{--tct-icon-size:var(--tct-pagination-icon-size, var(--t-pagination-icon-size, 12px));color:var(--tct-pagination-icon-color, var(--t-pagination-icon-color, var(--t-text, #4d4d4d)))}q2-input{--tct-input-margin-top:0;--tct-input-margin-bottom:0;--tct-input-height:var(--tct-pagination-input-height, var(--t-pagination-input-height, 30px));--tct-input-min-height:var(--tct-input-height);--tct-input-align:center}";
5
+
6
+ const Q2Pagination = class {
7
+ constructor(hostRef) {
8
+ registerInstance(this, hostRef);
9
+ this.change = createEvent(this, "change", 7);
10
+ this.handlePageChange = (page) => {
11
+ const { totalPages, inputField } = this;
12
+ if (page < 1) {
13
+ page = 1;
14
+ }
15
+ else if (page > totalPages) {
16
+ page = totalPages;
17
+ }
18
+ if (inputField.value !== `${page}`)
19
+ inputField.value = `${page}`;
20
+ if (!this.hostElement.onchange) {
21
+ this.page = page;
22
+ }
23
+ this.change.emit({ value: page });
24
+ };
25
+ }
26
+ ////////// LIFECYCLE HOOKS ////////
27
+ componentDidLoad() {
28
+ if (this.recordsOnly || this.pagesOnly)
29
+ return;
30
+ this.containerWidth = this.containerElement.clientWidth;
31
+ this.resizeObserver = new ResizeObserver(() => this.checkSize());
32
+ this.resizeObserver.observe(this.hostElement);
33
+ overrideFocus(this.hostElement);
34
+ }
35
+ disconnectedCallback() {
36
+ var _a;
37
+ (_a = this.resizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
38
+ }
39
+ onHostElementFocus(event) {
40
+ var _a;
41
+ if (!isEventFromElement(event, this.hostElement))
42
+ return;
43
+ const { isFullViewHidden, containerElement, inputField } = this;
44
+ if (isFullViewHidden) {
45
+ (_a = containerElement.querySelector('q2-btn:not([disabled])')) === null || _a === void 0 ? void 0 : _a.focus();
46
+ }
47
+ else {
48
+ inputField.focus();
49
+ }
50
+ }
51
+ get isFullViewHidden() {
52
+ return this.isSmall || this.recordsOnly || this.pagesOnly;
53
+ }
54
+ get pageWithDefault() {
55
+ return this.page || 1;
56
+ }
57
+ get perPageWithDefault() {
58
+ return this.perPage || 10;
59
+ }
60
+ get totalWithDefault() {
61
+ return this.total || 0;
62
+ }
63
+ get recordTypeWithDefault() {
64
+ return this.recordType || loc('tecton.element.pagination.defaultRecordType');
65
+ }
66
+ get currentRange() {
67
+ const { perPageWithDefault: perPage, totalWithDefault: total, pageWithDefault: page } = this;
68
+ const start = (page - 1) * perPage + 1;
69
+ const end = Math.min(page * perPage, total);
70
+ return `${start} - ${end}`;
71
+ }
72
+ get totalPages() {
73
+ const { pagesOnly, totalWithDefault: total, perPageWithDefault: perPage, pages } = this;
74
+ if (pagesOnly && pages && !isNaN(parseInt(`${pages}`)))
75
+ return pages;
76
+ return Math.ceil(total / perPage);
77
+ }
78
+ checkSize() {
79
+ const { hostElement, containerElement } = this;
80
+ const isOverflowing = this.containerWidth > hostElement.clientWidth;
81
+ this.isSmall = isOverflowing;
82
+ if (isOverflowing)
83
+ return;
84
+ nextPaint(() => {
85
+ const containerWidthHasNotChanged = this.containerWidth === containerElement.clientWidth;
86
+ if (containerWidthHasNotChanged)
87
+ return;
88
+ this.containerWidth = containerElement.clientWidth;
89
+ this.checkSize();
90
+ });
91
+ }
92
+ ////////// OBSERVERS //////////
93
+ render() {
94
+ const { pagesOnly, isFullViewHidden, recordTypeWithDefault: recordType, totalPages, totalWithDefault: total, pageWithDefault: page, currentRange, } = this;
95
+ const onFirstPage = page === 1;
96
+ const onLastPage = page === totalPages;
97
+ return (h("nav", { class: "container", ref: el => (this.containerElement = el), "aria-label": loc('tecton.element.pagination.title') }, h("div", { class: "description", "test-id": "description" }, pagesOnly
98
+ ? loc('tecton.element.pagination.pages', {
99
+ current: page,
100
+ total: totalPages,
101
+ })
102
+ : loc('tecton.element.pagination.description', {
103
+ range: currentRange,
104
+ recordType: recordType.toLowerCase(),
105
+ total: total.toLocaleString(),
106
+ })), h("div", { class: "btn-group" }, h("q2-btn", { label: "tecton.element.pagination.goToFirstPage", disabled: onFirstPage, hidden: isFullViewHidden, onClick: () => this.handlePageChange(1), "test-id": "firstPageBtn", "hide-label": true }, h("q2-icon", { type: "chevron-double-left" })), h("q2-btn", { label: loc('tecton.element.pagination.goToPage', [page - 1]), disabled: onFirstPage, onClick: () => this.handlePageChange(page - 1), "test-id": "prevPageBtn", "hide-label": true }, h("q2-icon", { type: "chevron-left" }))), h("div", { class: "controls", hidden: isFullViewHidden, "test-id": "controls" }, h("span", { "aria-hidden": "true" }, loc('tecton.element.pagination.page')), h("div", { class: "input-wrapper", onClick: () => this.inputField.dispatchEvent(new FocusEvent('focus')) }, h("q2-input", { type: "number", value: `${page}`, min: 1, max: this.totalPages, hideLabel: true, optional: true, label: `${loc('tecton.element.pagination.page')} (${loc('tecton.element.pagination.ofPages', [totalPages.toLocaleString()])})`, onChange: event => this.handlePageChange(event.detail.value), "test-id": "pageInput", current: "page", ref: el => (this.inputField = el) })), h("span", { "aria-hidden": "true" }, loc('tecton.element.pagination.ofPages', [totalPages.toLocaleString()]))), h("div", { class: "btn-group" }, h("q2-btn", { label: loc('tecton.element.pagination.goToPage', [page + 1]), disabled: onLastPage, onClick: () => this.handlePageChange(page + 1), "test-id": "nextPageBtn", "hide-label": true }, h("q2-icon", { type: "chevron-right" })), h("q2-btn", { label: "tecton.element.pagination.goToLastPage", disabled: onLastPage, hidden: isFullViewHidden, onClick: () => this.handlePageChange(totalPages), "test-id": "lastPageBtn", "hide-label": true }, h("q2-icon", { type: "chevron-double-right" })))));
107
+ }
108
+ get hostElement() { return getElement(this); }
109
+ };
110
+ Q2Pagination.style = stylesCss;
111
+
112
+ export { Q2Pagination as q2_pagination };