@alveole/components 2.0.0-alpha → 2.0.0-alpha.10

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 (356) hide show
  1. package/dist/core/A/A.d.ts +3 -1
  2. package/dist/core/A/A.d.ts.map +1 -1
  3. package/dist/core/A/A.js +2 -2
  4. package/dist/core/Box/Box.d.ts +8 -8
  5. package/dist/core/Box/Box.d.ts.map +1 -1
  6. package/dist/core/Box/Box.js +6 -3
  7. package/dist/core/Box/Box.stories.d.ts +5 -5
  8. package/dist/core/Box/Box.stories.js +1 -1
  9. package/dist/core/Box/Box.stories.sources.d.ts.map +1 -1
  10. package/dist/core/Box/Box.stories.sources.js +1 -1
  11. package/dist/core/Box/Box.types.d.ts +3 -3
  12. package/dist/core/Box/Box.types.d.ts.map +1 -1
  13. package/dist/core/Form/Form.web.d.ts.map +1 -1
  14. package/dist/core/Form/Form.web.js +4 -1
  15. package/dist/core/Grid/Grid.stories.d.ts +4 -4
  16. package/dist/core/Map/useGoogleMap.d.ts +2 -1
  17. package/dist/core/Map/useGoogleMap.d.ts.map +1 -1
  18. package/dist/core/Map/useGoogleMap.js +3 -2
  19. package/dist/core/MarkdownDescription/MarkdownDescription.d.ts.map +1 -1
  20. package/dist/core/MarkdownDescription/MarkdownDescription.js +0 -4
  21. package/dist/core/MarkdownDescription/markdownComponents.d.ts +0 -6
  22. package/dist/core/MarkdownDescription/markdownComponents.d.ts.map +1 -1
  23. package/dist/core/MarkdownDescription/markdownComponents.js +3 -2
  24. package/dist/core/Page/Page.stories.d.ts +5 -0
  25. package/dist/core/Page/Page.stories.d.ts.map +1 -1
  26. package/dist/core/Page/Page.stories.js +5 -0
  27. package/dist/core/Page/Page.stories.sources.d.ts +2 -0
  28. package/dist/core/Page/Page.stories.sources.d.ts.map +1 -1
  29. package/dist/core/Page/Page.stories.sources.js +3 -0
  30. package/dist/core/Page/Page.types.d.ts +1 -0
  31. package/dist/core/Page/Page.types.d.ts.map +1 -1
  32. package/dist/core/Page/PageBackground.d.ts +5 -5
  33. package/dist/core/Page/PageBackground.d.ts.map +1 -1
  34. package/dist/core/Page/PageBackground.js +8 -5
  35. package/dist/core/Page/PageBackground.stories.d.ts +25 -0
  36. package/dist/core/Page/PageBackground.stories.d.ts.map +1 -0
  37. package/dist/core/Page/PageBackground.stories.js +28 -0
  38. package/dist/core/Page/PageBackground.stories.sources.d.ts +8 -0
  39. package/dist/core/Page/PageBackground.stories.sources.d.ts.map +1 -0
  40. package/dist/core/Page/PageBackground.stories.sources.js +8 -0
  41. package/dist/core/Page/PageContent.js +2 -2
  42. package/dist/core/Page/PageContentDefault.d.ts.map +1 -1
  43. package/dist/core/Page/PageContentDefault.js +1 -1
  44. package/dist/core/Page/PageContentScrollable.d.ts +6 -5
  45. package/dist/core/Page/PageContentScrollable.d.ts.map +1 -1
  46. package/dist/core/Page/PageContentScrollable.js +1 -1
  47. package/dist/core/Page/index.d.ts +1 -0
  48. package/dist/core/Page/index.d.ts.map +1 -1
  49. package/dist/core/Page/index.js +1 -0
  50. package/dist/core/Typography/Typography.d.ts +5 -5
  51. package/dist/core/Typography/Typography.d.ts.map +1 -1
  52. package/dist/core/Typography/Typography.js +16 -4
  53. package/dist/core/Typography/Typography.stories.d.ts +2 -2
  54. package/dist/core/Typography/couleurDuTexte.d.ts +1 -1
  55. package/dist/core/Typography/couleurDuTexte.d.ts.map +1 -1
  56. package/dist/core/UpdateRequired/UpdateRequired.d.ts.map +1 -1
  57. package/dist/core/UpdateRequired/UpdateRequired.js +4 -1
  58. package/dist/core/animation/animer.d.ts +9 -0
  59. package/dist/core/animation/animer.d.ts.map +1 -0
  60. package/dist/core/animation/animer.js +5 -0
  61. package/dist/core/styleTamagui/aplatirStyle.d.ts +2 -0
  62. package/dist/core/styleTamagui/aplatirStyle.d.ts.map +1 -0
  63. package/dist/core/styleTamagui/aplatirStyle.js +9 -0
  64. package/dist/core/styleTamagui/definis.d.ts +4 -0
  65. package/dist/core/styleTamagui/definis.d.ts.map +1 -0
  66. package/dist/core/styleTamagui/definis.js +3 -0
  67. package/dist/core/styleTamagui/flexDuWeb.d.ts +23 -0
  68. package/dist/core/styleTamagui/flexDuWeb.d.ts.map +1 -0
  69. package/dist/core/styleTamagui/flexDuWeb.js +19 -0
  70. package/dist/core/styleTamagui/fondAuSurvol.d.ts +14 -0
  71. package/dist/core/styleTamagui/fondAuSurvol.d.ts.map +1 -0
  72. package/dist/core/styleTamagui/fondAuSurvol.js +8 -0
  73. package/dist/core/styleTamagui/sansEstompage.d.ts +4 -0
  74. package/dist/core/styleTamagui/sansEstompage.d.ts.map +1 -0
  75. package/dist/core/styleTamagui/sansEstompage.js +4 -0
  76. package/dist/core/styleTamagui/soulignement.d.ts +11 -0
  77. package/dist/core/styleTamagui/soulignement.d.ts.map +1 -0
  78. package/dist/core/styleTamagui/soulignement.js +5 -0
  79. package/dist/generated/version.d.ts +1 -1
  80. package/dist/generated/version.d.ts.map +1 -1
  81. package/dist/generated/version.js +1 -1
  82. package/dist/pdfjs/pdf.min.mjs +4 -5
  83. package/dist/pdfjs/pdf.worker.min.mjs +4 -5
  84. package/dist/stories/index.d.ts +2 -1
  85. package/dist/stories/index.d.ts.map +1 -1
  86. package/dist/stories/index.js +2 -1
  87. package/dist/ui/Accordion/AccordionItem.d.ts.map +1 -1
  88. package/dist/ui/Accordion/AccordionItem.js +2 -1
  89. package/dist/ui/ActionMenu/ActionMenuItem.d.ts.map +1 -1
  90. package/dist/ui/ActionMenu/ActionMenuItem.js +5 -5
  91. package/dist/ui/Avatar/Avatar.d.ts.map +1 -1
  92. package/dist/ui/Avatar/Avatar.js +6 -1
  93. package/dist/ui/Badge/Badge.d.ts.map +1 -1
  94. package/dist/ui/Badge/Badge.js +3 -2
  95. package/dist/ui/Badge/Badge.stories.d.ts +16 -12
  96. package/dist/ui/Badge/Badge.stories.d.ts.map +1 -1
  97. package/dist/ui/Badge/Badge.styles.d.ts +16 -12
  98. package/dist/ui/Badge/Badge.styles.d.ts.map +1 -1
  99. package/dist/ui/Badge/Badge.styles.js +4 -2
  100. package/dist/ui/BottomSheet/BottomSheet.d.ts.map +1 -1
  101. package/dist/ui/BottomSheet/BottomSheet.js +2 -1
  102. package/dist/ui/BottomSheet/BottomSheet.stories.d.ts +6 -4
  103. package/dist/ui/BottomSheet/BottomSheet.stories.d.ts.map +1 -1
  104. package/dist/ui/BottomSheet/BottomSheet.styles.d.ts +6 -4
  105. package/dist/ui/BottomSheet/BottomSheet.styles.d.ts.map +1 -1
  106. package/dist/ui/BottomSheet/BottomSheet.styles.js +6 -4
  107. package/dist/ui/Breadcrumbs/Breadcrumbs.d.ts.map +1 -1
  108. package/dist/ui/Breadcrumbs/Breadcrumbs.js +2 -1
  109. package/dist/ui/Breadcrumbs/Breadcrumbs.stories.d.ts +5 -4
  110. package/dist/ui/Breadcrumbs/Breadcrumbs.stories.d.ts.map +1 -1
  111. package/dist/ui/Breadcrumbs/Breadcrumbs.styles.d.ts +5 -4
  112. package/dist/ui/Breadcrumbs/Breadcrumbs.styles.d.ts.map +1 -1
  113. package/dist/ui/Breadcrumbs/Breadcrumbs.styles.js +1 -4
  114. package/dist/ui/Button/Button.d.ts.map +1 -1
  115. package/dist/ui/Button/Button.js +22 -2
  116. package/dist/ui/Button/Button.stories.d.ts +12 -0
  117. package/dist/ui/Button/Button.stories.d.ts.map +1 -1
  118. package/dist/ui/Button/Button.stories.js +24 -4
  119. package/dist/ui/Button/Button.stories.sources.d.ts +2 -0
  120. package/dist/ui/Button/Button.stories.sources.d.ts.map +1 -1
  121. package/dist/ui/Button/Button.stories.sources.js +6 -3
  122. package/dist/ui/Button/Button.types.d.ts +4 -0
  123. package/dist/ui/Button/Button.types.d.ts.map +1 -1
  124. package/dist/ui/Button/ButtonContent.d.ts.map +1 -1
  125. package/dist/ui/Button/ButtonContent.js +7 -3
  126. package/dist/ui/Button/buttonIconStyling.d.ts +2 -2
  127. package/dist/ui/Button/buttonStyling.d.ts +9 -3
  128. package/dist/ui/Button/buttonStyling.d.ts.map +1 -1
  129. package/dist/ui/Button/buttonStyling.js +7 -3
  130. package/dist/ui/Checkbox/Checkbox.d.ts +6 -6
  131. package/dist/ui/Checkbox/Checkbox.js +2 -2
  132. package/dist/ui/Checkbox/Checkbox.stories.d.ts +7 -7
  133. package/dist/ui/Checkbox/Checkbox.styles.d.ts +1 -1
  134. package/dist/ui/Checkbox/Checkbox.styles.d.ts.map +1 -1
  135. package/dist/ui/Checkbox/Checkbox.styles.js +3 -4
  136. package/dist/ui/Checkbox/CheckboxContainer.d.ts +6 -6
  137. package/dist/ui/Checkbox/CheckboxContainer.d.ts.map +1 -1
  138. package/dist/ui/Checkbox/CheckboxContainer.js +4 -8
  139. package/dist/ui/Checkbox/CheckboxLabel.d.ts +1 -1
  140. package/dist/ui/Checkbox/CheckboxLabel.d.ts.map +1 -1
  141. package/dist/ui/Checkbox/CheckboxLabel.js +2 -2
  142. package/dist/ui/DataTable/DataTable.demo.deployments.js +1 -1
  143. package/dist/ui/DataTable/DataTable.stories.d.ts +3 -1
  144. package/dist/ui/DataTable/DataTable.stories.d.ts.map +1 -1
  145. package/dist/ui/DataTable/DataTable.styles.d.ts +3 -1
  146. package/dist/ui/DataTable/DataTable.styles.d.ts.map +1 -1
  147. package/dist/ui/DataTable/DataTable.styles.js +5 -1
  148. package/dist/ui/DataTable/DataTableCell.js +1 -1
  149. package/dist/ui/DataTable/DataTableRow.d.ts.map +1 -1
  150. package/dist/ui/DataTable/DataTableRow.js +4 -2
  151. package/dist/ui/DataTable/dataTableCellStyle.d.ts +2 -2
  152. package/dist/ui/DataTable/dataTableCellStyle.js +1 -1
  153. package/dist/ui/DateInput/DateInput.ios.d.ts +1 -1
  154. package/dist/ui/DateInput/DateInput.stories.d.ts +1 -1
  155. package/dist/ui/DateInput/DateInput.web.d.ts +1 -1
  156. package/dist/ui/DocumentViewer/DocumentViewer.stories.d.ts +1 -0
  157. package/dist/ui/DocumentViewer/DocumentViewer.stories.d.ts.map +1 -1
  158. package/dist/ui/DocumentViewer/DocumentViewer.stories.js +1 -1
  159. package/dist/ui/DocumentViewer/DocumentViewer.stories.sources.d.ts.map +1 -1
  160. package/dist/ui/DocumentViewer/DocumentViewer.stories.sources.js +1 -1
  161. package/dist/ui/DocumentViewer/DocumentViewer.styles.d.ts +1 -0
  162. package/dist/ui/DocumentViewer/DocumentViewer.styles.d.ts.map +1 -1
  163. package/dist/ui/DocumentViewer/DocumentViewer.styles.js +3 -0
  164. package/dist/ui/DocumentViewer/DocumentViewerImage.d.ts.map +1 -1
  165. package/dist/ui/DocumentViewer/pointeurWeb.d.ts +13 -3
  166. package/dist/ui/DocumentViewer/pointeurWeb.d.ts.map +1 -1
  167. package/dist/ui/DocumentViewer/pointeurWeb.js +1 -1
  168. package/dist/ui/DocumentViewer/useSurvolAvecZoom.d.ts +2 -2
  169. package/dist/ui/DocumentViewer/useSurvolAvecZoom.d.ts.map +1 -1
  170. package/dist/ui/FileDropZone/FileDropZone.d.ts +10 -0
  171. package/dist/ui/FileDropZone/FileDropZone.d.ts.map +1 -0
  172. package/dist/ui/FileDropZone/FileDropZone.js +3 -0
  173. package/dist/ui/FileDropZone/FileDropZone.stories.d.ts +50 -0
  174. package/dist/ui/FileDropZone/FileDropZone.stories.d.ts.map +1 -0
  175. package/dist/ui/FileDropZone/FileDropZone.stories.js +29 -0
  176. package/dist/ui/FileDropZone/FileDropZone.stories.sources.d.ts +10 -0
  177. package/dist/ui/FileDropZone/FileDropZone.stories.sources.d.ts.map +1 -0
  178. package/dist/ui/FileDropZone/FileDropZone.stories.sources.js +10 -0
  179. package/dist/ui/FileDropZone/FileDropZone.styles.d.ts +37 -0
  180. package/dist/ui/FileDropZone/FileDropZone.styles.d.ts.map +1 -0
  181. package/dist/ui/FileDropZone/FileDropZone.styles.js +35 -0
  182. package/dist/ui/FileDropZone/FileDropZone.web.d.ts +4 -0
  183. package/dist/ui/FileDropZone/FileDropZone.web.d.ts.map +1 -0
  184. package/dist/ui/FileDropZone/FileDropZone.web.js +11 -0
  185. package/dist/ui/FileDropZone/fichiersDuDataTransfer.d.ts.map +1 -0
  186. package/dist/ui/FileDropZone/index.d.ts +2 -0
  187. package/dist/ui/FileDropZone/index.d.ts.map +1 -0
  188. package/dist/ui/FileDropZone/index.js +1 -0
  189. package/dist/ui/FileDropZone/useDepotFichier.d.ts +17 -0
  190. package/dist/ui/FileDropZone/useDepotFichier.d.ts.map +1 -0
  191. package/dist/ui/FileDropZone/useDepotFichier.js +89 -0
  192. package/dist/ui/FilterDate/FilterDate.d.ts +1 -1
  193. package/dist/ui/FilterDate/FilterDate.d.ts.map +1 -1
  194. package/dist/ui/FormControl/FileInput.d.ts +10 -12
  195. package/dist/ui/FormControl/FileInput.d.ts.map +1 -1
  196. package/dist/ui/FormControl/FileInput.js +15 -53
  197. package/dist/ui/FormControl/FileInput.stories.d.ts +8 -40
  198. package/dist/ui/FormControl/FileInput.stories.d.ts.map +1 -1
  199. package/dist/ui/FormControl/FileInput.stories.js +46 -4
  200. package/dist/ui/FormControl/FileInput.stories.sources.d.ts +10 -0
  201. package/dist/ui/FormControl/FileInput.stories.sources.d.ts.map +1 -1
  202. package/dist/ui/FormControl/FileInput.stories.sources.js +11 -1
  203. package/dist/ui/FormControl/FileInput.styles.d.ts +2 -39
  204. package/dist/ui/FormControl/FileInput.styles.d.ts.map +1 -1
  205. package/dist/ui/FormControl/FileInput.styles.js +3 -32
  206. package/dist/ui/FormControl/FileInputListe.d.ts +11 -0
  207. package/dist/ui/FormControl/FileInputListe.d.ts.map +1 -0
  208. package/dist/ui/FormControl/FileInputListe.js +24 -0
  209. package/dist/ui/FormControl/fichierCorrespondAuType.d.ts +1 -0
  210. package/dist/ui/FormControl/fichierCorrespondAuType.d.ts.map +1 -1
  211. package/dist/ui/FormControl/fichierCorrespondAuType.js +5 -1
  212. package/dist/ui/FormControl/fichiersDuChamp.d.ts +43 -0
  213. package/dist/ui/FormControl/fichiersDuChamp.d.ts.map +1 -0
  214. package/dist/ui/FormControl/fichiersDuChamp.js +63 -0
  215. package/dist/ui/FormControl/useChoixDeFichier.d.ts +15 -0
  216. package/dist/ui/FormControl/useChoixDeFichier.d.ts.map +1 -0
  217. package/dist/ui/FormControl/useChoixDeFichier.js +87 -0
  218. package/dist/ui/FormControl/valideLeType.d.ts +1 -1
  219. package/dist/ui/FormControl/valideLeType.js +1 -1
  220. package/dist/ui/Header/Header.d.ts.map +1 -1
  221. package/dist/ui/Header/Header.js +1 -1
  222. package/dist/ui/Link/Link.d.ts.map +1 -1
  223. package/dist/ui/Link/Link.js +2 -1
  224. package/dist/ui/Link/Link.stories.d.ts +0 -4
  225. package/dist/ui/Link/Link.stories.d.ts.map +1 -1
  226. package/dist/ui/Link/Link.styles.d.ts +0 -4
  227. package/dist/ui/Link/Link.styles.d.ts.map +1 -1
  228. package/dist/ui/Link/Link.styles.js +0 -4
  229. package/dist/ui/ListItem/ListItem.d.ts.map +1 -1
  230. package/dist/ui/ListItem/ListItem.js +2 -1
  231. package/dist/ui/ListItem/ListItem.stories.d.ts +4 -2
  232. package/dist/ui/ListItem/ListItem.stories.d.ts.map +1 -1
  233. package/dist/ui/ListItem/ListItem.styles.d.ts +4 -2
  234. package/dist/ui/ListItem/ListItem.styles.d.ts.map +1 -1
  235. package/dist/ui/ListItem/ListItem.styles.js +6 -2
  236. package/dist/ui/LucideIcon/catalogueLucide.d.ts +171 -0
  237. package/dist/ui/LucideIcon/catalogueLucide.d.ts.map +1 -1
  238. package/dist/ui/LucideIcon/vendor/lab.js +1 -1
  239. package/dist/ui/LucideIcon/vendor/lucide.d.ts +2613 -1920
  240. package/dist/ui/LucideIcon/vendor/lucide.js +3 -3
  241. package/dist/ui/ProgressBar/ProgressBar.stories.d.ts +1 -0
  242. package/dist/ui/ProgressBar/ProgressBar.stories.d.ts.map +1 -1
  243. package/dist/ui/ProgressBar/ProgressBar.styles.d.ts +1 -0
  244. package/dist/ui/ProgressBar/ProgressBar.styles.d.ts.map +1 -1
  245. package/dist/ui/ProgressBar/ProgressBar.styles.js +2 -0
  246. package/dist/ui/RadioGroup/RadioGroup.d.ts +5 -3
  247. package/dist/ui/RadioGroup/RadioGroup.d.ts.map +1 -1
  248. package/dist/ui/RadioGroup/RadioGroup.js +5 -1
  249. package/dist/ui/RadioGroup/RadioGroup.stories.d.ts +2 -4
  250. package/dist/ui/RadioGroup/RadioGroup.stories.d.ts.map +1 -1
  251. package/dist/ui/RadioGroup/RadioGroup.styles.d.ts +1 -3
  252. package/dist/ui/RadioGroup/RadioGroup.styles.d.ts.map +1 -1
  253. package/dist/ui/RadioGroup/RadioGroup.styles.js +3 -6
  254. package/dist/ui/RadioGroup/RadioGroupCard.d.ts.map +1 -1
  255. package/dist/ui/RadioGroup/RadioGroupCard.js +2 -2
  256. package/dist/ui/RadioGroup/RadioGroupItem.d.ts.map +1 -1
  257. package/dist/ui/RadioGroup/RadioGroupItem.js +2 -2
  258. package/dist/ui/RadioGroup/RadioInput.d.ts.map +1 -1
  259. package/dist/ui/RadioGroup/RadioInput.js +5 -7
  260. package/dist/ui/RadioGroup/index.d.ts +1 -1
  261. package/dist/ui/Select/Select.types.d.ts +2 -0
  262. package/dist/ui/Select/Select.types.d.ts.map +1 -1
  263. package/dist/ui/Select/SelectBottomSheet.js +2 -2
  264. package/dist/ui/Select/SelectItem.js +1 -1
  265. package/dist/ui/Select/SelectList.styles.d.ts +1 -9
  266. package/dist/ui/Select/SelectList.styles.d.ts.map +1 -1
  267. package/dist/ui/Select/SelectList.styles.js +5 -6
  268. package/dist/ui/Select/SelectOptionsList.d.ts +1 -0
  269. package/dist/ui/Select/SelectOptionsList.d.ts.map +1 -1
  270. package/dist/ui/Select/selectItemStyle.d.ts +4 -4
  271. package/dist/ui/Select/selectItemStyle.d.ts.map +1 -1
  272. package/dist/ui/Select/selectItemStyle.js +7 -3
  273. package/dist/ui/Select/useDefilementVersSelection.d.ts +3 -2
  274. package/dist/ui/Select/useDefilementVersSelection.d.ts.map +1 -1
  275. package/dist/ui/Sidebar/Sidebar.stories.d.ts +0 -7
  276. package/dist/ui/Sidebar/Sidebar.stories.d.ts.map +1 -1
  277. package/dist/ui/Sidebar/Sidebar.styles.d.ts +0 -7
  278. package/dist/ui/Sidebar/Sidebar.styles.d.ts.map +1 -1
  279. package/dist/ui/Sidebar/Sidebar.styles.js +0 -3
  280. package/dist/ui/Sidebar/SidebarItem.d.ts.map +1 -1
  281. package/dist/ui/Sidebar/SidebarItem.js +13 -9
  282. package/dist/ui/Signature/Signature.d.ts +1 -1
  283. package/dist/ui/Signature/Signature.d.ts.map +1 -1
  284. package/dist/ui/Skeleton/Skeleton.stories.d.ts +1 -0
  285. package/dist/ui/Skeleton/Skeleton.stories.d.ts.map +1 -1
  286. package/dist/ui/Skeleton/Skeleton.styles.d.ts +1 -0
  287. package/dist/ui/Skeleton/Skeleton.styles.d.ts.map +1 -1
  288. package/dist/ui/Skeleton/Skeleton.styles.js +2 -0
  289. package/dist/ui/Switch/Switch.d.ts +1 -1
  290. package/dist/ui/Switch/Switch.d.ts.map +1 -1
  291. package/dist/ui/Switch/Switch.js +11 -8
  292. package/dist/ui/Switch/Switch.stories.d.ts +3 -2
  293. package/dist/ui/Switch/Switch.stories.d.ts.map +1 -1
  294. package/dist/ui/Switch/Switch.styles.d.ts +2 -1
  295. package/dist/ui/Switch/Switch.styles.d.ts.map +1 -1
  296. package/dist/ui/Switch/Switch.styles.js +5 -4
  297. package/dist/ui/Tabs/Tabs.d.ts +1 -1
  298. package/dist/ui/Tabs/Tabs.d.ts.map +1 -1
  299. package/dist/ui/Tabs/Tabs.js +1 -1
  300. package/dist/ui/Tabs/Tabs.stories.d.ts +26 -5
  301. package/dist/ui/Tabs/Tabs.stories.d.ts.map +1 -1
  302. package/dist/ui/Tabs/Tabs.styles.d.ts +26 -5
  303. package/dist/ui/Tabs/Tabs.styles.d.ts.map +1 -1
  304. package/dist/ui/Tabs/Tabs.styles.js +6 -2
  305. package/dist/ui/Tabs/TabsTab.js +1 -1
  306. package/dist/ui/Tabs/useTabsState.d.ts +1 -1
  307. package/dist/ui/Tabs/useTabsState.d.ts.map +1 -1
  308. package/dist/ui/Tabs/useTabsState.js +7 -4
  309. package/dist/ui/Toast/Toast.d.ts +3 -3
  310. package/dist/ui/Toast/Toast.d.ts.map +1 -1
  311. package/dist/ui/Toast/Toast.js +5 -7
  312. package/dist/ui/Toast/Toast.stories.d.ts +10 -7
  313. package/dist/ui/Toast/Toast.stories.d.ts.map +1 -1
  314. package/dist/ui/Toast/Toast.stories.js +12 -9
  315. package/dist/ui/Toast/Toast.stories.sources.js +1 -1
  316. package/dist/ui/Toast/ToastContext.d.ts +1 -0
  317. package/dist/ui/Toast/ToastContext.d.ts.map +1 -1
  318. package/dist/ui/Toast/ToastContext.js +1 -0
  319. package/dist/ui/Toast/Toasts.d.ts +2 -1
  320. package/dist/ui/Toast/Toasts.d.ts.map +1 -1
  321. package/dist/ui/Toast/Toasts.js +9 -5
  322. package/dist/ui/ToolbarTop/toolbarTopStyling.d.ts +2 -2
  323. package/dist/ui/index.d.ts +1 -1
  324. package/dist/ui/index.d.ts.map +1 -1
  325. package/dist/ui/index.js +1 -1
  326. package/package.json +34 -30
  327. package/dist/core/styleTamagui/versStyleTamagui.d.ts +0 -10
  328. package/dist/core/styleTamagui/versStyleTamagui.d.ts.map +0 -1
  329. package/dist/core/styleTamagui/versStyleTamagui.js +0 -8
  330. package/dist/ui/DragAndDropFile/DragAndDropFile.d.ts +0 -10
  331. package/dist/ui/DragAndDropFile/DragAndDropFile.d.ts.map +0 -1
  332. package/dist/ui/DragAndDropFile/DragAndDropFile.js +0 -13
  333. package/dist/ui/DragAndDropFile/DragAndDropFile.stories.d.ts +0 -56
  334. package/dist/ui/DragAndDropFile/DragAndDropFile.stories.d.ts.map +0 -1
  335. package/dist/ui/DragAndDropFile/DragAndDropFile.stories.js +0 -17
  336. package/dist/ui/DragAndDropFile/DragAndDropFile.stories.sources.d.ts +0 -10
  337. package/dist/ui/DragAndDropFile/DragAndDropFile.stories.sources.d.ts.map +0 -1
  338. package/dist/ui/DragAndDropFile/DragAndDropFile.stories.sources.js +0 -10
  339. package/dist/ui/DragAndDropFile/DragAndDropFile.styles.d.ts +0 -43
  340. package/dist/ui/DragAndDropFile/DragAndDropFile.styles.d.ts.map +0 -1
  341. package/dist/ui/DragAndDropFile/DragAndDropFile.styles.js +0 -43
  342. package/dist/ui/DragAndDropFile/DragAndDropFile.web.d.ts +0 -3
  343. package/dist/ui/DragAndDropFile/DragAndDropFile.web.d.ts.map +0 -1
  344. package/dist/ui/DragAndDropFile/DragAndDropFile.web.js +0 -18
  345. package/dist/ui/DragAndDropFile/fichiersDuDataTransfer.d.ts.map +0 -1
  346. package/dist/ui/DragAndDropFile/index.d.ts +0 -2
  347. package/dist/ui/DragAndDropFile/index.d.ts.map +0 -1
  348. package/dist/ui/DragAndDropFile/index.js +0 -1
  349. package/dist/ui/DragAndDropFile/useDepotFichier.d.ts +0 -21
  350. package/dist/ui/DragAndDropFile/useDepotFichier.d.ts.map +0 -1
  351. package/dist/ui/DragAndDropFile/useDepotFichier.js +0 -77
  352. package/dist/ui/Toast/ToastBridge.d.ts +0 -11
  353. package/dist/ui/Toast/ToastBridge.d.ts.map +0 -1
  354. package/dist/ui/Toast/ToastBridge.js +0 -19
  355. /package/dist/ui/{DragAndDropFile → FileDropZone}/fichiersDuDataTransfer.d.ts +0 -0
  356. /package/dist/ui/{DragAndDropFile → FileDropZone}/fichiersDuDataTransfer.js +0 -0
