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

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 (235) 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 +54 -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 +19 -11
  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 +36 -31
  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 +45 -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 +36 -11
  58. package/dist/collection/components/q2-checkbox/styles.css +1 -0
  59. package/dist/collection/components/q2-checkbox-group/index.js +22 -1
  60. package/dist/collection/components/q2-dropdown/index.js +6 -15
  61. package/dist/collection/components/q2-dropdown-item/index.js +5 -5
  62. package/dist/collection/components/q2-editable-field/index.js +3 -6
  63. package/dist/collection/components/q2-icon/icons.js +393 -383
  64. package/dist/collection/components/q2-input/formatting/credit-card.js +15 -13
  65. package/dist/collection/components/q2-input/formatting/currency.js +162 -162
  66. package/dist/collection/components/q2-input/formatting/date.js +1 -1
  67. package/dist/collection/components/q2-input/formatting/generic.js +7 -8
  68. package/dist/collection/components/q2-input/formatting/number.js +6 -9
  69. package/dist/collection/components/q2-input/formatting/numeric.js +5 -5
  70. package/dist/collection/components/q2-input/formatting/phone.js +215 -215
  71. package/dist/collection/components/q2-input/formatting/postal.js +1 -1
  72. package/dist/collection/components/q2-input/index.js +81 -25
  73. package/dist/collection/components/q2-input/styles.css +19 -14
  74. package/dist/collection/components/q2-loading/index.js +4 -4
  75. package/dist/collection/components/q2-loading/skeleton/q2-loading-element/index.js +1 -1
  76. package/dist/collection/components/q2-loading/skeleton/shapes.js +8 -15
  77. package/dist/collection/components/q2-message/index.js +3 -3
  78. package/dist/collection/components/q2-optgroup/index.js +1 -1
  79. package/dist/collection/components/q2-option/index.js +19 -25
  80. package/dist/collection/components/q2-option/styles.css +5 -0
  81. package/dist/collection/components/q2-option-list/index.js +648 -0
  82. package/dist/collection/components/q2-option-list/styles.css +128 -0
  83. package/dist/collection/components/q2-pagination/index.js +275 -0
  84. package/dist/collection/components/q2-pagination/styles.css +120 -0
  85. package/dist/collection/components/q2-pill/index.js +324 -0
  86. package/dist/collection/components/q2-pill/styles.css +229 -0
  87. package/dist/collection/components/q2-radio/index.js +38 -1
  88. package/dist/collection/components/q2-radio-group/index.js +66 -24
  89. package/dist/collection/components/q2-section/index.js +5 -7
  90. package/dist/collection/components/q2-select/index.js +53 -30
  91. package/dist/collection/components/q2-stepper/index.js +8 -10
  92. package/dist/collection/components/q2-stepper/styles.css +5 -5
  93. package/dist/collection/components/q2-stepper-pane/index.js +133 -5
  94. package/dist/collection/components/q2-stepper-vertical/index.js +346 -0
  95. package/dist/collection/components/q2-stepper-vertical/styles.css +273 -0
  96. package/dist/collection/components/q2-tab-container/index.js +11 -7
  97. package/dist/collection/components/q2-tag/index.js +200 -0
  98. package/dist/collection/components/q2-tag/styles.css +141 -0
  99. package/dist/collection/components/q2-textarea/index.js +6 -6
  100. package/dist/collection/components/tecton-tab-pane/index.js +3 -10
  101. package/dist/collection/utils/index.js +25 -13
  102. package/dist/esm/click-elsewhere.entry.js +5 -7
  103. package/dist/esm/{icons-3ee662ea.js → icons-b1e11526.js} +394 -384
  104. package/dist/esm/{index-ec6660af.js → index-0ff8de52.js} +27 -15
  105. package/dist/esm/{index-be8376c0.js → index-dbfb3ecc.js} +112 -65
  106. package/dist/esm/loader.js +3 -3
  107. package/dist/esm/polyfills/css-shim.js +1 -1
  108. package/dist/esm/q2-avatar.entry.js +2 -2
  109. package/dist/esm/q2-badge.entry.js +39 -0
  110. package/dist/esm/q2-btn_2.entry.js +13 -13
  111. package/dist/esm/q2-calendar.entry.js +54 -59
  112. package/dist/esm/q2-card.entry.js +123 -0
  113. package/dist/esm/q2-carousel-pane.entry.js +5 -5
  114. package/dist/esm/q2-carousel.entry.js +318 -106
  115. package/dist/esm/q2-checkbox-group.entry.js +6 -3
  116. package/dist/esm/q2-checkbox.entry.js +19 -11
  117. package/dist/esm/q2-dropdown-item.entry.js +7 -7
  118. package/dist/esm/q2-dropdown.entry.js +8 -17
  119. package/dist/esm/q2-editable-field.entry.js +5 -8
  120. package/dist/esm/q2-icon.entry.js +3 -3
  121. package/dist/esm/q2-input.entry.js +439 -437
  122. package/dist/esm/q2-loading-element.entry.js +3 -3
  123. package/dist/esm/q2-loc.entry.js +2 -2
  124. package/dist/esm/q2-message.entry.js +5 -5
  125. package/dist/esm/q2-optgroup.entry.js +3 -3
  126. package/dist/esm/q2-option-list.entry.js +355 -0
  127. package/dist/esm/q2-option.entry.js +3 -11
  128. package/dist/esm/q2-pagination.entry.js +112 -0
  129. package/dist/esm/q2-pill.entry.js +133 -0
  130. package/dist/esm/q2-radio-group.entry.js +43 -18
  131. package/dist/esm/q2-radio.entry.js +21 -4
  132. package/dist/esm/q2-section.entry.js +5 -7
  133. package/dist/esm/q2-select.entry.js +36 -31
  134. package/dist/esm/q2-stepper-pane.entry.js +42 -4
  135. package/dist/esm/q2-stepper-vertical.entry.js +274 -0
  136. package/dist/esm/q2-stepper.entry.js +10 -12
  137. package/dist/esm/q2-tab-container.entry.js +12 -8
  138. package/dist/esm/q2-tab-pane.entry.js +1 -1
  139. package/dist/esm/q2-tag.entry.js +90 -0
  140. package/dist/esm/q2-tecton-elements.js +3 -3
  141. package/dist/esm/q2-textarea.entry.js +8 -8
  142. package/dist/esm/{shapes-81c11dfe.js → shapes-cff4e1f0.js} +9 -16
  143. package/dist/esm/tecton-tab-pane.entry.js +2 -5
  144. package/dist/loader/index.d.ts +0 -1
  145. package/dist/q2-tecton-elements/{p-75e87cca.entry.js → p-00e8f782.entry.js} +1 -1
  146. package/dist/q2-tecton-elements/p-01ae8461.entry.js +1 -0
  147. package/dist/q2-tecton-elements/p-0900bec1.entry.js +1 -0
  148. package/dist/q2-tecton-elements/p-10264ecb.entry.js +1 -0
  149. package/dist/q2-tecton-elements/{p-fbf7c5e6.entry.js → p-1305ec5f.entry.js} +1 -1
  150. package/dist/q2-tecton-elements/p-148391d6.entry.js +1 -0
  151. package/dist/q2-tecton-elements/p-1dfaee64.entry.js +1 -0
  152. package/dist/q2-tecton-elements/{p-32ad664c.entry.js → p-221abbf6.entry.js} +1 -1
  153. package/dist/q2-tecton-elements/{p-c90a6016.js → p-255b2b4c.js} +1 -1
  154. package/dist/q2-tecton-elements/p-27736b6b.entry.js +1 -0
  155. package/dist/q2-tecton-elements/p-2846ab94.entry.js +1 -0
  156. package/dist/q2-tecton-elements/p-2bc1de01.entry.js +1 -0
  157. package/dist/q2-tecton-elements/{p-8ea2c4f7.entry.js → p-2c15414c.entry.js} +1 -1
  158. package/dist/q2-tecton-elements/p-2caa89fd.js +1 -0
  159. package/dist/q2-tecton-elements/p-327cca41.entry.js +1 -0
  160. package/dist/q2-tecton-elements/p-3a420dbf.entry.js +1 -0
  161. package/dist/q2-tecton-elements/p-3abcb09d.entry.js +1 -0
  162. package/dist/q2-tecton-elements/p-3fe98e3e.entry.js +1 -0
  163. package/dist/q2-tecton-elements/{p-bb2e110a.entry.js → p-430a979b.entry.js} +1 -1
  164. package/dist/q2-tecton-elements/{p-7e6fc65d.entry.js → p-45eb7739.entry.js} +1 -1
  165. package/dist/q2-tecton-elements/{p-750bcd33.entry.js → p-49b2abc4.entry.js} +1 -1
  166. package/dist/q2-tecton-elements/{p-9b50c3c3.entry.js → p-4ab30466.entry.js} +1 -1
  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-ae130f70.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/p-ffbded54.entry.js +1 -0
  184. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
  185. package/dist/test/elements/q2-tag-test.js +151 -0
  186. package/dist/test/helpers.js +20 -9
  187. package/dist/types/components/q2-badge/index.d.ts +13 -0
  188. package/dist/types/components/q2-btn/index.d.ts +3 -3
  189. package/dist/types/components/q2-calendar/helpers.d.ts +1 -0
  190. package/dist/types/components/q2-calendar/index.d.ts +2 -1
  191. package/dist/types/components/q2-calendar/validation.d.ts +1 -1
  192. package/dist/types/components/q2-card/index.d.ts +35 -0
  193. package/dist/types/components/q2-checkbox/index.d.ts +3 -1
  194. package/dist/types/components/q2-checkbox-group/index.d.ts +1 -0
  195. package/dist/types/components/q2-dropdown/index.d.ts +1 -1
  196. package/dist/types/components/q2-editable-field/index.d.ts +1 -1
  197. package/dist/types/components/q2-input/formatting/credit-card.d.ts +1 -3
  198. package/dist/types/components/q2-input/index.d.ts +5 -2
  199. package/dist/types/components/q2-option/index.d.ts +2 -3
  200. package/dist/types/components/q2-option-list/index.d.ts +62 -0
  201. package/dist/types/components/q2-pagination/index.d.ts +30 -0
  202. package/dist/types/components/q2-pill/index.d.ts +39 -0
  203. package/dist/types/components/q2-radio/index.d.ts +4 -1
  204. package/dist/types/components/q2-radio-group/index.d.ts +5 -1
  205. package/dist/types/components/q2-select/index.d.ts +2 -1
  206. package/dist/types/components/q2-stepper/index.d.ts +1 -1
  207. package/dist/types/components/q2-stepper-pane/index.d.ts +16 -1
  208. package/dist/types/components/q2-stepper-vertical/index.d.ts +52 -0
  209. package/dist/types/components/q2-tab-container/index.d.ts +1 -1
  210. package/dist/types/components/q2-tag/index.d.ts +28 -0
  211. package/dist/types/components/tecton-tab-pane/index.d.ts +2 -2
  212. package/dist/types/components.d.ts +235 -11
  213. package/dist/types/global.d.ts +1 -0
  214. package/dist/types/stencil-public-runtime.d.ts +6 -4
  215. package/dist/types/util.d.ts +2 -10
  216. package/dist/types/utils/index.d.ts +1 -0
  217. package/dist/types/workspace/workspace/tecton-production_release_1.13.x/packages/q2-tecton-elements/.stencil/test/elements/q2-tag-test.d.ts +1 -0
  218. package/dist/types/workspace/workspace/{_production_release_1.11.0-alpha → tecton-production_release_1.13.x}/packages/q2-tecton-elements/.stencil/test/helpers.d.ts +6 -3
  219. package/package.json +13 -13
  220. package/dist/q2-tecton-elements/p-06fff43d.entry.js +0 -1
  221. package/dist/q2-tecton-elements/p-080839ed.js +0 -1
  222. package/dist/q2-tecton-elements/p-29a37091.entry.js +0 -1
  223. package/dist/q2-tecton-elements/p-37aba2a4.js +0 -1
  224. package/dist/q2-tecton-elements/p-4cd00f1a.js +0 -1
  225. package/dist/q2-tecton-elements/p-6702eb4d.entry.js +0 -1
  226. package/dist/q2-tecton-elements/p-768e3a5d.entry.js +0 -1
  227. package/dist/q2-tecton-elements/p-843b1ee9.entry.js +0 -1
  228. package/dist/q2-tecton-elements/p-943c7745.entry.js +0 -1
  229. package/dist/q2-tecton-elements/p-95a73559.entry.js +0 -1
  230. package/dist/q2-tecton-elements/p-9a977ee6.entry.js +0 -1
  231. package/dist/q2-tecton-elements/p-b281c349.entry.js +0 -1
  232. package/dist/q2-tecton-elements/p-c5e55b9f.entry.js +0 -1
  233. package/dist/q2-tecton-elements/p-ccbe9158.entry.js +0 -1
  234. package/dist/q2-tecton-elements/p-db6f90ac.entry.js +0 -1
  235. package/dist/q2-tecton-elements/p-fa6eea5c.entry.js +0 -1
