@nectary/components 2.8.8 → 2.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (447) hide show
  1. package/package.json +1 -1
  2. package/accordion/index.d.ts +0 -11
  3. package/accordion/index.js +0 -86
  4. package/accordion/types.d.ts +0 -21
  5. package/accordion/types.js +0 -1
  6. package/accordion-item/index.d.ts +0 -14
  7. package/accordion-item/index.js +0 -95
  8. package/accordion-item/types.d.ts +0 -36
  9. package/accordion-item/types.js +0 -1
  10. package/accordion-item/utils.d.ts +0 -2
  11. package/accordion-item/utils.js +0 -1
  12. package/action-menu/index.d.ts +0 -11
  13. package/action-menu/index.js +0 -195
  14. package/action-menu/types.d.ts +0 -13
  15. package/action-menu/types.js +0 -1
  16. package/action-menu-option/index.d.ts +0 -12
  17. package/action-menu-option/index.js +0 -82
  18. package/action-menu-option/types.d.ts +0 -23
  19. package/action-menu-option/types.js +0 -1
  20. package/action-menu-option/utils.d.ts +0 -2
  21. package/action-menu-option/utils.js +0 -3
  22. package/alert/index.d.ts +0 -14
  23. package/alert/index.js +0 -48
  24. package/alert/types.d.ts +0 -18
  25. package/alert/types.js +0 -1
  26. package/alert/utils.d.ts +0 -2
  27. package/alert/utils.js +0 -1
  28. package/avatar/index.d.ts +0 -11
  29. package/avatar/index.js +0 -94
  30. package/avatar/types.d.ts +0 -37
  31. package/avatar/types.js +0 -1
  32. package/avatar/utils.d.ts +0 -4
  33. package/avatar/utils.js +0 -7
  34. package/badge/index.d.ts +0 -11
  35. package/badge/index.js +0 -114
  36. package/badge/types.d.ts +0 -34
  37. package/badge/types.js +0 -1
  38. package/badge/utils.d.ts +0 -2
  39. package/badge/utils.js +0 -1
  40. package/button/index.d.ts +0 -11
  41. package/button/index.js +0 -182
  42. package/button/types.d.ts +0 -53
  43. package/button/types.js +0 -1
  44. package/button/utils.d.ts +0 -2
  45. package/button/utils.js +0 -1
  46. package/card/index.d.ts +0 -13
  47. package/card/index.js +0 -133
  48. package/card/types.d.ts +0 -28
  49. package/card/types.js +0 -1
  50. package/card-container/index.d.ts +0 -11
  51. package/card-container/index.js +0 -11
  52. package/card-container/types.d.ts +0 -3
  53. package/card-container/types.js +0 -1
  54. package/chat/index.d.ts +0 -11
  55. package/chat/index.js +0 -11
  56. package/chat/types.d.ts +0 -3
  57. package/chat/types.js +0 -1
  58. package/chat-block/index.d.ts +0 -11
  59. package/chat-block/index.js +0 -86
  60. package/chat-block/types.d.ts +0 -30
  61. package/chat-block/types.js +0 -1
  62. package/chat-bubble/index.d.ts +0 -11
  63. package/chat-bubble/index.js +0 -41
  64. package/chat-bubble/types.d.ts +0 -20
  65. package/chat-bubble/types.js +0 -1
  66. package/chat-bubble/utils.d.ts +0 -3
  67. package/chat-bubble/utils.js +0 -2
  68. package/checkbox/index.d.ts +0 -11
  69. package/checkbox/index.js +0 -126
  70. package/checkbox/types.d.ts +0 -49
  71. package/checkbox/types.js +0 -1
  72. package/chip/index.d.ts +0 -13
  73. package/chip/index.js +0 -144
  74. package/chip/types.d.ts +0 -37
  75. package/chip/types.js +0 -1
  76. package/chip/utils.d.ts +0 -2
  77. package/chip/utils.js +0 -6
  78. package/code-tag/index.d.ts +0 -11
  79. package/code-tag/index.js +0 -31
  80. package/code-tag/types.d.ts +0 -11
  81. package/code-tag/types.js +0 -1
  82. package/color-menu/index.d.ts +0 -11
  83. package/color-menu/index.js +0 -308
  84. package/color-menu/types.d.ts +0 -32
  85. package/color-menu/types.js +0 -1
  86. package/color-menu/utils.d.ts +0 -1
  87. package/color-menu/utils.js +0 -11
  88. package/color-menu-option/index.d.ts +0 -13
  89. package/color-menu-option/index.js +0 -48
  90. package/color-menu-option/types.d.ts +0 -11
  91. package/color-menu-option/types.js +0 -1
  92. package/color-menu-option/utils.d.ts +0 -1
  93. package/color-menu-option/utils.js +0 -11
  94. package/color-swatch/index.d.ts +0 -12
  95. package/color-swatch/index.js +0 -54
  96. package/color-swatch/types.d.ts +0 -11
  97. package/color-swatch/types.js +0 -1
  98. package/color-swatch/utils.d.ts +0 -2
  99. package/color-swatch/utils.js +0 -6
  100. package/date-picker/index.d.ts +0 -14
  101. package/date-picker/index.js +0 -381
  102. package/date-picker/types.d.ts +0 -70
  103. package/date-picker/types.js +0 -1
  104. package/date-picker/utils.d.ts +0 -28
  105. package/date-picker/utils.js +0 -142
  106. package/dialog/index.d.ts +0 -15
  107. package/dialog/index.js +0 -144
  108. package/dialog/types.d.ts +0 -28
  109. package/dialog/types.js +0 -1
  110. package/dialog/utils.d.ts +0 -2
  111. package/dialog/utils.js +0 -18
  112. package/emoji/index.d.ts +0 -11
  113. package/emoji/index.js +0 -46
  114. package/emoji/types.d.ts +0 -11
  115. package/emoji/types.js +0 -1
  116. package/emoji/utils.d.ts +0 -3
  117. package/emoji/utils.js +0 -47
  118. package/emoji-picker/index.d.ts +0 -22
  119. package/emoji-picker/index.js +0 -308
  120. package/emoji-picker/types.d.ts +0 -26
  121. package/emoji-picker/types.js +0 -1
  122. package/field/index.d.ts +0 -11
  123. package/field/index.js +0 -120
  124. package/field/types.d.ts +0 -35
  125. package/field/types.js +0 -1
  126. package/file-drop/index.d.ts +0 -13
  127. package/file-drop/index.js +0 -205
  128. package/file-drop/types.d.ts +0 -50
  129. package/file-drop/types.js +0 -1
  130. package/file-drop/utils.d.ts +0 -2
  131. package/file-drop/utils.js +0 -31
  132. package/file-picker/index.d.ts +0 -11
  133. package/file-picker/index.js +0 -103
  134. package/file-picker/types.d.ts +0 -32
  135. package/file-picker/types.js +0 -1
  136. package/file-picker/utils.d.ts +0 -1
  137. package/file-picker/utils.js +0 -8
  138. package/file-status/index.d.ts +0 -14
  139. package/file-status/index.js +0 -61
  140. package/file-status/types.d.ts +0 -18
  141. package/file-status/types.js +0 -1
  142. package/file-status/utils.d.ts +0 -2
  143. package/file-status/utils.js +0 -1
  144. package/flag/index.d.ts +0 -11
  145. package/flag/index.js +0 -46
  146. package/flag/types.d.ts +0 -11
  147. package/flag/types.js +0 -1
  148. package/flag/utils.d.ts +0 -1
  149. package/flag/utils.js +0 -17
  150. package/grid/index.d.ts +0 -11
  151. package/grid/index.js +0 -11
  152. package/grid/types.d.ts +0 -3
  153. package/grid/types.js +0 -1
  154. package/grid-item/index.d.ts +0 -11
  155. package/grid-item/index.js +0 -35
  156. package/grid-item/types.d.ts +0 -17
  157. package/grid-item/types.js +0 -1
  158. package/help-tooltip/index.d.ts +0 -13
  159. package/help-tooltip/index.js +0 -74
  160. package/help-tooltip/types.d.ts +0 -3
  161. package/help-tooltip/types.js +0 -1
  162. package/horizontal-stepper/index.d.ts +0 -11
  163. package/horizontal-stepper/index.js +0 -61
  164. package/horizontal-stepper/types.d.ts +0 -13
  165. package/horizontal-stepper/types.js +0 -1
  166. package/horizontal-stepper-item/index.d.ts +0 -14
  167. package/horizontal-stepper-item/index.js +0 -61
  168. package/horizontal-stepper-item/types.d.ts +0 -24
  169. package/horizontal-stepper-item/types.js +0 -1
  170. package/horizontal-stepper-item/utils.d.ts +0 -2
  171. package/horizontal-stepper-item/utils.js +0 -1
  172. package/icon/index.d.ts +0 -11
  173. package/icon/index.js +0 -32
  174. package/icon/types.d.ts +0 -11
  175. package/icon/types.js +0 -1
  176. package/icon-button/index.d.ts +0 -12
  177. package/icon-button/index.js +0 -175
  178. package/icon-button/types.d.ts +0 -44
  179. package/icon-button/types.js +0 -1
  180. package/icon-button/utils.d.ts +0 -2
  181. package/icon-button/utils.js +0 -1
  182. package/inline-alert/index.d.ts +0 -15
  183. package/inline-alert/index.js +0 -83
  184. package/inline-alert/types.d.ts +0 -15
  185. package/inline-alert/types.js +0 -1
  186. package/inline-alert/utils.d.ts +0 -2
  187. package/inline-alert/utils.js +0 -1
  188. package/input/index.d.ts +0 -11
  189. package/input/index.js +0 -637
  190. package/input/types.d.ts +0 -86
  191. package/input/types.js +0 -1
  192. package/input/utils.d.ts +0 -26
  193. package/input/utils.js +0 -302
  194. package/link/index.d.ts +0 -12
  195. package/link/index.js +0 -150
  196. package/link/types.d.ts +0 -59
  197. package/link/types.js +0 -1
  198. package/list/index.d.ts +0 -11
  199. package/list/index.js +0 -14
  200. package/list/types.d.ts +0 -3
  201. package/list/types.js +0 -1
  202. package/list-item/index.d.ts +0 -11
  203. package/list-item/index.js +0 -14
  204. package/list-item/types.d.ts +0 -3
  205. package/list-item/types.js +0 -1
  206. package/pagination/index.d.ts +0 -12
  207. package/pagination/index.js +0 -147
  208. package/pagination/types.d.ts +0 -16
  209. package/pagination/types.js +0 -1
  210. package/pop/index.d.ts +0 -11
  211. package/pop/index.js +0 -425
  212. package/pop/types.d.ts +0 -35
  213. package/pop/types.js +0 -1
  214. package/pop/utils.d.ts +0 -4
  215. package/pop/utils.js +0 -16
  216. package/popover/index.d.ts +0 -12
  217. package/popover/index.js +0 -146
  218. package/popover/types.d.ts +0 -40
  219. package/popover/types.js +0 -1
  220. package/popover/utils.d.ts +0 -4
  221. package/popover/utils.js +0 -10
  222. package/progress/index.d.ts +0 -12
  223. package/progress/index.js +0 -58
  224. package/progress/types.d.ts +0 -12
  225. package/progress/types.js +0 -1
  226. package/progress-stepper/index.d.ts +0 -11
  227. package/progress-stepper/index.js +0 -206
  228. package/progress-stepper/types.d.ts +0 -22
  229. package/progress-stepper/types.js +0 -1
  230. package/progress-stepper-item/index.d.ts +0 -12
  231. package/progress-stepper-item/index.js +0 -82
  232. package/progress-stepper-item/types.d.ts +0 -23
  233. package/progress-stepper-item/types.js +0 -1
  234. package/progress-stepper-item/utils.d.ts +0 -11
  235. package/progress-stepper-item/utils.js +0 -13
  236. package/radio/index.d.ts +0 -11
  237. package/radio/index.js +0 -154
  238. package/radio/types.d.ts +0 -14
  239. package/radio/types.js +0 -1
  240. package/radio-option/index.d.ts +0 -11
  241. package/radio-option/index.js +0 -79
  242. package/radio-option/types.d.ts +0 -18
  243. package/radio-option/types.js +0 -1
  244. package/rich-text/index.d.ts +0 -14
  245. package/rich-text/index.js +0 -75
  246. package/rich-text/types.d.ts +0 -12
  247. package/rich-text/types.js +0 -1
  248. package/rich-text/utils.d.ts +0 -7
  249. package/rich-text/utils.js +0 -107
  250. package/rich-textarea/index.d.ts +0 -11
  251. package/rich-textarea/index.js +0 -464
  252. package/rich-textarea/types.d.ts +0 -48
  253. package/rich-textarea/types.js +0 -1
  254. package/rich-textarea/utils.d.ts +0 -39
  255. package/rich-textarea/utils.js +0 -1730
  256. package/segment/index.d.ts +0 -12
  257. package/segment/index.js +0 -109
  258. package/segment/types.d.ts +0 -16
  259. package/segment/types.js +0 -1
  260. package/segment/utils.d.ts +0 -3
  261. package/segment/utils.js +0 -16
  262. package/segment-collapse/index.d.ts +0 -13
  263. package/segment-collapse/index.js +0 -60
  264. package/segment-collapse/types.d.ts +0 -11
  265. package/segment-collapse/types.js +0 -1
  266. package/segmented-control/index.d.ts +0 -11
  267. package/segmented-control/index.js +0 -85
  268. package/segmented-control/types.d.ts +0 -11
  269. package/segmented-control/types.js +0 -1
  270. package/segmented-control-option/index.d.ts +0 -11
  271. package/segmented-control-option/index.js +0 -95
  272. package/segmented-control-option/types.d.ts +0 -19
  273. package/segmented-control-option/types.js +0 -1
  274. package/segmented-icon-control/index.d.ts +0 -11
  275. package/segmented-icon-control/index.js +0 -101
  276. package/segmented-icon-control/types.d.ts +0 -14
  277. package/segmented-icon-control/types.js +0 -1
  278. package/segmented-icon-control-option/index.d.ts +0 -11
  279. package/segmented-icon-control-option/index.js +0 -82
  280. package/segmented-icon-control-option/types.d.ts +0 -16
  281. package/segmented-icon-control-option/types.js +0 -1
  282. package/select-button/index.d.ts +0 -13
  283. package/select-button/index.js +0 -202
  284. package/select-button/types.d.ts +0 -50
  285. package/select-button/types.js +0 -1
  286. package/select-menu/index.d.ts +0 -15
  287. package/select-menu/index.js +0 -339
  288. package/select-menu/types.d.ts +0 -41
  289. package/select-menu/types.js +0 -1
  290. package/select-menu-option/index.d.ts +0 -28
  291. package/select-menu-option/index.js +0 -65
  292. package/select-menu-option/types.d.ts +0 -26
  293. package/select-menu-option/types.js +0 -1
  294. package/skeleton/index.d.ts +0 -11
  295. package/skeleton/index.js +0 -108
  296. package/skeleton/types.d.ts +0 -9
  297. package/skeleton/types.js +0 -1
  298. package/skeleton-item/index.d.ts +0 -11
  299. package/skeleton-item/index.js +0 -11
  300. package/skeleton-item/types.d.ts +0 -13
  301. package/skeleton-item/types.js +0 -1
  302. package/spinner/index.d.ts +0 -11
  303. package/spinner/index.js +0 -58
  304. package/spinner/types.d.ts +0 -12
  305. package/spinner/types.js +0 -1
  306. package/standalone.d.ts +0 -85
  307. package/standalone.js +0 -87
  308. package/stop-events/index.d.ts +0 -1
  309. package/stop-events/index.js +0 -27
  310. package/table/index.d.ts +0 -11
  311. package/table/index.js +0 -14
  312. package/table/types.d.ts +0 -3
  313. package/table/types.js +0 -1
  314. package/table-body/index.d.ts +0 -11
  315. package/table-body/index.js +0 -14
  316. package/table-body/types.d.ts +0 -3
  317. package/table-body/types.js +0 -1
  318. package/table-cell/index.d.ts +0 -11
  319. package/table-cell/index.js +0 -21
  320. package/table-cell/types.d.ts +0 -9
  321. package/table-cell/types.js +0 -1
  322. package/table-cell/utils.d.ts +0 -2
  323. package/table-cell/utils.js +0 -1
  324. package/table-head/index.d.ts +0 -11
  325. package/table-head/index.js +0 -14
  326. package/table-head/types.d.ts +0 -3
  327. package/table-head/types.js +0 -1
  328. package/table-head-cell/index.d.ts +0 -12
  329. package/table-head-cell/index.js +0 -57
  330. package/table-head-cell/types.d.ts +0 -15
  331. package/table-head-cell/types.js +0 -1
  332. package/table-row/index.d.ts +0 -11
  333. package/table-row/index.js +0 -42
  334. package/table-row/types.d.ts +0 -11
  335. package/table-row/types.js +0 -1
  336. package/tabs/index.d.ts +0 -11
  337. package/tabs/index.js +0 -80
  338. package/tabs/types.d.ts +0 -18
  339. package/tabs/types.js +0 -1
  340. package/tabs-icon-option/index.d.ts +0 -11
  341. package/tabs-icon-option/index.js +0 -79
  342. package/tabs-icon-option/types.d.ts +0 -19
  343. package/tabs-icon-option/types.js +0 -1
  344. package/tabs-option/index.d.ts +0 -12
  345. package/tabs-option/index.js +0 -86
  346. package/tabs-option/types.d.ts +0 -25
  347. package/tabs-option/types.js +0 -1
  348. package/tag/index.d.ts +0 -12
  349. package/tag/index.js +0 -84
  350. package/tag/types.d.ts +0 -23
  351. package/tag/types.js +0 -1
  352. package/tag/utils.d.ts +0 -2
  353. package/tag/utils.js +0 -6
  354. package/text/index.d.ts +0 -11
  355. package/text/index.js +0 -64
  356. package/text/types.d.ts +0 -30
  357. package/text/types.js +0 -1
  358. package/text/utils.d.ts +0 -2
  359. package/text/utils.js +0 -1
  360. package/textarea/index.d.ts +0 -11
  361. package/textarea/index.js +0 -322
  362. package/textarea/types.d.ts +0 -60
  363. package/textarea/types.js +0 -1
  364. package/tile-control/index.d.ts +0 -11
  365. package/tile-control/index.js +0 -110
  366. package/tile-control/types.d.ts +0 -37
  367. package/tile-control/types.js +0 -1
  368. package/tile-control-option/index.d.ts +0 -11
  369. package/tile-control-option/index.js +0 -98
  370. package/tile-control-option/types.d.ts +0 -37
  371. package/tile-control-option/types.js +0 -1
  372. package/time-picker/index.d.ts +0 -15
  373. package/time-picker/index.js +0 -337
  374. package/time-picker/types.d.ts +0 -34
  375. package/time-picker/types.js +0 -1
  376. package/time-picker/utils.d.ts +0 -11
  377. package/time-picker/utils.js +0 -75
  378. package/title/index.d.ts +0 -11
  379. package/title/index.js +0 -60
  380. package/title/types.d.ts +0 -31
  381. package/title/types.js +0 -1
  382. package/title/utils.d.ts +0 -3
  383. package/title/utils.js +0 -17
  384. package/toast/index.d.ts +0 -13
  385. package/toast/index.js +0 -86
  386. package/toast/types.d.ts +0 -28
  387. package/toast/types.js +0 -1
  388. package/toast/utils.d.ts +0 -2
  389. package/toast/utils.js +0 -1
  390. package/toast-manager/index.d.ts +0 -13
  391. package/toast-manager/index.js +0 -170
  392. package/toast-manager/types.d.ts +0 -13
  393. package/toast-manager/types.js +0 -1
  394. package/toast-manager/utils.d.ts +0 -2
  395. package/toast-manager/utils.js +0 -1
  396. package/toggle/index.d.ts +0 -11
  397. package/toggle/index.js +0 -141
  398. package/toggle/types.d.ts +0 -23
  399. package/toggle/types.js +0 -1
  400. package/tooltip/index.d.ts +0 -13
  401. package/tooltip/index.js +0 -264
  402. package/tooltip/tooltip-state.d.ts +0 -19
  403. package/tooltip/tooltip-state.js +0 -126
  404. package/tooltip/types.d.ts +0 -35
  405. package/tooltip/types.js +0 -1
  406. package/tooltip/utils.d.ts +0 -5
  407. package/tooltip/utils.js +0 -17
  408. package/utils/context.d.ts +0 -20
  409. package/utils/context.js +0 -84
  410. package/utils/countries.d.ts +0 -6
  411. package/utils/countries.js +0 -2
  412. package/utils/csv.d.ts +0 -5
  413. package/utils/csv.js +0 -22
  414. package/utils/debounce.d.ts +0 -8
  415. package/utils/debounce.js +0 -22
  416. package/utils/dom.d.ts +0 -34
  417. package/utils/dom.js +0 -154
  418. package/utils/element.d.ts +0 -16
  419. package/utils/element.js +0 -48
  420. package/utils/event-target.d.ts +0 -4
  421. package/utils/event-target.js +0 -26
  422. package/utils/get-react-event-handler.d.ts +0 -1
  423. package/utils/get-react-event-handler.js +0 -8
  424. package/utils/index.d.ts +0 -12
  425. package/utils/index.js +0 -12
  426. package/utils/markdown.d.ts +0 -19
  427. package/utils/markdown.js +0 -143
  428. package/utils/rect.d.ts +0 -4
  429. package/utils/rect.js +0 -28
  430. package/utils/size.d.ts +0 -5
  431. package/utils/size.js +0 -3
  432. package/utils/slot.d.ts +0 -4
  433. package/utils/slot.js +0 -38
  434. package/utils/throttle.d.ts +0 -4
  435. package/utils/throttle.js +0 -20
  436. package/utils/uid.d.ts +0 -1
  437. package/utils/uid.js +0 -13
  438. package/vertical-stepper/index.d.ts +0 -11
  439. package/vertical-stepper/index.js +0 -57
  440. package/vertical-stepper/types.d.ts +0 -13
  441. package/vertical-stepper/types.js +0 -1
  442. package/vertical-stepper-item/index.d.ts +0 -14
  443. package/vertical-stepper-item/index.js +0 -61
  444. package/vertical-stepper-item/types.d.ts +0 -24
  445. package/vertical-stepper-item/types.js +0 -1
  446. package/vertical-stepper-item/utils.d.ts +0 -2
  447. package/vertical-stepper-item/utils.js +0 -1