@@ -1,22 +1,20 @@
1
1
  import * as DocumentPicker from 'expo-document-picker';
2
2
  import React from 'react';
3
- export type FileInputValue = DocumentPicker.DocumentPickerAsset | DocumentPicker.DocumentPickerAsset[] | null;
3
+ import { FileInputLabels, FileInputValue } from './fichiersDuChamp';
4
+ export * from './fichiersDuChamp';
4
5
  export type FileInputProps = {
5
6
  value: FileInputValue;
6
- previewURL?: string;
7
- placeholder?: string;
8
- forcePlaceholder?: boolean;
9
- hideButton?: boolean;
10
- hideFilename?: boolean;
11
- canChange?: boolean;
12
- disabled?: boolean;
7
+ onChange: (value: FileInputValue) => void;
13
8
  type?: DocumentPicker.DocumentPickerOptions['type'];
14
9
  multiple?: boolean;
15
- onChange: (value: FileInputValue) => void;
10
+ disabled?: boolean;
11
+ removable?: boolean;
12
+ hideButton?: boolean;
13
+ labels?: Partial<FileInputLabels>;
14
+ /** Qualite des photos prises avec l'appareil photo, de 0 a 1. */
15
+ cameraQuality?: number;
16
16
  reopen?: boolean;
17
17
  onPickStart?: () => void;
18
18
  };
