@stackcraftmx/calcita 0.32.1 → 0.47.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 (338) hide show
  1. package/README.md +263 -2
  2. package/cli/packageVersions.js +12 -3
  3. package/cli/projectFiles.js +5 -2
  4. package/cli/templates/module/__Name__Page.test.jsx.tpl +24 -0
  5. package/cli/templates/project/README.md.tpl +14 -1
  6. package/cli/templates/project/src/app/appRouter.jsx.tpl +5 -2
  7. package/cli/templates/project/src/core/accountConnector.js.tpl +4 -2
  8. package/cli/templates/project/src/modules/auth/SignInPage.test.jsx.tpl +20 -0
  9. package/cli/templates/project/src/modules/home/HomePage.test.jsx.tpl +16 -0
  10. package/cli/templates/project/src/testing/browserGaps.js.tpl +70 -0
  11. package/cli/templates/project/src/testing/openScreen.jsx.tpl +58 -0
  12. package/cli/templates/project/src/testing/setup.js.tpl +25 -0
  13. package/cli/templates/project/vite.config.js.tpl +12 -0
  14. package/dist/DataTable/GoToPage.js +69 -13
  15. package/dist/DataTable/GoToPage.js.map +1 -1
  16. package/dist/DataTable/ServerTable.js +2 -0
  17. package/dist/DataTable/ServerTable.js.map +1 -1
  18. package/dist/DataTable/ServerTableFilterDrawer.js +52 -0
  19. package/dist/DataTable/ServerTableFilterDrawer.js.map +1 -0
  20. package/dist/DataTable/filterContext.js.map +1 -1
  21. package/dist/DataTable/goToPageOptions.js +17 -0
  22. package/dist/DataTable/goToPageOptions.js.map +1 -0
  23. package/dist/date-pickers.js +28 -2
  24. package/dist/date-pickers.js.map +1 -1
  25. package/dist/datePickers/DateInput.js +15 -34
  26. package/dist/datePickers/DateInput.js.map +1 -1
  27. package/dist/datePickers/DateTimeInput.js +75 -0
  28. package/dist/datePickers/DateTimeInput.js.map +1 -0
  29. package/dist/datePickers/FormDateTimeField.js +12 -0
  30. package/dist/datePickers/FormDateTimeField.js.map +1 -0
  31. package/dist/datePickers/FormMonthField.js +12 -0
  32. package/dist/datePickers/FormMonthField.js.map +1 -0
  33. package/dist/datePickers/FormTimeField.js +12 -0
  34. package/dist/datePickers/FormTimeField.js.map +1 -0
  35. package/dist/datePickers/MonthInput.js +58 -0
  36. package/dist/datePickers/MonthInput.js.map +1 -0
  37. package/dist/datePickers/PickerFrame.js +27 -0
  38. package/dist/datePickers/PickerFrame.js.map +1 -0
  39. package/dist/datePickers/TimeInput.js +55 -0
  40. package/dist/datePickers/TimeInput.js.map +1 -0
  41. package/dist/datePickers/dateTimeRules.js +24 -0
  42. package/dist/datePickers/dateTimeRules.js.map +1 -0
  43. package/dist/datePickers/pickerValues.js +106 -0
  44. package/dist/datePickers/pickerValues.js.map +1 -0
  45. package/dist/datePickers/useCurrentMinute.js +28 -0
  46. package/dist/datePickers/useCurrentMinute.js.map +1 -0
  47. package/dist/datePickers/usePickerField.js +22 -0
  48. package/dist/datePickers/usePickerField.js.map +1 -0
  49. package/dist/dictionaries/dictionaries.js +3 -1
  50. package/dist/dictionaries/dictionaries.js.map +1 -1
  51. package/dist/forms/FormAttachmentsField.js +12 -0
  52. package/dist/forms/FormAttachmentsField.js.map +1 -0
  53. package/dist/forms/FormCheckboxGroupField.js +12 -0
  54. package/dist/forms/FormCheckboxGroupField.js.map +1 -0
  55. package/dist/forms/FormFileField.js +12 -0
  56. package/dist/forms/FormFileField.js.map +1 -0
  57. package/dist/forms/FormFileUploadField.js +12 -0
  58. package/dist/forms/FormFileUploadField.js.map +1 -0
  59. package/dist/forms/FormImageField.js +12 -0
  60. package/dist/forms/FormImageField.js.map +1 -0
  61. package/dist/forms/FormMaskedField.js +12 -0
  62. package/dist/forms/FormMaskedField.js.map +1 -0
  63. package/dist/forms/FormRepeatingFields.js +54 -0
  64. package/dist/forms/FormRepeatingFields.js.map +1 -0
  65. package/dist/forms/FormTransferListField.js +12 -0
  66. package/dist/forms/FormTransferListField.js.map +1 -0
  67. package/dist/forms/applyServerProblem.js +10 -3
  68. package/dist/forms/applyServerProblem.js.map +1 -1
  69. package/dist/forms/listRules.js +111 -0
  70. package/dist/forms/listRules.js.map +1 -0
  71. package/dist/forms/serverProblemFields.js +17 -0
  72. package/dist/forms/serverProblemFields.js.map +1 -1
  73. package/dist/forms.js +51 -29
  74. package/dist/forms.js.map +1 -1
  75. package/dist/hookForm/FormAttachmentsField.js +12 -0
  76. package/dist/hookForm/FormAttachmentsField.js.map +1 -0
  77. package/dist/hookForm/FormCheckboxGroupField.js +12 -0
  78. package/dist/hookForm/FormCheckboxGroupField.js.map +1 -0
  79. package/dist/hookForm/FormFileField.js +12 -0
  80. package/dist/hookForm/FormFileField.js.map +1 -0
  81. package/dist/hookForm/FormFileUploadField.js +12 -0
  82. package/dist/hookForm/FormFileUploadField.js.map +1 -0
  83. package/dist/hookForm/FormImageField.js +12 -0
  84. package/dist/hookForm/FormImageField.js.map +1 -0
  85. package/dist/hookForm/FormMaskedField.js +12 -0
  86. package/dist/hookForm/FormMaskedField.js.map +1 -0
  87. package/dist/hookForm/FormRepeatingFields.js +44 -0
  88. package/dist/hookForm/FormRepeatingFields.js.map +1 -0
  89. package/dist/hookForm/FormTransferListField.js +12 -0
  90. package/dist/hookForm/FormTransferListField.js.map +1 -0
  91. package/dist/hookForm/applyServerProblem.js +8 -3
  92. package/dist/hookForm/applyServerProblem.js.map +1 -1
  93. package/dist/index.js +188 -100
  94. package/dist/index.js.map +1 -1
  95. package/dist/inputs/CatalogInput.js +74 -7
  96. package/dist/inputs/CatalogInput.js.map +1 -1
  97. package/dist/inputs/CheckboxGroupInput.js +100 -0
  98. package/dist/inputs/CheckboxGroupInput.js.map +1 -0
  99. package/dist/inputs/MaskedInput.js +86 -0
  100. package/dist/inputs/MaskedInput.js.map +1 -0
  101. package/dist/inputs/NumberInput.js +12 -1
  102. package/dist/inputs/NumberInput.js.map +1 -1
  103. package/dist/inputs/RepeatingFields.js +177 -0
  104. package/dist/inputs/RepeatingFields.js.map +1 -0
  105. package/dist/inputs/SelectInput.js +43 -5
  106. package/dist/inputs/SelectInput.js.map +1 -1
  107. package/dist/inputs/TransferListInput.js +215 -0
  108. package/dist/inputs/TransferListInput.js.map +1 -0
  109. package/dist/inputs/inputMasks.js +84 -0
  110. package/dist/inputs/inputMasks.js.map +1 -0
  111. package/dist/inputs/selectAllState.js +20 -0
  112. package/dist/inputs/selectAllState.js.map +1 -0
  113. package/dist/inputs/useRowKeys.js +26 -0
  114. package/dist/inputs/useRowKeys.js.map +1 -0
  115. package/dist/legal/CookieNotice.js +79 -0
  116. package/dist/legal/CookieNotice.js.map +1 -0
  117. package/dist/legal/TermsAcceptanceDialog.js +129 -0
  118. package/dist/legal/TermsAcceptanceDialog.js.map +1 -0
  119. package/dist/legal/consentStorage.js +18 -0
  120. package/dist/legal/consentStorage.js.map +1 -0
  121. package/dist/legal/useCookieConsent.js +17 -0
  122. package/dist/legal/useCookieConsent.js.map +1 -0
  123. package/dist/locales/en.js +233 -1
  124. package/dist/locales/en.js.map +1 -1
  125. package/dist/locales/es.js +233 -1
  126. package/dist/locales/es.js.map +1 -1
  127. package/dist/mexico/CfdiSummary.js +81 -0
  128. package/dist/mexico/CfdiSummary.js.map +1 -0
  129. package/dist/mexico/EfirmaFields.js +167 -0
  130. package/dist/mexico/EfirmaFields.js.map +1 -0
  131. package/dist/mexico/certificateReader.js +79 -0
  132. package/dist/mexico/certificateReader.js.map +1 -0
  133. package/dist/mexico/cfdiReader.js +81 -0
  134. package/dist/mexico/cfdiReader.js.map +1 -0
  135. package/dist/mexico/derReader.js +81 -0
  136. package/dist/mexico/derReader.js.map +1 -0
  137. package/dist/mexico/efirmaKey.js +51 -0
  138. package/dist/mexico/efirmaKey.js.map +1 -0
  139. package/dist/mexico/mexicoIdentifiers.js +86 -0
  140. package/dist/mexico/mexicoIdentifiers.js.map +1 -0
  141. package/dist/mexico/mexicoRules.js +16 -0
  142. package/dist/mexico/mexicoRules.js.map +1 -0
  143. package/dist/mexico.js +32 -0
  144. package/dist/mexico.js.map +1 -0
  145. package/dist/react-hook-form.js +40 -17
  146. package/dist/react-hook-form.js.map +1 -1
  147. package/dist/rich-text.js +19 -0
  148. package/dist/rich-text.js.map +1 -0
  149. package/dist/richText/FormRichTextField.js +12 -0
  150. package/dist/richText/FormRichTextField.js.map +1 -0
  151. package/dist/richText/RichTextEditor.js +108 -0
  152. package/dist/richText/RichTextEditor.js.map +1 -0
  153. package/dist/richText/RichTextLinkPopover.js +57 -0
  154. package/dist/richText/RichTextLinkPopover.js.map +1 -0
  155. package/dist/richText/RichTextToolbar.js +189 -0
  156. package/dist/richText/RichTextToolbar.js.map +1 -0
  157. package/dist/richText/RichTextView.js +26 -0
  158. package/dist/richText/RichTextView.js.map +1 -0
  159. package/dist/richText/richTextContentSx.js +42 -0
  160. package/dist/richText/richTextContentSx.js.map +1 -0
  161. package/dist/richText/richTextExtensions.js +44 -0
  162. package/dist/richText/richTextExtensions.js.map +1 -0
  163. package/dist/richText/richTextRules.js +46 -0
  164. package/dist/richText/richTextRules.js.map +1 -0
  165. package/dist/security/SessionsCard.js +11 -7
  166. package/dist/security/SessionsCard.js.map +1 -1
  167. package/dist/table.js +2 -0
  168. package/dist/table.js.map +1 -1
  169. package/dist/theme/components/glassComponents.js +27 -0
  170. package/dist/theme/components/glassComponents.js.map +1 -1
  171. package/dist/theme/components/minimalComponents.js +12 -0
  172. package/dist/theme/components/minimalComponents.js.map +1 -1
  173. package/dist/types/DataTable/ServerTableFilterDrawer.d.ts +21 -0
  174. package/dist/types/DataTable/filterContext.d.ts +2 -1
  175. package/dist/types/DataTable/goToPageOptions.d.ts +15 -0
  176. package/dist/types/DataTable/index.d.ts +1 -0
  177. package/dist/types/date-pickers.d.ts +10 -1
  178. package/dist/types/datePickers/DateInput.d.ts +6 -4
  179. package/dist/types/datePickers/DateTimeInput.d.ts +50 -0
  180. package/dist/types/datePickers/FormDateTimeField.d.ts +7 -0
  181. package/dist/types/datePickers/FormMonthField.d.ts +7 -0
  182. package/dist/types/datePickers/FormTimeField.d.ts +7 -0
  183. package/dist/types/datePickers/MonthInput.d.ts +39 -0
  184. package/dist/types/datePickers/PickerFrame.d.ts +22 -0
  185. package/dist/types/datePickers/TimeInput.d.ts +38 -0
  186. package/dist/types/datePickers/dateTimeRules.d.ts +31 -0
  187. package/dist/types/datePickers/pickerValues.d.ts +114 -0
  188. package/dist/types/datePickers/useCurrentMinute.d.ts +5 -0
  189. package/dist/types/datePickers/usePickerField.d.ts +24 -0
  190. package/dist/types/dictionaries/dictionaries.d.ts +6 -3
  191. package/dist/types/forms/FormAttachmentsField.d.ts +7 -0
  192. package/dist/types/forms/FormCheckboxGroupField.d.ts +7 -0
  193. package/dist/types/forms/FormFileField.d.ts +7 -0
  194. package/dist/types/forms/FormFileUploadField.d.ts +7 -0
  195. package/dist/types/forms/FormImageField.d.ts +7 -0
  196. package/dist/types/forms/FormMaskedField.d.ts +7 -0
  197. package/dist/types/forms/FormRepeatingFields.d.ts +25 -0
  198. package/dist/types/forms/FormTransferListField.d.ts +7 -0
  199. package/dist/types/forms/index.d.ts +10 -1
  200. package/dist/types/forms/listRules.d.ts +48 -0
  201. package/dist/types/forms/serverProblemFields.d.ts +13 -0
  202. package/dist/types/forms.d.ts +1 -1
  203. package/dist/types/hookForm/FormAttachmentsField.d.ts +8 -0
  204. package/dist/types/hookForm/FormCheckboxGroupField.d.ts +8 -0
  205. package/dist/types/hookForm/FormFileField.d.ts +8 -0
  206. package/dist/types/hookForm/FormFileUploadField.d.ts +8 -0
  207. package/dist/types/hookForm/FormImageField.d.ts +8 -0
  208. package/dist/types/hookForm/FormMaskedField.d.ts +9 -0
  209. package/dist/types/hookForm/FormRepeatingFields.d.ts +27 -0
  210. package/dist/types/hookForm/FormTransferListField.d.ts +8 -0
  211. package/dist/types/index.d.ts +25 -3
  212. package/dist/types/inputs/CatalogInput.d.ts +7 -1
  213. package/dist/types/inputs/CheckboxGroupInput.d.ts +39 -0
  214. package/dist/types/inputs/MaskedInput.d.ts +35 -0
  215. package/dist/types/inputs/RepeatingFields.d.ts +52 -0
  216. package/dist/types/inputs/SelectInput.d.ts +6 -1
  217. package/dist/types/inputs/TransferListInput.d.ts +43 -0
  218. package/dist/types/inputs/inputMasks.d.ts +52 -0
  219. package/dist/types/inputs/selectAllState.d.ts +11 -0
  220. package/dist/types/inputs/useRowKeys.d.ts +11 -0
  221. package/dist/types/legal/CookieNotice.d.ts +30 -0
  222. package/dist/types/legal/TermsAcceptanceDialog.d.ts +32 -0
  223. package/dist/types/legal/consentStorage.d.ts +16 -0
  224. package/dist/types/legal/useCookieConsent.d.ts +13 -0
  225. package/dist/types/locales/en.d.ts +232 -0
  226. package/dist/types/locales/es.d.ts +232 -0
  227. package/dist/types/mexico/CfdiSummary.d.ts +17 -0
  228. package/dist/types/mexico/EfirmaFields.d.ts +38 -0
  229. package/dist/types/mexico/certificateReader.d.ts +37 -0
  230. package/dist/types/mexico/cfdiReader.d.ts +95 -0
  231. package/dist/types/mexico/derReader.d.ts +54 -0
  232. package/dist/types/mexico/efirmaKey.d.ts +26 -0
  233. package/dist/types/mexico/mexicoIdentifiers.d.ts +61 -0
  234. package/dist/types/mexico/mexicoRules.d.ts +29 -0
  235. package/dist/types/mexico.d.ts +11 -0
  236. package/dist/types/react-hook-form.d.ts +10 -1
  237. package/dist/types/rich-text.d.ts +5 -0
  238. package/dist/types/richText/FormRichTextField.d.ts +7 -0
  239. package/dist/types/richText/RichTextEditor.d.ts +42 -0
  240. package/dist/types/richText/RichTextLinkPopover.d.ts +17 -0
  241. package/dist/types/richText/RichTextToolbar.d.ts +15 -0
  242. package/dist/types/richText/RichTextView.d.ts +13 -0
  243. package/dist/types/richText/richTextContentSx.d.ts +7 -0
  244. package/dist/types/richText/richTextExtensions.d.ts +15 -0
  245. package/dist/types/richText/richTextRules.d.ts +41 -0
  246. package/dist/types/table.d.ts +1 -1
  247. package/dist/types/ui/actions/ActionsMenu.d.ts +18 -3
  248. package/dist/types/ui/actions/CopyButton.d.ts +7 -4
  249. package/dist/types/ui/actions/tableRowText.d.ts +6 -0
  250. package/dist/types/ui/cards/RecordCard.d.ts +65 -0
  251. package/dist/types/ui/cards/RecordCardSkeleton.d.ts +17 -0
  252. package/dist/types/ui/countdown/Countdown.d.ts +31 -0
  253. package/dist/types/ui/countdown/countdownParts.d.ts +39 -0
  254. package/dist/types/ui/countdown/useCountdown.d.ts +14 -0
  255. package/dist/types/ui/documents/PdfViewerDialog.d.ts +21 -0
  256. package/dist/types/ui/filters/FilterDrawer.d.ts +34 -0
  257. package/dist/types/ui/filters/filterDrawerFields.d.ts +139 -0
  258. package/dist/types/ui/help/HelpButton.d.ts +15 -0
  259. package/dist/types/ui/help/HelpCarouselDialog.d.ts +35 -0
  260. package/dist/types/ui/help/useHelpCarousel.d.ts +21 -0
  261. package/dist/types/ui/index.d.ts +10 -0
  262. package/dist/types/ui/labels/IconBadge.d.ts +34 -0
  263. package/dist/types/ui/navigation/RouteTabs.d.ts +44 -0
  264. package/dist/types/ui/navigation/routeTabMatching.d.ts +27 -0
  265. package/dist/types/upload/AttachmentsInput.d.ts +62 -0
  266. package/dist/types/upload/FileChip.d.ts +18 -0
  267. package/dist/types/upload/FileDropzone.d.ts +3 -0
  268. package/dist/types/upload/FileInput.d.ts +48 -0
  269. package/dist/types/upload/FileUploadInput.d.ts +80 -0
  270. package/dist/types/upload/ImageInput.d.ts +53 -0
  271. package/dist/types/upload/TemplateDownloadButton.d.ts +39 -0
  272. package/dist/types/upload/fileAppearance.d.ts +8 -0
  273. package/dist/types/upload/fileRules.d.ts +38 -0
  274. package/dist/types/upload/transferProgress.d.ts +18 -0
  275. package/dist/types/upload/uploadMachine.d.ts +6 -2
  276. package/dist/types/upload/uploadWithProgress.d.ts +6 -2
  277. package/dist/types/upload/useFilePicker.d.ts +39 -0
  278. package/dist/ui/actions/ActionsMenu.js +98 -15
  279. package/dist/ui/actions/ActionsMenu.js.map +1 -1
  280. package/dist/ui/actions/CopyButton.js +31 -11
  281. package/dist/ui/actions/CopyButton.js.map +1 -1
  282. package/dist/ui/actions/tableRowText.js +7 -0
  283. package/dist/ui/actions/tableRowText.js.map +1 -0
  284. package/dist/ui/cards/RecordCard.js +145 -0
  285. package/dist/ui/cards/RecordCard.js.map +1 -0
  286. package/dist/ui/cards/RecordCardSkeleton.js +33 -0
  287. package/dist/ui/cards/RecordCardSkeleton.js.map +1 -0
  288. package/dist/ui/countdown/Countdown.js +38 -0
  289. package/dist/ui/countdown/Countdown.js.map +1 -0
  290. package/dist/ui/countdown/countdownParts.js +34 -0
  291. package/dist/ui/countdown/countdownParts.js.map +1 -0
  292. package/dist/ui/countdown/useCountdown.js +35 -0
  293. package/dist/ui/countdown/useCountdown.js.map +1 -0
  294. package/dist/ui/documents/PdfViewerDialog.js +81 -0
  295. package/dist/ui/documents/PdfViewerDialog.js.map +1 -0
  296. package/dist/ui/filters/FilterDrawer.js +211 -0
  297. package/dist/ui/filters/FilterDrawer.js.map +1 -0
  298. package/dist/ui/filters/filterDrawerFields.js +119 -0
  299. package/dist/ui/filters/filterDrawerFields.js.map +1 -0
  300. package/dist/ui/help/HelpButton.js +17 -0
  301. package/dist/ui/help/HelpButton.js.map +1 -0
  302. package/dist/ui/help/HelpCarouselDialog.js +154 -0
  303. package/dist/ui/help/HelpCarouselDialog.js.map +1 -0
  304. package/dist/ui/help/useHelpCarousel.js +25 -0
  305. package/dist/ui/help/useHelpCarousel.js.map +1 -0
  306. package/dist/ui/labels/IconBadge.js +82 -0
  307. package/dist/ui/labels/IconBadge.js.map +1 -0
  308. package/dist/ui/navigation/RouteTabs.js +75 -0
  309. package/dist/ui/navigation/RouteTabs.js.map +1 -0
  310. package/dist/ui/navigation/routeTabMatching.js +23 -0
  311. package/dist/ui/navigation/routeTabMatching.js.map +1 -0
  312. package/dist/upload/AttachmentsInput.js +127 -0
  313. package/dist/upload/AttachmentsInput.js.map +1 -0
  314. package/dist/upload/FileChip.js +27 -0
  315. package/dist/upload/FileChip.js.map +1 -0
  316. package/dist/upload/FileDropzone.js +19 -84
  317. package/dist/upload/FileDropzone.js.map +1 -1
  318. package/dist/upload/FileInput.js +112 -0
  319. package/dist/upload/FileInput.js.map +1 -0
  320. package/dist/upload/FileUploadInput.js +285 -0
  321. package/dist/upload/FileUploadInput.js.map +1 -0
  322. package/dist/upload/ImageInput.js +125 -0
  323. package/dist/upload/ImageInput.js.map +1 -0
  324. package/dist/upload/TemplateDownloadButton.js +67 -0
  325. package/dist/upload/TemplateDownloadButton.js.map +1 -0
  326. package/dist/upload/fileAppearance.js +21 -0
  327. package/dist/upload/fileAppearance.js.map +1 -0
  328. package/dist/upload/fileRules.js +27 -1
  329. package/dist/upload/fileRules.js.map +1 -1
  330. package/dist/upload/transferProgress.js +23 -0
  331. package/dist/upload/transferProgress.js.map +1 -0
  332. package/dist/upload/uploadMachine.js +8 -8
  333. package/dist/upload/uploadMachine.js.map +1 -1
  334. package/dist/upload/uploadWithProgress.js +1 -1
  335. package/dist/upload/uploadWithProgress.js.map +1 -1
  336. package/dist/upload/useFilePicker.js +101 -0
  337. package/dist/upload/useFilePicker.js.map +1 -0
  338. package/package.json +44 -1
