@nectary/components 4.12.1 → 5.0.1

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 (585) hide show
  1. package/accordion/global/index.d.ts +1 -0
  2. package/accordion/global/index.js +2 -0
  3. package/accordion/index.d.ts +1 -22
  4. package/accordion/index.js +41 -39
  5. package/accordion/types.d.ts +21 -1
  6. package/accordion/types.js +1 -1
  7. package/accordion-item/global/index.d.ts +1 -0
  8. package/accordion-item/global/index.js +2 -0
  9. package/accordion-item/index.d.ts +2 -22
  10. package/accordion-item/index.js +53 -49
  11. package/accordion-item/types.d.ts +21 -1
  12. package/accordion-item/types.js +1 -1
  13. package/accordion-item/utils.js +4 -1
  14. package/action-menu/global/index.d.ts +1 -0
  15. package/action-menu/global/index.js +2 -0
  16. package/action-menu/index.d.ts +1 -22
  17. package/action-menu/index.js +62 -77
  18. package/action-menu/types.d.ts +21 -1
  19. package/action-menu/types.js +1 -1
  20. package/action-menu-option/global/index.d.ts +1 -0
  21. package/action-menu-option/global/index.js +2 -0
  22. package/action-menu-option/index.d.ts +1 -22
  23. package/action-menu-option/index.js +39 -41
  24. package/action-menu-option/types.d.ts +21 -1
  25. package/action-menu-option/types.js +1 -1
  26. package/action-menu-option/utils.js +6 -3
  27. package/alert/global/index.d.ts +1 -0
  28. package/alert/global/index.js +2 -0
  29. package/alert/index.d.ts +2 -22
  30. package/alert/index.js +24 -21
  31. package/alert/types.d.ts +21 -1
  32. package/alert/types.js +1 -1
  33. package/alert/utils.js +4 -1
  34. package/avatar/colors.js +1 -1
  35. package/avatar/global/index.d.ts +1 -0
  36. package/avatar/global/index.js +2 -0
  37. package/avatar/index.d.ts +2 -22
  38. package/avatar/index.js +42 -41
  39. package/avatar/types.d.ts +21 -1
  40. package/avatar/types.js +1 -1
  41. package/avatar/utils.js +9 -4
  42. package/badge/global/index.d.ts +1 -0
  43. package/badge/global/index.js +2 -0
  44. package/badge/index.d.ts +3 -22
  45. package/badge/index.js +52 -51
  46. package/badge/types.d.ts +21 -1
  47. package/badge/types.js +1 -1
  48. package/badge/utils.js +4 -1
  49. package/bundle.d.ts +78 -0
  50. package/bundle.js +13069 -0
  51. package/bundle.ts +80 -0
  52. package/button/global/index.d.ts +1 -0
  53. package/button/global/index.js +2 -0
  54. package/button/index.d.ts +2 -22
  55. package/button/index.js +101 -111
  56. package/button/types.d.ts +21 -1
  57. package/button/types.js +1 -1
  58. package/button/utils.js +18 -2
  59. package/button-group/global/index.d.ts +1 -0
  60. package/button-group/global/index.js +2 -0
  61. package/button-group/index.d.ts +1 -22
  62. package/button-group/index.js +20 -18
  63. package/button-group/types.d.ts +22 -3
  64. package/button-group/types.js +1 -1
  65. package/button-group-item/global/index.d.ts +1 -0
  66. package/button-group-item/global/index.js +2 -0
  67. package/button-group-item/index.d.ts +2 -22
  68. package/button-group-item/index.js +31 -42
  69. package/button-group-item/types.d.ts +22 -3
  70. package/button-group-item/types.js +1 -1
  71. package/card-container/global/index.d.ts +1 -0
  72. package/card-container/global/index.js +2 -0
  73. package/card-container/index.d.ts +1 -21
  74. package/card-container/index.js +8 -5
  75. package/card-container/types.d.ts +21 -1
  76. package/card-container/types.js +1 -1
  77. package/card-v2/global/index.d.ts +1 -0
  78. package/card-v2/global/index.js +2 -0
  79. package/card-v2/index.d.ts +1 -22
  80. package/card-v2/index.js +59 -57
  81. package/card-v2/types.d.ts +21 -1
  82. package/card-v2/types.js +1 -1
  83. package/card-v2-title/global/index.d.ts +1 -0
  84. package/card-v2-title/global/index.js +2 -0
  85. package/card-v2-title/index.d.ts +2 -22
  86. package/card-v2-title/index.js +28 -26
  87. package/card-v2-title/types.d.ts +21 -1
  88. package/card-v2-title/types.js +1 -1
  89. package/checkbox/global/index.d.ts +1 -0
  90. package/checkbox/global/index.js +2 -0
  91. package/checkbox/index.d.ts +1 -22
  92. package/checkbox/index.js +90 -81
  93. package/checkbox/types.d.ts +21 -1
  94. package/checkbox/types.js +1 -1
  95. package/chip/colors.js +1 -1
  96. package/chip/global/index.d.ts +1 -0
  97. package/chip/global/index.js +2 -0
  98. package/chip/index.d.ts +1 -22
  99. package/chip/index.js +64 -75
  100. package/chip/types.d.ts +21 -1
  101. package/chip/types.js +1 -1
  102. package/chip/utils.js +7 -3
  103. package/code-tag/global/index.d.ts +1 -0
  104. package/code-tag/global/index.js +2 -0
  105. package/code-tag/index.d.ts +1 -22
  106. package/code-tag/index.js +17 -14
  107. package/code-tag/types.d.ts +21 -1
  108. package/code-tag/types.js +1 -1
  109. package/color-menu/global/index.d.ts +1 -0
  110. package/color-menu/global/index.js +2 -0
  111. package/color-menu/index.d.ts +2 -22
  112. package/color-menu/index.js +115 -115
  113. package/color-menu/types.d.ts +21 -1
  114. package/color-menu/types.js +1 -1
  115. package/color-menu/utils.js +6 -3
  116. package/color-menu-option/global/index.d.ts +1 -0
  117. package/color-menu-option/global/index.js +2 -0
  118. package/color-menu-option/index.d.ts +1 -22
  119. package/color-menu-option/index.js +30 -26
  120. package/color-menu-option/types.d.ts +21 -1
  121. package/color-menu-option/types.js +1 -1
  122. package/color-menu-option/utils.js +6 -3
  123. package/color-swatch/global/index.d.ts +1 -0
  124. package/color-swatch/global/index.js +2 -0
  125. package/color-swatch/index.d.ts +1 -22
  126. package/color-swatch/index.js +23 -20
  127. package/color-swatch/types.d.ts +21 -1
  128. package/color-swatch/types.js +1 -1
  129. package/color-swatch/utils.js +7 -3
  130. package/date-picker/global/index.d.ts +1 -0
  131. package/date-picker/global/index.js +2 -0
  132. package/date-picker/index.d.ts +2 -22
  133. package/date-picker/index.js +157 -150
  134. package/date-picker/types.d.ts +21 -1
  135. package/date-picker/types.js +1 -1
  136. package/date-picker/utils.js +59 -42
  137. package/dialog/global/index.d.ts +1 -0
  138. package/dialog/global/index.js +2 -0
  139. package/dialog/index.d.ts +1 -22
  140. package/dialog/index.js +71 -58
  141. package/dialog/types.d.ts +21 -1
  142. package/dialog/types.js +1 -1
  143. package/dialog/utils.js +11 -7
  144. package/emoji/global/index.d.ts +1 -0
  145. package/emoji/global/index.js +2 -0
  146. package/emoji/index.d.ts +1 -22
  147. package/emoji/index.js +19 -16
  148. package/emoji/types.d.ts +21 -1
  149. package/emoji/types.js +1 -1
  150. package/emoji/utils.js +22 -17
  151. package/emoji-picker/global/index.d.ts +1 -0
  152. package/emoji-picker/global/index.js +2 -0
  153. package/emoji-picker/index.d.ts +2 -22
  154. package/emoji-picker/index.js +138 -118
  155. package/emoji-picker/types.d.ts +21 -1
  156. package/emoji-picker/types.js +1 -1
  157. package/field/global/index.d.ts +1 -0
  158. package/field/global/index.js +2 -0
  159. package/field/index.d.ts +1 -22
  160. package/field/index.js +63 -60
  161. package/field/types.d.ts +21 -1
  162. package/field/types.js +1 -1
  163. package/file-drop/global/index.d.ts +1 -0
  164. package/file-drop/global/index.js +2 -0
  165. package/file-drop/index.d.ts +1 -22
  166. package/file-drop/index.js +103 -98
  167. package/file-drop/types.d.ts +21 -1
  168. package/file-drop/types.js +1 -1
  169. package/file-drop/utils.js +27 -22
  170. package/file-picker/global/index.d.ts +1 -0
  171. package/file-picker/global/index.js +2 -0
  172. package/file-picker/index.d.ts +1 -22
  173. package/file-picker/index.js +53 -48
  174. package/file-picker/types.d.ts +21 -1
  175. package/file-picker/types.js +1 -1
  176. package/file-picker/utils.js +6 -3
  177. package/file-status/global/index.d.ts +1 -0
  178. package/file-status/global/index.js +2 -0
  179. package/file-status/index.d.ts +2 -22
  180. package/file-status/index.js +33 -22
  181. package/file-status/types.d.ts +21 -1
  182. package/file-status/types.js +1 -1
  183. package/file-status/utils.js +4 -1
  184. package/flag/global/index.d.ts +1 -0
  185. package/flag/global/index.js +2 -0
  186. package/flag/index.d.ts +1 -22
  187. package/flag/index.js +19 -16
  188. package/flag/types.d.ts +21 -1
  189. package/flag/types.js +1 -1
  190. package/flag/utils.js +11 -8
  191. package/grid/global/index.d.ts +1 -0
  192. package/grid/global/index.js +2 -0
  193. package/grid/index.d.ts +1 -22
  194. package/grid/index.js +8 -5
  195. package/grid/types.d.ts +21 -1
  196. package/grid/types.js +1 -1
  197. package/grid-item/global/index.d.ts +1 -0
  198. package/grid-item/global/index.js +2 -0
  199. package/grid-item/index.d.ts +1 -22
  200. package/grid-item/index.js +17 -13
  201. package/grid-item/types.d.ts +21 -1
  202. package/grid-item/types.js +1 -1
  203. package/help-tooltip/global/index.d.ts +1 -0
  204. package/help-tooltip/global/index.js +2 -0
  205. package/help-tooltip/index.d.ts +1 -22
  206. package/help-tooltip/index.js +29 -26
  207. package/help-tooltip/types.d.ts +21 -1
  208. package/help-tooltip/types.js +1 -1
  209. package/icon/generated-icon-type.js +1 -1
  210. package/icon/global/index.d.ts +1 -0
  211. package/icon/global/index.js +2 -0
  212. package/icon/index.d.ts +1 -22
  213. package/icon/index.js +30 -28
  214. package/icon/types.d.ts +21 -1
  215. package/icon/types.js +1 -1
  216. package/inline-alert/global/index.d.ts +1 -0
  217. package/inline-alert/global/index.js +2 -0
  218. package/inline-alert/index.d.ts +2 -22
  219. package/inline-alert/index.js +58 -39
  220. package/inline-alert/types.d.ts +21 -1
  221. package/inline-alert/types.js +1 -1
  222. package/inline-alert/utils.js +4 -1
  223. package/input/global/index.d.ts +1 -0
  224. package/input/global/index.js +2 -0
  225. package/input/index.d.ts +2 -22
  226. package/input/index.js +295 -317
  227. package/input/types.d.ts +21 -1
  228. package/input/types.js +1 -1
  229. package/input/utils.js +56 -46
  230. package/link/global/index.d.ts +1 -0
  231. package/link/global/index.js +2 -0
  232. package/link/index.d.ts +1 -22
  233. package/link/index.js +88 -79
  234. package/link/types.d.ts +21 -1
  235. package/link/types.js +1 -1
  236. package/list/global/index.d.ts +1 -0
  237. package/list/global/index.js +2 -0
  238. package/list/index.d.ts +1 -21
  239. package/list/index.js +9 -6
  240. package/list/types.d.ts +21 -1
  241. package/list/types.js +1 -1
  242. package/list-item/global/index.d.ts +1 -0
  243. package/list-item/global/index.js +2 -0
  244. package/list-item/index.d.ts +1 -22
  245. package/list-item/index.js +9 -6
  246. package/list-item/types.d.ts +21 -1
  247. package/list-item/types.js +1 -1
  248. package/package.json +11 -5
  249. package/pagination/global/index.d.ts +1 -0
  250. package/pagination/global/index.js +2 -0
  251. package/pagination/index.d.ts +2 -22
  252. package/pagination/index.js +64 -46
  253. package/pagination/types.d.ts +21 -1
  254. package/pagination/types.js +1 -1
  255. package/persistent-overlay/global/index.d.ts +1 -0
  256. package/persistent-overlay/global/index.js +2 -0
  257. package/persistent-overlay/index.d.ts +1 -22
  258. package/persistent-overlay/index.js +42 -44
  259. package/persistent-overlay/types.d.ts +21 -1
  260. package/persistent-overlay/types.js +1 -1
  261. package/pop/global/index.d.ts +1 -0
  262. package/pop/global/index.js +2 -0
  263. package/pop/index.d.ts +3 -22
  264. package/pop/index.js +149 -150
  265. package/pop/types.d.ts +21 -1
  266. package/pop/types.js +1 -1
  267. package/pop/utils.js +24 -8
  268. package/popover/global/index.d.ts +1 -0
  269. package/popover/global/index.js +2 -0
  270. package/popover/index.d.ts +2 -22
  271. package/popover/index.js +104 -67
  272. package/popover/types.d.ts +21 -1
  273. package/popover/types.js +1 -1
  274. package/popover/utils.js +18 -7
  275. package/progress/global/index.d.ts +1 -0
  276. package/progress/global/index.js +2 -0
  277. package/progress/index.d.ts +1 -22
  278. package/progress/index.js +31 -33
  279. package/progress/types.d.ts +21 -1
  280. package/progress/types.js +1 -1
  281. package/progress-stepper/global/index.d.ts +1 -0
  282. package/progress-stepper/global/index.js +2 -0
  283. package/progress-stepper/index.d.ts +2 -22
  284. package/progress-stepper/index.js +64 -66
  285. package/progress-stepper/types.d.ts +21 -1
  286. package/progress-stepper/types.js +1 -1
  287. package/progress-stepper-item/global/index.d.ts +1 -0
  288. package/progress-stepper-item/global/index.js +2 -0
  289. package/progress-stepper-item/index.d.ts +1 -22
  290. package/progress-stepper-item/index.js +58 -50
  291. package/progress-stepper-item/types.d.ts +21 -1
  292. package/progress-stepper-item/types.js +1 -1
  293. package/progress-stepper-item/utils.js +22 -11
  294. package/radio/global/index.d.ts +1 -0
  295. package/radio/global/index.js +2 -0
  296. package/radio/index.d.ts +1 -22
  297. package/radio/index.js +79 -83
  298. package/radio/types.d.ts +21 -1
  299. package/radio/types.js +1 -1
  300. package/radio-option/global/index.d.ts +1 -0
  301. package/radio-option/global/index.js +2 -0
  302. package/radio-option/index.d.ts +1 -22
  303. package/radio-option/index.js +47 -41
  304. package/radio-option/types.d.ts +21 -1
  305. package/radio-option/types.js +1 -1
  306. package/rich-text/global/index.d.ts +1 -0
  307. package/rich-text/global/index.js +2 -0
  308. package/rich-text/index.d.ts +1 -22
  309. package/rich-text/index.js +45 -46
  310. package/rich-text/types.d.ts +21 -1
  311. package/rich-text/types.js +1 -1
  312. package/rich-text/utils.js +31 -33
  313. package/rich-textarea/global/index.d.ts +1 -0
  314. package/rich-textarea/global/index.js +2 -0
  315. package/rich-textarea/index.d.ts +1 -22
  316. package/rich-textarea/index.js +201 -194
  317. package/rich-textarea/types.d.ts +21 -1
  318. package/rich-textarea/types.js +1 -1
  319. package/rich-textarea/utils.js +313 -340
  320. package/segment-collapse/global/index.d.ts +1 -0
  321. package/segment-collapse/global/index.js +2 -0
  322. package/segment-collapse/index.d.ts +1 -22
  323. package/segment-collapse/index.js +31 -25
  324. package/segment-collapse/types.d.ts +21 -1
  325. package/segment-collapse/types.js +1 -1
  326. package/segmented-control/global/index.d.ts +1 -0
  327. package/segmented-control/global/index.js +2 -0
  328. package/segmented-control/index.d.ts +1 -22
  329. package/segmented-control/index.js +45 -45
  330. package/segmented-control/types.d.ts +21 -1
  331. package/segmented-control/types.js +1 -1
  332. package/segmented-control-option/global/index.d.ts +1 -0
  333. package/segmented-control-option/global/index.js +2 -0
  334. package/segmented-control-option/index.d.ts +1 -22
  335. package/segmented-control-option/index.js +44 -46
  336. package/segmented-control-option/types.d.ts +21 -1
  337. package/segmented-control-option/types.js +1 -1
  338. package/segmented-icon-control/global/index.d.ts +1 -0
  339. package/segmented-icon-control/global/index.js +2 -0
  340. package/segmented-icon-control/index.d.ts +1 -22
  341. package/segmented-icon-control/index.js +51 -50
  342. package/segmented-icon-control/types.d.ts +21 -1
  343. package/segmented-icon-control/types.js +1 -1
  344. package/segmented-icon-control-option/global/index.d.ts +1 -0
  345. package/segmented-icon-control-option/global/index.js +2 -0
  346. package/segmented-icon-control-option/index.d.ts +1 -22
  347. package/segmented-icon-control-option/index.js +36 -37
  348. package/segmented-icon-control-option/types.d.ts +21 -1
  349. package/segmented-icon-control-option/types.js +1 -1
  350. package/select-button/global/index.d.ts +1 -0
  351. package/select-button/global/index.js +2 -0
  352. package/select-button/index.d.ts +1 -26
  353. package/select-button/index.js +104 -112
  354. package/select-button/types.d.ts +25 -1
  355. package/select-button/types.js +1 -1
  356. package/select-menu/global/index.d.ts +1 -0
  357. package/select-menu/global/index.js +2 -0
  358. package/select-menu/index.d.ts +1 -22
  359. package/select-menu/index.js +201 -164
  360. package/select-menu/types.d.ts +21 -1
  361. package/select-menu/types.js +1 -1
  362. package/select-menu-option/global/index.d.ts +1 -0
  363. package/select-menu-option/global/index.js +2 -0
  364. package/select-menu-option/index.d.ts +1 -22
  365. package/select-menu-option/index.js +42 -33
  366. package/select-menu-option/types.d.ts +21 -1
  367. package/select-menu-option/types.js +1 -1
  368. package/select-menu-option/utils.js +4 -1
  369. package/skeleton/global/index.d.ts +1 -0
  370. package/skeleton/global/index.js +2 -0
  371. package/skeleton/index.d.ts +1 -22
  372. package/skeleton/index.js +35 -38
  373. package/skeleton/types.d.ts +21 -1
  374. package/skeleton/types.js +1 -1
  375. package/skeleton-item/global/index.d.ts +1 -0
  376. package/skeleton-item/global/index.js +2 -0
  377. package/skeleton-item/index.d.ts +1 -22
  378. package/skeleton-item/index.js +8 -5
  379. package/skeleton-item/types.d.ts +21 -1
  380. package/skeleton-item/types.js +1 -1
  381. package/spinner/global/index.d.ts +1 -0
  382. package/spinner/global/index.js +2 -0
  383. package/spinner/index.d.ts +1 -22
  384. package/spinner/index.js +31 -29
  385. package/spinner/types.d.ts +21 -1
  386. package/spinner/types.js +1 -1
  387. package/standalone.d.ts +0 -8
  388. package/standalone.js +79 -87
  389. package/standalone.ts +0 -8
  390. package/stop-events/index.js +12 -12
  391. package/table/global/index.d.ts +1 -0
  392. package/table/global/index.js +2 -0
  393. package/table/index.d.ts +1 -21
  394. package/table/index.js +9 -6
  395. package/table/types.d.ts +21 -1
  396. package/table/types.js +1 -1
  397. package/table-body/global/index.d.ts +1 -0
  398. package/table-body/global/index.js +2 -0
  399. package/table-body/index.d.ts +1 -21
  400. package/table-body/index.js +9 -6
  401. package/table-body/types.d.ts +21 -1
  402. package/table-body/types.js +1 -1
  403. package/table-cell/global/index.d.ts +1 -0
  404. package/table-cell/global/index.js +2 -0
  405. package/table-cell/index.d.ts +2 -22
  406. package/table-cell/index.js +13 -9
  407. package/table-cell/types.d.ts +21 -1
  408. package/table-cell/types.js +1 -1
  409. package/table-cell/utils.js +4 -1
  410. package/table-head/global/index.d.ts +1 -0
  411. package/table-head/global/index.js +2 -0
  412. package/table-head/index.d.ts +1 -21
  413. package/table-head/index.js +9 -6
  414. package/table-head/types.d.ts +21 -1
  415. package/table-head/types.js +1 -1
  416. package/table-head-cell/global/index.d.ts +1 -0
  417. package/table-head-cell/global/index.js +2 -0
  418. package/table-head-cell/index.d.ts +1 -22
  419. package/table-head-cell/index.js +29 -27
  420. package/table-head-cell/types.d.ts +21 -1
  421. package/table-head-cell/types.js +1 -1
  422. package/table-row/global/index.d.ts +1 -0
  423. package/table-row/global/index.js +2 -0
  424. package/table-row/index.d.ts +1 -22
  425. package/table-row/index.js +20 -17
  426. package/table-row/types.d.ts +21 -1
  427. package/table-row/types.js +1 -1
  428. package/tabs/global/index.d.ts +1 -0
  429. package/tabs/global/index.js +2 -0
  430. package/tabs/index.d.ts +2 -22
  431. package/tabs/index.js +32 -35
  432. package/tabs/types.d.ts +21 -1
  433. package/tabs/types.js +1 -1
  434. package/tabs-icon-option/global/index.d.ts +1 -0
  435. package/tabs-icon-option/global/index.js +2 -0
  436. package/tabs-icon-option/index.d.ts +1 -22
  437. package/tabs-icon-option/index.js +38 -40
  438. package/tabs-icon-option/types.d.ts +21 -1
  439. package/tabs-icon-option/types.js +1 -1
  440. package/tabs-option/global/index.d.ts +1 -0
  441. package/tabs-option/global/index.js +2 -0
  442. package/tabs-option/index.d.ts +1 -22
  443. package/tabs-option/index.js +41 -43
  444. package/tabs-option/types.d.ts +21 -1
  445. package/tabs-option/types.js +1 -1
  446. package/tag/colors.js +1 -1
  447. package/tag/global/index.d.ts +1 -0
  448. package/tag/global/index.js +2 -0
  449. package/tag/index.d.ts +1 -22
  450. package/tag/index.js +45 -44
  451. package/tag/types.d.ts +21 -1
  452. package/tag/types.js +1 -1
  453. package/tag/utils.js +7 -3
  454. package/text/global/index.d.ts +1 -0
  455. package/text/global/index.js +2 -0
  456. package/text/index.d.ts +2 -22
  457. package/text/index.js +33 -28
  458. package/text/types.d.ts +21 -1
  459. package/text/types.js +1 -1
  460. package/text/utils.js +4 -1
  461. package/textarea/global/index.d.ts +1 -0
  462. package/textarea/global/index.js +2 -0
  463. package/textarea/index.d.ts +1 -22
  464. package/textarea/index.js +147 -152
  465. package/textarea/types.d.ts +21 -1
  466. package/textarea/types.js +1 -1
  467. package/time-picker/global/index.d.ts +1 -0
  468. package/time-picker/global/index.js +2 -0
  469. package/time-picker/index.d.ts +2 -22
  470. package/time-picker/index.js +119 -123
  471. package/time-picker/types.d.ts +21 -1
  472. package/time-picker/types.js +1 -1
  473. package/time-picker/utils.js +31 -33
  474. package/title/global/index.d.ts +1 -0
  475. package/title/global/index.js +2 -0
  476. package/title/index.d.ts +2 -22
  477. package/title/index.js +32 -31
  478. package/title/types.d.ts +21 -1
  479. package/title/types.js +1 -1
  480. package/title/utils.js +18 -14
  481. package/toast/global/index.d.ts +1 -0
  482. package/toast/global/index.js +2 -0
  483. package/toast/index.d.ts +2 -22
  484. package/toast/index.js +37 -34
  485. package/toast/types.d.ts +21 -1
  486. package/toast/types.js +1 -1
  487. package/toast/utils.js +4 -1
  488. package/toast-manager/global/index.d.ts +1 -0
  489. package/toast-manager/global/index.js +2 -0
  490. package/toast-manager/index.d.ts +3 -22
  491. package/toast-manager/index.js +77 -63
  492. package/toast-manager/types.d.ts +21 -1
  493. package/toast-manager/types.js +1 -1
  494. package/toast-manager/utils.js +4 -1
  495. package/toggle/global/index.d.ts +1 -0
  496. package/toggle/global/index.js +2 -0
  497. package/toggle/index.d.ts +1 -22
  498. package/toggle/index.js +81 -75
  499. package/toggle/types.d.ts +21 -1
  500. package/toggle/types.js +1 -1
  501. package/tooltip/global/index.d.ts +1 -0
  502. package/tooltip/global/index.js +2 -0
  503. package/tooltip/index.d.ts +3 -22
  504. package/tooltip/index.js +105 -93
  505. package/tooltip/tooltip-state.js +56 -64
  506. package/tooltip/types.d.ts +21 -1
  507. package/tooltip/types.js +1 -1
  508. package/tooltip/utils.js +32 -13
  509. package/types.d.ts +12 -29
  510. package/utils/adapters.js +1 -1
  511. package/utils/component-names.d.ts +3 -0
  512. package/utils/component-names.js +85 -0
  513. package/utils/context.js +32 -42
  514. package/utils/countries.js +490 -2
  515. package/utils/csv.js +13 -6
  516. package/utils/debounce.js +10 -3
  517. package/utils/dom.js +60 -53
  518. package/utils/element.d.ts +107 -15
  519. package/utils/element.js +100 -19
  520. package/utils/event-target.js +11 -5
  521. package/utils/form.js +17 -12
  522. package/utils/get-react-event-handler.js +6 -3
  523. package/utils/global-components-constants.d.ts +3 -0
  524. package/utils/global-components-constants.js +8 -0
  525. package/utils/global-components-manager.d.ts +71 -0
  526. package/utils/global-components-manager.js +24 -0
  527. package/utils/index.js +65 -12
  528. package/utils/markdown.js +56 -43
  529. package/utils/rect.js +13 -18
  530. package/utils/shared/global-elements-manager.d.js +1 -0
  531. package/utils/shared/global-elements-manager.d.ts +62 -0
  532. package/utils/shared/global-elements-manager.js +163 -0
  533. package/utils/shared/global-elements-store.d.js +1 -0
  534. package/utils/shared/global-elements-store.d.ts +12 -0
  535. package/utils/shared/global-elements-store.js +31 -0
  536. package/utils/shared/index.d.js +11 -0
  537. package/utils/shared/index.d.ts +3 -0
  538. package/utils/shared/index.js +11 -0
  539. package/utils/shared/nectary-element-base.d.js +1 -0
  540. package/utils/shared/nectary-element-base.d.ts +9 -0
  541. package/utils/shared/nectary-element-base.js +25 -0
  542. package/utils/shared/package.json +9 -0
  543. package/utils/shared/tsconfig.json +20 -0
  544. package/utils/size.js +8 -3
  545. package/utils/slot.js +13 -9
  546. package/utils/throttle.js +5 -2
  547. package/utils/uid.js +5 -2
  548. package/card/index.d.ts +0 -40
  549. package/card/index.js +0 -134
  550. package/card/types.d.ts +0 -17
  551. package/card/types.js +0 -1
  552. package/horizontal-stepper/index.d.ts +0 -33
  553. package/horizontal-stepper/index.js +0 -62
  554. package/horizontal-stepper/types.d.ts +0 -42
  555. package/horizontal-stepper/types.js +0 -1
  556. package/horizontal-stepper-item/index.d.ts +0 -38
  557. package/horizontal-stepper-item/index.js +0 -62
  558. package/horizontal-stepper-item/types.d.ts +0 -38
  559. package/horizontal-stepper-item/types.js +0 -1
  560. package/horizontal-stepper-item/utils.d.ts +0 -2
  561. package/horizontal-stepper-item/utils.js +0 -1
  562. package/segment/index.d.ts +0 -40
  563. package/segment/index.js +0 -110
  564. package/segment/types.d.ts +0 -23
  565. package/segment/types.js +0 -1
  566. package/segment/utils.d.ts +0 -3
  567. package/segment/utils.js +0 -16
  568. package/tile-control/index.d.ts +0 -39
  569. package/tile-control/index.js +0 -111
  570. package/tile-control/types.d.ts +0 -29
  571. package/tile-control/types.js +0 -1
  572. package/tile-control-option/index.d.ts +0 -40
  573. package/tile-control-option/index.js +0 -99
  574. package/tile-control-option/types.d.ts +0 -52
  575. package/tile-control-option/types.js +0 -1
  576. package/vertical-stepper/index.d.ts +0 -33
  577. package/vertical-stepper/index.js +0 -58
  578. package/vertical-stepper/types.d.ts +0 -34
  579. package/vertical-stepper/types.js +0 -1
  580. package/vertical-stepper-item/index.d.ts +0 -38
  581. package/vertical-stepper-item/index.js +0 -62
  582. package/vertical-stepper-item/types.d.ts +0 -42
  583. package/vertical-stepper-item/types.js +0 -1
  584. package/vertical-stepper-item/utils.d.ts +0 -2
  585. package/vertical-stepper-item/utils.js +0 -1