@@ -1,26 +0,0 @@
1
- import type { TRect, TSinchElementReact } from '../types';
2
- export type TEmoji = {
3
- emoji: string;
4
- code: string;
5
- label: string;
6
- skins?: TEmoji[];
7
- tone: number | number[];
8
- };
9
- export type TEmojiGroup = {
10
- name: string;
11
- emojis: TEmoji[];
12
- };
13
- export type TSinchEmojiPickerElement = HTMLElement & {
14
- readonly skinToneButtonRect: TRect;
15
- readonly searchInputRect: TRect;
16
- readonly searchClearButtonRect: TRect;
17
- nthSkinToneRect(index: number): TRect | null;
18
- nthTabRect(index: number): TRect | null;
19
- nthEmojiRect(index: number): TRect | null;
20
- /** Change value event */
21
- addEventListener(type: '-change', listener: (e: CustomEvent<string>) => void): void;
22
- };
23
- export type TSinchEmojiPickerReact = TSinchElementReact<TSinchEmojiPickerElement> & {
24
- /** Change value handler */
25
- 'on-change': (e: CustomEvent<string>) => void;
26
- };
@@ -1 +0,0 @@
1
- export {};
package/field/index.d.ts DELETED
@@ -1,11 +0,0 @@
1
- import type { TSinchFieldElement, TSinchFieldReact } from './types';
2
- declare global {
3
- namespace JSX {
4
- interface IntrinsicElements {
5
- 'sinch-field': TSinchFieldReact;
6
- }
7
- }
8
- interface HTMLElementTagNameMap {
9
- 'sinch-field': TSinchFieldElement;
10
- }
11
- }
package/field/index.js DELETED
@@ -1,120 +0,0 @@
1
- import { defineCustomElement, getAttribute, getBooleanAttribute, getFirstSlotElement, isAttrEqual, isAttrTrue, NectaryElement, setClass, updateAttribute, updateBooleanAttribute } from '../utils';
2
- const templateHTML = '<style>:host{display:block}#wrapper{display:flex;flex-direction:column;width:100%}#bottom,#top{display:flex;align-items:baseline}#top{height:24px;margin-bottom:2px}#top.empty{display:none}#additional,#invalid,#label,#optional{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#label{font:var(--sinch-comp-field-font-label);color:var(--sinch-comp-field-color-default-label-initial)}#optional{flex:1;font:var(--sinch-comp-field-font-optional);color:var(--sinch-comp-field-color-default-optional-initial);text-align:right}#additional{flex:1;text-align:right;font:var(--sinch-comp-field-font-additional);color:var(--sinch-comp-field-color-default-additional-initial);line-height:20px;margin-top:2px}#additional:empty{display:none}#invalid{font:var(--sinch-comp-field-font-invalid);color:var(--sinch-comp-field-color-invalid-text-initial);line-height:20px;margin-top:2px}#invalid:empty{display:none}#tooltip{align-self:center;margin:0 8px;display:flex}#tooltip.empty{display:none}:host([disabled]) #label{color:var(--sinch-comp-field-color-disabled-label-initial)}:host([disabled]) #additional{color:var(--sinch-comp-field-color-disabled-additional-initial)}:host([disabled]) #optional{color:var(--sinch-comp-field-color-disabled-optional-initial)}</style><div id="wrapper"><div id="top"><label id="label" for="input"></label><div id="tooltip"><slot name="tooltip"></slot></div><span id="optional"></span></div><slot name="input"></slot><div id="bottom"><div id="invalid"></div><div id="additional"></div></div></div>';
3
- const template = document.createElement('template');
4
- template.innerHTML = templateHTML;
5
- defineCustomElement('sinch-field', class extends NectaryElement {
6
- #$label;
7
- #$optionalText;
8
- #$additionalText;
9
- #$invalidText;
10
- #$inputSlot;
11
- #$tooltipWrapper;
12
- #$tooltipSlot;
13
- #controller = null;
14
- constructor() {
15
- super();
16
- const shadowRoot = this.attachShadow();
17
- shadowRoot.appendChild(template.content.cloneNode(true));
18
- this.topSection = shadowRoot.querySelector('#top');
19
- this.#$label = shadowRoot.querySelector('#label');
20
- this.#$optionalText = shadowRoot.querySelector('#optional');
21
- this.#$additionalText = shadowRoot.querySelector('#additional');
22
- this.#$invalidText = shadowRoot.querySelector('#invalid');
23
- this.#$inputSlot = shadowRoot.querySelector('slot[name="input"]');
24
- this.#$tooltipSlot = shadowRoot.querySelector('slot[name="tooltip"]');
25
- this.#$tooltipWrapper = shadowRoot.querySelector('#tooltip');
26
- }
27
- connectedCallback() {
28
- this.#controller = new AbortController();
29
- const {
30
- signal
31
- } = this.#controller;
32
- const options = {
33
- signal
34
- };
35
- this.shouldShowTopSection();
36
- this.#$label.addEventListener('click', this.#onLabelClick, options);
37
- this.#$tooltipSlot.addEventListener('slotchange', this.#onTooltipSlotChange, options);
38
- }
39
- disconnectedCallback() {
40
- this.#controller.abort();
41
- this.#controller = null;
42
- }
43
- static get observedAttributes() {
44
- return ['label', 'optionaltext', 'additionaltext', 'invalidtext', 'disabled'];
45
- }
46
- shouldShowTopSection() {
47
- const label = getAttribute(this, 'label');
48
- const optionaltext = getAttribute(this, 'optionaltext');
49
- setClass(this.topSection, 'empty', label === null && optionaltext === null);
50
- }
51
- attributeChangedCallback(name, oldVal, newVal) {
52
- switch (name) {
53
- case 'label':
54
- {
55
- this.#$label.textContent = newVal;
56
- break;
57
- }
58
- case 'optionaltext':
59
- {
60
- this.#$optionalText.textContent = newVal;
61
- break;
62
- }
63
- case 'additionaltext':
64
- {
65
- this.#$additionalText.textContent = newVal;
66
- break;
67
- }
68
- case 'invalidtext':
69
- {
70
- this.#$invalidText.textContent = newVal;
71
- break;
72
- }
73
- case 'disabled':
74
- {
75
- if (isAttrEqual(oldVal, newVal)) {
76
- break;
77
- }
78
- updateBooleanAttribute(this, name, isAttrTrue(newVal));
79
- break;
80
- }
81
- }
82
- this.shouldShowTopSection();
83
- }
84
- set label(value) {
85
- updateAttribute(this, 'label', value);
86
- }
87
- get label() {
88
- return getAttribute(this, 'label');
89
- }
90
- set optionalText(value) {
91
- updateAttribute(this, 'optionaltext', value);
92
- }
93
- get optionalText() {
94
- return getAttribute(this, 'optionaltext');
95
- }
96
- set additionalText(value) {
97
- updateAttribute(this, 'additionaltext', value);
98
- }
99
- get additionalText() {
100
- return getAttribute(this, 'additionaltext');
101
- }
102
- set invalidText(value) {
103
- updateAttribute(this, 'invalidtext', value);
104
- }
105
- get invalidText() {
106
- return getAttribute(this, 'invalidtext');
107
- }
108
- set disabled(isDisabled) {
109
- updateBooleanAttribute(this, 'disabled', isDisabled);
110
- }
111
- get disabled() {
112
- return getBooleanAttribute(this, 'disabled');
113
- }
114
- #onLabelClick = () => {
115
- getFirstSlotElement(this.#$inputSlot)?.focus?.();
116
- };
117
- #onTooltipSlotChange = () => {
118
- setClass(this.#$tooltipWrapper, 'empty', this.#$tooltipSlot.assignedElements().length === 0);
119
- };
120
- });
package/field/types.d.ts DELETED
@@ -1,35 +0,0 @@
1
- import type { TSinchElementReact } from '../types';
2
- export type TSinchFieldElement = HTMLElement & {
3
- /** Label */
4
- label: string | null;
5
- /** Optional text */
6
- optionalText: string | null;
7
- /** Additional text */
8
- additionalText: string | null;
9
- /** Invalid text, controls the overall invalid state of the text field */
10
- invalidText: string | null;
11
- /** Disabled */
12
- disabled: boolean;
13
- /** Label */
14
- setAttribute(name: 'label', value: string): void;
15
- /** Optional text */
16
- setAttribute(name: 'optionaltext', value: string): void;
17
- /** Additional text */
18
- setAttribute(name: 'additionaltext', value: string): void;
19
- /** Invalid text, controls the overall invalid state of the text field */
20
- setAttribute(name: 'invalidtext', value: string): void;
21
- /** Disabled */
22
- setAttribute(name: 'disabled', value: ''): void;
23
- };
24
- export type TSinchFieldReact = TSinchElementReact<TSinchFieldElement> & {
25
- /** Label that shows in UI */
26
- label?: string;
27
- /** Optional text */
28
- optionalText?: string;
29
- /** Additional text */
30
- additionalText?: string;
31
- /** Invalid text, controls the overall invalid state of the text field */
32
- invalidText?: string;
33
- /** Disabled */
34
- disabled?: boolean;
35
- };
package/field/types.js DELETED
@@ -1 +0,0 @@
1
- export {};
@@ -1,13 +0,0 @@
1
- import '../text';
2
- import '../file-picker';
3
- import type { TSinchFileDropElement, TSinchFileDropReact } from './types';
4
- declare global {
5
- namespace JSX {
6
- interface IntrinsicElements {
7
- 'sinch-file-drop': TSinchFileDropReact;
8
- }
9
- }
10
- interface HTMLElementTagNameMap {
11
- 'sinch-file-drop': TSinchFileDropElement;
12
- }
13
- }
@@ -1,205 +0,0 @@
1
- import '../text';
2
- import '../file-picker';
3
- import { defineCustomElement, getAttribute, getBooleanAttribute, getIntegerAttribute, getReactEventHandler, isAttrEqual, isAttrTrue, NectaryElement, setClass, updateAttribute, updateBooleanAttribute } from '../utils';
4
- const templateHTML = '<style>:host{display:block}#wrapper{position:relative;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:center;align-content:center;gap:8px;height:148px;min-width:148px;box-sizing:border-box;padding:16px;border-radius:var(--sinch-comp-file-drop-shape-radius);background-color:var(--sinch-comp-file-drop-color-default-background-initial)}#wrapper::after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;border:1px dashed var(--sinch-comp-file-drop-color-default-border-initial);border-radius:var(--sinch-comp-file-drop-shape-radius);pointer-events:none}#placeholder{align-self:center;text-align:center;--sinch-global-color-text:var(--sinch-comp-file-drop-color-default-placeholder-initial);--sinch-comp-text-font:var(--sinch-comp-file-drop-font-placeholder)}:host([invalid]) #wrapper{background-color:var(--sinch-comp-file-drop-color-invalid-background-initial)}:host([invalid]) #wrapper::after{border-color:var(--sinch-comp-file-drop-color-invalid-border-initial);border-width:1px}#wrapper.drop::after{pointer-events:all}#wrapper.drop.valid{background-color:var(--sinch-comp-file-drop-color-default-background-active)}#wrapper.drop.valid::after{border-color:var(--sinch-comp-file-drop-color-default-border-active);border-width:2px}#wrapper.drop.valid>#placeholder{--sinch-global-color-text:var(--sinch-comp-file-drop-color-default-placeholder-active)}:host([disabled])>#wrapper>#placeholder{--sinch-global-color-text:var(--sinch-comp-file-drop-color-disabled-placeholder-initial)}:host([disabled])>#wrapper{background-color:var(--sinch-comp-file-drop-color-disabled-background-initial)}:host([disabled])>#wrapper::after{border-color:var(--sinch-comp-file-drop-color-disabled-border-initial);border-width:1px}</style><div id="wrapper"><sinch-text id="placeholder" type="m" aria-hidden="true"></sinch-text><sinch-file-picker id="file-picker"><slot></slot></sinch-file-picker></div>';
5
- import { areFilesAccepted, doFilesSatisfySize } from './utils';
6
- const template = document.createElement('template');
7
- template.innerHTML = templateHTML;
8
- defineCustomElement('sinch-file-drop', class extends NectaryElement {
9
- #$filePicker;
10
- #$dropArea;
11
- #$placeholder;
12
- #controller = null;
13
- constructor() {
14
- super();
15
- const shadowRoot = this.attachShadow();
16
- shadowRoot.appendChild(template.content.cloneNode(true));
17
- this.#$dropArea = shadowRoot.querySelector('#wrapper');
18
- this.#$placeholder = shadowRoot.querySelector('#placeholder');
19
- this.#$filePicker = shadowRoot.querySelector('#file-picker');
20
- }
21
- connectedCallback() {
22
- this.#controller = new AbortController();
23
- const {
24
- signal
25
- } = this.#controller;
26
- const options = {
27
- signal
28
- };
29
- this.addEventListener('-change', this.#onChangeReactHandler, options);
30
- this.addEventListener('-invalid', this.#onInvalidReactHandler, options);
31
- this.addEventListener('dragenter', this.#onDragEnter, options);
32
- this.addEventListener('dragleave', this.#onDragLeave, options);
33
- this.addEventListener('dragover', this.#onDragOver, options);
34
- this.addEventListener('drop', this.#onDrop, options);
35
- this.#$filePicker.addEventListener('-change', this.#onFilePickerChange, options);
36
- this.#$filePicker.addEventListener('-invalid', this.#onFilePickerInvalid, options);
37
- }
38
- disconnectedCallback() {
39
- this.#controller.abort();
40
- this.#controller = null;
41
- }
42
- static get observedAttributes() {
43
- return ['accept', 'multiple', 'placeholder', 'disabled', 'invalid', 'size'];
44
- }
45
- attributeChangedCallback(name, oldVal, newVal) {
46
- if (isAttrEqual(oldVal, newVal)) {
47
- return;
48
- }
49
- switch (name) {
50
- case 'multiple':
51
- {
52
- updateAttribute(this.#$filePicker, 'multiple', newVal);
53
- break;
54
- }
55
- case 'accept':
56
- {
57
- updateAttribute(this.#$filePicker, 'accept', newVal);
58
- break;
59
- }
60
- case 'placeholder':
61
- {
62
- this.#$placeholder.textContent = newVal;
63
- break;
64
- }
65
- case 'disabled':
66
- {
67
- this.#setDragEffect(false);
68
- updateBooleanAttribute(this, 'disabled', isAttrTrue(newVal));
69
- break;
70
- }
71
- case 'invalid':
72
- {
73
- updateBooleanAttribute(this, 'invalid', isAttrTrue(newVal));
74
- break;
75
- }
76
- case 'size':
77
- {
78
- updateAttribute(this.#$filePicker, 'size', newVal);
79
- break;
80
- }
81
- }
82
- }
83
- set multiple(isMultiple) {
84
- updateBooleanAttribute(this, 'multiple', isMultiple);
85
- }
86
- get multiple() {
87
- return getBooleanAttribute(this, 'multiple');
88
- }
89
- set accept(value) {
90
- updateAttribute(this, 'accept', value);
91
- }
92
- get accept() {
93
- return getAttribute(this, 'accept');
94
- }
95
- get size() {
96
- return getIntegerAttribute(this, 'size', null);
97
- }
98
- set size(value) {
99
- updateAttribute(this, 'size', value);
100
- }
101
- set text(value) {
102
- updateAttribute(this, 'text', value);
103
- }
104
- get text() {
105
- return getAttribute(this, 'text', '');
106
- }
107
- set placeholder(value) {
108
- updateAttribute(this, 'placeholder', value);
109
- }
110
- get placeholder() {
111
- return getAttribute(this, 'placeholder', '');
112
- }
113
- set disabled(isDisabled) {
114
- updateBooleanAttribute(this, 'disabled', isDisabled);
115
- }
116
- get disabled() {
117
- return getBooleanAttribute(this, 'disabled');
118
- }
119
- set invalid(isInvalid) {
120
- updateBooleanAttribute(this, 'invalid', isInvalid);
121
- }
122
- get invalid() {
123
- return getBooleanAttribute(this, 'invalid');
124
- }
125
- #setDragEffect(shouldEnable) {
126
- let isValid = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
127
- const isElementEnabled = !this.disabled;
128
- if (shouldEnable) {
129
- if (isElementEnabled) {
130
- setClass(this.#$dropArea, 'drop', true);
131
- setClass(this.#$dropArea, 'valid', isValid);
132
- }
133
- } else {
134
- setClass(this.#$dropArea, 'drop', false);
135
- setClass(this.#$dropArea, 'valid', false);
136
- }
137
- }
138
- #onDragEnter = e => {
139
- e.stopPropagation();
140
- e.preventDefault();
141
- const hasTypes = e.dataTransfer?.types?.includes('Files') === true;
142
- const hasItems = e.dataTransfer?.items != null && e.dataTransfer.items.length > 0;
143
- this.#setDragEffect(true, hasTypes || hasItems);
144
- };
145
- #onDragLeave = e => {
146
- e.stopPropagation();
147
- e.preventDefault();
148
- this.#setDragEffect(false);
149
- };
150
- #onDragOver = e => {
151
- e.stopPropagation();
152
- e.preventDefault();
153
- };
154
- #onDrop = e => {
155
- e.stopPropagation();
156
- e.preventDefault();
157
- this.#setDragEffect(false);
158
- if (this.disabled) {
159
- return;
160
- }
161
- const dt = e.dataTransfer;
162
- if (dt === null) {
163
- return;
164
- }
165
- if (dt.files.length === 0) {
166
- return;
167
- }
168
- if (!this.multiple && dt.files.length > 1) {
169
- this.#dispatchInvalidEvent('multiple');
170
- return;
171
- }
172
- const files = Array.from(dt.files);
173
- if (!areFilesAccepted(files, this.accept)) {
174
- this.#dispatchInvalidEvent('accept');
175
- return;
176
- }
177
- if (!doFilesSatisfySize(files, this.size)) {
178
- this.#dispatchInvalidEvent('size');
179
- return;
180
- }
181
- this.#dispatchChangeEvent(files);
182
- };
183
- #onFilePickerChange = e => {
184
- this.#dispatchChangeEvent(e.detail);
185
- };
186
- #onFilePickerInvalid = e => {
187
- this.#dispatchInvalidEvent(e.detail);
188
- };
189
- #onChangeReactHandler = e => {
190
- getReactEventHandler(this, 'on-change')?.(e);
191
- };
192
- #onInvalidReactHandler = e => {
193
- getReactEventHandler(this, 'on-invalid')?.(e);
194
- };
195
- #dispatchChangeEvent(files) {
196
- this.dispatchEvent(new CustomEvent('-change', {
197
- detail: files
198
- }));
199
- }
200
- #dispatchInvalidEvent(type) {
201
- this.dispatchEvent(new CustomEvent('-invalid', {
202
- detail: type
203
- }));
204
- }
205
- });
@@ -1,50 +0,0 @@
1
- import type { TSinchElementReact } from '../types';
2
- export type TSinchFileDropInvalidType = 'accept' | 'multiple' | 'size';
3
- export type TSinchFileDropElement = HTMLElement & {
4
- /** Allows to choose multiple files */
5
- multiple: boolean;
6
- /** [A unique file type specifier](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#unique_file_type_specifiers) */
7
- accept: string | null;
8
- /** Max file size in bytes */
9
- size: number | null;
10
- /** Disabled state */
11
- disabled: boolean;
12
- /** Invalid state */
13
- invalid: boolean;
14
- /** Placeholder */
15
- placeholder: string;
16
- /** Change value event */
17
- addEventListener(type: '-change', listener: (e: CustomEvent<File[]>) => void): void;
18
- /** Invalid event */
19
- addEventListener(type: '-invalid', listener: (e: CustomEvent<TSinchFileDropInvalidType>) => void): void;
20
- /** Allows to choose multiple files */
21
- setAttribute(name: 'multiple', value: ''): void;
22
- /** [A unique file type specifier](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#unique_file_type_specifiers) */
23
- setAttribute(name: 'accept', value: string): void;
24
- /** Max file size in bytes */
25
- setAttribute(name: 'size', value: string): void;
26
- /** Placeholder */
27
- setAttribute(name: 'placeholder', value: string): void;
28
- /** Invalid state */
29
- setAttribute(name: 'invalid', value: ''): void;
30
- /** Disabled state */
31
- setAttribute(name: 'disabled', value: ''): void;
32
- };
33
- export type TSinchFileDropReact = TSinchElementReact<TSinchFileDropElement> & {
34
- /** Allows to choose multiple files */
35
- multiple?: boolean;
36
- /** [A unique file type specifier](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#unique_file_type_specifiers) */
37
- accept?: string;
38
- /** Max file size in bytes */
39
- size?: number;
40
- /** Disabled state */
41
- disabled?: boolean;
42
- /** Invalid state */
43
- invalid?: boolean;
44
- /** Placeholder */
45
- placeholder: string;
46
- /** Change value handler */
47
- 'on-change': (e: CustomEvent<File[]>) => void;
48
- /** Invalid handler */
49
- 'on-invalid': (e: CustomEvent<TSinchFileDropInvalidType>) => void;
50
- };
@@ -1 +0,0 @@
1
- export {};
@@ -1,2 +0,0 @@
1
- export declare const areFilesAccepted: (files: File[], accept: string | null) => boolean;
2
- export declare const doFilesSatisfySize: (files: File[], size: number | null) => boolean;
@@ -1,31 +0,0 @@
1
- export const areFilesAccepted = (files, accept) => {
2
- if (accept === null) {
3
- return true;
4
- }
5
- const acceptValues = accept.split(/\s*,\s*/);
6
- return files.every(file => {
7
- return acceptValues.some(acceptValue => {
8
- if (acceptValue.startsWith('.')) {
9
- return file.name.endsWith(acceptValue);
10
- }
11
- if (acceptValue === 'image/*') {
12
- return file.type.startsWith('image/');
13
- }
14
- if (acceptValue === 'video/*') {
15
- return file.type.startsWith('video/');
16
- }
17
- if (acceptValue === 'audio/*') {
18
- return file.type.startsWith('audio/');
19
- }
20
- return acceptValue === file.type;
21
- });
22
- });
23
- };
24
- export const doFilesSatisfySize = (files, size) => {
25
- if (size === null || size <= 0) {
26
- return true;
27
- }
28
- return files.every(file => {
29
- return file.size <= size;
30
- });
31
- };
@@ -1,11 +0,0 @@
1
- import type { TSinchFilePickerElement, TSinchFilePickerReact } from './types';
2
- declare global {
3
- namespace JSX {
4
- interface IntrinsicElements {
5
- 'sinch-file-picker': TSinchFilePickerReact;
6
- }
7
- }
8
- interface HTMLElementTagNameMap {
9
- 'sinch-file-picker': TSinchFilePickerElement;
10
- }
11
- }
@@ -1,103 +0,0 @@
1
- import { defineCustomElement, getAttribute, getBooleanAttribute, getFirstSlotElement, getIntegerAttribute, getReactEventHandler, isAttrEqual, isAttrTrue, NectaryElement, updateAttribute, updateBooleanAttribute } from '../utils';
2
- const templateHTML = '<style>:host{display:inline-block}::slotted(*){display:block}</style><slot></slot>';
3
- import { doFilesSatisfySize } from './utils';
4
- const template = document.createElement('template');
5
- template.innerHTML = templateHTML;
6
- defineCustomElement('sinch-file-picker', class extends NectaryElement {
7
- #$input;
8
- #$targetSlot;
9
- #$target = null;
10
- #controller = null;
11
- constructor() {
12
- super();
13
- const shadowRoot = this.attachShadow();
14
- shadowRoot.appendChild(template.content.cloneNode(true));
15
- this.#$input = document.createElement('input');
16
- this.#$input.type = 'file';
17
- this.#$targetSlot = shadowRoot.querySelector('slot');
18
- }
19
- connectedCallback() {
20
- this.#controller = new AbortController();
21
- const options = {
22
- signal: this.#controller.signal
23
- };
24
- this.#$targetSlot.addEventListener('slotchange', this.#onTargetSlotChange, options);
25
- this.#$input.addEventListener('change', this.#onInputChange, options);
26
- this.addEventListener('-change', this.#onChangeReactHandler, options);
27
- this.addEventListener('-invalid', this.#onInvalidReactHandler, options);
28
- this.#onTargetSlotChange();
29
- }
30
- disconnectedCallback() {
31
- this.#controller.abort();
32
- this.#controller = null;
33
- this.#$target = null;
34
- }
35
- static get observedAttributes() {
36
- return ['accept', 'multiple'];
37
- }
38
- attributeChangedCallback(name, oldVal, newVal) {
39
- switch (name) {
40
- case 'multiple':
41
- {
42
- if (isAttrEqual(oldVal, newVal)) {
43
- return;
44
- }
45
- updateBooleanAttribute(this.#$input, 'multiple', isAttrTrue(newVal));
46
- break;
47
- }
48
- case 'accept':
49
- {
50
- updateAttribute(this.#$input, 'accept', newVal);
51
- break;
52
- }
53
- }
54
- }
55
- set multiple(isMultiple) {
56
- updateBooleanAttribute(this, 'multiple', isMultiple);
57
- }
58
- get multiple() {
59
- return getBooleanAttribute(this, 'multiple');
60
- }
61
- set accept(value) {
62
- updateAttribute(this, 'accept', value);
63
- }
64
- get accept() {
65
- return getAttribute(this, 'accept');
66
- }
67
- get size() {
68
- return getIntegerAttribute(this, 'size', null);
69
- }
70
- set size(value) {
71
- updateAttribute(this, 'size', value);
72
- }
73
- #onTargetSlotChange = () => {
74
- this.#$target?.removeEventListener('-click', this.#onTargetClick);
75
- this.#$target = getFirstSlotElement(this.#$targetSlot, true);
76
- this.#$target?.addEventListener('-click', this.#onTargetClick);
77
- };
78
- #onTargetClick = () => {
79
- this.#$input.click();
80
- };
81
- #onInputChange = () => {
82
- if (this.#$input.files === null) {
83
- return;
84
- }
85
- const files = Array.from(this.#$input.files);
86
- this.#$input.value = '';
87
- if (!doFilesSatisfySize(files, this.size)) {
88
- this.dispatchEvent(new CustomEvent('-invalid', {
89
- detail: 'size'
90
- }));
91
- return;
92
- }
93
- this.dispatchEvent(new CustomEvent('-change', {
94
- detail: files
95
- }));
96
- };
97
- #onChangeReactHandler = e => {
98
- getReactEventHandler(this, 'on-change')?.(e);
99
- };
100
- #onInvalidReactHandler = e => {
101
- getReactEventHandler(this, 'on-invalid')?.(e);
102
- };
103
- });
@@ -1,32 +0,0 @@
1
- import type { TSinchElementReact } from '../types';
2
- export type TSinchFilePickerInvalidType = 'size';
3
- export type TSinchFilePickerElement = HTMLElement & {
4
- /** Allows to choose multiple files */
5
- multiple: boolean;
6
- /** [A unique file type specifier](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#unique_file_type_specifiers) */
7
- accept: string | null;
8
- /** Max file size in bytes */
9
- size: number | null;
10
- /** Change value event */
11
- addEventListener(type: '-change', listener: (e: CustomEvent<File[]>) => void): void;
12
- /** Invalid event */
13
- addEventListener(type: '-invalid', listener: (e: CustomEvent<TSinchFilePickerInvalidType>) => void): void;
14
- /** Allows to choose multiple files */
15
- setAttribute(name: 'multiple', value: ''): void;
16
- /** [A unique file type specifier](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#unique_file_type_specifiers) */
17
- setAttribute(name: 'accept', value: string): void;
18
- /** Max file size in bytes */
19
- setAttribute(name: 'size', value: string): void;
20
- };
21
- export type TSinchFilePickerReact = TSinchElementReact<TSinchFilePickerElement> & {
22
- /** Allows to choose multiple files */
23
- multiple?: boolean;
24
- /** [A unique file type specifier](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#unique_file_type_specifiers) */
25
- accept?: string;
26
- /** Max file size in bytes */
27
- size?: number;
28
- /** Change value handler */
29
- 'on-change': (e: CustomEvent<File[]>) => void;
30
- /** Invalid handler */
31
- 'on-invalid': (e: CustomEvent<TSinchFilePickerInvalidType>) => void;
32
- };
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export declare const doFilesSatisfySize: (files: File[], size: number | null) => boolean;
@@ -1,8 +0,0 @@
1
- export const doFilesSatisfySize = (files, size) => {
2
- if (size === null || size <= 0) {
3
- return true;
4
- }
5
- return files.every(file => {
6
- return file.size <= size;
7
- });
8
- };