@cds/core 6.0.0-next.6 → 6.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1049) hide show
  1. package/accordion/accordion-content.element.js.map +1 -1
  2. package/accordion/accordion-content.element.scss.js.map +1 -1
  3. package/accordion/accordion-header.element.js +1 -1
  4. package/accordion/accordion-header.element.js.map +1 -1
  5. package/accordion/accordion-header.element.scss.js.map +1 -1
  6. package/accordion/accordion-panel.element.js.map +1 -1
  7. package/accordion/accordion-panel.element.scss.js +1 -1
  8. package/accordion/accordion-panel.element.scss.js.map +1 -1
  9. package/accordion/accordion.element.js.map +1 -1
  10. package/accordion/accordion.element.scss.js.map +1 -1
  11. package/accordion/index.js.map +1 -1
  12. package/accordion/register.js.map +1 -1
  13. package/alert/alert-actions.element.js.map +1 -1
  14. package/alert/alert-actions.element.scss.js.map +1 -1
  15. package/alert/alert-group.element.js +1 -1
  16. package/alert/alert-group.element.js.map +1 -1
  17. package/alert/alert-group.element.scss.js +1 -1
  18. package/alert/alert-group.element.scss.js.map +1 -1
  19. package/alert/alert.element.d.ts +3 -4
  20. package/alert/alert.element.js +1 -1
  21. package/alert/alert.element.js.map +1 -1
  22. package/alert/alert.element.scss.js +1 -1
  23. package/alert/alert.element.scss.js.map +1 -1
  24. package/alert/alert.interfaces.js.map +1 -1
  25. package/alert/index.js.map +1 -1
  26. package/alert/register.js.map +1 -1
  27. package/badge/badge.element.js.map +1 -1
  28. package/badge/badge.element.scss.js +1 -1
  29. package/badge/badge.element.scss.js.map +1 -1
  30. package/badge/index.js.map +1 -1
  31. package/badge/register.js.map +1 -1
  32. package/breadcrumb/breadcrumb.element.d.ts +0 -1
  33. package/breadcrumb/breadcrumb.element.js.map +1 -1
  34. package/breadcrumb/breadcrumb.element.scss.js.map +1 -1
  35. package/breadcrumb/index.js.map +1 -1
  36. package/breadcrumb/register.js.map +1 -1
  37. package/button/button.element.js.map +1 -1
  38. package/button/button.element.scss.js +1 -1
  39. package/button/button.element.scss.js.map +1 -1
  40. package/button/icon-button.element.js.map +1 -1
  41. package/button/index.js.map +1 -1
  42. package/button/register.js.map +1 -1
  43. package/button-action/button-action.element.d.ts +7 -1
  44. package/button-action/button-action.element.js +1 -1
  45. package/button-action/button-action.element.js.map +1 -1
  46. package/button-action/button-action.element.scss.js +1 -1
  47. package/button-action/button-action.element.scss.js.map +1 -1
  48. package/button-action/index.js.map +1 -1
  49. package/button-action/register.js.map +1 -1
  50. package/button-expand/button-expand.element.d.ts +1 -1
  51. package/button-expand/button-expand.element.js +1 -1
  52. package/button-expand/button-expand.element.js.map +1 -1
  53. package/button-expand/button-expand.element.scss.js +1 -1
  54. package/button-expand/button-expand.element.scss.js.map +1 -1
  55. package/button-expand/index.js.map +1 -1
  56. package/button-expand/register.js.map +1 -1
  57. package/button-handle/button-handle.element.js.map +1 -1
  58. package/button-handle/button-handle.element.scss.js +1 -1
  59. package/button-handle/button-handle.element.scss.js.map +1 -1
  60. package/button-handle/index.js.map +1 -1
  61. package/button-handle/register.js.map +1 -1
  62. package/button-inline/button-inline.element.js.map +1 -1
  63. package/button-inline/button-inline.element.scss.js +1 -1
  64. package/button-inline/button-inline.element.scss.js.map +1 -1
  65. package/button-inline/index.js.map +1 -1
  66. package/button-inline/register.js.map +1 -1
  67. package/button-sort/button-sort.element.js.map +1 -1
  68. package/button-sort/button-sort.element.scss.js.map +1 -1
  69. package/button-sort/index.js.map +1 -1
  70. package/button-sort/register.js.map +1 -1
  71. package/button-sort/utils.js.map +1 -1
  72. package/card/card.element.d.ts +0 -1
  73. package/card/card.element.js.map +1 -1
  74. package/card/card.element.scss.js +1 -1
  75. package/card/card.element.scss.js.map +1 -1
  76. package/card/index.js.map +1 -1
  77. package/card/register.js.map +1 -1
  78. package/checkbox/checkbox-group.element.js.map +1 -1
  79. package/checkbox/checkbox.element.js.map +1 -1
  80. package/checkbox/checkbox.element.scss.js +1 -1
  81. package/checkbox/checkbox.element.scss.js.map +1 -1
  82. package/checkbox/index.js.map +1 -1
  83. package/checkbox/register.js.map +1 -1
  84. package/custom-elements.json +40772 -37342
  85. package/datalist/datalist.element.js +1 -1
  86. package/datalist/datalist.element.js.map +1 -1
  87. package/datalist/datalist.global.scss.js.map +1 -1
  88. package/datalist/index.js.map +1 -1
  89. package/datalist/register.js.map +1 -1
  90. package/date/date.element.js.map +1 -1
  91. package/date/date.global.scss.js.map +1 -1
  92. package/date/index.js.map +1 -1
  93. package/date/register.js.map +1 -1
  94. package/demo/data/demo.service.d.ts +6 -0
  95. package/demo/data/demo.service.js +2 -0
  96. package/demo/data/demo.service.js.map +1 -0
  97. package/demo/data/food.data.d.ts +2 -0
  98. package/demo/data/food.data.js +2 -0
  99. package/demo/data/food.data.js.map +1 -0
  100. package/demo/data/infrastructure.data.d.ts +2 -0
  101. package/demo/data/infrastructure.data.js +2 -0
  102. package/demo/data/infrastructure.data.js.map +1 -0
  103. package/demo/data/interfaces.d.ts +31 -0
  104. package/demo/data/interfaces.js +2 -0
  105. package/demo/data/interfaces.js.map +1 -0
  106. package/demo/data/system.data.d.ts +2 -0
  107. package/demo/data/system.data.js +2 -0
  108. package/demo/data/system.data.js.map +1 -0
  109. package/demo/index.d.ts +43 -0
  110. package/demo/index.js +2 -0
  111. package/demo/index.js.map +1 -0
  112. package/demo/utils.d.ts +67 -0
  113. package/demo/utils.js +2 -0
  114. package/demo/utils.js.map +1 -0
  115. package/divider/divider.element.d.ts +1 -1
  116. package/divider/divider.element.js.map +1 -1
  117. package/divider/divider.element.scss.js +1 -1
  118. package/divider/divider.element.scss.js.map +1 -1
  119. package/divider/index.js.map +1 -1
  120. package/divider/register.js.map +1 -1
  121. package/dropdown/dropdown.element.d.ts +3 -1
  122. package/dropdown/dropdown.element.js.map +1 -1
  123. package/dropdown/index.js.map +1 -1
  124. package/dropdown/register.d.ts +1 -0
  125. package/dropdown/register.js +1 -1
  126. package/dropdown/register.js.map +1 -1
  127. package/file/file.element.js.map +1 -1
  128. package/file/file.element.scss.js.map +1 -1
  129. package/file/index.js.map +1 -1
  130. package/file/register.js.map +1 -1
  131. package/forms/control/control.element.d.ts +1 -1
  132. package/forms/control/control.element.js +2 -2
  133. package/forms/control/control.element.js.map +1 -1
  134. package/forms/control/control.element.scss.js +1 -1
  135. package/forms/control/control.element.scss.js.map +1 -1
  136. package/forms/control-action/control-action.element.js.map +1 -1
  137. package/forms/control-group/control-group.element.d.ts +0 -3
  138. package/forms/control-group/control-group.element.js +1 -1
  139. package/forms/control-group/control-group.element.js.map +1 -1
  140. package/forms/control-group/control-group.element.scss.js +1 -1
  141. package/forms/control-group/control-group.element.scss.js.map +1 -1
  142. package/forms/control-inline/control-inline.element.d.ts +1 -1
  143. package/forms/control-inline/control-inline.element.js +1 -1
  144. package/forms/control-inline/control-inline.element.js.map +1 -1
  145. package/forms/control-inline/control-inline.element.scss.js.map +1 -1
  146. package/forms/control-label/control-label.element.js.map +1 -1
  147. package/forms/control-label/control-label.element.scss.js.map +1 -1
  148. package/forms/control-message/control-message.element.js.map +1 -1
  149. package/forms/control-message/control-message.element.scss.js.map +1 -1
  150. package/forms/form-group/form-group.element.js +1 -1
  151. package/forms/form-group/form-group.element.js.map +1 -1
  152. package/forms/form-group/form-group.element.scss.js.map +1 -1
  153. package/forms/index.js.map +1 -1
  154. package/forms/register.js.map +1 -1
  155. package/forms/utils/interfaces.js.map +1 -1
  156. package/forms/utils/utils.js.map +1 -1
  157. package/forms/utils/validate.js.map +1 -1
  158. package/global.css +116 -16
  159. package/global.min.css +1 -1
  160. package/grid/cell/grid-cell.element.d.ts +25 -0
  161. package/grid/cell/grid-cell.element.js +2 -0
  162. package/grid/cell/grid-cell.element.js.map +1 -0
  163. package/grid/cell/grid-cell.element.scss.js +2 -0
  164. package/grid/cell/grid-cell.element.scss.js.map +1 -0
  165. package/grid/column/grid-column-position.controller.d.ts +15 -0
  166. package/grid/column/grid-column-position.controller.js +2 -0
  167. package/grid/column/grid-column-position.controller.js.map +1 -0
  168. package/grid/column/grid-column-size.controller.d.ts +18 -0
  169. package/grid/column/grid-column-size.controller.js +2 -0
  170. package/grid/column/grid-column-size.controller.js.map +1 -0
  171. package/grid/column/grid-column.element.d.ts +53 -0
  172. package/grid/column/grid-column.element.js +2 -0
  173. package/grid/column/grid-column.element.js.map +1 -0
  174. package/grid/column/grid-column.element.scss.js +2 -0
  175. package/grid/column/grid-column.element.scss.js.map +1 -0
  176. package/grid/detail/grid-detail.element.d.ts +59 -0
  177. package/grid/detail/grid-detail.element.js +2 -0
  178. package/grid/detail/grid-detail.element.js.map +1 -0
  179. package/grid/detail/grid-detail.element.scss.js +2 -0
  180. package/grid/detail/grid-detail.element.scss.js.map +1 -0
  181. package/grid/footer/grid-footer.element.d.ts +36 -0
  182. package/grid/footer/grid-footer.element.js +2 -0
  183. package/grid/footer/grid-footer.element.js.map +1 -0
  184. package/grid/footer/grid-footer.element.scss.js +2 -0
  185. package/grid/footer/grid-footer.element.scss.js.map +1 -0
  186. package/grid/grid/grid-layout.controller.d.ts +31 -0
  187. package/grid/grid/grid-layout.controller.js +2 -0
  188. package/grid/grid/grid-layout.controller.js.map +1 -0
  189. package/grid/grid/grid.element.d.ts +73 -0
  190. package/grid/grid/grid.element.js +2 -0
  191. package/grid/grid/grid.element.js.map +1 -0
  192. package/grid/grid/grid.element.scss.js +2 -0
  193. package/grid/grid/grid.element.scss.js.map +1 -0
  194. package/grid/index.d.ts +8 -0
  195. package/grid/index.js +2 -0
  196. package/grid/index.js.map +1 -0
  197. package/grid/pagination/grid-pagination.element.d.ts +52 -0
  198. package/grid/pagination/grid-pagination.element.js +2 -0
  199. package/grid/pagination/grid-pagination.element.js.map +1 -0
  200. package/grid/pagination/grid-pagination.element.scss.js +2 -0
  201. package/grid/pagination/grid-pagination.element.scss.js.map +1 -0
  202. package/grid/placeholder/grid-placeholder.element.d.ts +36 -0
  203. package/grid/placeholder/grid-placeholder.element.js +2 -0
  204. package/grid/placeholder/grid-placeholder.element.js.map +1 -0
  205. package/grid/placeholder/grid-placeholder.element.scss.js +2 -0
  206. package/grid/placeholder/grid-placeholder.element.scss.js.map +1 -0
  207. package/grid/register.d.ts +23 -0
  208. package/grid/register.js +2 -0
  209. package/grid/register.js.map +1 -0
  210. package/grid/row/grid-row-position.controller.d.ts +9 -0
  211. package/grid/row/grid-row-position.controller.js +2 -0
  212. package/grid/row/grid-row-position.controller.js.map +1 -0
  213. package/grid/row/grid-row.element.d.ts +25 -0
  214. package/grid/row/grid-row.element.js +2 -0
  215. package/grid/row/grid-row.element.js.map +1 -0
  216. package/grid/row/grid-row.element.scss.js +2 -0
  217. package/grid/row/grid-row.element.scss.js.map +1 -0
  218. package/icon/collections/chart.js.map +1 -1
  219. package/icon/collections/commerce.js.map +1 -1
  220. package/icon/collections/core.js.map +1 -1
  221. package/icon/collections/essential.d.ts +2 -0
  222. package/icon/collections/essential.js +1 -1
  223. package/icon/collections/essential.js.map +1 -1
  224. package/icon/collections/media.js.map +1 -1
  225. package/icon/collections/mini.js.map +1 -1
  226. package/icon/collections/social.d.ts +2 -0
  227. package/icon/collections/social.js +1 -1
  228. package/icon/collections/social.js.map +1 -1
  229. package/icon/collections/technology.js.map +1 -1
  230. package/icon/collections/text-edit.js.map +1 -1
  231. package/icon/collections/travel.js.map +1 -1
  232. package/icon/icon.element.js +1 -1
  233. package/icon/icon.element.js.map +1 -1
  234. package/icon/icon.element.scss.js +1 -1
  235. package/icon/icon.element.scss.js.map +1 -1
  236. package/icon/icon.renderer.js.map +1 -1
  237. package/icon/icon.service.js.map +1 -1
  238. package/icon/index.d.ts +20 -7
  239. package/icon/index.js +1 -1
  240. package/icon/index.js.map +1 -1
  241. package/icon/register.js.map +1 -1
  242. package/icon/shapes/accessibility-1.js.map +1 -1
  243. package/icon/shapes/accessibility-2.js.map +1 -1
  244. package/icon/shapes/add-text.js.map +1 -1
  245. package/icon/shapes/administrator.js.map +1 -1
  246. package/icon/shapes/airplane.js.map +1 -1
  247. package/icon/shapes/alarm-clock.js.map +1 -1
  248. package/icon/shapes/alarm-off.js.map +1 -1
  249. package/icon/shapes/align-bottom.js.map +1 -1
  250. package/icon/shapes/align-center.js.map +1 -1
  251. package/icon/shapes/align-left-text.js.map +1 -1
  252. package/icon/shapes/align-left.js.map +1 -1
  253. package/icon/shapes/align-middle.js.map +1 -1
  254. package/icon/shapes/align-right-text.js.map +1 -1
  255. package/icon/shapes/align-right.js.map +1 -1
  256. package/icon/shapes/align-top.js.map +1 -1
  257. package/icon/shapes/angle-double.js.map +1 -1
  258. package/icon/shapes/angle.js.map +1 -1
  259. package/icon/shapes/animation.js.map +1 -1
  260. package/icon/shapes/announcement.js.map +1 -1
  261. package/icon/shapes/application.js.map +1 -1
  262. package/icon/shapes/applications.js.map +1 -1
  263. package/icon/shapes/archive.js.map +1 -1
  264. package/icon/shapes/arrow-mini.js.map +1 -1
  265. package/icon/shapes/arrow.js.map +1 -1
  266. package/icon/shapes/assign-user.js.map +1 -1
  267. package/icon/shapes/asterisk.js.map +1 -1
  268. package/icon/shapes/atom.js.map +1 -1
  269. package/icon/shapes/axis-chart.js.map +1 -1
  270. package/icon/shapes/backup-restore.js.map +1 -1
  271. package/icon/shapes/backup.js.map +1 -1
  272. package/icon/shapes/ban.js.map +1 -1
  273. package/icon/shapes/bank.js.map +1 -1
  274. package/icon/shapes/bar-chart.js.map +1 -1
  275. package/icon/shapes/bar-code.js.map +1 -1
  276. package/icon/shapes/bars.js.map +1 -1
  277. package/icon/shapes/battery.js.map +1 -1
  278. package/icon/shapes/bell-curve.js.map +1 -1
  279. package/icon/shapes/bell.js.map +1 -1
  280. package/icon/shapes/beta.js.map +1 -1
  281. package/icon/shapes/bicycle.js.map +1 -1
  282. package/icon/shapes/birthday-cake.js.map +1 -1
  283. package/icon/shapes/bitcoin.js.map +1 -1
  284. package/icon/shapes/block-quote.js.map +1 -1
  285. package/icon/shapes/block.js.map +1 -1
  286. package/icon/shapes/blocks-group.js.map +1 -1
  287. package/icon/shapes/bluetooth-off.js.map +1 -1
  288. package/icon/shapes/bluetooth.js.map +1 -1
  289. package/icon/shapes/boat.js.map +1 -1
  290. package/icon/shapes/bold.js.map +1 -1
  291. package/icon/shapes/bolt.js.map +1 -1
  292. package/icon/shapes/book.js.map +1 -1
  293. package/icon/shapes/bookmark.js.map +1 -1
  294. package/icon/shapes/box-plot.js.map +1 -1
  295. package/icon/shapes/briefcase.js.map +1 -1
  296. package/icon/shapes/bubble-chart.js.map +1 -1
  297. package/icon/shapes/bubble-exclamation.js.map +1 -1
  298. package/icon/shapes/bug.js.map +1 -1
  299. package/icon/shapes/building.js.map +1 -1
  300. package/icon/shapes/bullet-list.js.map +1 -1
  301. package/icon/shapes/bullseye.js.map +1 -1
  302. package/icon/shapes/bundle.js.map +1 -1
  303. package/icon/shapes/calculator.js.map +1 -1
  304. package/icon/shapes/calendar-mini.js.map +1 -1
  305. package/icon/shapes/calendar.js.map +1 -1
  306. package/icon/shapes/camera.js.map +1 -1
  307. package/icon/shapes/campervan.js.map +1 -1
  308. package/icon/shapes/capacitor.js.map +1 -1
  309. package/icon/shapes/car.js.map +1 -1
  310. package/icon/shapes/caravan.js.map +1 -1
  311. package/icon/shapes/cd-dvd.js.map +1 -1
  312. package/icon/shapes/center-text.js.map +1 -1
  313. package/icon/shapes/certificate.js.map +1 -1
  314. package/icon/shapes/chat-bubble.js.map +1 -1
  315. package/icon/shapes/check-circle-mini.js.map +1 -1
  316. package/icon/shapes/check-circle.js.map +1 -1
  317. package/icon/shapes/check-mini.js.map +1 -1
  318. package/icon/shapes/check.js.map +1 -1
  319. package/icon/shapes/checkbox-list.js.map +1 -1
  320. package/icon/shapes/child-arrow.js.map +1 -1
  321. package/icon/shapes/ci-cd.js.map +1 -1
  322. package/icon/shapes/circle-arrow.js.map +1 -1
  323. package/icon/shapes/circle.js.map +1 -1
  324. package/icon/shapes/clipboard.js.map +1 -1
  325. package/icon/shapes/clock.js.map +1 -1
  326. package/icon/shapes/clone.js.map +1 -1
  327. package/icon/shapes/cloud-chart.js.map +1 -1
  328. package/icon/shapes/cloud-network.js.map +1 -1
  329. package/icon/shapes/cloud-scale.js.map +1 -1
  330. package/icon/shapes/cloud-traffic.js.map +1 -1
  331. package/icon/shapes/cloud.js.map +1 -1
  332. package/icon/shapes/cluster.js.map +1 -1
  333. package/icon/shapes/code.js.map +1 -1
  334. package/icon/shapes/cog.js.map +1 -1
  335. package/icon/shapes/coin-bag.js.map +1 -1
  336. package/icon/shapes/collapse-card.js.map +1 -1
  337. package/icon/shapes/color-palette.js.map +1 -1
  338. package/icon/shapes/color-picker.js.map +1 -1
  339. package/icon/shapes/compass.js.map +1 -1
  340. package/icon/shapes/computer.js.map +1 -1
  341. package/icon/shapes/connect.js.map +1 -1
  342. package/icon/shapes/container-volume.js.map +1 -1
  343. package/icon/shapes/container.js.map +1 -1
  344. package/icon/shapes/contract.d.ts +3 -0
  345. package/icon/shapes/contract.js +2 -0
  346. package/icon/shapes/contract.js.map +1 -0
  347. package/icon/shapes/control-lun.js.map +1 -1
  348. package/icon/shapes/copy-to-clipboard.js.map +1 -1
  349. package/icon/shapes/copy.js.map +1 -1
  350. package/icon/shapes/cpu.js.map +1 -1
  351. package/icon/shapes/credit-card.js.map +1 -1
  352. package/icon/shapes/crosshairs.js.map +1 -1
  353. package/icon/shapes/crown.js.map +1 -1
  354. package/icon/shapes/cursor-arrow.js.map +1 -1
  355. package/icon/shapes/cursor-hand-click.js.map +1 -1
  356. package/icon/shapes/cursor-hand-grab.js.map +1 -1
  357. package/icon/shapes/cursor-hand-open.js.map +1 -1
  358. package/icon/shapes/cursor-hand.js.map +1 -1
  359. package/icon/shapes/cursor-move.js.map +1 -1
  360. package/icon/shapes/curve-chart.js.map +1 -1
  361. package/icon/shapes/dashboard.js.map +1 -1
  362. package/icon/shapes/data-cluster.js.map +1 -1
  363. package/icon/shapes/deploy.js.map +1 -1
  364. package/icon/shapes/detail-collapse.js.map +1 -1
  365. package/icon/shapes/detail-expand.js.map +1 -1
  366. package/icon/shapes/details.js.map +1 -1
  367. package/icon/shapes/devices.js.map +1 -1
  368. package/icon/shapes/digital-signature.js.map +1 -1
  369. package/icon/shapes/disconnect.js.map +1 -1
  370. package/icon/shapes/display.js.map +1 -1
  371. package/icon/shapes/dollar-bill.js.map +1 -1
  372. package/icon/shapes/dollar.js.map +1 -1
  373. package/icon/shapes/dot-circle.js.map +1 -1
  374. package/icon/shapes/download-cloud.js.map +1 -1
  375. package/icon/shapes/download.js.map +1 -1
  376. package/icon/shapes/drag-handle-corner.js.map +1 -1
  377. package/icon/shapes/drag-handle.js.map +1 -1
  378. package/icon/shapes/e-check.js.map +1 -1
  379. package/icon/shapes/ellipsis-horizontal.js.map +1 -1
  380. package/icon/shapes/ellipsis-vertical.js.map +1 -1
  381. package/icon/shapes/employee-group.js.map +1 -1
  382. package/icon/shapes/employee.js.map +1 -1
  383. package/icon/shapes/envelope.js.map +1 -1
  384. package/icon/shapes/eraser.js.map +1 -1
  385. package/icon/shapes/error-mini.js.map +1 -1
  386. package/icon/shapes/error-standard.js.map +1 -1
  387. package/icon/shapes/euro.js.map +1 -1
  388. package/icon/shapes/event-mini.js.map +1 -1
  389. package/icon/shapes/event.js.map +1 -1
  390. package/icon/shapes/exclamation-circle.js.map +1 -1
  391. package/icon/shapes/exclamation-triangle.js.map +1 -1
  392. package/icon/shapes/expand-card.js.map +1 -1
  393. package/icon/shapes/export.js.map +1 -1
  394. package/icon/shapes/eye-hide.js.map +1 -1
  395. package/icon/shapes/eye.js.map +1 -1
  396. package/icon/shapes/factory.js.map +1 -1
  397. package/icon/shapes/fast-forward.js.map +1 -1
  398. package/icon/shapes/ferry.js.map +1 -1
  399. package/icon/shapes/file-group.js.map +1 -1
  400. package/icon/shapes/file-settings.js.map +1 -1
  401. package/icon/shapes/file-share-2.js.map +1 -1
  402. package/icon/shapes/file-share.js.map +1 -1
  403. package/icon/shapes/file-zip.js.map +1 -1
  404. package/icon/shapes/file.js.map +1 -1
  405. package/icon/shapes/film-strip.js.map +1 -1
  406. package/icon/shapes/filter-2.js.map +1 -1
  407. package/icon/shapes/filter-grid-circle-mini.js.map +1 -1
  408. package/icon/shapes/filter-grid-circle.js.map +1 -1
  409. package/icon/shapes/filter-grid-mini.js.map +1 -1
  410. package/icon/shapes/filter-grid.js.map +1 -1
  411. package/icon/shapes/filter-off.js.map +1 -1
  412. package/icon/shapes/filter.js.map +1 -1
  413. package/icon/shapes/firewall.js.map +1 -1
  414. package/icon/shapes/first-aid.js.map +1 -1
  415. package/icon/shapes/fish.js.map +1 -1
  416. package/icon/shapes/flag.js.map +1 -1
  417. package/icon/shapes/flame.js.map +1 -1
  418. package/icon/shapes/flask.js.map +1 -1
  419. package/icon/shapes/floppy.js.map +1 -1
  420. package/icon/shapes/folder-open.js.map +1 -1
  421. package/icon/shapes/folder.js.map +1 -1
  422. package/icon/shapes/font-size.js.map +1 -1
  423. package/icon/shapes/forking.js.map +1 -1
  424. package/icon/shapes/form.js.map +1 -1
  425. package/icon/shapes/fuel.js.map +1 -1
  426. package/icon/shapes/gavel.js.map +1 -1
  427. package/icon/shapes/grid-chart.js.map +1 -1
  428. package/icon/shapes/grid-view.js.map +1 -1
  429. package/icon/shapes/half-star.js.map +1 -1
  430. package/icon/shapes/happy-face.js.map +1 -1
  431. package/icon/shapes/hard-disk.js.map +1 -1
  432. package/icon/shapes/hard-drive-disks.js.map +1 -1
  433. package/icon/shapes/hard-drive.js.map +1 -1
  434. package/icon/shapes/hashtag.js.map +1 -1
  435. package/icon/shapes/headphones.js.map +1 -1
  436. package/icon/shapes/heart-broken.js.map +1 -1
  437. package/icon/shapes/heart.js.map +1 -1
  438. package/icon/shapes/heat-map.js.map +1 -1
  439. package/icon/shapes/helix.js.map +1 -1
  440. package/icon/shapes/help-info.js.map +1 -1
  441. package/icon/shapes/help.js.map +1 -1
  442. package/icon/shapes/highlighter.js.map +1 -1
  443. package/icon/shapes/history.js.map +1 -1
  444. package/icon/shapes/home.js.map +1 -1
  445. package/icon/shapes/host-group.js.map +1 -1
  446. package/icon/shapes/host.js.map +1 -1
  447. package/icon/shapes/hourglass.js.map +1 -1
  448. package/icon/shapes/id-badge.js.map +1 -1
  449. package/icon/shapes/image-gallery.js.map +1 -1
  450. package/icon/shapes/image.js.map +1 -1
  451. package/icon/shapes/import.js.map +1 -1
  452. package/icon/shapes/inbox.js.map +1 -1
  453. package/icon/shapes/indent.js.map +1 -1
  454. package/icon/shapes/inductor.js.map +1 -1
  455. package/icon/shapes/info-circle-mini.js.map +1 -1
  456. package/icon/shapes/info-circle.js.map +1 -1
  457. package/icon/shapes/info-standard.js.map +1 -1
  458. package/icon/shapes/install.js.map +1 -1
  459. package/icon/shapes/internet-of-things.js.map +1 -1
  460. package/icon/shapes/italic.js.map +1 -1
  461. package/icon/shapes/justify-text.js.map +1 -1
  462. package/icon/shapes/key.js.map +1 -1
  463. package/icon/shapes/keyboard.js.map +1 -1
  464. package/icon/shapes/landscape.js.map +1 -1
  465. package/icon/shapes/language.js.map +1 -1
  466. package/icon/shapes/launchpad.js.map +1 -1
  467. package/icon/shapes/layers.js.map +1 -1
  468. package/icon/shapes/library.js.map +1 -1
  469. package/icon/shapes/lightbulb.js.map +1 -1
  470. package/icon/shapes/line-chart.js.map +1 -1
  471. package/icon/shapes/link.js.map +1 -1
  472. package/icon/shapes/list.js.map +1 -1
  473. package/icon/shapes/lock.js.map +1 -1
  474. package/icon/shapes/login.js.map +1 -1
  475. package/icon/shapes/logout.js.map +1 -1
  476. package/icon/shapes/map-marker.js.map +1 -1
  477. package/icon/shapes/map.js.map +1 -1
  478. package/icon/shapes/media-changer.js.map +1 -1
  479. package/icon/shapes/memory.js.map +1 -1
  480. package/icon/shapes/microphone-mute.js.map +1 -1
  481. package/icon/shapes/microphone.js.map +1 -1
  482. package/icon/shapes/minus-circle.js.map +1 -1
  483. package/icon/shapes/minus.js.map +1 -1
  484. package/icon/shapes/mobile.js.map +1 -1
  485. package/icon/shapes/moon.js.map +1 -1
  486. package/icon/shapes/mouse.js.map +1 -1
  487. package/icon/shapes/music-note.js.map +1 -1
  488. package/icon/shapes/namespace.js +1 -1
  489. package/icon/shapes/namespace.js.map +1 -1
  490. package/icon/shapes/network-globe.js.map +1 -1
  491. package/icon/shapes/network-settings.js.map +1 -1
  492. package/icon/shapes/network-switch.js.map +1 -1
  493. package/icon/shapes/neutral-face.js.map +1 -1
  494. package/icon/shapes/new.js.map +1 -1
  495. package/icon/shapes/no-access.js.map +1 -1
  496. package/icon/shapes/no-wifi.js.map +1 -1
  497. package/icon/shapes/node-group.js.map +1 -1
  498. package/icon/shapes/node.js.map +1 -1
  499. package/icon/shapes/nodes.js.map +1 -1
  500. package/icon/shapes/note.js.map +1 -1
  501. package/icon/shapes/number-list.js.map +1 -1
  502. package/icon/shapes/nvme.js.map +1 -1
  503. package/icon/shapes/objects.js.map +1 -1
  504. package/icon/shapes/on-holiday.js.map +1 -1
  505. package/icon/shapes/organization.js.map +1 -1
  506. package/icon/shapes/outdent.js.map +1 -1
  507. package/icon/shapes/paint-roller.js.map +1 -1
  508. package/icon/shapes/paperclip.js.map +1 -1
  509. package/icon/shapes/paste.js.map +1 -1
  510. package/icon/shapes/pause.js.map +1 -1
  511. package/icon/shapes/pdf-file.js.map +1 -1
  512. package/icon/shapes/pencil.js.map +1 -1
  513. package/icon/shapes/peso.js.map +1 -1
  514. package/icon/shapes/phone-handset.js.map +1 -1
  515. package/icon/shapes/picture.js.map +1 -1
  516. package/icon/shapes/pie-chart.js.map +1 -1
  517. package/icon/shapes/piggy-bank.js.map +1 -1
  518. package/icon/shapes/pin.js.map +1 -1
  519. package/icon/shapes/pinboard.js.map +1 -1
  520. package/icon/shapes/play.js.map +1 -1
  521. package/icon/shapes/plugin.js.map +1 -1
  522. package/icon/shapes/plus-circle.js.map +1 -1
  523. package/icon/shapes/plus.js.map +1 -1
  524. package/icon/shapes/pod.js.map +1 -1
  525. package/icon/shapes/pop-out.js.map +1 -1
  526. package/icon/shapes/portrait.js.map +1 -1
  527. package/icon/shapes/pound.js.map +1 -1
  528. package/icon/shapes/power.js.map +1 -1
  529. package/icon/shapes/printer.js.map +1 -1
  530. package/icon/shapes/process-on-vm.js.map +1 -1
  531. package/icon/shapes/qr-code.js.map +1 -1
  532. package/icon/shapes/rack-server.js.map +1 -1
  533. package/icon/shapes/radar.js.map +1 -1
  534. package/icon/shapes/recycle.js.map +1 -1
  535. package/icon/shapes/redo.js.map +1 -1
  536. package/icon/shapes/refresh.js.map +1 -1
  537. package/icon/shapes/repeat.js.map +1 -1
  538. package/icon/shapes/replay-all.js.map +1 -1
  539. package/icon/shapes/replay-one.js.map +1 -1
  540. package/icon/shapes/resistor.js.map +1 -1
  541. package/icon/shapes/resize.js.map +1 -1
  542. package/icon/shapes/resource-pool.js.map +1 -1
  543. package/icon/shapes/rewind.js.map +1 -1
  544. package/icon/shapes/router.js.map +1 -1
  545. package/icon/shapes/ruble.js.map +1 -1
  546. package/icon/shapes/ruler-pencil.js.map +1 -1
  547. package/icon/shapes/rupee.js.map +1 -1
  548. package/icon/shapes/sad-face.js.map +1 -1
  549. package/icon/shapes/scatter-plot.js.map +1 -1
  550. package/icon/shapes/scissors.js.map +1 -1
  551. package/icon/shapes/script-execute.js.map +1 -1
  552. package/icon/shapes/script-schedule.js.map +1 -1
  553. package/icon/shapes/scroll.js.map +1 -1
  554. package/icon/shapes/search.js.map +1 -1
  555. package/icon/shapes/share.js.map +1 -1
  556. package/icon/shapes/shield-check.js.map +1 -1
  557. package/icon/shapes/shield-x.js.map +1 -1
  558. package/icon/shapes/shield.js.map +1 -1
  559. package/icon/shapes/shopping-bag.js.map +1 -1
  560. package/icon/shapes/shopping-cart.js.map +1 -1
  561. package/icon/shapes/shrink.js.map +1 -1
  562. package/icon/shapes/shuffle.js.map +1 -1
  563. package/icon/shapes/slider.js.map +1 -1
  564. package/icon/shapes/snowflake.js.map +1 -1
  565. package/icon/shapes/sort-by.js.map +1 -1
  566. package/icon/shapes/squid.js.map +1 -1
  567. package/icon/shapes/ssd.js.map +1 -1
  568. package/icon/shapes/star.js.map +1 -1
  569. package/icon/shapes/step-forward-2.js.map +1 -1
  570. package/icon/shapes/step-forward.js.map +1 -1
  571. package/icon/shapes/stop.js.map +1 -1
  572. package/icon/shapes/storage-adapter.js.map +1 -1
  573. package/icon/shapes/storage.js.map +1 -1
  574. package/icon/shapes/store.js.map +1 -1
  575. package/icon/shapes/strikethrough.js.map +1 -1
  576. package/icon/shapes/subscript.js.map +1 -1
  577. package/icon/shapes/success-standard.js.map +1 -1
  578. package/icon/shapes/sun.js.map +1 -1
  579. package/icon/shapes/superscript.js.map +1 -1
  580. package/icon/shapes/switch.js.map +1 -1
  581. package/icon/shapes/sync.js.map +1 -1
  582. package/icon/shapes/table.js.map +1 -1
  583. package/icon/shapes/tablet.js.map +1 -1
  584. package/icon/shapes/tag.js.map +1 -1
  585. package/icon/shapes/tags.js.map +1 -1
  586. package/icon/shapes/talk-bubbles.js.map +1 -1
  587. package/icon/shapes/tape-drive.js.map +1 -1
  588. package/icon/shapes/target.js.map +1 -1
  589. package/icon/shapes/tasks.js.map +1 -1
  590. package/icon/shapes/terminal.js.map +1 -1
  591. package/icon/shapes/text-color.js.map +1 -1
  592. package/icon/shapes/text.js.map +1 -1
  593. package/icon/shapes/thermometer.js.map +1 -1
  594. package/icon/shapes/thin-client.js.map +1 -1
  595. package/icon/shapes/thumbs-down.js.map +1 -1
  596. package/icon/shapes/thumbs-up.js.map +1 -1
  597. package/icon/shapes/tick-chart.js.map +1 -1
  598. package/icon/shapes/timeline.js.map +1 -1
  599. package/icon/shapes/times-circle.js.map +1 -1
  600. package/icon/shapes/times-mini.js.map +1 -1
  601. package/icon/shapes/times.js.map +1 -1
  602. package/icon/shapes/tools.js.map +1 -1
  603. package/icon/shapes/trailer.js.map +1 -1
  604. package/icon/shapes/trash.js.map +1 -1
  605. package/icon/shapes/tree-view.js.map +1 -1
  606. package/icon/shapes/tree.js.map +1 -1
  607. package/icon/shapes/truck.js.map +1 -1
  608. package/icon/shapes/two-way-arrows.js.map +1 -1
  609. package/icon/shapes/unarchive.js.map +1 -1
  610. package/icon/shapes/underline.js.map +1 -1
  611. package/icon/shapes/undo.js.map +1 -1
  612. package/icon/shapes/uninstall.js.map +1 -1
  613. package/icon/shapes/unknown-status.js.map +1 -1
  614. package/icon/shapes/unknown.js.map +1 -1
  615. package/icon/shapes/unlink.js.map +1 -1
  616. package/icon/shapes/unlock.js.map +1 -1
  617. package/icon/shapes/unpin.d.ts +3 -0
  618. package/icon/shapes/unpin.js +2 -0
  619. package/icon/shapes/unpin.js.map +1 -0
  620. package/icon/shapes/update.js.map +1 -1
  621. package/icon/shapes/upload-cloud.js.map +1 -1
  622. package/icon/shapes/upload.js.map +1 -1
  623. package/icon/shapes/usb.js.map +1 -1
  624. package/icon/shapes/user.js.map +1 -1
  625. package/icon/shapes/users.js.map +1 -1
  626. package/icon/shapes/video-camera.js.map +1 -1
  627. package/icon/shapes/video-gallery.js.map +1 -1
  628. package/icon/shapes/view-cards.js.map +1 -1
  629. package/icon/shapes/view-columns.js.map +1 -1
  630. package/icon/shapes/view-list.js.map +1 -1
  631. package/icon/shapes/vm-bug-inverse.js.map +1 -1
  632. package/icon/shapes/vm-bug.js.map +1 -1
  633. package/icon/shapes/vm.js.map +1 -1
  634. package/icon/shapes/vmw-app.js.map +1 -1
  635. package/icon/shapes/volume-down.js.map +1 -1
  636. package/icon/shapes/volume-mute.js.map +1 -1
  637. package/icon/shapes/volume-up.js.map +1 -1
  638. package/icon/shapes/volume.js.map +1 -1
  639. package/icon/shapes/wallet.js.map +1 -1
  640. package/icon/shapes/wand.js.map +1 -1
  641. package/icon/shapes/warning-mini.js.map +1 -1
  642. package/icon/shapes/warning-standard.js.map +1 -1
  643. package/icon/shapes/wifi.js.map +1 -1
  644. package/icon/shapes/window-close.js.map +1 -1
  645. package/icon/shapes/window-max.js.map +1 -1
  646. package/icon/shapes/window-min.js.map +1 -1
  647. package/icon/shapes/window-restore.js.map +1 -1
  648. package/icon/shapes/won.js.map +1 -1
  649. package/icon/shapes/world.js.map +1 -1
  650. package/icon/shapes/wrench.js.map +1 -1
  651. package/icon/shapes/xls-file.js.map +1 -1
  652. package/icon/shapes/yen.js.map +1 -1
  653. package/icon/shapes/zoom-in.js.map +1 -1
  654. package/icon/shapes/zoom-out.js.map +1 -1
  655. package/icon/utils/icon.classnames.d.ts +1 -0
  656. package/icon/utils/icon.classnames.js +1 -1
  657. package/icon/utils/icon.classnames.js.map +1 -1
  658. package/icon/utils/icon.svg-helpers.js.map +1 -1
  659. package/index.js.map +1 -1
  660. package/input/index.js.map +1 -1
  661. package/input/input-group.element.js.map +1 -1
  662. package/input/input-group.element.scss.js +1 -1
  663. package/input/input-group.element.scss.js.map +1 -1
  664. package/input/input.element.js.map +1 -1
  665. package/input/input.element.scss.js +1 -1
  666. package/input/input.element.scss.js.map +1 -1
  667. package/input/register.js.map +1 -1
  668. package/internal/base/base.element.scss.js +1 -1
  669. package/internal/base/base.element.scss.js.map +1 -1
  670. package/internal/base/button.base.d.ts +2 -1
  671. package/internal/base/button.base.js +1 -1
  672. package/internal/base/button.base.js.map +1 -1
  673. package/internal/base/focus-trap.base.d.ts +3 -3
  674. package/internal/base/focus-trap.base.js.map +1 -1
  675. package/internal/controllers/active.controller.js.map +1 -1
  676. package/internal/controllers/aria-button.controller.js +1 -1
  677. package/internal/controllers/aria-button.controller.js.map +1 -1
  678. package/internal/controllers/aria-disabled.controller.js.map +1 -1
  679. package/internal/controllers/aria-expanded.controller.d.ts +14 -0
  680. package/internal/controllers/aria-expanded.controller.js +2 -0
  681. package/internal/controllers/aria-expanded.controller.js.map +1 -0
  682. package/internal/controllers/aria-grid.controller.d.ts +57 -0
  683. package/internal/controllers/aria-grid.controller.js +2 -0
  684. package/internal/controllers/aria-grid.controller.js.map +1 -0
  685. package/internal/controllers/aria-modal.controller.d.ts +11 -0
  686. package/internal/controllers/aria-modal.controller.js +2 -0
  687. package/internal/controllers/aria-modal.controller.js.map +1 -0
  688. package/internal/controllers/aria-multiselectable.controller.d.ts +13 -0
  689. package/internal/controllers/aria-multiselectable.controller.js +2 -0
  690. package/internal/controllers/aria-multiselectable.controller.js.map +1 -0
  691. package/internal/controllers/aria-popup-trigger.controller.js.map +1 -1
  692. package/internal/controllers/aria-popup.controller.d.ts +14 -5
  693. package/internal/controllers/aria-popup.controller.js +1 -1
  694. package/internal/controllers/aria-popup.controller.js.map +1 -1
  695. package/internal/controllers/aria-pressed.controller.js.map +1 -1
  696. package/internal/controllers/aria-selected.controller.js.map +1 -1
  697. package/internal/controllers/button-anchor.controller.d.ts +4 -0
  698. package/internal/controllers/button-anchor.controller.js +1 -1
  699. package/internal/controllers/button-anchor.controller.js.map +1 -1
  700. package/internal/controllers/button-submit.controller.js.map +1 -1
  701. package/internal/controllers/closable.controller.d.ts +13 -19
  702. package/internal/controllers/closable.controller.js +1 -1
  703. package/internal/controllers/closable.controller.js.map +1 -1
  704. package/internal/controllers/draggable-list.controller.d.ts +32 -0
  705. package/internal/controllers/draggable-list.controller.js +2 -0
  706. package/internal/controllers/draggable-list.controller.js.map +1 -0
  707. package/internal/controllers/first-focus.controller.d.ts +8 -4
  708. package/internal/controllers/first-focus.controller.js +1 -1
  709. package/internal/controllers/first-focus.controller.js.map +1 -1
  710. package/internal/controllers/grid-range-selection.controller.d.ts +28 -0
  711. package/internal/controllers/grid-range-selection.controller.js +2 -0
  712. package/internal/controllers/grid-range-selection.controller.js.map +1 -0
  713. package/internal/controllers/inline-focus-trap.controller.d.ts +8 -7
  714. package/internal/controllers/inline-focus-trap.controller.js +1 -1
  715. package/internal/controllers/inline-focus-trap.controller.js.map +1 -1
  716. package/internal/controllers/key-navigation-grid.controller.d.ts +28 -0
  717. package/internal/controllers/key-navigation-grid.controller.js +2 -0
  718. package/internal/controllers/key-navigation-grid.controller.js.map +1 -0
  719. package/internal/controllers/key-navigation-list.controller.d.ts +26 -0
  720. package/internal/controllers/key-navigation-list.controller.js +2 -0
  721. package/internal/controllers/key-navigation-list.controller.js.map +1 -0
  722. package/internal/controllers/key-navigation.utils.d.ts +19 -0
  723. package/internal/controllers/key-navigation.utils.js +2 -0
  724. package/internal/controllers/key-navigation.utils.js.map +1 -0
  725. package/internal/controllers/layer.controller.d.ts +24 -0
  726. package/internal/controllers/layer.controller.js +2 -0
  727. package/internal/controllers/layer.controller.js.map +1 -0
  728. package/internal/controllers/responsive.controller.d.ts +19 -0
  729. package/internal/controllers/responsive.controller.js +2 -0
  730. package/internal/controllers/responsive.controller.js.map +1 -0
  731. package/internal/controllers/scrollable-list-visibility.controller.d.ts +13 -0
  732. package/internal/controllers/scrollable-list-visibility.controller.js +2 -0
  733. package/internal/controllers/scrollable-list-visibility.controller.js.map +1 -0
  734. package/internal/controllers/touch.controller.d.ts +22 -0
  735. package/internal/controllers/touch.controller.js +2 -0
  736. package/internal/controllers/touch.controller.js.map +1 -0
  737. package/internal/controllers/trigger.controller.d.ts +31 -0
  738. package/internal/controllers/trigger.controller.js +2 -0
  739. package/internal/controllers/trigger.controller.js.map +1 -0
  740. package/internal/decorators/animate.d.ts +1 -1
  741. package/internal/decorators/animate.js +1 -1
  742. package/internal/decorators/animate.js.map +1 -1
  743. package/internal/decorators/element.d.ts +15 -18
  744. package/internal/decorators/element.js +1 -1
  745. package/internal/decorators/element.js.map +1 -1
  746. package/internal/decorators/event.js.map +1 -1
  747. package/internal/decorators/global-style.js.map +1 -1
  748. package/internal/decorators/i18n.d.ts +16 -0
  749. package/internal/decorators/i18n.js +1 -1
  750. package/internal/decorators/i18n.js.map +1 -1
  751. package/internal/decorators/id.js.map +1 -1
  752. package/internal/decorators/property.d.ts +3 -16
  753. package/internal/decorators/property.js +1 -1
  754. package/internal/decorators/property.js.map +1 -1
  755. package/internal/decorators/query-slot.js.map +1 -1
  756. package/internal/decorators/utils.d.ts +23 -0
  757. package/internal/decorators/utils.js +2 -0
  758. package/internal/decorators/utils.js.map +1 -0
  759. package/internal/directives/spread-props.js.map +1 -1
  760. package/internal/i18n/utils.js.map +1 -1
  761. package/internal/index.d.ts +28 -0
  762. package/internal/index.js +1 -1
  763. package/internal/index.js.map +1 -1
  764. package/internal/interfaces/interfaces.js.map +1 -1
  765. package/internal/motion/animations/cds-accordion-panel-open.js.map +1 -1
  766. package/internal/motion/animations/cds-component-shake.js.map +1 -1
  767. package/internal/motion/animations/cds-dropdown-open.js.map +1 -1
  768. package/internal/motion/animations/cds-modal-enter.js.map +1 -1
  769. package/internal/motion/animations/cds-navigation-group-open.js.map +1 -1
  770. package/internal/motion/animations/cds-navigation-open.js.map +1 -1
  771. package/internal/motion/animations/cds-overlay-hinge-example.js.map +1 -1
  772. package/internal/motion/animations/cds-tree-item-expand.js.map +1 -1
  773. package/internal/motion/animations/keyframes/fade-in-and-slide-down.js.map +1 -1
  774. package/internal/motion/animations/keyframes/fade-in.js.map +1 -1
  775. package/internal/motion/animations/keyframes/hinge.js.map +1 -1
  776. package/internal/motion/animations/keyframes/shake.js.map +1 -1
  777. package/internal/motion/interfaces.js.map +1 -1
  778. package/internal/motion/motion.service.js.map +1 -1
  779. package/internal/motion/utils.js.map +1 -1
  780. package/internal/positioning/interfaces.js.map +1 -1
  781. package/internal/positioning/utils.js +1 -1
  782. package/internal/positioning/utils.js.map +1 -1
  783. package/internal/services/focus-trap-tracker.service.js.map +1 -1
  784. package/internal/services/global.service.d.ts +2 -2
  785. package/internal/services/global.service.js.map +1 -1
  786. package/internal/services/i18n.service.d.ts +33 -60
  787. package/internal/services/i18n.service.js +1 -1
  788. package/internal/services/i18n.service.js.map +1 -1
  789. package/internal/services/keycodes.service.js.map +1 -1
  790. package/internal/services/log.service.js.map +1 -1
  791. package/internal/utils/__.js.map +1 -1
  792. package/internal/utils/a11y.js.map +1 -1
  793. package/internal/utils/array.d.ts +2 -0
  794. package/internal/utils/array.js +1 -1
  795. package/internal/utils/array.js.map +1 -1
  796. package/internal/utils/async.js.map +1 -1
  797. package/internal/utils/browser.d.ts +7 -0
  798. package/internal/utils/browser.js +2 -0
  799. package/internal/utils/browser.js.map +1 -0
  800. package/internal/utils/color.js.map +1 -1
  801. package/internal/utils/conditional.js.map +1 -1
  802. package/internal/utils/css.d.ts +1 -0
  803. package/internal/utils/css.js +1 -1
  804. package/internal/utils/css.js.map +1 -1
  805. package/internal/utils/dom.d.ts +9 -1
  806. package/internal/utils/dom.js +1 -1
  807. package/internal/utils/dom.js.map +1 -1
  808. package/internal/utils/enum.js.map +1 -1
  809. package/internal/utils/environment.js.map +1 -1
  810. package/internal/utils/event-subject.js.map +1 -1
  811. package/internal/utils/events.js +1 -1
  812. package/internal/utils/events.js.map +1 -1
  813. package/internal/utils/exists.d.ts +1 -1
  814. package/internal/utils/exists.js.map +1 -1
  815. package/internal/utils/focus.d.ts +12 -0
  816. package/internal/utils/focus.js +2 -0
  817. package/internal/utils/focus.js.map +1 -0
  818. package/internal/utils/framework.js.map +1 -1
  819. package/internal/utils/global.d.ts +2 -1
  820. package/internal/utils/global.js +1 -1
  821. package/internal/utils/global.js.map +1 -1
  822. package/internal/utils/identity.d.ts +3 -0
  823. package/internal/utils/identity.js +1 -1
  824. package/internal/utils/identity.js.map +1 -1
  825. package/internal/utils/keycodes.d.ts +11 -0
  826. package/internal/utils/keycodes.js +1 -1
  827. package/internal/utils/keycodes.js.map +1 -1
  828. package/internal/utils/lit.js.map +1 -1
  829. package/internal/utils/math.d.ts +1 -0
  830. package/internal/utils/math.js +1 -1
  831. package/internal/utils/math.js.map +1 -1
  832. package/internal/utils/metadata.js.map +1 -1
  833. package/internal/utils/registration.js.map +1 -1
  834. package/internal/utils/responsive.d.ts +2 -2
  835. package/internal/utils/responsive.js +1 -1
  836. package/internal/utils/responsive.js.map +1 -1
  837. package/internal/utils/size.js.map +1 -1
  838. package/internal/utils/string.d.ts +1 -0
  839. package/internal/utils/string.js +1 -1
  840. package/internal/utils/string.js.map +1 -1
  841. package/internal/utils/supports.d.ts +0 -2
  842. package/internal/utils/supports.js +1 -1
  843. package/internal/utils/supports.js.map +1 -1
  844. package/internal/utils/traversal.d.ts +1 -2
  845. package/internal/utils/traversal.js +1 -1
  846. package/internal/utils/traversal.js.map +1 -1
  847. package/internal-components/close-button/close-button.element.js.map +1 -1
  848. package/internal-components/close-button/index.js.map +1 -1
  849. package/internal-components/close-button/register.js.map +1 -1
  850. package/internal-components/overlay/index.js +1 -1
  851. package/internal-components/overlay/index.js.map +1 -1
  852. package/internal-components/overlay/overlay.element.d.ts +9 -26
  853. package/internal-components/overlay/overlay.element.js +1 -1
  854. package/internal-components/overlay/overlay.element.js.map +1 -1
  855. package/internal-components/overlay/overlay.element.scss.js +1 -1
  856. package/internal-components/overlay/overlay.element.scss.js.map +1 -1
  857. package/internal-components/overlay/register.js.map +1 -1
  858. package/internal-components/overlay/shared.element.scss.js +1 -1
  859. package/internal-components/overlay/shared.element.scss.js.map +1 -1
  860. package/internal-components/panel/index.js.map +1 -1
  861. package/internal-components/panel/panel.element.d.ts +1 -1
  862. package/internal-components/panel/panel.element.js.map +1 -1
  863. package/internal-components/panel/panel.element.scss.js +1 -1
  864. package/internal-components/panel/panel.element.scss.js.map +1 -1
  865. package/internal-components/panel/register.js.map +1 -1
  866. package/internal-components/popup/index.js.map +1 -1
  867. package/internal-components/popup/pointer.element.js.map +1 -1
  868. package/internal-components/popup/pointer.element.scss.js +1 -1
  869. package/internal-components/popup/pointer.element.scss.js.map +1 -1
  870. package/internal-components/popup/popup.element.d.ts +9 -12
  871. package/internal-components/popup/popup.element.js +1 -1
  872. package/internal-components/popup/popup.element.js.map +1 -1
  873. package/internal-components/popup/popup.element.scss.js +1 -1
  874. package/internal-components/popup/popup.element.scss.js.map +1 -1
  875. package/internal-components/popup/register.js.map +1 -1
  876. package/internal-components/popup/utils/pointer.utils.js.map +1 -1
  877. package/internal-components/split-handle/index.d.ts +1 -0
  878. package/internal-components/split-handle/index.js +2 -0
  879. package/internal-components/split-handle/index.js.map +1 -0
  880. package/internal-components/split-handle/register.d.ts +7 -0
  881. package/internal-components/split-handle/register.js +2 -0
  882. package/internal-components/split-handle/register.js.map +1 -0
  883. package/internal-components/split-handle/split-handle.element.d.ts +38 -0
  884. package/internal-components/split-handle/split-handle.element.js +2 -0
  885. package/internal-components/split-handle/split-handle.element.js.map +1 -0
  886. package/internal-components/split-handle/split-handle.element.scss.js +2 -0
  887. package/internal-components/split-handle/split-handle.element.scss.js.map +1 -0
  888. package/internal-components/visual-checkbox/index.js.map +1 -1
  889. package/internal-components/visual-checkbox/register.js.map +1 -1
  890. package/internal-components/visual-checkbox/visual-checkbox.element.js.map +1 -1
  891. package/internal-components/visual-checkbox/visual-checkbox.element.scss.js +1 -1
  892. package/internal-components/visual-checkbox/visual-checkbox.element.scss.js.map +1 -1
  893. package/list/list.css +22 -12
  894. package/list/list.min.css +1 -1
  895. package/modal/index.js.map +1 -1
  896. package/modal/modal-actions.element.js.map +1 -1
  897. package/modal/modal-content.element.js.map +1 -1
  898. package/modal/modal-header-actions.element.js.map +1 -1
  899. package/modal/modal-header.element.js.map +1 -1
  900. package/modal/modal.element.d.ts +0 -2
  901. package/modal/modal.element.js +1 -1
  902. package/modal/modal.element.js.map +1 -1
  903. package/modal/modal.element.scss.js +1 -1
  904. package/modal/modal.element.scss.js.map +1 -1
  905. package/modal/register.js.map +1 -1
  906. package/navigation/index.js.map +1 -1
  907. package/navigation/navigation-group.element.d.ts +4 -1
  908. package/navigation/navigation-group.element.js.map +1 -1
  909. package/navigation/navigation-group.element.scss.js +1 -1
  910. package/navigation/navigation-group.element.scss.js.map +1 -1
  911. package/navigation/navigation-item.element.d.ts +4 -1
  912. package/navigation/navigation-item.element.js.map +1 -1
  913. package/navigation/navigation-item.element.scss.js +1 -1
  914. package/navigation/navigation-item.element.scss.js.map +1 -1
  915. package/navigation/navigation-start.element.d.ts +5 -2
  916. package/navigation/navigation-start.element.js.map +1 -1
  917. package/navigation/navigation.element.d.ts +4 -1
  918. package/navigation/navigation.element.js.map +1 -1
  919. package/navigation/navigation.element.scss.js +1 -1
  920. package/navigation/navigation.element.scss.js.map +1 -1
  921. package/navigation/register.js.map +1 -1
  922. package/navigation/utils/utils.js.map +1 -1
  923. package/package.json +21 -5
  924. package/pagination/index.js.map +1 -1
  925. package/pagination/pagination-button.element.js.map +1 -1
  926. package/pagination/pagination.element.js +1 -1
  927. package/pagination/pagination.element.js.map +1 -1
  928. package/pagination/pagination.element.scss.js +1 -1
  929. package/pagination/pagination.element.scss.js.map +1 -1
  930. package/pagination/register.js.map +1 -1
  931. package/pagination/utils.js.map +1 -1
  932. package/password/index.js.map +1 -1
  933. package/password/password.element.js.map +1 -1
  934. package/password/register.js.map +1 -1
  935. package/polyfills/aria-reflect.js.map +1 -1
  936. package/polyfills/at.d.ts +15 -0
  937. package/polyfills/at.js +2 -0
  938. package/polyfills/at.js.map +1 -0
  939. package/polyfills/index.d.ts +1 -0
  940. package/polyfills/index.js +1 -1
  941. package/polyfills/index.js.map +1 -1
  942. package/progress-circle/index.js.map +1 -1
  943. package/progress-circle/progress-circle.element.js.map +1 -1
  944. package/progress-circle/progress-circle.element.scss.js +1 -1
  945. package/progress-circle/progress-circle.element.scss.js.map +1 -1
  946. package/progress-circle/progress-circle.utils.js.map +1 -1
  947. package/progress-circle/register.js.map +1 -1
  948. package/radio/index.js.map +1 -1
  949. package/radio/radio-group.element.js +1 -1
  950. package/radio/radio-group.element.js.map +1 -1
  951. package/radio/radio.element.js.map +1 -1
  952. package/radio/radio.element.scss.js +1 -1
  953. package/radio/radio.element.scss.js.map +1 -1
  954. package/radio/register.js.map +1 -1
  955. package/range/index.js.map +1 -1
  956. package/range/range.element.js.map +1 -1
  957. package/range/range.element.scss.js +1 -1
  958. package/range/range.element.scss.js.map +1 -1
  959. package/range/range.global.scss.js +1 -1
  960. package/range/range.global.scss.js.map +1 -1
  961. package/range/register.js.map +1 -1
  962. package/search/index.js.map +1 -1
  963. package/search/register.js.map +1 -1
  964. package/search/search.element.js.map +1 -1
  965. package/search/search.global.scss.js +1 -1
  966. package/search/search.global.scss.js.map +1 -1
  967. package/select/index.js.map +1 -1
  968. package/select/register.js.map +1 -1
  969. package/select/select.element.js +1 -1
  970. package/select/select.element.js.map +1 -1
  971. package/select/select.element.scss.js.map +1 -1
  972. package/select/select.global.scss.js.map +1 -1
  973. package/selection-panels/checkbox/checkbox-panel.element.d.ts +0 -1
  974. package/selection-panels/checkbox/checkbox-panel.element.js.map +1 -1
  975. package/selection-panels/checkbox/index.js.map +1 -1
  976. package/selection-panels/checkbox/register.js.map +1 -1
  977. package/selection-panels/radio/index.js.map +1 -1
  978. package/selection-panels/radio/radio-panel.element.d.ts +1 -1
  979. package/selection-panels/radio/radio-panel.element.js.map +1 -1
  980. package/selection-panels/radio/register.js.map +1 -1
  981. package/selection-panels/shared/selection-panel.element.scss.js +1 -1
  982. package/selection-panels/shared/selection-panel.element.scss.js.map +1 -1
  983. package/signpost/index.d.ts +1 -0
  984. package/signpost/index.js +2 -0
  985. package/signpost/index.js.map +1 -0
  986. package/signpost/register.d.ts +7 -0
  987. package/signpost/register.js +2 -0
  988. package/signpost/register.js.map +1 -0
  989. package/signpost/signpost.element.d.ts +44 -0
  990. package/signpost/signpost.element.js +2 -0
  991. package/signpost/signpost.element.js.map +1 -0
  992. package/styles/module.layout.css +56 -0
  993. package/styles/module.layout.min.css +1 -1
  994. package/styles/module.reset.css +5 -0
  995. package/styles/module.typography.css +50 -16
  996. package/styles/module.typography.min.css +1 -1
  997. package/styles/shim.clr-ui.css +51 -35
  998. package/styles/shim.clr-ui.min.css +15 -13
  999. package/styles/theme.dark.css +6 -1
  1000. package/styles/theme.dark.min.css +1 -1
  1001. package/styles/theme.high-contrast.css +43 -0
  1002. package/styles/theme.high-contrast.min.css +1 -0
  1003. package/styles/theme.low-motion.css +10 -0
  1004. package/table/table.css +10 -0
  1005. package/tag/index.js.map +1 -1
  1006. package/tag/register.js.map +1 -1
  1007. package/tag/tag.element.js.map +1 -1
  1008. package/tag/tag.element.scss.js +1 -1
  1009. package/tag/tag.element.scss.js.map +1 -1
  1010. package/test/index.d.ts +1 -0
  1011. package/test/index.js +1 -1
  1012. package/test/index.js.map +1 -1
  1013. package/test/utils.js.map +1 -1
  1014. package/test/web-test-server.d.ts +6 -0
  1015. package/test/web-test-server.js +2 -0
  1016. package/test/web-test-server.js.map +1 -0
  1017. package/test-dropdown/index.js.map +1 -1
  1018. package/test-dropdown/register.js.map +1 -1
  1019. package/test-dropdown/test-dropdown.element.d.ts +0 -1
  1020. package/test-dropdown/test-dropdown.element.js.map +1 -1
  1021. package/test-dropdown/test-dropdown.element.scss.js.map +1 -1
  1022. package/textarea/index.js.map +1 -1
  1023. package/textarea/register.js.map +1 -1
  1024. package/textarea/textarea.element.js.map +1 -1
  1025. package/textarea/textarea.element.scss.js.map +1 -1
  1026. package/time/index.js.map +1 -1
  1027. package/time/register.js.map +1 -1
  1028. package/time/time.element.js.map +1 -1
  1029. package/time/time.global.scss.js.map +1 -1
  1030. package/toggle/index.js.map +1 -1
  1031. package/toggle/register.js.map +1 -1
  1032. package/toggle/toggle-group.element.js.map +1 -1
  1033. package/toggle/toggle.element.js.map +1 -1
  1034. package/toggle/toggle.element.scss.js +1 -1
  1035. package/toggle/toggle.element.scss.js.map +1 -1
  1036. package/tokens/tokens.scss +3 -0
  1037. package/tree-view/index.js.map +1 -1
  1038. package/tree-view/register.js.map +1 -1
  1039. package/tree-view/tree-item.element.d.ts +0 -1
  1040. package/tree-view/tree-item.element.js +1 -1
  1041. package/tree-view/tree-item.element.js.map +1 -1
  1042. package/tree-view/tree-item.element.scss.js +1 -1
  1043. package/tree-view/tree-item.element.scss.js.map +1 -1
  1044. package/tree-view/tree.element.d.ts +0 -1
  1045. package/tree-view/tree.element.js.map +1 -1
  1046. package/tree-view/tree.element.scss.js.map +1 -1
  1047. package/internal/controllers/utils/first-focus.controller.utils.d.ts +0 -3
  1048. package/internal/controllers/utils/first-focus.controller.utils.js +0 -2
  1049. package/internal/controllers/utils/first-focus.controller.utils.js.map +0 -1