19
- export declare const nomAffiche: (value: FileInputValue, placeholder: string, forcePlaceholder?: boolean) => string;
20
- export declare const choisis: (assets: DocumentPicker.DocumentPickerAsset[] | null, multiple: boolean) => DocumentPicker.DocumentPickerAsset | DocumentPicker.DocumentPickerAsset[] | null;
21
- export declare const FileInput: (props: FileInputProps) => React.JSX.Element | null;
19
+ export declare const FileInput: (props: FileInputProps) => React.JSX.Element;
22
20
  //# sourceMappingURL=FileInput.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileInput.d.ts","sourceRoot":"","sources":["../../../src/ui/FormControl/FileInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,cAAc,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,MAAM,MAAM,cAAc,GAAG,cAAc,CAAC,mBAAmB,GAAG,cAAc,CAAC,mBAAmB,EAAE,GAAG,IAAI,CAAC;AAE9G,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,cAAc,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,cAAc,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACpD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAC1C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B,CAAC;AAKF,eAAO,MAAM,UAAU,GAAI,OAAO,cAAc,EAAE,aAAa,MAAM,EAAE,mBAAmB,OAAO,WAQhG,CAAC;AAIF,eAAO,MAAM,OAAO,GAAI,QAAQ,cAAc,CAAC,mBAAmB,EAAE,GAAG,IAAI,EAAE,UAAU,OAAO,qFAI7F,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,OAAO,cAAc,6BAmE9C,CAAC"}