@@ -1,15 +1,21 @@
1
- import '../input';
2
- import '../icon';
3
- import '../text';
4
- import { isSelectMenuOption } from '../select-menu-option/utils';
5
- import { attrValueToPixels, defineCustomElement, getAttribute, getBooleanAttribute, unpackCsv, getFirstCsvValue, getIntegerAttribute, getReactEventHandler, isAttrTrue, NectaryElement, updateAttribute, updateBooleanAttribute, updateCsv, updateExplicitBooleanAttribute, updateIntegerAttribute, debounceTimeout, setClass, subscribeContext, hasClass, isTargetEqual } from '../utils';
6
- import { CSVToFormData, setFormValue } from '../utils/form';
7
- const templateHTML = '<style>:host{display:block;outline:0}#listbox{overflow-y:auto;max-height:var(--sinch-comp-select-menu-font-max-height)}#search{display:none;margin:10px}#search.active{display:block}#search-clear:not(.active){display:none}#not-found{display:flex;align-items:center;justify-content:center;width:100%;height:30px;margin-bottom:10px;pointer-events:none;user-select:none;--sinch-comp-text-font:var(--sinch-comp-select-menu-font-not-found-text);--sinch-global-color-text:var(--sinch-comp-select-menu-color-default-not-found-text-initial)}#not-found:not(.active){display:none}::slotted(.hidden){display:none}::slotted(sinch-title){padding:8px 16px;--sinch-global-color-text:var(--sinch-comp-select-menu-color-default-title-initial)}</style><sinch-input id="search" size="s" placeholder="Search"><sinch-icon icons-version="2" name="magnifying-glass" id="icon-search" slot="icon"></sinch-icon><sinch-button id="search-clear" slot="right"><sinch-icon icons-version="2" name="fa-xmark" slot="icon"></sinch-icon></sinch-button></sinch-input><div id="not-found"><sinch-text type="m">No results</sinch-text></div><div id="listbox" role="presentation"><slot></slot></div>';
1
+ import "../input/index.js";
2
+ import "../icon/index.js";
3
+ import "../text/index.js";
4
+ import { isSelectMenuOption } from "../select-menu-option/utils.js";
5
+ import { subscribeContext } from "../utils/context.js";
6
+ import { unpackCsv, getFirstCsvValue, updateCsv } from "../utils/csv.js";
7
+ import { getBooleanAttribute, updateAttribute, attrValueToPixels, updateExplicitBooleanAttribute, isAttrTrue, getAttribute, updateIntegerAttribute, getIntegerAttribute, updateBooleanAttribute, hasClass, setClass } from "../utils/dom.js";
8
+ import { defineCustomElement, NectaryElement } from "../utils/element.js";
9
+ import { debounceTimeout } from "../utils/debounce.js";
10
+ import { getReactEventHandler } from "../utils/get-react-event-handler.js";
11
+ import { isTargetEqual } from "../utils/event-target.js";
12
+ import { setFormValue, CSVToFormData } from "../utils/form.js";
13
+ const templateHTML = '<style>\n :host {\n display: block;\n outline: none;\n }\n\n #listbox {\n overflow-y: auto;\n max-height: var(--sinch-comp-select-menu-font-max-height);\n }\n\n #search {\n display: none;\n margin: 10px;\n }\n\n #search.active {\n display: block;\n }\n\n #search-clear:not(.active) {\n display: none;\n }\n\n #not-found {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 30px;\n margin-bottom: 10px;\n pointer-events: none;\n user-select: none;\n\n --sinch-comp-text-font: var(--sinch-comp-select-menu-font-not-found-text);\n --sinch-global-color-text:\n var(\n --sinch-comp-select-menu-color-default-not-found-text-initial\n );\n }\n\n #not-found:not(.active) {\n display: none;\n }\n\n ::slotted(.hidden) {\n display: none;\n }\n\n ::slotted(sinch-title) {\n padding: 8px 16px;\n\n --sinch-global-color-text: var(--sinch-comp-select-menu-color-default-title-initial);\n }\n</style>\n\n<sinch-input id="search" size="s" placeholder="Search">\n <sinch-icon icons-version="2" name="magnifying-glass"\n id="icon-search"\n slot="icon"\n ></sinch-icon>\n <sinch-button id="search-clear" slot="right">\n <sinch-icon icons-version="2" name="fa-xmark" slot="icon"></sinch-icon>\n </sinch-button>\n</sinch-input>\n<div id="not-found">\n <sinch-text type="m">No results</sinch-text>\n</div>\n<div id="listbox" role="presentation">\n <slot></slot>\n</div>\n';
8
14
  const ITEM_HEIGHT = 40;