package/dist/index.js CHANGED
@@ -32,7 +32,7 @@ import { AuthLayout } from "./appShell/AuthLayout.js";
32
32
  import { default as default11 } from "./appShell/BarActions.js";
33
33
  import { default as default12 } from "./appShell/BarActionButton.js";
34
34
  import { default as default13 } from "./appShell/BarSearch.js";
35
- import { default as default14 } from "./ui/actions/ActionsMenu.js";
35
+ import { ACTIONS_MENU_ROW, default as default14 } from "./ui/actions/ActionsMenu.js";
36
36
  import { SELECTION_PHONE_LAYOUT, default as default15, selectionFloatsOnPhone } from "./ui/actions/SelectionActions.js";
37
37
  import { BAR_ACTIONS_PLACEMENT, useBarActionsPlacement, useCloseBarActionsMenu } from "./appShell/barActionsSlot.js";
38
38
  import { BAR_CAPSULE_HEIGHT_PIXELS, default as default16 } from "./appShell/BarCapsule.js";
@@ -54,54 +54,86 @@ import { composePermissionGroups, groupStateOf, withPermission, withPermissionGr
54
54
  import { DEFAULT_PASSWORD_POLICY, PASSWORD_RULE, isPasswordAccepted, passwordChecksOf } from "./auth/passwordRules.js";
55
55
  import { default as default21 } from "./auth/PasswordChecklist.js";
56
56
  import { ERROR_PAGE_KIND, default as default22 } from "./ui/layout/ErrorPage.js";
57
- import { default as default23 } from "./upload/FileDropzone.js";
58
- import { FILE_ACCEPT_PRESETS, FILE_REJECTION, matchesAccept, parseFileSize, resolveAccept } from "./upload/fileRules.js";
57
+ import { default as default23 } from "./upload/AttachmentsInput.js";
58
+ import { default as default24 } from "./upload/FileDropzone.js";
59
+ import { default as default25 } from "./upload/FileInput.js";
60
+ import { FILE_UPLOAD_STATUS, default as default26 } from "./upload/FileUploadInput.js";
61
+ import { IMAGE_SHAPE, default as default27 } from "./upload/ImageInput.js";
62
+ import { default as default28 } from "./upload/TemplateDownloadButton.js";
63
+ import { fileAppearanceOf } from "./upload/fileAppearance.js";
64
+ import { FILE_ACCEPT_PRESETS, FILE_REJECTION, matchesAccept, parseFileSize, resolveAccept, screenFiles } from "./upload/fileRules.js";
65
+ import { transferProgressOf } from "./upload/transferProgress.js";
66
+ import { useFilePicker } from "./upload/useFilePicker.js";
59
67
  import { buildUploadActors, uploadMachine } from "./upload/uploadMachine.js";
60
68
  import { uploadWithProgress } from "./upload/uploadWithProgress.js";
61
69
  import { APP_BAR_HEIGHT_CSS_VARIABLE, SCROLL_MARGIN_BELOW_APP_BAR, useAppBarHeightPublisher } from "./ui/layout/appBarHeight.js";
62
- import { default as default24 } from "./ui/layout/CollapsibleSection.js";
63
- import { default as default25 } from "./ui/layout/ContentDialog.js";
64
- import { default as default26 } from "./ui/layout/DefinitionList.js";
65
- import { default as default27 } from "./ui/layout/DetailHeader.js";
66
- import { default as default28 } from "./ui/layout/FullPageLoader.js";
67
- import { default as default29 } from "./ui/layout/GlassLensFilter.js";
68
- import { default as default30 } from "./ui/layout/GlassPanel.js";
69
- import { default as default31 } from "./ui/layout/PageHeader.js";
70
- import { default as default32 } from "./ui/layout/PageHeading.js";
71
- import { default as default33 } from "./ui/layout/ProfileHeader.js";
72
- import { default as default34, scrollableRow } from "./ui/layout/ScrollableRow.js";
73
- import { default as default35 } from "./ui/layout/SectionCard.js";
74
- import { default as default36 } from "./ui/navigation/BackButton.js";
75
- import { default as default37 } from "./ui/navigation/ColorSchemeToggle.js";
76
- import { default as default38 } from "./ui/navigation/DocumentTitle.js";
77
- import { LANGUAGES, default as default39 } from "./ui/navigation/LanguageToggle.js";
78
- import { default as default40 } from "./ui/navigation/FontSizeToggle.js";
70
+ import { default as default29 } from "./ui/layout/CollapsibleSection.js";
71
+ import { default as default30 } from "./ui/layout/ContentDialog.js";
72
+ import { default as default31 } from "./ui/layout/DefinitionList.js";
73
+ import { default as default32 } from "./ui/layout/DetailHeader.js";
74
+ import { default as default33 } from "./ui/layout/FullPageLoader.js";
75
+ import { default as default34 } from "./ui/layout/GlassLensFilter.js";
76
+ import { default as default35 } from "./ui/layout/GlassPanel.js";
77
+ import { default as default36 } from "./ui/layout/PageHeader.js";
78
+ import { default as default37 } from "./ui/layout/PageHeading.js";
79
+ import { default as default38 } from "./ui/layout/ProfileHeader.js";
80
+ import { default as default39, scrollableRow } from "./ui/layout/ScrollableRow.js";
81
+ import { default as default40 } from "./ui/layout/SectionCard.js";
82
+ import { default as default41 } from "./ui/navigation/BackButton.js";
83
+ import { default as default42 } from "./ui/navigation/ColorSchemeToggle.js";
84
+ import { default as default43 } from "./ui/navigation/DocumentTitle.js";
85
+ import { LANGUAGES, default as default44 } from "./ui/navigation/LanguageToggle.js";
86
+ import { default as default45 } from "./ui/navigation/FontSizeToggle.js";
79
87
  import { FONT_SIZE_LEVELS } from "./ui/navigation/fontSizeLevels.js";
80
- import { default as default41 } from "./ui/navigation/PageBreadcrumbs.js";
81
- import { default as default42 } from "./ui/filters/DateRangeFilter.js";
82
- import { default as default43 } from "./ui/filters/PeriodRangeSelector.js";
83
- import { default as default44 } from "./ui/filters/QuickFilters.js";
84
- import { SEGMENTED_CONTROL_SX, default as default45 } from "./ui/filters/SegmentedControl.js";
85
- import { default as default46 } from "./ui/labels/DictionaryText.js";
86
- import { default as default47 } from "./ui/labels/StatusChip.js";
87
- import { default as default48 } from "./ui/labels/Tag.js";
88
- import { default as default49 } from "./ui/actions/CopyButton.js";
89
- import { default as default50 } from "./ui/actions/DownloadMenu.js";
90
- import { default as default51 } from "./ui/actions/SecretField.js";
91
- import { default as default52 } from "./ui/metrics/CalendarHeatmap.js";
92
- import { default as default53, TREND_DIRECTION } from "./ui/metrics/MetricCard.js";
93
- import { CHART_VIEW, default as default54 } from "./ui/metrics/TableToggle.js";
94
- import { default as default55 } from "./inputs/CatalogInput.js";
95
- import { default as default56 } from "./inputs/ColorInput.js";
96
- import { default as default57 } from "./inputs/FieldFrame.js";
97
- import { FORM_ROW_CLASS, FormRow, default as default58 } from "./inputs/FormSection.js";
98
- import { default as default59 } from "./inputs/NumberInput.js";
99
- import { default as default60 } from "./inputs/SelectInput.js";
100
- import { default as default61 } from "./inputs/WizardLayout.js";
101
- import { default as default62 } from "./inputs/TextInput.js";
88
+ import { default as default46 } from "./ui/navigation/PageBreadcrumbs.js";
89
+ import { ROUTE_TABS_MODE, default as default47, useActiveRouteTab } from "./ui/navigation/RouteTabs.js";
90
+ import { default as default48 } from "./ui/help/HelpButton.js";
91
+ import { HELP_CLOSE_REASON, default as default49 } from "./ui/help/HelpCarouselDialog.js";
92
+ import { default as default50 } from "./ui/cards/RecordCard.js";
93
+ import { default as default51 } from "./ui/cards/RecordCardSkeleton.js";
94
+ import { useHelpCarousel } from "./ui/help/useHelpCarousel.js";
95
+ import { default as default52 } from "./ui/filters/DateRangeFilter.js";
96
+ import { FILTER_DRAWER_ANCHOR, default as default53 } from "./ui/filters/FilterDrawer.js";
97
+ import { COMPARISON_OPERATOR, FILTER_FIELD_KIND, activeDrawerFilterCountOf, comparisonOf, comparisonTextOf, filterDrawerChipsOf, filterDrawerDefaultsOf, filterDrawerKindsOf, filterKeysOf } from "./ui/filters/filterDrawerFields.js";
98
+ import { default as default54 } from "./ui/filters/PeriodRangeSelector.js";
99
+ import { default as default55 } from "./ui/filters/QuickFilters.js";
100
+ import { SEGMENTED_CONTROL_SX, default as default56 } from "./ui/filters/SegmentedControl.js";
101
+ import { default as default57 } from "./ui/labels/DictionaryText.js";
102
+ import { default as default58 } from "./ui/labels/StatusChip.js";
103
+ import { ICON_BADGE_CLASSES, ICON_BADGE_VARIANT, default as default59 } from "./ui/labels/IconBadge.js";
104
+ import { default as default60 } from "./ui/labels/Tag.js";
105
+ import { default as default61 } from "./ui/actions/CopyButton.js";
106
+ import { tableRowTextOf } from "./ui/actions/tableRowText.js";
107
+ import { default as default62 } from "./ui/actions/DownloadMenu.js";
108
+ import { default as default63 } from "./ui/actions/SecretField.js";
109
+ import { default as default64 } from "./ui/metrics/CalendarHeatmap.js";
110
+ import { default as default65, TREND_DIRECTION } from "./ui/metrics/MetricCard.js";
111
+ import { CHART_VIEW, default as default66 } from "./ui/metrics/TableToggle.js";
112
+ import { default as default67 } from "./inputs/CatalogInput.js";
113
+ import { default as default68 } from "./inputs/ColorInput.js";
114
+ import { default as default69 } from "./inputs/FieldFrame.js";
115
+ import { default as default70 } from "./inputs/MaskedInput.js";
116
+ import { INPUT_MASK, isMaskComplete, maskPatternOf, maskedTextOf, rawValueOf } from "./inputs/inputMasks.js";
117
+ import { FORM_ROW_CLASS, FormRow, default as default71 } from "./inputs/FormSection.js";
118
+ import { default as default72 } from "./inputs/CheckboxGroupInput.js";
119
+ import { default as default73 } from "./inputs/NumberInput.js";
120
+ import { default as default74 } from "./inputs/TransferListInput.js";
121
+ import { selectAllStateOf } from "./inputs/selectAllState.js";
122
+ import { default as default75 } from "./inputs/RepeatingFields.js";
123
+ import { useRowKeys } from "./inputs/useRowKeys.js";
124
+ import { default as default76 } from "./inputs/SelectInput.js";
125
+ import { default as default77 } from "./inputs/WizardLayout.js";
126
+ import { default as default78 } from "./inputs/TextInput.js";
102
127
  import { HEX_COLOR, MIN_CONTRAST, contrastOnWhite, readableVariantOf } from "./inputs/colorContrast.js";
103
128
  import { cleanNumberText, completeDecimals, groupThousands } from "./inputs/numberText.js";
104
129
  import { translateValidationMessage } from "./forms/validationMessages.js";
130
+ import { default as default79 } from "./ui/countdown/Countdown.js";
131
+ import { countdownClockOf, countdownPartsOf } from "./ui/countdown/countdownParts.js";
132
+ import { useCountdown } from "./ui/countdown/useCountdown.js";
133
+ import { default as default80 } from "./ui/documents/PdfViewerDialog.js";
134
+ import { default as default81 } from "./legal/CookieNotice.js";
135
+ import { default as default82 } from "./legal/TermsAcceptanceDialog.js";
136
+ import { DEFAULT_COOKIE_CONSENT_KEY, useCookieConsent } from "./legal/useCookieConsent.js";
105
137
  import { dictionaryEntryOf, labelOf, lookup, shortLabelOf } from "./dictionaries/dictionaries.js";
106
138
  import { dayOfPlainDate, formatCurrency, formatDate, formatDateTime, formatFileSize, formatList, formatMonthName, formatMonthShortName, formatNumber, formatPercent, formatTime, formatWeekdayShortName, formattersOf } from "./formatting.js";
107
139
  import { useFormatters } from "./toolkit/useFormatters.js";
@@ -120,49 +152,56 @@ import { usePublishedBuildWatch } from "./observability/usePublishedBuildWatch.j
120
152
  import { API_ERROR_STATUS, ApiError } from "./api/ApiError.js";
121
153
  import { API_RESPONSE_PARSE, apiErrorOf, apiUrlOf, createApiClient } from "./api/createApiClient.js";
122
154
  import { isStaleChunkError, recoverFromStaleChunk } from "./api/staleChunks.js";
123
- import { ACCOUNT_EVENT_KIND, default as default63 } from "./security/ActivityLog.js";
124
- import { default as default64 } from "./security/RecoveryCodesDialog.js";
125
- import { default as default65 } from "./security/SessionsCard.js";
126
- import { default as default66 } from "./inbox/InboxLayout.js";
127
- import { default as default67 } from "./inbox/MessageList.js";
128
- import { default as default68 } from "./inbox/MessageView.js";
155
+ import { ACCOUNT_EVENT_KIND, default as default83 } from "./security/ActivityLog.js";
156
+ import { default as default84 } from "./security/RecoveryCodesDialog.js";
157
+ import { default as default85 } from "./security/SessionsCard.js";
158
+ import { default as default86 } from "./inbox/InboxLayout.js";
159
+ import { default as default87 } from "./inbox/MessageList.js";
160
+ import { default as default88 } from "./inbox/MessageView.js";
129
161
  import { inboxDateOf } from "./inbox/inboxDates.js";
130
162
  import { INSTALL_VARIANT, detectPlatform, parseIOSMajor, resolveInstallVariant } from "./pwa/installInstructions.js";
131
163
  import { useInstallPrompt } from "./pwa/useInstallPrompt.js";
132
- import { default as default69, variantHasInstructions } from "./pwa/InstallInstructionsDialog.js";
133
- import { default as default70 } from "./pwa/InstallPromptBanner.js";
134
- import { default as default71 } from "./pwa/InstallAppSetting.js";
164
+ import { default as default89, variantHasInstructions } from "./pwa/InstallInstructionsDialog.js";
165
+ import { default as default90 } from "./pwa/InstallPromptBanner.js";
166
+ import { default as default91 } from "./pwa/InstallAppSetting.js";
135
167
  export {
136
168
  ACCOUNT_EVENT_KIND,
169
+ ACTIONS_MENU_ROW,
137
170
  API_ERROR_STATUS,
138
171
  API_RESPONSE_PARSE,
139
172
  APP_BAR_HEIGHT_CSS_VARIABLE,
140
173
  default14 as ActionsMenu,
141
- default63 as ActivityLog,
174
+ default83 as ActivityLog,
142
175
  ApiError,
143
176
  AppLayout,
144
177
  default17 as AppearanceSettings,
178
+ default23 as AttachmentsInput,
145
179
  AuthLayout,
146
180
  BAR_ACTIONS_PLACEMENT,
147
181
  BAR_CAPSULE_HEIGHT_PIXELS,
148
182
  BUILD_WATCH_ACTION,
149
- default36 as BackButton,
183
+ default41 as BackButton,
150
184
  default12 as BarActionButton,
151
185
  default11 as BarActions,
152
186
  default16 as BarCapsule,
153
187
  default13 as BarSearch,
154
188
  CHART_VIEW,
189
+ COMPARISON_OPERATOR,
155
190
  CSS_TOKENS,
156
- default52 as CalendarHeatmap,
191
+ default64 as CalendarHeatmap,
157
192
  default18 as Can,
158
- default55 as CatalogInput,
159
- default24 as CollapsibleSection,
160
- default56 as ColorInput,
161
- default37 as ColorSchemeToggle,
193
+ default67 as CatalogInput,
194
+ default72 as CheckboxGroupInput,
195
+ default29 as CollapsibleSection,
196
+ default68 as ColorInput,
197
+ default42 as ColorSchemeToggle,
162
198
  default2 as ComponentTexts,
163
199
  default5 as ConfirmDialog,
164
- default25 as ContentDialog,
165
- default49 as CopyButton,
200
+ default30 as ContentDialog,
201
+ default81 as CookieNotice,
202
+ default61 as CopyButton,
203
+ default79 as Countdown,
204
+ DEFAULT_COOKIE_CONSENT_KEY,
166
205
  DEFAULT_CURRENCY,
167
206
  DEFAULT_FILE_TYPES,
168
207
  DEFAULT_HOUR_CYCLE,
@@ -173,93 +212,119 @@ export {
173
212
  DOWNLOAD_STATUS,
174
213
  DRAWER_WIDTH_COLLAPSED,
175
214
  DRAWER_WIDTH_EXPANDED,
176
- default42 as DateRangeFilter,
177
- default26 as DefinitionList,
178
- default27 as DetailHeader,
179
- default46 as DictionaryText,
180
- default38 as DocumentTitle,
215
+ default52 as DateRangeFilter,
216
+ default31 as DefinitionList,
217
+ default32 as DetailHeader,
218
+ default57 as DictionaryText,
219
+ default43 as DocumentTitle,
181
220
  default10 as DownloadManager,
182
- default50 as DownloadMenu,
221
+ default62 as DownloadMenu,
183
222
  ERROR_PAGE_KIND,
184
223
  default22 as ErrorPage,
185
224
  FIELD_TONES,
186
225
  FILE_ACCEPT_PRESETS,
187
226
  FILE_REJECTION,
227
+ FILE_UPLOAD_STATUS,
228
+ FILTER_DRAWER_ANCHOR,
229
+ FILTER_FIELD_KIND,
188
230
  FONT_SIZE_LEVELS,
189
231
  FORM_ROW_CLASS,
190
- default57 as FieldFrame,
191
- default23 as FileDropzone,
192
- default40 as FontSizeToggle,
232
+ default69 as FieldFrame,
233
+ default24 as FileDropzone,
234
+ default25 as FileInput,
235
+ default26 as FileUploadInput,
236
+ default53 as FilterDrawer,
237
+ default45 as FontSizeToggle,
193
238
  FormRow,
194
- default58 as FormSection,
195
- default28 as FullPageLoader,
239
+ default71 as FormSection,
240
+ default33 as FullPageLoader,
196
241
  GLASS_INSET_PIXELS,
197
242
  GLASS_MENU_RADIUS_PIXELS,
198
243
  GLASS_OPACITY,
199
244
  GLASS_PANEL_RADIUS_PIXELS,
200
- default29 as GlassLensFilter,
201
- default30 as GlassPanel,
245
+ default34 as GlassLensFilter,
246
+ default35 as GlassPanel,
247
+ HELP_CLOSE_REASON,
202
248
  HEX_COLOR,
203
249
  HOUR_CYCLE,
250
+ default48 as HelpButton,
251
+ default49 as HelpCarouselDialog,
252
+ ICON_BADGE_CLASSES,
253
+ ICON_BADGE_VARIANT,
254
+ IMAGE_SHAPE,
255
+ INPUT_MASK,
204
256
  INSTALL_VARIANT,
205
- default66 as InboxLayout,
206
- default71 as InstallAppSetting,
207
- default69 as InstallInstructionsDialog,
208
- default70 as InstallPromptBanner,
257
+ default59 as IconBadge,
258
+ default27 as ImageInput,
259
+ default86 as InboxLayout,
260
+ default91 as InstallAppSetting,
261
+ default89 as InstallInstructionsDialog,
262
+ default90 as InstallPromptBanner,
209
263
  LANGUAGES,
210
- default39 as LanguageToggle,
264
+ default44 as LanguageToggle,
211
265
  MAIN_CONTENT_ID,
212
266
  MENU_POSITION,
213
267
  MINIMAL_BACKGROUND,
214
268
  MINIMAL_TONES,
215
269
  MIN_CONTRAST,
216
- default67 as MessageList,
217
- default68 as MessageView,
218
- default53 as MetricCard,
270
+ default70 as MaskedInput,
271
+ default87 as MessageList,
272
+ default88 as MessageView,
273
+ default65 as MetricCard,
219
274
  default6 as ModalWaiting,
220
275
  NEW_BUILD_NOTICE_VARIANT,
221
276
  default7 as NewBuildNotice,
222
- default59 as NumberInput,
277
+ default73 as NumberInput,
223
278
  PASSWORD_RULE,
224
279
  PHONE_MEDIA_QUERY,
225
- default41 as PageBreadcrumbs,
226
- default31 as PageHeader,
227
- default32 as PageHeading,
280
+ default46 as PageBreadcrumbs,
281
+ default36 as PageHeader,
282
+ default37 as PageHeading,
228
283
  default21 as PasswordChecklist,
229
- default43 as PeriodRangeSelector,
284
+ default80 as PdfViewerDialog,
285
+ default54 as PeriodRangeSelector,
230
286
  default20 as PermissionMatrix,
231
- default33 as ProfileHeader,
232
- default44 as QuickFilters,
287
+ default38 as ProfileHeader,
288
+ default55 as QuickFilters,
233
289
  REDIRECT_PARAM,
234
- default64 as RecoveryCodesDialog,
290
+ ROUTE_TABS_MODE,
291
+ default50 as RecordCard,
292
+ default51 as RecordCardSkeleton,
293
+ default84 as RecoveryCodesDialog,
294
+ default75 as RepeatingFields,
235
295
  default19 as RequireAccess,
296
+ default47 as RouteTabs,
236
297
  SCROLL_MARGIN_BELOW_APP_BAR,
237
298
  SEGMENTED_CONTROL_SX,
238
299
  SELECTION_PHONE_LAYOUT,
239
300
  STACKCRAFT,
240
- default34 as ScrollableRow,
241
- default51 as SecretField,
242
- default35 as SectionCard,
243
- default45 as SegmentedControl,
244
- default60 as SelectInput,
301
+ default39 as ScrollableRow,
302
+ default63 as SecretField,
303
+ default40 as SectionCard,
304
+ default56 as SegmentedControl,
305
+ default76 as SelectInput,
245
306
  default15 as SelectionActions,
246
- default65 as SessionsCard,
307
+ default85 as SessionsCard,
247
308
  SettingSection,
248
309
  default8 as StaleBuildBoundary,
249
- default47 as StatusChip,
310
+ default58 as StatusChip,
250
311
  THEME_LOOK,
251
312
  TOAST_DEFAULT_OPTIONS,
252
313
  TOP_BAR,
253
314
  TREND_DIRECTION,
254
- default54 as TableToggle,
255
- default48 as Tag,
256
- default62 as TextInput,
315
+ default66 as TableToggle,
316
+ default60 as Tag,
317
+ default28 as TemplateDownloadButton,
318
+ default82 as TermsAcceptanceDialog,
319
+ default78 as TextInput,
257
320
  default9 as Toaster,
258
321
  ToolkitProvider,
322
+ default74 as TransferListInput,
259
323
  UNKNOWN_FILE_TYPE,
260
- default61 as WizardLayout,
324
+ default77 as WizardLayout,
261
325
  XLSX_CONTENT_TYPE,
262
326
  accentTextStylesOf,
327
+ activeDrawerFilterCountOf,
263
328
  activeMenuItemOf,
264
329
  addLogSink,
265
330
  allowOnlyUnrestricted,
@@ -274,12 +339,16 @@ export {
274
339
  canvasFieldStylesOf,
275
340
  cleanNumberText,
276
341
  clearFinishedDownloads,
342
+ comparisonOf,
343
+ comparisonTextOf,
277
344
  completeDecimals,
278
345
  composeMenu,
279
346
  composePermissionGroups,
280
347
  configureToolkit,
281
348
  confirmActionMachine,
282
349
  contrastOnWhite,
350
+ countdownClockOf,
351
+ countdownPartsOf,
283
352
  createAccessChecker,
284
353
  createApiClient,
285
354
  createBrowserNavigation,
@@ -298,7 +367,12 @@ export {
298
367
  fieldErrorsOf,
299
368
  fieldPaletteOf,
300
369
  fieldWellStylesOf,
370
+ fileAppearanceOf,
301
371
  fileNameFromContentDisposition,
372
+ filterDrawerChipsOf,
373
+ filterDrawerDefaultsOf,
374
+ filterDrawerKindsOf,
375
+ filterKeysOf,
302
376
  fixedBackgroundLayerOf,
303
377
  forgetPageName,
304
378
  formatCurrency,
@@ -323,11 +397,14 @@ export {
323
397
  isAndroidDevice,
324
398
  isCompleteZip,
325
399
  isGlassTheme,
400
+ isMaskComplete,
326
401
  isNewBuildPublished,
327
402
  isPasswordAccepted,
328
403
  isStaleChunkError,
329
404
  labelOf,
330
405
  lookup,
406
+ maskPatternOf,
407
+ maskedTextOf,
331
408
  matchesAccept,
332
409
  materialBackgroundOf,
333
410
  materialStylesOf,
@@ -356,6 +433,7 @@ export {
356
433
  publishedBuildIdOf,
357
434
  rangeEndAfterStartChange,
358
435
  rangeEndOptionsOf,
436
+ rawValueOf,
359
437
  readRedirectParam,
360
438
  readableVariantOf,
361
439
  recallListUrl,
@@ -367,15 +445,18 @@ export {
367
445
  resolveInstallVariant,
368
446
  safeInternalPath,
369
447
  saveBlob,
448
+ screenFiles,
370
449
  screenMenuItemsOf,
371
450
  scrollEdgeStylesOf,
372
451
  scrollableRow,
452
+ selectAllStateOf,
373
453
  selectionFloatsOnPhone,
374
454
  setLogLevel,
375
455
  shortLabelOf,
376
456
  stackcraftDarkPalette,
377
457
  stackcraftLightPalette,
378
458
  startDownload,
459
+ tableRowTextOf,
379
460
  toastDefault,
380
461
  toastError,
381
462
  toastInfo,
@@ -388,19 +469,25 @@ export {
388
469
  toolkitSettings,
389
470
  default4 as toolkitTextsEn,
390
471
  default3 as toolkitTextsEs,
472
+ transferProgressOf,
391
473
  translateToolkit,
392
474
  translateValidationMessage,
393
475
  uploadMachine,
394
476
  uploadWithProgress,
395
477
  useAccessChecker,
478
+ useActiveRouteTab,
396
479
  useAppBarHeightPublisher,
397
480
  useAppMenu,
398
481
  useBarActionsPlacement,
399
482
  useCan,
400
483
  useCloseBarActionsMenu,
401
484
  useConfirmAction,
485
+ useCookieConsent,
486
+ useCountdown,
487
+ useFilePicker,
402
488
  useFileTypes,
403
489
  useFormatters,
490
+ useHelpCarousel,
404
491
  useInstallPrompt,
405
492
  useMenuBadges,
406
493
  useNavigationTrail,
@@ -409,6 +496,7 @@ export {
409
496
  usePageTitle,
410
497
  usePublishedBuildWatch,
411
498
  useRememberListUrl,
499
+ useRowKeys,
412
500
  useToolkitNavigation,
413
501
  useToolkitSettings,
414
502
  useToolkitTranslation,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,13 +1,16 @@
1
1
  "use client";
2
- import { jsx } from "react/jsx-runtime";
3
- import { useId } from "react";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { useId, useState } from "react";
4
4
  import { useToolkitTranslation } from "../toolkit/useToolkitTranslation.js";
5
5
  import Autocomplete from "@mui/material/Autocomplete";
6
+ import Checkbox from "@mui/material/Checkbox";
6
7
  import TextField from "@mui/material/TextField";
7
8
  import { translateValidationMessage } from "../forms/validationMessages.js";
8
9
  import FieldFrame from "./FieldFrame.js";
10
+ import { selectAllStateOf } from "./selectAllState.js";
9
11
  import { warnUnknownProps } from "../toolkit/unknownProps.js";
10
12
  const MAX_VISIBLE_OPTIONS = 100;
13
+ const SELECT_ALL_CODE = "__calcita_select_all__";
11
14
  function plainTextOf(text) {
12
15
  return String(text ?? "").normalize("NFD").replace(new RegExp("\\p{Diacritic}", "gu"), "").toLowerCase();
13
16
  }
@@ -26,6 +29,9 @@ function CatalogInput({
26
29
  inputRef,
27
30
  placeholder,
28
31
  multiple = false,
32
+ selectAll = false,
33
+ checkboxes = false,
34
+ limitTags,
29
35
  texts,
30
36
  ...unknownProps
31
37
  }) {
@@ -36,6 +42,21 @@ function CatalogInput({
36
42
  const errorText = translateValidationMessage(t, error);
37
43
  const selectedOption = multiple ? (Array.isArray(value) ? value : []).map((code) => options.find((option) => option.code === code)).filter(Boolean) : options.find((option) => option.code === value) ?? null;
38
44
  const optionLabelOf = (option) => formatLabel ? formatLabel(option) : `${option.label} (${option.code})`;
45
+ const [searchText, setSearchText] = useState("");
46
+ const matchesSearch = (option, text) => {
47
+ const wantedText = plainTextOf(text);
48
+ return !wantedText || plainTextOf(optionLabelOf(option)).includes(wantedText);
49
+ };
50
+ const selectedCodes = multiple && Array.isArray(value) ? value : [];
51
+ const matchingCodes = options.filter((option) => matchesSearch(option, searchText)).map((option) => option.code);
52
+ const selectAllState = selectAllStateOf(selectedCodes, matchingCodes);
53
+ const selectAllLabel = (() => {
54
+ if (searchText.trim()) {
55
+ return selectAllState.allChosen ? t("form.unselectMatching", { count: matchingCodes.length }) : t("form.selectMatching", { count: matchingCodes.length });
56
+ }
57
+ return selectAllState.allChosen ? t("form.unselectAll") : t("form.selectAll", { count: matchingCodes.length });
58
+ })();
59
+ const showsSelectAll = multiple && selectAll;
39
60
  return /* @__PURE__ */ jsx(FieldFrame, { inputId, label, children: /* @__PURE__ */ jsx(
40
61
  Autocomplete,
41
62
  {
@@ -50,14 +71,60 @@ function CatalogInput({
50
71
  disabled,
51
72
  noOptionsText: t("form.noOptions"),
52
73
  loadingText: t("form.loadingOptions"),
53
- getOptionLabel: optionLabelOf,
74
+ getOptionLabel: (option) => option.code === SELECT_ALL_CODE ? selectAllLabel : optionLabelOf(option),
54
75
  isOptionEqualToValue: (option, currentOption) => option.code === currentOption.code,
55
76
  filterOptions: (allOptions, { inputValue }) => {
56
- const wantedText = plainTextOf(inputValue);
57
- const matchingOptions = wantedText ? allOptions.filter((option) => plainTextOf(optionLabelOf(option)).includes(wantedText)) : allOptions;
58
- return matchingOptions.slice(0, MAX_VISIBLE_OPTIONS);
77
+ const matchingOptions = allOptions.filter((option) => matchesSearch(option, inputValue)).slice(0, MAX_VISIBLE_OPTIONS);
78
+ return showsSelectAll && matchingOptions.length > 0 ? [{ code: SELECT_ALL_CODE, label: selectAllLabel }, ...matchingOptions] : matchingOptions;
79
+ },
80
+ inputValue: showsSelectAll ? searchText : void 0,
81
+ onInputChange: (event, text, reason) => {
82
+ const isResetByChoosing = ["selectOption", "removeOption", "reset"].includes(reason) && event?.type !== "blur";
83
+ if (!(showsSelectAll && isResetByChoosing)) {
84
+ setSearchText(text);
85
+ }
86
+ },
87
+ onChange: (event, option, reason, details) => {
88
+ if (!multiple) {
89
+ onChange(option?.code ?? "");
90
+ return;
91
+ }
92
+ if (details?.option?.code === SELECT_ALL_CODE) {
93
+ onChange(selectAllState.toggled());
94
+ return;
95
+ }
96
+ onChange(option.filter((chosenOption) => chosenOption.code !== SELECT_ALL_CODE).map((chosenOption) => chosenOption.code));
59
97
  },
60
- onChange: (event, option) => onChange(multiple ? option.map((chosenOption) => chosenOption.code) : option?.code ?? ""),
98
+ limitTags: multiple ? limitTags : void 0,
99
+ getLimitTagsText: (hiddenCount) => t("form.moreSelected", { count: hiddenCount }),
100
+ renderOption: multiple && (checkboxes || selectAll) ? (optionProps, option, { selected }) => {
101
+ const { key, ...liProps } = optionProps;
102
+ const isSelectAll = option.code === SELECT_ALL_CODE;
103
+ const showsBox = checkboxes || isSelectAll;
104
+ return /* @__PURE__ */ jsxs(
105
+ "li",
106
+ {
107
+ ...liProps,
108
+ ...isSelectAll && { "aria-selected": selectAllState.allChosen },
109
+ style: isSelectAll ? { fontWeight: 600 } : void 0,
110
+ children: [
111
+ showsBox && /* @__PURE__ */ jsx(
112
+ Checkbox,
113
+ {
114
+ size: "small",
115
+ tabIndex: -1,
116
+ disableRipple: true,
117
+ sx: { p: 0, mr: 1 },
118
+ checked: isSelectAll ? selectAllState.allChosen : selected,
119
+ indeterminate: isSelectAll && selectAllState.someChosen
120
+ }
121
+ ),
122
+ isSelectAll ? selectAllLabel : optionLabelOf(option)
123
+ ]
124
+ },
125
+ key
126
+ );
127
+ } : void 0,
61
128
  onBlur,
62
129
  renderInput: (inputProps) => /* @__PURE__ */ jsx(TextField, { ...inputProps, name, inputRef, placeholder, error: Boolean(errorText), helperText: errorText ?? helperText })
63
130
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CatalogInput.js","sources":["../../src/inputs/CatalogInput.jsx"],"sourcesContent":["// Campo suelto que elige una clave de un catálogo ([{code, label}]): actividad económica, giro, país, banco… Se busca por la\n// clave o por el texto, sin acentos ni mayúsculas, y al formulario llega solo la clave. Con `multiple` elige varias: cada una\n// queda como chip con su ×, la lista no se cierra al elegir y al formulario llega la lista de claves en el orden elegido.\n//\n// Por qué no un <select>: con catálogos de cientos de opciones no se puede usar; y con texto libre la gente inventa claves.\n// Se enseñan a lo más MAX_VISIBLE_OPTIONS coincidencias: con miles, la lista completa congela la pantalla.\n//\n// Genérico del paquete: function (regla de la casa).\nimport {useId} from 'react';\nimport {useToolkitTranslation} from '@/toolkit/useToolkitTranslation.js';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport TextField from '@mui/material/TextField';\n\nimport {translateValidationMessage} from '@/forms/validationMessages.js';\nimport FieldFrame from '@/inputs/FieldFrame.jsx';\nimport {warnUnknownProps} from '@/toolkit/unknownProps.js';\n\nconst MAX_VISIBLE_OPTIONS = 100;\n\n/**\n * Un texto sin acentos ni mayúsculas, para que «credito» encuentre «Crédito».\n *\n * @param {unknown} text\n * @returns {string}\n */\nfunction plainTextOf(text) {\n return String(text ?? '').normalize('NFD').replace(/\\p{Diacritic}/gu, '').toLowerCase();\n}\n\n/**\n * @param {object} props\n * @param {string} [props.name]\n * @param {string} props.label ya traducido\n * @param {string|string[]|null|undefined} props.value la clave elegida ('' = ninguna); con multiple, la lista ([] = ninguna)\n * @param {(code: any) => void} props.onChange recibe la clave ('' al borrar); con multiple, la lista de claves\n * @param {() => void} [props.onBlur]\n * @param {Array<{code: string, label: string}>} props.options\n * @param {(option: {code: string, label: string}) => string} [props.formatLabel] por omisión «Nombre (clave)»\n * @param {string|{key: string, values?: object}} [props.error]\n * @param {string} [props.helperText]\n * @param {boolean} [props.loading] el catálogo todavía no llega\n * @param {string} [props.placeholder] la pista con el campo vacío, ya traducida (p. ej. «Busque un estado»): sin ella, en un\n * formulario agrupado el campo vacío solo enseña su botón y no se entiende qué es\n * @param {boolean} [props.disabled]\n * @param {import('react').Ref<HTMLInputElement>} [props.inputRef]\n * @param {boolean} [props.multiple] elegir varias claves\n * @param {object} [props.texts] los textos que cambian, con la forma de `common` en los textos del paquete\n */\nexport default function CatalogInput({\n name, label, value, onChange, onBlur, options = [], formatLabel, error, helperText = ' ', loading = false, disabled = false, inputRef, placeholder,\n multiple = false, texts,\n ...unknownProps\n}) {\n warnUnknownProps('CatalogInput', unknownProps);\n const {t} = useToolkitTranslation('common', texts);\n const generatedId = useId();\n const inputId = `${name ?? 'catalog'}-${generatedId}`;\n const errorText = translateValidationMessage(t, error);\n // con varias, en el orden en que se eligieron (el de la lista de claves)\n const selectedOption = multiple\n ? (Array.isArray(value) ? value : []).map((code) => options.find((option) => option.code === code)).filter(Boolean)\n : options.find((option) => option.code === value) ?? null;\n const optionLabelOf = (option) => (formatLabel ? formatLabel(option) : `${option.label} (${option.code})`);\n\n return (\n <FieldFrame inputId={inputId} label={label}>\n <Autocomplete\n id={inputId}\n multiple={multiple}\n disableCloseOnSelect={multiple}\n fullWidth\n size=\"small\"\n options={options}\n value={selectedOption}\n loading={loading}\n disabled={disabled}\n noOptionsText={t('form.noOptions')}\n loadingText={t('form.loadingOptions')}\n getOptionLabel={optionLabelOf}\n isOptionEqualToValue={(option, currentOption) => option.code === currentOption.code}\n filterOptions={(allOptions, {inputValue}) => {\n const wantedText = plainTextOf(inputValue);\n const matchingOptions = wantedText\n ? allOptions.filter((option) => plainTextOf(optionLabelOf(option)).includes(wantedText))\n : allOptions;\n return matchingOptions.slice(0, MAX_VISIBLE_OPTIONS);\n }}\n onChange={(event, option) => onChange(multiple ? option.map((chosenOption) => chosenOption.code) : option?.code ?? '')}\n onBlur={onBlur}\n renderInput={(inputProps) => (\n <TextField {...inputProps} name={name} inputRef={inputRef} placeholder={placeholder} error={Boolean(errorText)} helperText={errorText ?? helperText} />\n )}\n />\n </FieldFrame>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;AAiBA,MAAM,sBAAsB;AAQ5B,SAAS,YAAY,MAAM;AACvB,SAAO,OAAO,QAAQ,EAAE,EAAE,UAAU,KAAK,EAAE,QAAQ,WAAA,kBAAA,IAAA,GAAmB,EAAE,EAAE,YAAA;AAC9E;AAqBA,SAAwB,aAAa;AAAA,EACjC;AAAA,EAAM;AAAA,EAAO;AAAA,EAAO;AAAA,EAAU;AAAA,EAAQ,UAAU,CAAA;AAAA,EAAI;AAAA,EAAa;AAAA,EAAO,aAAa;AAAA,EAAK,UAAU;AAAA,EAAO,WAAW;AAAA,EAAO;AAAA,EAAU;AAAA,EACvI,WAAW;AAAA,EAAO;AAAA,EAClB,GAAG;AACP,GAAG;AACC,mBAAiB,gBAAgB,YAAY;AAC7C,QAAM,EAAC,EAAA,IAAK,sBAAsB,UAAU,KAAK;AACjD,QAAM,cAAc,MAAA;AACpB,QAAM,UAAU,GAAG,QAAQ,SAAS,IAAI,WAAW;AACnD,QAAM,YAAY,2BAA2B,GAAG,KAAK;AAErD,QAAM,iBAAiB,YAChB,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAA,GAAI,IAAI,CAAC,SAAS,QAAQ,KAAK,CAAC,WAAW,OAAO,SAAS,IAAI,CAAC,EAAE,OAAO,OAAO,IAChH,QAAQ,KAAK,CAAC,WAAW,OAAO,SAAS,KAAK,KAAK;AACzD,QAAM,gBAAgB,CAAC,WAAY,cAAc,YAAY,MAAM,IAAI,GAAG,OAAO,KAAK,KAAK,OAAO,IAAI;AAEtG,SACI,oBAAC,YAAA,EAAW,SAAkB,OAC1B,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,IAAI;AAAA,MACJ;AAAA,MACA,sBAAsB;AAAA,MACtB,WAAS;AAAA,MACT,MAAK;AAAA,MACL;AAAA,MACA,OAAO;AAAA,MACP;AAAA,MACA;AAAA,MACA,eAAe,EAAE,gBAAgB;AAAA,MACjC,aAAa,EAAE,qBAAqB;AAAA,MACpC,gBAAgB;AAAA,MAChB,sBAAsB,CAAC,QAAQ,kBAAkB,OAAO,SAAS,cAAc;AAAA,MAC/E,eAAe,CAAC,YAAY,EAAC,iBAAgB;AACzC,cAAM,aAAa,YAAY,UAAU;AACzC,cAAM,kBAAkB,aAClB,WAAW,OAAO,CAAC,WAAW,YAAY,cAAc,MAAM,CAAC,EAAE,SAAS,UAAU,CAAC,IACrF;AACN,eAAO,gBAAgB,MAAM,GAAG,mBAAmB;AAAA,MACvD;AAAA,MACA,UAAU,CAAC,OAAO,WAAW,SAAS,WAAW,OAAO,IAAI,CAAC,iBAAiB,aAAa,IAAI,IAAI,QAAQ,QAAQ,EAAE;AAAA,MACrH;AAAA,MACA,aAAa,CAAC,eACV,oBAAC,WAAA,EAAW,GAAG,YAAY,MAAY,UAAoB,aAA0B,OAAO,QAAQ,SAAS,GAAG,YAAY,aAAa,WAAA,CAAY;AAAA,IAAA;AAAA,EAAA,GAGjK;AAER;"}
1
+ {"version":3,"file":"CatalogInput.js","sources":["../../src/inputs/CatalogInput.jsx"],"sourcesContent":["// Campo suelto que elige una clave de un catálogo ([{code, label}]): actividad económica, giro, país, banco… Se busca por la\n// clave o por el texto, sin acentos ni mayúsculas, y al formulario llega solo la clave. Con `multiple` elige varias: cada una\n// queda como chip con su ×, la lista no se cierra al elegir y al formulario llega la lista de claves en el orden elegido.\n// Con varias, además (cada una se pide):\n// selectAll «Elegir todos» arriba de la lista, con su casilla a medias si hay algunos; con algo escrito en el buscador,\n// «Elegir los N que coinciden» (todos los que coinciden, no solo los que se ven)\n// checkboxes una casilla en cada opción (se ve de un vistazo qué está elegido)\n// limitTags cuántos chips se ven con el campo sin foco; los demás, «+3 más»\n//\n// Por qué no un <select>: con catálogos de cientos de opciones no se puede usar; y con texto libre la gente inventa claves.\n// Se enseñan a lo más MAX_VISIBLE_OPTIONS coincidencias: con miles, la lista completa congela la pantalla.\n//\n// Genérico del paquete: function (regla de la casa).\nimport {useId, useState} from 'react';\nimport {useToolkitTranslation} from '@/toolkit/useToolkitTranslation.js';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport Checkbox from '@mui/material/Checkbox';\nimport TextField from '@mui/material/TextField';\n\nimport {translateValidationMessage} from '@/forms/validationMessages.js';\nimport FieldFrame from '@/inputs/FieldFrame.jsx';\nimport {selectAllStateOf} from '@/inputs/selectAllState.js';\nimport {warnUnknownProps} from '@/toolkit/unknownProps.js';\n\nconst MAX_VISIBLE_OPTIONS = 100;\n// la opción de «Elegir todos»: no es del catálogo y nunca llega al formulario\nconst SELECT_ALL_CODE = '__calcita_select_all__';\n\n/**\n * Un texto sin acentos ni mayúsculas, para que «credito» encuentre «Crédito».\n *\n * @param {unknown} text\n * @returns {string}\n */\nfunction plainTextOf(text) {\n return String(text ?? '').normalize('NFD').replace(/\\p{Diacritic}/gu, '').toLowerCase();\n}\n\n/**\n * @param {object} props\n * @param {string} [props.name]\n * @param {string} props.label ya traducido\n * @param {string|string[]|null|undefined} props.value la clave elegida ('' = ninguna); con multiple, la lista ([] = ninguna)\n * @param {(code: any) => void} props.onChange recibe la clave ('' al borrar); con multiple, la lista de claves\n * @param {() => void} [props.onBlur]\n * @param {Array<{code: string, label: string}>} props.options\n * @param {(option: {code: string, label: string}) => string} [props.formatLabel] por omisión «Nombre (clave)»\n * @param {string|{key: string, values?: object}} [props.error]\n * @param {string} [props.helperText]\n * @param {boolean} [props.loading] el catálogo todavía no llega\n * @param {string} [props.placeholder] la pista con el campo vacío, ya traducida (p. ej. «Busque un estado»): sin ella, en un\n * formulario agrupado el campo vacío solo enseña su botón y no se entiende qué es\n * @param {boolean} [props.disabled]\n * @param {import('react').Ref<HTMLInputElement>} [props.inputRef]\n * @param {boolean} [props.multiple] elegir varias claves\n * @param {boolean} [props.selectAll] con multiple: «Elegir todos» (o los que coinciden con lo buscado) arriba de la lista\n * @param {boolean} [props.checkboxes] con multiple: una casilla en cada opción\n * @param {number} [props.limitTags] con multiple: cuántos chips se ven sin foco; los demás como «+3 más»\n * @param {object} [props.texts] los textos que cambian, con la forma de `common` en los textos del paquete\n */\nexport default function CatalogInput({\n name, label, value, onChange, onBlur, options = [], formatLabel, error, helperText = ' ', loading = false, disabled = false, inputRef, placeholder,\n multiple = false, selectAll = false, checkboxes = false, limitTags, texts,\n ...unknownProps\n}) {\n warnUnknownProps('CatalogInput', unknownProps);\n const {t} = useToolkitTranslation('common', texts);\n const generatedId = useId();\n const inputId = `${name ?? 'catalog'}-${generatedId}`;\n const errorText = translateValidationMessage(t, error);\n // con varias, en el orden en que se eligieron (el de la lista de claves)\n const selectedOption = multiple\n ? (Array.isArray(value) ? value : []).map((code) => options.find((option) => option.code === code)).filter(Boolean)\n : options.find((option) => option.code === value) ?? null;\n const optionLabelOf = (option) => (formatLabel ? formatLabel(option) : `${option.label} (${option.code})`);\n // lo escrito en el buscador: «Elegir todos» abarca lo que coincide con eso\n const [searchText, setSearchText] = useState('');\n const matchesSearch = (option, text) => {\n const wantedText = plainTextOf(text);\n return !wantedText || plainTextOf(optionLabelOf(option)).includes(wantedText);\n };\n const selectedCodes = multiple && Array.isArray(value) ? value : [];\n const matchingCodes = options.filter((option) => matchesSearch(option, searchText)).map((option) => option.code);\n const selectAllState = selectAllStateOf(selectedCodes, matchingCodes);\n const selectAllLabel = (() => {\n if (searchText.trim()) {\n return selectAllState.allChosen ? t('form.unselectMatching', {count: matchingCodes.length}) : t('form.selectMatching', {count: matchingCodes.length});\n }\n return selectAllState.allChosen ? t('form.unselectAll') : t('form.selectAll', {count: matchingCodes.length});\n })();\n const showsSelectAll = multiple && selectAll;\n\n return (\n <FieldFrame inputId={inputId} label={label}>\n <Autocomplete\n id={inputId}\n multiple={multiple}\n disableCloseOnSelect={multiple}\n fullWidth\n size=\"small\"\n options={options}\n value={selectedOption}\n loading={loading}\n disabled={disabled}\n noOptionsText={t('form.noOptions')}\n loadingText={t('form.loadingOptions')}\n getOptionLabel={(option) => (option.code === SELECT_ALL_CODE ? selectAllLabel : optionLabelOf(option))}\n isOptionEqualToValue={(option, currentOption) => option.code === currentOption.code}\n filterOptions={(allOptions, {inputValue}) => {\n const matchingOptions = allOptions.filter((option) => matchesSearch(option, inputValue)).slice(0, MAX_VISIBLE_OPTIONS);\n // «Elegir todos» va arriba solo si hay de dónde elegir\n return showsSelectAll && matchingOptions.length > 0 ? [{code: SELECT_ALL_CODE, label: selectAllLabel}, ...matchingOptions] : matchingOptions;\n }}\n // con «Elegir todos», lo buscado se queda al elegir (MUI lo borraba): así se eligen varios de la misma búsqueda.\n // Al salir del campo sí se borra. Sin «Elegir todos», el campo se porta como siempre\n inputValue={showsSelectAll ? searchText : undefined}\n onInputChange={(event, text, reason) => {\n // MUI 7 avisa con qué borra el texto: al elegir o quitar una opción ('selectOption', 'removeOption', 'reset');\n // al salir del campo es 'blur' y ese sí se borra\n const isResetByChoosing = ['selectOption', 'removeOption', 'reset'].includes(reason) && event?.type !== 'blur';\n if (!(showsSelectAll && isResetByChoosing)) {\n setSearchText(text);\n }\n }}\n onChange={(event, option, reason, details) => {\n if (!multiple) {\n onChange(option?.code ?? '');\n return;\n }\n if (details?.option?.code === SELECT_ALL_CODE) {\n onChange(selectAllState.toggled());\n return;\n }\n onChange(option.filter((chosenOption) => chosenOption.code !== SELECT_ALL_CODE).map((chosenOption) => chosenOption.code));\n }}\n limitTags={multiple ? limitTags : undefined}\n getLimitTagsText={(hiddenCount) => t('form.moreSelected', {count: hiddenCount})}\n renderOption={multiple && (checkboxes || selectAll) ? (optionProps, option, {selected}) => {\n // OJO: key va aparte; dentro de las props React avisa en la consola\n const {key, ...liProps} = optionProps;\n const isSelectAll = option.code === SELECT_ALL_CODE;\n const showsBox = checkboxes || isSelectAll;\n return (\n <li key={key} {...liProps} {...(isSelectAll && {'aria-selected': selectAllState.allChosen})}\n style={isSelectAll ? {fontWeight: 600} : undefined}>\n {showsBox && (\n <Checkbox size=\"small\" tabIndex={-1} disableRipple sx={{p: 0, mr: 1}}\n checked={isSelectAll ? selectAllState.allChosen : selected}\n indeterminate={isSelectAll && selectAllState.someChosen} />\n )}\n {isSelectAll ? selectAllLabel : optionLabelOf(option)}\n </li>\n );\n } : undefined}\n onBlur={onBlur}\n renderInput={(inputProps) => (\n <TextField {...inputProps} name={name} inputRef={inputRef} placeholder={placeholder} error={Boolean(errorText)} helperText={errorText ?? helperText} />\n )}\n />\n </FieldFrame>\n );\n}\n"],"names":[],"mappings":"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"}