wcs-core 4.2.0 → 5.0.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 (541) hide show
  1. package/dist/cjs/{accessibility-e99b032d.js → accessibility-c0c4e648.js} +8 -2
  2. package/dist/cjs/accessibility-c0c4e648.js.map +1 -0
  3. package/dist/cjs/button-interface-044a8a8a.js +12 -0
  4. package/dist/cjs/button-interface-044a8a8a.js.map +1 -0
  5. package/dist/cjs/grid-pagination-3511fdfa.js +111 -0
  6. package/dist/cjs/grid-pagination-3511fdfa.js.map +1 -0
  7. package/dist/cjs/{helpers-4a14051a.js → helpers-6280db6e.js} +75 -2
  8. package/dist/cjs/helpers-6280db6e.js.map +1 -0
  9. package/dist/cjs/{index-ca67a6dc.js → index-749d999e.js} +4 -1
  10. package/dist/cjs/index-749d999e.js.map +1 -0
  11. package/dist/cjs/{isEqual-9ea7ee49.js → keyboard-event-1cad4036.js} +77 -1
  12. package/dist/cjs/keyboard-event-1cad4036.js.map +1 -0
  13. package/dist/cjs/loader.cjs.js +2 -2
  14. package/dist/cjs/{select-arrow-c9583ea9.js → select-arrow-8169c0cb.js} +2 -2
  15. package/dist/cjs/{select-arrow-c9583ea9.js.map → select-arrow-8169c0cb.js.map} +1 -1
  16. package/dist/cjs/wcs-accordion-content.cjs.entry.js +1 -1
  17. package/dist/cjs/wcs-accordion-header.cjs.entry.js +1 -1
  18. package/dist/cjs/wcs-accordion-panel.cjs.entry.js +2 -2
  19. package/dist/cjs/wcs-accordion.cjs.entry.js +1 -1
  20. package/dist/cjs/wcs-action-bar.cjs.entry.js +1 -1
  21. package/dist/cjs/wcs-app.cjs.entry.js +1 -1
  22. package/dist/cjs/wcs-badge.cjs.entry.js +3 -2
  23. package/dist/cjs/wcs-badge.cjs.entry.js.map +1 -1
  24. package/dist/cjs/{wcs-button.cjs.entry.js → wcs-button_2.cjs.entry.js} +21 -12
  25. package/dist/cjs/wcs-button_2.cjs.entry.js.map +1 -0
  26. package/dist/cjs/wcs-card-body.cjs.entry.js +1 -1
  27. package/dist/cjs/wcs-card.cjs.entry.js +1 -1
  28. package/dist/cjs/wcs-checkbox.cjs.entry.js +5 -2
  29. package/dist/cjs/wcs-checkbox.cjs.entry.js.map +1 -1
  30. package/dist/cjs/wcs-com-nav-category.cjs.entry.js +2 -2
  31. package/dist/cjs/wcs-com-nav-submenu.cjs.entry.js +2 -2
  32. package/dist/cjs/wcs-com-nav.cjs.entry.js +2 -2
  33. package/dist/cjs/wcs-counter.cjs.entry.js +16 -6
  34. package/dist/cjs/wcs-counter.cjs.entry.js.map +1 -1
  35. package/dist/cjs/wcs-divider.cjs.entry.js +1 -1
  36. package/dist/cjs/wcs-dropdown-divider.cjs.entry.js +1 -1
  37. package/dist/cjs/wcs-dropdown-divider.cjs.entry.js.map +1 -1
  38. package/dist/cjs/wcs-dropdown-header.cjs.entry.js +1 -1
  39. package/dist/cjs/wcs-dropdown-header.cjs.entry.js.map +1 -1
  40. package/dist/cjs/wcs-dropdown-item.cjs.entry.js +2 -2
  41. package/dist/cjs/wcs-dropdown-item.cjs.entry.js.map +1 -1
  42. package/dist/cjs/wcs-dropdown.cjs.entry.js +12 -6
  43. package/dist/cjs/wcs-dropdown.cjs.entry.js.map +1 -1
  44. package/dist/cjs/wcs-editable-field.cjs.entry.js +18 -3
  45. package/dist/cjs/wcs-editable-field.cjs.entry.js.map +1 -1
  46. package/dist/cjs/wcs-error_2.cjs.entry.js +36 -2
  47. package/dist/cjs/wcs-error_2.cjs.entry.js.map +1 -1
  48. package/dist/cjs/wcs-field-content.cjs.entry.js +1 -1
  49. package/dist/cjs/wcs-field-label.cjs.entry.js +1 -1
  50. package/dist/cjs/wcs-field.cjs.entry.js +1 -1
  51. package/dist/cjs/wcs-footer.cjs.entry.js +1 -1
  52. package/dist/cjs/wcs-galactic-menu.cjs.entry.js +2 -2
  53. package/dist/cjs/wcs-galactic.cjs.entry.js +1 -1
  54. package/dist/cjs/wcs-grid-column.cjs.entry.js +25 -4
  55. package/dist/cjs/wcs-grid-column.cjs.entry.js.map +1 -1
  56. package/dist/cjs/wcs-grid-custom-cell.cjs.entry.js +1 -1
  57. package/dist/cjs/wcs-grid-pagination.cjs.entry.js +2 -2
  58. package/dist/cjs/wcs-grid.cjs.entry.js +320 -65
  59. package/dist/cjs/wcs-grid.cjs.entry.js.map +1 -1
  60. package/dist/cjs/wcs-header.cjs.entry.js +1 -1
  61. package/dist/cjs/wcs-hint.cjs.entry.js +1 -1
  62. package/dist/cjs/wcs-horizontal-stepper.cjs.entry.js +1 -1
  63. package/dist/cjs/wcs-icon.cjs.entry.js +1 -1
  64. package/dist/cjs/wcs-input.cjs.entry.js +15 -15
  65. package/dist/cjs/wcs-input.cjs.entry.js.map +1 -1
  66. package/dist/cjs/wcs-label.cjs.entry.js +1 -1
  67. package/dist/cjs/wcs-label.cjs.entry.js.map +1 -1
  68. package/dist/cjs/wcs-list-item-properties.cjs.entry.js +1 -1
  69. package/dist/cjs/wcs-list-item-property.cjs.entry.js +1 -1
  70. package/dist/cjs/wcs-list-item.cjs.entry.js +1 -1
  71. package/dist/cjs/wcs-mat-icon.cjs.entry.js +2 -2
  72. package/dist/cjs/wcs-mat-icon.cjs.entry.js.map +1 -1
  73. package/dist/cjs/wcs-modal.cjs.entry.js +35 -5
  74. package/dist/cjs/wcs-modal.cjs.entry.js.map +1 -1
  75. package/dist/cjs/wcs-native-select.cjs.entry.js +6 -3
  76. package/dist/cjs/wcs-native-select.cjs.entry.js.map +1 -1
  77. package/dist/cjs/wcs-nav-item.cjs.entry.js +2 -2
  78. package/dist/cjs/wcs-nav.cjs.entry.js +1 -1
  79. package/dist/cjs/wcs-progress-bar.cjs.entry.js +4 -6
  80. package/dist/cjs/wcs-progress-bar.cjs.entry.js.map +1 -1
  81. package/dist/cjs/wcs-progress-radial.cjs.entry.js +14 -6
  82. package/dist/cjs/wcs-progress-radial.cjs.entry.js.map +1 -1
  83. package/dist/cjs/wcs-radio-group.cjs.entry.js +22 -15
  84. package/dist/cjs/wcs-radio-group.cjs.entry.js.map +1 -1
  85. package/dist/cjs/wcs-radio.cjs.entry.js +14 -7
  86. package/dist/cjs/wcs-radio.cjs.entry.js.map +1 -1
  87. package/dist/cjs/wcs-select_2.cjs.entry.js +603 -111
  88. package/dist/cjs/wcs-select_2.cjs.entry.js.map +1 -1
  89. package/dist/cjs/wcs-skeleton-circle.cjs.entry.js +1 -1
  90. package/dist/cjs/wcs-skeleton-rectangle.cjs.entry.js +1 -1
  91. package/dist/cjs/wcs-skeleton-text.cjs.entry.js +1 -1
  92. package/dist/cjs/wcs-switch.cjs.entry.js +5 -2
  93. package/dist/cjs/wcs-switch.cjs.entry.js.map +1 -1
  94. package/dist/cjs/wcs-tab.cjs.entry.js +4 -1
  95. package/dist/cjs/wcs-tab.cjs.entry.js.map +1 -1
  96. package/dist/cjs/wcs-tabs.cjs.entry.js +4 -4
  97. package/dist/cjs/wcs-tabs.cjs.entry.js.map +1 -1
  98. package/dist/cjs/wcs-textarea.cjs.entry.js +13 -11
  99. package/dist/cjs/wcs-textarea.cjs.entry.js.map +1 -1
  100. package/dist/cjs/wcs-tooltip.cjs.entry.js +1 -1
  101. package/dist/cjs/wcs.cjs.js +2 -2
  102. package/dist/collection/components/badge/badge-interface.js.map +1 -1
  103. package/dist/collection/components/badge/badge.css +19 -1
  104. package/dist/collection/components/badge/badge.js +24 -0
  105. package/dist/collection/components/badge/badge.js.map +1 -1
  106. package/dist/collection/components/button/button.css +1 -1
  107. package/dist/collection/components/checkbox/checkbox.js +34 -1
  108. package/dist/collection/components/checkbox/checkbox.js.map +1 -1
  109. package/dist/collection/components/counter/counter.css +6 -1
  110. package/dist/collection/components/counter/counter.js +61 -3
  111. package/dist/collection/components/counter/counter.js.map +1 -1
  112. package/dist/collection/components/dropdown/dropdown.css +15 -4
  113. package/dist/collection/components/dropdown/dropdown.js +37 -1
  114. package/dist/collection/components/dropdown/dropdown.js.map +1 -1
  115. package/dist/collection/components/dropdown-divider/dropdown-divider.js +3 -0
  116. package/dist/collection/components/dropdown-divider/dropdown-divider.js.map +1 -1
  117. package/dist/collection/components/dropdown-header/dropdown-header.js +4 -0
  118. package/dist/collection/components/dropdown-header/dropdown-header.js.map +1 -1
  119. package/dist/collection/components/dropdown-item/dropdown-item.js +5 -1
  120. package/dist/collection/components/dropdown-item/dropdown-item.js.map +1 -1
  121. package/dist/collection/components/editable-field/editable-field.js +17 -2
  122. package/dist/collection/components/editable-field/editable-field.js.map +1 -1
  123. package/dist/collection/components/error/error.js +1 -1
  124. package/dist/collection/components/error/error.js.map +1 -1
  125. package/dist/collection/components/form-field/form-field.js +31 -0
  126. package/dist/collection/components/form-field/form-field.js.map +1 -1
  127. package/dist/collection/components/grid/grid-interface.js.map +1 -1
  128. package/dist/collection/components/grid/grid-keyboard-event.js +52 -0
  129. package/dist/collection/components/grid/grid-keyboard-event.js.map +1 -0
  130. package/dist/collection/components/grid/grid.css +5 -0
  131. package/dist/collection/components/grid/grid.js +265 -29
  132. package/dist/collection/components/grid/grid.js.map +1 -1
  133. package/dist/collection/components/grid-column/grid-column.css +5 -0
  134. package/dist/collection/components/grid-column/grid-column.js +60 -1
  135. package/dist/collection/components/grid-column/grid-column.js.map +1 -1
  136. package/dist/collection/components/grid-column/grid-sort-arrow.js +1 -1
  137. package/dist/collection/components/grid-column/grid-sort-arrow.js.map +1 -1
  138. package/dist/collection/components/grid-pagination/grid-pagination-arrow.js +32 -23
  139. package/dist/collection/components/grid-pagination/grid-pagination-arrow.js.map +1 -1
  140. package/dist/collection/components/grid-pagination/grid-pagination.css +17 -0
  141. package/dist/collection/components/grid-pagination/grid-pagination.js +1 -1
  142. package/dist/collection/components/grid-pagination/grid-pagination.js.map +1 -1
  143. package/dist/collection/components/input/input.js +64 -28
  144. package/dist/collection/components/input/input.js.map +1 -1
  145. package/dist/collection/components/label/label.js.map +1 -1
  146. package/dist/collection/components/mat-icon/mat-icon.js +1 -1
  147. package/dist/collection/components/mat-icon/mat-icon.js.map +1 -1
  148. package/dist/collection/components/modal/modal.css +2 -2
  149. package/dist/collection/components/modal/modal.js +73 -2
  150. package/dist/collection/components/modal/modal.js.map +1 -1
  151. package/dist/collection/components/native-select/native-select.css +6 -5
  152. package/dist/collection/components/native-select/native-select.js +29 -0
  153. package/dist/collection/components/native-select/native-select.js.map +1 -1
  154. package/dist/collection/components/progress-bar/progress-bar.css +12 -11
  155. package/dist/collection/components/progress-bar/progress-bar.js +22 -13
  156. package/dist/collection/components/progress-bar/progress-bar.js.map +1 -1
  157. package/dist/collection/components/progress-radial/progress-radial.css +5 -0
  158. package/dist/collection/components/progress-radial/progress-radial.js +18 -7
  159. package/dist/collection/components/progress-radial/progress-radial.js.map +1 -1
  160. package/dist/collection/components/radio/radio.css +8 -16
  161. package/dist/collection/components/radio/radio.js +12 -5
  162. package/dist/collection/components/radio/radio.js.map +1 -1
  163. package/dist/collection/components/radio-group/radio-group.js +50 -13
  164. package/dist/collection/components/radio-group/radio-group.js.map +1 -1
  165. package/dist/collection/components/select/select-interface.js +10 -0
  166. package/dist/collection/components/select/select-interface.js.map +1 -1
  167. package/dist/collection/components/select/select-keyboard-event.js +306 -0
  168. package/dist/collection/components/select/select-keyboard-event.js.map +1 -0
  169. package/dist/collection/components/select/select.css +59 -6
  170. package/dist/collection/components/select/select.js +435 -111
  171. package/dist/collection/components/select/select.js.map +1 -1
  172. package/dist/collection/components/select-option/select-option.css +15 -0
  173. package/dist/collection/components/select-option/select-option.js +30 -5
  174. package/dist/collection/components/select-option/select-option.js.map +1 -1
  175. package/dist/collection/components/switch/switch.js +34 -1
  176. package/dist/collection/components/switch/switch.js.map +1 -1
  177. package/dist/collection/components/tab/tab.css +7 -0
  178. package/dist/collection/components/tab/tab.js +11 -1
  179. package/dist/collection/components/tab/tab.js.map +1 -1
  180. package/dist/collection/components/tabs/tabs.js +7 -3
  181. package/dist/collection/components/tabs/tabs.js.map +1 -1
  182. package/dist/collection/components/textarea/textarea.css +8 -3
  183. package/dist/collection/components/textarea/textarea.js +41 -12
  184. package/dist/collection/components/textarea/textarea.js.map +1 -1
  185. package/dist/collection/utils/accessibility.js +7 -1
  186. package/dist/collection/utils/accessibility.js.map +1 -1
  187. package/dist/collection/utils/helpers.js +76 -1
  188. package/dist/collection/utils/helpers.js.map +1 -1
  189. package/dist/collection/utils/keyboard-event.js +74 -0
  190. package/dist/collection/utils/keyboard-event.js.map +1 -0
  191. package/dist/collection/utils/mutable-aria-attribute.js +4 -0
  192. package/dist/collection/utils/mutable-aria-attribute.js.map +1 -0
  193. package/dist/esm/{accessibility-ffa12842.js → accessibility-64feea8a.js} +8 -2
  194. package/dist/esm/accessibility-64feea8a.js.map +1 -0
  195. package/dist/esm/button-interface-c21c265f.js +9 -0
  196. package/dist/esm/button-interface-c21c265f.js.map +1 -0
  197. package/dist/esm/grid-pagination-f7b01e2e.js +109 -0
  198. package/dist/esm/grid-pagination-f7b01e2e.js.map +1 -0
  199. package/dist/esm/{helpers-1d55b67f.js → helpers-a21ae7d0.js} +75 -3
  200. package/dist/esm/helpers-a21ae7d0.js.map +1 -0
  201. package/dist/esm/{index-dc4d96d4.js → index-4f282598.js} +4 -1
  202. package/dist/esm/index-4f282598.js.map +1 -0
  203. package/dist/esm/{isEqual-20881bca.js → keyboard-event-ba3d20e7.js} +77 -2
  204. package/dist/esm/keyboard-event-ba3d20e7.js.map +1 -0
  205. package/dist/esm/loader.js +3 -3
  206. package/dist/esm/{select-arrow-81d069f7.js → select-arrow-28e8687b.js} +2 -2
  207. package/dist/esm/{select-arrow-81d069f7.js.map → select-arrow-28e8687b.js.map} +1 -1
  208. package/dist/esm/wcs-accordion-content.entry.js +1 -1
  209. package/dist/esm/wcs-accordion-header.entry.js +1 -1
  210. package/dist/esm/wcs-accordion-panel.entry.js +2 -2
  211. package/dist/esm/wcs-accordion.entry.js +1 -1
  212. package/dist/esm/wcs-action-bar.entry.js +1 -1
  213. package/dist/esm/wcs-app.entry.js +1 -1
  214. package/dist/esm/wcs-badge.entry.js +3 -2
  215. package/dist/esm/wcs-badge.entry.js.map +1 -1
  216. package/dist/esm/{wcs-button.entry.js → wcs-button_2.entry.js} +19 -11
  217. package/dist/esm/wcs-button_2.entry.js.map +1 -0
  218. package/dist/esm/wcs-card-body.entry.js +1 -1
  219. package/dist/esm/wcs-card.entry.js +1 -1
  220. package/dist/esm/wcs-checkbox.entry.js +5 -2
  221. package/dist/esm/wcs-checkbox.entry.js.map +1 -1
  222. package/dist/esm/wcs-com-nav-category.entry.js +2 -2
  223. package/dist/esm/wcs-com-nav-submenu.entry.js +2 -2
  224. package/dist/esm/wcs-com-nav.entry.js +2 -2
  225. package/dist/esm/wcs-counter.entry.js +16 -6
  226. package/dist/esm/wcs-counter.entry.js.map +1 -1
  227. package/dist/esm/wcs-divider.entry.js +1 -1
  228. package/dist/esm/wcs-dropdown-divider.entry.js +1 -1
  229. package/dist/esm/wcs-dropdown-divider.entry.js.map +1 -1
  230. package/dist/esm/wcs-dropdown-header.entry.js +1 -1
  231. package/dist/esm/wcs-dropdown-header.entry.js.map +1 -1
  232. package/dist/esm/wcs-dropdown-item.entry.js +2 -2
  233. package/dist/esm/wcs-dropdown-item.entry.js.map +1 -1
  234. package/dist/esm/wcs-dropdown.entry.js +12 -6
  235. package/dist/esm/wcs-dropdown.entry.js.map +1 -1
  236. package/dist/esm/wcs-editable-field.entry.js +18 -3
  237. package/dist/esm/wcs-editable-field.entry.js.map +1 -1
  238. package/dist/esm/wcs-error_2.entry.js +36 -2
  239. package/dist/esm/wcs-error_2.entry.js.map +1 -1
  240. package/dist/esm/wcs-field-content.entry.js +1 -1
  241. package/dist/esm/wcs-field-label.entry.js +1 -1
  242. package/dist/esm/wcs-field.entry.js +1 -1
  243. package/dist/esm/wcs-footer.entry.js +1 -1
  244. package/dist/esm/wcs-galactic-menu.entry.js +2 -2
  245. package/dist/esm/wcs-galactic.entry.js +1 -1
  246. package/dist/esm/wcs-grid-column.entry.js +25 -4
  247. package/dist/esm/wcs-grid-column.entry.js.map +1 -1
  248. package/dist/esm/wcs-grid-custom-cell.entry.js +1 -1
  249. package/dist/esm/wcs-grid-pagination.entry.js +2 -2
  250. package/dist/esm/wcs-grid.entry.js +282 -27
  251. package/dist/esm/wcs-grid.entry.js.map +1 -1
  252. package/dist/esm/wcs-header.entry.js +1 -1
  253. package/dist/esm/wcs-hint.entry.js +1 -1
  254. package/dist/esm/wcs-horizontal-stepper.entry.js +1 -1
  255. package/dist/esm/wcs-icon.entry.js +1 -1
  256. package/dist/esm/wcs-input.entry.js +15 -15
  257. package/dist/esm/wcs-input.entry.js.map +1 -1
  258. package/dist/esm/wcs-label.entry.js +1 -1
  259. package/dist/esm/wcs-label.entry.js.map +1 -1
  260. package/dist/esm/wcs-list-item-properties.entry.js +1 -1
  261. package/dist/esm/wcs-list-item-property.entry.js +1 -1
  262. package/dist/esm/wcs-list-item.entry.js +1 -1
  263. package/dist/esm/wcs-mat-icon.entry.js +2 -2
  264. package/dist/esm/wcs-mat-icon.entry.js.map +1 -1
  265. package/dist/esm/wcs-modal.entry.js +35 -5
  266. package/dist/esm/wcs-modal.entry.js.map +1 -1
  267. package/dist/esm/wcs-native-select.entry.js +6 -3
  268. package/dist/esm/wcs-native-select.entry.js.map +1 -1
  269. package/dist/esm/wcs-nav-item.entry.js +2 -2
  270. package/dist/esm/wcs-nav.entry.js +1 -1
  271. package/dist/esm/wcs-progress-bar.entry.js +4 -6
  272. package/dist/esm/wcs-progress-bar.entry.js.map +1 -1
  273. package/dist/esm/wcs-progress-radial.entry.js +14 -6
  274. package/dist/esm/wcs-progress-radial.entry.js.map +1 -1
  275. package/dist/esm/wcs-radio-group.entry.js +22 -15
  276. package/dist/esm/wcs-radio-group.entry.js.map +1 -1
  277. package/dist/esm/wcs-radio.entry.js +14 -7
  278. package/dist/esm/wcs-radio.entry.js.map +1 -1
  279. package/dist/esm/wcs-select_2.entry.js +602 -110
  280. package/dist/esm/wcs-select_2.entry.js.map +1 -1
  281. package/dist/esm/wcs-skeleton-circle.entry.js +1 -1
  282. package/dist/esm/wcs-skeleton-rectangle.entry.js +1 -1
  283. package/dist/esm/wcs-skeleton-text.entry.js +1 -1
  284. package/dist/esm/wcs-switch.entry.js +5 -2
  285. package/dist/esm/wcs-switch.entry.js.map +1 -1
  286. package/dist/esm/wcs-tab.entry.js +4 -1
  287. package/dist/esm/wcs-tab.entry.js.map +1 -1
  288. package/dist/esm/wcs-tabs.entry.js +4 -4
  289. package/dist/esm/wcs-tabs.entry.js.map +1 -1
  290. package/dist/esm/wcs-textarea.entry.js +13 -11
  291. package/dist/esm/wcs-textarea.entry.js.map +1 -1
  292. package/dist/esm/wcs-tooltip.entry.js +1 -1
  293. package/dist/esm/wcs.js +3 -3
  294. package/dist/types/components/badge/badge-interface.d.ts +2 -0
  295. package/dist/types/components/badge/badge.d.ts +5 -1
  296. package/dist/types/components/checkbox/checkbox.d.ts +4 -1
  297. package/dist/types/components/counter/counter.d.ts +8 -1
  298. package/dist/types/components/dropdown/dropdown.d.ts +10 -1
  299. package/dist/types/components/dropdown-divider/dropdown-divider.d.ts +3 -0
  300. package/dist/types/components/dropdown-header/dropdown-header.d.ts +4 -0
  301. package/dist/types/components/dropdown-item/dropdown-item.d.ts +7 -0
  302. package/dist/types/components/editable-field/editable-field.d.ts +7 -0
  303. package/dist/types/components/form-field/form-field.d.ts +4 -0
  304. package/dist/types/components/grid/grid-interface.d.ts +14 -2
  305. package/dist/types/components/grid/grid-keyboard-event.d.ts +16 -0
  306. package/dist/types/components/grid/grid.d.ts +59 -4
  307. package/dist/types/components/grid-column/grid-column.d.ts +17 -0
  308. package/dist/types/components/input/input.d.ts +40 -17
  309. package/dist/types/components/modal/modal.d.ts +37 -1
  310. package/dist/types/components/native-select/native-select.d.ts +3 -1
  311. package/dist/types/components/progress-bar/progress-bar.d.ts +8 -3
  312. package/dist/types/components/progress-radial/progress-radial.d.ts +12 -0
  313. package/dist/types/components/radio/radio.d.ts +3 -0
  314. package/dist/types/components/radio-group/radio-group.d.ts +3 -1
  315. package/dist/types/components/select/select-interface.d.ts +12 -0
  316. package/dist/types/components/select/select-keyboard-event.d.ts +38 -0
  317. package/dist/types/components/select/select.d.ts +76 -15
  318. package/dist/types/components/select-option/select-option.d.ts +10 -4
  319. package/dist/types/components/switch/switch.d.ts +4 -1
  320. package/dist/types/components/tab/tab.d.ts +3 -0
  321. package/dist/types/components/tabs/tabs.d.ts +4 -0
  322. package/dist/types/components/textarea/textarea.d.ts +8 -4
  323. package/dist/types/components.d.ts +357 -55
  324. package/dist/types/utils/accessibility.d.ts +4 -0
  325. package/dist/types/utils/helpers.d.ts +12 -1
  326. package/dist/types/utils/keyboard-event.d.ts +13 -0
  327. package/dist/types/utils/mutable-aria-attribute.d.ts +5 -0
  328. package/dist/wcs/{p-7a3f70da.entry.js → p-00f6a79a.entry.js} +2 -2
  329. package/dist/wcs/{p-ee453b6e.entry.js → p-016e4dd9.entry.js} +2 -2
  330. package/dist/wcs/p-0ae177cf.js +2 -0
  331. package/dist/wcs/p-0ae177cf.js.map +1 -0
  332. package/dist/wcs/{p-f06f48f3.entry.js → p-0d02d9e4.entry.js} +2 -2
  333. package/dist/wcs/p-0d02d9e4.entry.js.map +1 -0
  334. package/dist/wcs/{p-30d8f9c3.entry.js → p-11ab4ffc.entry.js} +2 -2
  335. package/dist/wcs/p-13548191.entry.js +2 -0
  336. package/dist/wcs/p-13548191.entry.js.map +1 -0
  337. package/dist/wcs/p-13ffe5f3.entry.js +2 -0
  338. package/dist/wcs/p-13ffe5f3.entry.js.map +1 -0
  339. package/dist/wcs/{p-dfddec76.entry.js → p-17442a2f.entry.js} +2 -2
  340. package/dist/wcs/p-1d49a02e.entry.js +2 -0
  341. package/dist/wcs/p-1d49a02e.entry.js.map +1 -0
  342. package/dist/wcs/{p-d6c3e615.js → p-24611014.js} +2 -2
  343. package/dist/wcs/p-250b3794.entry.js +2 -0
  344. package/dist/wcs/{p-91b3e4b5.entry.js.map → p-250b3794.entry.js.map} +1 -1
  345. package/dist/wcs/{p-292ca644.entry.js → p-2d62b3dd.entry.js} +2 -2
  346. package/dist/wcs/{p-d6b3f742.entry.js → p-33a5594d.entry.js} +2 -2
  347. package/dist/wcs/p-33a570ee.js +2 -0
  348. package/dist/wcs/p-33a570ee.js.map +1 -0
  349. package/dist/wcs/{p-e86c6cbb.entry.js → p-34079054.entry.js} +2 -2
  350. package/dist/wcs/{p-e86c6cbb.entry.js.map → p-34079054.entry.js.map} +1 -1
  351. package/dist/wcs/{p-257b15b9.entry.js → p-36e83879.entry.js} +2 -2
  352. package/dist/wcs/p-44410e32.entry.js +2 -0
  353. package/dist/wcs/p-44410e32.entry.js.map +1 -0
  354. package/dist/wcs/{p-7269272f.entry.js → p-46184d47.entry.js} +2 -2
  355. package/dist/wcs/p-46975b1e.entry.js +2 -0
  356. package/dist/wcs/p-46975b1e.entry.js.map +1 -0
  357. package/dist/wcs/{p-4a9f8e94.entry.js → p-46d56c4e.entry.js} +3 -3
  358. package/dist/wcs/{p-fc3f5b53.entry.js → p-4820154c.entry.js} +2 -2
  359. package/dist/wcs/p-49b0de03.entry.js +2 -0
  360. package/dist/wcs/p-49b0de03.entry.js.map +1 -0
  361. package/dist/wcs/{p-ff9967eb.entry.js → p-4af68f13.entry.js} +2 -2
  362. package/dist/wcs/{p-1f8c73eb.entry.js → p-5f0ab1dc.entry.js} +2 -2
  363. package/dist/wcs/p-5f0ab1dc.entry.js.map +1 -0
  364. package/dist/wcs/p-5f3e6b0c.entry.js +2 -0
  365. package/dist/wcs/p-5f3e6b0c.entry.js.map +1 -0
  366. package/dist/wcs/{p-50dce764.entry.js → p-61b934a7.entry.js} +2 -2
  367. package/dist/wcs/p-64855188.js +2 -0
  368. package/dist/wcs/p-64855188.js.map +1 -0
  369. package/dist/wcs/p-680b107c.entry.js +2 -0
  370. package/dist/wcs/p-68d654da.js +2 -0
  371. package/dist/wcs/p-68d654da.js.map +1 -0
  372. package/dist/wcs/p-69d1223c.js +3 -0
  373. package/dist/wcs/p-69d1223c.js.map +1 -0
  374. package/dist/wcs/p-6f538b67.entry.js +2 -0
  375. package/dist/wcs/p-6f538b67.entry.js.map +1 -0
  376. package/dist/wcs/p-7c145ed0.entry.js +2 -0
  377. package/dist/wcs/p-7c145ed0.entry.js.map +1 -0
  378. package/dist/wcs/p-8724a296.entry.js +2 -0
  379. package/dist/wcs/p-8724a296.entry.js.map +1 -0
  380. package/dist/wcs/{p-d084dd61.entry.js → p-88b1cdfe.entry.js} +2 -2
  381. package/dist/wcs/{p-c7494651.entry.js → p-8ff7e463.entry.js} +2 -2
  382. package/dist/wcs/p-90a7fd68.entry.js +2 -0
  383. package/dist/wcs/p-90a7fd68.entry.js.map +1 -0
  384. package/dist/wcs/{p-cfcacc44.entry.js → p-914aa964.entry.js} +2 -2
  385. package/dist/wcs/p-93fcef08.entry.js +2 -0
  386. package/dist/wcs/p-93fcef08.entry.js.map +1 -0
  387. package/dist/wcs/{p-429bd9fb.entry.js → p-9b1c73b3.entry.js} +2 -2
  388. package/dist/wcs/p-9cc48d75.js +2 -0
  389. package/dist/wcs/p-9cc48d75.js.map +1 -0
  390. package/dist/wcs/p-a3518f66.entry.js +2 -0
  391. package/dist/wcs/p-a361d9f1.entry.js +2 -0
  392. package/dist/wcs/{p-31a8d23f.entry.js → p-a85208ca.entry.js} +2 -2
  393. package/dist/wcs/{p-d3f1cafe.entry.js → p-b91323fc.entry.js} +2 -2
  394. package/dist/wcs/{p-47d8ece5.entry.js → p-bd4029f8.entry.js} +2 -2
  395. package/dist/wcs/{p-e348058b.entry.js → p-bed4e3ce.entry.js} +2 -2
  396. package/dist/wcs/{p-f489793d.entry.js → p-c261353f.entry.js} +2 -2
  397. package/dist/wcs/p-c261353f.entry.js.map +1 -0
  398. package/dist/wcs/p-c3227f01.entry.js +2 -0
  399. package/dist/wcs/p-c3227f01.entry.js.map +1 -0
  400. package/dist/wcs/{p-810aff71.entry.js → p-c38adf4b.entry.js} +2 -2
  401. package/dist/wcs/{p-2185bf8b.entry.js → p-c6a8c6f9.entry.js} +2 -2
  402. package/dist/wcs/p-c9478849.entry.js +2 -0
  403. package/dist/wcs/p-c9478849.entry.js.map +1 -0
  404. package/dist/wcs/p-ce3ef5d0.entry.js +2 -0
  405. package/dist/wcs/p-ce3ef5d0.entry.js.map +1 -0
  406. package/dist/wcs/{p-54e29233.entry.js → p-ce40b012.entry.js} +2 -2
  407. package/dist/wcs/{p-54e29233.entry.js.map → p-ce40b012.entry.js.map} +1 -1
  408. package/dist/wcs/p-d6c482fc.entry.js +2 -0
  409. package/dist/wcs/p-d6c482fc.entry.js.map +1 -0
  410. package/dist/wcs/{p-1e43122f.entry.js → p-d84cee70.entry.js} +2 -2
  411. package/dist/wcs/p-d895b92c.entry.js +16 -0
  412. package/dist/wcs/p-d895b92c.entry.js.map +1 -0
  413. package/dist/wcs/p-dca2f42c.entry.js +2 -0
  414. package/dist/wcs/{p-7519a270.entry.js → p-e0d5908a.entry.js} +2 -2
  415. package/dist/wcs/{p-a5cd4c07.entry.js → p-e487ff2c.entry.js} +2 -2
  416. package/dist/wcs/p-e487ff2c.entry.js.map +1 -0
  417. package/dist/wcs/{p-3b1fc676.entry.js → p-e52c11e4.entry.js} +2 -2
  418. package/dist/wcs/{p-0ede0c37.entry.js → p-e7661047.entry.js} +2 -2
  419. package/dist/wcs/p-ea6e33ee.entry.js +2 -0
  420. package/dist/wcs/{p-cc03627c.entry.js → p-f7ce4e0d.entry.js} +2 -2
  421. package/dist/wcs/{p-b6160b7c.entry.js → p-faf04401.entry.js} +2 -2
  422. package/dist/wcs/p-fc1767ae.entry.js +2 -0
  423. package/dist/wcs/p-fc1767ae.entry.js.map +1 -0
  424. package/dist/wcs/p-feebc469.entry.js +2 -0
  425. package/dist/wcs/p-feebc469.entry.js.map +1 -0
  426. package/dist/wcs/wcs.css +1 -1
  427. package/dist/wcs/wcs.esm.js +1 -1
  428. package/dist/wcs/wcs.esm.js.map +1 -1
  429. package/package.json +1 -1
  430. package/dist/cjs/accessibility-e99b032d.js.map +0 -1
  431. package/dist/cjs/grid-pagination-4b55c908.js +0 -101
  432. package/dist/cjs/grid-pagination-4b55c908.js.map +0 -1
  433. package/dist/cjs/helpers-4a14051a.js.map +0 -1
  434. package/dist/cjs/index-ca67a6dc.js.map +0 -1
  435. package/dist/cjs/isEqual-9ea7ee49.js.map +0 -1
  436. package/dist/cjs/wcs-button.cjs.entry.js.map +0 -1
  437. package/dist/cjs/wcs-spinner.cjs.entry.js +0 -22
  438. package/dist/cjs/wcs-spinner.cjs.entry.js.map +0 -1
  439. package/dist/esm/accessibility-ffa12842.js.map +0 -1
  440. package/dist/esm/grid-pagination-41354861.js +0 -99
  441. package/dist/esm/grid-pagination-41354861.js.map +0 -1
  442. package/dist/esm/helpers-1d55b67f.js.map +0 -1
  443. package/dist/esm/index-dc4d96d4.js.map +0 -1
  444. package/dist/esm/isEqual-20881bca.js.map +0 -1
  445. package/dist/esm/wcs-button.entry.js.map +0 -1
  446. package/dist/esm/wcs-spinner.entry.js +0 -18
  447. package/dist/esm/wcs-spinner.entry.js.map +0 -1
  448. package/dist/wcs/p-02b95dbf.entry.js +0 -2
  449. package/dist/wcs/p-02b95dbf.entry.js.map +0 -1
  450. package/dist/wcs/p-0f8db386.js +0 -2
  451. package/dist/wcs/p-0f8db386.js.map +0 -1
  452. package/dist/wcs/p-17630eea.entry.js +0 -2
  453. package/dist/wcs/p-1f8c73eb.entry.js.map +0 -1
  454. package/dist/wcs/p-269d244c.entry.js +0 -2
  455. package/dist/wcs/p-269d244c.entry.js.map +0 -1
  456. package/dist/wcs/p-2f63d6c5.entry.js +0 -2
  457. package/dist/wcs/p-2f63d6c5.entry.js.map +0 -1
  458. package/dist/wcs/p-39821dd2.entry.js +0 -2
  459. package/dist/wcs/p-39821dd2.entry.js.map +0 -1
  460. package/dist/wcs/p-3dc6b507.js +0 -2
  461. package/dist/wcs/p-3dc6b507.js.map +0 -1
  462. package/dist/wcs/p-463667c9.entry.js +0 -2
  463. package/dist/wcs/p-475ac7c5.js +0 -2
  464. package/dist/wcs/p-475ac7c5.js.map +0 -1
  465. package/dist/wcs/p-4ffe4539.entry.js +0 -2
  466. package/dist/wcs/p-4ffe4539.entry.js.map +0 -1
  467. package/dist/wcs/p-57560d7d.entry.js +0 -2
  468. package/dist/wcs/p-57560d7d.entry.js.map +0 -1
  469. package/dist/wcs/p-61cab06f.entry.js +0 -2
  470. package/dist/wcs/p-61cab06f.entry.js.map +0 -1
  471. package/dist/wcs/p-627bbb6a.entry.js +0 -2
  472. package/dist/wcs/p-627bbb6a.entry.js.map +0 -1
  473. package/dist/wcs/p-6de70331.entry.js +0 -2
  474. package/dist/wcs/p-6de70331.entry.js.map +0 -1
  475. package/dist/wcs/p-747a5962.entry.js +0 -2
  476. package/dist/wcs/p-8181f8cd.js +0 -2
  477. package/dist/wcs/p-8181f8cd.js.map +0 -1
  478. package/dist/wcs/p-8c4ed883.entry.js +0 -2
  479. package/dist/wcs/p-8c4ed883.entry.js.map +0 -1
  480. package/dist/wcs/p-8d57835f.entry.js +0 -2
  481. package/dist/wcs/p-8fed8b1c.entry.js +0 -2
  482. package/dist/wcs/p-8fed8b1c.entry.js.map +0 -1
  483. package/dist/wcs/p-91b3e4b5.entry.js +0 -2
  484. package/dist/wcs/p-9910fedd.entry.js +0 -2
  485. package/dist/wcs/p-9910fedd.entry.js.map +0 -1
  486. package/dist/wcs/p-9d798de4.entry.js +0 -2
  487. package/dist/wcs/p-9d798de4.entry.js.map +0 -1
  488. package/dist/wcs/p-9ecdeaf9.entry.js +0 -2
  489. package/dist/wcs/p-9ecdeaf9.entry.js.map +0 -1
  490. package/dist/wcs/p-a2df3a49.js +0 -3
  491. package/dist/wcs/p-a2df3a49.js.map +0 -1
  492. package/dist/wcs/p-a5cd4c07.entry.js.map +0 -1
  493. package/dist/wcs/p-ac106663.entry.js +0 -2
  494. package/dist/wcs/p-ac106663.entry.js.map +0 -1
  495. package/dist/wcs/p-cb90bc3a.entry.js +0 -2
  496. package/dist/wcs/p-cb90bc3a.entry.js.map +0 -1
  497. package/dist/wcs/p-cdd172b4.entry.js +0 -2
  498. package/dist/wcs/p-d5a0e271.entry.js +0 -2
  499. package/dist/wcs/p-d5a0e271.entry.js.map +0 -1
  500. package/dist/wcs/p-ec84d6fd.entry.js +0 -16
  501. package/dist/wcs/p-ec84d6fd.entry.js.map +0 -1
  502. package/dist/wcs/p-ed3132be.entry.js +0 -2
  503. package/dist/wcs/p-ed3132be.entry.js.map +0 -1
  504. package/dist/wcs/p-f06f48f3.entry.js.map +0 -1
  505. package/dist/wcs/p-f20b9024.entry.js +0 -2
  506. package/dist/wcs/p-f20b9024.entry.js.map +0 -1
  507. package/dist/wcs/p-f489793d.entry.js.map +0 -1
  508. /package/dist/wcs/{p-7a3f70da.entry.js.map → p-00f6a79a.entry.js.map} +0 -0
  509. /package/dist/wcs/{p-ee453b6e.entry.js.map → p-016e4dd9.entry.js.map} +0 -0
  510. /package/dist/wcs/{p-30d8f9c3.entry.js.map → p-11ab4ffc.entry.js.map} +0 -0
  511. /package/dist/wcs/{p-dfddec76.entry.js.map → p-17442a2f.entry.js.map} +0 -0
  512. /package/dist/wcs/{p-d6c3e615.js.map → p-24611014.js.map} +0 -0
  513. /package/dist/wcs/{p-292ca644.entry.js.map → p-2d62b3dd.entry.js.map} +0 -0
  514. /package/dist/wcs/{p-d6b3f742.entry.js.map → p-33a5594d.entry.js.map} +0 -0
  515. /package/dist/wcs/{p-257b15b9.entry.js.map → p-36e83879.entry.js.map} +0 -0
  516. /package/dist/wcs/{p-7269272f.entry.js.map → p-46184d47.entry.js.map} +0 -0
  517. /package/dist/wcs/{p-4a9f8e94.entry.js.map → p-46d56c4e.entry.js.map} +0 -0
  518. /package/dist/wcs/{p-fc3f5b53.entry.js.map → p-4820154c.entry.js.map} +0 -0
  519. /package/dist/wcs/{p-ff9967eb.entry.js.map → p-4af68f13.entry.js.map} +0 -0
  520. /package/dist/wcs/{p-50dce764.entry.js.map → p-61b934a7.entry.js.map} +0 -0
  521. /package/dist/wcs/{p-17630eea.entry.js.map → p-680b107c.entry.js.map} +0 -0
  522. /package/dist/wcs/{p-d084dd61.entry.js.map → p-88b1cdfe.entry.js.map} +0 -0
  523. /package/dist/wcs/{p-c7494651.entry.js.map → p-8ff7e463.entry.js.map} +0 -0
  524. /package/dist/wcs/{p-cfcacc44.entry.js.map → p-914aa964.entry.js.map} +0 -0
  525. /package/dist/wcs/{p-429bd9fb.entry.js.map → p-9b1c73b3.entry.js.map} +0 -0
  526. /package/dist/wcs/{p-8d57835f.entry.js.map → p-a3518f66.entry.js.map} +0 -0
  527. /package/dist/wcs/{p-463667c9.entry.js.map → p-a361d9f1.entry.js.map} +0 -0
  528. /package/dist/wcs/{p-31a8d23f.entry.js.map → p-a85208ca.entry.js.map} +0 -0
  529. /package/dist/wcs/{p-d3f1cafe.entry.js.map → p-b91323fc.entry.js.map} +0 -0
  530. /package/dist/wcs/{p-47d8ece5.entry.js.map → p-bd4029f8.entry.js.map} +0 -0
  531. /package/dist/wcs/{p-e348058b.entry.js.map → p-bed4e3ce.entry.js.map} +0 -0
  532. /package/dist/wcs/{p-810aff71.entry.js.map → p-c38adf4b.entry.js.map} +0 -0
  533. /package/dist/wcs/{p-2185bf8b.entry.js.map → p-c6a8c6f9.entry.js.map} +0 -0
  534. /package/dist/wcs/{p-1e43122f.entry.js.map → p-d84cee70.entry.js.map} +0 -0
  535. /package/dist/wcs/{p-747a5962.entry.js.map → p-dca2f42c.entry.js.map} +0 -0
  536. /package/dist/wcs/{p-7519a270.entry.js.map → p-e0d5908a.entry.js.map} +0 -0
  537. /package/dist/wcs/{p-3b1fc676.entry.js.map → p-e52c11e4.entry.js.map} +0 -0
  538. /package/dist/wcs/{p-0ede0c37.entry.js.map → p-e7661047.entry.js.map} +0 -0
  539. /package/dist/wcs/{p-cdd172b4.entry.js.map → p-ea6e33ee.entry.js.map} +0 -0
  540. /package/dist/wcs/{p-cc03627c.entry.js.map → p-f7ce4e0d.entry.js.map} +0 -0
  541. /package/dist/wcs/{p-b6160b7c.entry.js.map → p-faf04401.entry.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"editable-field.js","sourceRoot":"","sources":["../../../src/components/editable-field/editable-field.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n ComponentInterface,\n EventEmitter,\n h,\n Prop,\n Event,\n State,\n Host,\n Element,\n Watch, Listen\n} from '@stencil/core';\nimport {\n EditableComponentUpdateEvent,\n EditableFieldType,\n FormatFn,\n isWcsEditableFieldSize,\n ValidateFn,\n WcsEditableFieldSize,\n WcsEditableFieldSizeValues\n} from './editable-field-interface';\n\nenum EditableComponentState {\n DISPLAY,\n EDIT,\n LOAD\n}\n\n@Component({\n tag: 'wcs-editable-field',\n styleUrl: 'editable-field.scss',\n shadow: true\n})\nexport class EditableField implements ComponentInterface {\n @Element() private el!: HTMLWcsEditableFieldElement;\n\n @State() private currentState: EditableComponentState = EditableComponentState.DISPLAY;\n /**\n * Specifies which component is used for editing\n */\n @Prop() type: EditableFieldType = 'input';\n /**\n * Label of the field\n */\n @Prop() label!: string;\n /**\n * event called at each (valid) update of the field.\n */\n @Event() wcsChange!: EventEmitter<EditableComponentUpdateEvent>;\n /**\n * Specify whether the field is editable or not\n */\n @Prop() readonly: boolean = false;\n /**\n * Initial value of the field\n */\n @Prop({mutable: true}) value: any;\n /**\n * Function to customize the validation of the data during the update\n */\n @Prop() validateFn: ValidateFn<any>;\n /**\n * Function used to format the value\n */\n @Prop() formatFn: FormatFn<any>;\n\n /**\n * Error message displayed under the field if validation failed.\n */\n @Prop() errorMsg: string = null;\n\n /**\n * Specify the size (height) of the editable field.\n */\n @Prop({reflect: true}) size: WcsEditableFieldSize = 'm';\n\n @State() private isError: boolean = false;\n\n // fixme: why this attr is never read?\n // ignoreNextChangeEvent: boolean = false;\n private spiedElement: HTMLElement = null;\n private currentValue: any = null;\n\n componentWillLoad(): Promise<void> | void {\n if(!isWcsEditableFieldSize(this.size)) {\n console.error(`Invalid size value for wcs-editable-field : \"${this.size}\". Must be one of \"${WcsEditableFieldSizeValues.join(', ')}\"`);\n this.size = \"m\"; // Default fallback value\n }\n this.currentValue = this.value;\n }\n\n componentDidRender() {\n const assignedElements = (this.el.shadowRoot.querySelector('slot') as HTMLSlotElement).assignedElements();\n switch (this.type) {\n case 'input':\n this.initWithInput(assignedElements);\n break;\n case 'textarea':\n this.initWithTextArea(assignedElements);\n break;\n case 'select':\n this.initWithSelect(assignedElements)\n break;\n }\n }\n\n private initWithInput(assignedElements: Element[]) {\n const element = assignedElements.filter(x => {\n return x.tagName === 'WCS-INPUT'\n })[0];\n if (!element) throw new Error('You must provide a slotted input element to handle edition');\n this.spiedElement = element as HTMLElement;\n this.addChangeHandlerForWcsComponents(this.spiedElement);\n this.spiedElement.addEventListener('keydown', (event: KeyboardEvent) => {\n if (event.key === 'Enter') {\n this.sendCurrentValue();\n }\n if (event.key === 'Escape') {\n this.discardChanges();\n }\n })\n }\n\n private initWithTextArea(assignedElements: Element[]) {\n const element = assignedElements.filter(x => {\n return x.tagName === 'WCS-TEXTAREA'\n })[0];\n if (!element) throw new Error('You must provide a slotted textarea element to handle edition');\n this.spiedElement = element as HTMLElement;\n this.addChangeHandlerForWcsComponents(this.spiedElement);\n this.spiedElement.addEventListener('keydown', (event: KeyboardEvent) => {\n if (event.key === 'Enter' && event.ctrlKey) {\n this.sendCurrentValue();\n }\n if (event.key === 'Escape') {\n this.discardChanges();\n }\n })\n }\n\n private initWithSelect(assignedElements: Element[]) {\n const element = assignedElements.filter(x => {\n return x.tagName === 'WCS-SELECT'\n })[0];\n if (!element) throw new Error('You must provide a slotted select element to handle edition');\n this.spiedElement = element as HTMLElement;\n this.addChangeHandlerForWcsComponents(this.spiedElement);\n }\n\n /**\n * This method subscribes the component to the change events produced by the other WCS components\n * (provided by the user in slot)\n * @private\n */\n private addChangeHandlerForWcsComponents(elt: HTMLElement) {\n elt.addEventListener('wcsChange', (event: CustomEvent) => {\n event.stopImmediatePropagation();\n this.currentValue = event.detail.value;\n if (this.validateFn) {\n this.isError = !this.validateFn(this.currentValue);\n }\n });\n }\n\n\n private sendCurrentValue() {\n if (this.currentState === EditableComponentState.EDIT) {\n if (this.value === this.currentValue) {\n this.currentState = EditableComponentState.DISPLAY\n } else {\n this.isError = this.validateFn ? !this.validateFn(this.currentValue) : false;\n if (!this.isError) {\n this.currentState = EditableComponentState.LOAD;\n this.wcsChange.emit({\n newValue: this.currentValue,\n successHandler: () => this.forceDisplayStateAndValidate(),\n errorhandler: () => this.errorHandler()\n });\n }\n }\n }\n }\n\n private discardChanges() {\n this.currentValue = this.value;\n this.currentState = EditableComponentState.DISPLAY;\n this.isError = false;\n }\n\n\n forceDisplayStateAndValidate() {\n if (this.currentState === EditableComponentState.LOAD) {\n this.value = this.currentValue;\n this.currentState = EditableComponentState.DISPLAY;\n } else {\n throw new Error('You cannot set display state from ' + EditableComponentState[this.currentState] + ' state');\n }\n }\n\n @Listen('click', {target: 'window'})\n onWindowClickEvent(event: MouseEvent) {\n if (!this.clickInsideComponent(event)) {\n if (this.currentState === EditableComponentState.EDIT) {\n if (this.isError) {\n this.discardChanges();\n } else {\n this.sendCurrentValue();\n }\n }\n }\n }\n\n private clickInsideComponent(event: MouseEvent) {\n return event.x >= this.el.getBoundingClientRect().x && event.x <= this.el.getBoundingClientRect().x + this.el.getBoundingClientRect().width\n && event.y >= this.el.getBoundingClientRect().y && event.y <= this.el.getBoundingClientRect().y + this.el.getBoundingClientRect().height;\n }\n\n /**\n * discard changes and force component state to DISPLAY\n * <br/>\n * This method must be call when component is in LOAD state\n */\n\n errorHandler() {\n this.discardChanges();\n }\n\n @Watch('value')\n onValueChange(): void {\n this.currentState = EditableComponentState.DISPLAY;\n }\n\n private onDisplayContainerClick() {\n if (this.currentState === EditableComponentState.DISPLAY && this.readonly === false) {\n this.currentState = EditableComponentState.EDIT;\n // fixme: why this attr is never read?\n // this.ignoreNextChangeEvent = true;\n this.spiedElement['value'] = this.currentValue;\n if (this.validateFn) {\n this.isError = !this.validateFn(this.currentValue);\n }\n // We wait until the element is displayed on the page otherwise the focus does not work\n const DELAY_FOR_RENDER = 20;\n setTimeout(() => {\n if (this.type === 'input') {\n (this.spiedElement as HTMLWcsInputElement).setFocus();\n } else if (this.type === 'textarea') {\n (this.spiedElement as HTMLWcsTextareaElement).fitContent();\n (this.spiedElement as HTMLWcsTextareaElement).setFocus();\n }\n }, DELAY_FOR_RENDER)\n }\n }\n\n render(): any {\n const {formattedValue, formattedCurrentValue} = this.formatValues();\n return (\n <Host>\n <div class=\"label\">{this.label}</div>\n <div\n class={'display-container ' + (this.currentState !== EditableComponentState.DISPLAY ? 'display-none' : '')}\n onClick={() => this.onDisplayContainerClick()}>\n {formattedValue}\n <wcs-mat-icon icon=\"edit\" size=\"s\"></wcs-mat-icon>\n {this.readonly ? this.getReadonlySvgIcon() : null}\n </div>\n <div\n class={'load-container ' + (this.currentState !== EditableComponentState.LOAD ? 'display-none' : '')}>\n {formattedCurrentValue}\n <wcs-spinner></wcs-spinner>\n </div>\n <wcs-form-field is-error={this.isError}\n class={'edit-container ' + (this.currentState !== EditableComponentState.EDIT ? 'display-none' : '')}>\n <slot/>\n {\n this.isError && this.errorMsg\n ? <wcs-error>{this.errorMsg}</wcs-error>\n : null\n }\n </wcs-form-field>\n </Host>\n );\n }\n\n private getReadonlySvgIcon() {\n return <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"24\" viewBox=\"0 0 27 25\"\n class=\"readonly-icon\">\n <path d=\"M26.79,25.05H1.21a.73.73,0,0,0,0,1.45H26.79a.73.73,0,0,0,0-1.45Z\"\n transform=\"translate(-0.5 -1.5)\"/>\n <path\n d=\"M19.8,8.87h-.61V6.73a5.23,5.23,0,0,0-10.46,0V8.87H8.2a1.63,1.63,0,0,0-1.63,1.62V21.32A1.62,1.62,0,0,0,8.2,22.94H19.8a1.62,1.62,0,0,0,1.63-1.62V10.49A1.63,1.63,0,0,0,19.8,8.87ZM10.93,6.73a3,3,0,1,1,6.06,0V8.87H10.93Zm3,14.15a5,5,0,1,1,5-5A5,5,0,0,1,14,20.88Z\"\n transform=\"translate(-0.5 -1.5)\"/>\n <path\n d=\"M14,12.62a3.29,3.29,0,1,0,3.29,3.29A3.29,3.29,0,0,0,14,12.62Zm0,4.75a1.47,1.47,0,1,1,1.47-1.46A1.46,1.46,0,0,1,14,17.37Z\"\n transform=\"translate(-0.5 -1.5)\"/>\n </svg>;\n }\n\n private formatValues() {\n let formattedValue = this.value;\n let formattedCurrentValue = this.currentValue;\n if (this.formatFn) {\n formattedValue = this.formatFn(this.value);\n formattedCurrentValue = this.formatFn(this.currentValue);\n }\n if (Array.isArray(this.value)) {\n formattedValue = this.value.join(', ');\n }\n if (Array.isArray(this.currentValue)) {\n formattedCurrentValue = this.currentValue.join(', ');\n }\n return {\n formattedValue: (formattedValue ? (<span>{formattedValue}</span>) : (<span></span>)),\n formattedCurrentValue: (formattedCurrentValue ? (<span>{formattedCurrentValue}</span>) : (<span></span>))\n };\n }\n}\n"]}
