@six-group/ui-library 0.0.0-insider.d82aaa2 → 0.0.0-insider.ddecb41

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 (337) hide show
  1. package/dist/cjs/{form-control-d369af14.js → form-control-9769b310.js} +10 -7
  2. package/dist/cjs/form-control-9769b310.js.map +1 -0
  3. package/dist/cjs/index-900437fc.js +8 -4
  4. package/dist/cjs/loader.cjs.js +1 -1
  5. package/dist/cjs/{scroll-03678de1.js → scroll-2c4200dc.js} +1 -2
  6. package/dist/cjs/scroll-2c4200dc.js.map +1 -0
  7. package/dist/cjs/six-button.cjs.entry.js +3 -3
  8. package/dist/cjs/six-button.cjs.entry.js.map +1 -1
  9. package/dist/cjs/six-checkbox.cjs.entry.js +6 -3
  10. package/dist/cjs/six-checkbox.cjs.entry.js.map +1 -1
  11. package/dist/cjs/six-datepicker.cjs.entry.js +2 -7
  12. package/dist/cjs/six-datepicker.cjs.entry.js.map +1 -1
  13. package/dist/cjs/six-details.cjs.entry.js +1 -1
  14. package/dist/cjs/six-details.cjs.entry.js.map +1 -1
  15. package/dist/cjs/six-dialog.cjs.entry.js +1 -1
  16. package/dist/cjs/six-drawer.cjs.entry.js +2 -2
  17. package/dist/cjs/six-drawer.cjs.entry.js.map +1 -1
  18. package/dist/cjs/six-dropdown_2.cjs.entry.js +1 -1
  19. package/dist/cjs/six-dropdown_2.cjs.entry.js.map +1 -1
  20. package/dist/cjs/six-error.cjs.entry.js +21 -0
  21. package/dist/cjs/six-error.cjs.entry.js.map +1 -0
  22. package/dist/cjs/six-group-label.cjs.entry.js +2 -2
  23. package/dist/cjs/six-group-label.cjs.entry.js.map +1 -1
  24. package/dist/cjs/six-icon-button.cjs.entry.js +1 -1
  25. package/dist/cjs/six-icon-button.cjs.entry.js.map +1 -1
  26. package/dist/cjs/six-input.cjs.entry.js +6 -3
  27. package/dist/cjs/six-input.cjs.entry.js.map +1 -1
  28. package/dist/cjs/six-range.cjs.entry.js +6 -3
  29. package/dist/cjs/six-range.cjs.entry.js.map +1 -1
  30. package/dist/cjs/six-select.cjs.entry.js +6 -3
  31. package/dist/cjs/six-select.cjs.entry.js.map +1 -1
  32. package/dist/cjs/six-sidebar-item-group.cjs.entry.js +2 -1
  33. package/dist/cjs/six-sidebar-item-group.cjs.entry.js.map +1 -1
  34. package/dist/cjs/six-sidebar.cjs.entry.js +1 -1
  35. package/dist/cjs/six-switch.cjs.entry.js +22 -4
  36. package/dist/cjs/six-switch.cjs.entry.js.map +1 -1
  37. package/dist/cjs/six-tab-group.cjs.entry.js +45 -50
  38. package/dist/cjs/six-tab-group.cjs.entry.js.map +1 -1
  39. package/dist/cjs/six-tab.cjs.entry.js +19 -3
  40. package/dist/cjs/six-tab.cjs.entry.js.map +1 -1
  41. package/dist/cjs/six-tag.cjs.entry.js +23 -1
  42. package/dist/cjs/six-tag.cjs.entry.js.map +1 -1
  43. package/dist/cjs/six-textarea.cjs.entry.js +6 -3
  44. package/dist/cjs/six-textarea.cjs.entry.js.map +1 -1
  45. package/dist/cjs/six-timepicker.cjs.entry.js +4 -9
  46. package/dist/cjs/six-timepicker.cjs.entry.js.map +1 -1
  47. package/dist/cjs/six-tooltip.cjs.entry.js +2 -2
  48. package/dist/cjs/six-tooltip.cjs.entry.js.map +1 -1
  49. package/dist/cjs/ui-library.cjs.js +1 -1
  50. package/dist/collection/collection-manifest.json +1 -0
  51. package/dist/collection/components/six-button/six-button.css +5 -30
  52. package/dist/collection/components/six-button/six-button.js +2 -2
  53. package/dist/collection/components/six-button/six-button.js.map +1 -1
  54. package/dist/collection/components/six-checkbox/six-checkbox.css +1 -1
  55. package/dist/collection/components/six-checkbox/six-checkbox.js +25 -4
  56. package/dist/collection/components/six-checkbox/six-checkbox.js.map +1 -1
  57. package/dist/collection/components/six-checkbox/test/six-checkbox.spec.js +6 -2
  58. package/dist/collection/components/six-checkbox/test/six-checkbox.spec.js.map +1 -1
  59. package/dist/collection/components/six-datepicker/six-datepicker.js +22 -11
  60. package/dist/collection/components/six-datepicker/six-datepicker.js.map +1 -1
  61. package/dist/collection/components/six-datepicker/test/six-datepicker.spec.js +1 -1
  62. package/dist/collection/components/six-datepicker/test/six-datepicker.spec.js.map +1 -1
  63. package/dist/collection/components/six-details/six-details.css +3 -1
  64. package/dist/collection/components/six-drawer/six-drawer.js +1 -1
  65. package/dist/collection/components/six-drawer/six-drawer.js.map +1 -1
  66. package/dist/collection/components/six-drawer/test/six-drawer.spec.js +1 -1
  67. package/dist/collection/components/six-drawer/test/six-drawer.spec.js.map +1 -1
  68. package/dist/collection/components/six-dropdown/six-dropdown.css +2 -1
  69. package/dist/collection/components/six-error/six-error.css +5 -0
  70. package/dist/collection/components/six-error/six-error.js +25 -0
  71. package/dist/collection/components/six-error/six-error.js.map +1 -0
  72. package/dist/collection/components/six-group-label/six-group-label.css +1 -1
  73. package/dist/collection/components/six-group-label/test/six-group-label.spec.js +3 -1
  74. package/dist/collection/components/six-group-label/test/six-group-label.spec.js.map +1 -1
  75. package/dist/collection/components/six-icon-button/six-icon-button.css +4 -4
  76. package/dist/collection/components/six-input/six-input.css +1 -1
  77. package/dist/collection/components/six-input/six-input.js +27 -4
  78. package/dist/collection/components/six-input/six-input.js.map +1 -1
  79. package/dist/collection/components/six-input/test/six-input.spec.js +3 -1
  80. package/dist/collection/components/six-input/test/six-input.spec.js.map +1 -1
  81. package/dist/collection/components/six-range/six-range.css +1 -1
  82. package/dist/collection/components/six-range/six-range.js +24 -3
  83. package/dist/collection/components/six-range/six-range.js.map +1 -1
  84. package/dist/collection/components/six-range/test/six-range.spec.js +3 -1
  85. package/dist/collection/components/six-range/test/six-range.spec.js.map +1 -1
  86. package/dist/collection/components/six-select/six-select.css +1 -1
  87. package/dist/collection/components/six-select/six-select.js +24 -3
  88. package/dist/collection/components/six-select/six-select.js.map +1 -1
  89. package/dist/collection/components/six-select/test/six-select.spec.js +6 -2
  90. package/dist/collection/components/six-select/test/six-select.spec.js.map +1 -1
  91. package/dist/collection/components/six-sidebar-item-group/six-sidebar-item-group.css +4 -0
  92. package/dist/collection/components/six-sidebar-item-group/six-sidebar-item-group.js +1 -0
  93. package/dist/collection/components/six-sidebar-item-group/six-sidebar-item-group.js.map +1 -1
  94. package/dist/collection/components/six-sidebar-item-group/test/six-sidebar-item-group.spec.js +2 -2
  95. package/dist/collection/components/six-sidebar-item-group/test/six-sidebar-item-group.spec.js.map +1 -1
  96. package/dist/collection/components/six-switch/six-switch.css +1 -1
  97. package/dist/collection/components/six-switch/six-switch.js +45 -4
  98. package/dist/collection/components/six-switch/six-switch.js.map +1 -1
  99. package/dist/collection/components/six-switch/test/six-switch.spec.js +6 -2
  100. package/dist/collection/components/six-switch/test/six-switch.spec.js.map +1 -1
  101. package/dist/collection/components/six-tab/six-tab.css +54 -5
  102. package/dist/collection/components/six-tab/six-tab.js +18 -2
  103. package/dist/collection/components/six-tab/six-tab.js.map +1 -1
  104. package/dist/collection/components/six-tab-group/six-tab-group.css +0 -31
  105. package/dist/collection/components/six-tab-group/six-tab-group.js +10 -51
  106. package/dist/collection/components/six-tab-group/six-tab-group.js.map +1 -1
  107. package/dist/collection/components/six-tag/six-tag.js +23 -1
  108. package/dist/collection/components/six-tag/six-tag.js.map +1 -1
  109. package/dist/collection/components/six-tag/test/six-tag.spec.js +12 -0
  110. package/dist/collection/components/six-tag/test/six-tag.spec.js.map +1 -1
  111. package/dist/collection/components/six-textarea/six-textarea.css +1 -1
  112. package/dist/collection/components/six-textarea/six-textarea.js +25 -4
  113. package/dist/collection/components/six-textarea/six-textarea.js.map +1 -1
  114. package/dist/collection/components/six-textarea/test/six-textarea.spec.js +3 -1
  115. package/dist/collection/components/six-textarea/test/six-textarea.spec.js.map +1 -1
  116. package/dist/collection/components/six-timepicker/six-timepicker.js +24 -12
  117. package/dist/collection/components/six-timepicker/six-timepicker.js.map +1 -1
  118. package/dist/collection/components/six-timepicker/test/six-timepicker.spec.js +15 -15
  119. package/dist/collection/components/six-timepicker/test/six-timepicker.spec.js.map +1 -1
  120. package/dist/collection/components/six-tooltip/six-tooltip.css +1 -1
  121. package/dist/collection/components/six-tooltip/six-tooltip.js +1 -1
  122. package/dist/collection/components/six-tooltip/six-tooltip.js.map +1 -1
  123. package/dist/collection/functional-components/form-control/form-control.js +8 -6
  124. package/dist/collection/functional-components/form-control/form-control.js.map +1 -1
  125. package/dist/collection/utils/animation.js +34 -0
  126. package/dist/collection/utils/animation.js.map +1 -0
  127. package/dist/components/form-control.js +9 -6
  128. package/dist/components/form-control.js.map +1 -1
  129. package/dist/components/index.js +2 -0
  130. package/dist/components/index.js.map +1 -1
  131. package/dist/components/scroll.js +1 -1
  132. package/dist/components/six-button.js +3 -3
  133. package/dist/components/six-button.js.map +1 -1
  134. package/dist/components/six-checkbox.js +14 -3
  135. package/dist/components/six-checkbox.js.map +1 -1
  136. package/dist/components/six-datepicker.js +10 -8
  137. package/dist/components/six-datepicker.js.map +1 -1
  138. package/dist/components/six-details2.js +1 -1
  139. package/dist/components/six-details2.js.map +1 -1
  140. package/dist/components/six-drawer.js +1 -1
  141. package/dist/components/six-drawer.js.map +1 -1
  142. package/dist/components/six-dropdown2.js +8 -2
  143. package/dist/components/six-dropdown2.js.map +1 -1
  144. package/dist/components/six-error.d.ts +11 -0
  145. package/dist/components/six-error.js +8 -0
  146. package/dist/components/six-error.js.map +1 -0
  147. package/dist/components/six-error2.js +32 -0
  148. package/dist/components/six-error2.js.map +1 -0
  149. package/dist/components/six-group-label.js +8 -2
  150. package/dist/components/six-group-label.js.map +1 -1
  151. package/dist/components/six-header.js +8 -2
  152. package/dist/components/six-header.js.map +1 -1
  153. package/dist/components/six-icon-button2.js +1 -1
  154. package/dist/components/six-icon-button2.js.map +1 -1
  155. package/dist/components/six-input2.js +14 -3
  156. package/dist/components/six-input2.js.map +1 -1
  157. package/dist/components/six-range.js +14 -3
  158. package/dist/components/six-range.js.map +1 -1
  159. package/dist/components/six-search-field.js +7 -1
  160. package/dist/components/six-search-field.js.map +1 -1
  161. package/dist/components/six-select.js +33 -16
  162. package/dist/components/six-select.js.map +1 -1
  163. package/dist/components/six-sidebar-item-group.js +2 -1
  164. package/dist/components/six-sidebar-item-group.js.map +1 -1
  165. package/dist/components/six-switch.js +30 -4
  166. package/dist/components/six-switch.js.map +1 -1
  167. package/dist/components/six-tab-group.js +45 -50
  168. package/dist/components/six-tab-group.js.map +1 -1
  169. package/dist/components/six-tab.js +19 -3
  170. package/dist/components/six-tab.js.map +1 -1
  171. package/dist/components/six-tag2.js +33 -5
  172. package/dist/components/six-tag2.js.map +1 -1
  173. package/dist/components/six-textarea.js +14 -3
  174. package/dist/components/six-textarea.js.map +1 -1
  175. package/dist/components/six-timepicker2.js +12 -10
  176. package/dist/components/six-timepicker2.js.map +1 -1
  177. package/dist/components/six-tooltip2.js +2 -2
  178. package/dist/components/six-tooltip2.js.map +1 -1
  179. package/dist/components.json +425 -55
  180. package/dist/esm/{form-control-32cb533f.js → form-control-b0febe88.js} +10 -7
  181. package/dist/esm/form-control-b0febe88.js.map +1 -0
  182. package/dist/esm/index-8a74f992.js +8 -4
  183. package/dist/esm/loader.js +1 -1
  184. package/dist/esm/{scroll-3fb087a2.js → scroll-774762d6.js} +2 -2
  185. package/dist/esm/{scroll-3fb087a2.js.map → scroll-774762d6.js.map} +1 -1
  186. package/dist/esm/six-button.entry.js +3 -3
  187. package/dist/esm/six-button.entry.js.map +1 -1
  188. package/dist/esm/six-checkbox.entry.js +6 -3
  189. package/dist/esm/six-checkbox.entry.js.map +1 -1
  190. package/dist/esm/six-datepicker.entry.js +2 -7
  191. package/dist/esm/six-datepicker.entry.js.map +1 -1
  192. package/dist/esm/six-details.entry.js +1 -1
  193. package/dist/esm/six-details.entry.js.map +1 -1
  194. package/dist/esm/six-dialog.entry.js +1 -1
  195. package/dist/esm/six-drawer.entry.js +2 -2
  196. package/dist/esm/six-drawer.entry.js.map +1 -1
  197. package/dist/esm/six-dropdown_2.entry.js +1 -1
  198. package/dist/esm/six-dropdown_2.entry.js.map +1 -1
  199. package/dist/esm/six-error.entry.js +17 -0
  200. package/dist/esm/six-error.entry.js.map +1 -0
  201. package/dist/esm/six-group-label.entry.js +2 -2
  202. package/dist/esm/six-group-label.entry.js.map +1 -1
  203. package/dist/esm/six-icon-button.entry.js +1 -1
  204. package/dist/esm/six-icon-button.entry.js.map +1 -1
  205. package/dist/esm/six-input.entry.js +6 -3
  206. package/dist/esm/six-input.entry.js.map +1 -1
  207. package/dist/esm/six-range.entry.js +6 -3
  208. package/dist/esm/six-range.entry.js.map +1 -1
  209. package/dist/esm/six-select.entry.js +6 -3
  210. package/dist/esm/six-select.entry.js.map +1 -1
  211. package/dist/esm/six-sidebar-item-group.entry.js +2 -1
  212. package/dist/esm/six-sidebar-item-group.entry.js.map +1 -1
  213. package/dist/esm/six-sidebar.entry.js +1 -1
  214. package/dist/esm/six-switch.entry.js +22 -4
  215. package/dist/esm/six-switch.entry.js.map +1 -1
  216. package/dist/esm/six-tab-group.entry.js +45 -50
  217. package/dist/esm/six-tab-group.entry.js.map +1 -1
  218. package/dist/esm/six-tab.entry.js +19 -3
  219. package/dist/esm/six-tab.entry.js.map +1 -1
  220. package/dist/esm/six-tag.entry.js +23 -1
  221. package/dist/esm/six-tag.entry.js.map +1 -1
  222. package/dist/esm/six-textarea.entry.js +6 -3
  223. package/dist/esm/six-textarea.entry.js.map +1 -1
  224. package/dist/esm/six-timepicker.entry.js +4 -9
  225. package/dist/esm/six-timepicker.entry.js.map +1 -1
  226. package/dist/esm/six-tooltip.entry.js +2 -2
  227. package/dist/esm/six-tooltip.entry.js.map +1 -1
  228. package/dist/esm/ui-library.js +1 -1
  229. package/dist/types/components/six-checkbox/six-checkbox.d.ts +4 -1
  230. package/dist/types/components/six-datepicker/six-datepicker.d.ts +4 -2
  231. package/dist/types/components/six-error/six-error.d.ts +9 -0
  232. package/dist/types/components/six-input/six-input.d.ts +7 -2
  233. package/dist/types/components/six-range/six-range.d.ts +4 -1
  234. package/dist/types/components/six-select/six-select.d.ts +4 -1
  235. package/dist/types/components/six-switch/six-switch.d.ts +8 -1
  236. package/dist/types/components/six-tab-group/six-tab-group.d.ts +0 -3
  237. package/dist/types/components/six-tag/six-tag.d.ts +8 -0
  238. package/dist/types/components/six-textarea/six-textarea.d.ts +4 -1
  239. package/dist/types/components/six-timepicker/six-timepicker.d.ts +5 -2
  240. package/dist/types/components.d.ts +109 -16
  241. package/dist/types/functional-components/form-control/form-control.d.ts +6 -2
  242. package/dist/types/utils/animation.d.ts +12 -0
  243. package/dist/ui-library/{p-1f18768a.js → p-052aa8d3.js} +2 -2
  244. package/dist/ui-library/{p-ed381ad9.entry.js → p-14c1ec31.entry.js} +2 -2
  245. package/dist/ui-library/p-14c1ec31.entry.js.map +1 -0
  246. package/dist/ui-library/p-22c9b8c3.entry.js +2 -0
  247. package/dist/ui-library/p-22c9b8c3.entry.js.map +1 -0
  248. package/dist/ui-library/p-25bb1752.entry.js +2 -0
  249. package/dist/ui-library/p-25bb1752.entry.js.map +1 -0
  250. package/dist/ui-library/p-3f1a5ecb.entry.js +2 -0
  251. package/dist/ui-library/p-3f1a5ecb.entry.js.map +1 -0
  252. package/dist/ui-library/p-4435ff73.entry.js +2 -0
  253. package/dist/ui-library/p-4435ff73.entry.js.map +1 -0
  254. package/dist/ui-library/p-538f3c50.entry.js +2 -0
  255. package/dist/ui-library/p-538f3c50.entry.js.map +1 -0
  256. package/dist/ui-library/{p-330a4988.entry.js → p-5800663b.entry.js} +2 -2
  257. package/dist/ui-library/p-5ba3a0fe.entry.js +2 -0
  258. package/dist/ui-library/p-5ba3a0fe.entry.js.map +1 -0
  259. package/dist/ui-library/{p-99e24daf.entry.js → p-5ef2bdb3.entry.js} +2 -2
  260. package/dist/ui-library/{p-99e24daf.entry.js.map → p-5ef2bdb3.entry.js.map} +1 -1
  261. package/dist/ui-library/p-658d9f79.entry.js +2 -0
  262. package/dist/ui-library/p-658d9f79.entry.js.map +1 -0
  263. package/dist/ui-library/p-66fe54b3.entry.js +2 -0
  264. package/dist/ui-library/p-66fe54b3.entry.js.map +1 -0
  265. package/dist/ui-library/p-a457fee8.entry.js +2 -0
  266. package/dist/ui-library/p-a457fee8.entry.js.map +1 -0
  267. package/dist/ui-library/p-ab91c2a9.entry.js +2 -0
  268. package/dist/ui-library/p-ab91c2a9.entry.js.map +1 -0
  269. package/dist/ui-library/p-b57afbe4.entry.js +2 -0
  270. package/dist/ui-library/p-b57afbe4.entry.js.map +1 -0
  271. package/dist/ui-library/p-b6f47c9d.entry.js +2 -0
  272. package/dist/ui-library/p-b6f47c9d.entry.js.map +1 -0
  273. package/dist/ui-library/p-cba69e9d.entry.js +2 -0
  274. package/dist/ui-library/p-cba69e9d.entry.js.map +1 -0
  275. package/dist/ui-library/{p-19ed7a4c.entry.js → p-d1bda563.entry.js} +2 -2
  276. package/dist/ui-library/p-db34a6cc.entry.js +2 -0
  277. package/dist/ui-library/p-db34a6cc.entry.js.map +1 -0
  278. package/dist/ui-library/p-db936ad7.entry.js +2 -0
  279. package/dist/ui-library/{p-d367f4f9.entry.js.map → p-db936ad7.entry.js.map} +1 -1
  280. package/dist/ui-library/p-dc4f41d8.entry.js +2 -0
  281. package/dist/ui-library/p-dc4f41d8.entry.js.map +1 -0
  282. package/dist/ui-library/p-e5020f0d.js +2 -0
  283. package/dist/ui-library/p-e5020f0d.js.map +1 -0
  284. package/dist/ui-library/p-e775dcb4.entry.js +2 -0
  285. package/dist/ui-library/p-e775dcb4.entry.js.map +1 -0
  286. package/dist/ui-library/p-f1dc3a88.entry.js +2 -0
  287. package/dist/ui-library/p-f1dc3a88.entry.js.map +1 -0
  288. package/dist/ui-library/ui-library.css +2 -2
  289. package/dist/ui-library/ui-library.esm.js +1 -1
  290. package/dist/ui-library/ui-library.esm.js.map +1 -1
  291. package/package.json +5 -2
  292. package/dist/cjs/form-control-d369af14.js.map +0 -1
  293. package/dist/cjs/scroll-03678de1.js.map +0 -1
  294. package/dist/collection/components/six-tab/test/six-tab.spec.js +0 -20
  295. package/dist/collection/components/six-tab/test/six-tab.spec.js.map +0 -1
  296. package/dist/collection/components/six-tab-group/test/six-tab-group.spec.js +0 -45
  297. package/dist/collection/components/six-tab-group/test/six-tab-group.spec.js.map +0 -1
  298. package/dist/esm/form-control-32cb533f.js.map +0 -1
  299. package/dist/ui-library/p-02981b91.entry.js +0 -2
  300. package/dist/ui-library/p-02981b91.entry.js.map +0 -1
  301. package/dist/ui-library/p-1256cc0a.entry.js +0 -2
  302. package/dist/ui-library/p-1256cc0a.entry.js.map +0 -1
  303. package/dist/ui-library/p-21b3b321.entry.js +0 -2
  304. package/dist/ui-library/p-21b3b321.entry.js.map +0 -1
  305. package/dist/ui-library/p-29ac3d7d.entry.js +0 -2
  306. package/dist/ui-library/p-29ac3d7d.entry.js.map +0 -1
  307. package/dist/ui-library/p-314b2096.entry.js +0 -2
  308. package/dist/ui-library/p-314b2096.entry.js.map +0 -1
  309. package/dist/ui-library/p-3d9de119.entry.js +0 -2
  310. package/dist/ui-library/p-3d9de119.entry.js.map +0 -1
  311. package/dist/ui-library/p-4705a51e.entry.js +0 -2
  312. package/dist/ui-library/p-4705a51e.entry.js.map +0 -1
  313. package/dist/ui-library/p-4abed9df.entry.js +0 -2
  314. package/dist/ui-library/p-4abed9df.entry.js.map +0 -1
  315. package/dist/ui-library/p-5d6b7353.entry.js +0 -2
  316. package/dist/ui-library/p-5d6b7353.entry.js.map +0 -1
  317. package/dist/ui-library/p-72254eef.entry.js +0 -2
  318. package/dist/ui-library/p-72254eef.entry.js.map +0 -1
  319. package/dist/ui-library/p-83864cfe.entry.js +0 -2
  320. package/dist/ui-library/p-83864cfe.entry.js.map +0 -1
  321. package/dist/ui-library/p-9f0b43f9.entry.js +0 -2
  322. package/dist/ui-library/p-9f0b43f9.entry.js.map +0 -1
  323. package/dist/ui-library/p-b550a258.entry.js +0 -2
  324. package/dist/ui-library/p-b550a258.entry.js.map +0 -1
  325. package/dist/ui-library/p-bf87464b.entry.js +0 -2
  326. package/dist/ui-library/p-bf87464b.entry.js.map +0 -1
  327. package/dist/ui-library/p-d367f4f9.entry.js +0 -2
  328. package/dist/ui-library/p-d42c2025.js +0 -2
  329. package/dist/ui-library/p-d42c2025.js.map +0 -1
  330. package/dist/ui-library/p-ed381ad9.entry.js.map +0 -1
  331. package/dist/ui-library/p-ee8342e1.entry.js +0 -2
  332. package/dist/ui-library/p-ee8342e1.entry.js.map +0 -1
  333. package/dist/ui-library/p-ff90ffd1.entry.js +0 -2
  334. package/dist/ui-library/p-ff90ffd1.entry.js.map +0 -1
  335. /package/dist/ui-library/{p-1f18768a.js.map → p-052aa8d3.js.map} +0 -0
  336. /package/dist/ui-library/{p-330a4988.entry.js.map → p-5800663b.entry.js.map} +0 -0
  337. /package/dist/ui-library/{p-19ed7a4c.entry.js.map → p-d1bda563.entry.js.map} +0 -0