1
+ {"version":3,"file":"FileInput.d.ts","sourceRoot":"","sources":["../../../src/ui/FormControl/FileInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,cAAc,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAE,eAAe,EAAE,cAAc,EAA+C,MAAM,mBAAmB,CAAC;AAKjH,cAAc,mBAAmB,CAAC;AAElC,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,cAAc,CAAC;IACtB,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAC1C,IAAI,CAAC,EAAE,cAAc,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACpD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IAClC,iEAAiE;IACjE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,OAAO,cAAc,sBAmC9C,CAAC"}
@@ -1,62 +1,24 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import * as DocumentPicker from 'expo-document-picker';
3
2
  import React from 'react';
4
- import { Pressable } from 'react-native';
3
+ import { Platform } from 'react-native';
5
4
  import { Box } from '../../core/Box';
6
- import { Typography } from '../../core/Typography';
5
+ import { Button } from '../Button';
6
+ import { fichiersVisibles, libellesParDefaut, retire } from './fichiersDuChamp';
7
7
  import { useStyles } from './FileInput.styles';
8
- import { valideLeType } from './valideLeType';
9
- // Le champ n'affiche jamais le detail d'une selection multiple : un fichier porte son nom, une
10
- // liste porte son compte. Cette table de cas se lisait au milieu du composant alors qu'elle ne
11
- // depend que de la valeur.
12
- export const nomAffiche = (value, placeholder, forcePlaceholder) => {
13
- if (value == null || forcePlaceholder)
14
- return placeholder;
15
- if (!Array.isArray(value))
16
- return value.name || '1 fichier';
17
- if (value.length === 0)
18
- return placeholder;
19
- if (value.length === 1)
20
- return value[0].name ?? '1 fichier';
21
- return `${value.length} fichiers`;
22
- };
23
- // Le selecteur rend toujours une liste ; le champ simple n'en veut que le premier element, et
24
- // une liste vide vaut une absence de choix dans les deux cas.
25
- export const choisis = (assets, multiple) => {
26
- if (!multiple)
27
- return assets?.[0] ?? null;
28
- return assets && assets.length > 0 ? assets : null;
29
- };
8
+ import { FileInputListe } from './FileInputListe';
9
+ import { useChoixDeFichier } from './useChoixDeFichier';
10
+ export * from './fichiersDuChamp';
30
11
  export const FileInput = (props) => {
31
- const { value, disabled, onChange, onPickStart, placeholder = 'Aucun fichier choisi.', type, forcePlaceholder, reopen = false, multiple = false, hideButton = false, } = props;
12
+ const { value, disabled, onChange, reopen = false, multiple = false, hideButton = false, removable = true } = props;
32
13
  const styles = useStyles();
33
- const displayValue = nomAffiche(value, placeholder, forcePlaceholder);
34
- const isPickingRef = React.useRef(false);
35
- const handlePickFile = React.useCallback(async () => {
36
- if (isPickingRef.current)
37
- return;
38
- onPickStart?.();
39
- if (disabled)
40
- return;
41
- isPickingRef.current = true;
42
- try {
43
- const result = await DocumentPicker.getDocumentAsync({ copyToCacheDirectory: true, multiple, type });
44
- valideLeType({ type, onChange })(choisis(result.assets, multiple));
45
- }
46
- finally {
47
- isPickingRef.current = false;
48
- }
49
- }, [onPickStart, disabled, multiple, type, onChange]);
14
+ const labels = React.useMemo(() => ({ ...libellesParDefaut, ...props.labels }), [props.labels]);
15
+ const choisir = useChoixDeFichier({ ...props, multiple, cameraQuality: props.cameraQuality ?? 0.8, labels });
16
+ // Le champ simple ne remplace pas un fichier en silence : il faut d'abord retirer celui qu'il montre.
17
+ const visibles = fichiersVisibles(value);
18
+ const boutonDesactive = disabled || (!multiple && visibles.length > 0);
50
19
  React.useEffect(() => {
51
20
  if (reopen)
52
- handlePickFile();
53
- }, [reopen, handlePickFile]);
54
- if (hideButton)
55
- return null;
56
- return (_jsx(Pressable, { accessibilityRole: "button", onPress: handlePickFile, children: _jsxs(Box, { tag: "form-control-file-input-inner", style: {
57
- ...styles.fileInputContainer,
58
- }, children: [_jsx(Box, { tag: "file-input-button", hoverStyle: { ...(!disabled && styles.fileInputButtonHovered) }, style: {
59
- ...styles.fileInputButton,
60
- ...(disabled && styles.fileInputButtonDisabled),
61
- }, children: _jsx(Typography, { style: styles.inputFileText, children: "Choisir un fichier" }) }), _jsx(Box, { tag: "file-input-text", children: _jsx(Typography, { mt: 'auto', mb: 'auto', style: styles.placeholderText, children: displayValue }) })] }) }));
21
+ choisir();
22
+ }, [reopen, choisir]);
23
+ return (_jsxs(Box, { tag: "file-input", style: styles.container, children: [!hideButton && (_jsx(Button, { fullWidth: Platform.OS !== 'web', onPress: choisir, disabled: boutonDesactive, variant: "secondary", title: labels.addFile, leading: "Paperclip" })), _jsx(FileInputListe, { fichiers: visibles, labels: labels, retirable: !disabled && removable, onRetirer: fichier => onChange(retire(value, fichier)) })] }));
62
24
  };