1
+ {"version":3,"file":"editable-field.js","sourceRoot":"","sources":["../../../src/components/editable-field/editable-field.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n ComponentInterface,\n EventEmitter,\n h,\n Prop,\n Event,\n State,\n Host,\n Element,\n Watch, Listen\n} from '@stencil/core';\nimport {\n EditableComponentUpdateEvent,\n EditableFieldType,\n FormatFn,\n isWcsEditableFieldSize,\n ValidateFn,\n WcsEditableFieldSize,\n WcsEditableFieldSizeValues\n} from './editable-field-interface';\n\nenum EditableComponentState {\n DISPLAY,\n EDIT,\n LOAD\n}\n\n@Component({\n tag: 'wcs-editable-field',\n styleUrl: 'editable-field.scss',\n shadow: true\n})\nexport class EditableField implements ComponentInterface {\n @Element() private el!: HTMLWcsEditableFieldElement;\n\n @State() private currentState: EditableComponentState = EditableComponentState.DISPLAY;\n /**\n * Specifies which component is used for editing\n */\n @Prop() type: EditableFieldType = 'input';\n /**\n * Label of the field\n */\n @Prop() label!: string;\n /**\n * event called at each (valid) update of the field.\n */\n @Event() wcsChange!: EventEmitter<EditableComponentUpdateEvent>;\n /**\n * Specify whether the field is editable or not\n */\n @Prop() readonly: boolean = false;\n /**\n * Initial value of the field\n */\n @Prop({mutable: true}) value: any;\n /**\n * Function to customize the validation of the data during the update\n */\n @Prop() validateFn: ValidateFn<any>;\n /**\n * Function used to format the value\n */\n @Prop() formatFn: FormatFn<any>;\n\n /**\n * Error message displayed under the field if validation failed.\n */\n @Prop() errorMsg: string = null;\n\n /**\n * Specify the size (height) of the editable field.\n */\n @Prop({reflect: true}) size: WcsEditableFieldSize = 'm';\n\n @State() private isError: boolean = false;\n\n // fixme: why this attr is never read?\n // ignoreNextChangeEvent: boolean = false;\n private spiedElement: HTMLElement = null;\n private currentValue: any = null;\n\n componentWillLoad(): Promise<void> | void {\n if(!isWcsEditableFieldSize(this.size)) {\n console.error(`Invalid size value for wcs-editable-field : \"${this.size}\". Must be one of \"${WcsEditableFieldSizeValues.join(', ')}\"`);\n this.size = \"m\"; // Default fallback value\n }\n this.currentValue = this.value;\n }\n\n componentDidRender() {\n const assignedElements = (this.el.shadowRoot.querySelector('slot') as HTMLSlotElement).assignedElements();\n switch (this.type) {\n case 'input':\n this.initWithInput(assignedElements);\n break;\n case 'textarea':\n this.initWithTextArea(assignedElements);\n break;\n case 'select':\n this.initWithSelect(assignedElements)\n break;\n }\n }\n\n private initWithInput(assignedElements: Element[]) {\n const element = assignedElements.filter(x => {\n return x.tagName === 'WCS-INPUT'\n })[0];\n if (!element) throw new Error('You must provide a slotted input element to handle edition');\n this.spiedElement = element as HTMLElement;\n this.addInputHandlerForWcsComponents(this.spiedElement);\n this.spiedElement.addEventListener('keydown', (event: KeyboardEvent) => {\n if (event.key === 'Enter') {\n this.sendCurrentValue();\n }\n if (event.key === 'Escape') {\n this.discardChanges();\n }\n })\n }\n\n private initWithTextArea(assignedElements: Element[]) {\n const element = assignedElements.filter(x => {\n return x.tagName === 'WCS-TEXTAREA'\n })[0];\n if (!element) throw new Error('You must provide a slotted textarea element to handle edition');\n this.spiedElement = element as HTMLElement;\n this.addInputHandlerForWcsComponents(this.spiedElement);\n this.spiedElement.addEventListener('keydown', (event: KeyboardEvent) => {\n if (event.key === 'Enter' && event.ctrlKey) {\n this.sendCurrentValue();\n }\n if (event.key === 'Escape') {\n this.discardChanges();\n }\n })\n }\n\n private initWithSelect(assignedElements: Element[]) {\n const element = assignedElements.filter(x => {\n return x.tagName === 'WCS-SELECT'\n })[0];\n if (!element) throw new Error('You must provide a slotted select element to handle edition');\n this.spiedElement = element as HTMLElement;\n this.addChangeHandlerForWcsComponents(this.spiedElement);\n }\n\n /**\n * This method subscribes the component to the change events produced by the other WCS components\n * (provided by the user in slot)\n * @param elt the element to subscribe to\n * @private\n */\n private addChangeHandlerForWcsComponents(elt: HTMLElement) {\n elt.addEventListener('wcsChange', (event: CustomEvent) => {\n event.stopImmediatePropagation();\n this.currentValue = event.detail.value;\n if (this.validateFn) {\n this.isError = !this.validateFn(this.currentValue);\n }\n });\n }\n\n /**\n * This method subscribes the component to the input events produced by the other WCS components\n * @param elt the element to subscribe to\n * @private\n */\n private addInputHandlerForWcsComponents(elt: HTMLElement) {\n elt.addEventListener('wcsInput', (event: CustomEvent) => {\n event.stopImmediatePropagation();\n this.currentValue = event.detail.target.value;\n if (this.validateFn) {\n this.isError = !this.validateFn(this.currentValue);\n }\n });\n }\n\n private sendCurrentValue() {\n if (this.currentState === EditableComponentState.EDIT) {\n if (this.value === this.currentValue) {\n this.currentState = EditableComponentState.DISPLAY\n } else {\n this.isError = this.validateFn ? !this.validateFn(this.currentValue) : false;\n if (!this.isError) {\n this.currentState = EditableComponentState.LOAD;\n this.wcsChange.emit({\n newValue: this.currentValue,\n successHandler: () => this.forceDisplayStateAndValidate(),\n errorhandler: () => this.errorHandler()\n });\n }\n }\n }\n }\n\n private discardChanges() {\n this.currentValue = this.value;\n this.currentState = EditableComponentState.DISPLAY;\n this.isError = false;\n }\n\n\n forceDisplayStateAndValidate() {\n if (this.currentState === EditableComponentState.LOAD) {\n this.value = this.currentValue;\n this.currentState = EditableComponentState.DISPLAY;\n } else {\n throw new Error('You cannot set display state from ' + EditableComponentState[this.currentState] + ' state');\n }\n }\n\n @Listen('click', {target: 'window'})\n onWindowClickEvent(event: MouseEvent) {\n if (!this.clickInsideComponent(event)) {\n if (this.currentState === EditableComponentState.EDIT) {\n if (this.isError) {\n this.discardChanges();\n } else {\n this.sendCurrentValue();\n }\n }\n }\n }\n\n private clickInsideComponent(event: MouseEvent) {\n return event.x >= this.el.getBoundingClientRect().x && event.x <= this.el.getBoundingClientRect().x + this.el.getBoundingClientRect().width\n && event.y >= this.el.getBoundingClientRect().y && event.y <= this.el.getBoundingClientRect().y + this.el.getBoundingClientRect().height;\n }\n\n /**\n * discard changes and force component state to DISPLAY\n * <br/>\n * This method must be call when component is in LOAD state\n */\n\n errorHandler() {\n this.discardChanges();\n }\n\n @Watch('value')\n onValueChange(): void {\n this.currentState = EditableComponentState.DISPLAY;\n }\n\n private onDisplayContainerClick() {\n if (this.currentState === EditableComponentState.DISPLAY && this.readonly === false) {\n this.currentState = EditableComponentState.EDIT;\n // fixme: why this attr is never read?\n // this.ignoreNextChangeEvent = true;\n this.spiedElement['value'] = this.currentValue;\n if (this.validateFn) {\n this.isError = !this.validateFn(this.currentValue);\n }\n // We wait until the element is displayed on the page otherwise the focus does not work\n const DELAY_FOR_RENDER = 20;\n setTimeout(() => {\n if (this.type === 'input') {\n (this.spiedElement as HTMLWcsInputElement).setFocus();\n } else if (this.type === 'textarea') {\n (this.spiedElement as HTMLWcsTextareaElement).fitContent();\n (this.spiedElement as HTMLWcsTextareaElement).setFocus();\n }\n }, DELAY_FOR_RENDER)\n }\n }\n\n render(): any {\n const {formattedValue, formattedCurrentValue} = this.formatValues();\n return (\n <Host>\n <div class=\"label\">{this.label}</div>\n <div\n class={'display-container ' + (this.currentState !== EditableComponentState.DISPLAY ? 'display-none' : '')}\n onClick={() => this.onDisplayContainerClick()}>\n {formattedValue}\n <wcs-mat-icon icon=\"edit\" size=\"s\"></wcs-mat-icon>\n {this.readonly ? this.getReadonlySvgIcon() : null}\n </div>\n <div\n class={'load-container ' + (this.currentState !== EditableComponentState.LOAD ? 'display-none' : '')}>\n {formattedCurrentValue}\n <wcs-spinner></wcs-spinner>\n </div>\n <wcs-form-field is-error={this.isError}\n class={'edit-container ' + (this.currentState !== EditableComponentState.EDIT ? 'display-none' : '')}>\n <slot/>\n {\n this.isError && this.errorMsg\n ? <wcs-error>{this.errorMsg}</wcs-error>\n : null\n }\n </wcs-form-field>\n </Host>\n );\n }\n\n private getReadonlySvgIcon() {\n return <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"24\" viewBox=\"0 0 27 25\"\n class=\"readonly-icon\">\n <path d=\"M26.79,25.05H1.21a.73.73,0,0,0,0,1.45H26.79a.73.73,0,0,0,0-1.45Z\"\n transform=\"translate(-0.5 -1.5)\"/>\n <path\n d=\"M19.8,8.87h-.61V6.73a5.23,5.23,0,0,0-10.46,0V8.87H8.2a1.63,1.63,0,0,0-1.63,1.62V21.32A1.62,1.62,0,0,0,8.2,22.94H19.8a1.62,1.62,0,0,0,1.63-1.62V10.49A1.63,1.63,0,0,0,19.8,8.87ZM10.93,6.73a3,3,0,1,1,6.06,0V8.87H10.93Zm3,14.15a5,5,0,1,1,5-5A5,5,0,0,1,14,20.88Z\"\n transform=\"translate(-0.5 -1.5)\"/>\n <path\n d=\"M14,12.62a3.29,3.29,0,1,0,3.29,3.29A3.29,3.29,0,0,0,14,12.62Zm0,4.75a1.47,1.47,0,1,1,1.47-1.46A1.46,1.46,0,0,1,14,17.37Z\"\n transform=\"translate(-0.5 -1.5)\"/>\n </svg>;\n }\n\n private formatValues() {\n let formattedValue = this.value;\n let formattedCurrentValue = this.currentValue;\n if (this.formatFn) {\n formattedValue = this.formatFn(this.value);\n formattedCurrentValue = this.formatFn(this.currentValue);\n }\n if (Array.isArray(this.value)) {\n formattedValue = this.value.join(', ');\n }\n if (Array.isArray(this.currentValue)) {\n formattedCurrentValue = this.currentValue.join(', ');\n }\n return {\n formattedValue: (formattedValue ? (<span>{formattedValue}</span>) : (<span></span>)),\n formattedCurrentValue: (formattedCurrentValue ? (<span>{formattedCurrentValue}</span>) : (<span></span>))\n };\n }\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import { h, Host } from '@stencil/core';
2
2
  export class Label {
3
3
  render() {
4
- return (h(Host, { slot: "error" }, h("slot", null)));
4
+ return (h(Host, { "aria-live": "polite", "aria-atomic": "true", slot: "error" }, h("slot", null)));
5
5
  }
6
6
  static get is() { return "wcs-error"; }
7
7
  static get encapsulation() { return "shadow"; }
@@ -1 +1 @@
1
- {"version":3,"file":"error.js","sourceRoot":"","sources":["../../../src/components/error/error.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAsB,CAAC,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAOvE,MAAM,OAAO,KAAK;EACd,MAAM;IACF,OAAO,CACH,EAAC,IAAI,IAAC,IAAI,EAAC,OAAO;MACd,eAAQ,CACL,CACV,CAAC;EACN,CAAC;;;;;;;;;CACJ","sourcesContent":["import { Component, ComponentInterface, h, Host } from '@stencil/core';\n\n@Component({\n tag: 'wcs-error',\n styleUrl: 'error.scss',\n shadow: true,\n})\nexport class Label implements ComponentInterface {\n render() {\n return (\n <Host slot=\"error\">\n <slot />\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"error.js","sourceRoot":"","sources":["../../../src/components/error/error.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAsB,CAAC,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAOvE,MAAM,OAAO,KAAK;EACd,MAAM;IACF,OAAO,CACH,EAAC,IAAI,iBAAW,QAAQ,iBAAa,MAAM,EAAC,IAAI,EAAC,OAAO;MACpD,eAAQ,CACL,CACV,CAAC;EACN,CAAC;;;;;;;;;CACJ","sourcesContent":["import { Component, ComponentInterface, h, Host } from '@stencil/core';\n\n@Component({\n tag: 'wcs-error',\n styleUrl: 'error.scss',\n shadow: true,\n})\nexport class Label implements ComponentInterface {\n render() {\n return (\n <Host aria-live=\"polite\" aria-atomic=\"true\" slot=\"error\">\n <slot />\n </Host>\n );\n }\n}\n"]}
@@ -1,4 +1,5 @@
1
1
  import { h, Host } from '@stencil/core';
2
+ import { isMutableAriaAttribute } from "../../utils/mutable-aria-attribute";
2
3
  /**
3
4
  * TODO:
4
5
  * - [ ] Suffix button style
@@ -21,6 +22,7 @@ export class FormField {
21
22
  }
22
23
  isErrorChange(newValue) {
23
24
  this.updateErrorStateOnInput(newValue);
25
+ this.updateAriaAttributes();
24
26
  }
25
27
  updateErrorStateOnInput(newValue) {
26
28
  if (this.spiedElementIsOfType('wcs-input', 'wcs-textarea')) {
@@ -78,6 +80,34 @@ export class FormField {
78
80
  return;
79
81
  }
80
82
  }
83
+ updateAriaAttributes() {
84
+ if (isMutableAriaAttribute(this.spiedElement)) {
85
+ this.spiedElement.setAriaAttribute('aria-label', this.label);
86
+ // Sur les autres DS, généralement seul l'erreur est affichée et pas avec la description
87
+ if (this.isError) {
88
+ if (this.error)
89
+ this.spiedElement.setAriaAttribute('aria-description', this.error);
90
+ this.spiedElement.setAriaAttribute('aria-invalid', 'true');
91
+ }
92
+ else {
93
+ if (this.description)
94
+ this.spiedElement.setAriaAttribute('aria-description', this.description);
95
+ this.spiedElement.setAriaAttribute('aria-invalid', 'false');
96
+ }
97
+ }
98
+ }
99
+ get label() {
100
+ var _a;
101
+ return (_a = this.el.querySelector('wcs-label')) === null || _a === void 0 ? void 0 : _a.textContent;
102
+ }
103
+ get description() {
104
+ var _a;
105
+ return (_a = this.el.querySelector('wcs-hint')) === null || _a === void 0 ? void 0 : _a.textContent;
106
+ }
107
+ get error() {
108
+ var _a;
109
+ return (_a = this.el.querySelector('wcs-error')) === null || _a === void 0 ? void 0 : _a.textContent;
110
+ }
81
111
  updateLabelRequiredFlag(isRequired, label) {
82
112
  if (isRequired && label) {
83
113
  label.setAttribute('required', 'true');
@@ -103,6 +133,7 @@ export class FormField {
103
133
  }
104
134
  onFormInputSlotChange() {
105
135
  this.initSpiedElement();
136
+ this.updateAriaAttributes();
106
137
  this.addRequiredMarkerToLabel();
107
138
  this.updateErrorStateOnInput(this.isError);
108
139
  }
@@ -1 +1 @@
1
- {"version":3,"file":"form-field.js","sourceRoot":"","sources":["../../../src/components/form-field/form-field.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, ComponentInterface, Element, h, Host, Prop, State, Watch } from '@stencil/core';\n\n/**\n * TODO:\n * - [ ] Suffix button style\n */\n@Component({\n tag: 'wcs-form-field',\n styleUrl: 'form-field.scss',\n shadow: true,\n})\nexport class FormField implements ComponentInterface {\n @Element() private el!: HTMLWcsFormFieldElement;\n\n /**\n * Specifies whether the form field is in an error state. Displays the field border in red and the message contained in the wcs-error component\n */\n @Prop({mutable: true, reflect: true}) isError = false;\n\n @State() private hasPrefix = false;\n @State() private hasSuffix = false;\n @State() private spiedElement: Element;\n\n private observer: MutationObserver;\n\n componentWillLoad() {\n this.hasSuffix = this.el.querySelector('wcs-button') !== null;\n this.hasPrefix = this.el.querySelector('wcs-select') !== null;\n }\n\n componentDidLoad() {\n this.initSpiedElement();\n this.addRequiredMarkerToLabel();\n this.updateErrorStateOnInput(this.isError);\n }\n\n\n @Watch('isError')\n // @ts-ignore\n private isErrorChange(newValue: boolean) {\n this.updateErrorStateOnInput(newValue);\n }\n\n private updateErrorStateOnInput(newValue: boolean) {\n if (this.spiedElementIsOfType('wcs-input', 'wcs-textarea')) {\n if (newValue) {\n this.spiedElement.setAttribute('state', 'error');\n } else {\n this.spiedElement.setAttribute('state', 'initial');\n }\n }\n }\n\n /**\n * This function return true if the form field contains an element with tagName matches a value of the types param\n * @param types\n * @private\n */\n private spiedElementIsOfType(...types: string[]): boolean {\n for (const type of types) {\n if (this.spiedElement?.tagName === type.toUpperCase()) return true;\n }\n return false\n }\n\n\n private addRequiredMarkerToLabel() {\n // TODO: deprecate this in favor of the 'required' component attribute\n const label = this.el.querySelector('wcs-label');\n this.observer = new MutationObserver(mutations => {\n const requiredAttMutation = mutations.filter(m => m.attributeName === 'required')[0];\n if (requiredAttMutation) {\n this.updateLabelRequiredFlag(this.spiedElement?.hasAttribute('required'), label);\n }\n });\n if (this.spiedElement) {\n this.observer.observe(this.spiedElement, {attributes: true});\n }\n\n const isRequired = this.spiedElement?.hasAttribute('required');\n this.updateLabelRequiredFlag(isRequired, label);\n }\n\n\n private initSpiedElement() {\n const SUPPORTED_COMPONENTS = ['wcs-input', 'wcs-select', 'wcs-textarea', 'wcs-radio-group', 'wcs-switch', 'wcs-checkbox', 'wcs-native-select', 'wcs-counter'];\n\n this.spiedElement = (this.el.shadowRoot.querySelector('slot:not([name])') as HTMLSlotElement)\n ?.assignedElements()\n .filter(n => [...SUPPORTED_COMPONENTS, 'SLOT'].map(x => x.toUpperCase()).indexOf(n.nodeName) !== -1)[0];\n\n // If the component is used in another web component\n if (this.spiedElement?.tagName === 'SLOT') {\n this.spiedElement = ((this.spiedElement as HTMLSlotElement)\n .assignedElements()\n .filter(n => SUPPORTED_COMPONENTS.map(x => x.toUpperCase()).indexOf(n.nodeName) !== -1)[0]) as HTMLElement;\n }\n\n if (!this.spiedElement) {\n // tslint:disable-next-line:no-console\n console.warn('Form-field component support only ' + SUPPORTED_COMPONENTS.toString() + '. Some features may not work with the provided component.');\n return;\n }\n }\n\n private updateLabelRequiredFlag(isRequired: boolean, label: Element) {\n if (isRequired && label) {\n label.setAttribute('required', 'true');\n } else if (!isRequired && label) {\n label.removeAttribute('required');\n }\n }\n\n disconnectedCallback() {\n this.observer?.disconnect();\n }\n\n render() {\n let classes = '';\n const isError = this.isError;\n\n if (this.hasSuffix) {\n classes += ' has-suffix';\n }\n if (this.hasPrefix) {\n classes += ' has-prefix';\n }\n return (\n <Host class={classes}>\n <slot name=\"label\"/>\n <div class=\"input-container\">\n <slot name=\"prefix\"/>\n <slot onSlotchange={() => this.onFormInputSlotChange()}/>\n <slot name=\"suffix\"/>\n </div>\n {\n isError ? (<slot name=\"error\"/>) : ''\n }\n <slot name=\"messages\"/>\n </Host>\n );\n }\n\n private onFormInputSlotChange() {\n this.initSpiedElement();\n this.addRequiredMarkerToLabel();\n this.updateErrorStateOnInput(this.isError);\n }\n}\n"]}
1
+ {"version":3,"file":"form-field.js","sourceRoot":"","sources":["../../../src/components/form-field/form-field.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, ComponentInterface, Element, h, Host, Prop, State, Watch } from '@stencil/core';\nimport { isMutableAriaAttribute } from \"../../utils/mutable-aria-attribute\";\n\n/**\n * TODO:\n * - [ ] Suffix button style\n */\n@Component({\n tag: 'wcs-form-field',\n styleUrl: 'form-field.scss',\n shadow: true,\n})\nexport class FormField implements ComponentInterface {\n @Element() private el!: HTMLWcsFormFieldElement;\n\n /**\n * Specifies whether the form field is in an error state. Displays the field border in red and the message contained in the wcs-error component\n */\n @Prop({mutable: true, reflect: true}) isError = false;\n\n @State() private hasPrefix = false;\n @State() private hasSuffix = false;\n @State() private spiedElement: Element;\n\n private observer: MutationObserver;\n\n componentWillLoad() {\n this.hasSuffix = this.el.querySelector('wcs-button') !== null;\n this.hasPrefix = this.el.querySelector('wcs-select') !== null;\n }\n\n componentDidLoad() {\n this.initSpiedElement();\n this.addRequiredMarkerToLabel();\n this.updateErrorStateOnInput(this.isError);\n }\n\n\n @Watch('isError')\n // @ts-ignore\n private isErrorChange(newValue: boolean) {\n this.updateErrorStateOnInput(newValue);\n this.updateAriaAttributes();\n }\n\n private updateErrorStateOnInput(newValue: boolean) {\n if (this.spiedElementIsOfType('wcs-input', 'wcs-textarea')) {\n if (newValue) {\n this.spiedElement.setAttribute('state', 'error');\n } else {\n this.spiedElement.setAttribute('state', 'initial');\n }\n }\n }\n\n /**\n * This function return true if the form field contains an element with tagName matches a value of the types param\n * @param types\n * @private\n */\n private spiedElementIsOfType(...types: string[]): boolean {\n for (const type of types) {\n if (this.spiedElement?.tagName === type.toUpperCase()) return true;\n }\n return false\n }\n\n\n private addRequiredMarkerToLabel() {\n // TODO: deprecate this in favor of the 'required' component attribute\n const label = this.el.querySelector('wcs-label');\n this.observer = new MutationObserver(mutations => {\n const requiredAttMutation = mutations.filter(m => m.attributeName === 'required')[0];\n if (requiredAttMutation) {\n this.updateLabelRequiredFlag(this.spiedElement?.hasAttribute('required'), label);\n }\n });\n if (this.spiedElement) {\n this.observer.observe(this.spiedElement, {attributes: true});\n }\n\n const isRequired = this.spiedElement?.hasAttribute('required');\n this.updateLabelRequiredFlag(isRequired, label);\n }\n\n\n private initSpiedElement() {\n const SUPPORTED_COMPONENTS = ['wcs-input', 'wcs-select', 'wcs-textarea', 'wcs-radio-group', 'wcs-switch', 'wcs-checkbox', 'wcs-native-select', 'wcs-counter'];\n\n this.spiedElement = (this.el.shadowRoot.querySelector('slot:not([name])') as HTMLSlotElement)\n ?.assignedElements()\n .filter(n => [...SUPPORTED_COMPONENTS, 'SLOT'].map(x => x.toUpperCase()).indexOf(n.nodeName) !== -1)[0];\n\n // If the component is used in another web component\n if (this.spiedElement?.tagName === 'SLOT') {\n this.spiedElement = ((this.spiedElement as HTMLSlotElement)\n .assignedElements()\n .filter(n => SUPPORTED_COMPONENTS.map(x => x.toUpperCase()).indexOf(n.nodeName) !== -1)[0]) as HTMLElement;\n }\n\n if (!this.spiedElement) {\n // tslint:disable-next-line:no-console\n console.warn('Form-field component support only ' + SUPPORTED_COMPONENTS.toString() + '. Some features may not work with the provided component.');\n return;\n }\n }\n \n private updateAriaAttributes(): void {\n if(isMutableAriaAttribute(this.spiedElement)) {\n this.spiedElement.setAriaAttribute('aria-label', this.label);\n\n // Sur les autres DS, généralement seul l'erreur est affichée et pas avec la description\n if(this.isError) {\n if(this.error) this.spiedElement.setAriaAttribute('aria-description', this.error);\n this.spiedElement.setAriaAttribute('aria-invalid', 'true');\n } else {\n if(this.description) this.spiedElement.setAriaAttribute('aria-description', this.description);\n this.spiedElement.setAriaAttribute('aria-invalid', 'false');\n }\n }\n }\n \n private get label() {\n return this.el.querySelector('wcs-label')?.textContent;\n }\n \n private get description() {\n return this.el.querySelector('wcs-hint')?.textContent;\n }\n \n private get error() {\n return this.el.querySelector('wcs-error')?.textContent;\n }\n\n private updateLabelRequiredFlag(isRequired: boolean, label: Element) {\n if (isRequired && label) {\n label.setAttribute('required', 'true');\n } else if (!isRequired && label) {\n label.removeAttribute('required');\n }\n }\n\n disconnectedCallback() {\n this.observer?.disconnect();\n }\n\n render() {\n let classes = '';\n const isError = this.isError;\n\n if (this.hasSuffix) {\n classes += ' has-suffix';\n }\n if (this.hasPrefix) {\n classes += ' has-prefix';\n }\n return (\n <Host class={classes}>\n <slot name=\"label\"/>\n <div class=\"input-container\">\n <slot name=\"prefix\"/>\n <slot onSlotchange={() => this.onFormInputSlotChange()}/>\n <slot name=\"suffix\"/>\n </div>\n {\n isError ? (<slot name=\"error\"/>) : ''\n }\n <slot name=\"messages\"/>\n </Host>\n );\n }\n\n private onFormInputSlotChange() {\n this.initSpiedElement();\n this.updateAriaAttributes()\n this.addRequiredMarkerToLabel();\n this.updateErrorStateOnInput(this.isError);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"grid-interface.js","sourceRoot":"","sources":["../../../src/components/grid/grid-interface.ts"],"names":[],"mappings":"AAmCA,MAAM,UAAU,mBAAmB,CAAC,SAAuB;EACvD,QAAQ,SAAS,EAAE;IACf,KAAK,KAAK;MACN,OAAO,CAAC,CAAC;IACb,KAAK,MAAM;MACP,OAAO,CAAC,CAAC,CAAC;IACd,KAAK,MAAM;MACP,MAAM;GACb;AACL,CAAC","sourcesContent":["import { VNode } from '@stencil/core';\n\nexport type WcsGridSelectionConfig = 'none' | 'single' | 'multiple';\n\nexport type WcsSortFn = (a: any, b: any, column: HTMLWcsGridColumnElement) => -1 | 0 | 1;\n\nexport type WcsCellFormatter = (_h: HyperFunc<VNode>, column: HTMLWcsGridColumnElement, rowData: WcsGridRowData) => HTMLElement | HTMLElement[];\n\nexport interface WcsGridColumnSortChangeEventDetails {\n sortFn: WcsSortFn;\n order: WcsSortOrder;\n column: HTMLWcsGridColumnElement;\n}\n\nexport interface WcsGridRowSelectedEventDetails {\n row: WcsGridRowData;\n}\n\nexport interface WcsGridAllRowSelectedEventDetails {\n rows: WcsGridRowData[];\n}\n\nexport type WcsGridPaginationConfig = {\n currentPage: number;\n pageSize: number;\n itemsCount: number;\n pageCount: number;\n};\n\nexport interface WcsGridPaginationChangeEventDetails {\n pagination: WcsGridPaginationConfig;\n}\n\nexport type WcsSortOrder = 'asc' | 'desc' | 'none';\n\nexport function getSortOrderInteger(sortOrder: WcsSortOrder) {\n switch (sortOrder) {\n case 'asc':\n return 1;\n case 'desc':\n return -1;\n case 'none':\n break;\n }\n}\n\nexport interface WcsGridRow {\n uuid: string;\n page?: number;\n selected?: boolean;\n data?: any;\n cells?: WcsGridCell[];\n}\n\nexport interface WcsGridCell {\n content: string | void;\n column: HTMLWcsGridColumnElement;\n formatter: (_h: HyperFunc<VNode>, column: HTMLWcsGridColumnElement, rowData: WcsGridRowData) => HTMLElement | HTMLElement[];\n}\n\nexport interface WcsGridRowData {\n page: number;\n selected: boolean;\n data: any;\n}\n\nexport interface HyperFunc<T> {\n (tag: any): T;\n}\n\nexport interface HyperFunc<T> {\n (tag: any, data: any): T;\n}\n\nexport interface HyperFunc<T> {\n (tag: any, text: string): T;\n}\n\nexport interface HyperFunc<T> {\n (sel: any, children: (T | undefined | null)[]): T;\n}\n\nexport interface HyperFunc<T> {\n (sel: any, data: any, text: string): T;\n}\n\nexport interface HyperFunc<T> {\n (sel: any, data: any, children: (T | undefined | null)[]): T;\n}\n\nexport interface HyperFunc<T> {\n (sel: any, data: any, children: T): T;\n}\n"]}
1
+ {"version":3,"file":"grid-interface.js","sourceRoot":"","sources":["../../../src/components/grid/grid-interface.ts"],"names":[],"mappings":"AA+CA,MAAM,UAAU,mBAAmB,CAAC,SAAuB;EACvD,QAAQ,SAAS,EAAE;IACf,KAAK,KAAK;MACN,OAAO,CAAC,CAAC;IACb,KAAK,MAAM;MACP,OAAO,CAAC,CAAC,CAAC;IACd,KAAK,MAAM;MACP,MAAM;GACb;AACL,CAAC","sourcesContent":["import { VNode } from '@stencil/core';\n\nexport type WcsGridSelectionConfig = 'none' | 'single' | 'multiple';\n\nexport type WcsSortFn = (a: any, b: any, column: HTMLWcsGridColumnElement) => -1 | 0 | 1;\n\nexport type WcsCellFormatter = (_h: HyperFunc<VNode>, column: HTMLWcsGridColumnElement, rowData: WcsGridRowData) => HTMLElement | HTMLElement[];\n\nexport interface WcsGridColumnSortChangeEventDetails {\n sortFn: WcsSortFn;\n order: WcsSortOrder;\n column: HTMLWcsGridColumnElement;\n}\n\n/**\n * Event details for the grid selection event\n */\nexport interface WcsGridSelectionEventDetails {\n /**\n * The currently selected rows after the selection change\n */\n selectedRows: WcsGridRowData[];\n /**\n * The row that was changed\n * If the grid is in multiple selection mode, you can get `allCheckbox` as the value representing that the event was\n * triggered by the selection of all checkbox\n */\n changedRow: WcsGridRowData | 'allCheckbox';\n}\n\nexport interface WcsGridAllRowSelectedEventDetails {\n rows: WcsGridRowData[];\n}\n\nexport type WcsGridPaginationConfig = {\n currentPage: number;\n pageSize: number;\n itemsCount: number;\n pageCount: number;\n};\n\nexport interface WcsGridPaginationChangeEventDetails {\n pagination: WcsGridPaginationConfig;\n}\n\nexport type WcsSortOrder = 'asc' | 'desc' | 'none';\n\nexport function getSortOrderInteger(sortOrder: WcsSortOrder) {\n switch (sortOrder) {\n case 'asc':\n return 1;\n case 'desc':\n return -1;\n case 'none':\n break;\n }\n}\n\nexport interface WcsGridRow {\n uuid: string;\n page?: number;\n selected?: boolean;\n data?: any;\n cells?: WcsGridCell[];\n}\n\nexport interface WcsGridCell {\n content: string | void;\n column: HTMLWcsGridColumnElement;\n formatter: (_h: HyperFunc<VNode>, column: HTMLWcsGridColumnElement, rowData: WcsGridRowData) => HTMLElement | HTMLElement[];\n}\n\nexport interface WcsGridRowData {\n page: number;\n selected: boolean;\n data: any;\n}\n\nexport interface HyperFunc<T> {\n (tag: any): T;\n}\n\nexport interface HyperFunc<T> {\n (tag: any, data: any): T;\n}\n\nexport interface HyperFunc<T> {\n (tag: any, text: string): T;\n}\n\nexport interface HyperFunc<T> {\n (sel: any, children: (T | undefined | null)[]): T;\n}\n\nexport interface HyperFunc<T> {\n (sel: any, data: any, text: string): T;\n}\n\nexport interface HyperFunc<T> {\n (sel: any, data: any, children: (T | undefined | null)[]): T;\n}\n\nexport interface HyperFunc<T> {\n (sel: any, data: any, children: T): T;\n}\n"]}
@@ -0,0 +1,52 @@
1
+ import { keyboardShortcutFromKeyboardEvent } from "../../utils/keyboard-event";
2
+ /**
3
+ * We follow this https://www.w3.org/WAI/ARIA/apg/patterns/grid/
4
+ * @param event
5
+ * @param type
6
+ */
7
+ export function getActionForKeyboardEvent(event, type) {
8
+ const keyboardShortcut = keyboardShortcutFromKeyboardEvent(event);
9
+ if (keyboardShortcut === 'UNKNOWN') {
10
+ return [];
11
+ }
12
+ switch (keyboardShortcut) {
13
+ case "UP_ARROW":
14
+ return [{ kind: 'FocusCell', target: 'up' }];
15
+ case "DOWN_ARROW":
16
+ return [{ kind: 'FocusCell', target: 'down' }];
17
+ case "LEFT_ARROW":
18
+ return [{ kind: 'FocusCell', target: 'left' }];
19
+ case "RIGHT_ARROW":
20
+ return [{ kind: 'FocusCell', target: 'right' }];
21
+ case "HOME":
22
+ return [{ kind: 'FocusCell', target: 'first_of_row' }];
23
+ case "END":
24
+ return [{ kind: 'FocusCell', target: 'last_of_row' }];
25
+ case "MAJ+SPACE":
26
+ switch (type) {
27
+ case "grid_selection_single":
28
+ case "grid_selection_multiple":
29
+ return [{ kind: 'SelectRow', target: 'one' }];
30
+ case "grid_no_selection":
31
+ break;
32
+ }
33
+ break;
34
+ case "CTRL+A":
35
+ switch (type) {
36
+ case "grid_selection_multiple":
37
+ return [{ kind: 'SelectRow', target: 'all' }];
38
+ case "grid_selection_single":
39
+ case "grid_no_selection":
40
+ break;
41
+ }
42
+ break;
43
+ case "CTRL+HOME":
44
+ return [{ kind: 'FocusCell', target: 'first_of_grid' }];
45
+ case "CTRL+END":
46
+ return [{ kind: 'FocusCell', target: 'last_of_grid' }];
47
+ default:
48
+ break;
49
+ }
50
+ return [];
51
+ }
52
+ //# sourceMappingURL=grid-keyboard-event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid-keyboard-event.js","sourceRoot":"","sources":["../../../src/components/grid/grid-keyboard-event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iCAAiC,EAAE,MAAM,4BAA4B,CAAC;AA0B/E;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CAAC,KAAoB,EAAE,IAA+E;EAC3I,MAAM,gBAAgB,GAAG,iCAAiC,CAAC,KAAK,CAAC,CAAC;EAElE,IAAG,gBAAgB,KAAK,SAAS,EAAE;IAC/B,OAAO,EAAE,CAAC;GACb;EAED,QAAQ,gBAAgB,EAAE;IACtB,KAAK,UAAU;MACX,OAAO,CAAC,EAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAC,CAAC,CAAC;IAC/C,KAAK,YAAY;MACb,OAAO,CAAC,EAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAC,CAAC,CAAC;IACjD,KAAK,YAAY;MACb,OAAO,CAAC,EAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAC,CAAC,CAAC;IACjD,KAAK,aAAa;MACd,OAAO,CAAC,EAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAC,CAAC,CAAC;IAClD,KAAK,MAAM;MACP,OAAO,CAAC,EAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,EAAC,CAAC,CAAC;IACzD,KAAK,KAAK;MACN,OAAO,CAAC,EAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAC,CAAC,CAAC;IACxD,KAAK,WAAW;MACZ,QAAQ,IAAI,EAAE;QACV,KAAK,uBAAuB,CAAC;QAC7B,KAAK,yBAAyB;UAC1B,OAAO,CAAC,EAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAC,CAAC,CAAC;QAChD,KAAK,mBAAmB;UACpB,MAAM;OACb;MACD,MAAM;IACV,KAAK,QAAQ;MACT,QAAQ,IAAI,EAAE;QACV,KAAK,yBAAyB;UAC1B,OAAO,CAAC,EAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAC,CAAC,CAAC;QAChD,KAAK,uBAAuB,CAAC;QAC7B,KAAK,mBAAmB;UACpB,MAAM;OACb;MACD,MAAM;IACV,KAAK,WAAW;MACZ,OAAO,CAAC,EAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,EAAC,CAAC,CAAC;IAC1D,KAAK,UAAU;MACX,OAAO,CAAC,EAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,EAAC,CAAC,CAAC;IACzD;MACI,MAAM;GACb;EAED,OAAO,EAAE,CAAC;AACd,CAAC","sourcesContent":["import { keyboardShortcutFromKeyboardEvent } from \"../../utils/keyboard-event\";\n\n\nexport type KeyboardEventAssociatedAction = FocusCell | SelectRow;\n\n// Possibles Shortcut\n// UP_ARROW : focus cell up\n// DOWN_ARROW : focus cell down\n// LEFT_ARROW : focus cell left\n// RIGHT_ARROW : focus cell right\n\n// HOME : focus first cell of the row\n// END : focus last cell of the row\n\n// CTRL+HOME : focus first cell of the grid\n// CTRL+END : focus first cell of the grid\n\n// IF SELECTION MULTIPLE OR SINGLE :\n// MAJ+SPACE : select (check) the current row\n\n// IF SELECTION MULTIPLE\n// CTRL+A : select (check) all rows\n\ntype FocusCell = {kind: 'FocusCell', target: 'up' | 'down' | 'left' | 'right' | 'first_of_row' | 'last_of_row' | 'first_of_grid' | 'last_of_grid'};\ntype SelectRow = {kind: 'SelectRow', target: 'one' | 'all'}\n\n/**\n * We follow this https://www.w3.org/WAI/ARIA/apg/patterns/grid/\n * @param event\n * @param type\n */\nexport function getActionForKeyboardEvent(event: KeyboardEvent, type: 'grid_no_selection' | 'grid_selection_single' | 'grid_selection_multiple'): KeyboardEventAssociatedAction[] {\n const keyboardShortcut = keyboardShortcutFromKeyboardEvent(event);\n\n if(keyboardShortcut === 'UNKNOWN') {\n return [];\n }\n\n switch (keyboardShortcut) {\n case \"UP_ARROW\":\n return [{kind: 'FocusCell', target: 'up'}];\n case \"DOWN_ARROW\":\n return [{kind: 'FocusCell', target: 'down'}];\n case \"LEFT_ARROW\":\n return [{kind: 'FocusCell', target: 'left'}];\n case \"RIGHT_ARROW\":\n return [{kind: 'FocusCell', target: 'right'}];\n case \"HOME\":\n return [{kind: 'FocusCell', target: 'first_of_row'}];\n case \"END\":\n return [{kind: 'FocusCell', target: 'last_of_row'}];\n case \"MAJ+SPACE\":\n switch (type) {\n case \"grid_selection_single\":\n case \"grid_selection_multiple\":\n return [{kind: 'SelectRow', target: 'one'}];\n case \"grid_no_selection\":\n break;\n }\n break;\n case \"CTRL+A\":\n switch (type) {\n case \"grid_selection_multiple\":\n return [{kind: 'SelectRow', target: 'all'}];\n case \"grid_selection_single\":\n case \"grid_no_selection\":\n break;\n }\n break;\n case \"CTRL+HOME\":\n return [{kind: 'FocusCell', target: 'first_of_grid'}];\n case \"CTRL+END\":\n return [{kind: 'FocusCell', target: 'last_of_grid'}];\n default:\n break;\n }\n\n return [];\n}\n"]}
@@ -20,6 +20,11 @@
20
20
  margin: 0;
21
21
  padding: calc(var(--wcs-padding) / 2) var(--wcs-padding);
22
22
  }
23
+ :host td:focus-visible {
24
+ outline: 2px dashed var(--wcs-primary);
25
+ outline-offset: 0;
26
+ border-radius: 0.1rem;
27
+ }
23
28
  :host tr:not(:last-child) td {
24
29
  border-bottom: solid 1px var(--wcs-text-light);
25
30
  }