@scouterna/ui-webc 2.0.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (293) hide show
  1. package/dist/cjs/{index-D42maJcS.js → index-CtwQwhfH.js} +7 -8
  2. package/dist/cjs/index-CtwQwhfH.js.map +1 -0
  3. package/dist/cjs/index.cjs.js +1 -1
  4. package/dist/cjs/index.cjs.js.map +1 -1
  5. package/dist/cjs/loader.cjs.js +2 -2
  6. package/dist/cjs/scout-app-bar.cjs.entry.js +20 -0
  7. package/dist/cjs/scout-app-bar.entry.cjs.js.map +1 -0
  8. package/dist/cjs/scout-bottom-bar-item.cjs.entry.js +8 -2
  9. package/dist/cjs/scout-bottom-bar-item.entry.cjs.js.map +1 -1
  10. package/dist/cjs/scout-bottom-bar.cjs.entry.js +2 -2
  11. package/dist/cjs/scout-bottom-bar.entry.cjs.js.map +1 -1
  12. package/dist/cjs/scout-button.cjs.entry.js +19 -3
  13. package/dist/cjs/scout-button.entry.cjs.js.map +1 -1
  14. package/dist/cjs/scout-card.cjs.entry.js +3 -3
  15. package/dist/cjs/scout-card.entry.cjs.js.map +1 -1
  16. package/dist/cjs/scout-checkbox.scout-radio-button.entry.cjs.js.map +1 -0
  17. package/dist/cjs/scout-checkbox_2.cjs.entry.js +91 -0
  18. package/dist/cjs/scout-divider.cjs.entry.js +19 -0
  19. package/dist/cjs/scout-divider.entry.cjs.js.map +1 -0
  20. package/dist/cjs/scout-field.cjs.entry.js +2 -2
  21. package/dist/cjs/scout-field.entry.cjs.js.map +1 -1
  22. package/dist/cjs/scout-input.cjs.entry.js +3 -2
  23. package/dist/cjs/scout-input.entry.cjs.js.map +1 -1
  24. package/dist/cjs/scout-link.cjs.entry.js +64 -0
  25. package/dist/cjs/scout-link.entry.cjs.js.map +1 -0
  26. package/dist/cjs/scout-list-view-item.cjs.entry.js +63 -0
  27. package/dist/cjs/scout-list-view-item.entry.cjs.js.map +1 -0
  28. package/dist/cjs/scout-list-view-subheader.cjs.entry.js +21 -0
  29. package/dist/cjs/scout-list-view-subheader.entry.cjs.js.map +1 -0
  30. package/dist/cjs/scout-list-view.cjs.entry.js +39 -0
  31. package/dist/cjs/scout-list-view.entry.cjs.js.map +1 -0
  32. package/dist/cjs/scout-loader.cjs.entry.js +73 -0
  33. package/dist/cjs/scout-loader.entry.cjs.js.map +1 -0
  34. package/dist/cjs/scout-select.cjs.entry.js +61 -0
  35. package/dist/cjs/scout-select.entry.cjs.js.map +1 -0
  36. package/dist/cjs/scout-stack.cjs.entry.js +39 -0
  37. package/dist/cjs/scout-stack.entry.cjs.js.map +1 -0
  38. package/dist/cjs/scout-switch.cjs.entry.js +3 -3
  39. package/dist/cjs/scout-switch.entry.cjs.js.map +1 -1
  40. package/dist/cjs/ui-webc.cjs.js +3 -3
  41. package/dist/cjs/ui-webc.cjs.js.map +1 -1
  42. package/dist/collection/collection-manifest.json +13 -3
  43. package/dist/collection/components/app-bar/app-bar.css +27 -0
  44. package/dist/collection/components/app-bar/app-bar.js +44 -0
  45. package/dist/collection/components/app-bar/app-bar.js.map +1 -0
  46. package/dist/collection/components/bottom-bar/bottom-bar.css +1 -1
  47. package/dist/collection/components/bottom-bar/bottom-bar.js +1 -1
  48. package/dist/collection/components/bottom-bar-item/bottom-bar-item.css +1 -1
  49. package/dist/collection/components/bottom-bar-item/bottom-bar-item.js +46 -2
  50. package/dist/collection/components/bottom-bar-item/bottom-bar-item.js.map +1 -1
  51. package/dist/collection/components/button/button.css +40 -17
  52. package/dist/collection/components/button/button.js +97 -4
  53. package/dist/collection/components/button/button.js.map +1 -1
  54. package/dist/collection/components/card/card.css +4 -2
  55. package/dist/collection/components/card/card.js +1 -1
  56. package/dist/collection/components/checkbox/checkbox.css +2 -6
  57. package/dist/collection/components/checkbox/checkbox.js +47 -13
  58. package/dist/collection/components/checkbox/checkbox.js.map +1 -1
  59. package/dist/collection/components/divider/divider.css +5 -0
  60. package/dist/collection/components/divider/divider.js +20 -0
  61. package/dist/collection/components/divider/divider.js.map +1 -0
  62. package/dist/collection/components/field/field.css +1 -1
  63. package/dist/collection/components/field/field.js +1 -1
  64. package/dist/collection/components/input/input.css +1 -1
  65. package/dist/collection/components/input/input.js +23 -3
  66. package/dist/collection/components/input/input.js.map +1 -1
  67. package/dist/collection/components/link/link.css +30 -0
  68. package/dist/collection/components/link/link.js +207 -0
  69. package/dist/collection/components/link/link.js.map +1 -0
  70. package/dist/collection/components/list-view/list-view.css +5 -0
  71. package/dist/collection/components/list-view/list-view.js +50 -0
  72. package/dist/collection/components/list-view/list-view.js.map +1 -0
  73. package/dist/collection/components/list-view-item/list-view-item.css +71 -0
  74. package/dist/collection/components/list-view-item/list-view-item.js +282 -0
  75. package/dist/collection/components/list-view-item/list-view-item.js.map +1 -0
  76. package/dist/collection/components/list-view-subheader/list-view-subheader.css +18 -0
  77. package/dist/collection/components/list-view-subheader/list-view-subheader.js +65 -0
  78. package/dist/collection/components/list-view-subheader/list-view-subheader.js.map +1 -0
  79. package/dist/collection/components/loader/loader.css +118 -0
  80. package/dist/collection/components/loader/loader.js +111 -0
  81. package/dist/collection/components/loader/loader.js.map +1 -0
  82. package/dist/collection/components/loader/symbols/adventurer.svg +22 -0
  83. package/dist/collection/components/loader/symbols/challenger.svg +22 -0
  84. package/dist/collection/components/loader/symbols/discoverer.svg +22 -0
  85. package/dist/collection/components/loader/symbols/family-scout.svg +22 -0
  86. package/dist/collection/components/loader/symbols/rover.svg +22 -0
  87. package/dist/collection/components/loader/symbols/tracker.svg +22 -0
  88. package/dist/collection/components/radio-button/radio-button.css +73 -0
  89. package/dist/collection/components/radio-button/radio-button.js +209 -0
  90. package/dist/collection/components/radio-button/radio-button.js.map +1 -0
  91. package/dist/collection/components/select/select.css +59 -0
  92. package/dist/collection/components/select/select.js +196 -0
  93. package/dist/collection/components/select/select.js.map +1 -0
  94. package/dist/collection/components/stack/stack.css +6 -0
  95. package/dist/collection/components/stack/stack.js +96 -0
  96. package/dist/collection/components/stack/stack.js.map +1 -0
  97. package/dist/collection/components/switch/switch.js +2 -2
  98. package/dist/collection/components/switch/switch.js.map +1 -1
  99. package/dist/collection/index.js +1 -1
  100. package/dist/collection/index.js.map +1 -1
  101. package/dist/collection/utils/utils.js +1 -1
  102. package/dist/collection/utils/utils.js.map +1 -1
  103. package/dist/components/index.js +2 -2
  104. package/dist/components/index.js.map +1 -1
  105. package/dist/components/p-C2uc7k4n.js +73 -0
  106. package/dist/components/p-C2uc7k4n.js.map +1 -0
  107. package/dist/components/{p-MfRr-Vl1.js → p-DNlelzlE.js} +7 -9
  108. package/dist/components/p-DNlelzlE.js.map +1 -0
  109. package/dist/components/p-Jt6ZXtWI.js +71 -0
  110. package/dist/components/p-Jt6ZXtWI.js.map +1 -0
  111. package/dist/components/scout-app-bar.d.ts +11 -0
  112. package/dist/components/scout-app-bar.js +42 -0
  113. package/dist/components/scout-app-bar.js.map +1 -0
  114. package/dist/components/scout-bottom-bar-item.js +11 -3
  115. package/dist/components/scout-bottom-bar-item.js.map +1 -1
  116. package/dist/components/scout-bottom-bar.js +2 -2
  117. package/dist/components/scout-bottom-bar.js.map +1 -1
  118. package/dist/components/scout-button.js +25 -5
  119. package/dist/components/scout-button.js.map +1 -1
  120. package/dist/components/scout-card.js +3 -3
  121. package/dist/components/scout-card.js.map +1 -1
  122. package/dist/components/scout-checkbox.js +1 -70
  123. package/dist/components/scout-checkbox.js.map +1 -1
  124. package/dist/components/scout-divider.d.ts +11 -0
  125. package/dist/components/scout-divider.js +39 -0
  126. package/dist/components/scout-divider.js.map +1 -0
  127. package/dist/components/scout-field.js +3 -3
  128. package/dist/components/scout-field.js.map +1 -1
  129. package/dist/components/scout-input.js +5 -3
  130. package/dist/components/scout-input.js.map +1 -1
  131. package/dist/components/scout-link.d.ts +11 -0
  132. package/dist/components/scout-link.js +91 -0
  133. package/dist/components/scout-link.js.map +1 -0
  134. package/dist/components/scout-list-view-item.d.ts +11 -0
  135. package/dist/components/scout-list-view-item.js +106 -0
  136. package/dist/components/scout-list-view-item.js.map +1 -0
  137. package/dist/components/scout-list-view-subheader.d.ts +11 -0
  138. package/dist/components/scout-list-view-subheader.js +44 -0
  139. package/dist/components/scout-list-view-subheader.js.map +1 -0
  140. package/dist/components/scout-list-view.d.ts +11 -0
  141. package/dist/components/scout-list-view.js +59 -0
  142. package/dist/components/scout-list-view.js.map +1 -0
  143. package/dist/components/scout-loader.d.ts +11 -0
  144. package/dist/components/scout-loader.js +96 -0
  145. package/dist/components/scout-loader.js.map +1 -0
  146. package/dist/components/scout-radio-button.d.ts +11 -0
  147. package/dist/components/scout-radio-button.js +9 -0
  148. package/dist/components/scout-radio-button.js.map +1 -0
  149. package/dist/components/scout-select.d.ts +11 -0
  150. package/dist/components/scout-select.js +86 -0
  151. package/dist/components/scout-select.js.map +1 -0
  152. package/dist/components/scout-stack.d.ts +11 -0
  153. package/dist/components/scout-stack.js +62 -0
  154. package/dist/components/scout-stack.js.map +1 -0
  155. package/dist/components/scout-switch.js +4 -4
  156. package/dist/components/scout-switch.js.map +1 -1
  157. package/dist/custom-elements.json +1524 -10
  158. package/dist/esm/{index-DByXnE9g.js → index-Cp4mWtfs.js} +7 -9
  159. package/dist/esm/index-Cp4mWtfs.js.map +1 -0
  160. package/dist/esm/index.js +1 -1
  161. package/dist/esm/index.js.map +1 -1
  162. package/dist/esm/loader.js +3 -3
  163. package/dist/esm/scout-app-bar.entry.js +18 -0
  164. package/dist/esm/scout-app-bar.entry.js.map +1 -0
  165. package/dist/esm/scout-bottom-bar-item.entry.js +8 -2
  166. package/dist/esm/scout-bottom-bar-item.entry.js.map +1 -1
  167. package/dist/esm/scout-bottom-bar.entry.js +2 -2
  168. package/dist/esm/scout-bottom-bar.entry.js.map +1 -1
  169. package/dist/esm/scout-button.entry.js +19 -3
  170. package/dist/esm/scout-button.entry.js.map +1 -1
  171. package/dist/esm/scout-card.entry.js +3 -3
  172. package/dist/esm/scout-card.entry.js.map +1 -1
  173. package/dist/esm/scout-checkbox.scout-radio-button.entry.js.map +1 -0
  174. package/dist/esm/scout-checkbox_2.entry.js +88 -0
  175. package/dist/esm/scout-divider.entry.js +17 -0
  176. package/dist/esm/scout-divider.entry.js.map +1 -0
  177. package/dist/esm/scout-field.entry.js +2 -2
  178. package/dist/esm/scout-field.entry.js.map +1 -1
  179. package/dist/esm/scout-input.entry.js +3 -2
  180. package/dist/esm/scout-input.entry.js.map +1 -1
  181. package/dist/esm/scout-link.entry.js +62 -0
  182. package/dist/esm/scout-link.entry.js.map +1 -0
  183. package/dist/esm/scout-list-view-item.entry.js +61 -0
  184. package/dist/esm/scout-list-view-item.entry.js.map +1 -0
  185. package/dist/esm/scout-list-view-subheader.entry.js +19 -0
  186. package/dist/esm/scout-list-view-subheader.entry.js.map +1 -0
  187. package/dist/esm/scout-list-view.entry.js +37 -0
  188. package/dist/esm/scout-list-view.entry.js.map +1 -0
  189. package/dist/esm/scout-loader.entry.js +71 -0
  190. package/dist/esm/scout-loader.entry.js.map +1 -0
  191. package/dist/esm/scout-select.entry.js +59 -0
  192. package/dist/esm/scout-select.entry.js.map +1 -0
  193. package/dist/esm/scout-stack.entry.js +37 -0
  194. package/dist/esm/scout-stack.entry.js.map +1 -0
  195. package/dist/esm/scout-switch.entry.js +3 -3
  196. package/dist/esm/scout-switch.entry.js.map +1 -1
  197. package/dist/esm/ui-webc.js +4 -4
  198. package/dist/esm/ui-webc.js.map +1 -1
  199. package/dist/types/components/app-bar/app-bar.d.ts +4 -0
  200. package/dist/types/components/bottom-bar-item/bottom-bar-item.d.ts +2 -0
  201. package/dist/types/components/button/button.d.ts +5 -1
  202. package/dist/types/components/checkbox/checkbox.d.ts +4 -2
  203. package/dist/types/components/divider/divider.d.ts +3 -0
  204. package/dist/types/components/input/input.d.ts +1 -0
  205. package/dist/types/components/link/link.d.ts +39 -0
  206. package/dist/types/components/list-view/list-view.d.ts +8 -0
  207. package/dist/types/components/list-view-item/list-view-item.d.ts +19 -0
  208. package/dist/types/components/list-view-subheader/list-view-subheader.d.ts +5 -0
  209. package/dist/types/components/loader/loader.d.ts +15 -0
  210. package/dist/types/components/radio-button/radio-button.d.ts +24 -0
  211. package/dist/types/components/select/select.d.ts +32 -0
  212. package/dist/types/components/stack/stack.d.ts +22 -0
  213. package/dist/types/components.d.ts +427 -4
  214. package/dist/types/index.d.ts +2 -2
  215. package/dist/types/stencil-public-runtime.d.ts +20 -11
  216. package/dist/ui-webc/index.esm.js.map +1 -1
  217. package/dist/ui-webc/{p-2b434594.entry.js → p-0b42e59f.entry.js} +2 -2
  218. package/dist/ui-webc/{p-2b434594.entry.js.map → p-0b42e59f.entry.js.map} +1 -1
  219. package/dist/ui-webc/p-29689fe2.entry.js +2 -0
  220. package/dist/ui-webc/p-29689fe2.entry.js.map +1 -0
  221. package/dist/ui-webc/p-33010b09.entry.js +2 -0
  222. package/dist/ui-webc/p-33010b09.entry.js.map +1 -0
  223. package/dist/ui-webc/p-3b426423.entry.js +2 -0
  224. package/dist/ui-webc/p-3b426423.entry.js.map +1 -0
  225. package/dist/ui-webc/p-3e34c267.entry.js +2 -0
  226. package/dist/ui-webc/p-3e34c267.entry.js.map +1 -0
  227. package/dist/ui-webc/{p-7245a55a.entry.js → p-4c70c251.entry.js} +2 -2
  228. package/dist/ui-webc/p-5d73566e.entry.js +2 -0
  229. package/dist/ui-webc/p-5d73566e.entry.js.map +1 -0
  230. package/dist/ui-webc/p-6ef8c777.entry.js +2 -0
  231. package/dist/ui-webc/p-6ef8c777.entry.js.map +1 -0
  232. package/dist/ui-webc/p-714363c8.entry.js +2 -0
  233. package/dist/ui-webc/p-714363c8.entry.js.map +1 -0
  234. package/dist/ui-webc/p-7f8dc0da.entry.js +2 -0
  235. package/dist/ui-webc/{p-383736c1.entry.js.map → p-7f8dc0da.entry.js.map} +1 -1
  236. package/dist/ui-webc/p-85e7b20f.entry.js +2 -0
  237. package/dist/ui-webc/p-85e7b20f.entry.js.map +1 -0
  238. package/dist/ui-webc/p-93ee0d2c.entry.js +2 -0
  239. package/dist/ui-webc/p-93ee0d2c.entry.js.map +1 -0
  240. package/dist/ui-webc/p-9f80fed6.entry.js +2 -0
  241. package/dist/ui-webc/p-Cp4mWtfs.js +3 -0
  242. package/dist/ui-webc/p-Cp4mWtfs.js.map +1 -0
  243. package/dist/ui-webc/p-afa38195.entry.js +2 -0
  244. package/dist/ui-webc/p-afa38195.entry.js.map +1 -0
  245. package/dist/ui-webc/p-b8715dc5.entry.js +2 -0
  246. package/dist/ui-webc/p-b8715dc5.entry.js.map +1 -0
  247. package/dist/ui-webc/p-e4070682.entry.js +2 -0
  248. package/dist/ui-webc/p-e4070682.entry.js.map +1 -0
  249. package/dist/ui-webc/p-efab02f0.entry.js +2 -0
  250. package/dist/ui-webc/p-efab02f0.entry.js.map +1 -0
  251. package/dist/ui-webc/scout-app-bar.entry.esm.js.map +1 -0
  252. package/dist/ui-webc/scout-bottom-bar-item.entry.esm.js.map +1 -1
  253. package/dist/ui-webc/scout-bottom-bar.entry.esm.js.map +1 -1
  254. package/dist/ui-webc/scout-button.entry.esm.js.map +1 -1
  255. package/dist/ui-webc/scout-card.entry.esm.js.map +1 -1
  256. package/dist/ui-webc/scout-checkbox.scout-radio-button.entry.esm.js.map +1 -0
  257. package/dist/ui-webc/scout-divider.entry.esm.js.map +1 -0
  258. package/dist/ui-webc/scout-field.entry.esm.js.map +1 -1
  259. package/dist/ui-webc/scout-input.entry.esm.js.map +1 -1
  260. package/dist/ui-webc/scout-link.entry.esm.js.map +1 -0
  261. package/dist/ui-webc/scout-list-view-item.entry.esm.js.map +1 -0
  262. package/dist/ui-webc/scout-list-view-subheader.entry.esm.js.map +1 -0
  263. package/dist/ui-webc/scout-list-view.entry.esm.js.map +1 -0
  264. package/dist/ui-webc/scout-loader.entry.esm.js.map +1 -0
  265. package/dist/ui-webc/scout-select.entry.esm.js.map +1 -0
  266. package/dist/ui-webc/scout-stack.entry.esm.js.map +1 -0
  267. package/dist/ui-webc/scout-switch.entry.esm.js.map +1 -1
  268. package/dist/ui-webc/ui-webc.css +2 -13
  269. package/dist/ui-webc/ui-webc.esm.js +1 -1
  270. package/dist/ui-webc/ui-webc.esm.js.map +1 -1
  271. package/package.json +9 -9
  272. package/dist/cjs/index-D42maJcS.js.map +0 -1
  273. package/dist/cjs/scout-checkbox.cjs.entry.js +0 -53
  274. package/dist/cjs/scout-checkbox.entry.cjs.js.map +0 -1
  275. package/dist/components/p-MfRr-Vl1.js.map +0 -1
  276. package/dist/esm/index-DByXnE9g.js.map +0 -1
  277. package/dist/esm/scout-checkbox.entry.js +0 -51
  278. package/dist/esm/scout-checkbox.entry.js.map +0 -1
  279. package/dist/ui-webc/p-24632b65.entry.js +0 -2
  280. package/dist/ui-webc/p-24632b65.entry.js.map +0 -1
  281. package/dist/ui-webc/p-383736c1.entry.js +0 -2
  282. package/dist/ui-webc/p-99329c64.entry.js +0 -2
  283. package/dist/ui-webc/p-99329c64.entry.js.map +0 -1
  284. package/dist/ui-webc/p-9b7c270d.entry.js +0 -2
  285. package/dist/ui-webc/p-9b7c270d.entry.js.map +0 -1
  286. package/dist/ui-webc/p-DByXnE9g.js +0 -3
  287. package/dist/ui-webc/p-DByXnE9g.js.map +0 -1
  288. package/dist/ui-webc/p-c0c3a4af.entry.js +0 -2
  289. package/dist/ui-webc/p-e7602729.entry.js +0 -2
  290. package/dist/ui-webc/p-e7602729.entry.js.map +0 -1
  291. package/dist/ui-webc/scout-checkbox.entry.esm.js.map +0 -1
  292. /package/dist/ui-webc/{p-7245a55a.entry.js.map → p-4c70c251.entry.js.map} +0 -0
  293. /package/dist/ui-webc/{p-c0c3a4af.entry.js.map → p-9f80fed6.entry.js.map} +0 -0