@@ -3,54 +3,22 @@ declare const _default: {
3
3
  tags: "ui"[];
4
4
  experimental: false;
5
5
  description: string;
6
- component: (props: import("./FileInput").FileInputProps) => import("react").JSX.Element | null;
6
+ component: (props: import("./FileInput").FileInputProps) => import("react").JSX.Element;
7
7
  styleFn: () => {
8
- fileInputContainer: {
8
+ container: {
9
9
  display: "flex";
10
- flexDirection: "row";
10
+ flexDirection: "column";
11
11
  gap: string | number;
12
- alignItems: "center";
13
- };
14
- fileInputButton: {
15
- borderWidth: number;
16
- borderColor: string;
17
- backgroundColor: string;
18
- transition: "background-color 0.1s ease-in-out";
19
- display: "flex";
20
- alignItems: "center";
21
- justifyContent: "center";
22
- paddingLeft: string | number;
23
- paddingRight: string | number;
24
- paddingTop: string | number;
25
- paddingBottom: string | number;
26
- };
27
- fileInputButtonHovered: {
28
- backgroundColor: string;
29
- };
30
- fileInputButtonDisabled: {
31
- cursor: "not-allowed";
32
- backgroundColor: string;
33
- };
34
- inputFileText: {
35
- color: string;
36
- fontSize: 12;
37
- lineHeight: 20;
38
- letterSpacing: 0;
39
- fontFamily: string;
40
- fontWeight?: import("react-native").TextStyle["fontWeight"];
41
- };
42
- placeholderText: {
43
- color: string;
44
- fontSize: 12;
45
- lineHeight: 20;
46
- letterSpacing: 0;
47
- fontFamily: string;
48
- fontWeight?: import("react-native").TextStyle["fontWeight"];
49
12
  };
50
13
  };
51
14
  };
52
15
  export default _default;
53
16
  export declare const Default: () => import("react").JSX.Element;
54
17
  export declare const Multiple: () => import("react").JSX.Element;
18
+ export declare const ImagesSeulement: () => import("react").JSX.Element;
19
+ export declare const AvecFichiersEnregistres: () => import("react").JSX.Element;
20
+ export declare const LibellesPersonnalises: () => import("react").JSX.Element;
21
+ export declare const Desactive: () => import("react").JSX.Element;
22
+ export declare const NonRetirable: () => import("react").JSX.Element;
55
23
  export * as Sources from './FileInput.stories.sources';
56
24
  //# sourceMappingURL=FileInput.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileInput.stories.d.ts","sourceRoot":"","sources":["../../../src/ui/FormControl/FileInput.stories.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,wBAQkB;AAElB,eAAO,MAAM,OAAO,mCAkBnB,CAAC;AAEF,eAAO,MAAM,QAAQ,mCAOpB,CAAC;AAEF,OAAO,KAAK,OAAO,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"FileInput.stories.d.ts","sourceRoot":"","sources":["../../../src/ui/FormControl/FileInput.stories.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;AAMA,wBAQkB;AAElB,eAAO,MAAM,OAAO,mCAOnB,CAAC;AAEF,eAAO,MAAM,QAAQ,mCAOpB,CAAC;AAEF,eAAO,MAAM,eAAe,mCAO3B,CAAC;AAEF,eAAO,MAAM,uBAAuB,mCAwBnC,CAAC;AAEF,eAAO,MAAM,qBAAqB,mCAWjC,CAAC;AAEF,eAAO,MAAM,SAAS,mCAarB,CAAC;AAEF,eAAO,MAAM,YAAY,mCAexB,CAAC;AAEF,OAAO,KAAK,OAAO,MAAM,6BAA6B,CAAC"}
@@ -1,6 +1,5 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useState } from 'react';
3
- import { Box } from '../../core/Box';
4
3
  import { FileInput } from './FileInput';
5
4
  import { useStyles } from './FileInput.styles';
6
5
  import { FormControl } from './FormControl';
@@ -8,16 +7,59 @@ export default {
8
7
  title: 'FileInput',
9
8
  tags: ['ui'],
10
9
  experimental: false,
11
- description: 'Sélection de fichier avec validation MIME, nue : on la place dans un FormControl pour son libellé, son aide et sa validation.',
10
+ description: "Sélection de fichiers avec validation MIME et liste des fichiers choisis. Sur natif, propose galerie, appareil photo ou document. Nue : on la place dans un FormControl pour son libellé, son aide et sa validation. Pour déposer des fichiers sur tout un formulaire (web), l'envelopper dans une [FileDropZone](/components/FileDropZone).",
12
11
  component: FileInput,
13
12
  styleFn: useStyles,
14
13
  };
15
14
  export const Default = () => {
16
15
  const [file, setFile] = useState(null);
17
- return (_jsxs(Box, { display: "flex", flexDirection: "column", gap: 24, children: [_jsx(FormControl, { label: "Document", children: _jsx(FileInput, { value: file, onChange: setFile }) }), _jsx(FormControl, { label: "Image uniquement", children: _jsx(FileInput, { type: "image/*", value: file, onChange: setFile }) }), _jsx(FormControl, { label: "Avec erreur", error: "Ce champ est requis", children: _jsx(FileInput, { value: null, onChange: () => { } }) }), _jsx(FormControl, { label: "D\u00E9sactiv\u00E9", disabled: true, children: _jsx(FileInput, { value: null, onChange: () => { }, disabled: true }) })] }));
16
+ return (_jsx(FormControl, { label: "Document", children: _jsx(FileInput, { value: file, onChange: setFile }) }));
18
17
  };
19
18
  export const Multiple = () => {
20
19
  const [files, setFiles] = useState(null);
21
20
  return (_jsx(FormControl, { label: "Documents", children: _jsx(FileInput, { value: files, onChange: setFiles, multiple: true }) }));
22
21
  };
