@nectary/components 2.8.7 → 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 (448) hide show
  1. package/package.json +1 -1
  2. package/types.d.ts +1 -1
  3. package/accordion/index.d.ts +0 -11
  4. package/accordion/index.js +0 -86
  5. package/accordion/types.d.ts +0 -21
  6. package/accordion/types.js +0 -1
  7. package/accordion-item/index.d.ts +0 -14
  8. package/accordion-item/index.js +0 -95
  9. package/accordion-item/types.d.ts +0 -36
  10. package/accordion-item/types.js +0 -1
  11. package/accordion-item/utils.d.ts +0 -2
  12. package/accordion-item/utils.js +0 -1
  13. package/action-menu/index.d.ts +0 -11
  14. package/action-menu/index.js +0 -195
  15. package/action-menu/types.d.ts +0 -13
  16. package/action-menu/types.js +0 -1
  17. package/action-menu-option/index.d.ts +0 -12
  18. package/action-menu-option/index.js +0 -82
  19. package/action-menu-option/types.d.ts +0 -23
  20. package/action-menu-option/types.js +0 -1
  21. package/action-menu-option/utils.d.ts +0 -2
  22. package/action-menu-option/utils.js +0 -3
  23. package/alert/index.d.ts +0 -14
  24. package/alert/index.js +0 -48
  25. package/alert/types.d.ts +0 -18
  26. package/alert/types.js +0 -1
  27. package/alert/utils.d.ts +0 -2
  28. package/alert/utils.js +0 -1
  29. package/avatar/index.d.ts +0 -11
  30. package/avatar/index.js +0 -94
  31. package/avatar/types.d.ts +0 -37
  32. package/avatar/types.js +0 -1
  33. package/avatar/utils.d.ts +0 -4
  34. package/avatar/utils.js +0 -7
  35. package/badge/index.d.ts +0 -11
  36. package/badge/index.js +0 -114
  37. package/badge/types.d.ts +0 -34
  38. package/badge/types.js +0 -1
  39. package/badge/utils.d.ts +0 -2
  40. package/badge/utils.js +0 -1
  41. package/button/index.d.ts +0 -11
  42. package/button/index.js +0 -182
  43. package/button/types.d.ts +0 -53
  44. package/button/types.js +0 -1
  45. package/button/utils.d.ts +0 -2
  46. package/button/utils.js +0 -1
  47. package/card/index.d.ts +0 -13
  48. package/card/index.js +0 -133
  49. package/card/types.d.ts +0 -28
  50. package/card/types.js +0 -1
  51. package/card-container/index.d.ts +0 -11
  52. package/card-container/index.js +0 -11
  53. package/card-container/types.d.ts +0 -3
  54. package/card-container/types.js +0 -1
  55. package/chat/index.d.ts +0 -11
  56. package/chat/index.js +0 -11
  57. package/chat/types.d.ts +0 -3
  58. package/chat/types.js +0 -1
  59. package/chat-block/index.d.ts +0 -11
  60. package/chat-block/index.js +0 -86
  61. package/chat-block/types.d.ts +0 -30
  62. package/chat-block/types.js +0 -1
  63. package/chat-bubble/index.d.ts +0 -11
  64. package/chat-bubble/index.js +0 -41
  65. package/chat-bubble/types.d.ts +0 -20
  66. package/chat-bubble/types.js +0 -1
  67. package/chat-bubble/utils.d.ts +0 -3
  68. package/chat-bubble/utils.js +0 -2
  69. package/checkbox/index.d.ts +0 -11
  70. package/checkbox/index.js +0 -126
  71. package/checkbox/types.d.ts +0 -49
  72. package/checkbox/types.js +0 -1
  73. package/chip/index.d.ts +0 -13
  74. package/chip/index.js +0 -144
  75. package/chip/types.d.ts +0 -37
  76. package/chip/types.js +0 -1
  77. package/chip/utils.d.ts +0 -2
  78. package/chip/utils.js +0 -6
  79. package/code-tag/index.d.ts +0 -11
  80. package/code-tag/index.js +0 -31
  81. package/code-tag/types.d.ts +0 -11
  82. package/code-tag/types.js +0 -1
  83. package/color-menu/index.d.ts +0 -11
  84. package/color-menu/index.js +0 -308
  85. package/color-menu/types.d.ts +0 -32
  86. package/color-menu/types.js +0 -1
  87. package/color-menu/utils.d.ts +0 -1
  88. package/color-menu/utils.js +0 -11
  89. package/color-menu-option/index.d.ts +0 -13
  90. package/color-menu-option/index.js +0 -48
  91. package/color-menu-option/types.d.ts +0 -11
  92. package/color-menu-option/types.js +0 -1
  93. package/color-menu-option/utils.d.ts +0 -1
  94. package/color-menu-option/utils.js +0 -11
  95. package/color-swatch/index.d.ts +0 -12
  96. package/color-swatch/index.js +0 -54
  97. package/color-swatch/types.d.ts +0 -11
  98. package/color-swatch/types.js +0 -1
  99. package/color-swatch/utils.d.ts +0 -2
  100. package/color-swatch/utils.js +0 -6
  101. package/date-picker/index.d.ts +0 -14
  102. package/date-picker/index.js +0 -381
  103. package/date-picker/types.d.ts +0 -70
  104. package/date-picker/types.js +0 -1
  105. package/date-picker/utils.d.ts +0 -28
  106. package/date-picker/utils.js +0 -142
  107. package/dialog/index.d.ts +0 -15
  108. package/dialog/index.js +0 -144
  109. package/dialog/types.d.ts +0 -28
  110. package/dialog/types.js +0 -1
  111. package/dialog/utils.d.ts +0 -2
  112. package/dialog/utils.js +0 -18
  113. package/emoji/index.d.ts +0 -11
  114. package/emoji/index.js +0 -46
  115. package/emoji/types.d.ts +0 -11
  116. package/emoji/types.js +0 -1
  117. package/emoji/utils.d.ts +0 -3
  118. package/emoji/utils.js +0 -47
  119. package/emoji-picker/index.d.ts +0 -22
  120. package/emoji-picker/index.js +0 -308
  121. package/emoji-picker/types.d.ts +0 -26
  122. package/emoji-picker/types.js +0 -1
  123. package/field/index.d.ts +0 -11
  124. package/field/index.js +0 -120
  125. package/field/types.d.ts +0 -35
  126. package/field/types.js +0 -1
  127. package/file-drop/index.d.ts +0 -13
  128. package/file-drop/index.js +0 -205
  129. package/file-drop/types.d.ts +0 -50
  130. package/file-drop/types.js +0 -1
  131. package/file-drop/utils.d.ts +0 -2
  132. package/file-drop/utils.js +0 -31
  133. package/file-picker/index.d.ts +0 -11
  134. package/file-picker/index.js +0 -103
  135. package/file-picker/types.d.ts +0 -32
  136. package/file-picker/types.js +0 -1
  137. package/file-picker/utils.d.ts +0 -1
  138. package/file-picker/utils.js +0 -8
  139. package/file-status/index.d.ts +0 -14
  140. package/file-status/index.js +0 -61
  141. package/file-status/types.d.ts +0 -18
  142. package/file-status/types.js +0 -1
  143. package/file-status/utils.d.ts +0 -2
  144. package/file-status/utils.js +0 -1
  145. package/flag/index.d.ts +0 -11
  146. package/flag/index.js +0 -46
  147. package/flag/types.d.ts +0 -11
  148. package/flag/types.js +0 -1
  149. package/flag/utils.d.ts +0 -1
  150. package/flag/utils.js +0 -17
  151. package/grid/index.d.ts +0 -11
  152. package/grid/index.js +0 -11
  153. package/grid/types.d.ts +0 -3
  154. package/grid/types.js +0 -1
  155. package/grid-item/index.d.ts +0 -11
  156. package/grid-item/index.js +0 -35
  157. package/grid-item/types.d.ts +0 -17
  158. package/grid-item/types.js +0 -1
  159. package/help-tooltip/index.d.ts +0 -13
  160. package/help-tooltip/index.js +0 -74
  161. package/help-tooltip/types.d.ts +0 -3
  162. package/help-tooltip/types.js +0 -1
  163. package/horizontal-stepper/index.d.ts +0 -11
  164. package/horizontal-stepper/index.js +0 -61
  165. package/horizontal-stepper/types.d.ts +0 -13
  166. package/horizontal-stepper/types.js +0 -1
  167. package/horizontal-stepper-item/index.d.ts +0 -14
  168. package/horizontal-stepper-item/index.js +0 -61
  169. package/horizontal-stepper-item/types.d.ts +0 -24
  170. package/horizontal-stepper-item/types.js +0 -1
  171. package/horizontal-stepper-item/utils.d.ts +0 -2
  172. package/horizontal-stepper-item/utils.js +0 -1
  173. package/icon/index.d.ts +0 -11
  174. package/icon/index.js +0 -32
  175. package/icon/types.d.ts +0 -11
  176. package/icon/types.js +0 -1
  177. package/icon-button/index.d.ts +0 -12
  178. package/icon-button/index.js +0 -175
  179. package/icon-button/types.d.ts +0 -44
  180. package/icon-button/types.js +0 -1
  181. package/icon-button/utils.d.ts +0 -2
  182. package/icon-button/utils.js +0 -1
  183. package/inline-alert/index.d.ts +0 -15
  184. package/inline-alert/index.js +0 -83
  185. package/inline-alert/types.d.ts +0 -15
  186. package/inline-alert/types.js +0 -1
  187. package/inline-alert/utils.d.ts +0 -2
  188. package/inline-alert/utils.js +0 -1
  189. package/input/index.d.ts +0 -11
  190. package/input/index.js +0 -637
  191. package/input/types.d.ts +0 -86
  192. package/input/types.js +0 -1
  193. package/input/utils.d.ts +0 -26
  194. package/input/utils.js +0 -302
  195. package/link/index.d.ts +0 -12
  196. package/link/index.js +0 -150
  197. package/link/types.d.ts +0 -59
  198. package/link/types.js +0 -1
  199. package/list/index.d.ts +0 -11
  200. package/list/index.js +0 -14
  201. package/list/types.d.ts +0 -3
  202. package/list/types.js +0 -1
  203. package/list-item/index.d.ts +0 -11
  204. package/list-item/index.js +0 -14
  205. package/list-item/types.d.ts +0 -3
  206. package/list-item/types.js +0 -1
  207. package/pagination/index.d.ts +0 -12
  208. package/pagination/index.js +0 -147
  209. package/pagination/types.d.ts +0 -16
  210. package/pagination/types.js +0 -1
  211. package/pop/index.d.ts +0 -11
  212. package/pop/index.js +0 -425
  213. package/pop/types.d.ts +0 -35
  214. package/pop/types.js +0 -1
  215. package/pop/utils.d.ts +0 -4
  216. package/pop/utils.js +0 -16
  217. package/popover/index.d.ts +0 -12
  218. package/popover/index.js +0 -146
  219. package/popover/types.d.ts +0 -40
  220. package/popover/types.js +0 -1
  221. package/popover/utils.d.ts +0 -4
  222. package/popover/utils.js +0 -10
  223. package/progress/index.d.ts +0 -12
  224. package/progress/index.js +0 -58
  225. package/progress/types.d.ts +0 -12
  226. package/progress/types.js +0 -1
  227. package/progress-stepper/index.d.ts +0 -11
  228. package/progress-stepper/index.js +0 -206
  229. package/progress-stepper/types.d.ts +0 -22
  230. package/progress-stepper/types.js +0 -1
  231. package/progress-stepper-item/index.d.ts +0 -12
  232. package/progress-stepper-item/index.js +0 -82
  233. package/progress-stepper-item/types.d.ts +0 -23
  234. package/progress-stepper-item/types.js +0 -1
  235. package/progress-stepper-item/utils.d.ts +0 -11
  236. package/progress-stepper-item/utils.js +0 -13
  237. package/radio/index.d.ts +0 -11
  238. package/radio/index.js +0 -154
  239. package/radio/types.d.ts +0 -14
  240. package/radio/types.js +0 -1
  241. package/radio-option/index.d.ts +0 -11
  242. package/radio-option/index.js +0 -79
  243. package/radio-option/types.d.ts +0 -18
  244. package/radio-option/types.js +0 -1
  245. package/rich-text/index.d.ts +0 -14
  246. package/rich-text/index.js +0 -75
  247. package/rich-text/types.d.ts +0 -12
  248. package/rich-text/types.js +0 -1
  249. package/rich-text/utils.d.ts +0 -7
  250. package/rich-text/utils.js +0 -107
  251. package/rich-textarea/index.d.ts +0 -11
  252. package/rich-textarea/index.js +0 -464
  253. package/rich-textarea/types.d.ts +0 -48
  254. package/rich-textarea/types.js +0 -1
  255. package/rich-textarea/utils.d.ts +0 -39
  256. package/rich-textarea/utils.js +0 -1730
  257. package/segment/index.d.ts +0 -12
  258. package/segment/index.js +0 -109
  259. package/segment/types.d.ts +0 -16
  260. package/segment/types.js +0 -1
  261. package/segment/utils.d.ts +0 -3
  262. package/segment/utils.js +0 -16
  263. package/segment-collapse/index.d.ts +0 -13
  264. package/segment-collapse/index.js +0 -60
  265. package/segment-collapse/types.d.ts +0 -11
  266. package/segment-collapse/types.js +0 -1
  267. package/segmented-control/index.d.ts +0 -11
  268. package/segmented-control/index.js +0 -85
  269. package/segmented-control/types.d.ts +0 -11
  270. package/segmented-control/types.js +0 -1
  271. package/segmented-control-option/index.d.ts +0 -11
  272. package/segmented-control-option/index.js +0 -95
  273. package/segmented-control-option/types.d.ts +0 -19
  274. package/segmented-control-option/types.js +0 -1
  275. package/segmented-icon-control/index.d.ts +0 -11
  276. package/segmented-icon-control/index.js +0 -101
  277. package/segmented-icon-control/types.d.ts +0 -14
  278. package/segmented-icon-control/types.js +0 -1
  279. package/segmented-icon-control-option/index.d.ts +0 -11
  280. package/segmented-icon-control-option/index.js +0 -82
  281. package/segmented-icon-control-option/types.d.ts +0 -16
  282. package/segmented-icon-control-option/types.js +0 -1
  283. package/select-button/index.d.ts +0 -13
  284. package/select-button/index.js +0 -202
  285. package/select-button/types.d.ts +0 -50
  286. package/select-button/types.js +0 -1
  287. package/select-menu/index.d.ts +0 -15
  288. package/select-menu/index.js +0 -332
  289. package/select-menu/types.d.ts +0 -41
  290. package/select-menu/types.js +0 -1
  291. package/select-menu-option/index.d.ts +0 -28
  292. package/select-menu-option/index.js +0 -65
  293. package/select-menu-option/types.d.ts +0 -26
  294. package/select-menu-option/types.js +0 -1
  295. package/skeleton/index.d.ts +0 -11
  296. package/skeleton/index.js +0 -108
  297. package/skeleton/types.d.ts +0 -9
  298. package/skeleton/types.js +0 -1
  299. package/skeleton-item/index.d.ts +0 -11
  300. package/skeleton-item/index.js +0 -11
  301. package/skeleton-item/types.d.ts +0 -13
  302. package/skeleton-item/types.js +0 -1
  303. package/spinner/index.d.ts +0 -11
  304. package/spinner/index.js +0 -58
  305. package/spinner/types.d.ts +0 -12
  306. package/spinner/types.js +0 -1
  307. package/standalone.d.ts +0 -85
  308. package/standalone.js +0 -87
  309. package/stop-events/index.d.ts +0 -1
  310. package/stop-events/index.js +0 -27
  311. package/table/index.d.ts +0 -11
  312. package/table/index.js +0 -14
  313. package/table/types.d.ts +0 -3
  314. package/table/types.js +0 -1
  315. package/table-body/index.d.ts +0 -11
  316. package/table-body/index.js +0 -14
  317. package/table-body/types.d.ts +0 -3
  318. package/table-body/types.js +0 -1
  319. package/table-cell/index.d.ts +0 -11
  320. package/table-cell/index.js +0 -21
  321. package/table-cell/types.d.ts +0 -9
  322. package/table-cell/types.js +0 -1
  323. package/table-cell/utils.d.ts +0 -2
  324. package/table-cell/utils.js +0 -1
  325. package/table-head/index.d.ts +0 -11
  326. package/table-head/index.js +0 -14
  327. package/table-head/types.d.ts +0 -3
  328. package/table-head/types.js +0 -1
  329. package/table-head-cell/index.d.ts +0 -12
  330. package/table-head-cell/index.js +0 -57
  331. package/table-head-cell/types.d.ts +0 -15
  332. package/table-head-cell/types.js +0 -1
  333. package/table-row/index.d.ts +0 -11
  334. package/table-row/index.js +0 -42
  335. package/table-row/types.d.ts +0 -11
  336. package/table-row/types.js +0 -1
  337. package/tabs/index.d.ts +0 -11
  338. package/tabs/index.js +0 -80
  339. package/tabs/types.d.ts +0 -18
  340. package/tabs/types.js +0 -1
  341. package/tabs-icon-option/index.d.ts +0 -11
  342. package/tabs-icon-option/index.js +0 -79
  343. package/tabs-icon-option/types.d.ts +0 -19
  344. package/tabs-icon-option/types.js +0 -1
  345. package/tabs-option/index.d.ts +0 -12
  346. package/tabs-option/index.js +0 -86
  347. package/tabs-option/types.d.ts +0 -25
  348. package/tabs-option/types.js +0 -1
  349. package/tag/index.d.ts +0 -12
  350. package/tag/index.js +0 -84
  351. package/tag/types.d.ts +0 -23
  352. package/tag/types.js +0 -1
  353. package/tag/utils.d.ts +0 -2
  354. package/tag/utils.js +0 -6
  355. package/text/index.d.ts +0 -11
  356. package/text/index.js +0 -64
  357. package/text/types.d.ts +0 -30
  358. package/text/types.js +0 -1
  359. package/text/utils.d.ts +0 -2
  360. package/text/utils.js +0 -1
  361. package/textarea/index.d.ts +0 -11
  362. package/textarea/index.js +0 -322
  363. package/textarea/types.d.ts +0 -60
  364. package/textarea/types.js +0 -1
  365. package/tile-control/index.d.ts +0 -11
  366. package/tile-control/index.js +0 -110
  367. package/tile-control/types.d.ts +0 -37
  368. package/tile-control/types.js +0 -1
  369. package/tile-control-option/index.d.ts +0 -11
  370. package/tile-control-option/index.js +0 -98
  371. package/tile-control-option/types.d.ts +0 -37
  372. package/tile-control-option/types.js +0 -1
  373. package/time-picker/index.d.ts +0 -15
  374. package/time-picker/index.js +0 -337
  375. package/time-picker/types.d.ts +0 -34
  376. package/time-picker/types.js +0 -1
  377. package/time-picker/utils.d.ts +0 -11
  378. package/time-picker/utils.js +0 -75
  379. package/title/index.d.ts +0 -11
  380. package/title/index.js +0 -60
  381. package/title/types.d.ts +0 -31
  382. package/title/types.js +0 -1
  383. package/title/utils.d.ts +0 -3
  384. package/title/utils.js +0 -17
  385. package/toast/index.d.ts +0 -13
  386. package/toast/index.js +0 -86
  387. package/toast/types.d.ts +0 -28
  388. package/toast/types.js +0 -1
  389. package/toast/utils.d.ts +0 -2
  390. package/toast/utils.js +0 -1
  391. package/toast-manager/index.d.ts +0 -13
  392. package/toast-manager/index.js +0 -170
  393. package/toast-manager/types.d.ts +0 -13
  394. package/toast-manager/types.js +0 -1
  395. package/toast-manager/utils.d.ts +0 -2
  396. package/toast-manager/utils.js +0 -1
  397. package/toggle/index.d.ts +0 -11
  398. package/toggle/index.js +0 -141
  399. package/toggle/types.d.ts +0 -23
  400. package/toggle/types.js +0 -1
  401. package/tooltip/index.d.ts +0 -13
  402. package/tooltip/index.js +0 -264
  403. package/tooltip/tooltip-state.d.ts +0 -19
  404. package/tooltip/tooltip-state.js +0 -126
  405. package/tooltip/types.d.ts +0 -35
  406. package/tooltip/types.js +0 -1
  407. package/tooltip/utils.d.ts +0 -5
  408. package/tooltip/utils.js +0 -17
  409. package/utils/context.d.ts +0 -20
  410. package/utils/context.js +0 -84
  411. package/utils/countries.d.ts +0 -6
  412. package/utils/countries.js +0 -2
  413. package/utils/csv.d.ts +0 -5
  414. package/utils/csv.js +0 -22
  415. package/utils/debounce.d.ts +0 -8
  416. package/utils/debounce.js +0 -22
  417. package/utils/dom.d.ts +0 -34
  418. package/utils/dom.js +0 -154
  419. package/utils/element.d.ts +0 -16
  420. package/utils/element.js +0 -48
  421. package/utils/event-target.d.ts +0 -4
  422. package/utils/event-target.js +0 -26
  423. package/utils/get-react-event-handler.d.ts +0 -1
  424. package/utils/get-react-event-handler.js +0 -8
  425. package/utils/index.d.ts +0 -12
  426. package/utils/index.js +0 -12
  427. package/utils/markdown.d.ts +0 -19
  428. package/utils/markdown.js +0 -143
  429. package/utils/rect.d.ts +0 -4
  430. package/utils/rect.js +0 -28
  431. package/utils/size.d.ts +0 -5
  432. package/utils/size.js +0 -3
  433. package/utils/slot.d.ts +0 -4
  434. package/utils/slot.js +0 -38
  435. package/utils/throttle.d.ts +0 -4
  436. package/utils/throttle.js +0 -20
  437. package/utils/uid.d.ts +0 -1
  438. package/utils/uid.js +0 -13
  439. package/vertical-stepper/index.d.ts +0 -11
  440. package/vertical-stepper/index.js +0 -57
  441. package/vertical-stepper/types.d.ts +0 -13
  442. package/vertical-stepper/types.js +0 -1
  443. package/vertical-stepper-item/index.d.ts +0 -14
  444. package/vertical-stepper-item/index.js +0 -61
  445. package/vertical-stepper-item/types.d.ts +0 -24
  446. package/vertical-stepper-item/types.js +0 -1
  447. package/vertical-stepper-item/utils.d.ts +0 -2
  448. 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
- };