@@ -0,0 +1,13 @@
1
+ import { ReactiveController, ReactiveElement } from 'lit';
2
+ export declare type AriaMultiSelectable = ReactiveElement & {
3
+ selectable: 'multi' | 'single' | null;
4
+ };
5
+ /**
6
+ * Provides all nessesary aria-* attributes to create valid multi-selection state
7
+ */
8
+ export declare function ariaMultiSelectable<T extends AriaMultiSelectable>(): ClassDecorator;
9
+ export declare class AriaMultiSelectableController<T extends AriaMultiSelectable> implements ReactiveController {
10
+ private host;
11
+ constructor(host: T);
12
+ hostUpdated(): void;
13
+ }
@@ -0,0 +1,2 @@
1
+ function t(){return t=>t.addInitializer((t=>new e(t)))}class e{constructor(t){this.host=t,this.host.addController(this)}hostUpdated(){void 0!==this.host.selectable&&null!==this.host.selectable?this.host.ariaMultiSelectable="multi"===this.host.selectable?"true":"false":this.host.ariaMultiSelectable=null}}export{e as AriaMultiSelectableController,t as ariaMultiSelectable};
2
+ //# sourceMappingURL=aria-multiselectable.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aria-multiselectable.controller.js","sources":["../../../../src/internal/controllers/aria-multiselectable.controller.ts"],"sourcesContent":["/*\n * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n/**\n * Provides all nessesary aria-* attributes to create valid multi-selection state\n */\nexport function ariaMultiSelectable() {\n return (target) => target.addInitializer((instance) => new AriaMultiSelectableController(instance));\n}\nexport class AriaMultiSelectableController {\n constructor(host) {\n this.host = host;\n this.host.addController(this);\n }\n hostUpdated() {\n if (this.host.selectable !== undefined && this.host.selectable !== null) {\n this.host.ariaMultiSelectable = this.host.selectable === 'multi' ? 'true' : 'false';\n }\n else {\n this.host.ariaMultiSelectable = null;\n }\n }\n}\n"],"names":["ariaMultiSelectable","target","addInitializer","instance","AriaMultiSelectableController","constructor","host","this","addController","hostUpdated","undefined","selectable"],"mappings":"AAQO,SAASA,IACZ,OAAQC,GAAWA,EAAOC,gBAAgBC,GAAa,IAAIC,EAA8BD,KAEtF,MAAMC,EACTC,YAAYC,GACRC,KAAKD,KAAOA,EACZC,KAAKD,KAAKE,cAAcD,MAE5BE,mBACiCC,IAAzBH,KAAKD,KAAKK,YAAqD,OAAzBJ,KAAKD,KAAKK,WAChDJ,KAAKD,KAAKN,oBAA+C,UAAzBO,KAAKD,KAAKK,WAAyB,OAAS,QAG5EJ,KAAKD,KAAKN,oBAAsB"}
@@ -1 +1 @@
1
- {"version":3,"file":"aria-popup-trigger.controller.js","sources":["../../../../src/internal/controllers/aria-popup-trigger.controller.ts"],"sourcesContent":null,"names":["ariaPopupTrigger","target","addInitializer","instance","AriaPopupTriggerController","[object Object]","host","this","addController","popup","ariaControls","ariaHasPopup","ariaExpanded"],"mappings":"AAIO,SAASA,IACZ,OAAQC,GAAWA,EAAOC,gBAAgBC,GAAa,IAAIC,EAA2BD,KAEnF,MAAMC,EACTC,YAAYC,GACRC,KAAKD,KAAOA,EACZC,KAAKD,KAAKE,cAAcD,MAE5BF,gBACQE,KAAKD,KAAKG,QACVF,KAAKD,KAAKI,aAAeH,KAAKD,KAAKG,MACnCF,KAAKD,KAAKK,aAAe,OACzBJ,KAAKD,KAAKM,aAAe"}
1
+ {"version":3,"file":"aria-popup-trigger.controller.js","sources":["../../../../src/internal/controllers/aria-popup-trigger.controller.ts"],"sourcesContent":["/*\n * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n/**\n * Provides all nessesary aria-* attributes to create a vaild aria popup trigger.\n * Used in combination of the `@ariaPopup` controller.\n */\nexport function ariaPopupTrigger() {\n return (target) => target.addInitializer((instance) => new AriaPopupTriggerController(instance));\n}\nexport class AriaPopupTriggerController {\n constructor(host) {\n this.host = host;\n this.host.addController(this);\n }\n hostConnected() {\n if (this.host.popup) {\n this.host.ariaControls = this.host.popup;\n this.host.ariaHasPopup = 'true';\n this.host.ariaExpanded = 'false';\n }\n }\n}\n"],"names":["ariaPopupTrigger","target","addInitializer","instance","AriaPopupTriggerController","constructor","host","this","addController","hostConnected","popup","ariaControls","ariaHasPopup","ariaExpanded"],"mappings":"AASO,SAASA,IACZ,OAAQC,GAAWA,EAAOC,gBAAgBC,GAAa,IAAIC,EAA2BD,KAEnF,MAAMC,EACTC,YAAYC,GACRC,KAAKD,KAAOA,EACZC,KAAKD,KAAKE,cAAcD,MAE5BE,gBACQF,KAAKD,KAAKI,QACVH,KAAKD,KAAKK,aAAeJ,KAAKD,KAAKI,MACnCH,KAAKD,KAAKM,aAAe,OACzBL,KAAKD,KAAKO,aAAe"}
@@ -1,10 +1,19 @@
1
- import { LitElement } from 'lit';
2
- export declare class AriaPopupController {
1
+ import { ReactiveController, ReactiveElement } from 'lit';
2
+ export declare type AriaPopup = ReactiveElement & {
3
+ trigger?: HTMLElement;
4
+ };
5
+ /**
6
+ * Provides all nessesary aria-* attributes to create a vaild aria popup.
7
+ * Used in combination of the `@ariaPopupTrigger` controller.
8
+ */
9
+ export declare function ariaPopup<T extends AriaPopup>(): ClassDecorator;
10
+ export declare class AriaPopupController<T extends AriaPopup> implements ReactiveController {
3
11
  private host;
4
12
  private observer;
5
- constructor(host: LitElement);
6
- private get closableController();
13
+ private trigger;
14
+ constructor(host: T);
7
15
  hostConnected(): Promise<void>;
16
+ hostUpdate(): Promise<void>;
8
17
  hostDisconnected(): void;
9
- private onExpand;
18
+ private updateTrigger;
10
19
  }
@@ -1,2 +1,2 @@
1
- class t{constructor(t){this.host=t,this.host.addController(this)}get closableController(){return this.host.closableController}async hostConnected(){await this.host.updateComplete,this.onExpand(!this.host.hasAttribute("hidden")),this.observer=new MutationObserver((t=>{for(const e of t)"attributes"===e.type&&"hidden"===e.attributeName&&this.onExpand(!this.host.hasAttribute("hidden"))})),this.observer.observe(this.host,{attributes:!0})}hostDisconnected(){this.onExpand(!1),this.observer.disconnect()}onExpand(t){if(this.closableController){const e=this.closableController.priorActiveElement;e&&e.hasAttribute("popup")&&e.setAttribute("aria-expanded",t?"true":"false")}}}export{t as AriaPopupController};
1
+ import{listenForAttributeChange as t}from"../utils/events.js";import{TriggerController as e}from"./trigger.controller.js";function r(){return t=>t.addInitializer((t=>new i(t)))}class i{constructor(t){this.host=t,this.host.addController(this),this.trigger=new e(this.host,{focus:!1})}async hostConnected(){await this.host.updateComplete,this.observer=t(this.host,"hidden",(()=>this.updateTrigger(!this.host.hidden)))}async hostUpdate(){await this.host.updateComplete,this.updateTrigger(!this.host.hidden)}hostDisconnected(){this.updateTrigger(!1),this.observer?.disconnect()}updateTrigger(t){this.trigger.current?.hasAttribute("popup")&&(this.trigger.current.ariaExpanded=""+t),this.trigger.prev?.hasAttribute("popup")&&this.trigger.prev!==this.trigger.current&&(this.trigger.prev.ariaExpanded="false")}}export{i as AriaPopupController,r as ariaPopup};
2
2
  //# sourceMappingURL=aria-popup.controller.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"aria-popup.controller.js","sources":["../../../../src/internal/controllers/aria-popup.controller.ts"],"sourcesContent":null,"names":["AriaPopupController","[object Object]","host","this","addController","closableController","updateComplete","onExpand","hasAttribute","observer","MutationObserver","mutations","mutation","type","attributeName","observe","attributes","disconnect","expand","previousFocusElement","priorActiveElement","setAttribute"],"mappings":"AAAO,MAAMA,EACTC,YAAYC,GACRC,KAAKD,KAAOA,EACZC,KAAKD,KAAKE,cAAcD,MAE5BE,yBACI,OAAOF,KAAKD,KAAKG,mBAGrBJ,4BACUE,KAAKD,KAAKI,eAChBH,KAAKI,UAAUJ,KAAKD,KAAKM,aAAa,WACtCL,KAAKM,SAAW,IAAIC,kBAAiBC,IACjC,IAAK,MAAMC,KAAYD,EACG,eAAlBC,EAASC,MAAoD,WAA3BD,EAASE,eAC3CX,KAAKI,UAAUJ,KAAKD,KAAKM,aAAa,cAIlDL,KAAKM,SAASM,QAAQZ,KAAKD,KAAM,CAAEc,YAAY,IAGnDf,mBACIE,KAAKI,UAAS,GACdJ,KAAKM,SAASQ,aAElBhB,SAASiB,GACL,GAAIf,KAAKE,mBAAoB,CACzB,MAAMc,EAAuBhB,KAAKE,mBAAmBe,mBACjDD,GAAwBA,EAAqBX,aAAa,UAC1DW,EAAqBE,aAAa,gBAAiBH,EAAS,OAAS"}
1
+ {"version":3,"file":"aria-popup.controller.js","sources":["../../../../src/internal/controllers/aria-popup.controller.ts"],"sourcesContent":["/*\n * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { listenForAttributeChange } from '../utils/events.js';\nimport { TriggerController } from './trigger.controller.js';\n/**\n * Provides all nessesary aria-* attributes to create a vaild aria popup.\n * Used in combination of the `@ariaPopupTrigger` controller.\n */\nexport function ariaPopup() {\n return (target) => target.addInitializer((instance) => new AriaPopupController(instance));\n}\nexport class AriaPopupController {\n constructor(host) {\n this.host = host;\n this.host.addController(this);\n this.trigger = new TriggerController(this.host, { focus: false });\n }\n async hostConnected() {\n await this.host.updateComplete;\n this.observer = listenForAttributeChange(this.host, 'hidden', () => this.updateTrigger(!this.host.hidden));\n }\n async hostUpdate() {\n await this.host.updateComplete;\n this.updateTrigger(!this.host.hidden);\n }\n hostDisconnected() {\n this.updateTrigger(false);\n this.observer?.disconnect();\n }\n updateTrigger(expanded) {\n if (this.trigger.current?.hasAttribute('popup')) {\n this.trigger.current.ariaExpanded = `${expanded}`;\n }\n if (this.trigger.prev?.hasAttribute('popup') && this.trigger.prev !== this.trigger.current) {\n this.trigger.prev.ariaExpanded = 'false';\n }\n }\n}\n"],"names":["ariaPopup","target","addInitializer","instance","AriaPopupController","constructor","host","this","addController","trigger","TriggerController","focus","async","updateComplete","observer","listenForAttributeChange","updateTrigger","hidden","hostDisconnected","disconnect","expanded","current","hasAttribute","ariaExpanded","prev"],"mappings":"0HAWO,SAASA,IACZ,OAAQC,GAAWA,EAAOC,gBAAgBC,GAAa,IAAIC,EAAoBD,KAE5E,MAAMC,EACTC,YAAYC,GACRC,KAAKD,KAAOA,EACZC,KAAKD,KAAKE,cAAcD,MACxBA,KAAKE,QAAU,IAAIC,EAAkBH,KAAKD,KAAM,CAAEK,OAAO,IAE7DC,4BACUL,KAAKD,KAAKO,eAChBN,KAAKO,SAAWC,EAAyBR,KAAKD,KAAM,UAAU,IAAMC,KAAKS,eAAeT,KAAKD,KAAKW,UAEtGL,yBACUL,KAAKD,KAAKO,eAChBN,KAAKS,eAAeT,KAAKD,KAAKW,QAElCC,mBACIX,KAAKS,eAAc,GACnBT,KAAKO,UAAUK,aAEnBH,cAAcI,GACNb,KAAKE,QAAQY,SAASC,aAAa,WACnCf,KAAKE,QAAQY,QAAQE,aAAe,GAAGH,GAEvCb,KAAKE,QAAQe,MAAMF,aAAa,UAAYf,KAAKE,QAAQe,OAASjB,KAAKE,QAAQY,UAC/Ed,KAAKE,QAAQe,KAAKD,aAAe"}
@@ -1 +1 @@
1
- {"version":3,"file":"aria-pressed.controller.js","sources":["../../../../src/internal/controllers/aria-pressed.controller.ts"],"sourcesContent":null,"names":["ariaPressed","target","addInitializer","instance","AriaPressedController","[object Object]","host","this","addController","pressed","undefined","readonly"],"mappings":"AAIO,SAASA,IACZ,OAAQC,GAAWA,EAAOC,gBAAgBC,GAAa,IAAIC,EAAsBD,KAE9E,MAAMC,EACTC,YAAYC,GACRC,KAAKD,KAAOA,EACZC,KAAKD,KAAKE,cAAcD,MAE5BF,cAC8B,OAAtBE,KAAKD,KAAKG,cAA0CC,IAAtBH,KAAKD,KAAKG,UACxCF,KAAKD,KAAKN,YAAcO,KAAKD,KAAKG,QAAU,OAAS,SAErDF,KAAKD,KAAKK,WACVJ,KAAKD,KAAKN,YAAc"}
1
+ {"version":3,"file":"aria-pressed.controller.js","sources":["../../../../src/internal/controllers/aria-pressed.controller.ts"],"sourcesContent":["/*\n * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n/**\n * Provides all nessesary aria-* attributes to create valid pressed button states\n * https://sarahmhigley.com/writing/playing-with-state/\n */\nexport function ariaPressed() {\n return (target) => target.addInitializer((instance) => new AriaPressedController(instance));\n}\nexport class AriaPressedController {\n constructor(host) {\n this.host = host;\n this.host.addController(this);\n }\n hostUpdated() {\n if (this.host.pressed !== null && this.host.pressed !== undefined) {\n this.host.ariaPressed = this.host.pressed ? 'true' : 'false';\n }\n if (this.host.readonly) {\n this.host.ariaPressed = null;\n }\n }\n}\n"],"names":["ariaPressed","target","addInitializer","instance","AriaPressedController","constructor","host","this","addController","hostUpdated","pressed","undefined","readonly"],"mappings":"AASO,SAASA,IACZ,OAAQC,GAAWA,EAAOC,gBAAgBC,GAAa,IAAIC,EAAsBD,KAE9E,MAAMC,EACTC,YAAYC,GACRC,KAAKD,KAAOA,EACZC,KAAKD,KAAKE,cAAcD,MAE5BE,cAC8B,OAAtBF,KAAKD,KAAKI,cAA0CC,IAAtBJ,KAAKD,KAAKI,UACxCH,KAAKD,KAAKN,YAAcO,KAAKD,KAAKI,QAAU,OAAS,SAErDH,KAAKD,KAAKM,WACVL,KAAKD,KAAKN,YAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"aria-selected.controller.js","sources":["../../../../src/internal/controllers/aria-selected.controller.ts"],"sourcesContent":null,"names":["ariaSelected","target","addInitializer","instance","AriaSelectedController","[object Object]","host","this","addController","selected","undefined"],"mappings":"AAGO,SAASA,IACZ,OAAQC,GAAWA,EAAOC,gBAAgBC,GAAa,IAAIC,EAAuBD,KAE/E,MAAMC,EACTC,YAAYC,GACRC,KAAKD,KAAOA,EACZC,KAAKD,KAAKE,cAAcD,MAE5BF,cAC+B,OAAvBE,KAAKD,KAAKG,eAA4CC,IAAvBH,KAAKD,KAAKG,WACzCF,KAAKD,KAAKN,aAAeO,KAAKD,KAAKG,SAAW,OAAS"}
1
+ {"version":3,"file":"aria-selected.controller.js","sources":["../../../../src/internal/controllers/aria-selected.controller.ts"],"sourcesContent":["/*\n * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n/**\n * Provides all nessesary aria-* attributes to create valid aria selection state.\n */\nexport function ariaSelected() {\n return (target) => target.addInitializer((instance) => new AriaSelectedController(instance));\n}\nexport class AriaSelectedController {\n constructor(host) {\n this.host = host;\n this.host.addController(this);\n }\n hostUpdated() {\n if (this.host.selected !== null && this.host.selected !== undefined) {\n this.host.ariaSelected = this.host.selected ? 'true' : 'false';\n }\n }\n}\n"],"names":["ariaSelected","target","addInitializer","instance","AriaSelectedController","constructor","host","this","addController","hostUpdated","selected","undefined"],"mappings":"AAQO,SAASA,IACZ,OAAQC,GAAWA,EAAOC,gBAAgBC,GAAa,IAAIC,EAAuBD,KAE/E,MAAMC,EACTC,YAAYC,GACRC,KAAKD,KAAOA,EACZC,KAAKD,KAAKE,cAAcD,MAE5BE,cAC+B,OAAvBF,KAAKD,KAAKI,eAA4CC,IAAvBJ,KAAKD,KAAKI,WACzCH,KAAKD,KAAKN,aAAeO,KAAKD,KAAKI,SAAW,OAAS"}
@@ -17,6 +17,10 @@ export declare type ButtonAnchor = ReactiveElement & HTMLElement & {
17
17
  export declare function buttonAnchor<T extends ButtonAnchor>(): ClassDecorator;
18
18
  export declare class ButtonAnchorController<T extends ButtonAnchor> implements ReactiveController {
19
19
  private host;
20
+ private previousAnchor;
21
+ private get currentAnchor();
20
22
  constructor(host: T);
23
+ hostConnected(): void;
21
24
  hostUpdated(): void;
25
+ private setAnchor;
22
26
  }
@@ -1,2 +1,2 @@
1
- function t(){return t=>t.addInitializer((t=>new e(t)))}class e{constructor(t){this.host=t,this.host.addController(this)}hostUpdated(){const t="A"===this.host.parentElement?.tagName;t&&this.host.parentElement&&(this.host.readonly=t,this.host.parentElement.style.lineHeight="0",this.host.parentElement.style.textDecoration="none")}}export{e as ButtonAnchorController,t as buttonAnchor};
1
+ function t(){return t=>t.addInitializer((t=>new r(t)))}class r{constructor(t){this.host=t,this.host.addController(this)}get currentAnchor(){return"A"===this.host.parentElement?.tagName?this.host.parentElement:null}hostConnected(){this.setAnchor()}hostUpdated(){this.setAnchor()}setAnchor(){this.currentAnchor&&this.currentAnchor!==this.previousAnchor&&(this.previousAnchor=this.currentAnchor,this.host.readonly=!0,this.currentAnchor.style.lineHeight="0",this.currentAnchor.style.textDecoration="none")}}export{r as ButtonAnchorController,t as buttonAnchor};
2
2
  //# sourceMappingURL=button-anchor.controller.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"button-anchor.controller.js","sources":["../../../../src/internal/controllers/button-anchor.controller.ts"],"sourcesContent":null,"names":["buttonAnchor","target","addInitializer","instance","ButtonAnchorController","[object Object]","host","this","addController","hasAnchor","parentElement","tagName","readonly","style","lineHeight","textDecoration"],"mappings":"AAYO,SAASA,IACZ,OAAQC,GAAWA,EAAOC,gBAAgBC,GAAa,IAAIC,EAAuBD,KAE/E,MAAMC,EACTC,YAAYC,GACRC,KAAKD,KAAOA,EACZC,KAAKD,KAAKE,cAAcD,MAE5BF,cACI,MAAMI,EAAiD,MAArCF,KAAKD,KAAKI,eAAeC,QACvCF,GAAaF,KAAKD,KAAKI,gBACvBH,KAAKD,KAAKM,SAAWH,EACrBF,KAAKD,KAAKI,cAAcG,MAAMC,WAAa,IAC3CP,KAAKD,KAAKI,cAAcG,MAAME,eAAiB"}
1
+ {"version":3,"file":"button-anchor.controller.js","sources":["../../../../src/internal/controllers/button-anchor.controller.ts"],"sourcesContent":["/*\n * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n/**\n * Shim for allowing custom element button types to be wrapped with anchors as Safari prevents use of extending native element types.\n * Will detect presence of anchor and set component to a readonly button state.\n *\n * Example:\n *\n * ```html\n * <a href=\"#\">\n * <cds-button></cds-button>\n * </a>\n * ```\n */\nexport function buttonAnchor() {\n return (target) => target.addInitializer((instance) => new ButtonAnchorController(instance));\n}\nexport class ButtonAnchorController {\n constructor(host) {\n this.host = host;\n this.host.addController(this);\n }\n get currentAnchor() {\n return this.host.parentElement?.tagName === 'A' ? this.host.parentElement : null;\n }\n hostConnected() {\n this.setAnchor();\n }\n hostUpdated() {\n this.setAnchor();\n }\n setAnchor() {\n if (this.currentAnchor && this.currentAnchor !== this.previousAnchor) {\n this.previousAnchor = this.currentAnchor;\n this.host.readonly = true;\n this.currentAnchor.style.lineHeight = '0';\n this.currentAnchor.style.textDecoration = 'none'; // fixes issue when style is applied to text node\n }\n }\n}\n"],"names":["buttonAnchor","target","addInitializer","instance","ButtonAnchorController","constructor","host","this","addController","currentAnchor","parentElement","tagName","hostConnected","setAnchor","hostUpdated","previousAnchor","readonly","style","lineHeight","textDecoration"],"mappings":"AAiBO,SAASA,IACZ,OAAQC,GAAWA,EAAOC,gBAAgBC,GAAa,IAAIC,EAAuBD,KAE/E,MAAMC,EACTC,YAAYC,GACRC,KAAKD,KAAOA,EACZC,KAAKD,KAAKE,cAAcD,MAExBE,oBACA,MAA4C,MAArCF,KAAKD,KAAKI,eAAeC,QAAkBJ,KAAKD,KAAKI,cAAgB,KAEhFE,gBACIL,KAAKM,YAETC,cACIP,KAAKM,YAETA,YACQN,KAAKE,eAAiBF,KAAKE,gBAAkBF,KAAKQ,iBAClDR,KAAKQ,eAAiBR,KAAKE,cAC3BF,KAAKD,KAAKU,UAAW,EACrBT,KAAKE,cAAcQ,MAAMC,WAAa,IACtCX,KAAKE,cAAcQ,MAAME,eAAiB"}
@@ -1 +1 @@
1
- {"version":3,"file":"button-submit.controller.js","sources":["../../../../src/internal/controllers/button-submit.controller.ts"],"sourcesContent":null,"names":["buttonSubmit","target","addInitializer","instance","ButtonSubmitController","[object Object]","host","this","triggerNativeButtonBehaviorHandler","triggerNativeButtonBehavior","bind","emulateKeyBoardEventBehaviorHandler","emulateKeyBoardEventBehavior","addController","setButtonType","setupNativeButtonBehavior","type","closest","readonly","disabled","removeEventListener","addEventListener","evt","onAnyKey","click","stopEvent","event","defaultPrevented","submitButton","renderAfter","html","ifDefined","value","name","dispatchEvent","MouseEvent","relatedTarget","composed","remove"],"mappings":"iOAQO,SAASA,IACZ,OAAQC,GAAWA,EAAOC,gBAAgBC,GAAa,IAAIC,EAAuBD,KAE/E,MAAMC,EACTC,YAAYC,GACRC,KAAKD,KAAOA,EACZC,KAAKC,mCAAqCD,KAAKE,4BAA4BC,KAAKH,MAChFA,KAAKI,oCAAsCJ,KAAKK,6BAA6BF,KAAKH,MAClFA,KAAKD,KAAKO,cAAcN,MAE5BF,cACIE,KAAKO,gBACLP,KAAKQ,4BAETV,iBACSE,KAAKD,KAAKU,MAAQT,KAAKD,KAAKW,QAAQ,UACrCV,KAAKD,KAAKU,KAAO,UAGzBX,4BACQE,KAAKD,KAAKY,UAAYX,KAAKD,KAAKa,UAChCZ,KAAKD,KAAKc,oBAAoB,QAASb,KAAKC,oCAC5CD,KAAKD,KAAKc,oBAAoB,QAASb,KAAKI,uCAG5CJ,KAAKD,KAAKe,iBAAiB,QAASd,KAAKC,oCACzCD,KAAKD,KAAKe,iBAAiB,QAASd,KAAKI,sCAGjDN,6BAA6BiB,GACzBC,EAAS,CAAC,QAAS,SAAUD,GAAK,KAEP,WAAnBf,KAAKD,KAAKU,KACVT,KAAKE,4BAA4Ba,GAGjCf,KAAKD,KAAKkB,QAEdC,EAAUH,MAOlBjB,4BAA4BqB,GACxB,GAAInB,KAAKD,KAAKa,SACVM,EAAUC,QAET,IAAKA,EAAMC,iBAAkB,CAC9B,MAAMC,EAAeC,EAAYC,CAAK,6DAG3BvB,KAAKD,KAAKa,iEAGdY,EAAUxB,KAAKD,KAAK0B,iBACrBD,EAAUxB,KAAKD,KAAK2B,gBACpBF,EAAUxB,KAAKD,KAAKU,mBACjBT,KAAKD,MACdsB,GAAcM,cAAc,IAAIC,WAAW,QAAS,CAAEC,cAAe7B,KAAKD,KAAM+B,UAAU,KAC1FT,GAAcU"}
1
+ {"version":3,"file":"button-submit.controller.js","sources":["../../../../src/internal/controllers/button-submit.controller.ts"],"sourcesContent":["/*\n * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { html } from 'lit';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { stopEvent } from '../utils/events.js';\nimport { onAnyKey } from '../utils/keycodes.js';\nimport { renderAfter } from '../utils/lit.js';\n/**\n * Shim for allowing native submit type events with custom element buttons as Safari prevents use of extending native element types\n */\nexport function buttonSubmit() {\n return (target) => target.addInitializer((instance) => new ButtonSubmitController(instance));\n}\nexport class ButtonSubmitController {\n constructor(host) {\n this.host = host;\n this.triggerNativeButtonBehaviorHandler = this.triggerNativeButtonBehavior.bind(this);\n this.emulateKeyBoardEventBehaviorHandler = this.emulateKeyBoardEventBehavior.bind(this);\n this.host.addController(this);\n }\n hostUpdated() {\n this.setButtonType();\n this.setupNativeButtonBehavior();\n }\n setButtonType() {\n if (!this.host.type && this.host.closest('form')) {\n this.host.type = 'submit';\n }\n }\n setupNativeButtonBehavior() {\n if (this.host.readonly || this.host.disabled) {\n this.host.removeEventListener('click', this.triggerNativeButtonBehaviorHandler);\n this.host.removeEventListener('keyup', this.emulateKeyBoardEventBehaviorHandler);\n }\n else {\n this.host.addEventListener('click', this.triggerNativeButtonBehaviorHandler);\n this.host.addEventListener('keyup', this.emulateKeyBoardEventBehaviorHandler);\n }\n }\n emulateKeyBoardEventBehavior(evt) {\n onAnyKey(['enter', 'space'], evt, () => {\n // When submitting forms with Enter key, the default submit button receives a click event from the form.\n if (this.host.type === 'submit') {\n this.triggerNativeButtonBehavior(evt);\n }\n else {\n this.host.click();\n }\n stopEvent(evt);\n });\n }\n /**\n * We have to append a hidden button outside the web component in the light DOM\n * This allows us to trigger native submit events within a form element.\n */\n triggerNativeButtonBehavior(event) {\n if (this.host.disabled) {\n stopEvent(event);\n }\n else if (!event.defaultPrevented) {\n const submitButton = renderAfter(html `<button\n aria-hidden=\"true\"\n role=\"presentation\"\n ?disabled=\"${this.host.disabled}\"\n tabindex=\"-1\"\n style=\"display: none !important\"\n value=\"${ifDefined(this.host.value)}\"\n name=\"${ifDefined(this.host.name)}\"\n type=\"${ifDefined(this.host.type)}\"\n ></button>`, this.host);\n submitButton?.dispatchEvent(new MouseEvent('click', { relatedTarget: this.host, composed: true }));\n submitButton?.remove();\n }\n }\n}\n"],"names":["buttonSubmit","target","addInitializer","instance","ButtonSubmitController","constructor","host","this","triggerNativeButtonBehaviorHandler","triggerNativeButtonBehavior","bind","emulateKeyBoardEventBehaviorHandler","emulateKeyBoardEventBehavior","addController","hostUpdated","setButtonType","setupNativeButtonBehavior","type","closest","readonly","disabled","removeEventListener","addEventListener","evt","onAnyKey","click","stopEvent","event","defaultPrevented","submitButton","renderAfter","html","ifDefined","value","name","dispatchEvent","MouseEvent","relatedTarget","composed","remove"],"mappings":"iOAaO,SAASA,IACZ,OAAQC,GAAWA,EAAOC,gBAAgBC,GAAa,IAAIC,EAAuBD,KAE/E,MAAMC,EACTC,YAAYC,GACRC,KAAKD,KAAOA,EACZC,KAAKC,mCAAqCD,KAAKE,4BAA4BC,KAAKH,MAChFA,KAAKI,oCAAsCJ,KAAKK,6BAA6BF,KAAKH,MAClFA,KAAKD,KAAKO,cAAcN,MAE5BO,cACIP,KAAKQ,gBACLR,KAAKS,4BAETD,iBACSR,KAAKD,KAAKW,MAAQV,KAAKD,KAAKY,QAAQ,UACrCX,KAAKD,KAAKW,KAAO,UAGzBD,4BACQT,KAAKD,KAAKa,UAAYZ,KAAKD,KAAKc,UAChCb,KAAKD,KAAKe,oBAAoB,QAASd,KAAKC,oCAC5CD,KAAKD,KAAKe,oBAAoB,QAASd,KAAKI,uCAG5CJ,KAAKD,KAAKgB,iBAAiB,QAASf,KAAKC,oCACzCD,KAAKD,KAAKgB,iBAAiB,QAASf,KAAKI,sCAGjDC,6BAA6BW,GACzBC,EAAS,CAAC,QAAS,SAAUD,GAAK,KAEP,WAAnBhB,KAAKD,KAAKW,KACVV,KAAKE,4BAA4Bc,GAGjChB,KAAKD,KAAKmB,QAEdC,EAAUH,MAOlBd,4BAA4BkB,GACxB,GAAIpB,KAAKD,KAAKc,SACVM,EAAUC,QAET,IAAKA,EAAMC,iBAAkB,CAC9B,MAAMC,EAAeC,EAAYC,CAAK,6DAG3BxB,KAAKD,KAAKc,iEAGdY,EAAUzB,KAAKD,KAAK2B,iBACrBD,EAAUzB,KAAKD,KAAK4B,gBACpBF,EAAUzB,KAAKD,KAAKW,mBACjBV,KAAKD,MACduB,GAAcM,cAAc,IAAIC,WAAW,QAAS,CAAEC,cAAe9B,KAAKD,KAAMgC,UAAU,KAC1FT,GAAcU"}
@@ -1,29 +1,23 @@
1
- import { ReactiveControllerHost } from 'lit';
2
- interface ClosableConfig {
3
- escape?: boolean;
4
- lastFocus?: boolean;
5
- closable?: () => boolean;
1
+ import { ReactiveController, ReactiveElement } from 'lit';
2
+ export declare type CloseChangeType = 'focusout' | 'backdrop-click' | 'escape-keypress' | 'close-button-click' | 'custom';
3
+ export declare type Closable = ReactiveElement & {
4
+ trigger?: HTMLElement;
5
+ };
6
+ export interface ClosableControllerConfig {
7
+ escape: boolean;
8
+ focusout: boolean;
6
9
  }
7
10
  /**
8
11
  * Given a closable component provides the following
9
12
  * - close on escape
10
- * - focus to trigger
11
- * - close method for component specific events
13
+ * - close on focusout
14
+ * - close on custom event
12
15
  */
13
- export declare class ClosableController {
16
+ export declare function closable<T extends Closable>(config?: Partial<ClosableControllerConfig>): ClassDecorator;
17
+ export declare class ClosableController<T extends Closable> implements ReactiveController {
14
18
  private host;
15
19
  private config;
16
- private observer;
17
- priorActiveElement: HTMLElement;
18
- private get isFocusTrapper();
19
- constructor(host: ReactiveControllerHost & HTMLElement, config?: ClosableConfig);
20
+ constructor(host: T, config?: Partial<ClosableControllerConfig>);
20
21
  hostConnected(): void;
21
- hostDisconnected(): void;
22
22
  close(detail?: any): void;
23
- private setFocusTrap;
24
- private removeFocusTrap;
25
- private togglePriorActiveElement;
26
- private setPriorActiveElement;
27
- private keyEvent;
28
23
  }
29
- export {};
@@ -1,2 +1,2 @@
1
- import{listenForAttributeChange as t}from"../utils/events.js";import{ignoreFocusTrap as s}from"./utils/first-focus.controller.utils.js";import{FocusTrapTrackerService as e}from"../services/focus-trap-tracker.service.js";class o{constructor(t,s){this.host=t,this.config={escape:!0,lastFocus:!0,closable:()=>!0,...s},this.host.addController(this)}get isFocusTrapper(){return this.host.focusTrapId&&!s(this.host)}hostConnected(){this.togglePriorActiveElement(),this.host.addEventListener("keyup",(t=>this.keyEvent(t))),this.observer=t(this.host,"hidden",(()=>this.togglePriorActiveElement()))}hostDisconnected(){this.priorActiveElement?.focus(),this.removeFocusTrap(),this.observer.disconnect()}close(t){this.config&&this.config.closable&&this.config.closable()&&(this.host.closeChange?this.host.closeChange.emit(t):this.host.dispatchEvent(new CustomEvent("closeChange",{detail:t})))}setFocusTrap(){this.isFocusTrapper&&e.setCurrent({focusTrapId:this.host.focusTrapId})}removeFocusTrap(){this.isFocusTrapper&&e.removeTrapElement({focusTrapId:this.host.focusTrapId})}togglePriorActiveElement(){this.host.hidden&&this.config.lastFocus?(this.removeFocusTrap(),this.priorActiveElement?.focus()):(this.setFocusTrap(),this.setPriorActiveElement())}setPriorActiveElement(){this.priorActiveElement=this.host.getRootNode().activeElement}keyEvent(t){this.config.escape&&"Escape"===t.code&&(t.preventDefault(),t.stopPropagation(),this.close("escape-keypress"))}}export{o as ClosableController};
1
+ import{onEscape as s,onFocusOut as t}from"../utils/focus.js";function o(s={}){return t=>{t.addInitializer((t=>{t.closableController||(t.closableController=new e(t,s))}))}}class e{constructor(s,t={}){this.host=s,this.config={escape:!0,focusout:!1,...t},this.host.addController(this)}hostConnected(){this.config.escape&&s(this.host,(()=>this.close("escape-keypress"))),this.config.focusout&&(this.host.tabIndex=0,t(this.host,(()=>this.close("focusout"))))}close(s){this.host.dispatchEvent(new CustomEvent("closeChange",{detail:s}))}}export{e as ClosableController,o as closable};
2
2
  //# sourceMappingURL=closable.controller.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"closable.controller.js","sources":["../../../../src/internal/controllers/closable.controller.ts"],"sourcesContent":null,"names":["ClosableController","[object Object]","host","config","this","escape","lastFocus","closable","addController","isFocusTrapper","focusTrapId","ignoreFocusTrap","togglePriorActiveElement","addEventListener","e","keyEvent","observer","listenForAttributeChange","priorActiveElement","focus","removeFocusTrap","disconnect","detail","closeChange","emit","dispatchEvent","CustomEvent","FocusTrapTrackerService","setCurrent","removeTrapElement","hidden","setFocusTrap","setPriorActiveElement","getRootNode","activeElement","code","preventDefault","stopPropagation","close"],"mappings":"4NASO,MAAMA,EACTC,YAAYC,EAAMC,GACdC,KAAKF,KAAOA,EACZE,KAAKD,OAAS,CAAEE,QAAQ,EAAMC,WAAW,EAAMC,SAAU,KAAM,KAASJ,GACxEC,KAAKF,KAAKM,cAAcJ,MAE5BK,qBACI,OAAOL,KAAKF,KAAKQ,cAAgBC,EAAgBP,KAAKF,MAE1DD,gBACIG,KAAKQ,2BACLR,KAAKF,KAAKW,iBAAiB,SAAUC,GAAMV,KAAKW,SAASD,KACzDV,KAAKY,SAAWC,EAAyBb,KAAKF,KAAM,UAAU,IAAME,KAAKQ,6BAE7EX,mBACIG,KAAKc,oBAAoBC,QACzBf,KAAKgB,kBACLhB,KAAKY,SAASK,aAElBpB,MAAMqB,GACElB,KAAKD,QAAUC,KAAKD,OAAOI,UAAYH,KAAKD,OAAOI,aAE/CH,KAAKF,KAAKqB,YACVnB,KAAKF,KAAKqB,YAAYC,KAAKF,GAG3BlB,KAAKF,KAAKuB,cAAc,IAAIC,YAAY,cAAe,CAAEJ,OAAAA,MAIrErB,eACQG,KAAKK,gBACLkB,EAAwBC,WAAW,CAAElB,YAAaN,KAAKF,KAAKQ,cAGpET,kBACQG,KAAKK,gBACLkB,EAAwBE,kBAAkB,CAAEnB,YAAaN,KAAKF,KAAKQ,cAG3ET,2BACQG,KAAKF,KAAK4B,QAAU1B,KAAKD,OAAOG,WAChCF,KAAKgB,kBACLhB,KAAKc,oBAAoBC,UAGzBf,KAAK2B,eACL3B,KAAK4B,yBAGb/B,wBACIG,KAAKc,mBAAqBd,KAAKF,KAAK+B,cAAcC,cAEtDjC,SAASa,GACDV,KAAKD,OAAOE,QAAqB,WAAXS,EAAEqB,OACxBrB,EAAEsB,iBACFtB,EAAEuB,kBACFjC,KAAKkC,MAAM"}
1
+ {"version":3,"file":"closable.controller.js","sources":["../../../../src/internal/controllers/closable.controller.ts"],"sourcesContent":["/*\n * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { onEscape, onFocusOut } from '../utils/focus.js';\n/**\n * Given a closable component provides the following\n * - close on escape\n * - close on focusout\n * - close on custom event\n */\nexport function closable(config = {}) {\n return (target) => {\n target.addInitializer((instance) => {\n if (!instance.closableController) {\n instance.closableController = new ClosableController(instance, config);\n }\n });\n };\n}\nexport class ClosableController {\n constructor(host, config = {}) {\n this.host = host;\n this.config = { escape: true, focusout: false, ...config };\n this.host.addController(this);\n }\n hostConnected() {\n if (this.config.escape) {\n onEscape(this.host, () => this.close('escape-keypress'));\n }\n if (this.config.focusout) {\n this.host.tabIndex = 0; // for a11y focus out https://stackoverflow.com/questions/152975/how-do-i-detect-a-click-outside-an-element\n onFocusOut(this.host, () => this.close('focusout'));\n }\n }\n close(detail) {\n this.host.dispatchEvent(new CustomEvent('closeChange', { detail }));\n }\n}\n"],"names":["closable","config","target","addInitializer","instance","closableController","ClosableController","constructor","host","this","escape","focusout","addController","hostConnected","onEscape","close","tabIndex","onFocusOut","detail","dispatchEvent","CustomEvent"],"mappings":"6DAYO,SAASA,EAASC,EAAS,IAC9B,OAAQC,IACJA,EAAOC,gBAAgBC,IACdA,EAASC,qBACVD,EAASC,mBAAqB,IAAIC,EAAmBF,EAAUH,QAKxE,MAAMK,EACTC,YAAYC,EAAMP,EAAS,IACvBQ,KAAKD,KAAOA,EACZC,KAAKR,OAAS,CAAES,QAAQ,EAAMC,UAAU,KAAUV,GAClDQ,KAAKD,KAAKI,cAAcH,MAE5BI,gBACQJ,KAAKR,OAAOS,QACZI,EAASL,KAAKD,MAAM,IAAMC,KAAKM,MAAM,qBAErCN,KAAKR,OAAOU,WACZF,KAAKD,KAAKQ,SAAW,EACrBC,EAAWR,KAAKD,MAAM,IAAMC,KAAKM,MAAM,eAG/CA,MAAMG,GACFT,KAAKD,KAAKW,cAAc,IAAIC,YAAY,cAAe,CAAEF,OAAAA"}
@@ -0,0 +1,32 @@
1
+ import { ReactiveController, ReactiveElement } from 'lit';
2
+ export declare type DraggableItem = HTMLElement & {
3
+ cdsDraggableItem?: 'item' | 'dropzone';
4
+ };
5
+ /**
6
+ * Provides support for HTML5 native drag and drop to a component
7
+ */
8
+ export declare function draggableList<T extends ReactiveElement>(config?: DraggableListControllerConfig): ClassDecorator;
9
+ export interface DraggableListControllerConfig {
10
+ layout?: 'both' | 'horizontal' | 'vertical';
11
+ item?: string;
12
+ dropZone?: string;
13
+ manageFocus?: boolean;
14
+ manageTabindex?: boolean;
15
+ }
16
+ export declare type CdsDraggableChangeType = 'grabbed' | 'dropped' | 'reordered';
17
+ export declare type CdsDraggableInteractionType = 'touch' | 'key';
18
+ export declare class DraggableListController<T extends ReactiveElement> implements ReactiveController {
19
+ private host;
20
+ private get items();
21
+ private get dropZones();
22
+ private observer;
23
+ private config;
24
+ private id;
25
+ constructor(host: T, config?: DraggableListControllerConfig);
26
+ hostConnected(): Promise<void>;
27
+ hostDisconnected(): void;
28
+ private initializeKeyListController;
29
+ private clickItem;
30
+ private focusItem;
31
+ private addDragEventListeners;
32
+ }
@@ -0,0 +1,2 @@
1
+ import{querySelectorRoots as e}from"../utils/dom.js";import{onFirstInteraction as t,onChildListMutation as r}from"../utils/events.js";import{createId as a}from"../utils/identity.js";import{KeyNavigationListController as s}from"./key-navigation-list.controller.js";let i=null;function d(e){return t=>t.addInitializer((t=>new n(t,e)))}class n{constructor(e,t){this.host=e,this.id="__"+a(),this.host.addController(this),this.config={layout:"both",item:"",dropZone:"",manageFocus:!0,manageTabindex:!1,...t}}get items(){return e(this.host,this.config.item+'[draggable="true"]')}get dropZones(){return e(this.host,this.config.dropZone+'[draggable="false"]')}async hostConnected(){await this.host.updateComplete,t(this.host).then((()=>{this.addDragEventListeners(this.items),this.initializeKeyListController(),this.host.addEventListener("click",(async e=>this.clickItem(e))),this.host.addEventListener("cdsKeyChange",(e=>this.focusItem(e))),this.host.shadowRoot?.addEventListener("click",(async e=>this.clickItem(e))),this.host.shadowRoot?.addEventListener("cdsKeyChange",(e=>this.focusItem(e))),this.observer=r(this.host,(e=>{if(e){const t=Array.from(e.addedNodes).filter((e=>e.draggable));t.length&&this.addDragEventListeners(t)}}))}))}hostDisconnected(){this.observer?.disconnect()}initializeKeyListController(){Object.defineProperty(this.host,this.id,{get:()=>this.items.map((e=>e.querySelector("[cds-draggable]")))}),new s(this.host,{layout:this.config.layout,keyListItems:this.id,manageFocus:this.config.manageFocus,manageTabindex:this.config.manageTabindex})}clickItem(e){const t=Array.from(e.composedPath()).find((e=>e.getAttribute&&"handle"===e.getAttribute("cds-draggable"))),r=e.composedPath()[0].closest("[draggable]");t&&r&&("true"===t.ariaPressed?(r.setAttribute("cds-draggable","active"),o(e.currentTarget,r,null,"grabbed","touch")):"false"===t.ariaPressed&&(r.removeAttribute("cds-draggable"),o(e.currentTarget,r,null,"dropped","touch")))}focusItem(e){if(e.detail.keyListItems===this.id&&"active"===e.detail.previousItem?.closest("[draggable]").getAttribute("cds-draggable")){const t=e.detail.previousItem?.closest("[draggable]"),r=e.detail.activeItem.closest("[draggable]");"handle"===e.detail.activeItem.getAttribute("cds-draggable")&&t!==r&&(e.detail.previousItem.ariaPressed="false",e.detail.activeItem.ariaPressed="true",e.detail.previousItem.pressed=!1,e.detail.activeItem.pressed=!0,t.removeAttribute("cds-draggable"),r.setAttribute("cds-draggable","active"),o(e.detail.activeItem,t,r,"reordered","key"))}}addDragEventListeners(e){e.filter((e=>!e.cdsDraggableItem)).forEach((e=>{return(t=e).cdsDraggableItem="item",t.addEventListener("dragstart",g,!1),t.addEventListener("dragover",c,!1),t.addEventListener("drop",l,!1),t.addEventListener("dragleave",u,!1),void t.addEventListener("dragend",(e=>e.currentTarget.removeAttribute("cds-draggable")),!1);var t})),this.dropZones.filter((e=>!e.cdsDraggableItem)).forEach((e=>{e.addEventListener("dragover",c,!1),e.addEventListener("dragleave",u,!1),e.addEventListener("drop",l,!1),e.cdsDraggableItem="dropzone"}))}}async function o(e,t,r,a,s){e?.updateComplete&&await e.updateComplete,e.dispatchEvent(new CustomEvent("cdsDraggableChange",{detail:{from:t,target:r,type:a,interaction:s},bubbles:!0}))}function g(e){i=e.currentTarget,e.dataTransfer.effectAllowed="move",e.dataTransfer.setDragImage(e.currentTarget,0,0),e.currentTarget.setAttribute("cds-draggable","active"),o(e.currentTarget,e.currentTarget,null,"grabbed","touch")}function c(e){return e.preventDefault&&e.preventDefault(),e.dataTransfer.dropEffect="move",i!==e.currentTarget&&e.currentTarget.setAttribute("cds-draggable","target"),!1}function l(e){const t=i,r=e.currentTarget;return t?.removeAttribute("cds-draggable"),r?.removeAttribute("cds-draggable"),o(e.currentTarget,t,r,"reordered","touch"),!1}function u(e){"target"===e.currentTarget.getAttribute("cds-draggable")&&e.currentTarget.removeAttribute("cds-draggable")}export{n as DraggableListController,d as draggableList};
2
+ //# sourceMappingURL=draggable-list.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draggable-list.controller.js","sources":["../../../../src/internal/controllers/draggable-list.controller.ts"],"sourcesContent":["/*\n * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { querySelectorRoots } from '../utils/dom.js';\nimport { onChildListMutation, onFirstInteraction } from '../utils/events.js';\nimport { createId } from '../utils/identity.js';\nimport { KeyNavigationListController } from './key-navigation-list.controller.js';\nlet dragSrcEl = null;\n/**\n * Provides support for HTML5 native drag and drop to a component\n */\nexport function draggableList(config) {\n return (target) => target.addInitializer((instance) => new DraggableListController(instance, config));\n}\nexport class DraggableListController {\n constructor(host, config) {\n this.host = host;\n this.id = `__${createId()}`;\n this.host.addController(this);\n this.config = {\n layout: 'both',\n item: '',\n dropZone: '',\n manageFocus: true,\n manageTabindex: false,\n ...config,\n };\n }\n get items() {\n return querySelectorRoots(this.host, `${this.config.item}[draggable=\"true\"]`);\n }\n get dropZones() {\n return querySelectorRoots(this.host, `${this.config.dropZone}[draggable=\"false\"]`);\n }\n async hostConnected() {\n await this.host.updateComplete;\n onFirstInteraction(this.host).then(() => {\n this.addDragEventListeners(this.items);\n this.initializeKeyListController();\n this.host.addEventListener('click', async (e) => this.clickItem(e));\n this.host.addEventListener('cdsKeyChange', (e) => this.focusItem(e));\n this.host.shadowRoot?.addEventListener('click', async (e) => this.clickItem(e));\n this.host.shadowRoot?.addEventListener('cdsKeyChange', (e) => this.focusItem(e));\n this.observer = onChildListMutation(this.host, mutation => {\n if (mutation) {\n const items = Array.from(mutation.addedNodes).filter(i => i.draggable);\n if (items.length) {\n this.addDragEventListeners(items);\n }\n }\n });\n });\n }\n hostDisconnected() {\n this.observer?.disconnect();\n }\n initializeKeyListController() {\n Object.defineProperty(this.host, this.id, { get: () => this.items.map(i => i.querySelector('[cds-draggable]')) });\n new KeyNavigationListController(this.host, {\n layout: this.config.layout,\n keyListItems: this.id,\n manageFocus: this.config.manageFocus,\n manageTabindex: this.config.manageTabindex,\n });\n }\n clickItem(e) {\n const handle = Array.from(e.composedPath()).find((e) => e.getAttribute && e.getAttribute('cds-draggable') === 'handle');\n const from = e.composedPath()[0].closest('[draggable]');\n if (handle && from) {\n if (handle.ariaPressed === 'true') {\n from.setAttribute('cds-draggable', 'active');\n dispatchDraggableChange(e.currentTarget, from, null, 'grabbed', 'touch');\n }\n else if (handle.ariaPressed === 'false') {\n from.removeAttribute('cds-draggable');\n dispatchDraggableChange(e.currentTarget, from, null, 'dropped', 'touch');\n }\n }\n }\n focusItem(e) {\n if (e.detail.keyListItems === this.id &&\n e.detail.previousItem?.closest('[draggable]').getAttribute('cds-draggable') === 'active') {\n const from = e.detail.previousItem?.closest('[draggable]');\n const target = e.detail.activeItem.closest('[draggable]');\n if (e.detail.activeItem.getAttribute('cds-draggable') === 'handle' && from !== target) {\n e.detail.previousItem.ariaPressed = 'false';\n e.detail.activeItem.ariaPressed = 'true';\n e.detail.previousItem.pressed = false;\n e.detail.activeItem.pressed = true;\n from.removeAttribute('cds-draggable');\n target.setAttribute('cds-draggable', 'active');\n dispatchDraggableChange(e.detail.activeItem, from, target, 'reordered', 'key');\n }\n }\n }\n addDragEventListeners(items) {\n items.filter(i => !i.cdsDraggableItem).forEach(item => addHandlers(item));\n this.dropZones\n .filter(i => !i.cdsDraggableItem)\n .forEach(elem => {\n elem.addEventListener('dragover', handleDragOver, false);\n elem.addEventListener('dragleave', handleDragLeave, false);\n elem.addEventListener('drop', handleDrop, false);\n elem.cdsDraggableItem = 'dropzone';\n });\n }\n}\nasync function dispatchDraggableChange(host, from, target, type, interaction) {\n if (host?.updateComplete) {\n await host.updateComplete;\n }\n host.dispatchEvent(new CustomEvent('cdsDraggableChange', { detail: { from, target, type, interaction }, bubbles: true }));\n}\nfunction handleDragStart(e) {\n dragSrcEl = e.currentTarget;\n e.dataTransfer.effectAllowed = 'move';\n e.dataTransfer.setDragImage(e.currentTarget, 0, 0);\n e.currentTarget.setAttribute('cds-draggable', 'active');\n dispatchDraggableChange(e.currentTarget, e.currentTarget, null, 'grabbed', 'touch');\n}\nfunction handleDragOver(e) {\n if (e.preventDefault) {\n e.preventDefault();\n }\n e.dataTransfer.dropEffect = 'move';\n if (dragSrcEl !== e.currentTarget) {\n e.currentTarget.setAttribute('cds-draggable', 'target');\n }\n return false;\n}\nfunction handleDrop(e) {\n const from = dragSrcEl;\n const target = e.currentTarget;\n from?.removeAttribute('cds-draggable');\n target?.removeAttribute('cds-draggable');\n dispatchDraggableChange(e.currentTarget, from, target, 'reordered', 'touch');\n return false;\n}\nfunction handleDragLeave(e) {\n if (e.currentTarget.getAttribute('cds-draggable') === 'target') {\n e.currentTarget.removeAttribute('cds-draggable');\n }\n}\nfunction addHandlers(elem) {\n elem.cdsDraggableItem = 'item';\n elem.addEventListener('dragstart', handleDragStart, false);\n elem.addEventListener('dragover', handleDragOver, false);\n elem.addEventListener('drop', handleDrop, false);\n elem.addEventListener('dragleave', handleDragLeave, false);\n elem.addEventListener('dragend', (e) => e.currentTarget.removeAttribute('cds-draggable'), false);\n}\n"],"names":["dragSrcEl","draggableList","config","target","addInitializer","instance","DraggableListController","constructor","host","this","id","createId","addController","layout","item","dropZone","manageFocus","manageTabindex","items","querySelectorRoots","dropZones","async","updateComplete","onFirstInteraction","then","addDragEventListeners","initializeKeyListController","addEventListener","e","clickItem","focusItem","shadowRoot","observer","onChildListMutation","mutation","Array","from","addedNodes","filter","i","draggable","length","hostDisconnected","disconnect","Object","defineProperty","get","map","querySelector","KeyNavigationListController","keyListItems","handle","composedPath","find","getAttribute","closest","ariaPressed","setAttribute","dispatchDraggableChange","currentTarget","removeAttribute","detail","previousItem","activeItem","pressed","cdsDraggableItem","forEach","addHandlers","elem","handleDragStart","handleDragOver","handleDrop","handleDragLeave","type","interaction","dispatchEvent","CustomEvent","bubbles","dataTransfer","effectAllowed","setDragImage","preventDefault","dropEffect"],"mappings":"wQASA,IAAIA,EAAY,KAIT,SAASC,EAAcC,GAC1B,OAAQC,GAAWA,EAAOC,gBAAgBC,GAAa,IAAIC,EAAwBD,EAAUH,KAE1F,MAAMI,EACTC,YAAYC,EAAMN,GACdO,KAAKD,KAAOA,EACZC,KAAKC,GAAK,KAAKC,IACfF,KAAKD,KAAKI,cAAcH,MACxBA,KAAKP,OAAS,CACVW,OAAQ,OACRC,KAAM,GACNC,SAAU,GACVC,aAAa,EACbC,gBAAgB,KACbf,GAGPgB,YACA,OAAOC,EAAmBV,KAAKD,KAASC,KAAKP,OAAOY,KAAf,sBAErCM,gBACA,OAAOD,EAAmBV,KAAKD,KAASC,KAAKP,OAAOa,SAAf,uBAEzCM,4BACUZ,KAAKD,KAAKc,eAChBC,EAAmBd,KAAKD,MAAMgB,MAAK,KAC/Bf,KAAKgB,sBAAsBhB,KAAKS,OAChCT,KAAKiB,8BACLjB,KAAKD,KAAKmB,iBAAiB,SAASN,MAAOO,GAAMnB,KAAKoB,UAAUD,KAChEnB,KAAKD,KAAKmB,iBAAiB,gBAAiBC,GAAMnB,KAAKqB,UAAUF,KACjEnB,KAAKD,KAAKuB,YAAYJ,iBAAiB,SAASN,MAAOO,GAAMnB,KAAKoB,UAAUD,KAC5EnB,KAAKD,KAAKuB,YAAYJ,iBAAiB,gBAAiBC,GAAMnB,KAAKqB,UAAUF,KAC7EnB,KAAKuB,SAAWC,EAAoBxB,KAAKD,MAAM0B,IAC3C,GAAIA,EAAU,CACV,MAAMhB,EAAQiB,MAAMC,KAAKF,EAASG,YAAYC,QAAOC,GAAKA,EAAEC,YACxDtB,EAAMuB,QACNhC,KAAKgB,sBAAsBP,UAM/CwB,mBACIjC,KAAKuB,UAAUW,aAEnBjB,8BACIkB,OAAOC,eAAepC,KAAKD,KAAMC,KAAKC,GAAI,CAAEoC,IAAK,IAAMrC,KAAKS,MAAM6B,KAAIR,GAAKA,EAAES,cAAc,uBAC3F,IAAIC,EAA4BxC,KAAKD,KAAM,CACvCK,OAAQJ,KAAKP,OAAOW,OACpBqC,aAAczC,KAAKC,GACnBM,YAAaP,KAAKP,OAAOc,YACzBC,eAAgBR,KAAKP,OAAOe,iBAGpCY,UAAUD,GACN,MAAMuB,EAAShB,MAAMC,KAAKR,EAAEwB,gBAAgBC,MAAMzB,GAAMA,EAAE0B,cAAoD,WAApC1B,EAAE0B,aAAa,mBACnFlB,EAAOR,EAAEwB,eAAe,GAAGG,QAAQ,eACrCJ,GAAUf,IACiB,SAAvBe,EAAOK,aACPpB,EAAKqB,aAAa,gBAAiB,UACnCC,EAAwB9B,EAAE+B,cAAevB,EAAM,KAAM,UAAW,UAEpC,UAAvBe,EAAOK,cACZpB,EAAKwB,gBAAgB,iBACrBF,EAAwB9B,EAAE+B,cAAevB,EAAM,KAAM,UAAW,WAI5EN,UAAUF,GACN,GAAIA,EAAEiC,OAAOX,eAAiBzC,KAAKC,IACiD,WAAhFkB,EAAEiC,OAAOC,cAAcP,QAAQ,eAAeD,aAAa,iBAA+B,CAC1F,MAAMlB,EAAOR,EAAEiC,OAAOC,cAAcP,QAAQ,eACtCpD,EAASyB,EAAEiC,OAAOE,WAAWR,QAAQ,eACe,WAAtD3B,EAAEiC,OAAOE,WAAWT,aAAa,kBAAiClB,IAASjC,IAC3EyB,EAAEiC,OAAOC,aAAaN,YAAc,QACpC5B,EAAEiC,OAAOE,WAAWP,YAAc,OAClC5B,EAAEiC,OAAOC,aAAaE,SAAU,EAChCpC,EAAEiC,OAAOE,WAAWC,SAAU,EAC9B5B,EAAKwB,gBAAgB,iBACrBzD,EAAOsD,aAAa,gBAAiB,UACrCC,EAAwB9B,EAAEiC,OAAOE,WAAY3B,EAAMjC,EAAQ,YAAa,SAIpFsB,sBAAsBP,GAClBA,EAAMoB,QAAOC,IAAMA,EAAE0B,mBAAkBC,SAAQpD,IAAQqD,OA+C1CC,EA/CsDtD,GAgDlEmD,iBAAmB,OACxBG,EAAKzC,iBAAiB,YAAa0C,GAAiB,GACpDD,EAAKzC,iBAAiB,WAAY2C,GAAgB,GAClDF,EAAKzC,iBAAiB,OAAQ4C,GAAY,GAC1CH,EAAKzC,iBAAiB,YAAa6C,GAAiB,QACpDJ,EAAKzC,iBAAiB,WAAYC,GAAMA,EAAE+B,cAAcC,gBAAgB,mBAAkB,GAN9F,IAAqBQ,KA9Cb3D,KAAKW,UACAkB,QAAOC,IAAMA,EAAE0B,mBACfC,SAAQE,IACTA,EAAKzC,iBAAiB,WAAY2C,GAAgB,GAClDF,EAAKzC,iBAAiB,YAAa6C,GAAiB,GACpDJ,EAAKzC,iBAAiB,OAAQ4C,GAAY,GAC1CH,EAAKH,iBAAmB,eAIpC5C,eAAeqC,EAAwBlD,EAAM4B,EAAMjC,EAAQsE,EAAMC,GACzDlE,GAAMc,sBACAd,EAAKc,eAEfd,EAAKmE,cAAc,IAAIC,YAAY,qBAAsB,CAAEf,OAAQ,CAAEzB,KAAAA,EAAMjC,OAAAA,EAAQsE,KAAAA,EAAMC,YAAAA,GAAeG,SAAS,KAErH,SAASR,EAAgBzC,GACrB5B,EAAY4B,EAAE+B,cACd/B,EAAEkD,aAAaC,cAAgB,OAC/BnD,EAAEkD,aAAaE,aAAapD,EAAE+B,cAAe,EAAG,GAChD/B,EAAE+B,cAAcF,aAAa,gBAAiB,UAC9CC,EAAwB9B,EAAE+B,cAAe/B,EAAE+B,cAAe,KAAM,UAAW,SAE/E,SAASW,EAAe1C,GAQpB,OAPIA,EAAEqD,gBACFrD,EAAEqD,iBAENrD,EAAEkD,aAAaI,WAAa,OACxBlF,IAAc4B,EAAE+B,eAChB/B,EAAE+B,cAAcF,aAAa,gBAAiB,WAE3C,EAEX,SAASc,EAAW3C,GAChB,MAAMQ,EAAOpC,EACPG,EAASyB,EAAE+B,cAIjB,OAHAvB,GAAMwB,gBAAgB,iBACtBzD,GAAQyD,gBAAgB,iBACxBF,EAAwB9B,EAAE+B,cAAevB,EAAMjC,EAAQ,YAAa,UAC7D,EAEX,SAASqE,EAAgB5C,GACiC,WAAlDA,EAAE+B,cAAcL,aAAa,kBAC7B1B,EAAE+B,cAAcC,gBAAgB"}
@@ -1,12 +1,16 @@
1
- import { LitElement } from 'lit';
1
+ import { ReactiveController, ReactiveElement } from 'lit';
2
+ export interface FirstFocusConfig {
3
+ fallback: 'none' | 'host' | 'focusable';
4
+ }
2
5
  /**
3
6
  * Provides a focus first behavior to any component via the cds-first-focus attribute
4
7
  */
5
- export declare class FirstFocusController {
8
+ export declare function firstFocus<T extends ReactiveElement>(config?: FirstFocusConfig): ClassDecorator;
9
+ export declare class FirstFocusController<T extends ReactiveElement> implements ReactiveController {
6
10
  private host;
11
+ private config;
7
12
  private observer;
8
- constructor(host: LitElement);
9
- private get focusableItems();
13
+ constructor(host: T, config?: FirstFocusConfig);
10
14
  hostConnected(): Promise<void>;
11
15
  hostDisconnected(): void;
12
16
  private cdsFocusFirst;
@@ -1,2 +1,2 @@
1
- import{listenForAttributeChange as s}from"../utils/events.js";import{getFocusableItems as t}from"../utils/traversal.js";import{ignoreFocusTrap as o,getItemToFocus as r}from"./utils/first-focus.controller.utils.js";import{FocusTrapTrackerService as e}from"../services/focus-trap-tracker.service.js";class i{constructor(s){this.host=s,this.host.addController(this)}get focusableItems(){return t(this.host)}async hostConnected(){await this.host.updateComplete,this.observer=s(this.host,"hidden",(()=>this.cdsFocusFirst())),this.cdsFocusFirst()}hostDisconnected(){const s=this.host.focusTrapId;s&&e.removeTrapElement({focusTrapId:s}),this.observer.disconnect()}cdsFocusFirst(){this.host.hidden||o(this.host)||r(this.host,this.focusableItems).focus()}}export{i as FirstFocusController};
1
+ import{ignoreFocus as s,focusable as t,focusElement as o}from"../utils/focus.js";import{listenForAttributeChange as i}from"../utils/events.js";import{getFlattenedDOMTree as c}from"../utils/traversal.js";function h(s={fallback:"focusable"}){return t=>t.addInitializer((t=>new e(t,s)))}class e{constructor(s,t={fallback:"focusable"}){this.host=s,this.config=t,this.host.addController(this)}async hostConnected(){await this.host.updateComplete,this.observer=i(this.host,"hidden",(()=>this.cdsFocusFirst())),this.cdsFocusFirst()}hostDisconnected(){this.observer?.disconnect()}cdsFocusFirst(){if(!s(this.host)){const s=this.host.shadowRoot?this.host.shadowRoot:this.host,i=s.querySelector(".private-host")??this.host,h=c(s).filter((s=>!s.hasAttribute("cds-focus-boundary"))),e=h.find((s=>s.hasAttribute("cds-first-focus"))),r="focusable"===this.config.fallback?h.find((s=>t(s)&&!s.classList.contains("private-host"))):null,a="none"===this.config.fallback?null:i,n=e??r??a;n&&o(n)}}}export{e as FirstFocusController,h as firstFocus};
2
2
  //# sourceMappingURL=first-focus.controller.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"first-focus.controller.js","sources":["../../../../src/internal/controllers/first-focus.controller.ts"],"sourcesContent":null,"names":["FirstFocusController","[object Object]","host","this","addController","focusableItems","getFocusableItems","updateComplete","observer","listenForAttributeChange","cdsFocusFirst","hostFocusTrapId","focusTrapId","FocusTrapTrackerService","removeTrapElement","disconnect","hidden","ignoreFocusTrap","getItemToFocus","focus"],"mappings":"0SAOO,MAAMA,EACTC,YAAYC,GACRC,KAAKD,KAAOA,EACZC,KAAKD,KAAKE,cAAcD,MAE5BE,qBACI,OAAOC,EAAkBH,KAAKD,MAElCD,4BACUE,KAAKD,KAAKK,eAChBJ,KAAKK,SAAWC,EAAyBN,KAAKD,KAAM,UAAU,IAAMC,KAAKO,kBACzEP,KAAKO,gBAETT,mBACI,MAAMU,EAAkBR,KAAKD,KAAKU,YAC9BD,GAEAE,EAAwBC,kBAAkB,CAAEF,YAAaD,IAE7DR,KAAKK,SAASO,aAElBd,gBACQE,KAAKD,KAAKc,QAAUC,EAAgBd,KAAKD,OAG7CgB,EAAef,KAAKD,KAAMC,KAAKE,gBAAgBc"}
1
+ {"version":3,"file":"first-focus.controller.js","sources":["../../../../src/internal/controllers/first-focus.controller.ts"],"sourcesContent":["/*\n * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { focusable, focusElement, ignoreFocus } from '../utils/focus.js';\nimport { listenForAttributeChange } from '../utils/events.js';\nimport { getFlattenedDOMTree } from '../utils/traversal.js';\n/**\n * Provides a focus first behavior to any component via the cds-first-focus attribute\n */\nexport function firstFocus(config = { fallback: 'focusable' }) {\n return (target) => target.addInitializer((instance) => new FirstFocusController(instance, config));\n}\nexport class FirstFocusController {\n constructor(host, config = { fallback: 'focusable' }) {\n this.host = host;\n this.config = config;\n this.host.addController(this);\n }\n async hostConnected() {\n await this.host.updateComplete;\n this.observer = listenForAttributeChange(this.host, 'hidden', () => this.cdsFocusFirst());\n this.cdsFocusFirst();\n }\n hostDisconnected() {\n this.observer?.disconnect();\n }\n cdsFocusFirst() {\n if (!ignoreFocus(this.host)) {\n const root = this.host.shadowRoot ? this.host.shadowRoot : this.host;\n const rootHost = root.querySelector('.private-host') ?? this.host;\n const elements = getFlattenedDOMTree(root).filter(i => !i.hasAttribute('cds-focus-boundary'));\n const firstFocus = elements.find(i => i.hasAttribute('cds-first-focus'));\n const focusableElement = this.config.fallback === 'focusable'\n ? elements.find(i => focusable(i) && !i.classList.contains('private-host'))\n : null;\n const host = this.config.fallback === 'none' ? null : rootHost;\n const focus = firstFocus ?? focusableElement ?? host;\n if (focus) {\n focusElement(focus);\n }\n }\n }\n}\n"],"names":["firstFocus","config","fallback","target","addInitializer","instance","FirstFocusController","constructor","host","this","addController","async","updateComplete","observer","listenForAttributeChange","cdsFocusFirst","hostDisconnected","disconnect","ignoreFocus","root","shadowRoot","rootHost","querySelector","elements","getFlattenedDOMTree","filter","i","hasAttribute","find","focusableElement","focusable","classList","contains","focus","focusElement"],"mappings":"2MAWO,SAASA,EAAWC,EAAS,CAAEC,SAAU,cAC5C,OAAQC,GAAWA,EAAOC,gBAAgBC,GAAa,IAAIC,EAAqBD,EAAUJ,KAEvF,MAAMK,EACTC,YAAYC,EAAMP,EAAS,CAAEC,SAAU,cACnCO,KAAKD,KAAOA,EACZC,KAAKR,OAASA,EACdQ,KAAKD,KAAKE,cAAcD,MAE5BE,4BACUF,KAAKD,KAAKI,eAChBH,KAAKI,SAAWC,EAAyBL,KAAKD,KAAM,UAAU,IAAMC,KAAKM,kBACzEN,KAAKM,gBAETC,mBACIP,KAAKI,UAAUI,aAEnBF,gBACI,IAAKG,EAAYT,KAAKD,MAAO,CACzB,MAAMW,EAAOV,KAAKD,KAAKY,WAAaX,KAAKD,KAAKY,WAAaX,KAAKD,KAC1Da,EAAWF,EAAKG,cAAc,kBAAoBb,KAAKD,KACvDe,EAAWC,EAAoBL,GAAMM,QAAOC,IAAMA,EAAEC,aAAa,wBACjE3B,EAAauB,EAASK,MAAKF,GAAKA,EAAEC,aAAa,qBAC/CE,EAA4C,cAAzBpB,KAAKR,OAAOC,SAC/BqB,EAASK,MAAKF,GAAKI,EAAUJ,KAAOA,EAAEK,UAAUC,SAAS,kBACzD,KACAxB,EAAgC,SAAzBC,KAAKR,OAAOC,SAAsB,KAAOmB,EAChDY,EAAQjC,GAAc6B,GAAoBrB,EAC5CyB,GACAC,EAAaD"}
@@ -0,0 +1,28 @@
1
+ import { ReactiveController, ReactiveElement } from 'lit';
2
+ declare type GridRange = {
3
+ grid: HTMLElement;
4
+ cells: NodeListOf<HTMLElement>;
5
+ rows: NodeListOf<HTMLElement>;
6
+ rangeSelection?: boolean;
7
+ };
8
+ /**
9
+ * Given a 2d array grid structure provide a highlight/range selection of given cells
10
+ */
11
+ export declare function gridRangeSelection<T extends ReactiveElement & GridRange>(): ClassDecorator;
12
+ export declare class GridRangeSelectionController<T extends ReactiveElement & GridRange> implements ReactiveController {
13
+ private host;
14
+ private selectionActive;
15
+ private firstCell;
16
+ private activeCell;
17
+ private get enabled();
18
+ constructor(host: T);
19
+ hostConnected(): Promise<void>;
20
+ private setupMouseEvents;
21
+ private setupKeyboardListeners;
22
+ private setFirstCell;
23
+ private setActiveCell;
24
+ private stopSelection;
25
+ private resetAllActiveCells;
26
+ private calculateSelection;
27
+ }
28
+ export {};
@@ -0,0 +1,2 @@
1
+ function t(){return t=>t.addInitializer((t=>new e(t)))}class e{constructor(t){this.host=t,this.selectionActive=!1,t.addController(this)}get enabled(){return!1!==this.host.rangeSelection&&!Array.from(this.host.rows).find((t=>t.draggable))}async hostConnected(){await this.host.updateComplete,this.setupKeyboardListeners(),this.setupMouseEvents()}setupMouseEvents(){const t=this.host.grid.shadowRoot?this.host.grid.shadowRoot:this.host.grid;t.addEventListener("mousedown",(t=>{this.enabled&&1===t.buttons&&!t.ctrlKey&&this.setFirstCell(t)})),t.addEventListener("mouseover",(t=>{this.enabled&&this.setActiveCell(t.composedPath().find((t=>Array.from(this.host.cells).includes(t))))})),t.addEventListener("mouseup",(()=>{this.enabled&&this.stopSelection()}))}setupKeyboardListeners(){this.host.addEventListener("cdsKeyChange",(t=>{this.enabled&&t.detail.code&&(this.setActiveCell(t.detail.activeItem),t.detail.shiftKey||(this.stopSelection(),this.resetAllActiveCells(),this.host.dispatchEvent(new CustomEvent("rangeSelectionChange",{detail:[]}))))})),this.host.addEventListener("keydown",(t=>{this.enabled&&"ShiftLeft"===t.code&&t.shiftKey&&!this.selectionActive&&this.setFirstCell(t)}))}setFirstCell(t){const e=t.composedPath().find((t=>Array.from(this.host.cells).includes(t)));e&&(this.firstCell=e,this.selectionActive=!0,this.resetAllActiveCells())}setActiveCell(t){t&&this.selectionActive&&(this.activeCell=t,this.calculateSelection())}stopSelection(){this.selectionActive=!1}resetAllActiveCells(){this.host.cells.forEach((t=>t.removeAttribute("highlight")))}calculateSelection(){const t=parseInt(this.firstCell.ariaColIndex),e=parseInt(this.activeCell.ariaColIndex),s=parseInt(this.firstCell.parentElement?.ariaRowIndex),i=parseInt(this.activeCell.parentElement?.ariaRowIndex);this.resetAllActiveCells(),this.host.cells.forEach((l=>{const h=parseInt(l.ariaColIndex),n=parseInt(l.parentElement?.ariaRowIndex);(t<=e&&h>=t&&h<=e||t>=e&&h<=t&&h>=e)&&(s<=i&&n>=s&&n<=i||s>=i&&n<=s&&n>=i)&&l.setAttribute("highlight","")})),this.host.dispatchEvent(new CustomEvent("rangeSelectionChange",{detail:Array.from(this.host.cells).filter((t=>t.hasAttribute("highlight")))}))}}export{e as GridRangeSelectionController,t as gridRangeSelection};
2
+ //# sourceMappingURL=grid-range-selection.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid-range-selection.controller.js","sources":["../../../../src/internal/controllers/grid-range-selection.controller.ts"],"sourcesContent":["/*\n * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n/**\n * Given a 2d array grid structure provide a highlight/range selection of given cells\n */\nexport function gridRangeSelection() {\n return (target) => target.addInitializer((instance) => new GridRangeSelectionController(instance));\n}\nexport class GridRangeSelectionController {\n constructor(host) {\n this.host = host;\n this.selectionActive = false;\n host.addController(this);\n }\n get enabled() {\n return this.host.rangeSelection !== false && !Array.from(this.host.rows).find(r => r.draggable);\n }\n async hostConnected() {\n await this.host.updateComplete;\n this.setupKeyboardListeners();\n this.setupMouseEvents();\n }\n setupMouseEvents() {\n const root = this.host.grid.shadowRoot ? this.host.grid.shadowRoot : this.host.grid;\n root.addEventListener('mousedown', (e) => {\n // preserve right click for context menus & keyboard mouse control https://apple.stackexchange.com/questions/32715/how-do-i-open-the-context-menu-from-a-mac-keyboard\n if (this.enabled && e.buttons === 1 && !e.ctrlKey) {\n this.setFirstCell(e);\n }\n });\n root.addEventListener('mouseover', (e) => {\n if (this.enabled) {\n this.setActiveCell(e.composedPath().find((i) => Array.from(this.host.cells).includes(i)));\n }\n });\n root.addEventListener('mouseup', () => {\n if (this.enabled) {\n this.stopSelection();\n }\n });\n }\n setupKeyboardListeners() {\n this.host.addEventListener('cdsKeyChange', (e) => {\n if (this.enabled && e.detail.code) {\n this.setActiveCell(e.detail.activeItem);\n if (!e.detail.shiftKey) {\n this.stopSelection();\n this.resetAllActiveCells();\n this.host.dispatchEvent(new CustomEvent('rangeSelectionChange', { detail: [] }));\n }\n }\n });\n this.host.addEventListener('keydown', (e) => {\n if (this.enabled && e.code === 'ShiftLeft' && e.shiftKey && !this.selectionActive) {\n this.setFirstCell(e);\n }\n });\n }\n setFirstCell(e) {\n const firstCell = e.composedPath().find((i) => Array.from(this.host.cells).includes(i));\n if (firstCell) {\n this.firstCell = firstCell;\n this.selectionActive = true;\n this.resetAllActiveCells();\n }\n }\n setActiveCell(activeCell) {\n if (activeCell && this.selectionActive) {\n this.activeCell = activeCell;\n this.calculateSelection();\n }\n }\n stopSelection() {\n this.selectionActive = false;\n }\n resetAllActiveCells() {\n this.host.cells.forEach(cell => cell.removeAttribute('highlight'));\n }\n calculateSelection() {\n const x1 = parseInt(this.firstCell.ariaColIndex);\n const x2 = parseInt(this.activeCell.ariaColIndex);\n const y1 = parseInt(this.firstCell.parentElement?.ariaRowIndex);\n const y2 = parseInt(this.activeCell.parentElement?.ariaRowIndex);\n this.resetAllActiveCells();\n this.host.cells.forEach((cell) => {\n const colIndex = parseInt(cell.ariaColIndex);\n const rowIndex = parseInt(cell.parentElement?.ariaRowIndex);\n if ((x1 <= x2 && colIndex >= x1 && colIndex <= x2) || (x1 >= x2 && colIndex <= x1 && colIndex >= x2)) {\n if ((y1 <= y2 && rowIndex >= y1 && rowIndex <= y2) || (y1 >= y2 && rowIndex <= y1 && rowIndex >= y2)) {\n cell.setAttribute('highlight', '');\n }\n }\n });\n this.host.dispatchEvent(new CustomEvent('rangeSelectionChange', {\n detail: Array.from(this.host.cells).filter(c => c.hasAttribute('highlight')),\n }));\n }\n}\n"],"names":["gridRangeSelection","target","addInitializer","instance","GridRangeSelectionController","constructor","host","this","selectionActive","addController","enabled","rangeSelection","Array","from","rows","find","r","draggable","async","updateComplete","setupKeyboardListeners","setupMouseEvents","root","grid","shadowRoot","addEventListener","e","buttons","ctrlKey","setFirstCell","setActiveCell","composedPath","i","cells","includes","stopSelection","detail","code","activeItem","shiftKey","resetAllActiveCells","dispatchEvent","CustomEvent","firstCell","activeCell","calculateSelection","forEach","cell","removeAttribute","x1","parseInt","ariaColIndex","x2","y1","parentElement","ariaRowIndex","y2","colIndex","rowIndex","setAttribute","filter","c","hasAttribute"],"mappings":"AAQO,SAASA,IACZ,OAAQC,GAAWA,EAAOC,gBAAgBC,GAAa,IAAIC,EAA6BD,KAErF,MAAMC,EACTC,YAAYC,GACRC,KAAKD,KAAOA,EACZC,KAAKC,iBAAkB,EACvBF,EAAKG,cAAcF,MAEnBG,cACA,OAAoC,IAA7BH,KAAKD,KAAKK,iBAA6BC,MAAMC,KAAKN,KAAKD,KAAKQ,MAAMC,MAAKC,GAAKA,EAAEC,YAEzFC,4BACUX,KAAKD,KAAKa,eAChBZ,KAAKa,yBACLb,KAAKc,mBAETA,mBACI,MAAMC,EAAOf,KAAKD,KAAKiB,KAAKC,WAAajB,KAAKD,KAAKiB,KAAKC,WAAajB,KAAKD,KAAKiB,KAC/ED,EAAKG,iBAAiB,aAAcC,IAE5BnB,KAAKG,SAAyB,IAAdgB,EAAEC,UAAkBD,EAAEE,SACtCrB,KAAKsB,aAAaH,MAG1BJ,EAAKG,iBAAiB,aAAcC,IAC5BnB,KAAKG,SACLH,KAAKuB,cAAcJ,EAAEK,eAAehB,MAAMiB,GAAMpB,MAAMC,KAAKN,KAAKD,KAAK2B,OAAOC,SAASF,SAG7FV,EAAKG,iBAAiB,WAAW,KACzBlB,KAAKG,SACLH,KAAK4B,mBAIjBf,yBACIb,KAAKD,KAAKmB,iBAAiB,gBAAiBC,IACpCnB,KAAKG,SAAWgB,EAAEU,OAAOC,OACzB9B,KAAKuB,cAAcJ,EAAEU,OAAOE,YACvBZ,EAAEU,OAAOG,WACVhC,KAAK4B,gBACL5B,KAAKiC,sBACLjC,KAAKD,KAAKmC,cAAc,IAAIC,YAAY,uBAAwB,CAAEN,OAAQ,WAItF7B,KAAKD,KAAKmB,iBAAiB,WAAYC,IAC/BnB,KAAKG,SAAsB,cAAXgB,EAAEW,MAAwBX,EAAEa,WAAahC,KAAKC,iBAC9DD,KAAKsB,aAAaH,MAI9BG,aAAaH,GACT,MAAMiB,EAAYjB,EAAEK,eAAehB,MAAMiB,GAAMpB,MAAMC,KAAKN,KAAKD,KAAK2B,OAAOC,SAASF,KAChFW,IACApC,KAAKoC,UAAYA,EACjBpC,KAAKC,iBAAkB,EACvBD,KAAKiC,uBAGbV,cAAcc,GACNA,GAAcrC,KAAKC,kBACnBD,KAAKqC,WAAaA,EAClBrC,KAAKsC,sBAGbV,gBACI5B,KAAKC,iBAAkB,EAE3BgC,sBACIjC,KAAKD,KAAK2B,MAAMa,SAAQC,GAAQA,EAAKC,gBAAgB,eAEzDH,qBACI,MAAMI,EAAKC,SAAS3C,KAAKoC,UAAUQ,cAC7BC,EAAKF,SAAS3C,KAAKqC,WAAWO,cAC9BE,EAAKH,SAAS3C,KAAKoC,UAAUW,eAAeC,cAC5CC,EAAKN,SAAS3C,KAAKqC,WAAWU,eAAeC,cACnDhD,KAAKiC,sBACLjC,KAAKD,KAAK2B,MAAMa,SAASC,IACrB,MAAMU,EAAWP,SAASH,EAAKI,cACzBO,EAAWR,SAASH,EAAKO,eAAeC,eACzCN,GAAMG,GAAMK,GAAYR,GAAMQ,GAAYL,GAAQH,GAAMG,GAAMK,GAAYR,GAAMQ,GAAYL,KACxFC,GAAMG,GAAME,GAAYL,GAAMK,GAAYF,GAAQH,GAAMG,GAAME,GAAYL,GAAMK,GAAYF,IAC7FT,EAAKY,aAAa,YAAa,OAI3CpD,KAAKD,KAAKmC,cAAc,IAAIC,YAAY,uBAAwB,CAC5DN,OAAQxB,MAAMC,KAAKN,KAAKD,KAAK2B,OAAO2B,QAAOC,GAAKA,EAAEC,aAAa"}
@@ -1,16 +1,17 @@
1
- import { ReactiveControllerHost } from 'lit';
1
+ import { ReactiveController, ReactiveElement } from 'lit';
2
2
  /**
3
3
  * Focus Trap that given a DOM element creates a flattened tree traversal
4
4
  * between both Shadow DOM and Light DOM
5
+ *
6
+ * safari https://bugs.webkit.org/show_bug.cgi?id=174667
5
7
  */
6
- export declare class InlineFocusTrapController {
8
+ export declare function focusTrap<T extends ReactiveElement>(): ClassDecorator;
9
+ export declare class InlineFocusTrapController<T extends ReactiveElement> implements ReactiveController {
7
10
  private host;
8
- private config;
9
- constructor(host: ReactiveControllerHost & HTMLElement, config?: {
10
- start: string;
11
- end: string;
12
- });
11
+ constructor(host: T);
13
12
  private get focusableItems();
14
13
  private get root();
14
+ private get styles();
15
+ private boundary;
15
16
  hostConnected(): Promise<void>;
16
17
  }
@@ -1,2 +1,2 @@
1
- import{createFragment as t}from"../utils/dom.js";import{getFlattenedFocusableItems as s}from"../utils/traversal.js";import{getHostElementToFocus as o}from"./utils/first-focus.controller.utils.js";class i{constructor(t,s={start:"start",end:"end"}){this.host=t,this.config=s,this.host.addController(this)}get focusableItems(){return s(this.root).filter((t=>!t.hasAttribute("cds-focus-boundary")&&(this.root.contains(t)||t.closest("[cds-focus-trap]")===this.host)))}get root(){return this.host.shadowRoot?this.host.shadowRoot:this.host}async hostConnected(){await this.host.updateComplete;const s=t=>`<div cds-focus-boundary tabindex="0" style="display:none;position:absolute;width:1px;height:1px;clip:rect(0,0,0,0)">${t}</div>`;0===Array.from(this.root.querySelectorAll("[cds-focus-boundary]")).length&&(this.root.appendChild(t("<style>:host(:host:focus-within) [cds-focus-boundary],:host(:focus-within) [cds-focus-boundary] {display: block !important}</style>")),this.root.prepend(t(s(this.config.start))),this.root.appendChild(t(s(this.config.end))),this.host.setAttribute("cds-focus-trap",""));const[i,e]=Array.from(this.root.querySelectorAll("[cds-focus-boundary]"));i.addEventListener("focusin",(()=>(this.focusableItems.length>0?this.focusableItems[this.focusableItems.length-1]:o(this.host)).focus())),e.addEventListener("focusin",(()=>(this.focusableItems.length>0?this.focusableItems[0]:o(this.host)).focus()))}}export{i as InlineFocusTrapController};
1
+ import{html as t}from"lit";import{getFlattenedFocusableItems as s}from"../utils/traversal.js";import{renderBefore as o,renderAfter as i}from"../utils/lit.js";import{ignoreFocus as r}from"../utils/focus.js";function h(){return t=>t.addInitializer((t=>new e(t)))}class e{constructor(t){this.host=t,this.host.addController(this)}get focusableItems(){return s(this.root).filter((t=>!t.hasAttribute("cds-focus-boundary")&&(this.root.contains(t)||t.closest("[cds-focus-trap]")===this.host)))}get root(){return this.host.shadowRoot?this.host.shadowRoot:this.host}get styles(){return t`<style cds-focus-style>:host(:focus-within) [cds-focus-boundary],:host(:host:focus-within) [cds-focus-boundary]{display:block!important}</style>`}boundary(s){return t`<div @focusin="${()=>this.focusableItems.at(s)?.focus()}" test="${s}" cds-focus-boundary tabindex="0" style="display:none;position:absolute;width:1px;height:1px;clip:rect(0,0,0,0)">boundary</div>`}async hostConnected(){await this.host.updateComplete,r(this.host)||(o(this.styles,this.root),o(this.boundary(-1),this.root),i(this.boundary(0),this.root),this.host.setAttribute("cds-focus-trap",""))}}export{e as InlineFocusTrapController,h as focusTrap};
2
2
  //# sourceMappingURL=inline-focus-trap.controller.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"inline-focus-trap.controller.js","sources":["../../../../src/internal/controllers/inline-focus-trap.controller.ts"],"sourcesContent":null,"names":["InlineFocusTrapController","[object Object]","host","config","start","end","this","addController","focusableItems","getFlattenedFocusableItems","root","filter","e","hasAttribute","contains","closest","shadowRoot","updateComplete","trap","v","Array","from","querySelectorAll","length","appendChild","createFragment","prepend","setAttribute","addEventListener","getHostElementToFocus","focus"],"mappings":"oMAOO,MAAMA,EACTC,YAAYC,EAAMC,EAAS,CAAEC,MAAO,QAASC,IAAK,QAC9CC,KAAKJ,KAAOA,EACZI,KAAKH,OAASA,EACdG,KAAKJ,KAAKK,cAAcD,MAE5BE,qBACI,OAAOC,EAA2BH,KAAKI,MAAMC,QAAOC,IAAMA,EAAEC,aAAa,wBAA0BP,KAAKI,KAAKI,SAASF,IAAMA,EAAEG,QAAQ,sBAAwBT,KAAKJ,QAEvKQ,WACI,OAAQJ,KAAKJ,KAAKc,WAAaV,KAAKJ,KAAKc,WAAaV,KAAKJ,KAE/DD,4BACUK,KAAKJ,KAAKe,eAChB,MACMC,EAAQC,GAAM,uHAAuHA,UAGzG,IADPC,MAAMC,KAAKf,KAAKI,KAAKY,iBAAiB,yBAC1CC,SACnBjB,KAAKI,KAAKc,YAAYC,EALZ,wIAMVnB,KAAKI,KAAKgB,QAAQD,EAAeP,EAAKZ,KAAKH,OAAOC,SAClDE,KAAKI,KAAKc,YAAYC,EAAeP,EAAKZ,KAAKH,OAAOE,OACtDC,KAAKJ,KAAKyB,aAAa,iBAAkB,KAE7C,MAAOvB,EAAOC,GAAOe,MAAMC,KAAKf,KAAKI,KAAKY,iBAAiB,yBAC3DlB,EAAMwB,iBAAiB,WAAW,KAAOtB,KAAKE,eAAee,OAAS,EAChEjB,KAAKE,eAAeF,KAAKE,eAAee,OAAS,GACjDM,EAAsBvB,KAAKJ,OAAO4B,UACxCzB,EAAIuB,iBAAiB,WAAW,KAAOtB,KAAKE,eAAee,OAAS,EAAIjB,KAAKE,eAAe,GAAKqB,EAAsBvB,KAAKJ,OAAO4B"}
1
+ {"version":3,"file":"inline-focus-trap.controller.js","sources":["../../../../src/internal/controllers/inline-focus-trap.controller.ts"],"sourcesContent":["/*\n * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { html } from 'lit';\nimport { getFlattenedFocusableItems } from '../utils/traversal.js';\nimport { renderAfter, renderBefore } from '../utils/lit.js';\nimport { ignoreFocus } from '../utils/focus.js';\n/**\n * Focus Trap that given a DOM element creates a flattened tree traversal\n * between both Shadow DOM and Light DOM\n *\n * safari https://bugs.webkit.org/show_bug.cgi?id=174667\n */\nexport function focusTrap() {\n return (target) => target.addInitializer((instance) => new InlineFocusTrapController(instance));\n}\nexport class InlineFocusTrapController {\n constructor(host) {\n this.host = host;\n this.host.addController(this);\n }\n get focusableItems() {\n return getFlattenedFocusableItems(this.root).filter(e => !e.hasAttribute('cds-focus-boundary') && (this.root.contains(e) || e.closest('[cds-focus-trap]') === this.host));\n }\n get root() {\n return (this.host.shadowRoot ? this.host.shadowRoot : this.host);\n }\n get styles() {\n return html `<style cds-focus-style>\n :host(:host:focus-within) [cds-focus-boundary],\n :host(:focus-within) [cds-focus-boundary] {\n display: block !important;\n }\n </style>`;\n }\n boundary(index) {\n return html `<div\n @focusin=${() => this.focusableItems.at(index)?.focus()}\n test=${index}\n cds-focus-boundary\n tabindex=\"0\"\n style=\"display:none;position:absolute;width:1px;height:1px;clip:rect(0,0,0,0)\"\n >\n boundary\n </div>`;\n }\n async hostConnected() {\n await this.host.updateComplete;\n if (!ignoreFocus(this.host)) {\n renderBefore(this.styles, this.root);\n renderBefore(this.boundary(-1), this.root);\n renderAfter(this.boundary(0), this.root);\n this.host.setAttribute('cds-focus-trap', '');\n }\n }\n}\n"],"names":["focusTrap","target","addInitializer","instance","InlineFocusTrapController","constructor","host","this","addController","focusableItems","getFlattenedFocusableItems","root","filter","e","hasAttribute","contains","closest","shadowRoot","styles","html","boundary","index","at","focus","async","updateComplete","ignoreFocus","renderBefore","renderAfter","setAttribute"],"mappings":"8MAeO,SAASA,IACZ,OAAQC,GAAWA,EAAOC,gBAAgBC,GAAa,IAAIC,EAA0BD,KAElF,MAAMC,EACTC,YAAYC,GACRC,KAAKD,KAAOA,EACZC,KAAKD,KAAKE,cAAcD,MAExBE,qBACA,OAAOC,EAA2BH,KAAKI,MAAMC,QAAOC,IAAMA,EAAEC,aAAa,wBAA0BP,KAAKI,KAAKI,SAASF,IAAMA,EAAEG,QAAQ,sBAAwBT,KAAKD,QAEnKK,WACA,OAAQJ,KAAKD,KAAKW,WAAaV,KAAKD,KAAKW,WAAaV,KAAKD,KAE3DY,aACA,OAAOC,CAAK,mJAOhBC,SAASC,GACL,OAAOF,CAAK,kBACH,IAAMZ,KAAKE,eAAea,GAAGD,IAAQE,kBACzCF,mIAQTG,4BACUjB,KAAKD,KAAKmB,eACXC,EAAYnB,KAAKD,QAClBqB,EAAapB,KAAKW,OAAQX,KAAKI,MAC/BgB,EAAapB,KAAKa,UAAU,GAAIb,KAAKI,MACrCiB,EAAYrB,KAAKa,SAAS,GAAIb,KAAKI,MACnCJ,KAAKD,KAAKuB,aAAa,iBAAkB"}
@@ -0,0 +1,28 @@
1
+ import { ReactiveController, ReactiveElement } from 'lit';
2
+ export interface KeyNavigationGridConfig {
3
+ keyNavGrid?: HTMLElement;
4
+ columnRow?: HTMLElement;
5
+ columns?: NodeListOf<HTMLElement> | HTMLElement[];
6
+ rows: NodeListOf<HTMLElement> | HTMLElement[];
7
+ cells: NodeListOf<HTMLElement> | HTMLElement[];
8
+ }
9
+ /**
10
+ * Given a 2d array grid structure provide keyboard navigation following aria grid spec
11
+ * https://w3c.github.io/aria-practices/#gridNav_focus
12
+ */
13
+ export declare function keyNavigationGrid<T extends ReactiveElement & KeyNavigationGridConfig>(): ClassDecorator;
14
+ export declare class KeyNavigationGridController<T extends ReactiveElement & KeyNavigationGridConfig> implements ReactiveController {
15
+ private host;
16
+ private observers;
17
+ private get hostGrid();
18
+ private get hostRows();
19
+ private get hostCells();
20
+ private get activeCell();
21
+ constructor(host: T);
22
+ hostConnected(): Promise<void>;
23
+ hostDisconnected(): void;
24
+ private clickCell;
25
+ private keynavCell;
26
+ private setActiveCell;
27
+ private updateCellActivation;
28
+ }
@@ -0,0 +1,2 @@
1
+ import{onFirstInteraction as t,onChildListMutation as s}from"../utils/events.js";import{getFlattenedDOMTree as e,getFlattenedFocusableItems as i}from"../utils/traversal.js";import{contextMenuClick as o}from"../utils/dom.js";import{validKeyNavigationCode as h}from"../utils/keycodes.js";import{initializeKeyListItems as l,simpleFocusable as r,getActiveElement as n,setActiveKeyListItem as c,focusElement as d}from"../utils/focus.js";import{getNextKeyGridItem as a}from"./key-navigation.utils.js";function u(){return t=>t.addInitializer((t=>new f(t)))}class f{constructor(t){this.host=t,this.observers=[],this.host.addController(this)}get hostGrid(){return this.host.keyNavGrid?this.host.keyNavGrid:this.host}get hostRows(){const t=Array.from(this.host.rows);return this.host.columnRow&&t.unshift(this.host.columnRow),t}get hostCells(){const t=Array.from(this.host.cells);return this.host.columns&&t.unshift(...Array.from(this.host.columns)),t}get activeCell(){return Array.from(this.hostCells).find((t=>0===t.tabIndex))}async hostConnected(){await this.host.updateComplete,t(this.host).then((()=>{l(this.hostCells),this.hostGrid.addEventListener("mouseup",(t=>this.clickCell(t))),this.hostGrid.addEventListener("keydown",(t=>this.keynavCell(t))),this.hostGrid.addEventListener("keyup",(t=>this.updateCellActivation(t)))})),this.observers.push(s(this.host,(()=>l(this.hostCells))))}hostDisconnected(){this.observers.forEach((t=>t?.disconnect()))}clickCell(t){if(!o(t)){const s=t.composedPath().find((t=>this.hostCells.find((s=>s===t))));s&&this.setActiveCell(t,s)}}keynavCell(t){if(h(t)&&r(n())){const{x:s,y:i}=a(this.hostCells,this.hostRows,{code:t.code,ctrlKey:t.ctrlKey,dir:this.host.dir}),o=Array.from(e(this.hostRows[i])).filter((t=>!!this.hostCells.find((s=>s===t))))[s];this.setActiveCell(t,o),t.preventDefault()}}setActiveCell(t,s){c(this.hostCells,s);const e=i(s),o=e.filter((t=>r(t)));1===o.length&&1===e.length?d(o[0]):d(s),s.dispatchEvent(new CustomEvent("cdsKeyChange",{bubbles:!0,detail:{code:t.code,shiftKey:t.shiftKey,activeItem:s}}))}updateCellActivation(t){"Escape"===t.code&&this.activeCell?.focus(),"Enter"===t.code&&this.activeCell===t.composedPath()[0]&&i(this.activeCell)[0]?.focus()}}export{f as KeyNavigationGridController,u as keyNavigationGrid};
2
+ //# sourceMappingURL=key-navigation-grid.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"key-navigation-grid.controller.js","sources":["../../../../src/internal/controllers/key-navigation-grid.controller.ts"],"sourcesContent":["/*\n * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { onChildListMutation, onFirstInteraction } from '../utils/events.js';\nimport { getFlattenedDOMTree, getFlattenedFocusableItems } from '../utils/traversal.js';\nimport { contextMenuClick } from '../utils/dom.js';\nimport { validKeyNavigationCode } from '../utils/keycodes.js';\nimport { focusElement, getActiveElement, initializeKeyListItems, setActiveKeyListItem, simpleFocusable, } from '../utils/focus.js';\nimport { getNextKeyGridItem } from './key-navigation.utils.js';\n/**\n * Given a 2d array grid structure provide keyboard navigation following aria grid spec\n * https://w3c.github.io/aria-practices/#gridNav_focus\n */\nexport function keyNavigationGrid() {\n return (target) => target.addInitializer((instance) => new KeyNavigationGridController(instance));\n}\nexport class KeyNavigationGridController {\n constructor(host) {\n this.host = host;\n this.observers = [];\n this.host.addController(this);\n }\n get hostGrid() {\n return this.host.keyNavGrid ? this.host.keyNavGrid : this.host;\n }\n get hostRows() {\n const rows = Array.from(this.host.rows);\n if (this.host.columnRow) {\n rows.unshift(this.host.columnRow);\n }\n return rows;\n }\n get hostCells() {\n const cells = Array.from(this.host.cells);\n if (this.host.columns) {\n cells.unshift(...Array.from(this.host.columns));\n }\n return cells;\n }\n get activeCell() {\n return Array.from(this.hostCells).find(i => i.tabIndex === 0);\n }\n async hostConnected() {\n await this.host.updateComplete;\n onFirstInteraction(this.host).then(() => {\n initializeKeyListItems(this.hostCells);\n this.hostGrid.addEventListener('mouseup', (e) => this.clickCell(e));\n this.hostGrid.addEventListener('keydown', (e) => this.keynavCell(e));\n this.hostGrid.addEventListener('keyup', (e) => this.updateCellActivation(e));\n });\n this.observers.push(onChildListMutation(this.host, () => initializeKeyListItems(this.hostCells)));\n }\n hostDisconnected() {\n this.observers.forEach(o => o?.disconnect());\n }\n clickCell(e) {\n if (!contextMenuClick(e)) {\n const activeCell = e.composedPath().find(i => this.hostCells.find(c => c === i));\n if (activeCell) {\n this.setActiveCell(e, activeCell);\n }\n }\n }\n keynavCell(e) {\n if (validKeyNavigationCode(e) && simpleFocusable(getActiveElement())) {\n const { x, y } = getNextKeyGridItem(this.hostCells, this.hostRows, {\n code: e.code,\n ctrlKey: e.ctrlKey,\n dir: this.host.dir,\n });\n const nextCell = Array.from(getFlattenedDOMTree(this.hostRows[y])).filter(c => !!this.hostCells.find(i => i === c))[x];\n this.setActiveCell(e, nextCell);\n e.preventDefault();\n }\n }\n setActiveCell(e, activeCell) {\n setActiveKeyListItem(this.hostCells, activeCell);\n // https://w3c.github.io/aria-practices/#gridNav_focus\n const items = getFlattenedFocusableItems(activeCell);\n const simpleItems = items.filter(i => simpleFocusable(i));\n if (simpleItems.length === 1 && items.length === 1) {\n focusElement(simpleItems[0]);\n }\n else {\n focusElement(activeCell);\n }\n activeCell.dispatchEvent(new CustomEvent('cdsKeyChange', {\n bubbles: true,\n detail: { code: e.code, shiftKey: e.shiftKey, activeItem: activeCell },\n }));\n }\n updateCellActivation(e) {\n if (e.code === 'Escape') {\n this.activeCell?.focus();\n }\n if (e.code === 'Enter' && this.activeCell === e.composedPath()[0]) {\n getFlattenedFocusableItems(this.activeCell)[0]?.focus();\n }\n }\n}\n"],"names":["keyNavigationGrid","target","addInitializer","instance","KeyNavigationGridController","constructor","host","this","observers","addController","hostGrid","keyNavGrid","hostRows","rows","Array","from","columnRow","unshift","hostCells","cells","columns","activeCell","find","i","tabIndex","async","updateComplete","onFirstInteraction","then","initializeKeyListItems","addEventListener","e","clickCell","keynavCell","updateCellActivation","push","onChildListMutation","hostDisconnected","forEach","o","disconnect","contextMenuClick","composedPath","c","setActiveCell","validKeyNavigationCode","simpleFocusable","getActiveElement","x","y","getNextKeyGridItem","code","ctrlKey","dir","nextCell","getFlattenedDOMTree","filter","preventDefault","setActiveKeyListItem","items","getFlattenedFocusableItems","simpleItems","length","focusElement","dispatchEvent","CustomEvent","bubbles","detail","shiftKey","activeItem","focus"],"mappings":"+eAeO,SAASA,IACZ,OAAQC,GAAWA,EAAOC,gBAAgBC,GAAa,IAAIC,EAA4BD,KAEpF,MAAMC,EACTC,YAAYC,GACRC,KAAKD,KAAOA,EACZC,KAAKC,UAAY,GACjBD,KAAKD,KAAKG,cAAcF,MAExBG,eACA,OAAOH,KAAKD,KAAKK,WAAaJ,KAAKD,KAAKK,WAAaJ,KAAKD,KAE1DM,eACA,MAAMC,EAAOC,MAAMC,KAAKR,KAAKD,KAAKO,MAIlC,OAHIN,KAAKD,KAAKU,WACVH,EAAKI,QAAQV,KAAKD,KAAKU,WAEpBH,EAEPK,gBACA,MAAMC,EAAQL,MAAMC,KAAKR,KAAKD,KAAKa,OAInC,OAHIZ,KAAKD,KAAKc,SACVD,EAAMF,WAAWH,MAAMC,KAAKR,KAAKD,KAAKc,UAEnCD,EAEPE,iBACA,OAAOP,MAAMC,KAAKR,KAAKW,WAAWI,MAAKC,GAAoB,IAAfA,EAAEC,WAElDC,4BACUlB,KAAKD,KAAKoB,eAChBC,EAAmBpB,KAAKD,MAAMsB,MAAK,KAC/BC,EAAuBtB,KAAKW,WAC5BX,KAAKG,SAASoB,iBAAiB,WAAYC,GAAMxB,KAAKyB,UAAUD,KAChExB,KAAKG,SAASoB,iBAAiB,WAAYC,GAAMxB,KAAK0B,WAAWF,KACjExB,KAAKG,SAASoB,iBAAiB,SAAUC,GAAMxB,KAAK2B,qBAAqBH,QAE7ExB,KAAKC,UAAU2B,KAAKC,EAAoB7B,KAAKD,MAAM,IAAMuB,EAAuBtB,KAAKW,cAEzFmB,mBACI9B,KAAKC,UAAU8B,SAAQC,GAAKA,GAAGC,eAEnCR,UAAUD,GACN,IAAKU,EAAiBV,GAAI,CACtB,MAAMV,EAAaU,EAAEW,eAAepB,MAAKC,GAAKhB,KAAKW,UAAUI,MAAKqB,GAAKA,IAAMpB,MACzEF,GACAd,KAAKqC,cAAcb,EAAGV,IAIlCY,WAAWF,GACP,GAAIc,EAAuBd,IAAMe,EAAgBC,KAAqB,CAClE,MAAMC,EAAEA,EAACC,EAAEA,GAAMC,EAAmB3C,KAAKW,UAAWX,KAAKK,SAAU,CAC/DuC,KAAMpB,EAAEoB,KACRC,QAASrB,EAAEqB,QACXC,IAAK9C,KAAKD,KAAK+C,MAEbC,EAAWxC,MAAMC,KAAKwC,EAAoBhD,KAAKK,SAASqC,KAAKO,QAAOb,KAAOpC,KAAKW,UAAUI,MAAKC,GAAKA,IAAMoB,MAAIK,GACpHzC,KAAKqC,cAAcb,EAAGuB,GACtBvB,EAAE0B,kBAGVb,cAAcb,EAAGV,GACbqC,EAAqBnD,KAAKW,UAAWG,GAErC,MAAMsC,EAAQC,EAA2BvC,GACnCwC,EAAcF,EAAMH,QAAOjC,GAAKuB,EAAgBvB,KAC3B,IAAvBsC,EAAYC,QAAiC,IAAjBH,EAAMG,OAClCC,EAAaF,EAAY,IAGzBE,EAAa1C,GAEjBA,EAAW2C,cAAc,IAAIC,YAAY,eAAgB,CACrDC,SAAS,EACTC,OAAQ,CAAEhB,KAAMpB,EAAEoB,KAAMiB,SAAUrC,EAAEqC,SAAUC,WAAYhD,MAGlEa,qBAAqBH,GACF,WAAXA,EAAEoB,MACF5C,KAAKc,YAAYiD,QAEN,UAAXvC,EAAEoB,MAAoB5C,KAAKc,aAAeU,EAAEW,eAAe,IAC3DkB,EAA2BrD,KAAKc,YAAY,IAAIiD"}
@@ -0,0 +1,26 @@
1
+ import { ReactiveController, ReactiveElement } from 'lit';
2
+ export interface KeyNavigationListConfig {
3
+ keyListItems: string;
4
+ layout: 'both' | 'horizontal' | 'vertical';
5
+ manageFocus: boolean;
6
+ manageTabindex: boolean;
7
+ loop: boolean;
8
+ dir: string | null;
9
+ }
10
+ /**
11
+ * Provides key list naviation behavior
12
+ * https://webaim.org/techniques/keyboard/
13
+ */
14
+ export declare function keyNavigationList<T extends ReactiveElement>(config?: Partial<KeyNavigationListConfig>): ClassDecorator;
15
+ export declare class KeyNavigationListController<T extends ReactiveElement> implements ReactiveController {
16
+ private host;
17
+ private get listItems();
18
+ private config;
19
+ constructor(host: T, config?: Partial<KeyNavigationListConfig>);
20
+ hostConnected(): Promise<void>;
21
+ private initializeTabIndex;
22
+ private clickItem;
23
+ private focusItem;
24
+ private getActiveItem;
25
+ private setActiveItem;
26
+ }
@@ -0,0 +1,2 @@
1
+ import{initializeKeyListItems as t,setActiveKeyListItem as e,focusElement as s}from"../utils/focus.js";import{validKeyNavigationCode as i}from"../utils/keycodes.js";import{getFlattenedFocusableItems as o}from"../utils/traversal.js";import{getNextKeyListItem as n}from"./key-navigation.utils.js";function a(t={}){return e=>{e.addInitializer((e=>{e.keyNavigationListController||(e.keyNavigationListController=new c(e,t))}))}}class c{constructor(t,e={}){this.host=t,this.host.addController(this),this.config={keyListItems:"keyListItems",layout:"horizontal",manageFocus:!0,manageTabindex:!0,loop:!1,dir:this.host.getAttribute("rtl"),...e}}get listItems(){return this.host[this.config.keyListItems]}async hostConnected(){await this.host.updateComplete,this.initializeTabIndex(),this.host.addEventListener("click",(t=>this.clickItem(t))),this.host.addEventListener("keydown",(t=>this.focusItem(t))),this.host.shadowRoot?.addEventListener("click",(t=>this.clickItem(t))),this.host.shadowRoot?.addEventListener("keydown",(t=>this.focusItem(t)))}initializeTabIndex(){this.config.manageFocus&&this.config.manageTabindex&&t(this.listItems)}clickItem(t){const e=this.getActiveItem(t);e&&this.setActiveItem(t,e)}focusItem(t){if(i(t)){const e=this.getActiveItem(t);if(e){const{next:s,previous:i}=n(e,Array.from(this.listItems),{...this.config,code:t.code});s!==i&&this.setActiveItem(t,this.listItems[s],this.listItems[i])}}}getActiveItem(t){return Array.from(this.listItems).find((e=>e===t.target.closest(this.listItems[0].tagName.toLocaleLowerCase())??e===t.target))}setActiveItem(t,i,n){if(this.config.manageFocus){this.config.manageTabindex&&e(this.listItems,i);const n=o(i)[0]??i;s(n),t.preventDefault()}i.dispatchEvent(new CustomEvent("cdsKeyChange",{bubbles:!0,detail:{activeItem:i,previousItem:n,code:t.code,metaKey:t.ctrlKey||t.metaKey,keyListItems:this.config.keyListItems}}))}}export{c as KeyNavigationListController,a as keyNavigationList};
2
+ //# sourceMappingURL=key-navigation-list.controller.js.map