22
+ export const ImagesSeulement = () => {
23
+ const [files, setFiles] = useState(null);
24
+ return (_jsx(FormControl, { label: "Photos", hint: "Formats accept\u00E9s : JPG, PNG", children: _jsx(FileInput, { type: "image/*", value: files, onChange: setFiles, multiple: true }) }));
25
+ };
26
+ export const AvecFichiersEnregistres = () => {
27
+ const [files, setFiles] = useState([
28
+ {
29
+ id: '1',
30
+ persisted: true,
31
+ uri: 'https://picsum.photos/id/10/200',
32
+ name: 'photo-chantier.jpg',
33
+ mimeType: 'image/jpeg',
34
+ lastModified: 0,
35
+ },
36
+ {
37
+ id: '2',
38
+ persisted: true,
39
+ uri: 'https://example.com/devis.pdf',
40
+ name: 'devis.pdf',
41
+ mimeType: 'application/pdf',
42
+ lastModified: 0,
43
+ },
44
+ ]);
45
+ return (_jsx(FormControl, { label: "Pi\u00E8ces jointes", hint: "Un fichier enregistr\u00E9 retir\u00E9 reste dans la valeur, marqu\u00E9 removed.", children: _jsx(FileInput, { value: files, onChange: setFiles, multiple: true }) }));
46
+ };
47
+ export const LibellesPersonnalises = () => {
48
+ const [file, setFile] = useState(null);
49
+ return (_jsx(FormControl, { label: "Attachment", children: _jsx(FileInput, { value: file, onChange: setFile, labels: { addFile: 'Add a file', gallery: 'Gallery', camera: 'Camera', document: 'Document', cancel: 'Cancel' } }) }));
50
+ };
51
+ export const Desactive = () => (_jsx(FormControl, { label: "Document", disabled: true, children: _jsx(FileInput, { value: {
52
+ uri: 'https://example.com/contrat.pdf',
53
+ name: 'contrat.pdf',
54
+ mimeType: 'application/pdf',
55
+ lastModified: 0,
56
+ }, onChange: () => { }, disabled: true }) }));
57
+ export const NonRetirable = () => (_jsx(FormControl, { label: "Justificatif", children: _jsx(FileInput, { value: {
58
+ id: '3',
59
+ persisted: true,
60
+ uri: 'https://example.com/justificatif.pdf',
61
+ name: 'justificatif.pdf',
62
+ mimeType: 'application/pdf',
63
+ lastModified: 0,
64
+ }, onChange: () => { }, removable: false }) }));
23
65
  export * as Sources from './FileInput.stories.sources';
@@ -1,8 +1,18 @@
1
1
  export declare const Default: () => string;
2
2
  export declare const Multiple: () => string;
3
+ export declare const ImagesSeulement: () => string;
4
+ export declare const AvecFichiersEnregistres: () => string;
5
+ export declare const LibellesPersonnalises: () => string;
6
+ export declare const Desactive: () => string;
7
+ export declare const NonRetirable: () => string;
3
8
  export declare const storySources: {
4
9
  readonly Default: () => string;
5
10
  readonly Multiple: () => string;
11
+ readonly ImagesSeulement: () => string;
12
+ readonly AvecFichiersEnregistres: () => string;
13
+ readonly LibellesPersonnalises: () => string;
14
+ readonly Desactive: () => string;
15
+ readonly NonRetirable: () => string;
6
16
  };
7
17
  export type StorySourceName = keyof typeof storySources;
8
18
  //# sourceMappingURL=FileInput.stories.sources.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileInput.stories.sources.d.ts","sourceRoot":"","sources":["../../../src/ui/FormControl/FileInput.stories.sources.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,OAAO,cAAuuB,CAAC;AAE5vB,eAAO,MAAM,QAAQ,cAAwP,CAAC;AAE9Q,eAAO,MAAM,YAAY;;;CAGf,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,YAAY,CAAC"}