9
15
  const NUM_ITEMS_SEARCH = 7;
10
- const template = document.createElement('template');
16
+ const template = document.createElement("template");
11
17
  template.innerHTML = templateHTML;
12
- export class SelectMenu extends NectaryElement {
18
+ class SelectMenu extends NectaryElement {
13
19
  #$optionSlot;
14
20
  #$listbox;
15
21
  #$search;
@@ -25,11 +31,11 @@ export class SelectMenu extends NectaryElement {
25
31
  const shadowRoot = this.attachShadow();
26
32
  shadowRoot.appendChild(template.content.cloneNode(true));
27
33
  this.#internals = this.attachInternals();
28
- this.#$optionSlot = shadowRoot.querySelector('slot');
29
- this.#$listbox = shadowRoot.querySelector('#listbox');
30
- this.#$search = shadowRoot.querySelector('#search');
31
- this.#$searchClear = shadowRoot.querySelector('#search-clear');
32
- this.#$notFound = shadowRoot.querySelector('#not-found');
34
+ this.#$optionSlot = shadowRoot.querySelector("slot");
35
+ this.#$listbox = shadowRoot.querySelector("#listbox");
36
+ this.#$search = shadowRoot.querySelector("#search");
37
+ this.#$searchClear = shadowRoot.querySelector("#search-clear");
38
+ this.#$notFound = shadowRoot.querySelector("#not-found");
33
39
  this.#searchDebounce = debounceTimeout(200)(this.#updateSearchValue);
34
40
  }
35
41
  connectedCallback() {
@@ -37,20 +43,46 @@ export class SelectMenu extends NectaryElement {
37
43
  const options = {
38
44
  signal: this.#controller.signal
39
45
  };
40
- this.setAttribute('role', 'listbox');
41
- this.#internals.role = 'listbox';
46
+ this.setAttribute("role", "listbox");
47
+ this.#internals.role = "listbox";
42
48
  this.tabIndex = 0;
43
- this.addEventListener('keydown', this.#onListboxKeyDown, options);
44
- this.addEventListener('focus', this.#onFocus, options);
45
- this.addEventListener('blur', this.#onListboxBlur, options);
46
- this.#$listbox.addEventListener('click', this.#onListboxClick, options);
47
- this.#$search.addEventListener('-change', this.#onSearchChange, options);
48
- this.#$searchClear.addEventListener('-click', this.#onSearchClearClick, options);
49
- this.#$optionSlot.addEventListener('slotchange', this.#onOptionSlotChange, options);
50
- this.addEventListener('-search-change', this.#onSearchChangeReactHandler, options);
51
- this.addEventListener('-change', this.#onChangeReactHandler, options);
52
- subscribeContext(this, 'keydown', this.#onContextKeyDown, this.#controller.signal);
53
- subscribeContext(this, 'visibility', this.#onContextVisibility, this.#controller.signal);
49
+ this.addEventListener("keydown", this.#onListboxKeyDown, options);
50
+ this.addEventListener("focus", this.#onFocus, options);
51
+ this.addEventListener("blur", this.#onListboxBlur, options);
52
+ this.#$listbox.addEventListener("click", this.#onListboxClick, options);
53
+ this.#$search.addEventListener(
54
+ "-change",
55
+ this.#onSearchChange,
56
+ options
57
+ );
58
+ this.#$searchClear.addEventListener(
59
+ "-click",
60
+ this.#onSearchClearClick,
61
+ options
62
+ );
63
+ this.#$optionSlot.addEventListener(
64
+ "slotchange",
65
+ this.#onOptionSlotChange,
66
+ options
67
+ );
68
+ this.addEventListener(
69
+ "-search-change",
70
+ this.#onSearchChangeReactHandler,
71
+ options
72
+ );
73
+ this.addEventListener("-change", this.#onChangeReactHandler, options);
74
+ subscribeContext(
75
+ this,
76
+ "keydown",
77
+ this.#onContextKeyDown,
78
+ this.#controller.signal
79
+ );
80
+ subscribeContext(
81
+ this,
82
+ "visibility",
83
+ this.#onContextVisibility,
84
+ this.#controller.signal
85
+ );
54
86
  this.#onOptionSlotChange();
55
87
  }
56
88
  disconnectedCallback() {
@@ -62,121 +94,126 @@ export class SelectMenu extends NectaryElement {
62
94
  setFormValue(this.#internals, CSVToFormData(this.name, this.value));
63
95
  }
64
96
  formResetCallback() {
65
- this.value = '';
66
- setFormValue(this.#internals, '');
97
+ this.value = "";
98
+ setFormValue(this.#internals, "");
67
99
  }
68
100
  formStateRestoreCallback(state) {
69
- if (this.#internals.form === null || getBooleanAttribute(this.#internals.form, 'data-form-state-restore') === false) {
101
+ if (this.#internals.form === null || getBooleanAttribute(this.#internals.form, "data-form-state-restore") === false) {
70
102
  return;
71
103
  }
72
104
  if (state !== null) {
73
- const value = typeof state === 'string' ? state : state.get(this.name);
74
- this.value = value?.toString() ?? '';
75
- setFormValue(this.#internals, CSVToFormData(this.name, value?.toString() ?? ''));
105
+ const value = typeof state === "string" ? state : state.get(this.name);
106
+ this.value = value?.toString() ?? "";
107
+ setFormValue(this.#internals, CSVToFormData(this.name, value?.toString() ?? ""));
76
108
  }
77
109
  }
78
110
  static get observedAttributes() {
79
- return ['value', 'rows', 'multiple', 'search-value', 'search-placeholder', 'search-autocomplete'];
111
+ return [
112
+ "value",
113
+ "rows",
114
+ "multiple",
115
+ "search-value",
116
+ "search-placeholder",
117
+ "search-autocomplete"
118
+ ];
80
119
  }
81
120
  attributeChangedCallback(name, oldVal, newVal) {
82
121
  switch (name) {
83
- case 'multiple':
84
- {
85
- this.#onValueChange(this.value);
86
- updateExplicitBooleanAttribute(this, 'aria-multiselectable', isAttrTrue(newVal));
87
- this.#internals.ariaMultiSelectable = isAttrTrue(newVal).toString();
88
- break;
89
- }
90
- case 'search-autocomplete':
91
- {
92
- updateAttribute(this.#$search, 'autocomplete', newVal);
93
- break;
94
- }
95
- case 'value':
96
- {
97
- this.#onValueChange(newVal ?? '');
98
- break;
99
- }
100
- case 'rows':
101
- {
102
- const numberOfItems = this.#$optionSlot.assignedElements().length;
103
- const maxNumberOfRows = parseInt(newVal ?? '0', 10);
104
- this.#$listbox.style.maxHeight = attrValueToPixels(newVal, {
105
- min: 2,
106
- itemSizeMultiplier: ITEM_HEIGHT,
107
- addExtraSpace: numberOfItems > maxNumberOfRows
108
- });
109
- break;
110
- }
111
- case 'search-placeholder':
112
- {
113
- updateAttribute(this.#$search, 'placeholder', newVal);
114
- break;
115
- }
116
- case 'search-value':
117
- {
118
- updateAttribute(this.#$search, 'value', newVal);
119
- this.#userManagedSearch = true;
120
- this.#updateSearchList(newVal !== null ? newVal : '');
121
- break;
122
- }
122
+ case "multiple": {
123
+ this.#onValueChange(this.value);
124
+ updateExplicitBooleanAttribute(
125
+ this,
126
+ "aria-multiselectable",
127
+ isAttrTrue(newVal)
128
+ );
129
+ this.#internals.ariaMultiSelectable = isAttrTrue(newVal).toString();
130
+ break;
131
+ }
132
+ case "search-autocomplete": {
133
+ updateAttribute(this.#$search, "autocomplete", newVal);
134
+ break;
135
+ }
136
+ case "value": {
137
+ this.#onValueChange(newVal ?? "");
138
+ break;
139
+ }
140
+ case "rows": {
141
+ const numberOfItems = this.#$optionSlot.assignedElements().length;
142
+ const maxNumberOfRows = parseInt(newVal ?? "0", 10);
143
+ this.#$listbox.style.maxHeight = attrValueToPixels(newVal, {
144
+ min: 2,
145
+ itemSizeMultiplier: ITEM_HEIGHT,
146
+ addExtraSpace: numberOfItems > maxNumberOfRows
147
+ });
148
+ break;
149
+ }
150
+ case "search-placeholder": {
151
+ updateAttribute(this.#$search, "placeholder", newVal);
152
+ break;
153
+ }
154
+ case "search-value": {
155
+ updateAttribute(this.#$search, "value", newVal);
156
+ this.#userManagedSearch = true;
157
+ this.#updateSearchList(newVal !== null ? newVal : "");
158
+ break;
159
+ }
123
160
  }
124
161
  }
125
162
  set name(value) {
126
- updateAttribute(this, 'name', value);
163
+ updateAttribute(this, "name", value);
127
164
  }
128
165
  get name() {
129
- return getAttribute(this, 'name', '');
166
+ return getAttribute(this, "name", "");
130
167
  }
131
168
  set value(value) {
132
- updateAttribute(this, 'value', value);
169
+ updateAttribute(this, "value", value);
133
170
  }
134
171
  get value() {
135
- return getAttribute(this, 'value', '');
172
+ return getAttribute(this, "value", "");
136
173
  }
137
174
  set rows(value) {
138
- updateIntegerAttribute(this, 'rows', value);
175
+ updateIntegerAttribute(this, "rows", value);
139
176
  }
140
177
  get rows() {
141
- return getIntegerAttribute(this, 'rows', null);
178
+ return getIntegerAttribute(this, "rows", null);
142
179
  }
143
180
  set multiple(isMultiple) {
144
- updateBooleanAttribute(this, 'multiple', isMultiple);
181
+ updateBooleanAttribute(this, "multiple", isMultiple);
145
182
  }
146
183
  get multiple() {
147
- return getBooleanAttribute(this, 'multiple');
184
+ return getBooleanAttribute(this, "multiple");
148
185
  }
149
186
  set searchable(isSearchable) {
150
- updateBooleanAttribute(this, 'searchable', isSearchable);
187
+ updateBooleanAttribute(this, "searchable", isSearchable);
151
188
  }
152
189
  get searchable() {
153
- const searchableAttribute = this.getAttribute('searchable');
190
+ const searchableAttribute = this.getAttribute("searchable");
154
191
  return searchableAttribute === null ? searchableAttribute : isAttrTrue(searchableAttribute);
155
192
  }
156
- set 'search-autocomplete'(autocomplete) {
157
- updateAttribute(this.#$search, 'autocomplete', autocomplete);
193
+ set "search-autocomplete"(autocomplete) {
194
+ updateAttribute(this.#$search, "autocomplete", autocomplete);
158
195
  }
159
- get 'search-autocomplete'() {
160
- return getAttribute(this.#$search, 'autocomplete', '');
196
+ get "search-autocomplete"() {
197
+ return getAttribute(this.#$search, "autocomplete", "");
161
198
  }
162
- set 'search-placeholder'(placeholder) {
163
- updateAttribute(this.#$search, 'placeholder', placeholder);
199
+ set "search-placeholder"(placeholder) {
200
+ updateAttribute(this.#$search, "placeholder", placeholder);
164
201
  }
165
- get 'search-placeholder'() {
166
- return getAttribute(this.#$search, 'placeholder', '');
202
+ get "search-placeholder"() {
203
+ return getAttribute(this.#$search, "placeholder", "");
167
204
  }
168
- set 'search-value'(value) {
169
- updateAttribute(this, 'search-value', value);
205
+ set "search-value"(value) {
206
+ updateAttribute(this, "search-value", value);
170
207
  this.#userManagedSearch = true;
171
208
  }
172
- get 'search-value'() {
173
- return getAttribute(this, 'search-value', '');
209
+ get "search-value"() {
210
+ return getAttribute(this, "search-value", "");
174
211
  }
175
212
  get focusable() {
176
213
  return true;
177
214
  }
178
215
  #onFocus = () => {
179
- const isSearchActive = hasClass(this.#$search, 'active');
216
+ const isSearchActive = hasClass(this.#$search, "active");
180
217
  if (isSearchActive) {
181
218
  this.#$search.focus();
182
219
  }
@@ -184,39 +221,39 @@ export class SelectMenu extends NectaryElement {
184
221
  #onListboxBlur = () => {
185
222
  this.#selectOption(null);
186
223
  };
187
- #onListboxClick = e => {
224
+ #onListboxClick = (e) => {
188
225
  const $elem = e.target;
189
226
  if ($elem == null || !($elem instanceof Element) || !isSelectMenuOption($elem)) {
190
227
  return;
191
228
  }
192
229
  this.focus();
193
- if (!isTargetEqual(e, this.#$listbox) && !getBooleanAttribute($elem, 'disabled')) {
230
+ if (!isTargetEqual(e, this.#$listbox) && !getBooleanAttribute($elem, "disabled")) {
194
231
  this.#selectOption($elem);
195
232
  this.#dispatchChangeEvent($elem);
196
233
  }
197
234
  };
198
- #onSearchChange = e => {
235
+ #onSearchChange = (e) => {
199
236
  if (!this.#userManagedSearch) {
200
237
  this.#$search.value = e.detail;
201
238
  this.#searchDebounce.fn();
202
239
  } else {
203
240
  this.#updateSearchValue(e.detail);
204
241
  }
205
- setClass(this.#$searchClear, 'active', e.detail.length > 0);
242
+ setClass(this.#$searchClear, "active", e.detail.length > 0);
206
243
  };
207
244
  #onSearchClearClick = () => {
208
245
  if (!this.#userManagedSearch) {
209
- this.#$search.value = '';
246
+ this.#$search.value = "";
210
247
  this.#searchDebounce.fn();
211
248
  } else {
212
- this.#updateSearchValue('');
249
+ this.#updateSearchValue("");
213
250
  }
214
251
  this.#$search.focus();
215
- setClass(this.#$searchClear, 'active', false);
252
+ setClass(this.#$searchClear, "active", false);
216
253
  };
217
- #updateSearchValue = newValue => {
218
- const searchValue = newValue === undefined ? this.#$search.value.toLowerCase() : newValue;
219
- const searchChangedEvent = new CustomEvent('-search-change', {
254
+ #updateSearchValue = (newValue) => {
255
+ const searchValue = newValue === void 0 ? this.#$search.value.toLowerCase() : newValue;
256
+ const searchChangedEvent = new CustomEvent("-search-change", {
220
257
  detail: searchValue,
221
258
  cancelable: true
222
259
  });
@@ -225,21 +262,21 @@ export class SelectMenu extends NectaryElement {
225
262
  this.#updateSearchList(searchValue);
226
263
  }
227
264
  };
228
- #updateSearchList = searchValue => {
265
+ #updateSearchList = (searchValue) => {
229
266
  const $options = this.#getOptionElements();
230
267
  let someFound = false;
231
268
  for (const $opt of $options) {
232
269
  const isHidden = searchValue.length > 0 && !$opt.matchesSearch(searchValue);
233
270
  someFound ||= !isHidden;
234
- setClass($opt, 'hidden', isHidden);
271
+ setClass($opt, "hidden", isHidden);
235
272
  }
236
- setClass(this.#$notFound, 'active', !someFound);
273
+ setClass(this.#$notFound, "active", !someFound);
237
274
  this.#selectOption(null);
238
275
  };
239
- #onContextKeyDown = e => {
276
+ #onContextKeyDown = (e) => {
240
277
  this.#handleKeydown(e.detail);
241
278
  };
242
- #onContextVisibility = e => {
279
+ #onContextVisibility = (e) => {
243
280
  if (e.detail) {
244
281
  this.#selectOption(this.#findCheckedOption());
245
282
  this.#onFocus();
@@ -247,33 +284,30 @@ export class SelectMenu extends NectaryElement {
247
284
  this.#selectOption(null);
248
285
  }
249
286
  };
250
- #onListboxKeyDown = e => {
287
+ #onListboxKeyDown = (e) => {
251
288
  this.#handleKeydown(e);
252
289
  };
253
290
  #handleKeydown(e) {
254
291
  switch (e.code) {
255
- case 'Space':
256
- case 'Enter':
257
- {
258
- const $option = this.#findSelectedOption();
259
- if ($option !== null) {
260
- e.preventDefault();
261
- this.#dispatchChangeEvent($option);
262
- }
263
- break;
264
- }
265
- case 'ArrowUp':
266
- {
267
- e.preventDefault();
268
- this.#selectOption(this.#getPrevOption());
269
- break;
270
- }
271
- case 'ArrowDown':
272
- {
292
+ case "Space":
293
+ case "Enter": {
294
+ const $option = this.#findSelectedOption();
295
+ if ($option !== null) {
273
296
  e.preventDefault();
274
- this.#selectOption(this.#getNextOption());
275
- break;
297
+ this.#dispatchChangeEvent($option);
276
298
  }
299
+ break;
300
+ }
301
+ case "ArrowUp": {
302
+ e.preventDefault();
303
+ this.#selectOption(this.#getPrevOption());
304
+ break;
305
+ }
306
+ case "ArrowDown": {
307
+ e.preventDefault();
308
+ this.#selectOption(this.#getNextOption());
309
+ break;
310
+ }
277
311
  }
278
312
  }
279
313
  #onOptionSlotChange = () => {
@@ -282,37 +316,37 @@ export class SelectMenu extends NectaryElement {
282
316
  const isEnoughOptions = options.length >= NUM_ITEMS_SEARCH;
283
317
  const isSearchActive = isEnoughOptions && searchable !== false || Boolean(searchable);
284
318
  if (!isSearchActive) {
285
- updateAttribute(this.#$search, 'value', null);
319
+ updateAttribute(this.#$search, "value", null);
286
320
  }
287
- setClass(this.#$search, 'active', isSearchActive);
321
+ setClass(this.#$search, "active", isSearchActive);
288
322
  this.#onValueChange(this.value);
289
323
  };
290
324
  #onValueChange(csv) {
291
325
  if (this.multiple) {
292
326
  const values = unpackCsv(csv);
293
327
  for (const $option of this.#getOptionElements()) {
294
- const isChecked = !getBooleanAttribute($option, 'disabled') && values.includes(getAttribute($option, 'value', ''));
295
- updateBooleanAttribute($option, 'data-checked', isChecked);
328
+ const isChecked = !getBooleanAttribute($option, "disabled") && values.includes(getAttribute($option, "value", ""));
329
+ updateBooleanAttribute($option, "data-checked", isChecked);
296
330
  }
297
331
  const formData = new FormData();
298
- values.forEach(value => {
332
+ values.forEach((value) => {
299
333
  formData.append(this.name, value);
300
334
  });
301
335
  setFormValue(this.#internals, formData);
302
336
  } else {
303
337
  const value = getFirstCsvValue(csv);
304
338
  for (const $option of this.#getOptionElements()) {
305
- const isChecked = !getBooleanAttribute($option, 'disabled') && value === getAttribute($option, 'value', '');
306
- updateBooleanAttribute($option, 'data-checked', isChecked);
339
+ const isChecked = !getBooleanAttribute($option, "disabled") && value === getAttribute($option, "value", "");
340
+ updateBooleanAttribute($option, "data-checked", isChecked);
307
341
  }
308
- setFormValue(this.#internals, value ?? '');
342
+ setFormValue(this.#internals, value ?? "");
309
343
  }
310
344
  }
311
345
  #getFirstOption() {
312
346
  const $options = this.#getOptionElements();
313
347
  for (let i = 0; i < $options.length; i++) {
314
348
  const el = $options[i];
315
- if (!getBooleanAttribute(el, 'disabled') && !el.classList.contains('hidden')) {
349
+ if (!getBooleanAttribute(el, "disabled") && !el.classList.contains("hidden")) {
316
350
  return el;
317
351
  }
318
352
  }
@@ -322,7 +356,7 @@ export class SelectMenu extends NectaryElement {
322
356
  const $options = this.#getOptionElements();
323
357
  for (let i = $options.length - 1; i >= 0; i--) {
324
358
  const el = $options[i];
325
- if (!getBooleanAttribute(el, 'disabled') && !el.classList.contains('hidden')) {
359
+ if (!getBooleanAttribute(el, "disabled") && !el.classList.contains("hidden")) {
326
360
  return el;
327
361
  }
328
362
  }
@@ -334,7 +368,7 @@ export class SelectMenu extends NectaryElement {
334
368
  const $options = this.#getOptionElements();
335
369
  for (let i = 1; i <= $options.length; i++) {
336
370
  const el = $options[(i + index) % $options.length];
337
- if (!getBooleanAttribute(el, 'disabled') && !el.classList.contains('hidden')) {
371
+ if (!getBooleanAttribute(el, "disabled") && !el.classList.contains("hidden")) {
338
372
  return el;
339
373
  }
340
374
  }
@@ -347,7 +381,7 @@ export class SelectMenu extends NectaryElement {
347
381
  const $options = this.#getOptionElements();
348
382
  for (let i = 1; i <= $options.length; i++) {
349
383
  const el = $options[(index - i + $options.length) % $options.length];
350
- if (!getBooleanAttribute(el, 'disabled') && !el.classList.contains('hidden')) {
384
+ if (!getBooleanAttribute(el, "disabled") && !el.classList.contains("hidden")) {
351
385
  return el;
352
386
  }
353
387
  }
@@ -355,14 +389,12 @@ export class SelectMenu extends NectaryElement {
355
389
  return this.#getLastOption();
356
390
  }
357
391
  #selectOption($option) {
358
- const hasRows = this.hasAttribute('rows');
392
+ const hasRows = this.hasAttribute("rows");
359
393
  for (const $op of this.#getOptionElements()) {
360
394
  const isSelected = $op === $option;
361
- updateBooleanAttribute($op, 'data-selected', isSelected);
362
- if (isSelected && hasRows) {
363
- $op.scrollIntoView?.({
364
- block: 'nearest'
365
- });
395
+ updateBooleanAttribute($op, "data-selected", isSelected);
396
+ if (isSelected && Boolean(hasRows)) {
397
+ $op.scrollIntoView?.({ block: "nearest" });
366
398
  }
367
399
  }
368
400
  }
@@ -374,7 +406,7 @@ export class SelectMenu extends NectaryElement {
374
406
  const elements = this.#getOptionElements();
375
407
  for (let i = 0; i < elements.length; i++) {
376
408
  const el = elements[i];
377
- if (!getBooleanAttribute(el, 'disabled') && getBooleanAttribute(el, 'data-selected')) {
409
+ if (!getBooleanAttribute(el, "disabled") && getBooleanAttribute(el, "data-selected")) {
378
410
  return i;
379
411
  }
380
412
  }
@@ -383,7 +415,7 @@ export class SelectMenu extends NectaryElement {
383
415
  #findSelectedOption() {
384
416
  const elements = this.#getOptionElements();
385
417
  for (const el of elements) {
386
- if (!getBooleanAttribute(el, 'disabled') && getBooleanAttribute(el, 'data-selected')) {
418
+ if (!getBooleanAttribute(el, "disabled") && getBooleanAttribute(el, "data-selected")) {
387
419
  return el;
388
420
  }
389
421
  }
@@ -393,7 +425,7 @@ export class SelectMenu extends NectaryElement {
393
425
  const elements = this.#getOptionElements();
394
426
  const value = this.multiple ? getFirstCsvValue(this.value) : this.value;
395
427
  for (const $el of elements) {
396
- if (!getBooleanAttribute($el, 'disabled') && getAttribute($el, 'value') === value) {
428
+ if (!getBooleanAttribute($el, "disabled") && getAttribute($el, "value") === value) {
397
429
  return $el;
398
430
  }
399
431
  }
@@ -404,16 +436,21 @@ export class SelectMenu extends NectaryElement {
404
436
  return;
405
437
  }
406
438
  const value = $opt.value;
407
- const result = this.multiple ? updateCsv(this.value, value, !getBooleanAttribute($opt, 'data-checked')) : value;
408
- this.dispatchEvent(new CustomEvent('-change', {
409
- detail: result
410
- }));
411
- }
412
- #onChangeReactHandler = e => {
413
- getReactEventHandler(this, 'on-change')?.(e);
439
+ const result = this.multiple ? updateCsv(
440
+ this.value,
441
+ value,
442
+ !getBooleanAttribute($opt, "data-checked")
443
+ ) : value;
444
+ this.dispatchEvent(new CustomEvent("-change", { detail: result }));
445
+ }
446
+ #onChangeReactHandler = (e) => {
447
+ getReactEventHandler(this, "on-change")?.(e);
414
448
  };
415
- #onSearchChangeReactHandler = e => {
416
- getReactEventHandler(this, 'on-search-change')?.(e);
449
+ #onSearchChangeReactHandler = (e) => {
450
+ getReactEventHandler(this, "on-search-change")?.(e);
417
451
  };
418
452
  }
419
- defineCustomElement('sinch-select-menu', SelectMenu);
453
+ defineCustomElement("sinch-select-menu", SelectMenu);
454
+ export {
455
+ SelectMenu
456
+ };
@@ -1,4 +1,4 @@
1
- import type { NectaryComponentReactByType, NectaryComponentVanillaByType } from '../types';
1
+ import type { NectaryComponentReactByType, NectaryComponentVanillaByType, NectaryComponentReact, NectaryComponentVanilla } from '../types';
2
2
  export type TSinchSelectMenuProps = {
3
3
  /** Identification for uncontrolled form submissions */
4
4
  name?: string;
@@ -36,3 +36,23 @@ export type TSinchSelectMenu = {
36
36
  };
37
37
  export type TSinchSelectMenuElement = NectaryComponentVanillaByType<TSinchSelectMenu>;
38
38
  export type TSinchSelectMenuReact = NectaryComponentReactByType<TSinchSelectMenu>;
39
+ declare global {
40
+ interface NectaryComponentMap {
41
+ 'sinch-select-menu': TSinchSelectMenu;
42
+ }
43
+ interface HTMLElementTagNameMap {
44
+ 'sinch-select-menu': NectaryComponentVanilla<'sinch-select-menu'>;
45
+ }
46
+ namespace JSX {
47
+ interface IntrinsicElements {
48
+ 'sinch-select-menu': NectaryComponentReact<'sinch-select-menu'>;
49
+ }
50
+ }
51
+ }
52
+ declare module 'react' {
53
+ namespace JSX {
54
+ interface IntrinsicElements extends globalThis.JSX.IntrinsicElements {
55
+ 'sinch-select-menu': NectaryComponentReact<'sinch-select-menu'>;
56
+ }
57
+ }
58
+ }
@@ -1 +1 @@
1
- export {};
1
+
@@ -0,0 +1 @@
1
+ export * from '../types';
@@ -0,0 +1,2 @@
1
+ import { defineCustomElement } from "../../utils/element.js";
2
+ defineCustomElement("sinch-select-menu-option");