@@ -8,8 +8,10 @@ export class ScoutCheckbox {
8
8
  */
9
9
  ariaLabelledby;
10
10
  label;
11
+ value;
12
+ name;
11
13
  ariaId;
12
- scoutCheckboxChecked;
14
+ scoutChecked;
13
15
  /**
14
16
  * Internal event used for form field association.
15
17
  */
@@ -18,22 +20,16 @@ export class ScoutCheckbox {
18
20
  this.ariaId = `_${Math.random().toString(36).substring(2, 9)}`;
19
21
  this._fieldId.emit(this.ariaId);
20
22
  }
21
- onClick(event) {
23
+ onChange(event) {
22
24
  const checkbox = event.target;
23
- console.log("checkbox", checkbox.checked);
24
- this.scoutCheckboxChecked.emit({
25
+ this.scoutChecked.emit({
25
26
  checked: checkbox.checked,
26
27
  element: checkbox,
27
28
  });
28
29
  }
29
- /*
30
- todo:
31
- - Wrap checkbox with label if used.
32
- - make sure it works with field nicely with label.
33
- */
34
30
  render() {
35
- const Tag = this.label && this.label.length ? "label" : "div";
36
- return (h(Tag, { key: '2d97627d29b09521936eeef81419673d70fc75f1' }, this.label, h("span", { key: 'f62b4e360f03b4b6fb6e8fee326756552a5a631d', class: "inlineDivider" }), h("input", { key: '7ca6b74e12c369fc937d1b8c85e70c52fd9aa25c', class: "checkbox", onChange: (event) => this.onClick(event), style: { "--icon-checkbox": `url(${checkIcon})` }, type: "checkbox", id: this.ariaId, "aria-labelledby": this.ariaLabelledby, "aria-disabled": this.disabled, disabled: this.disabled, checked: this.checked })));
31
+ const Tag = this.label?.length ? "label" : "div";
32
+ return (h(Tag, { key: '088d1bbf053b0c9cf42851b9954030316c5ef01a' }, h("input", { key: 'd212a3f91e78d20270934e336c2356ee3474c129', id: this.ariaId, type: "checkbox", value: this.value, name: this.name, class: "checkbox", style: { "--icon-checkbox": `url(${checkIcon})` }, "aria-labelledby": this.ariaLabelledby, "aria-disabled": this.disabled, disabled: this.disabled, checked: this.checked, onChange: (event) => this.onChange(event) }), this.label));
37
33
  }
38
34
  static get is() { return "scout-checkbox"; }
39
35
  static get encapsulation() { return "scoped"; }
@@ -126,6 +122,44 @@ export class ScoutCheckbox {
126
122
  "setter": false,
127
123
  "reflect": false,
128
124
  "attribute": "label"
125
+ },
126
+ "value": {
127
+ "type": "string",
128
+ "mutable": false,
129
+ "complexType": {
130
+ "original": "string",
131
+ "resolved": "string",
132
+ "references": {}
133
+ },
134
+ "required": false,
135
+ "optional": false,
136
+ "docs": {
137
+ "tags": [],
138
+ "text": ""
139
+ },
140
+ "getter": false,
141
+ "setter": false,
142
+ "reflect": false,
143
+ "attribute": "value"
144
+ },
145
+ "name": {
146
+ "type": "string",
147
+ "mutable": false,
148
+ "complexType": {
149
+ "original": "string",
150
+ "resolved": "string",
151
+ "references": {}
152
+ },
153
+ "required": false,
154
+ "optional": false,
155
+ "docs": {
156
+ "tags": [],
157
+ "text": ""
158
+ },
159
+ "getter": false,
160
+ "setter": false,
161
+ "reflect": false,
162
+ "attribute": "name"
129
163
  }
130
164
  };
131
165
  }
@@ -136,8 +170,8 @@ export class ScoutCheckbox {
136
170
  }
137
171
  static get events() {
138
172
  return [{
139
- "method": "scoutCheckboxChecked",
140
- "name": "scoutCheckboxChecked",
173
+ "method": "scoutChecked",
174
+ "name": "scoutChecked",
141
175
  "bubbles": true,
142
176
  "cancelable": true,
143
177
  "composed": true,
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox.js","sourceRoot":"","sources":["../../../src/components/checkbox/checkbox.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,KAAK,EAEL,CAAC,EACD,IAAI,EACJ,KAAK,GACN,MAAM,eAAe,CAAC;AACvB,OAAO,SAAS,MAAM,iCAAiC,CAAC;AAOxD,MAAM,OAAO,aAAa;IAChB,OAAO,GAAY,KAAK,CAAC;IAEzB,QAAQ,GAAY,KAAK,CAAC;IAElC;;OAEG;IACK,cAAc,CAAS;IAEvB,KAAK,CAAS;IAEb,MAAM,CAAS;IAEf,oBAAoB,CAG1B;IACH;;OAEG;IACM,QAAQ,CAAuB;IAExC,iBAAiB;QACf,IAAI,CAAC,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAC/D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,CAAC,KAAY;QAClB,MAAM,QAAQ,GAAG,KAAK,CAAC,MAA0B,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;QAE1C,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;YAC7B,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,OAAO,EAAE,QAAQ;SAClB,CAAC,CAAC;IACL,CAAC;IACD;;;;MAIE;IAEF,MAAM;QACJ,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;QAC9D,OAAO,CACL,EAAC,GAAG;YACD,IAAI,CAAC,KAAK;YACX,6DAAM,KAAK,EAAC,eAAe,GAAQ;YACnC,8DACE,KAAK,EAAC,UAAU,EAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EACxC,KAAK,EAAE,EAAE,iBAAiB,EAAE,OAAO,SAAS,GAAG,EAAE,EACjD,IAAI,EAAC,UAAU,EACf,EAAE,EAAE,IAAI,CAAC,MAAM,qBACE,IAAI,CAAC,cAAc,mBACrB,IAAI,CAAC,QAAQ,EAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,OAAO,EAAE,IAAI,CAAC,OAAO,GACrB,CACE,CACP,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import {\n Component,\n Event,\n type EventEmitter,\n h,\n Prop,\n State,\n} from \"@stencil/core\";\nimport checkIcon from \"@tabler/icons/outline/check.svg\";\n\n@Component({\n tag: \"scout-checkbox\",\n styleUrl: \"checkbox.css\",\n scoped: true,\n})\nexport class ScoutCheckbox {\n @Prop() checked: boolean = false;\n\n @Prop() disabled: boolean = false;\n\n /**\n * Use this prop if you need to connect your checkbox with another element describing its use, other than the property label.\n */\n @Prop() ariaLabelledby: string;\n\n @Prop() label: string;\n\n @State() ariaId: string;\n\n @Event() scoutCheckboxChecked: EventEmitter<{\n checked: boolean;\n element: HTMLInputElement;\n }>;\n /**\n * Internal event used for form field association.\n */\n @Event() _fieldId: EventEmitter<string>;\n\n componentWillLoad(): Promise<void> | void {\n this.ariaId = `_${Math.random().toString(36).substring(2, 9)}`;\n this._fieldId.emit(this.ariaId);\n }\n\n onClick(event: Event) {\n const checkbox = event.target as HTMLInputElement;\n console.log(\"checkbox\", checkbox.checked);\n\n this.scoutCheckboxChecked.emit({\n checked: checkbox.checked,\n element: checkbox,\n });\n }\n /*\n todo:\n - Wrap checkbox with label if used.\n - make sure it works with field nicely with label.\n */\n\n render() {\n const Tag = this.label && this.label.length ? \"label\" : \"div\";\n return (\n <Tag>\n {this.label}\n <span class=\"inlineDivider\"></span>\n <input\n class=\"checkbox\"\n onChange={(event) => this.onClick(event)}\n style={{ \"--icon-checkbox\": `url(${checkIcon})` }}\n type=\"checkbox\"\n id={this.ariaId}\n aria-labelledby={this.ariaLabelledby}\n aria-disabled={this.disabled}\n disabled={this.disabled}\n checked={this.checked}\n />\n </Tag>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"checkbox.js","sourceRoot":"","sources":["../../../src/components/checkbox/checkbox.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,KAAK,EAEL,CAAC,EACD,IAAI,EACJ,KAAK,GACN,MAAM,eAAe,CAAC;AACvB,OAAO,SAAS,MAAM,iCAAiC,CAAC;AAOxD,MAAM,OAAO,aAAa;IAChB,OAAO,GAAY,KAAK,CAAC;IAEzB,QAAQ,GAAY,KAAK,CAAC;IAElC;;OAEG;IACK,cAAc,CAAS;IAEvB,KAAK,CAAS;IAEd,KAAK,CAAS;IAEd,IAAI,CAAS;IAEZ,MAAM,CAAS;IAEf,YAAY,CAGlB;IACH;;OAEG;IACM,QAAQ,CAAuB;IAExC,iBAAiB;QACf,IAAI,CAAC,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAC/D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,QAAQ,CAAC,KAAY;QACnB,MAAM,QAAQ,GAAG,KAAK,CAAC,MAA0B,CAAC;QAElD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;YACrB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,OAAO,EAAE,QAAQ;SAClB,CAAC,CAAC;IACL,CAAC;IAED,MAAM;QACJ,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;QACjD,OAAO,CACL,EAAC,GAAG;YACF,8DACE,EAAE,EAAE,IAAI,CAAC,MAAM,EACf,IAAI,EAAC,UAAU,EACf,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,KAAK,EAAC,UAAU,EAChB,KAAK,EAAE,EAAE,iBAAiB,EAAE,OAAO,SAAS,GAAG,EAAE,qBAChC,IAAI,CAAC,cAAc,mBACrB,IAAI,CAAC,QAAQ,EAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GACzC;YACD,IAAI,CAAC,KAAK,CACP,CACP,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import {\n Component,\n Event,\n type EventEmitter,\n h,\n Prop,\n State,\n} from \"@stencil/core\";\nimport checkIcon from \"@tabler/icons/outline/check.svg\";\n\n@Component({\n tag: \"scout-checkbox\",\n styleUrl: \"checkbox.css\",\n scoped: true,\n})\nexport class ScoutCheckbox {\n @Prop() checked: boolean = false;\n\n @Prop() disabled: boolean = false;\n\n /**\n * Use this prop if you need to connect your checkbox with another element describing its use, other than the property label.\n */\n @Prop() ariaLabelledby: string;\n\n @Prop() label: string;\n\n @Prop() value: string;\n\n @Prop() name: string;\n\n @State() ariaId: string;\n\n @Event() scoutChecked: EventEmitter<{\n checked: boolean;\n element: HTMLInputElement;\n }>;\n /**\n * Internal event used for form field association.\n */\n @Event() _fieldId: EventEmitter<string>;\n\n componentWillLoad(): Promise<void> | void {\n this.ariaId = `_${Math.random().toString(36).substring(2, 9)}`;\n this._fieldId.emit(this.ariaId);\n }\n\n onChange(event: Event) {\n const checkbox = event.target as HTMLInputElement;\n\n this.scoutChecked.emit({\n checked: checkbox.checked,\n element: checkbox,\n });\n }\n\n render() {\n const Tag = this.label?.length ? \"label\" : \"div\";\n return (\n <Tag>\n <input\n id={this.ariaId}\n type=\"checkbox\"\n value={this.value}\n name={this.name}\n class=\"checkbox\"\n style={{ \"--icon-checkbox\": `url(${checkIcon})` }}\n aria-labelledby={this.ariaLabelledby}\n aria-disabled={this.disabled}\n disabled={this.disabled}\n checked={this.checked}\n onChange={(event) => this.onChange(event)}\n />\n {this.label}\n </Tag>\n );\n }\n}\n"]}
@@ -0,0 +1,5 @@
1
+ :host {
2
+ display: block;
3
+ height: 1px;
4
+ background-color: var(--color-gray-200);
5
+ }
@@ -0,0 +1,20 @@
1
+ import { Host, h } from "@stencil/core";
2
+ export class ScoutDivider {
3
+ render() {
4
+ return h(Host, { key: 'e139694ee7eb8dd88235b420d987878af2c970ce' });
5
+ }
6
+ static get is() { return "scout-divider"; }
7
+ static get encapsulation() { return "shadow"; }
8
+ static get delegatesFocus() { return true; }
9
+ static get originalStyleUrls() {
10
+ return {
11
+ "$": ["divider.css"]
12
+ };
13
+ }
14
+ static get styleUrls() {
15
+ return {
16
+ "$": ["divider.css"]
17
+ };
18
+ }
19
+ }
20
+ //# sourceMappingURL=divider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"divider.js","sourceRoot":"","sources":["../../../src/components/divider/divider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AASnD,MAAM,OAAO,YAAY;IACvB,MAAM;QACJ,OAAO,EAAC,IAAI,sDAAG,CAAC;IAClB,CAAC;;;;;;;;;;CACF","sourcesContent":["import { Component, Host, h } from \"@stencil/core\";\n\n@Component({\n tag: \"scout-divider\",\n styleUrl: \"divider.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class ScoutDivider {\n render() {\n return <Host />;\n }\n}\n"]}
@@ -23,4 +23,4 @@
23
23
  font: var(--type-label-sm);
24
24
  color: var(--color-gray-600);
25
25
  margin: var(--spacing-1) 0 0 0;
26
- }
26
+ }
@@ -30,7 +30,7 @@ export class ScoutField {
30
30
  this.errorHidden = false;
31
31
  }
32
32
  render() {
33
- return (h("div", { key: '0ba5919cf10618bf4617e1ced85485a6d136f668', class: "field" }, h("label", { key: '55cac1b4eb9c0d58ea1e4045b9c85c30a384d99b', htmlFor: this.inputId, class: "label" }, this.label), h("slot", { key: 'b5931e88ad82e693ff1dc24acd99db393f048fab' }), h("p", { key: '6354b6187ba63158bdd5c784787f1612eb641db4', class: "error-text", "aria-live": "polite" }, !this.errorHidden && this.errorText), this.helpText && h("p", { key: 'ba9e47977b682fbe28afd61c6a00832506860e56', class: "help-text" }, this.helpText)));
33
+ return (h("div", { key: '3cffad1b9fda1ea4060cf4587420ea67d16a7cde', class: "field" }, h("label", { key: '2d065d94b9aa5a9f251366a6fd58559210b485c9', htmlFor: this.inputId, class: "label" }, this.label), h("slot", { key: '3bdc5d1426b0fca754ee4eface64514503758d3c' }), h("p", { key: '57cb158fec7e16cbb2eb78481939fb84e86f9836', class: "error-text", "aria-live": "polite" }, !this.errorHidden && this.errorText), this.helpText && h("p", { key: '50b05f88914cb9f0f4fc615b24cdd2d6ac525219', class: "help-text" }, this.helpText)));
34
34
  }
35
35
  static get is() { return "scout-field"; }
36
36
  static get encapsulation() { return "scoped"; }
@@ -12,4 +12,4 @@
12
12
  background-color: var(--color-gray-100);
13
13
  color: var(--color-gray-700);
14
14
  cursor: not-allowed;
15
- }
15
+ }
@@ -18,6 +18,7 @@ export class ScoutInput {
18
18
  * Value of the input element, in case you want to control it yourself.
19
19
  */
20
20
  value = "";
21
+ name;
21
22
  /**
22
23
  * Whether the input is disabled. Disabled inputs are not editable, excluded
23
24
  * from tab order and are not validated.
@@ -52,7 +53,7 @@ export class ScoutInput {
52
53
  });
53
54
  }
54
55
  render() {
55
- return (h("input", { key: '7bc05d32826cd3173b6a6e4620acfb501fae4edc', id: this.ariaId, type: this.type, inputMode: this.inputmode, pattern: this.pattern, class: "input", value: this.value, disabled: this.disabled, onInput: (e) => this.onInput(e), onBlur: () => this.scoutBlur.emit() }));
56
+ return (h("input", { key: '63ad729182147b6a8490f4b88becc3207bfcfa49', id: this.ariaId, type: this.type, name: this.name, inputMode: this.inputmode, pattern: this.pattern, class: "input", value: this.value, disabled: this.disabled, onInput: (e) => this.onInput(e), onBlur: () => this.scoutBlur.emit() }));
56
57
  }
57
58
  static get is() { return "scout-input"; }
58
59
  static get encapsulation() { return "scoped"; }
@@ -77,7 +78,7 @@ export class ScoutInput {
77
78
  "references": {
78
79
  "InputType": {
79
80
  "location": "local",
80
- "path": "/home/runner/work/j26-web-components/j26-web-components/packages/ui-webc/src/components/input/input.tsx",
81
+ "path": "/home/runner/work/j26-components/j26-components/packages/ui-webc/src/components/input/input.tsx",
81
82
  "id": "src/components/input/input.tsx::InputType"
82
83
  }
83
84
  }
@@ -103,7 +104,7 @@ export class ScoutInput {
103
104
  "references": {
104
105
  "InputMode": {
105
106
  "location": "local",
106
- "path": "/home/runner/work/j26-web-components/j26-web-components/packages/ui-webc/src/components/input/input.tsx",
107
+ "path": "/home/runner/work/j26-components/j26-components/packages/ui-webc/src/components/input/input.tsx",
107
108
  "id": "src/components/input/input.tsx::InputMode"
108
109
  }
109
110
  }
@@ -158,6 +159,25 @@ export class ScoutInput {
158
159
  "attribute": "value",
159
160
  "defaultValue": "\"\""
160
161
  },
162
+ "name": {
163
+ "type": "string",
164
+ "mutable": false,
165
+ "complexType": {
166
+ "original": "string",
167
+ "resolved": "string",
168
+ "references": {}
169
+ },
170
+ "required": false,
171
+ "optional": false,
172
+ "docs": {
173
+ "tags": [],
174
+ "text": ""
175
+ },
176
+ "getter": false,
177
+ "setter": false,
178
+ "reflect": false,
179
+ "attribute": "name"
180
+ },
161
181
  "disabled": {
162
182
  "type": "boolean",
163
183
  "mutable": false,
@@ -1 +1 @@
1
- {"version":3,"file":"input.js","sourceRoot":"","sources":["../../../src/components/input/input.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EAET,KAAK,EAEL,CAAC,EACD,IAAI,EACJ,KAAK,GACN,MAAM,eAAe,CAAC;AA6BvB,MAAM,OAAO,UAAU;IACrB;;;;OAIG;IACK,IAAI,GAAc,MAAM,CAAC;IAEjC;;OAEG;IACK,SAAS,CAAa;IAE9B;;OAEG;IACK,OAAO,CAAU;IAEzB;;OAEG;IACK,KAAK,GAAW,EAAE,CAAC;IAE3B;;;OAGG;IACK,QAAQ,GAAY,KAAK,CAAC;IAElC;;;;OAIG;IACK,QAAQ,CAAoC;IAE3C,gBAAgB,CAGtB;IACM,SAAS,CAAqB;IAEvC;;OAEG;IACM,QAAQ,CAAuB;IAE/B,MAAM,CAAS;IAExB,iBAAiB;QACf,IAAI,CAAC,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAC/D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,CAAC,KAAiB;QACvB,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B,CAAC;QAE/C,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACrD,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;YACzB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;IACL,CAAC;IAED,MAAM;QACJ,OAAO,CACL,8DACE,EAAE,EAAE,IAAI,CAAC,MAAM,EACf,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,KAAK,EAAC,OAAO,EACb,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAC/B,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,GACnC,CACH,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import {\n Component,\n type ComponentInterface,\n Event,\n type EventEmitter,\n h,\n Prop,\n State,\n} from \"@stencil/core\";\n\nexport type InputType =\n | \"text\"\n | \"password\"\n | \"email\"\n | \"number\"\n | \"tel\"\n | \"url\"\n // Hack to suggest above value but still allow any other string value\n | (string & {});\n\nexport type InputMode =\n | \"none\"\n | \"text\"\n | \"decimal\"\n | \"numeric\"\n | \"tel\"\n | \"search\"\n | \"email\"\n | \"url\"\n // Hack to suggest above value but still allow any other string value\n | (string & {});\n\n@Component({\n tag: \"scout-input\",\n styleUrl: \"input.css\",\n scoped: true,\n})\nexport class ScoutInput implements ComponentInterface {\n /**\n * Type of input element. If you need a number input, read the accessibility\n * section of this MDN article first:\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/input/number#accessibility\n */\n @Prop() type: InputType = \"text\";\n\n /**\n * Input mode hints for devices with dynamic keyboards.\n */\n @Prop() inputmode?: InputMode;\n\n /**\n * Regex pattern for input validation.\n */\n @Prop() pattern?: string;\n\n /**\n * Value of the input element, in case you want to control it yourself.\n */\n @Prop() value: string = \"\";\n\n /**\n * Whether the input is disabled. Disabled inputs are not editable, excluded\n * from tab order and are not validated.\n */\n @Prop() disabled: boolean = false;\n\n /**\n * Custom validation function run on top of the implicit validation performed\n * by the browser. Return a string with the validation message to mark the\n * input as invalid, or null to mark it as valid.\n */\n @Prop() validate?: (value: string) => string | null;\n\n @Event() scoutInputChange: EventEmitter<{\n value: string;\n element: HTMLInputElement;\n }>;\n @Event() scoutBlur: EventEmitter<void>;\n\n /**\n * Internal event used for form field association.\n */\n @Event() _fieldId: EventEmitter<string>;\n\n @State() ariaId: string;\n\n componentWillLoad(): Promise<void> | void {\n this.ariaId = `_${Math.random().toString(36).substring(2, 9)}`;\n this._fieldId.emit(this.ariaId);\n }\n\n onInput(event: InputEvent) {\n const input = event.target as HTMLInputElement;\n\n if (this.validate) {\n const validationMessage = this.validate(input.value);\n input.setCustomValidity(validationMessage ?? \"\");\n }\n\n this.scoutInputChange.emit({\n value: input.value,\n element: input,\n });\n }\n\n render() {\n return (\n <input\n id={this.ariaId}\n type={this.type}\n inputMode={this.inputmode}\n pattern={this.pattern}\n class=\"input\"\n value={this.value}\n disabled={this.disabled}\n onInput={(e) => this.onInput(e)}\n onBlur={() => this.scoutBlur.emit()}\n />\n );\n }\n}\n"]}
1
+ {"version":3,"file":"input.js","sourceRoot":"","sources":["../../../src/components/input/input.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EAET,KAAK,EAEL,CAAC,EACD,IAAI,EACJ,KAAK,GACN,MAAM,eAAe,CAAC;AA6BvB,MAAM,OAAO,UAAU;IACrB;;;;OAIG;IACK,IAAI,GAAc,MAAM,CAAC;IAEjC;;OAEG;IACK,SAAS,CAAa;IAE9B;;OAEG;IACK,OAAO,CAAU;IAEzB;;OAEG;IACK,KAAK,GAAW,EAAE,CAAC;IAEnB,IAAI,CAAS;IAErB;;;OAGG;IACK,QAAQ,GAAY,KAAK,CAAC;IAElC;;;;OAIG;IACK,QAAQ,CAAoC;IAE3C,gBAAgB,CAGtB;IACM,SAAS,CAAqB;IAEvC;;OAEG;IACM,QAAQ,CAAuB;IAE/B,MAAM,CAAS;IAExB,iBAAiB;QACf,IAAI,CAAC,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAC/D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,CAAC,KAAiB;QACvB,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B,CAAC;QAE/C,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACrD,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;YACzB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;IACL,CAAC;IAED,MAAM;QACJ,OAAO,CACL,8DACE,EAAE,EAAE,IAAI,CAAC,MAAM,EACf,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,KAAK,EAAC,OAAO,EACb,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAC/B,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,GACnC,CACH,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import {\n Component,\n type ComponentInterface,\n Event,\n type EventEmitter,\n h,\n Prop,\n State,\n} from \"@stencil/core\";\n\nexport type InputType =\n | \"text\"\n | \"password\"\n | \"email\"\n | \"number\"\n | \"tel\"\n | \"url\"\n // Hack to suggest above value but still allow any other string value\n | (string & {});\n\nexport type InputMode =\n | \"none\"\n | \"text\"\n | \"decimal\"\n | \"numeric\"\n | \"tel\"\n | \"search\"\n | \"email\"\n | \"url\"\n // Hack to suggest above value but still allow any other string value\n | (string & {});\n\n@Component({\n tag: \"scout-input\",\n styleUrl: \"input.css\",\n scoped: true,\n})\nexport class ScoutInput implements ComponentInterface {\n /**\n * Type of input element. If you need a number input, read the accessibility\n * section of this MDN article first:\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/input/number#accessibility\n */\n @Prop() type: InputType = \"text\";\n\n /**\n * Input mode hints for devices with dynamic keyboards.\n */\n @Prop() inputmode?: InputMode;\n\n /**\n * Regex pattern for input validation.\n */\n @Prop() pattern?: string;\n\n /**\n * Value of the input element, in case you want to control it yourself.\n */\n @Prop() value: string = \"\";\n\n @Prop() name: string;\n\n /**\n * Whether the input is disabled. Disabled inputs are not editable, excluded\n * from tab order and are not validated.\n */\n @Prop() disabled: boolean = false;\n\n /**\n * Custom validation function run on top of the implicit validation performed\n * by the browser. Return a string with the validation message to mark the\n * input as invalid, or null to mark it as valid.\n */\n @Prop() validate?: (value: string) => string | null;\n\n @Event() scoutInputChange: EventEmitter<{\n value: string;\n element: HTMLInputElement;\n }>;\n @Event() scoutBlur: EventEmitter<void>;\n\n /**\n * Internal event used for form field association.\n */\n @Event() _fieldId: EventEmitter<string>;\n\n @State() ariaId: string;\n\n componentWillLoad(): Promise<void> | void {\n this.ariaId = `_${Math.random().toString(36).substring(2, 9)}`;\n this._fieldId.emit(this.ariaId);\n }\n\n onInput(event: InputEvent) {\n const input = event.target as HTMLInputElement;\n\n if (this.validate) {\n const validationMessage = this.validate(input.value);\n input.setCustomValidity(validationMessage ?? \"\");\n }\n\n this.scoutInputChange.emit({\n value: input.value,\n element: input,\n });\n }\n\n render() {\n return (\n <input\n id={this.ariaId}\n type={this.type}\n name={this.name}\n inputMode={this.inputmode}\n pattern={this.pattern}\n class=\"input\"\n value={this.value}\n disabled={this.disabled}\n onInput={(e) => this.onInput(e)}\n onBlur={() => this.scoutBlur.emit()}\n />\n );\n }\n}\n"]}
@@ -0,0 +1,30 @@
1
+ :host {
2
+ display: inline;
3
+ }
4
+
5
+ a,
6
+ button {
7
+ color: var(--color-text-brand-base);
8
+ -webkit-text-decoration: none;
9
+ text-decoration: none;
10
+ }
11
+
12
+ a:hover,
13
+ button:hover {
14
+ -webkit-text-decoration: underline;
15
+ text-decoration: underline;
16
+ color: var(--color-background-brand-hover);
17
+ }
18
+
19
+ a:active,
20
+ button:active {
21
+ color: var(--color-background-brand-pressed);
22
+ }
23
+
24
+ button {
25
+ display: inline;
26
+ background: none;
27
+ border: none;
28
+ padding: 0;
29
+ cursor: pointer;
30
+ }
@@ -0,0 +1,207 @@
1
+ import { h } from "@stencil/core";
2
+ export class ScoutLink {
3
+ /**
4
+ * The URL that the link points to. Required when type is set to link
5
+ */
6
+ href;
7
+ /**
8
+ * Text to be displayed for the link
9
+ */
10
+ label;
11
+ rel;
12
+ /**
13
+ * If the label property is not sufficient to describe its use, add an aria-label describing what happens
14
+ * when pressing the button or where the user navigates if it is a link.
15
+ */
16
+ linkAriaLabel;
17
+ /**
18
+ * There are two types. If you intend to use it as a button with onclick, a button is rendered, however if you want to you it
19
+ * as a normal link, a link with href is rendered.
20
+ */
21
+ type = "link";
22
+ /**
23
+ * _blank Opens the linked document in a new window or tab
24
+ *
25
+ * _self Opens the linked document in the same frame as it was clicked (this is default)
26
+ *
27
+ * _parent Opens the linked document in the parent frame
28
+ *
29
+ * _top Opens the linked document in the full body of the window
30
+ *
31
+ * _framename Opens the linked document in the named iframe
32
+ */
33
+ target = "_self";
34
+ /**
35
+ * Only sent if the link is a button.
36
+ */
37
+ scoutLinkClick;
38
+ render() {
39
+ if (this.type === "button") {
40
+ return (h("button", { type: "button", "aria-label": this.linkAriaLabel || "", onClick: () => this.scoutLinkClick.emit() }, this.label));
41
+ }
42
+ if (!this.href) {
43
+ throw new Error("Href is requied when type is set to link");
44
+ }
45
+ return (h("a", { href: this.href, target: this.target, "aria-label": this.linkAriaLabel || "", rel:
46
+ // This might not be our job, but better safe than sorry.
47
+ this.rel ??
48
+ (this.target === "_blank" ? "noopener noreferrer" : undefined) }, this.label));
49
+ }
50
+ static get is() { return "scout-link"; }
51
+ static get encapsulation() { return "shadow"; }
52
+ static get delegatesFocus() { return true; }
53
+ static get originalStyleUrls() {
54
+ return {
55
+ "$": ["link.css"]
56
+ };
57
+ }
58
+ static get styleUrls() {
59
+ return {
60
+ "$": ["link.css"]
61
+ };
62
+ }
63
+ static get properties() {
64
+ return {
65
+ "href": {
66
+ "type": "string",
67
+ "mutable": false,
68
+ "complexType": {
69
+ "original": "string",
70
+ "resolved": "string",
71
+ "references": {}
72
+ },
73
+ "required": false,
74
+ "optional": true,
75
+ "docs": {
76
+ "tags": [],
77
+ "text": "The URL that the link points to. Required when type is set to link"
78
+ },
79
+ "getter": false,
80
+ "setter": false,
81
+ "reflect": false,
82
+ "attribute": "href"
83
+ },
84
+ "label": {
85
+ "type": "string",
86
+ "mutable": false,
87
+ "complexType": {
88
+ "original": "string",
89
+ "resolved": "string",
90
+ "references": {}
91
+ },
92
+ "required": false,
93
+ "optional": false,
94
+ "docs": {
95
+ "tags": [],
96
+ "text": "Text to be displayed for the link"
97
+ },
98
+ "getter": false,
99
+ "setter": false,
100
+ "reflect": false,
101
+ "attribute": "label"
102
+ },
103
+ "rel": {
104
+ "type": "string",
105
+ "mutable": false,
106
+ "complexType": {
107
+ "original": "string",
108
+ "resolved": "string",
109
+ "references": {}
110
+ },
111
+ "required": false,
112
+ "optional": true,
113
+ "docs": {
114
+ "tags": [],
115
+ "text": ""
116
+ },
117
+ "getter": false,
118
+ "setter": false,
119
+ "reflect": false,
120
+ "attribute": "rel"
121
+ },
122
+ "linkAriaLabel": {
123
+ "type": "string",
124
+ "mutable": false,
125
+ "complexType": {
126
+ "original": "string",
127
+ "resolved": "string",
128
+ "references": {}
129
+ },
130
+ "required": false,
131
+ "optional": true,
132
+ "docs": {
133
+ "tags": [],
134
+ "text": "If the label property is not sufficient to describe its use, add an aria-label describing what happens\nwhen pressing the button or where the user navigates if it is a link."
135
+ },
136
+ "getter": false,
137
+ "setter": false,
138
+ "reflect": false,
139
+ "attribute": "link-aria-label"
140
+ },
141
+ "type": {
142
+ "type": "string",
143
+ "mutable": false,
144
+ "complexType": {
145
+ "original": "\"link\" | \"button\"",
146
+ "resolved": "\"button\" | \"link\"",
147
+ "references": {}
148
+ },
149
+ "required": false,
150
+ "optional": false,
151
+ "docs": {
152
+ "tags": [],
153
+ "text": "There are two types. If you intend to use it as a button with onclick, a button is rendered, however if you want to you it\nas a normal link, a link with href is rendered."
154
+ },
155
+ "getter": false,
156
+ "setter": false,
157
+ "reflect": false,
158
+ "attribute": "type",
159
+ "defaultValue": "\"link\""
160
+ },
161
+ "target": {
162
+ "type": "string",
163
+ "mutable": false,
164
+ "complexType": {
165
+ "original": "\"_blank\" | \"_self\" | \"_parent\" | \"_top\" | \"framename\"",
166
+ "resolved": "\"_blank\" | \"_parent\" | \"_self\" | \"_top\" | \"framename\"",
167
+ "references": {}
168
+ },
169
+ "required": false,
170
+ "optional": true,
171
+ "docs": {
172
+ "tags": [],
173
+ "text": "_blank\tOpens the linked document in a new window or tab\n\n_self\tOpens the linked document in the same frame as it was clicked (this is default)\n\n_parent\tOpens the linked document in the parent frame\n\n_top\tOpens the linked document in the full body of the window\n\n_framename\tOpens the linked document in the named iframe"
174
+ },
175
+ "getter": false,
176
+ "setter": false,
177
+ "reflect": false,
178
+ "attribute": "target",
179
+ "defaultValue": "\"_self\""
180
+ }
181
+ };
182
+ }
183
+ static get events() {
184
+ return [{
185
+ "method": "scoutLinkClick",
186
+ "name": "scoutLinkClick",
187
+ "bubbles": true,
188
+ "cancelable": true,
189
+ "composed": true,
190
+ "docs": {
191
+ "tags": [],
192
+ "text": "Only sent if the link is a button."
193
+ },
194
+ "complexType": {
195
+ "original": "HTMLButtonElement",
196
+ "resolved": "HTMLButtonElement",
197
+ "references": {
198
+ "HTMLButtonElement": {
199
+ "location": "global",
200
+ "id": "global::HTMLButtonElement"
201
+ }
202
+ }
203
+ }
204
+ }];
205
+ }
206
+ }
207
+ //# sourceMappingURL=link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link.js","sourceRoot":"","sources":["../../../src/components/link/link.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAqB,CAAC,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAS7E,MAAM,OAAO,SAAS;IACpB;;OAEG;IACK,IAAI,CAAU;IAEtB;;OAEG;IACK,KAAK,CAAS;IAEd,GAAG,CAAU;IAErB;;;OAGG;IACK,aAAa,CAAU;IAE/B;;;OAGG;IACK,IAAI,GAAsB,MAAM,CAAC;IAEzC;;;;;;;;;;OAUG;IACK,MAAM,GACZ,OAAO,CAAC;IAEV;;OAEG;IACM,cAAc,CAAkC;IAEzD,MAAM;QACJ,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3B,OAAO,CACL,cACE,IAAI,EAAC,QAAQ,gBACD,IAAI,CAAC,aAAa,IAAI,EAAE,EACpC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAExC,IAAI,CAAC,KAAK,CACJ,CACV,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QAED,OAAO,CACL,SACE,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,MAAM,EAAE,IAAI,CAAC,MAAM,gBACP,IAAI,CAAC,aAAa,IAAI,EAAE,EACpC,GAAG;YACD,yDAAyD;YACzD,IAAI,CAAC,GAAG;gBACR,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS,CAAC,IAG/D,IAAI,CAAC,KAAK,CACT,CACL,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Event, type EventEmitter, h, Prop } from \"@stencil/core\";\n\n@Component({\n tag: \"scout-link\",\n styleUrl: \"link.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class ScoutLink {\n /**\n * The URL that the link points to. Required when type is set to link\n */\n @Prop() href?: string;\n\n /**\n * Text to be displayed for the link\n */\n @Prop() label: string;\n\n @Prop() rel?: string;\n\n /**\n * If the label property is not sufficient to describe its use, add an aria-label describing what happens\n * when pressing the button or where the user navigates if it is a link.\n */\n @Prop() linkAriaLabel?: string;\n\n /**\n * There are two types. If you intend to use it as a button with onclick, a button is rendered, however if you want to you it\n * as a normal link, a link with href is rendered.\n */\n @Prop() type: \"link\" | \"button\" = \"link\";\n\n /**\n * _blank\tOpens the linked document in a new window or tab\n *\n * _self\tOpens the linked document in the same frame as it was clicked (this is default)\n *\n * _parent\tOpens the linked document in the parent frame\n *\n * _top\tOpens the linked document in the full body of the window\n *\n * _framename\tOpens the linked document in the named iframe\n */\n @Prop() target?: \"_blank\" | \"_self\" | \"_parent\" | \"_top\" | \"framename\" =\n \"_self\";\n\n /**\n * Only sent if the link is a button.\n */\n @Event() scoutLinkClick: EventEmitter<HTMLButtonElement>;\n\n render() {\n if (this.type === \"button\") {\n return (\n <button\n type=\"button\"\n aria-label={this.linkAriaLabel || \"\"}\n onClick={() => this.scoutLinkClick.emit()}\n >\n {this.label}\n </button>\n );\n }\n\n if (!this.href) {\n throw new Error(\"Href is requied when type is set to link\");\n }\n\n return (\n <a\n href={this.href}\n target={this.target}\n aria-label={this.linkAriaLabel || \"\"}\n rel={\n // This might not be our job, but better safe than sorry.\n this.rel ??\n (this.target === \"_blank\" ? \"noopener noreferrer\" : undefined)\n }\n >\n {this.label}\n </a>\n );\n }\n}\n"]}
@@ -0,0 +1,5 @@
1
+ :host {
2
+ display: flex;
3
+ flex-direction: column;
4
+ padding: var(--spacing-2) 0;
5
+ }
@@ -0,0 +1,50 @@
1
+ import { Host, h } from "@stencil/core";
2
+ export class ScoutListView {
3
+ el;
4
+ onScoutChecked(event) {
5
+ const { checked, element } = event.detail;
6
+ if (element.type !== "radio" || !element.name || !checked) {
7
+ return;
8
+ }
9
+ const listItems = this.el.querySelectorAll("scout-list-view-item");
10
+ const otherRadios = [];
11
+ listItems.forEach((item) => {
12
+ const radios = item.shadowRoot.querySelectorAll(`input[type="radio"][name="${CSS.escape(element.name)}"]`);
13
+ radios.forEach((r) => {
14
+ if (r !== element) {
15
+ otherRadios.push(r);
16
+ }
17
+ });
18
+ });
19
+ for (const radio of otherRadios) {
20
+ radio.checked = false;
21
+ }
22
+ }
23
+ render() {
24
+ return (h(Host, { key: 'b20a3a6e3ba31b390e99a31b144bf522057ca55c', role: "list" }, h("slot", { key: 'fb58eb9e354415f9ed01120206d5cb2b1be28ad0' })));
25
+ }
26
+ static get is() { return "scout-list-view"; }
27
+ static get encapsulation() { return "shadow"; }
28
+ static get delegatesFocus() { return true; }
29
+ static get originalStyleUrls() {
30
+ return {
31
+ "$": ["list-view.css"]
32
+ };
33
+ }
34
+ static get styleUrls() {
35
+ return {
36
+ "$": ["list-view.css"]
37
+ };
38
+ }
39
+ static get elementRef() { return "el"; }
40
+ static get listeners() {
41
+ return [{
42
+ "name": "scoutChecked",
43
+ "method": "onScoutChecked",
44
+ "target": undefined,
45
+ "capture": false,
46
+ "passive": false
47
+ }];
48
+ }
49
+ }
50
+ //# sourceMappingURL=list-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-view.js","sourceRoot":"","sources":["../../../src/components/list-view/list-view.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AASpE,MAAM,OAAO,aAAa;IACb,EAAE,CAAc;IAG3B,cAAc,CACZ,KAAmE;QAEnE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC;QAE1C,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC1D,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;QAEnE,MAAM,WAAW,GAAuB,EAAE,CAAC;QAE3C,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACzB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAC7C,6BAA6B,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAC1D,CAAC;YAEF,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBACnB,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC;oBAClB,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACtB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;YAChC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;QACxB,CAAC;IACH,CAAC;IAED,MAAM;QACJ,OAAO,CACL,EAAC,IAAI,qDAAC,IAAI,EAAC,MAAM;YACf,8DAAQ,CACH,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Element, Host, h, Listen } from \"@stencil/core\";\n\n@Component({\n tag: \"scout-list-view\",\n styleUrl: \"list-view.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class ScoutListView {\n @Element() el: HTMLElement;\n\n @Listen(\"scoutChecked\")\n onScoutChecked(\n event: CustomEvent<{ checked: boolean; element: HTMLInputElement }>,\n ) {\n const { checked, element } = event.detail;\n\n if (element.type !== \"radio\" || !element.name || !checked) {\n return;\n }\n\n const listItems = this.el.querySelectorAll(\"scout-list-view-item\");\n\n const otherRadios: HTMLInputElement[] = [];\n\n listItems.forEach((item) => {\n const radios = item.shadowRoot.querySelectorAll<HTMLInputElement>(\n `input[type=\"radio\"][name=\"${CSS.escape(element.name)}\"]`,\n );\n\n radios.forEach((r) => {\n if (r !== element) {\n otherRadios.push(r);\n }\n });\n });\n\n for (const radio of otherRadios) {\n radio.checked = false;\n }\n }\n\n render() {\n return (\n <Host role=\"list\">\n <slot />\n </Host>\n );\n }\n}\n"]}
@@ -0,0 +1,71 @@
1
+ :host {
2
+ display: flex;
3
+ }
4
+
5
+ .button {
6
+ flex: 1;
7
+ display: flex;
8
+ align-items: center;
9
+ text-align: inherit;
10
+ min-height: var(--spacing-12);
11
+ color: var(--color-text-base);
12
+ padding: var(--spacing-2) var(--spacing-4);
13
+ cursor: pointer;
14
+ border: none;
15
+ background-color: transparent;
16
+ -webkit-text-decoration: none;
17
+ text-decoration: none;
18
+ }
19
+
20
+ .button:hover {
21
+ background-color: var(--color-background-brand-subtle-hovered);
22
+ }
23
+
24
+ .prefix-icon,
25
+ .suffix-icon {
26
+ display: flex;
27
+ align-items: center;
28
+ height: var(--spacing-6);
29
+ color: var(--color-neutral-700);
30
+ }
31
+
32
+ .prefix-icon svg,.suffix-icon svg,.prefix-icon .icon,.suffix-icon .icon {
33
+ width: var(--spacing-6);
34
+ height: var(--spacing-6);
35
+ }
36
+
37
+ .prefix-icon {
38
+ justify-content: flex-start;
39
+ width: var(--spacing-14);
40
+ }
41
+
42
+ .suffix-icon {
43
+ justify-content: flex-end;
44
+ width: var(--spacing-8);
45
+ }
46
+
47
+ .suffix-icon .icon {
48
+ background-color: currentColor;
49
+ -webkit-mask-image: var(--icon);
50
+ mask-image: var(--icon);
51
+ -webkit-mask-repeat: no-repeat;
52
+ mask-repeat: no-repeat;
53
+ -webkit-mask-size: 100% 100%;
54
+ mask-size: 100% 100%;
55
+ }
56
+
57
+ .content {
58
+ flex: 1;
59
+ display: flex;
60
+ flex-direction: column;
61
+ justify-content: center;
62
+ }
63
+
64
+ .primary {
65
+ font: var(--type-body-base);
66
+ }
67
+
68
+ .secondary {
69
+ font: var(--type-body-sm);
70
+ color: var(--color-neutral-700);
71
+ }