1
+ {"version":3,"file":"FileInput.stories.sources.d.ts","sourceRoot":"","sources":["../../../src/ui/FormControl/FileInput.stories.sources.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,OAAO,cAAyO,CAAC;AAE9P,eAAO,MAAM,QAAQ,cAAwP,CAAC;AAE9Q,eAAO,MAAM,eAAe,cAAkT,CAAC;AAE/U,eAAO,MAAM,uBAAuB,cAAotB,CAAC;AAEzvB,eAAO,MAAM,qBAAqB,cAA4Y,CAAC;AAE/a,eAAO,MAAM,SAAS,cAA0V,CAAC;AAEjX,eAAO,MAAM,YAAY,cAAuZ,CAAC;AAEjb,eAAO,MAAM,YAAY;;;;;;;;CAQf,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,YAAY,CAAC"}
@@ -1,8 +1,18 @@
1
1
  // This file is generated. Do not edit manually.
2
2
  // Source: src/ui/FormControl/FileInput.stories.tsx
3
- export const Default = () => "export const Default = () => {\n const [file, setFile] = useState<FileInputValue>(null);\n return (\n <Box display=\"flex\" flexDirection=\"column\" gap={24}>\n <FormControl label=\"Document\">\n <FileInput value={file} onChange={setFile} />\n </FormControl>\n <FormControl label=\"Image uniquement\">\n <FileInput type=\"image/*\" value={file} onChange={setFile} />\n </FormControl>\n <FormControl label=\"Avec erreur\" error=\"Ce champ est requis\">\n <FileInput value={null} onChange={() => {}} />\n </FormControl>\n <FormControl label=\"Désactivé\" disabled>\n <FileInput value={null} onChange={() => {}} disabled />\n </FormControl>\n </Box>\n );\n};";
3
+ export const Default = () => "export const Default = () => {\n const [file, setFile] = useState<FileInputValue>(null);\n return (\n <FormControl label=\"Document\">\n <FileInput value={file} onChange={setFile} />\n </FormControl>\n );\n};";
4
4
  export const Multiple = () => "export const Multiple = () => {\n const [files, setFiles] = useState<FileInputValue>(null);\n return (\n <FormControl label=\"Documents\">\n <FileInput value={files} onChange={setFiles} multiple />\n </FormControl>\n );\n};";
5
+ export const ImagesSeulement = () => "export const ImagesSeulement = () => {\n const [files, setFiles] = useState<FileInputValue>(null);\n return (\n <FormControl label=\"Photos\" hint=\"Formats acceptés : JPG, PNG\">\n <FileInput type=\"image/*\" value={files} onChange={setFiles} multiple />\n </FormControl>\n );\n};";
6
+ export const AvecFichiersEnregistres = () => "export const AvecFichiersEnregistres = () => {\n const [files, setFiles] = useState<FileInputValue>([\n {\n id: '1',\n persisted: true,\n uri: 'https://picsum.photos/id/10/200',\n name: 'photo-chantier.jpg',\n mimeType: 'image/jpeg',\n lastModified: 0,\n },\n {\n id: '2',\n persisted: true,\n uri: 'https://example.com/devis.pdf',\n name: 'devis.pdf',\n mimeType: 'application/pdf',\n lastModified: 0,\n },\n ]);\n return (\n <FormControl label=\"Pièces jointes\" hint=\"Un fichier enregistré retiré reste dans la valeur, marqué removed.\">\n <FileInput value={files} onChange={setFiles} multiple />\n </FormControl>\n );\n};";
7
+ export const LibellesPersonnalises = () => "export const LibellesPersonnalises = () => {\n const [file, setFile] = useState<FileInputValue>(null);\n return (\n <FormControl label=\"Attachment\">\n <FileInput\n value={file}\n onChange={setFile}\n labels={{ addFile: 'Add a file', gallery: 'Gallery', camera: 'Camera', document: 'Document', cancel: 'Cancel' }}\n />\n </FormControl>\n );\n};";
8
+ export const Desactive = () => "export const Desactive = () => (\n <FormControl label=\"Document\" disabled>\n <FileInput\n value={{\n uri: 'https://example.com/contrat.pdf',\n name: 'contrat.pdf',\n mimeType: 'application/pdf',\n lastModified: 0,\n }}\n onChange={() => {}}\n disabled\n />\n </FormControl>\n);";
9
+ export const NonRetirable = () => "export const NonRetirable = () => (\n <FormControl label=\"Justificatif\">\n <FileInput\n value={{\n id: '3',\n persisted: true,\n uri: 'https://example.com/justificatif.pdf',\n name: 'justificatif.pdf',\n mimeType: 'application/pdf',\n lastModified: 0,\n }}\n onChange={() => {}}\n removable={false}\n />\n </FormControl>\n);";
5
10
  export const storySources = {
6
11
  Default,
7
12
  Multiple,
13
+ ImagesSeulement,
14
+ AvecFichiersEnregistres,
15
+ LibellesPersonnalises,
16
+ Desactive,
17
+ NonRetirable,
8
18
  };
@@ -1,45 +1,8 @@
1
1
  export declare const useStyles: () => {
2
- fileInputContainer: {
2
+ container: {
3
3
  display: "flex";
4
- flexDirection: "row";
4
+ flexDirection: "column";
5
5
  gap: string | number;
6
- alignItems: "center";
7
- };
8
- fileInputButton: {
9
- borderWidth: number;
10
- borderColor: string;
11
- backgroundColor: string;
12
- transition: "background-color 0.1s ease-in-out";
13
- display: "flex";
14
- alignItems: "center";
15
- justifyContent: "center";
16
- paddingLeft: string | number;
17
- paddingRight: string | number;
18
- paddingTop: string | number;
19
- paddingBottom: string | number;
20
- };
21
- fileInputButtonHovered: {
22
- backgroundColor: string;
23
- };
24
- fileInputButtonDisabled: {
25
- cursor: "not-allowed";
26
- backgroundColor: string;
27
- };
28
- inputFileText: {
29
- color: string;
30
- fontSize: 12;
31
- lineHeight: 20;
32
- letterSpacing: 0;
33
- fontFamily: string;
34
- fontWeight?: import("react-native").TextStyle["fontWeight"];
35
- };
36
- placeholderText: {
37
- color: string;
38
- fontSize: 12;
39
- lineHeight: 20;
40
- letterSpacing: 0;
41
- fontFamily: string;
42
- fontWeight?: import("react-native").TextStyle["fontWeight"];
43
6
  };
44
7
  };
45
8
  //# sourceMappingURL=FileInput.styles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileInput.styles.d.ts","sourceRoot":"","sources":["../../../src/ui/FormControl/FileInput.styles.tsx"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCnB,CAAC"}
1
+ {"version":3,"file":"FileInput.styles.d.ts","sourceRoot":"","sources":["../../../src/ui/FormControl/FileInput.styles.tsx"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS;;;;;;CAMnB,CAAC"}
@@ -1,37 +1,8 @@
1
1
  import { makeStyles } from '@alveole/theme';
2
- export const useStyles = makeStyles(({ text, color, spacing }) => ({
3
- fileInputContainer: {
2
+ export const useStyles = makeStyles(({ spacing }) => ({
3
+ container: {
4
4
  display: 'flex',
5
- flexDirection: 'row',
5
+ flexDirection: 'column',
6
6
  gap: spacing('1W'),
7
- alignItems: 'center',
8
- },
9
- fileInputButton: {
10
- borderWidth: 1,
11
- borderColor: color.border['default-grey'],
12
- backgroundColor: color.background['alt-grey'],
13
- transition: 'background-color 0.1s ease-in-out',
14
- display: 'flex',
15
- alignItems: 'center',
16
- justifyContent: 'center',
17
- paddingLeft: spacing('1W'),
18
- paddingRight: spacing('1W'),
19
- paddingTop: spacing('1,5V'),
20
- paddingBottom: spacing('1,5V'),
21
- },
22
- fileInputButtonHovered: {
23
- backgroundColor: color.background['contrast-grey'],
24
- },
25
- fileInputButtonDisabled: {
26
- cursor: 'not-allowed',
27
- backgroundColor: color.background['disabled-grey'],
28
- },
29
- inputFileText: {
30
- ...text['Corps de texte'].XS.Regular,
31
- color: color.text['default-grey'],
32
- },
33
- placeholderText: {
34
- ...text['Corps de texte'].XS.Regular,
35
- color: color.text['default-grey'],
36
7
  },
37
8
  }));
@@ -0,0 +1,11 @@
1
+ import { FileInputFile, FileInputLabels } from './fichiersDuChamp';
2
+ type FileInputListeProps = {
3
+ fichiers: FileInputFile[];
4
+ labels: FileInputLabels;
5
+ retirable: boolean;
6
+ onRetirer: (fichier: FileInputFile) => void;
7
+ };
8
+ /** Les fichiers montres par le champ : apercu ou icone, ouverture au clic, bouton de retrait. */
9
+ export declare const FileInputListe: ({ fichiers, labels, retirable, onRetirer }: FileInputListeProps) => import("react").JSX.Element | null;
10
+ export {};
11
+ //# sourceMappingURL=FileInputListe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileInputListe.d.ts","sourceRoot":"","sources":["../../../src/ui/FormControl/FileInputListe.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAYnE,KAAK,mBAAmB,GAAG;IACzB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;CAC7C,CAAC;AAEF,iGAAiG;AACjG,eAAO,MAAM,cAAc,GAAI,4CAA4C,mBAAmB,uCA6B7F,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Linking } from 'react-native';
3
+ import { Box } from '../../core/Box';
4
+ import { ButtonIcon } from '../Button';
5
+ import { ListItem } from '../ListItem';
6
+ const estUneImage = (fichier) => fichier.mimeType?.startsWith('image/') || /\.(jpe?g|png|gif|webp|bmp|svg)$/i.test(fichier.name ?? '');
7
+ const iconeDe = (fichier) => {
8
+ if (fichier.persisted)
9
+ return 'FileCheckCorner';
10
+ if (fichier.mimeType?.includes('pdf') || fichier.name?.endsWith('.pdf'))
11
+ return 'FileText';
12
+ if (estUneImage(fichier))
13
+ return 'FileImage';
14
+ return 'File';
15
+ };
16
+ /** Les fichiers montres par le champ : apercu ou icone, ouverture au clic, bouton de retrait. */
17
+ export const FileInputListe = ({ fichiers, labels, retirable, onRetirer }) => {
18
+ if (fichiers.length === 0)
19
+ return null;
20
+ return (_jsx(Box, { tag: "file-input-list", children: fichiers.map((fichier, index) => {
21
+ const nom = fichier.name ?? labels.unnamed;
22
+ return (_jsx(ListItem, { title: nom, preview_url: estUneImage(fichier) ? fichier.uri : undefined, IconProps: { name: iconeDe(fichier) }, showSeparateur: index !== 0, onPress: () => Linking.openURL(fichier.uri).catch(() => { }), trailing: () => (_jsx(ButtonIcon, { accessibilityLabel: `${labels.remove} ${nom}`, disabled: !retirable, variant: "tertiary", icon: "CircleX", onPress: () => onRetirer(fichier) })) }, fichier.id ?? fichier.uri));
23
+ }) }));
24
+ };
@@ -2,6 +2,7 @@
2
2
  * Vrai si le fichier (reconnu a son type MIME, avec repli sur l'extension du nom pour le CSV)
3
3
  * fait partie des types autorises. Sans type exige, tout fichier passe. Un seul type peut etre
4
4
  * fourni sous forme de chaine plutot que de tableau. Semantique stricte : `image/…`, pdf propre.
5
+ * Les types MIME du selecteur (`image/*`, `application/pdf`) sont aussi reconnus.
5
6
  */
6
7
  export declare const fichierCorrespondAuType: (mimeType: string, fileName: string | undefined, types: string | readonly string[] | undefined) => boolean;
7
8
  //# sourceMappingURL=fichierCorrespondAuType.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fichierCorrespondAuType.d.ts","sourceRoot":"","sources":["../../../src/ui/FormControl/fichierCorrespondAuType.ts"],"names":[],"mappings":"AAOA;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,GAClC,UAAU,MAAM,EAChB,UAAU,MAAM,GAAG,SAAS,EAC5B,OAAO,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,KAC5C,OAQF,CAAC"}
1
+ {"version":3,"file":"fichierCorrespondAuType.d.ts","sourceRoot":"","sources":["../../../src/ui/FormControl/fichierCorrespondAuType.ts"],"names":[],"mappings":"AAWA;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,GAClC,UAAU,MAAM,EAChB,UAAU,MAAM,GAAG,SAAS,EAC5B,OAAO,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,KAC5C,OASF,CAAC"}
@@ -1,10 +1,13 @@
1
1
  const estUneImage = (mimeType) => mimeType.startsWith('image/');
2
2
  const estUnPdf = (mimeType) => mimeType === 'application/pdf' || mimeType.endsWith('/pdf');
3
+ // Un type MIME exact (`image/png`) ou generique (`image/*`, `*/*`), comme ceux du selecteur.
4
+ const correspondAuMime = (mimeType, type) => type === mimeType || type === '*/*' || (type.endsWith('/*') && mimeType.startsWith(type.slice(0, -1)));
3
5
  const estUnCsv = (mimeType, fileName) => mimeType === 'text/csv' || mimeType === 'application/csv' || (fileName?.endsWith('.csv') ?? false);
4
6
  /**
5
7
  * Vrai si le fichier (reconnu a son type MIME, avec repli sur l'extension du nom pour le CSV)
6
8
  * fait partie des types autorises. Sans type exige, tout fichier passe. Un seul type peut etre
7
9
  * fourni sous forme de chaine plutot que de tableau. Semantique stricte : `image/…`, pdf propre.
10
+ * Les types MIME du selecteur (`image/*`, `application/pdf`) sont aussi reconnus.
8
11
  */
9
12
  export const fichierCorrespondAuType = (mimeType, fileName, types) => {
10
13
  const liste = typeof types === 'string' ? [types] : types;
@@ -12,5 +15,6 @@ export const fichierCorrespondAuType = (mimeType, fileName, types) => {
12
15
  return true;
13
16
  return ((liste.includes('image') && estUneImage(mimeType)) ||
14
17
  (liste.includes('pdf') && estUnPdf(mimeType)) ||
15
- (liste.includes('csv') && estUnCsv(mimeType, fileName)));
18
+ (liste.includes('csv') && estUnCsv(mimeType, fileName)) ||
19
+ liste.some(type => correspondAuMime(mimeType, type)));
16
20
  };
@@ -0,0 +1,43 @@
1
+ import * as DocumentPicker from 'expo-document-picker';
2
+ /**
3
+ * Un fichier du champ. `persisted` signale un fichier enregistré (deja cote serveur, reconnu a
4
+ * son `id`) ; `removed` marque un fichier enregistre que l'utilisateur a retire.
5
+ */
6
+ export type FileInputFile = DocumentPicker.DocumentPickerAsset & {
7
+ id?: string;
8
+ persisted?: boolean;
9
+ removed?: boolean;
10
+ };
11
+ export type FileInputValue = FileInputFile | FileInputFile[] | null;
12
+ export type FileInputLabels = {
13
+ addFile: string;
14
+ selectFile: string;
15
+ gallery: string;
16
+ camera: string;
17
+ document: string;
18
+ cancel: string;
19
+ chooseImageTitle: string;
20
+ chooseDocumentTitle: string;
21
+ chooseImageMessage: string;
22
+ permissionRequired: string;
23
+ cameraPermissionMessage: string;
24
+ galleryPermissionMessage: string;
25
+ unnamed: string;
26
+ remove: string;
27
+ };
28
+ export declare const libellesParDefaut: FileInputLabels;
29
+ type TypesAcceptes = DocumentPicker.DocumentPickerOptions['type'];
30
+ export type Source = 'document' | 'gallery' | 'camera';
31
+ export declare const fichiersVisibles: (value: FileInputValue) => FileInputFile[];
32
+ export declare const ajoute: (value: FileInputValue, nouveaux: FileInputFile[], multiple: boolean) => FileInputValue;
33
+ export declare const retire: (value: FileInputValue, cible: FileInputFile) => FileInputValue;
34
+ export declare const imagesSeulement: (type: TypesAcceptes) => boolean;
35
+ /** Les sources que la feuille d'actions propose sur natif, dans l'ordre. Sur grand ecran, le document passe en tete. */
36
+ export declare const sourcesProposees: (type: TypesAcceptes, grandEcran: boolean) => Source[];
37
+ /** Sur grand ecran, l'option qui ouvre l'explorateur de fichiers s'annonce comme telle. */
38
+ export declare const libelleDeLaSource: (source: Source, labels: FileInputLabels, { type, grandEcran }: {
39
+ type: TypesAcceptes;
40
+ grandEcran: boolean;
41
+ }) => string;
42
+ export {};
43
+ //# sourceMappingURL=fichiersDuChamp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fichiersDuChamp.d.ts","sourceRoot":"","sources":["../../../src/ui/FormControl/fichiersDuChamp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,cAAc,MAAM,sBAAsB,CAAC;AAEvD;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,cAAc,CAAC,mBAAmB,GAAG;IAC/D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG,aAAa,EAAE,GAAG,IAAI,CAAC;AAEpE,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,uBAAuB,EAAE,MAAM,CAAC;IAChC,wBAAwB,EAAE,MAAM,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,eAe/B,CAAC;AAEF,KAAK,aAAa,GAAG,cAAc,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAElE,MAAM,MAAM,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;AAKvD,eAAO,MAAM,gBAAgB,GAAI,OAAO,cAAc,oBAAuD,CAAC;AAG9G,eAAO,MAAM,MAAM,GAAI,OAAO,cAAc,EAAE,UAAU,aAAa,EAAE,EAAE,UAAU,OAAO,KAAG,cAG5F,CAAC;AAOF,eAAO,MAAM,MAAM,GAAI,OAAO,cAAc,EAAE,OAAO,aAAa,KAAG,cAUpE,CAAC;AAMF,eAAO,MAAM,eAAe,GAAI,MAAM,aAAa,YAGlD,CAAC;AAOF,wHAAwH;AACxH,eAAO,MAAM,gBAAgB,GAAI,MAAM,aAAa,EAAE,YAAY,OAAO,KAAG,MAAM,EAIjF,CAAC;AAEF,2FAA2F;AAC3F,eAAO,MAAM,iBAAiB,GAC5B,QAAQ,MAAM,EACd,QAAQ,eAAe,EACvB,sBAAsB;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,WAKnE,CAAC"}
@@ -0,0 +1,63 @@
1
+ export const libellesParDefaut = {
2
+ addFile: 'Ajouter un fichier',
3
+ selectFile: 'Sélectionner un fichier',
4
+ gallery: 'Galerie',
5
+ camera: 'Appareil photo',
6
+ document: 'Document',
7
+ cancel: 'Annuler',
8
+ chooseImageTitle: 'Choisir une image',
9
+ chooseDocumentTitle: 'Choisir un fichier',
10
+ chooseImageMessage: 'Prendre une photo ou en choisir une dans la galerie.',
11
+ permissionRequired: 'Autorisation requise',
12
+ cameraPermissionMessage: "Autorisez l'accès à l'appareil photo dans les réglages pour prendre une photo.",
13
+ galleryPermissionMessage: "Autorisez l'accès à la galerie dans les réglages pour choisir une image.",
14
+ unnamed: 'Fichier sans nom',
15
+ remove: 'Retirer',
16
+ };
17
+ const listeDe = (value) => value == null ? [] : Array.isArray(value) ? value : [value];
18
+ export const fichiersVisibles = (value) => listeDe(value).filter(fichier => !fichier.removed);
19
+ // Le champ multiple accumule ; le champ simple ne recoit un fichier que s'il n'en montre aucun.
20
+ export const ajoute = (value, nouveaux, multiple) => {
21
+ if (!multiple)
22
+ return nouveaux[0] ?? value;
23
+ return [...listeDe(value), ...nouveaux];
24
+ };
25
+ const memeFichier = (a, b) => a.id != null && b.id != null ? a.id === b.id : a.uri === b.uri;
26
+ // Un fichier enregistre reste dans la valeur, marque `removed`, pour que l'appelant sache quoi
27
+ // supprimer cote serveur ; un fichier ajoute disparait simplement.
28
+ export const retire = (value, cible) => {
29
+ const retirer = (fichier) => {
30
+ if (!memeFichier(fichier, cible))
31
+ return [fichier];
32
+ return fichier.persisted ? [{ ...fichier, removed: true }] : [];
33
+ };
34
+ if (!Array.isArray(value))
35
+ return value == null ? null : (retirer(value)[0] ?? null);
36
+ const suivants = value.flatMap(retirer);
37
+ return suivants.length === 0 ? null : suivants;
38
+ };
39
+ const typesDe = (type) => (type == null ? [] : Array.isArray(type) ? type : [type]);
40
+ const estUnTypeImage = (t) => t === 'image' || t.startsWith('image/');
41
+ export const imagesSeulement = (type) => {
42
+ const types = typesDe(type);
43
+ return types.length > 0 && types.every(estUnTypeImage);
44
+ };
45
+ const accepteLesImages = (type) => {
46
+ const types = typesDe(type);
47
+ return types.length === 0 || types.some(t => t === '*/*' || estUnTypeImage(t));
48
+ };
49
+ /** Les sources que la feuille d'actions propose sur natif, dans l'ordre. Sur grand ecran, le document passe en tete. */
50
+ export const sourcesProposees = (type, grandEcran) => {
51
+ const images = accepteLesImages(type) ? ['gallery', 'camera'] : [];
52
+ if (imagesSeulement(type))
53
+ return images;
54
+ return grandEcran ? ['document', ...images] : [...images, 'document'];
55
+ };
56
+ /** Sur grand ecran, l'option qui ouvre l'explorateur de fichiers s'annonce comme telle. */
57
+ export const libelleDeLaSource = (source, labels, { type, grandEcran }) => {
58
+ if (source === 'document')
59
+ return grandEcran ? labels.selectFile : labels.document;
60
+ if (source === 'gallery')
61
+ return grandEcran && imagesSeulement(type) ? labels.selectFile : labels.gallery;
62
+ return labels.camera;
63
+ };
@@ -0,0 +1,15 @@
1
+ import type { FileInputProps } from './FileInput';
2
+ import { FileInputLabels } from './fichiersDuChamp';
3
+ type Options = Pick<FileInputProps, 'value' | 'onChange' | 'type' | 'disabled' | 'onPickStart'> & {
4
+ multiple: boolean;
5
+ cameraQuality: number;
6
+ labels: FileInputLabels;
7
+ };
8
+ /**
9
+ * Tout ce que le bouton du champ declenche : le selecteur de documents sur le web ; sur natif, une
10
+ * feuille d'actions galerie / appareil photo / document, avec les demandes d'autorisation. Les
11
+ * fichiers recus passent le controle de type, puis s'ajoutent a la valeur.
12
+ */
13
+ export declare const useChoixDeFichier: (options: Options) => () => Promise<void>;
14
+ export {};
15
+ //# sourceMappingURL=useChoixDeFichier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useChoixDeFichier.d.ts","sourceRoot":"","sources":["../../../src/ui/FormControl/useChoixDeFichier.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAGL,eAAe,EAKhB,MAAM,mBAAmB,CAAC;AAmC3B,KAAK,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,OAAO,GAAG,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,aAAa,CAAC,GAAG;IAChG,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,eAAe,CAAC;CACzB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,GAAI,SAAS,OAAO,wBAuDjD,CAAC"}