@@ -7,7 +7,7 @@
7
7
  }
8
8
 
9
9
  :host {
10
- display: inline-block;
10
+ display: flex;
11
11
  }
12
12
 
13
13
  .tab {
@@ -16,19 +16,19 @@
16
16
  font-family: var(--six-font-family);
17
17
  font-size: var(--six-font-size-small);
18
18
  font-weight: var(--six-font-weight-semibold);
19
- border-radius: 4px;
20
19
  color: var(--six-tab-color);
21
20
  padding: var(--six-spacing-medium) var(--six-spacing-large);
22
21
  white-space: nowrap;
23
22
  user-select: none;
24
23
  cursor: pointer;
25
- transition: var(--six-transition-fast) box-shadow, var(--six-transition-fast) color;
24
+ width: 100%;
26
25
  }
27
26
  .tab:focus {
28
27
  outline: none;
29
28
  }
30
- .tab:focus:not(.tab--disabled) {
31
- color: var(--six-tab-color-active);
29
+ .tab:focus-visible {
30
+ outline: var(--six-focus-ring);
31
+ outline-offset: calc(-1 * var(--six-focus-ring-width) - var(--six-focus-ring-offset));
32
32
  }
33
33
  .tab.tab--active:not(.tab--disabled) {
34
34
  color: var(--six-tab-color-active);
@@ -51,4 +51,53 @@
51
51
  }
52
52
  .tab__close-button::part(base) {
53
53
  padding: var(--six-spacing-xxx-small);
54
+ }
55
+
56
+ .tab__indicator {
57
+ position: absolute;
58
+ }
59
+ .tab__indicator.tab__indicator--active {
60
+ background-color: var(--six-tab-border-color-active);
61
+ }
62
+
63
+ .tab--top {
64
+ margin-bottom: var(--six-spacing-xxx-small);
65
+ }
66
+
67
+ .tab__indicator--top {
68
+ width: 100%;
69
+ bottom: 0;
70
+ height: var(--six-tab-border-width);
71
+ }
72
+
73
+ .tab--bottom {
74
+ margin-top: var(--six-spacing-xxx-small);
75
+ }
76
+
77
+ .tab__indicator--bottom {
78
+ width: 100%;
79
+ top: 0;
80
+ height: var(--six-tab-border-width);
81
+ }
82
+
83
+ .tab--left {
84
+ margin-right: var(--six-spacing-xxx-small);
85
+ }
86
+
87
+ .tab__indicator--left {
88
+ height: 100%;
89
+ right: 0;
90
+ top: 0;
91
+ width: var(--six-tab-border-width);
92
+ }
93
+
94
+ .tab--right {
95
+ margin-left: var(--six-spacing-xxx-small);
96
+ }
97
+
98
+ .tab__indicator--right {
99
+ height: 100%;
100
+ left: 0;
101
+ top: 0;
102
+ width: var(--six-tab-border-width);
54
103
  }
@@ -36,15 +36,31 @@ export class SixTab {
36
36
  this.sixClose.emit();
37
37
  }
38
38
  render() {
39
+ var _a;
40
+ const tabGroup = this.host.closest('six-tab-group');
41
+ const placement = (_a = tabGroup === null || tabGroup === void 0 ? void 0 : tabGroup.placement) !== null && _a !== void 0 ? _a : 'top';
39
42
  return (
40
- // If the user didn't provide an ID, we'll set one so we can link tabs and tab panels with aria labels
43
+ // If the user didn't provide an ID, we'll set one, so we can link tabs and tab panels with aria labels
41
44
  h(Host, { id: this.host.id || this.componentId }, h("div", { part: "base", ref: (el) => (this.tab = el), class: {
42
45
  tab: true,
46
+ // Placements
47
+ 'tab--top': placement === 'top',
48
+ 'tab--bottom': placement === 'bottom',
49
+ 'tab--left': placement === 'left',
50
+ 'tab--right': placement === 'right',
43
51
  // States
44
52
  'tab--active': this.active,
45
53
  'tab--closable': this.closable,
46
54
  'tab--disabled': this.disabled,
47
- }, role: "tab", "aria-disabled": this.disabled ? 'true' : 'false', "aria-selected": this.active ? 'true' : 'false', tabindex: this.disabled || !this.active ? '-1' : '0' }, h("slot", null), this.closable && (h("six-icon-button", { name: "close", size: "xSmall", exportparts: "base:close-button", class: "tab__close-button", onClick: this.handleCloseClick, tabIndex: -1, "aria-hidden": "true" })))));
55
+ }, role: "tab", "aria-disabled": this.disabled ? 'true' : 'false', "aria-selected": this.active ? 'true' : 'false', tabindex: this.disabled || !this.active ? '-1' : '0' }, h("slot", null), this.closable && (h("six-icon-button", { name: "close", size: "xSmall", exportparts: "base:close-button", class: "tab__close-button", onClick: this.handleCloseClick, tabIndex: -1, "aria-hidden": "true" }))), h("div", { class: {
56
+ tab__indicator: true,
57
+ 'tab__indicator--active': this.active,
58
+ // Placements
59
+ 'tab__indicator--top': placement === 'top',
60
+ 'tab__indicator--bottom': placement === 'bottom',
61
+ 'tab__indicator--left': placement === 'left',
62
+ 'tab__indicator--right': placement === 'right',
63
+ } })));
48
64
  }