@@ -0,0 +1,273 @@
1
+ * {
2
+ box-sizing: border-box;
3
+ }
4
+
5
+ *:active {
6
+ outline: none;
7
+ }
8
+
9
+ *:focus {
10
+ outline: none;
11
+ box-shadow: var(--const-global-focus);
12
+ }
13
+
14
+ :host {
15
+ box-shadow: none !important;
16
+ }
17
+
18
+ ::-moz-focus-inner {
19
+ border: none;
20
+ }
21
+
22
+ input,
23
+ textarea,
24
+ button {
25
+ font-family: inherit;
26
+ font-size: inherit;
27
+ }
28
+
29
+ :host(.sr),
30
+ :host(.sr) button {
31
+ border: 0;
32
+ clip: rect(0 0 0 0);
33
+ height: 1px;
34
+ margin: -1px;
35
+ overflow: hidden;
36
+ padding: 0;
37
+ position: absolute;
38
+ width: 1px;
39
+ white-space: nowrap;
40
+ }
41
+
42
+ .sr,
43
+ .sr button {
44
+ border: 0;
45
+ clip: rect(0 0 0 0);
46
+ height: 1px;
47
+ margin: -1px;
48
+ overflow: hidden;
49
+ padding: 0;
50
+ position: absolute;
51
+ width: 1px;
52
+ white-space: nowrap;
53
+ }
54
+
55
+ .hidden {
56
+ display: none;
57
+ }
58
+
59
+ :host([hidden]) {
60
+ display: none;
61
+ }
62
+
63
+ .invisible {
64
+ visibility: hidden;
65
+ }
66
+
67
+ :host {
68
+ display: grid;
69
+ grid-template-columns: var(--tct-advanced-stepper-list-width, var(--t-advanced-stepper-list-width, 180px)) 1fr;
70
+ gap: var(--tct-advanced-stepper-layout-gap, var(--t-advanced-stepper-layout-gap, 120px));
71
+ }
72
+
73
+ .step-label,
74
+ .step-child-label {
75
+ color: var(--comp-btn-label-color);
76
+ font-size: var(--comp-btn-label-font-size);
77
+ font-weight: var(--comp-label-font-weight, 400);
78
+ height: 1.5em;
79
+ }
80
+
81
+ .step-label {
82
+ text-overflow: ellipsis;
83
+ overflow: hidden;
84
+ display: -webkit-box;
85
+ -webkit-line-clamp: 2;
86
+ -webkit-box-orient: vertical;
87
+ }
88
+ [aria-selected=true] .step-label {
89
+ font-weight: var(--tct-advanced-stepper-btn-active-font-weight, var(--t-advanced-stepper-btn-active-font-weight, 600));
90
+ }
91
+ [aria-describedby] .step-label {
92
+ -webkit-line-clamp: 1;
93
+ }
94
+
95
+ .step-child-label {
96
+ grid-area: content;
97
+ color: var(--comp-btn-label-color);
98
+ }
99
+
100
+ .step-description {
101
+ color: var(--tct-advanced-stepper-description-color, var(--t-advanced-stepper-description-color, var(--t-textA, rgba(77, 77, 77, 0.77))));
102
+ font-size: var(--tct-advanced-stepper-description-font-size, var(--t-advanced-stepper-description-font-size, var(--app-font-size-small, 12px)));
103
+ padding-bottom: 0.2em;
104
+ }
105
+
106
+ ul {
107
+ --comp-top-btn-icon-size: var(--tct-advanced-stepper-btn-icon-size, var(--t-advanced-stepper-btn-icon-size, 24px));
108
+ --comp-btn-icon-size: var(--comp-top-btn-icon-size);
109
+ --comp-btn-content-gap: var(--tct-advanced-stepper-btn-gap, var(--t-advanced-stepper-btn-gap, var(--app-scale-3x, 15px)));
110
+ --comp-btn-label-font-size: var-list(var-prefixer(advanced-stepper-btn-label-font-size), 16px);
111
+ --comp-btn-label-color: var(--tct-advanced-stepper-label-color, var(--t-advanced-stepper-label-color, var(--t-text, #4d4d4d)));
112
+ --comp-tween: var(--tct-advanced-stepper-tween, var(--t-advanced-stepper-tween, var(--app-tween-1, 0.2s ease)));
113
+ list-style: none;
114
+ margin: 0;
115
+ padding: 0;
116
+ }
117
+ ul ul {
118
+ --comp-btn-icon-size: var(--tct-advanced-stepper-child-btn-icon-size, var(--t-advanced-stepper-child-btn-icon-size, 12px));
119
+ --comp-btn-content-gap: var(--tct-advanced-stepper-btn-gap, var(--t-advanced-stepper-btn-gap, var(--app-scale-2x, 10px)));
120
+ --comp-btn-label-font-size: var-list(
121
+ var-prefixer(advanced-stepper-child-btn-label-font-size),
122
+ --app-font-size-small,
123
+ 12px
124
+ );
125
+ }
126
+ ul ul[aria-hidden=true] {
127
+ display: none;
128
+ }
129
+
130
+ .step-btn,
131
+ .step-child-btn {
132
+ display: grid;
133
+ grid-template-columns: var(--comp-btn-icon-size) 1fr;
134
+ gap: var(--comp-btn-content-gap);
135
+ text-align: var(--tct-advanced-stepper-btn-text-align, var(--t-advanced-stepper-btn-text-align, start));
136
+ grid-template-areas: "icon content";
137
+ align-items: center;
138
+ width: 100%;
139
+ position: relative;
140
+ background: transparent;
141
+ border: 0;
142
+ cursor: pointer;
143
+ padding: 0;
144
+ transition-property: box-shadow;
145
+ outline: none;
146
+ }
147
+ .step-btn[aria-disabled],
148
+ .step-child-btn[aria-disabled] {
149
+ cursor: default;
150
+ --comp-label-font-weight: 300;
151
+ --comp-btn-label-color: var(--tct-advanced-stepper-btn-locked-color, var(--t-advanced-stepper-btn-locked-color, var(--t-textA, rgba(77, 77, 77, 0.77))));
152
+ }
153
+ .step-btn[aria-selected=true],
154
+ .step-child-btn[aria-selected=true] {
155
+ --comp-label-font-weight: 600;
156
+ }
157
+
158
+ .step-btn {
159
+ min-height: var(--tct-advanced-stepper-btn-height, var(--t-advanced-stepper-btn-height, 40px));
160
+ font-size: var(--tct-advanced-stepper-btn-font-size, var(--t-advanced-stepper-btn-font-size, 16px));
161
+ --comp-active-color: var(--t-primary);
162
+ }
163
+ .step-btn.status-complete {
164
+ --comp-active-color: var(--const-stoplight-success);
165
+ }
166
+ .step-btn.status-error {
167
+ --comp-active-color: var(--const-stoplight-alert);
168
+ }
169
+ .step-btn.status-locked {
170
+ cursor: not-allowed;
171
+ }
172
+
173
+ .step-child-btn {
174
+ --comp-active-color: var(--t-primary);
175
+ min-height: var(--tct-advanced-stepper-child-btn-height, var(--t-advanced-stepper-child-btn-height, 30px));
176
+ padding-left: var(--tct-advanced-stepper-child-btn-left-padding, var(--t-advanced-stepper-child-btn-left-padding, var(--app-scale-2x, 10px)));
177
+ font-size: var(--tct-advanced-stepper-child-btn-font-size, var(--t-advanced-stepper-child-btn-font-size, 12px));
178
+ border-left-width: var(--tct-advanced-stepper-child-btn-left-border-width, var(--t-advanced-stepper-child-btn-left-border-width, 3px));
179
+ border-left-style: var(--tct-advanced-stepper-child-btn-left-border-style, var(--t-advanced-stepper-child-btn-left-border-style, solid));
180
+ border-left-color: transparent;
181
+ }
182
+ .step-child-btn[aria-selected=true] {
183
+ --comp-btn-label-color: var(--comp-active-color);
184
+ border-left-color: var(--comp-active-color);
185
+ }
186
+ .step-child-btn.status-error {
187
+ --comp-btn-label-color: var(--const-stoplight-alert);
188
+ --comp-active-color: var(--const-stoplight-alert);
189
+ }
190
+ .step-child-btn.status-locked {
191
+ cursor: not-allowed;
192
+ }
193
+
194
+ .step-content {
195
+ grid-area: content;
196
+ }
197
+
198
+ .step-icon,
199
+ .step-bubble,
200
+ .step-child-icon {
201
+ grid-area: icon;
202
+ width: var(--comp-btn-icon-size);
203
+ height: var(--comp-btn-icon-size);
204
+ }
205
+ .step-icon q2-icon,
206
+ .step-bubble q2-icon,
207
+ .step-child-icon q2-icon {
208
+ width: var(--comp-btn-icon-size);
209
+ height: var(--comp-btn-icon-size);
210
+ --tct-icon-stroke-primary: var(--comp-active-color);
211
+ }
212
+
213
+ .step-icon,
214
+ .step-bubble {
215
+ background: var(--t-primary);
216
+ color: var(--t-base);
217
+ border-radius: 50%;
218
+ }
219
+ .status-complete .step-icon, .status-error .step-icon,
220
+ .status-complete .step-bubble,
221
+ .status-error .step-bubble {
222
+ background: var(--comp-active-color);
223
+ }
224
+ .step-icon q2-icon,
225
+ .step-bubble q2-icon {
226
+ --tct-icon-stroke-secondary: var(--t-base);
227
+ }
228
+ .status-locked .step-icon,
229
+ .status-locked .step-bubble {
230
+ background: var(--t-gray-12);
231
+ color: var(--t-text);
232
+ }
233
+ [aria-selected=true] .step-icon,
234
+ [aria-selected=true] .step-bubble {
235
+ box-shadow: 0 0 0 2px var(--t-base), 0 0 0 4px var(--comp-active-color);
236
+ }
237
+
238
+ .step-bubble {
239
+ display: flex;
240
+ justify-content: center;
241
+ align-items: center;
242
+ line-height: 0;
243
+ }
244
+
245
+ .step-child-icon q2-icon {
246
+ --tct-icon-stroke-primary: var(--comp-active-color);
247
+ --tct-icon-stroke-secondary: var(--comp-active-color);
248
+ }
249
+ [aria-selected=true] .step-child-icon q2-icon {
250
+ fill: var(--comp-active-color);
251
+ --tct-icon-stroke-secondary: var(--t-base);
252
+ }
253
+
254
+ .spacer {
255
+ height: var(--tct-advanced-stepper-spacer-height, var(--t-advanced-stepper-spacer-height, var(--app-scale-6x, 30px)));
256
+ border-left-width: var(--tct-advanced-stepper-child-border-width, var(--t-advanced-stepper-child-border-width, 1px));
257
+ border-left-style: var(--tct-advanced-stepper-child-border-style, var(--t-advanced-stepper-child-border-style, solid));
258
+ border-left-color: var(--tct-advanced-stepper-child-border-color, var(--t-advanced-stepper-child-border-color, var(--t-gray-12, #d9d9d9)));
259
+ overflow: hidden;
260
+ margin-left: calc(var(--comp-top-btn-icon-size) / 2);
261
+ transition: height var(--comp-tween);
262
+ }
263
+ .spacer ul {
264
+ opacity: 0;
265
+ transition: opacity var(--comp-tween);
266
+ }
267
+ .spacer.is-opening ul, .spacer.is-open ul {
268
+ display: block;
269
+ opacity: 1 !important;
270
+ }
271
+ .spacer.is-open {
272
+ overflow: visible;
273
+ }
@@ -1,4 +1,4 @@
1
- import { Component, Prop, Element, Event, State, Listen, Watch, h, Fragment } from '@stencil/core';
1
+ import { Component, Prop, Element, Event, State, Listen, Watch, h, Fragment, } from '@stencil/core';
2
2
  import { createGuid, loc, addSmoothScrollPolyfill, overrideFocus, isEventFromElement } from 'src/utils';
3
3
  addSmoothScrollPolyfill();
4
4
  export class Q2TabContainer {
@@ -27,7 +27,7 @@ export class Q2TabContainer {
27
27
  this.setTabs = () => {
28
28
  this.tabs = this.tabPanes.map(({ label, value }) => ({
29
29
  label: (label && loc(label)) || '',
30
- value
30
+ value,
31
31
  }));
32
32
  };
33
33
  this.onTabClick = (event) => {
@@ -35,7 +35,7 @@ export class Q2TabContainer {
35
35
  if (isAlreadySelected)
36
36
  return;
37
37
  this.change.emit({
38
- value: event.target.dataset.value
38
+ value: event.target.dataset.value,
39
39
  });
40
40
  };
41
41
  this.onTabKeyDown = (event) => {
@@ -65,7 +65,7 @@ export class Q2TabContainer {
65
65
  }
66
66
  };
67
67
  this.moveToAdjacentTab = (value, direction) => {
68
- let index = this.tabs.map(({ value }) => value).indexOf(value);
68
+ const index = this.tabs.map(({ value }) => value).indexOf(value);
69
69
  let newIndex;
70
70
  switch (direction) {
71
71
  case 'next':
@@ -92,7 +92,7 @@ export class Q2TabContainer {
92
92
  const left = focusedTab.offsetLeft - this.listElement.clientWidth / 2;
93
93
  this.listElement.scrollTo({
94
94
  left,
95
- behavior: 'smooth'
95
+ behavior: 'smooth',
96
96
  });
97
97
  return focusedTab;
98
98
  };
@@ -108,7 +108,7 @@ export class Q2TabContainer {
108
108
  const scrollAmount = Math.floor(this.listElement.clientWidth / 2);
109
109
  this.listElement.scrollBy({
110
110
  left: direction === 'left' ? -scrollAmount : scrollAmount,
111
- behavior: 'smooth'
111
+ behavior: 'smooth',
112
112
  });
113
113
  };
114
114
  this.onSlotChange = () => {
@@ -166,6 +166,9 @@ export class Q2TabContainer {
166
166
  overrideFocus(this.hostElement);
167
167
  const index = this.tabs.findIndex(el => el.value === this.value);
168
168
  this.scheduledAfterRender.push(() => {
169
+ const hasTabs = this.tabs.length > 0;
170
+ if (!hasTabs)
171
+ return;
169
172
  const tab = this.moveFocus(Math.max(index, 0));
170
173
  this.value = tab.dataset.value;
171
174
  tab.blur();
@@ -174,6 +177,7 @@ export class Q2TabContainer {
174
177
  disconnectedCallback() {
175
178
  this.resizeObserver.disconnect();
176
179
  this.mutationObserver.disconnect();
180
+ this.resizeObserver = null;
177
181
  this.mutationObserver = null;
178
182
  }
179
183
  ///////// Observers /////////
@@ -207,7 +211,7 @@ export class Q2TabContainer {
207
211
  const { label, value } = tab;
208
212
  const isSelected = this.selectedTabValue === value;
209
213
  return (h("li", { role: "presentation" },
210
- h("button", { id: `tab-${this.guid}-${index}`, "data-value": value, "test-id": "tabLink", tabIndex: isSelected ? 0 : -1, role: "tab", "aria-selected": isSelected ? 'true' : undefined, "aria-controls": `tab-pane-${this.guid}-${index}`, onClick: this.onTabClick, onKeyDown: this.onTabKeyDown }, label)));
214
+ h("button", { id: `tab-${this.guid}-${index}`, "data-value": value, "test-id": "tabLink", tabIndex: isSelected ? 0 : -1, role: "tab", "aria-selected": isSelected ? 'true' : 'false', "aria-controls": `tab-pane-${this.guid}-${index}`, onClick: this.onTabClick, onKeyDown: this.onTabKeyDown }, label)));
211
215
  }
212
216
  static get is() { return "q2-tab-container"; }
213
217
  static get encapsulation() { return "shadow"; }
@@ -0,0 +1,200 @@
1
+ import { Component, State, Prop, h, Listen, Element, Fragment, Event, } from '@stencil/core';
2
+ import { isEventFromElement, loc, overrideFocus } from 'src/utils';
3
+ export class Q2Tag {
4
+ constructor() {
5
+ this.role = 'listitem';
6
+ /// Getters ///
7
+ /// Helpers
8
+ this.determineHasOptions = () => {
9
+ const hasOptions = !!this.hostElement.querySelectorAll('q2-option').length;
10
+ this.hasOptions = hasOptions;
11
+ };
12
+ /// Event Handlers ///
13
+ this.handleChange = event => {
14
+ event.stopPropagation();
15
+ if (!this.hasOptions)
16
+ return;
17
+ const { value } = event.detail;
18
+ this.click.emit({ value });
19
+ };
20
+ this.handleClick = (event) => {
21
+ event.stopPropagation();
22
+ this.optionList.toggle();
23
+ };
24
+ this.handleKeydown = (event) => {
25
+ this.optionList.handleExternalKeydown(event);
26
+ };
27
+ this.handleButtonFocusout = (event) => {
28
+ var _a;
29
+ const relatedTarget = event.relatedTarget;
30
+ if ((_a = (relatedTarget === null || relatedTarget === void 0 ? void 0 : relatedTarget.tagName) === 'Q2-OPTION') !== null && _a !== void 0 ? _a : false)
31
+ return;
32
+ this.open = false;
33
+ };
34
+ this.handleOptionListFocusout = (event) => {
35
+ const relatedTarget = event.relatedTarget;
36
+ if (relatedTarget && !(event.relatedTarget instanceof HTMLElement))
37
+ return;
38
+ if (relatedTarget && relatedTarget.closest('.btn-wrapper'))
39
+ return;
40
+ this.open = false;
41
+ };
42
+ this.handleWrapperClick = () => {
43
+ this.dropdownBtn.focus();
44
+ this.dropdownBtn.click();
45
+ };
46
+ }
47
+ /// LifeCycle Hooks ///
48
+ componentWillLoad() {
49
+ const observer = new MutationObserver(this.determineHasOptions);
50
+ observer.observe(this.hostElement, { childList: true, attributes: true });
51
+ this.mutationObserver = observer;
52
+ }
53
+ componentDidLoad() {
54
+ overrideFocus(this.hostElement);
55
+ }
56
+ disconnectedCallback() {
57
+ this.mutationObserver.disconnect();
58
+ this.mutationObserver = null;
59
+ }
60
+ /// Listeners ///
61
+ delegateFocus(event) {
62
+ if (!isEventFromElement(event, this.hostElement))
63
+ return;
64
+ if (!this.hasOptions)
65
+ return;
66
+ this.dropdownBtn.focus();
67
+ }
68
+ optionListStateEvent({ detail: { open } }) {
69
+ this.open = open;
70
+ if (!open)
71
+ this.dropdownBtn.focus();
72
+ }
73
+ /// DOM ///
74
+ render() {
75
+ const { hasOptions, open } = this;
76
+ const wrapperClassNames = ['tag-wrapper'];
77
+ if (hasOptions)
78
+ wrapperClassNames.push('has-options');
79
+ return (h(Fragment, null,
80
+ h("div", { class: wrapperClassNames.join(' '), onClick: e => e.stopPropagation() },
81
+ h("div", { class: "tag" }, this.label),
82
+ this.hasOptions && (h("div", { class: "btn-wrapper", onClick: this.handleWrapperClick },
83
+ h("button", { ref: el => (this.dropdownBtn = el), "test-id": "btn-control", onClick: this.handleClick, onKeyDown: this.handleKeydown, onFocusout: this.handleButtonFocusout, "aria-controls": "option-list", "aria-haspopup": "true", "aria-expanded": open ? 'true' : 'false', "aria-label": loc('tecton.element.tag.viewOptions') },
84
+ h("q2-icon", { type: "options" }))))),
85
+ this.hasOptions && (h("q2-option-list", { id: "option-list", ref: el => (this.optionList = el), open: this.open, onChange: this.handleChange, onFocusout: this.handleOptionListFocusout, align: "right", type: "menu", "no-select": true },
86
+ h("slot", null)))));
87
+ }
88
+ static get is() { return "q2-tag"; }
89
+ static get encapsulation() { return "shadow"; }
90
+ static get originalStyleUrls() { return {
91
+ "$": ["styles.scss"]
92
+ }; }
93
+ static get styleUrls() { return {
94
+ "$": ["styles.css"]
95
+ }; }
96
+ static get properties() { return {
97
+ "open": {
98
+ "type": "boolean",
99
+ "mutable": true,
100
+ "complexType": {
101
+ "original": "boolean",
102
+ "resolved": "boolean",
103
+ "references": {}
104
+ },
105
+ "required": false,
106
+ "optional": false,
107
+ "docs": {
108
+ "tags": [],
109
+ "text": ""
110
+ },
111
+ "attribute": "open",
112
+ "reflect": true
113
+ },
114
+ "role": {
115
+ "type": "string",
116
+ "mutable": false,
117
+ "complexType": {
118
+ "original": "string",
119
+ "resolved": "string",
120
+ "references": {}
121
+ },
122
+ "required": false,
123
+ "optional": false,
124
+ "docs": {
125
+ "tags": [],
126
+ "text": ""
127
+ },
128
+ "attribute": "role",
129
+ "reflect": true,
130
+ "defaultValue": "'listitem'"
131
+ },
132
+ "label": {
133
+ "type": "string",
134
+ "mutable": false,
135
+ "complexType": {
136
+ "original": "string",
137
+ "resolved": "string",
138
+ "references": {}
139
+ },
140
+ "required": false,
141
+ "optional": false,
142
+ "docs": {
143
+ "tags": [],
144
+ "text": ""
145
+ },
146
+ "attribute": "label",
147
+ "reflect": true
148
+ },
149
+ "theme": {
150
+ "type": "string",
151
+ "mutable": false,
152
+ "complexType": {
153
+ "original": "'primary' | 'secondary' | 'tertiary'",
154
+ "resolved": "\"primary\" | \"secondary\" | \"tertiary\"",
155
+ "references": {}
156
+ },
157
+ "required": false,
158
+ "optional": false,
159
+ "docs": {
160
+ "tags": [],
161
+ "text": ""
162
+ },
163
+ "attribute": "theme",
164
+ "reflect": true
165
+ }
166
+ }; }
167
+ static get states() { return {
168
+ "hasOptions": {}
169
+ }; }
170
+ static get events() { return [{
171
+ "method": "click",
172
+ "name": "click",
173
+ "bubbles": true,
174
+ "cancelable": true,
175
+ "composed": true,
176
+ "docs": {
177
+ "tags": [],
178
+ "text": ""
179
+ },
180
+ "complexType": {
181
+ "original": "{ value: string }",
182
+ "resolved": "{ value: string; }",
183
+ "references": {}
184
+ }
185
+ }]; }
186
+ static get elementRef() { return "hostElement"; }
187
+ static get listeners() { return [{
188
+ "name": "focus",
189
+ "method": "delegateFocus",
190
+ "target": undefined,
191
+ "capture": false,
192
+ "passive": false
193
+ }, {
194
+ "name": "optionListState",
195
+ "method": "optionListStateEvent",
196
+ "target": undefined,
197
+ "capture": false,
198
+ "passive": false
199
+ }]; }
200
+ }
@@ -0,0 +1,141 @@
1
+ * {
2
+ box-sizing: border-box;
3
+ }
4
+
5
+ *:active {
6
+ outline: none;
7
+ }
8
+
9
+ *:focus {
10
+ outline: none;
11
+ box-shadow: var(--const-global-focus);
12
+ }
13
+
14
+ :host {
15
+ box-shadow: none !important;
16
+ }
17
+
18
+ ::-moz-focus-inner {
19
+ border: none;
20
+ }
21
+
22
+ input,
23
+ textarea,
24
+ button {
25
+ font-family: inherit;
26
+ font-size: inherit;
27
+ }
28
+
29
+ :host(.sr),
30
+ :host(.sr) button {
31
+ border: 0;
32
+ clip: rect(0 0 0 0);
33
+ height: 1px;
34
+ margin: -1px;
35
+ overflow: hidden;
36
+ padding: 0;
37
+ position: absolute;
38
+ width: 1px;
39
+ white-space: nowrap;
40
+ }
41
+
42
+ .sr,
43
+ .sr button {
44
+ border: 0;
45
+ clip: rect(0 0 0 0);
46
+ height: 1px;
47
+ margin: -1px;
48
+ overflow: hidden;
49
+ padding: 0;
50
+ position: absolute;
51
+ width: 1px;
52
+ white-space: nowrap;
53
+ }
54
+
55
+ .hidden {
56
+ display: none;
57
+ }
58
+
59
+ :host([hidden]) {
60
+ display: none;
61
+ }
62
+
63
+ .invisible {
64
+ visibility: hidden;
65
+ }
66
+
67
+ :host {
68
+ display: inline-block;
69
+ position: relative;
70
+ }
71
+
72
+ :host(:not(:last-child)) {
73
+ margin-inline-end: var(--tct-tag-margin, var(--t-tag-margin, var(--app-scale-2x, 10px)));
74
+ }
75
+
76
+ .tag-wrapper {
77
+ --comp-tag-btn-size: var(--tct-tag-btn-size, var(--t-tag-btn-size, var(--app-scale-6x, 30px)));
78
+ --comp-tag-background: var(--tct-tag-background, var(--t-tag-background, var(--t-gray-13, #e6e6e6)));
79
+ --comp-tag-color: var(--tct-tag-color, var(--t-tag-color, var(--t-gray-3, #262626)));
80
+ position: relative;
81
+ }
82
+ :host([theme=primary]) .tag-wrapper {
83
+ --comp-tag-background: var(--t-primary-l5, #61c4ff);
84
+ --comp-tag-color: var(--t-primary-text, #ffffff);
85
+ }
86
+ :host([theme=secondary]) .tag-wrapper {
87
+ --comp-tag-background: var(--t-secondary-l5, #61c4ff);
88
+ --comp-tag-color: var(--t-secondary-text, #000000);
89
+ }
90
+ :host([theme=tertiary]) .tag-wrapper {
91
+ --comp-tag-background: var(--t-tertiary-l5, #61c4ff);
92
+ --comp-tag-color: var(--t-tertiary-text, #000000);
93
+ }
94
+
95
+ .tag {
96
+ height: var(--tct-tag-height, var(--t-tag-height, var(--app-scale-6x, 30px)));
97
+ line-height: var(--tct-tag-height, var(--t-tag-height, var(--app-scale-6x, 30px)));
98
+ padding-inline: var(--tct-tag-padding-inline, var(--t-tag-padding-inline, var(--app-scale-3x, 15px)));
99
+ background: var(--comp-tag-background);
100
+ color: var(--comp-tag-color);
101
+ border-radius: var(--tct-tag-border-radius, var(--t-tag-border-radius, var(--app-border-radius-1, 3px)));
102
+ }
103
+ .has-options .tag {
104
+ padding-right: var(--comp-tag-btn-size);
105
+ }
106
+
107
+ .btn-wrapper {
108
+ --comp-tag-clickable-size: var(--tct-tag-clickable-size, var(--t-tag-clickable-size, 44px));
109
+ --comp-tag-btn-offset: calc(
110
+ calc(calc(var(--comp-tag-clickable-size) - var(--comp-tag-btn-size)) / 2) * -1
111
+ );
112
+ height: var(--comp-tag-clickable-size);
113
+ width: var(--comp-tag-clickable-size);
114
+ display: flex;
115
+ align-items: center;
116
+ justify-content: center;
117
+ position: absolute;
118
+ right: var(--comp-tag-btn-offset);
119
+ top: var(--comp-tag-btn-offset);
120
+ cursor: pointer;
121
+ }
122
+
123
+ button {
124
+ width: var(--comp-tag-btn-size);
125
+ height: var(--comp-tag-btn-size);
126
+ stroke: var(--comp-tag-color);
127
+ --tct-icon-stroke-primary: var(--comp-tag-color);
128
+ cursor: pointer;
129
+ border: 0;
130
+ background: transparent;
131
+ display: flex;
132
+ align-items: center;
133
+ justify-content: center;
134
+ padding: 0;
135
+ --tct-icon-size: 18px;
136
+ }
137
+
138
+ q2-option-list {
139
+ position: absolute;
140
+ right: 0;
141
+ }