49
65
  static get is() { return "six-tab"; }
50
66
  static get encapsulation() { return "shadow"; }
@@ -1 +1 @@
1
- {"version":3,"file":"six-tab.js","sourceRoot":"","sources":["../../../src/components/six-tab/six-tab.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAgB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAG/F,IAAI,EAAE,GAAG,CAAC,CAAC;AAEX;;;;;;;;;;GAUG;AAOH,MAAM,OAAO,MAAM;;IACT,gBAAW,GAAG,OAAO,EAAE,EAAE,EAAE,CAAC;iBAMH,EAAE;kBAGD,KAAK;oBAGpB,KAAK;oBAGY,KAAK;;EAKzC,iBAAiB;IACf,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAC3D,CAAC;EAED,6BAA6B;EAE7B,KAAK,CAAC,QAAQ,CAAC,OAAsB;;IACnC,MAAA,IAAI,CAAC,GAAG,0CAAE,KAAK,CAAC,OAAO,CAAC,CAAC;EAC3B,CAAC;EAED,kCAAkC;EAElC,KAAK,CAAC,WAAW;;IACf,MAAA,IAAI,CAAC,GAAG,0CAAE,IAAI,EAAE,CAAC;EACnB,CAAC;EAEO,gBAAgB;IACtB,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;EACvB,CAAC;EAED,MAAM;IACJ,OAAO;IACL,sGAAsG;IACtG,EAAC,IAAI,IAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,WAAW;MACxC,WACE,IAAI,EAAC,MAAM,EACX,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,EAC5B,KAAK,EAAE;UACL,GAAG,EAAE,IAAI;UAET,SAAS;UACT,aAAa,EAAE,IAAI,CAAC,MAAM;UAC1B,eAAe,EAAE,IAAI,CAAC,QAAQ;UAC9B,eAAe,EAAE,IAAI,CAAC,QAAQ;SAC/B,EACD,IAAI,EAAC,KAAK,mBACK,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,mBAChC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAC7C,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;QAEpD,eAAQ;QACP,IAAI,CAAC,QAAQ,IAAI,CAChB,uBACE,IAAI,EAAC,OAAO,EACZ,IAAI,EAAC,QAAQ,EACb,WAAW,EAAC,mBAAmB,EAC/B,KAAK,EAAC,mBAAmB,EACzB,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAC9B,QAAQ,EAAE,CAAC,CAAC,iBACA,MAAM,GAClB,CACH,CACG,CACD,CACR,CAAC;EACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Element, Event, EventEmitter, h, Host, Method, Prop } from '@stencil/core';\nimport { EmptyPayload } from '../../utils/types';\n\nlet id = 0;\n\n/**\n * @since 1.0\n * @status stable\n *\n * Forked from https://github.com/shoelace-style/shoelace version v2.0.0-beta27.\n *\n * @slot - The tab's label.\n *\n * @part base - The component's base wrapper.\n * @part close-button - The close button, which is the icon button's base wrapper.\n */\n\n@Component({\n tag: 'six-tab',\n styleUrl: 'six-tab.scss',\n shadow: true,\n})\nexport class SixTab {\n private componentId = `tab-${++id}`;\n private tab?: HTMLElement;\n\n @Element() host!: HTMLSixTabElement;\n\n /** The name of the tab panel the tab will control. The panel must be located in the same tab group. */\n @Prop({ reflect: true }) panel = '';\n\n /** Set to true to draw the tab in an active state. */\n @Prop({ reflect: true }) active = false;\n\n /** When true, the tab will be rendered with a close icon. */\n @Prop() closable = false;\n\n /** Set to true to draw the tab in a disabled state. */\n @Prop({ reflect: true }) disabled = false;\n\n /** Emitted when the tab is closable and the close button is activated. */\n @Event({ eventName: 'six-tab-close' }) sixClose!: EventEmitter<EmptyPayload>;\n\n connectedCallback() {\n this.handleCloseClick = this.handleCloseClick.bind(this);\n }\n\n /** Sets focus to the tab. */\n @Method()\n async setFocus(options?: FocusOptions) {\n this.tab?.focus(options);\n }\n\n /** Removes focus from the tab. */\n @Method()\n async removeFocus() {\n this.tab?.blur();\n }\n\n private handleCloseClick() {\n this.sixClose.emit();\n }\n\n render() {\n return (\n // If the user didn't provide an ID, we'll set one so we can link tabs and tab panels with aria labels\n <Host id={this.host.id || this.componentId}>\n <div\n part=\"base\"\n ref={(el) => (this.tab = el)}\n class={{\n tab: true,\n\n // States\n 'tab--active': this.active,\n 'tab--closable': this.closable,\n 'tab--disabled': this.disabled,\n }}\n role=\"tab\"\n aria-disabled={this.disabled ? 'true' : 'false'}\n aria-selected={this.active ? 'true' : 'false'}\n tabindex={this.disabled || !this.active ? '-1' : '0'}\n >\n <slot />\n {this.closable && (\n <six-icon-button\n name=\"close\"\n size=\"xSmall\"\n exportparts=\"base:close-button\"\n class=\"tab__close-button\"\n onClick={this.handleCloseClick}\n tabIndex={-1}\n aria-hidden=\"true\"\n />\n )}\n </div>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"six-tab.js","sourceRoot":"","sources":["../../../src/components/six-tab/six-tab.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Event, EventEmitter, h, Host, Method, Prop } from '@stencil/core';\nimport { EmptyPayload } from '../../utils/types';\n\nlet id = 0;\n\n/**\n * @since 1.0\n * @status stable\n *\n * Forked from https://github.com/shoelace-style/shoelace version v2.0.0-beta27.\n *\n * @slot - The tab's label.\n *\n * @part base - The component's base wrapper.\n * @part close-button - The close button, which is the icon button's base wrapper.\n */\n\n@Component({\n tag: 'six-tab',\n styleUrl: 'six-tab.scss',\n shadow: true,\n})\nexport class SixTab {\n private componentId = `tab-${++id}`;\n private tab?: HTMLElement;\n\n @Element() host!: HTMLSixTabElement;\n\n /** The name of the tab panel the tab will control. The panel must be located in the same tab group. */\n @Prop({ reflect: true }) panel = '';\n\n /** Set to true to draw the tab in an active state. */\n @Prop({ reflect: true }) active = false;\n\n /** When true, the tab will be rendered with a close icon. */\n @Prop() closable = false;\n\n /** Set to true to draw the tab in a disabled state. */\n @Prop({ reflect: true }) disabled = false;\n\n /** Emitted when the tab is closable and the close button is activated. */\n @Event({ eventName: 'six-tab-close' }) sixClose!: EventEmitter<EmptyPayload>;\n\n connectedCallback() {\n this.handleCloseClick = this.handleCloseClick.bind(this);\n }\n\n /** Sets focus to the tab. */\n @Method()\n async setFocus(options?: FocusOptions) {\n this.tab?.focus(options);\n }\n\n /** Removes focus from the tab. */\n @Method()\n async removeFocus() {\n this.tab?.blur();\n }\n\n private handleCloseClick() {\n this.sixClose.emit();\n }\n\n render() {\n const tabGroup: HTMLSixTabGroupElement | null = this.host.closest('six-tab-group');\n const placement = tabGroup?.placement ?? 'top';\n return (\n // If the user didn't provide an ID, we'll set one, so we can link tabs and tab panels with aria labels\n <Host id={this.host.id || this.componentId}>\n <div\n part=\"base\"\n ref={(el) => (this.tab = el)}\n class={{\n tab: true,\n\n // Placements\n 'tab--top': placement === 'top',\n 'tab--bottom': placement === 'bottom',\n 'tab--left': placement === 'left',\n 'tab--right': placement === 'right',\n\n // States\n 'tab--active': this.active,\n 'tab--closable': this.closable,\n 'tab--disabled': this.disabled,\n }}\n role=\"tab\"\n aria-disabled={this.disabled ? 'true' : 'false'}\n aria-selected={this.active ? 'true' : 'false'}\n tabindex={this.disabled || !this.active ? '-1' : '0'}\n >\n <slot />\n {this.closable && (\n <six-icon-button\n name=\"close\"\n size=\"xSmall\"\n exportparts=\"base:close-button\"\n class=\"tab__close-button\"\n onClick={this.handleCloseClick}\n tabIndex={-1}\n aria-hidden=\"true\"\n />\n )}\n </div>\n <div\n class={{\n tab__indicator: true,\n 'tab__indicator--active': this.active,\n\n // Placements\n 'tab__indicator--top': placement === 'top',\n 'tab__indicator--bottom': placement === 'bottom',\n 'tab__indicator--left': placement === 'left',\n 'tab__indicator--right': placement === 'right',\n }}\n ></div>\n </Host>\n );\n }\n}\n"]}
@@ -6,11 +6,7 @@
6
6
  box-sizing: inherit;
7
7
  }
8
8
 
9
- /**
10
- * @prop --tabs-border-color: The color of the border that separates tabs.
11
- */
12
9
  :host {
13
- --tabs-border-color: var(--six-tab-border-color);
14
10
  display: block;
15
11
  }
16
12
 
@@ -23,13 +19,6 @@
23
19
  display: flex;
24
20
  position: relative;
25
21
  }
26
- .tab-group .tab-group__active-tab-indicator {
27
- position: absolute;
28
- transition: var(--six-transition-fast) transform ease, var(--six-transition-fast) width ease;
29
- }
30
- .tab-group:not(.focus-visible) ::slotted(six-tab) {
31
- --focus-ring: none;
32
- }
33
22
 
34
23
  .tab-group--has-scroll-controls .tab-group__nav-container {
35
24
  position: relative;
@@ -74,11 +63,6 @@
74
63
  flex: 1 1 auto;
75
64
  position: relative;
76
65
  flex-direction: row;
77
- border-bottom: solid var(--six-tab-border-width) var(--tabs-border-color);
78
- }
79
- .tab-group--top .tab-group__active-tab-indicator {
80
- bottom: -2px;
81
- border-bottom: solid var(--six-tab-border-width-active) var(--six-tab-border-color-active);
82
66
  }
83
67
  .tab-group--top .tab-group__body {
84
68
  order: 2;
@@ -104,11 +88,6 @@
104
88
  flex: 1 1 auto;
105
89
  position: relative;
106
90
  flex-direction: row;
107
- border-top: solid var(--six-tab-border-width) var(--tabs-border-color);
108
- }
109
- .tab-group--bottom .tab-group__active-tab-indicator {
110
- top: -2px;
111
- border-top: solid var(--six-tab-border-width-active) var(--six-tab-border-color-active);
112
91
  }
113
92
  .tab-group--bottom .tab-group__body {
114
93
  order: 1;
@@ -123,11 +102,6 @@
123
102
  .tab-group--left .tab-group__tabs {
124
103
  flex: 0 0 auto;
125
104
  flex-direction: column;
126
- border-right: solid var(--six-tab-border-width) var(--tabs-border-color);
127
- }
128
- .tab-group--left .tab-group__active-tab-indicator {
129
- right: -2px;
130
- border-right: solid var(--six-tab-border-width-active) var(--six-tab-border-color-active);
131
105
  }
132
106
  .tab-group--left .tab-group__body {
133
107
  flex: 1 1 auto;
@@ -143,11 +117,6 @@
143
117
  .tab-group--right .tab-group__tabs {
144
118
  flex: 0 0 auto;
145
119
  flex-direction: column;
146
- border-left: solid var(--six-tab-border-width) var(--tabs-border-color);
147
- }
148
- .tab-group--right .tab-group__active-tab-indicator {
149
- left: -2px;
150
- border-left: solid var(--six-tab-border-width-active) var(--six-tab-border-color-active);
151
120
  }
152
121
  .tab-group--right .tab-group__body {
153
122
  flex: 1 1 auto;
@@ -1,7 +1,6 @@
1
1
  import { h } from "@stencil/core";
2
- import { getOffset } from "../../utils/offset";
3
2
  import { scrollIntoView } from "../../utils/scroll";
4
- import { focusVisible } from "../../utils/focus-visible";
3
+ import { flipAnimate } from "../../utils/animation";
5
4
  /**
6
5
  * @since 1.0
7
6
  * @status stable
@@ -42,13 +41,6 @@ export class SixTabGroup {
42
41
  if (tabGroup !== this.host) {
43
42
  return false;
44
43
  }
45
- // Activate a tab
46
- if (['Enter', ' '].includes(event.key)) {
47
- if (tab != null) {
48
- this.setActiveTab(tab);
49
- event.preventDefault();
50
- }
51
- }
52
44
  // Move focus left or right
53
45
  if (['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Home', 'End'].includes(event.key)) {
54
46
  const activeEl = document.activeElement;
@@ -68,6 +60,7 @@ export class SixTabGroup {
68
60
  index = Math.min(tabs.length - 1, index + 1);
69
61
  }
70
62
  tabs[index].setFocus({ preventScroll: true });
63
+ this.setActiveTab(tabs[index]);
71
64
  if (['top', 'bottom'].includes(this.placement)) {
72
65
  scrollIntoView(tabs[index], this.nav, 'horizontal');
73
66
  }
@@ -91,44 +84,10 @@ export class SixTabGroup {
91
84
  behavior: 'smooth',
92
85
  });
93
86
  };
94
- this.syncActiveTabIndicator = () => {
95
- if (this.activeTabIndicator == null || this.nav == null)
96
- return;
97
- const tab = this.getActiveTab();
98
- if (tab != null) {
99
- this.activeTabIndicator.style.display = 'block';
100
- }
101
- else {
102
- this.activeTabIndicator.style.display = 'none';
103
- return;
104
- }
105
- const width = tab.clientWidth;
106
- const height = tab.clientHeight;
107
- const offset = getOffset(tab, this.nav);
108
- const offsetTop = offset.top + this.nav.scrollTop;
109
- const offsetLeft = offset.left + this.nav.scrollLeft;
110
- switch (this.placement) {
111
- case 'top':
112
- case 'bottom':
113
- this.activeTabIndicator.style.width = `${width}px`;
114
- this.activeTabIndicator.style.height = '';
115
- this.activeTabIndicator.style.transform = `translateX(${offsetLeft}px)`;
116
- break;
117
- case 'left':
118
- case 'right':
119
- this.activeTabIndicator.style.width = '';
120
- this.activeTabIndicator.style.height = `${height}px`;
121
- this.activeTabIndicator.style.transform = `translateY(${offsetTop}px)`;
122
- break;
123
- }
124
- };
125
87
  this.hasScrollControls = false;
126
88
  this.placement = 'top';
127
89
  this.noScrollControls = false;
128
90
  }
129
- handlePlacementChange() {
130
- this.syncActiveTabIndicator();
131
- }
132
91
  handleNoScrollControlsChange() {
133
92
  this.updateScrollControls();
134
93
  }
@@ -144,7 +103,6 @@ export class SixTabGroup {
144
103
  }
145
104
  });
146
105
  observer.observe(this.host);
147
- focusVisible.observe(this.tabGroup);
148
106
  this.resizeObserver = new ResizeObserver(() => this.updateScrollControls());
149
107
  this.resizeObserver.observe(this.nav);
150
108
  requestAnimationFrame(() => this.updateScrollControls());
@@ -164,7 +122,6 @@ export class SixTabGroup {
164
122
  return;
165
123
  }
166
124
  this.mutationObserver.disconnect();
167
- focusVisible.unobserve(this.tabGroup);
168
125
  this.resizeObserver.unobserve(this.nav);
169
126
  }
170
127
  /** Shows the specified tab panel. */
@@ -204,15 +161,20 @@ export class SixTabGroup {
204
161
  : ['top', 'bottom'].includes(this.placement) && this.nav.scrollWidth > this.nav.clientWidth;
205
162
  }
206
163
  setActiveTab(tab, emitEvents = true) {
164
+ var _a, _b, _c;
207
165
  if (this.nav == null)
208
166
  return;
209
- if (tab != null && tab !== this.activeTab && !tab.disabled) {
167
+ const newIndicator = (_a = tab === null || tab === void 0 ? void 0 : tab.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.tab__indicator');
168
+ const oldIndicator = (_c = (_b = this.getActiveTab()) === null || _b === void 0 ? void 0 : _b.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('.tab__indicator');
169
+ if (oldIndicator != null && newIndicator != null) {
170
+ flipAnimate(newIndicator, oldIndicator);
171
+ }
172
+ if (tab !== this.activeTab && !tab.disabled) {
210
173
  const previousTab = this.activeTab;
211
174
  this.activeTab = tab;
212
175
  // Sync tabs and panels
213
176
  this.getAllTabs().map((el) => (el.active = el === this.activeTab));
214
177
  this.getAllPanels().map((el) => { var _a; return (el.active = el.name === ((_a = this.activeTab) === null || _a === void 0 ? void 0 : _a.panel)); });
215
- this.syncActiveTabIndicator();
216
178
  if (['top', 'bottom'].includes(this.placement)) {
217
179
  scrollIntoView(this.activeTab, this.nav, 'horizontal');
218
180
  }
@@ -247,7 +209,7 @@ export class SixTabGroup {
247
209
  'tab-group--left': this.placement === 'left',
248
210
  'tab-group--right': this.placement === 'right',
249
211
  'tab-group--has-scroll-controls': this.hasScrollControls,
250
- }, onClick: this.handleClick, onKeyDown: this.handleKeyDown }, h("div", { class: "tab-group__nav-container" }, this.hasScrollControls && (h("six-icon-button", { class: "tab-group__scroll-button tab-group__scroll-button--left", exportparts: "base:scroll-button", name: "chevron_left", onClick: this.handleScrollLeft })), h("div", { ref: (el) => (this.nav = el), key: "nav", part: "nav", class: "tab-group__nav" }, h("div", { ref: (el) => (this.tabs = el), part: "tabs", class: "tab-group__tabs", role: "tablist" }, h("div", { ref: (el) => (this.activeTabIndicator = el), part: "active-tab-indicator", class: "tab-group__active-tab-indicator" }), h("slot", { name: "nav", onSlotchange: this.syncActiveTabIndicator }))), this.hasScrollControls && (h("six-icon-button", { class: "tab-group__scroll-button tab-group__scroll-button--right", exportparts: "base:scroll-button", name: "chevron_right", onClick: this.handleScrollRight }))), h("div", { ref: (el) => (this.body = el), part: "body", class: "tab-group__body" }, h("slot", { onSlotchange: this.syncActiveTabIndicator }))));
212
+ }, onClick: this.handleClick, onKeyDown: this.handleKeyDown }, h("div", { class: "tab-group__nav-container" }, this.hasScrollControls && (h("six-icon-button", { class: "tab-group__scroll-button tab-group__scroll-button--left", exportparts: "base:scroll-button", name: "chevron_left", onClick: this.handleScrollLeft })), h("div", { ref: (el) => (this.nav = el), key: "nav", part: "nav", class: "tab-group__nav" }, h("div", { ref: (el) => (this.tabs = el), part: "tabs", class: "tab-group__tabs", role: "tablist" }, h("slot", { name: "nav" }))), this.hasScrollControls && (h("six-icon-button", { class: "tab-group__scroll-button tab-group__scroll-button--right", exportparts: "base:scroll-button", name: "chevron_right", onClick: this.handleScrollRight }))), h("div", { ref: (el) => (this.body = el), part: "body", class: "tab-group__body" }, h("slot", null))));
251
213
  }
252
214
  static get is() { return "six-tab-group"; }
253
215
  static get encapsulation() { return "shadow"; }
@@ -378,9 +340,6 @@ export class SixTabGroup {
378
340
  static get elementRef() { return "host"; }
379
341
  static get watchers() {
380
342
  return [{
381
- "propName": "placement",
382
- "methodName": "handlePlacementChange"
383
- }, {
384
343
  "propName": "noScrollControls",
385
344
  "methodName": "handleNoScrollControlsChange"
386
345
  }];
@@ -1 +1 @@
1
- {"version":3,"file":"six-tab-group.js","sourceRoot":"","sources":["../../../src/components/six-tab-group/six-tab-group.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Event, EventEmitter, h, Method, Prop, State, Watch } from '@stencil/core';\nimport { getOffset } from '../../utils/offset';\nimport { scrollIntoView } from '../../utils/scroll';\nimport { focusVisible } from '../../utils/focus-visible';\n\nexport interface SixTabShowPayload {\n name: string;\n}\n\nexport interface SixTabHidePayload {\n name: string;\n}\n\n/**\n * @since 1.0\n * @status stable\n *\n * Forked from https://github.com/shoelace-style/shoelace version v2.0.0-beta27.\n *\n * @slot nav - Used for grouping tabs in the tab group.\n * @slot - Used for grouping tab panels in the tab group.\n *\n * @part base - The component's base wrapper.\n * @part nav - The tab group navigation container.\n * @part tabs - The container that wraps the slotted tabs.\n * @part active-tab-indicator - An element that displays the currently selected tab. This is a child of the tab's container.\n * @part body - The tab group body where tab panels are slotted in.\n * @part scroll-button - The previous and next scroll buttons that appear when tabs are scrollable.\n */\n@Component({\n tag: 'six-tab-group',\n styleUrl: 'six-tab-group.scss',\n shadow: true,\n})\nexport class SixTabGroup {\n private activeTab?: HTMLSixTabElement;\n private activeTabIndicator?: HTMLElement;\n private body?: HTMLElement;\n private mutationObserver?: MutationObserver;\n private nav?: HTMLElement;\n private resizeObserver?: ResizeObserver;\n private tabGroup?: HTMLElement;\n private tabs?: HTMLElement;\n\n @Element() host!: HTMLSixTabGroupElement;\n\n @State() hasScrollControls = false;\n\n /** The placement of the tabs. */\n @Prop() placement: 'top' | 'bottom' | 'left' | 'right' = 'top';\n\n /** Disables the scroll arrows that appear when tabs overflow. */\n @Prop() noScrollControls = false;\n\n @Watch('placement')\n handlePlacementChange() {\n this.syncActiveTabIndicator();\n }\n\n @Watch('noScrollControls')\n handleNoScrollControlsChange() {\n this.updateScrollControls();\n }\n\n /** Emitted when a tab is shown. */\n @Event({ eventName: 'six-tab-show' }) sixTabShow!: EventEmitter<SixTabShowPayload>;\n\n /** Emitted when a tab is hidden. */\n @Event({ eventName: 'six-tab-hide' }) sixTabHide!: EventEmitter<SixTabHidePayload>;\n\n componentDidLoad() {\n if (this.tabGroup == null || this.nav == null) return;\n\n // Set initial tab state when the tabs first become visible\n const observer = new IntersectionObserver((entries, observer) => {\n if (entries[0].intersectionRatio > 0) {\n this.setAriaLabels();\n this.setActiveTab(this.getActiveTab() || this.getAllTabs()[0], false);\n observer.unobserve(entries[0].target);\n }\n });\n observer.observe(this.host);\n\n focusVisible.observe(this.tabGroup);\n\n this.resizeObserver = new ResizeObserver(() => this.updateScrollControls());\n this.resizeObserver.observe(this.nav);\n requestAnimationFrame(() => this.updateScrollControls());\n\n // Update aria labels if the DOM changes\n this.mutationObserver = new MutationObserver((mutations) => {\n if (\n mutations.some((mutation) => {\n return !['aria-labelledby', 'aria-controls'].includes(mutation.attributeName ?? '');\n })\n ) {\n setTimeout(() => this.setAriaLabels());\n }\n });\n this.mutationObserver.observe(this.host, { attributes: true, childList: true, subtree: true });\n }\n\n disconnectedCallback() {\n if (this.mutationObserver == null || this.tabGroup == null || this.nav == null || this.resizeObserver == null) {\n return;\n }\n\n this.mutationObserver.disconnect();\n focusVisible.unobserve(this.tabGroup);\n this.resizeObserver.unobserve(this.nav);\n }\n\n /** Shows the specified tab panel. */\n @Method()\n async show(panel: string) {\n const tabs = this.getAllTabs();\n const tab = tabs.find((el) => el.panel === panel);\n\n if (tab != null) {\n this.setActiveTab(tab);\n }\n }\n\n private getAllTabs(includeDisabled = false): HTMLSixTabElement[] {\n const slot = this.tabs?.querySelector('slot');\n if (slot == null) return [];\n\n return [...slot.assignedElements()].filter((el: Element) => {\n return includeDisabled\n ? el.tagName.toLowerCase() === 'six-tab'\n : el.tagName.toLowerCase() === 'six-tab' && !(el as HTMLSixTabElement).disabled;\n }) as [HTMLSixTabElement];\n }\n\n private getAllPanels(): HTMLSixTabPanelElement[] {\n const slot = this.body?.querySelector('slot');\n if (slot == null) return [];\n return [...slot.assignedElements()].filter((el: Element) => el.tagName.toLowerCase() === 'six-tab-panel') as [\n HTMLSixTabPanelElement\n ];\n }\n\n private getActiveTab() {\n return this.getAllTabs().find((el) => el.active);\n }\n\n private handleClick = (event: MouseEvent) => {\n const target = event.target as HTMLElement;\n const tab = target.closest('six-tab');\n const tabGroup = tab?.closest('six-tab-group');\n\n // Ensure the target tab is in this tab group\n if (tabGroup !== this.host) {\n return false;\n }\n\n if (tab != null) {\n this.setActiveTab(tab);\n }\n };\n\n private handleKeyDown = (event: KeyboardEvent) => {\n if (this.nav == null) return;\n\n const target = event.target as HTMLElement;\n const tab = target.closest('six-tab');\n const tabGroup = tab?.closest('six-tab-group');\n\n // Ensure the target tab is in this tab group\n if (tabGroup !== this.host) {\n return false;\n }\n\n // Activate a tab\n if (['Enter', ' '].includes(event.key)) {\n if (tab != null) {\n this.setActiveTab(tab);\n event.preventDefault();\n }\n }\n\n // Move focus left or right\n if (['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Home', 'End'].includes(event.key)) {\n const activeEl = document.activeElement as HTMLSixTabElement;\n\n if (activeEl && activeEl.tagName.toLowerCase() === 'six-tab') {\n const tabs = this.getAllTabs();\n let index = tabs.indexOf(activeEl);\n\n if (event.key === 'Home') {\n index = 0;\n } else if (event.key === 'End') {\n index = tabs.length - 1;\n } else if (event.key === 'ArrowLeft') {\n index = Math.max(0, index - 1);\n } else if (event.key === 'ArrowRight') {\n index = Math.min(tabs.length - 1, index + 1);\n }\n\n tabs[index].setFocus({ preventScroll: true });\n\n if (['top', 'bottom'].includes(this.placement)) {\n scrollIntoView(tabs[index], this.nav, 'horizontal');\n }\n\n event.preventDefault();\n }\n }\n };\n\n private handleScrollLeft = () => {\n if (this.nav == null) return;\n\n this.nav.scroll({\n left: this.nav.scrollLeft - this.nav.clientWidth,\n behavior: 'smooth',\n });\n };\n\n private handleScrollRight = () => {\n if (this.nav == null) return;\n\n this.nav.scroll({\n left: this.nav.scrollLeft + this.nav.clientWidth,\n behavior: 'smooth',\n });\n };\n\n private updateScrollControls() {\n if (this.nav == null) return;\n\n this.hasScrollControls = this.noScrollControls\n ? false\n : ['top', 'bottom'].includes(this.placement) && this.nav.scrollWidth > this.nav.clientWidth;\n }\n\n private setActiveTab(tab: HTMLSixTabElement, emitEvents = true) {\n if (this.nav == null) return;\n\n if (tab != null && tab !== this.activeTab && !tab.disabled) {\n const previousTab = this.activeTab;\n this.activeTab = tab;\n\n // Sync tabs and panels\n this.getAllTabs().map((el) => (el.active = el === this.activeTab));\n this.getAllPanels().map((el) => (el.active = el.name === this.activeTab?.panel));\n this.syncActiveTabIndicator();\n\n if (['top', 'bottom'].includes(this.placement)) {\n scrollIntoView(this.activeTab, this.nav, 'horizontal');\n }\n\n // Emit events\n if (emitEvents) {\n if (previousTab != null) {\n this.sixTabHide.emit({ name: previousTab.panel });\n }\n\n this.sixTabShow.emit({ name: this.activeTab.panel });\n }\n }\n }\n\n private setAriaLabels() {\n const tabs = this.getAllTabs();\n const panels = this.getAllPanels();\n\n // Link each tab with its corresponding panel\n tabs.map((tab) => {\n const panel = panels.find((el) => el.name === tab.panel);\n if (panel != null) {\n tab.setAttribute('aria-controls', panel.getAttribute('id') ?? '');\n panel.setAttribute('aria-labelledby', tab.getAttribute('id') ?? '');\n }\n });\n }\n\n private syncActiveTabIndicator = () => {\n if (this.activeTabIndicator == null || this.nav == null) return;\n\n const tab = this.getActiveTab();\n\n if (tab != null) {\n this.activeTabIndicator.style.display = 'block';\n } else {\n this.activeTabIndicator.style.display = 'none';\n return;\n }\n\n const width = tab.clientWidth;\n const height = tab.clientHeight;\n const offset = getOffset(tab, this.nav);\n const offsetTop = offset.top + this.nav.scrollTop;\n const offsetLeft = offset.left + this.nav.scrollLeft;\n\n switch (this.placement) {\n case 'top':\n case 'bottom':\n this.activeTabIndicator.style.width = `${width}px`;\n this.activeTabIndicator.style.height = '';\n this.activeTabIndicator.style.transform = `translateX(${offsetLeft}px)`;\n break;\n\n case 'left':\n case 'right':\n this.activeTabIndicator.style.width = '';\n this.activeTabIndicator.style.height = `${height}px`;\n this.activeTabIndicator.style.transform = `translateY(${offsetTop}px)`;\n break;\n }\n };\n\n render() {\n return (\n <div\n part=\"base\"\n ref={(el) => (this.tabGroup = el)}\n class={{\n 'tab-group': true,\n\n // Placements\n 'tab-group--top': this.placement === 'top',\n 'tab-group--bottom': this.placement === 'bottom',\n 'tab-group--left': this.placement === 'left',\n 'tab-group--right': this.placement === 'right',\n\n 'tab-group--has-scroll-controls': this.hasScrollControls,\n }}\n onClick={this.handleClick}\n onKeyDown={this.handleKeyDown}\n >\n <div class=\"tab-group__nav-container\">\n {this.hasScrollControls && (\n <six-icon-button\n class=\"tab-group__scroll-button tab-group__scroll-button--left\"\n exportparts=\"base:scroll-button\"\n name=\"chevron_left\"\n onClick={this.handleScrollLeft}\n />\n )}\n <div ref={(el) => (this.nav = el)} key=\"nav\" part=\"nav\" class=\"tab-group__nav\">\n <div ref={(el) => (this.tabs = el)} part=\"tabs\" class=\"tab-group__tabs\" role=\"tablist\">\n <div\n ref={(el) => (this.activeTabIndicator = el)}\n part=\"active-tab-indicator\"\n class=\"tab-group__active-tab-indicator\"\n />\n <slot name=\"nav\" onSlotchange={this.syncActiveTabIndicator} />\n </div>\n </div>\n {this.hasScrollControls && (\n <six-icon-button\n class=\"tab-group__scroll-button tab-group__scroll-button--right\"\n exportparts=\"base:scroll-button\"\n name=\"chevron_right\"\n onClick={this.handleScrollRight}\n />\n )}\n </div>\n\n <div ref={(el) => (this.body = el)} part=\"body\" class=\"tab-group__body\">\n <slot onSlotchange={this.syncActiveTabIndicator} />\n </div>\n </div>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"six-tab-group.js","sourceRoot":"","sources":["../../../src/components/six-tab-group/six-tab-group.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Event, EventEmitter, h, Method, Prop, State, Watch } from '@stencil/core';\nimport { scrollIntoView } from '../../utils/scroll';\nimport { flipAnimate } from '../../utils/animation';\n\nexport interface SixTabShowPayload {\n name: string;\n}\n\nexport interface SixTabHidePayload {\n name: string;\n}\n\n/**\n * @since 1.0\n * @status stable\n *\n * Forked from https://github.com/shoelace-style/shoelace version v2.0.0-beta27.\n *\n * @slot nav - Used for grouping tabs in the tab group.\n * @slot - Used for grouping tab panels in the tab group.\n *\n * @part base - The component's base wrapper.\n * @part nav - The tab group navigation container.\n * @part tabs - The container that wraps the slotted tabs.\n * @part active-tab-indicator - An element that displays the currently selected tab. This is a child of the tab's container.\n * @part body - The tab group body where tab panels are slotted in.\n * @part scroll-button - The previous and next scroll buttons that appear when tabs are scrollable.\n */\n@Component({\n tag: 'six-tab-group',\n styleUrl: 'six-tab-group.scss',\n shadow: true,\n})\nexport class SixTabGroup {\n private activeTab?: HTMLSixTabElement;\n private body?: HTMLElement;\n private mutationObserver?: MutationObserver;\n private nav?: HTMLElement;\n private resizeObserver?: ResizeObserver;\n private tabGroup?: HTMLElement;\n private tabs?: HTMLElement;\n\n @Element() host!: HTMLSixTabGroupElement;\n\n @State() hasScrollControls = false;\n\n /** The placement of the tabs. */\n @Prop() placement: 'top' | 'bottom' | 'left' | 'right' = 'top';\n\n /** Disables the scroll arrows that appear when tabs overflow. */\n @Prop() noScrollControls = false;\n\n @Watch('noScrollControls')\n handleNoScrollControlsChange() {\n this.updateScrollControls();\n }\n\n /** Emitted when a tab is shown. */\n @Event({ eventName: 'six-tab-show' }) sixTabShow!: EventEmitter<SixTabShowPayload>;\n\n /** Emitted when a tab is hidden. */\n @Event({ eventName: 'six-tab-hide' }) sixTabHide!: EventEmitter<SixTabHidePayload>;\n\n componentDidLoad() {\n if (this.tabGroup == null || this.nav == null) return;\n\n // Set initial tab state when the tabs first become visible\n const observer = new IntersectionObserver((entries, observer) => {\n if (entries[0].intersectionRatio > 0) {\n this.setAriaLabels();\n this.setActiveTab(this.getActiveTab() || this.getAllTabs()[0], false);\n observer.unobserve(entries[0].target);\n }\n });\n observer.observe(this.host);\n this.resizeObserver = new ResizeObserver(() => this.updateScrollControls());\n this.resizeObserver.observe(this.nav);\n requestAnimationFrame(() => this.updateScrollControls());\n\n // Update aria labels if the DOM changes\n this.mutationObserver = new MutationObserver((mutations) => {\n if (\n mutations.some((mutation) => {\n return !['aria-labelledby', 'aria-controls'].includes(mutation.attributeName ?? '');\n })\n ) {\n setTimeout(() => this.setAriaLabels());\n }\n });\n this.mutationObserver.observe(this.host, { attributes: true, childList: true, subtree: true });\n }\n\n disconnectedCallback() {\n if (this.mutationObserver == null || this.tabGroup == null || this.nav == null || this.resizeObserver == null) {\n return;\n }\n this.mutationObserver.disconnect();\n this.resizeObserver.unobserve(this.nav);\n }\n\n /** Shows the specified tab panel. */\n @Method()\n async show(panel: string) {\n const tabs = this.getAllTabs();\n const tab = tabs.find((el) => el.panel === panel);\n\n if (tab != null) {\n this.setActiveTab(tab);\n }\n }\n\n private getAllTabs(includeDisabled = false): HTMLSixTabElement[] {\n const slot = this.tabs?.querySelector('slot');\n if (slot == null) return [];\n\n return [...slot.assignedElements()].filter((el: Element) => {\n return includeDisabled\n ? el.tagName.toLowerCase() === 'six-tab'\n : el.tagName.toLowerCase() === 'six-tab' && !(el as HTMLSixTabElement).disabled;\n }) as [HTMLSixTabElement];\n }\n\n private getAllPanels(): HTMLSixTabPanelElement[] {\n const slot = this.body?.querySelector('slot');\n if (slot == null) return [];\n return [...slot.assignedElements()].filter((el: Element) => el.tagName.toLowerCase() === 'six-tab-panel') as [\n HTMLSixTabPanelElement\n ];\n }\n\n private getActiveTab() {\n return this.getAllTabs().find((el) => el.active);\n }\n\n private handleClick = (event: MouseEvent) => {\n const target = event.target as HTMLElement;\n const tab = target.closest('six-tab');\n const tabGroup = tab?.closest('six-tab-group');\n\n // Ensure the target tab is in this tab group\n if (tabGroup !== this.host) {\n return false;\n }\n\n if (tab != null) {\n this.setActiveTab(tab);\n }\n };\n\n private handleKeyDown = (event: KeyboardEvent) => {\n if (this.nav == null) return;\n\n const target = event.target as HTMLElement;\n const tab = target.closest('six-tab');\n const tabGroup = tab?.closest('six-tab-group');\n\n // Ensure the target tab is in this tab group\n if (tabGroup !== this.host) {\n return false;\n }\n\n // Move focus left or right\n if (['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Home', 'End'].includes(event.key)) {\n const activeEl = document.activeElement as HTMLSixTabElement;\n\n if (activeEl && activeEl.tagName.toLowerCase() === 'six-tab') {\n const tabs = this.getAllTabs();\n let index = tabs.indexOf(activeEl);\n\n if (event.key === 'Home') {\n index = 0;\n } else if (event.key === 'End') {\n index = tabs.length - 1;\n } else if (event.key === 'ArrowLeft') {\n index = Math.max(0, index - 1);\n } else if (event.key === 'ArrowRight') {\n index = Math.min(tabs.length - 1, index + 1);\n }\n\n tabs[index].setFocus({ preventScroll: true });\n this.setActiveTab(tabs[index]);\n\n if (['top', 'bottom'].includes(this.placement)) {\n scrollIntoView(tabs[index], this.nav, 'horizontal');\n }\n\n event.preventDefault();\n }\n }\n };\n\n private handleScrollLeft = () => {\n if (this.nav == null) return;\n\n this.nav.scroll({\n left: this.nav.scrollLeft - this.nav.clientWidth,\n behavior: 'smooth',\n });\n };\n\n private handleScrollRight = () => {\n if (this.nav == null) return;\n\n this.nav.scroll({\n left: this.nav.scrollLeft + this.nav.clientWidth,\n behavior: 'smooth',\n });\n };\n\n private updateScrollControls() {\n if (this.nav == null) return;\n\n this.hasScrollControls = this.noScrollControls\n ? false\n : ['top', 'bottom'].includes(this.placement) && this.nav.scrollWidth > this.nav.clientWidth;\n }\n\n private setActiveTab(tab: HTMLSixTabElement, emitEvents = true) {\n if (this.nav == null) return;\n\n const newIndicator = tab?.shadowRoot?.querySelector('.tab__indicator');\n const oldIndicator = this.getActiveTab()?.shadowRoot?.querySelector('.tab__indicator');\n\n if (oldIndicator != null && newIndicator != null) {\n flipAnimate(newIndicator, oldIndicator);\n }\n\n if (tab !== this.activeTab && !tab.disabled) {\n const previousTab = this.activeTab;\n this.activeTab = tab;\n\n // Sync tabs and panels\n this.getAllTabs().map((el) => (el.active = el === this.activeTab));\n this.getAllPanels().map((el) => (el.active = el.name === this.activeTab?.panel));\n\n if (['top', 'bottom'].includes(this.placement)) {\n scrollIntoView(this.activeTab, this.nav, 'horizontal');\n }\n\n // Emit events\n if (emitEvents) {\n if (previousTab != null) {\n this.sixTabHide.emit({ name: previousTab.panel });\n }\n\n this.sixTabShow.emit({ name: this.activeTab.panel });\n }\n }\n }\n\n private setAriaLabels() {\n const tabs = this.getAllTabs();\n const panels = this.getAllPanels();\n\n // Link each tab with its corresponding panel\n tabs.map((tab) => {\n const panel = panels.find((el) => el.name === tab.panel);\n if (panel != null) {\n tab.setAttribute('aria-controls', panel.getAttribute('id') ?? '');\n panel.setAttribute('aria-labelledby', tab.getAttribute('id') ?? '');\n }\n });\n }\n\n render() {\n return (\n <div\n part=\"base\"\n ref={(el) => (this.tabGroup = el)}\n class={{\n 'tab-group': true,\n\n // Placements\n 'tab-group--top': this.placement === 'top',\n 'tab-group--bottom': this.placement === 'bottom',\n 'tab-group--left': this.placement === 'left',\n 'tab-group--right': this.placement === 'right',\n\n 'tab-group--has-scroll-controls': this.hasScrollControls,\n }}\n onClick={this.handleClick}\n onKeyDown={this.handleKeyDown}\n >\n <div class=\"tab-group__nav-container\">\n {this.hasScrollControls && (\n <six-icon-button\n class=\"tab-group__scroll-button tab-group__scroll-button--left\"\n exportparts=\"base:scroll-button\"\n name=\"chevron_left\"\n onClick={this.handleScrollLeft}\n />\n )}\n <div ref={(el) => (this.nav = el)} key=\"nav\" part=\"nav\" class=\"tab-group__nav\">\n <div ref={(el) => (this.tabs = el)} part=\"tabs\" class=\"tab-group__tabs\" role=\"tablist\">\n <slot name=\"nav\" />\n </div>\n </div>\n {this.hasScrollControls && (\n <six-icon-button\n class=\"tab-group__scroll-button tab-group__scroll-button--right\"\n exportparts=\"base:scroll-button\"\n name=\"chevron_right\"\n onClick={this.handleScrollRight}\n />\n )}\n </div>\n\n <div ref={(el) => (this.body = el)} part=\"body\" class=\"tab-group__body\">\n <slot />\n </div>\n </div>\n );\n }\n}\n"]}
@@ -1,4 +1,6 @@
1
1
  import { h } from "@stencil/core";
2
+ import { getTextContent } from "../../utils/slot";
3
+ import { debounce } from "../../utils/execution-control";
2
4
  /**
3
5
  * @since 1.0
4
6
  * @status stable
@@ -13,6 +15,13 @@ import { h } from "@stencil/core";
13
15
  */
14
16
  export class SixTag {
15
17
  constructor() {
18
+ this.resizeObserver = new ResizeObserver(debounce(() => this.updateTooltip()));
19
+ this.updateTooltip = () => {
20
+ if (this.tooltipElement != null && this.contentSlotElement != null && this.contentElement != null) {
21
+ this.tooltipElement.content = getTextContent(this.contentSlotElement);
22
+ this.tooltipElement.disabled = !(this.contentElement.offsetWidth < this.contentElement.scrollWidth);
23
+ }
24
+ };
16
25
  this.handleClearClick = () => {
17
26
  this.sixClear.emit();
18
27
  };
@@ -21,6 +30,19 @@ export class SixTag {
21
30
  this.pill = false;
22
31
  this.clearable = false;
23
32
  }
33
+ connectedCallback() {
34
+ if (this.contentElement != null) {
35
+ this.resizeObserver.observe(this.contentElement);
36
+ }
37
+ }
38
+ componentDidLoad() {
39
+ if (this.contentElement != null) {
40
+ this.resizeObserver.observe(this.contentElement);
41
+ }
42
+ }
43
+ disconnectedCallback() {
44
+ this.resizeObserver.disconnect();
45
+ }
24
46
  render() {
25
47
  return (h("span", { part: "base", class: {
26
48
  tag: true,
@@ -39,7 +61,7 @@ export class SixTag {
39
61
  // Modifers
40
62
  'tag--pill': this.pill,
41
63
  'tag--clear': this.clearable,
42
- } }, h("span", { part: "content", class: "tag__content" }, h("slot", null)), this.clearable && (h("six-icon-button", { exportparts: "base:clear-button", size: "xSmall", name: "clear", class: "tag__clear", onClick: this.handleClearClick }))));
64
+ } }, h("six-tooltip", { ref: (el) => (this.tooltipElement = el) }, h("span", { ref: (el) => (this.contentElement = el), part: "content", class: "tag__content" }, h("slot", { ref: (el) => (this.contentSlotElement = el) }))), this.clearable && (h("six-icon-button", { exportparts: "base:clear-button", size: "xSmall", name: "clear", class: "tag__clear", onClick: this.handleClearClick }))));
43
65
  }
44
66
  static get is() { return "six-tag"; }
45
67
  static get encapsulation() { return "shadow"; }
@@ -1 +1 @@
1
- {"version":3,"file":"six-tag.js","sourceRoot":"","sources":["../../../src/components/six-tag/six-tag.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAgB,CAAC,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAGxE;;;;;;;;;;;GAWG;AAOH,MAAM,OAAO,MAAM;;IAgBT,qBAAgB,GAAG,GAAG,EAAE;MAC9B,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC,CAAC;gBAhByG,SAAS;gBAGtD,QAAQ;gBAGtC,KAAK;qBAGA,KAAK;;EAS1C,MAAM;IACJ,OAAO,CACL,YACE,IAAI,EAAC,MAAM,EACX,KAAK,EAAE;QACL,GAAG,EAAE,IAAI;QAET,QAAQ;QACR,cAAc,EAAE,IAAI,CAAC,IAAI,KAAK,SAAS;QACvC,cAAc,EAAE,IAAI,CAAC,IAAI,KAAK,SAAS;QACvC,WAAW,EAAE,IAAI,CAAC,IAAI,KAAK,MAAM;QACjC,cAAc,EAAE,IAAI,CAAC,IAAI,KAAK,SAAS;QACvC,aAAa,EAAE,IAAI,CAAC,IAAI,KAAK,QAAQ;QACrC,aAAa,EAAE,IAAI,CAAC,IAAI,KAAK,QAAQ;QACrC,WAAW,EAAE,IAAI,CAAC,IAAI,KAAK,MAAM;QAEjC,QAAQ;QACR,YAAY,EAAE,IAAI,CAAC,IAAI,KAAK,OAAO;QACnC,aAAa,EAAE,IAAI,CAAC,IAAI,KAAK,QAAQ;QACrC,YAAY,EAAE,IAAI,CAAC,IAAI,KAAK,OAAO;QAEnC,WAAW;QACX,WAAW,EAAE,IAAI,CAAC,IAAI;QACtB,YAAY,EAAE,IAAI,CAAC,SAAS;OAC7B;MAED,YAAM,IAAI,EAAC,SAAS,EAAC,KAAK,EAAC,cAAc;QACvC,eAAQ,CACH;MAEN,IAAI,CAAC,SAAS,IAAI,CACjB,uBACE,WAAW,EAAC,mBAAmB,EAC/B,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,OAAO,EACZ,KAAK,EAAC,YAAY,EAClB,OAAO,EAAE,IAAI,CAAC,gBAAgB,GAC9B,CACH,CACI,CACR,CAAC;EACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Event, EventEmitter, h, Prop } from '@stencil/core';\nimport { EmptyPayload } from '../../utils/types';\n\n/**\n * @since 1.0\n * @status stable\n *\n * Forked from https://github.com/shoelace-style/shoelace version v2.0.0-beta27.\n *\n * @slot - The tag's content.\n *\n * @part base - The component's base wrapper.\n * @part content - The tag content.\n * @part clear-button - The clear button.\n */\n\n@Component({\n tag: 'six-tag',\n styleUrl: 'six-tag.scss',\n shadow: true,\n})\nexport class SixTag {\n /** The tag's type. */\n @Prop({ reflect: true }) type: 'primary' | 'success' | 'info' | 'warning' | 'danger' | 'action' | 'text' = 'primary';\n\n /** The tag's size. */\n @Prop({ reflect: true }) size: 'small' | 'medium' | 'large' = 'medium';\n\n /** Set to true to draw a pill-style tag with rounded edges. */\n @Prop({ reflect: true }) pill = false;\n\n /** Set to true to make the tag clearable. */\n @Prop({ reflect: true }) clearable = false;\n\n /** Emitted when the clear button is activated. */\n @Event({ eventName: 'six-tag-clear' }) sixClear!: EventEmitter<EmptyPayload>;\n\n private handleClearClick = () => {\n this.sixClear.emit();\n };\n\n render() {\n return (\n <span\n part=\"base\"\n class={{\n tag: true,\n\n // Types\n 'tag--primary': this.type === 'primary',\n 'tag--success': this.type === 'success',\n 'tag--info': this.type === 'info',\n 'tag--warning': this.type === 'warning',\n 'tag--danger': this.type === 'danger',\n 'tag--action': this.type === 'action',\n 'tag--text': this.type === 'text',\n\n // Sizes\n 'tag--small': this.size === 'small',\n 'tag--medium': this.size === 'medium',\n 'tag--large': this.size === 'large',\n\n // Modifers\n 'tag--pill': this.pill,\n 'tag--clear': this.clearable,\n }}\n >\n <span part=\"content\" class=\"tag__content\">\n <slot />\n </span>\n\n {this.clearable && (\n <six-icon-button\n exportparts=\"base:clear-button\"\n size=\"xSmall\"\n name=\"clear\"\n class=\"tag__clear\"\n onClick={this.handleClearClick}\n />\n )}\n </span>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"six-tag.js","sourceRoot":"","sources":["../../../src/components/six-tag/six-tag.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAgB,CAAC,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAExE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAEzD;;;;;;;;;;;GAWG;AAOH,MAAM,OAAO,MAAM;;IAmBT,mBAAc,GAAG,IAAI,cAAc,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IAkB1E,kBAAa,GAAG,GAAG,EAAE;MAC3B,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,EAAE;QACjG,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACtE,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;OACrG;IACH,CAAC,CAAC;IAEM,qBAAgB,GAAG,GAAG,EAAE;MAC9B,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC,CAAC;gBA5CyG,SAAS;gBAGtD,QAAQ;gBAGtC,KAAK;qBAGA,KAAK;;EAU1C,iBAAiB;IACf,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,EAAE;MAC/B,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KAClD;EACH,CAAC;EAED,gBAAgB;IACd,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,EAAE;MAC/B,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KAClD;EACH,CAAC;EAED,oBAAoB;IAClB,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;EACnC,CAAC;EAaD,MAAM;IACJ,OAAO,CACL,YACE,IAAI,EAAC,MAAM,EACX,KAAK,EAAE;QACL,GAAG,EAAE,IAAI;QAET,QAAQ;QACR,cAAc,EAAE,IAAI,CAAC,IAAI,KAAK,SAAS;QACvC,cAAc,EAAE,IAAI,CAAC,IAAI,KAAK,SAAS;QACvC,WAAW,EAAE,IAAI,CAAC,IAAI,KAAK,MAAM;QACjC,cAAc,EAAE,IAAI,CAAC,IAAI,KAAK,SAAS;QACvC,aAAa,EAAE,IAAI,CAAC,IAAI,KAAK,QAAQ;QACrC,aAAa,EAAE,IAAI,CAAC,IAAI,KAAK,QAAQ;QACrC,WAAW,EAAE,IAAI,CAAC,IAAI,KAAK,MAAM;QAEjC,QAAQ;QACR,YAAY,EAAE,IAAI,CAAC,IAAI,KAAK,OAAO;QACnC,aAAa,EAAE,IAAI,CAAC,IAAI,KAAK,QAAQ;QACrC,YAAY,EAAE,IAAI,CAAC,IAAI,KAAK,OAAO;QAEnC,WAAW;QACX,WAAW,EAAE,IAAI,CAAC,IAAI;QACtB,YAAY,EAAE,IAAI,CAAC,SAAS;OAC7B;MAED,mBAAa,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QAClD,YAAM,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC,EAAE,IAAI,EAAC,SAAS,EAAC,KAAK,EAAC,cAAc;UAChF,YAAM,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,GAAG,EAAqB,CAAC,GAAI,CACnE,CACK;MAEb,IAAI,CAAC,SAAS,IAAI,CACjB,uBACE,WAAW,EAAC,mBAAmB,EAC/B,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,OAAO,EACZ,KAAK,EAAC,YAAY,EAClB,OAAO,EAAE,IAAI,CAAC,gBAAgB,GAC9B,CACH,CACI,CACR,CAAC;EACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Event, EventEmitter, h, Prop } from '@stencil/core';\nimport { EmptyPayload } from '../../utils/types';\nimport { getTextContent } from '../../utils/slot';\nimport { debounce } from '../../utils/execution-control';\n\n/**\n * @since 1.0\n * @status stable\n *\n * Forked from https://github.com/shoelace-style/shoelace version v2.0.0-beta27.\n *\n * @slot - The tag's content.\n *\n * @part base - The component's base wrapper.\n * @part content - The tag content.\n * @part clear-button - The clear button.\n */\n\n@Component({\n tag: 'six-tag',\n styleUrl: 'six-tag.scss',\n shadow: true,\n})\nexport class SixTag {\n /** The tag's type. */\n @Prop({ reflect: true }) type: 'primary' | 'success' | 'info' | 'warning' | 'danger' | 'action' | 'text' = 'primary';\n\n /** The tag's size. */\n @Prop({ reflect: true }) size: 'small' | 'medium' | 'large' = 'medium';\n\n /** Set to true to draw a pill-style tag with rounded edges. */\n @Prop({ reflect: true }) pill = false;\n\n /** Set to true to make the tag clearable. */\n @Prop({ reflect: true }) clearable = false;\n\n /** Emitted when the clear button is activated. */\n @Event({ eventName: 'six-tag-clear' }) sixClear!: EventEmitter<EmptyPayload>;\n\n private contentSlotElement: HTMLSlotElement | undefined;\n private tooltipElement: HTMLSixTooltipElement | undefined;\n private contentElement: HTMLElement | undefined;\n private resizeObserver = new ResizeObserver(debounce(() => this.updateTooltip()));\n\n connectedCallback() {\n if (this.contentElement != null) {\n this.resizeObserver.observe(this.contentElement);\n }\n }\n\n componentDidLoad() {\n if (this.contentElement != null) {\n this.resizeObserver.observe(this.contentElement);\n }\n }\n\n disconnectedCallback() {\n this.resizeObserver.disconnect();\n }\n\n private updateTooltip = () => {\n if (this.tooltipElement != null && this.contentSlotElement != null && this.contentElement != null) {\n this.tooltipElement.content = getTextContent(this.contentSlotElement);\n this.tooltipElement.disabled = !(this.contentElement.offsetWidth < this.contentElement.scrollWidth);\n }\n };\n\n private handleClearClick = () => {\n this.sixClear.emit();\n };\n\n render() {\n return (\n <span\n part=\"base\"\n class={{\n tag: true,\n\n // Types\n 'tag--primary': this.type === 'primary',\n 'tag--success': this.type === 'success',\n 'tag--info': this.type === 'info',\n 'tag--warning': this.type === 'warning',\n 'tag--danger': this.type === 'danger',\n 'tag--action': this.type === 'action',\n 'tag--text': this.type === 'text',\n\n // Sizes\n 'tag--small': this.size === 'small',\n 'tag--medium': this.size === 'medium',\n 'tag--large': this.size === 'large',\n\n // Modifers\n 'tag--pill': this.pill,\n 'tag--clear': this.clearable,\n }}\n >\n <six-tooltip ref={(el) => (this.tooltipElement = el)}>\n <span ref={(el) => (this.contentElement = el)} part=\"content\" class=\"tag__content\">\n <slot ref={(el) => (this.contentSlotElement = el as HTMLSlotElement)} />\n </span>\n </six-tooltip>\n\n {this.clearable && (\n <six-icon-button\n exportparts=\"base:clear-button\"\n size=\"xSmall\"\n name=\"clear\"\n class=\"tag__clear\"\n onClick={this.handleClearClick}\n />\n )}\n </span>\n );\n }\n}\n"]}
@@ -1,18 +1,28 @@
1
1
  import { newSpecPage } from "@stencil/core/testing";
2
2
  import { SixTag } from "../six-tag";
3
3
  describe('six-tag', () => {
4
+ beforeEach(async () => {
5
+ global.ResizeObserver = jest.fn().mockImplementation(() => ({
6
+ observe: jest.fn(),
7
+ unobserve: jest.fn(),
8
+ disconnect: jest.fn(),
9
+ }));
10
+ });
4
11
  it('renders', async () => {
5
12
  const page = await newSpecPage({
6
13
  components: [SixTag],
7
14
  html: `<six-tag size="small">label</six-tag>`,
8
15
  });
9
16
  expect(page.root).toEqualHtml(`
17
+
10
18
  <six-tag size="small" type="primary">
11
19
  <mock:shadow-root>
12
20
  <span class="tag tag--primary tag--small" part="base">
21
+ <six-tooltip>
13
22
  <span class="tag__content" part="content">
14
23
  <slot></slot>
15
24
  </span>
25
+ </six-tooltip>
16
26
  </span>
17
27
  </mock:shadow-root>
18
28
  label
@@ -28,9 +38,11 @@ describe('six-tag', () => {
28
38
  <six-tag clearable="" size="medium" type="primary">
29
39
  <mock:shadow-root>
30
40
  <span class="tag tag--clear tag--medium tag--primary" part="base">
41
+ <six-tooltip>
31
42
  <span class="tag__content" part="content">
32
43
  <slot></slot>
33
44
  </span>
45
+ </six-tooltip>
34
46
  <six-icon-button class="tag__clear" exportparts="base:clear-button" name="clear" size="xSmall"></six-icon-button>
35
47
  </span>
36
48
  </mock:shadow-root>
@@ -1 +1 @@
1
- {"version":3,"file":"six-tag.spec.js","sourceRoot":"","sources":["../../../../src/components/six-tag/test/six-tag.spec.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEpC,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;EACvB,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;IACvB,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;MAC7B,UAAU,EAAE,CAAC,MAAM,CAAC;MACpB,IAAI,EAAE,uCAAuC;KAC9C,CAAC,CAAC;IACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;;;;;;;;;;;KAW7B,CAAC,CAAC;EACL,CAAC,CAAC,CAAC;EAEH,EAAE,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;IACjC,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;MAC7B,UAAU,EAAE,CAAC,MAAM,CAAC;MACpB,IAAI,EAAE,kDAAkD;KACzD,CAAC,CAAC;IACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;;;;;;;;;;;;KAY7B,CAAC,CAAC;EACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { newSpecPage } from '@stencil/core/testing';\nimport { SixTag } from '../six-tag';\n\ndescribe('six-tag', () => {\n it('renders', async () => {\n const page = await newSpecPage({\n components: [SixTag],\n html: `<six-tag size=\"small\">label</six-tag>`,\n });\n expect(page.root).toEqualHtml(`\n <six-tag size=\"small\" type=\"primary\">\n <mock:shadow-root>\n <span class=\"tag tag--primary tag--small\" part=\"base\">\n <span class=\"tag__content\" part=\"content\">\n <slot></slot>\n </span>\n </span>\n </mock:shadow-root>\n label\n </six-tag>\n `);\n });\n\n it('renders clearable', async () => {\n const page = await newSpecPage({\n components: [SixTag],\n html: `<six-tag size=\"medium\" clearable>label</six-tag>`,\n });\n expect(page.root).toEqualHtml(`\n <six-tag clearable=\"\" size=\"medium\" type=\"primary\">\n <mock:shadow-root>\n <span class=\"tag tag--clear tag--medium tag--primary\" part=\"base\">\n <span class=\"tag__content\" part=\"content\">\n <slot></slot>\n </span>\n <six-icon-button class=\"tag__clear\" exportparts=\"base:clear-button\" name=\"clear\" size=\"xSmall\"></six-icon-button>\n </span>\n </mock:shadow-root>\n label\n </six-tag>\n `);\n });\n});\n"]}
1
+ {"version":3,"file":"six-tag.spec.js","sourceRoot":"","sources":["../../../../src/components/six-tag/test/six-tag.spec.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEpC,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;EACvB,UAAU,CAAC,KAAK,IAAI,EAAE;IACpB,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC;MAC1D,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE;MAClB,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE;MACpB,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE;KACtB,CAAC,CAAC,CAAC;EACN,CAAC,CAAC,CAAC;EAEH,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;IACvB,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;MAC7B,UAAU,EAAE,CAAC,MAAM,CAAC;MACpB,IAAI,EAAE,uCAAuC;KAC9C,CAAC,CAAC;IACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;;;;;;;;;;;;;;KAc7B,CAAC,CAAC;EACL,CAAC,CAAC,CAAC;EAEH,EAAE,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;IACjC,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;MAC7B,UAAU,EAAE,CAAC,MAAM,CAAC;MACpB,IAAI,EAAE,kDAAkD;KACzD,CAAC,CAAC;IACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;;;;;;;;;;;;;;KAc7B,CAAC,CAAC;EACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { newSpecPage } from '@stencil/core/testing';\nimport { SixTag } from '../six-tag';\n\ndescribe('six-tag', () => {\n beforeEach(async () => {\n global.ResizeObserver = jest.fn().mockImplementation(() => ({\n observe: jest.fn(),\n unobserve: jest.fn(),\n disconnect: jest.fn(),\n }));\n });\n\n it('renders', async () => {\n const page = await newSpecPage({\n components: [SixTag],\n html: `<six-tag size=\"small\">label</six-tag>`,\n });\n expect(page.root).toEqualHtml(`\n\n <six-tag size=\"small\" type=\"primary\">\n <mock:shadow-root>\n <span class=\"tag tag--primary tag--small\" part=\"base\">\n <six-tooltip>\n <span class=\"tag__content\" part=\"content\">\n <slot></slot>\n </span>\n </six-tooltip>\n </span>\n </mock:shadow-root>\n label\n </six-tag>\n `);\n });\n\n it('renders clearable', async () => {\n const page = await newSpecPage({\n components: [SixTag],\n html: `<six-tag size=\"medium\" clearable>label</six-tag>`,\n });\n expect(page.root).toEqualHtml(`\n <six-tag clearable=\"\" size=\"medium\" type=\"primary\">\n <mock:shadow-root>\n <span class=\"tag tag--clear tag--medium tag--primary\" part=\"base\">\n <six-tooltip>\n <span class=\"tag__content\" part=\"content\">\n <slot></slot>\n </span>\n </six-tooltip>\n <six-icon-button class=\"tag__clear\" exportparts=\"base:clear-button\" name=\"clear\" size=\"xSmall\"></six-icon-button>\n </span>\n </mock:shadow-root>\n label\n </six-tag>\n `);\n });\n});\n"]}
@@ -14,6 +14,7 @@
14
14
  }
15
15
  .form-control .form-control__error-text {
16
16
  display: none;
17
+ text-align: left;
17
18
  }
18
19
 
19
20
  .form-control--has-label .form-control__label {
@@ -56,7 +57,6 @@
56
57
 
57
58
  .form-control--has-error-text .form-control__error-text {
58
59
  display: block;
59
- color: var(--six-color-danger-800);
60
60
  margin-top: var(--six-spacing-xxx-small);
61
61
  }
62
62
  .form-control--has-error-text .form-control__error-text ::slotted(*) {