@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.
- package/README.md +263 -2
- package/cli/packageVersions.js +12 -3
- package/cli/projectFiles.js +5 -2
- package/cli/templates/module/__Name__Page.test.jsx.tpl +24 -0
- package/cli/templates/project/README.md.tpl +14 -1
- package/cli/templates/project/src/app/appRouter.jsx.tpl +5 -2
- package/cli/templates/project/src/core/accountConnector.js.tpl +4 -2
- package/cli/templates/project/src/modules/auth/SignInPage.test.jsx.tpl +20 -0
- package/cli/templates/project/src/modules/home/HomePage.test.jsx.tpl +16 -0
- package/cli/templates/project/src/testing/browserGaps.js.tpl +70 -0
- package/cli/templates/project/src/testing/openScreen.jsx.tpl +58 -0
- package/cli/templates/project/src/testing/setup.js.tpl +25 -0
- package/cli/templates/project/vite.config.js.tpl +12 -0
- package/dist/DataTable/GoToPage.js +69 -13
- package/dist/DataTable/GoToPage.js.map +1 -1
- package/dist/DataTable/ServerTable.js +2 -0
- package/dist/DataTable/ServerTable.js.map +1 -1
- package/dist/DataTable/ServerTableFilterDrawer.js +52 -0
- package/dist/DataTable/ServerTableFilterDrawer.js.map +1 -0
- package/dist/DataTable/filterContext.js.map +1 -1
- package/dist/DataTable/goToPageOptions.js +17 -0
- package/dist/DataTable/goToPageOptions.js.map +1 -0
- package/dist/date-pickers.js +28 -2
- package/dist/date-pickers.js.map +1 -1
- package/dist/datePickers/DateInput.js +15 -34
- package/dist/datePickers/DateInput.js.map +1 -1
- package/dist/datePickers/DateTimeInput.js +75 -0
- package/dist/datePickers/DateTimeInput.js.map +1 -0
- package/dist/datePickers/FormDateTimeField.js +12 -0
- package/dist/datePickers/FormDateTimeField.js.map +1 -0
- package/dist/datePickers/FormMonthField.js +12 -0
- package/dist/datePickers/FormMonthField.js.map +1 -0
- package/dist/datePickers/FormTimeField.js +12 -0
- package/dist/datePickers/FormTimeField.js.map +1 -0
- package/dist/datePickers/MonthInput.js +58 -0
- package/dist/datePickers/MonthInput.js.map +1 -0
- package/dist/datePickers/PickerFrame.js +27 -0
- package/dist/datePickers/PickerFrame.js.map +1 -0
- package/dist/datePickers/TimeInput.js +55 -0
- package/dist/datePickers/TimeInput.js.map +1 -0
- package/dist/datePickers/dateTimeRules.js +24 -0
- package/dist/datePickers/dateTimeRules.js.map +1 -0
- package/dist/datePickers/pickerValues.js +106 -0
- package/dist/datePickers/pickerValues.js.map +1 -0
- package/dist/datePickers/useCurrentMinute.js +28 -0
- package/dist/datePickers/useCurrentMinute.js.map +1 -0
- package/dist/datePickers/usePickerField.js +22 -0
- package/dist/datePickers/usePickerField.js.map +1 -0
- package/dist/dictionaries/dictionaries.js +3 -1
- package/dist/dictionaries/dictionaries.js.map +1 -1
- package/dist/forms/FormAttachmentsField.js +12 -0
- package/dist/forms/FormAttachmentsField.js.map +1 -0
- package/dist/forms/FormCheckboxGroupField.js +12 -0
- package/dist/forms/FormCheckboxGroupField.js.map +1 -0
- package/dist/forms/FormFileField.js +12 -0
- package/dist/forms/FormFileField.js.map +1 -0
- package/dist/forms/FormFileUploadField.js +12 -0
- package/dist/forms/FormFileUploadField.js.map +1 -0
- package/dist/forms/FormImageField.js +12 -0
- package/dist/forms/FormImageField.js.map +1 -0
- package/dist/forms/FormMaskedField.js +12 -0
- package/dist/forms/FormMaskedField.js.map +1 -0
- package/dist/forms/FormRepeatingFields.js +54 -0
- package/dist/forms/FormRepeatingFields.js.map +1 -0
- package/dist/forms/FormTransferListField.js +12 -0
- package/dist/forms/FormTransferListField.js.map +1 -0
- package/dist/forms/applyServerProblem.js +10 -3
- package/dist/forms/applyServerProblem.js.map +1 -1
- package/dist/forms/listRules.js +111 -0
- package/dist/forms/listRules.js.map +1 -0
- package/dist/forms/serverProblemFields.js +17 -0
- package/dist/forms/serverProblemFields.js.map +1 -1
- package/dist/forms.js +51 -29
- package/dist/forms.js.map +1 -1
- package/dist/hookForm/FormAttachmentsField.js +12 -0
- package/dist/hookForm/FormAttachmentsField.js.map +1 -0
- package/dist/hookForm/FormCheckboxGroupField.js +12 -0
- package/dist/hookForm/FormCheckboxGroupField.js.map +1 -0
- package/dist/hookForm/FormFileField.js +12 -0
- package/dist/hookForm/FormFileField.js.map +1 -0
- package/dist/hookForm/FormFileUploadField.js +12 -0
- package/dist/hookForm/FormFileUploadField.js.map +1 -0
- package/dist/hookForm/FormImageField.js +12 -0
- package/dist/hookForm/FormImageField.js.map +1 -0
- package/dist/hookForm/FormMaskedField.js +12 -0
- package/dist/hookForm/FormMaskedField.js.map +1 -0
- package/dist/hookForm/FormRepeatingFields.js +44 -0
- package/dist/hookForm/FormRepeatingFields.js.map +1 -0
- package/dist/hookForm/FormTransferListField.js +12 -0
- package/dist/hookForm/FormTransferListField.js.map +1 -0
- package/dist/hookForm/applyServerProblem.js +8 -3
- package/dist/hookForm/applyServerProblem.js.map +1 -1
- package/dist/index.js +188 -100
- package/dist/index.js.map +1 -1
- package/dist/inputs/CatalogInput.js +74 -7
- package/dist/inputs/CatalogInput.js.map +1 -1
- package/dist/inputs/CheckboxGroupInput.js +100 -0
- package/dist/inputs/CheckboxGroupInput.js.map +1 -0
- package/dist/inputs/MaskedInput.js +86 -0
- package/dist/inputs/MaskedInput.js.map +1 -0
- package/dist/inputs/NumberInput.js +12 -1
- package/dist/inputs/NumberInput.js.map +1 -1
- package/dist/inputs/RepeatingFields.js +177 -0
- package/dist/inputs/RepeatingFields.js.map +1 -0
- package/dist/inputs/SelectInput.js +43 -5
- package/dist/inputs/SelectInput.js.map +1 -1
- package/dist/inputs/TransferListInput.js +215 -0
- package/dist/inputs/TransferListInput.js.map +1 -0
- package/dist/inputs/inputMasks.js +84 -0
- package/dist/inputs/inputMasks.js.map +1 -0
- package/dist/inputs/selectAllState.js +20 -0
- package/dist/inputs/selectAllState.js.map +1 -0
- package/dist/inputs/useRowKeys.js +26 -0
- package/dist/inputs/useRowKeys.js.map +1 -0
- package/dist/legal/CookieNotice.js +79 -0
- package/dist/legal/CookieNotice.js.map +1 -0
- package/dist/legal/TermsAcceptanceDialog.js +129 -0
- package/dist/legal/TermsAcceptanceDialog.js.map +1 -0
- package/dist/legal/consentStorage.js +18 -0
- package/dist/legal/consentStorage.js.map +1 -0
- package/dist/legal/useCookieConsent.js +17 -0
- package/dist/legal/useCookieConsent.js.map +1 -0
- package/dist/locales/en.js +233 -1
- package/dist/locales/en.js.map +1 -1
- package/dist/locales/es.js +233 -1
- package/dist/locales/es.js.map +1 -1
- package/dist/mexico/CfdiSummary.js +81 -0
- package/dist/mexico/CfdiSummary.js.map +1 -0
- package/dist/mexico/EfirmaFields.js +167 -0
- package/dist/mexico/EfirmaFields.js.map +1 -0
- package/dist/mexico/certificateReader.js +79 -0
- package/dist/mexico/certificateReader.js.map +1 -0
- package/dist/mexico/cfdiReader.js +81 -0
- package/dist/mexico/cfdiReader.js.map +1 -0
- package/dist/mexico/derReader.js +81 -0
- package/dist/mexico/derReader.js.map +1 -0
- package/dist/mexico/efirmaKey.js +51 -0
- package/dist/mexico/efirmaKey.js.map +1 -0
- package/dist/mexico/mexicoIdentifiers.js +86 -0
- package/dist/mexico/mexicoIdentifiers.js.map +1 -0
- package/dist/mexico/mexicoRules.js +16 -0
- package/dist/mexico/mexicoRules.js.map +1 -0
- package/dist/mexico.js +32 -0
- package/dist/mexico.js.map +1 -0
- package/dist/react-hook-form.js +40 -17
- package/dist/react-hook-form.js.map +1 -1
- package/dist/rich-text.js +19 -0
- package/dist/rich-text.js.map +1 -0
- package/dist/richText/FormRichTextField.js +12 -0
- package/dist/richText/FormRichTextField.js.map +1 -0
- package/dist/richText/RichTextEditor.js +108 -0
- package/dist/richText/RichTextEditor.js.map +1 -0
- package/dist/richText/RichTextLinkPopover.js +57 -0
- package/dist/richText/RichTextLinkPopover.js.map +1 -0
- package/dist/richText/RichTextToolbar.js +189 -0
- package/dist/richText/RichTextToolbar.js.map +1 -0
- package/dist/richText/RichTextView.js +26 -0
- package/dist/richText/RichTextView.js.map +1 -0
- package/dist/richText/richTextContentSx.js +42 -0
- package/dist/richText/richTextContentSx.js.map +1 -0
- package/dist/richText/richTextExtensions.js +44 -0
- package/dist/richText/richTextExtensions.js.map +1 -0
- package/dist/richText/richTextRules.js +46 -0
- package/dist/richText/richTextRules.js.map +1 -0
- package/dist/security/SessionsCard.js +11 -7
- package/dist/security/SessionsCard.js.map +1 -1
- package/dist/table.js +2 -0
- package/dist/table.js.map +1 -1
- package/dist/theme/components/glassComponents.js +27 -0
- package/dist/theme/components/glassComponents.js.map +1 -1
- package/dist/theme/components/minimalComponents.js +12 -0
- package/dist/theme/components/minimalComponents.js.map +1 -1
- package/dist/types/DataTable/ServerTableFilterDrawer.d.ts +21 -0
- package/dist/types/DataTable/filterContext.d.ts +2 -1
- package/dist/types/DataTable/goToPageOptions.d.ts +15 -0
- package/dist/types/DataTable/index.d.ts +1 -0
- package/dist/types/date-pickers.d.ts +10 -1
- package/dist/types/datePickers/DateInput.d.ts +6 -4
- package/dist/types/datePickers/DateTimeInput.d.ts +50 -0
- package/dist/types/datePickers/FormDateTimeField.d.ts +7 -0
- package/dist/types/datePickers/FormMonthField.d.ts +7 -0
- package/dist/types/datePickers/FormTimeField.d.ts +7 -0
- package/dist/types/datePickers/MonthInput.d.ts +39 -0
- package/dist/types/datePickers/PickerFrame.d.ts +22 -0
- package/dist/types/datePickers/TimeInput.d.ts +38 -0
- package/dist/types/datePickers/dateTimeRules.d.ts +31 -0
- package/dist/types/datePickers/pickerValues.d.ts +114 -0
- package/dist/types/datePickers/useCurrentMinute.d.ts +5 -0
- package/dist/types/datePickers/usePickerField.d.ts +24 -0
- package/dist/types/dictionaries/dictionaries.d.ts +6 -3
- package/dist/types/forms/FormAttachmentsField.d.ts +7 -0
- package/dist/types/forms/FormCheckboxGroupField.d.ts +7 -0
- package/dist/types/forms/FormFileField.d.ts +7 -0
- package/dist/types/forms/FormFileUploadField.d.ts +7 -0
- package/dist/types/forms/FormImageField.d.ts +7 -0
- package/dist/types/forms/FormMaskedField.d.ts +7 -0
- package/dist/types/forms/FormRepeatingFields.d.ts +25 -0
- package/dist/types/forms/FormTransferListField.d.ts +7 -0
- package/dist/types/forms/index.d.ts +10 -1
- package/dist/types/forms/listRules.d.ts +48 -0
- package/dist/types/forms/serverProblemFields.d.ts +13 -0
- package/dist/types/forms.d.ts +1 -1
- package/dist/types/hookForm/FormAttachmentsField.d.ts +8 -0
- package/dist/types/hookForm/FormCheckboxGroupField.d.ts +8 -0
- package/dist/types/hookForm/FormFileField.d.ts +8 -0
- package/dist/types/hookForm/FormFileUploadField.d.ts +8 -0
- package/dist/types/hookForm/FormImageField.d.ts +8 -0
- package/dist/types/hookForm/FormMaskedField.d.ts +9 -0
- package/dist/types/hookForm/FormRepeatingFields.d.ts +27 -0
- package/dist/types/hookForm/FormTransferListField.d.ts +8 -0
- package/dist/types/index.d.ts +25 -3
- package/dist/types/inputs/CatalogInput.d.ts +7 -1
- package/dist/types/inputs/CheckboxGroupInput.d.ts +39 -0
- package/dist/types/inputs/MaskedInput.d.ts +35 -0
- package/dist/types/inputs/RepeatingFields.d.ts +52 -0
- package/dist/types/inputs/SelectInput.d.ts +6 -1
- package/dist/types/inputs/TransferListInput.d.ts +43 -0
- package/dist/types/inputs/inputMasks.d.ts +52 -0
- package/dist/types/inputs/selectAllState.d.ts +11 -0
- package/dist/types/inputs/useRowKeys.d.ts +11 -0
- package/dist/types/legal/CookieNotice.d.ts +30 -0
- package/dist/types/legal/TermsAcceptanceDialog.d.ts +32 -0
- package/dist/types/legal/consentStorage.d.ts +16 -0
- package/dist/types/legal/useCookieConsent.d.ts +13 -0
- package/dist/types/locales/en.d.ts +232 -0
- package/dist/types/locales/es.d.ts +232 -0
- package/dist/types/mexico/CfdiSummary.d.ts +17 -0
- package/dist/types/mexico/EfirmaFields.d.ts +38 -0
- package/dist/types/mexico/certificateReader.d.ts +37 -0
- package/dist/types/mexico/cfdiReader.d.ts +95 -0
- package/dist/types/mexico/derReader.d.ts +54 -0
- package/dist/types/mexico/efirmaKey.d.ts +26 -0
- package/dist/types/mexico/mexicoIdentifiers.d.ts +61 -0
- package/dist/types/mexico/mexicoRules.d.ts +29 -0
- package/dist/types/mexico.d.ts +11 -0
- package/dist/types/react-hook-form.d.ts +10 -1
- package/dist/types/rich-text.d.ts +5 -0
- package/dist/types/richText/FormRichTextField.d.ts +7 -0
- package/dist/types/richText/RichTextEditor.d.ts +42 -0
- package/dist/types/richText/RichTextLinkPopover.d.ts +17 -0
- package/dist/types/richText/RichTextToolbar.d.ts +15 -0
- package/dist/types/richText/RichTextView.d.ts +13 -0
- package/dist/types/richText/richTextContentSx.d.ts +7 -0
- package/dist/types/richText/richTextExtensions.d.ts +15 -0
- package/dist/types/richText/richTextRules.d.ts +41 -0
- package/dist/types/table.d.ts +1 -1
- package/dist/types/ui/actions/ActionsMenu.d.ts +18 -3
- package/dist/types/ui/actions/CopyButton.d.ts +7 -4
- package/dist/types/ui/actions/tableRowText.d.ts +6 -0
- package/dist/types/ui/cards/RecordCard.d.ts +65 -0
- package/dist/types/ui/cards/RecordCardSkeleton.d.ts +17 -0
- package/dist/types/ui/countdown/Countdown.d.ts +31 -0
- package/dist/types/ui/countdown/countdownParts.d.ts +39 -0
- package/dist/types/ui/countdown/useCountdown.d.ts +14 -0
- package/dist/types/ui/documents/PdfViewerDialog.d.ts +21 -0
- package/dist/types/ui/filters/FilterDrawer.d.ts +34 -0
- package/dist/types/ui/filters/filterDrawerFields.d.ts +139 -0
- package/dist/types/ui/help/HelpButton.d.ts +15 -0
- package/dist/types/ui/help/HelpCarouselDialog.d.ts +35 -0
- package/dist/types/ui/help/useHelpCarousel.d.ts +21 -0
- package/dist/types/ui/index.d.ts +10 -0
- package/dist/types/ui/labels/IconBadge.d.ts +34 -0
- package/dist/types/ui/navigation/RouteTabs.d.ts +44 -0
- package/dist/types/ui/navigation/routeTabMatching.d.ts +27 -0
- package/dist/types/upload/AttachmentsInput.d.ts +62 -0
- package/dist/types/upload/FileChip.d.ts +18 -0
- package/dist/types/upload/FileDropzone.d.ts +3 -0
- package/dist/types/upload/FileInput.d.ts +48 -0
- package/dist/types/upload/FileUploadInput.d.ts +80 -0
- package/dist/types/upload/ImageInput.d.ts +53 -0
- package/dist/types/upload/TemplateDownloadButton.d.ts +39 -0
- package/dist/types/upload/fileAppearance.d.ts +8 -0
- package/dist/types/upload/fileRules.d.ts +38 -0
- package/dist/types/upload/transferProgress.d.ts +18 -0
- package/dist/types/upload/uploadMachine.d.ts +6 -2
- package/dist/types/upload/uploadWithProgress.d.ts +6 -2
- package/dist/types/upload/useFilePicker.d.ts +39 -0
- package/dist/ui/actions/ActionsMenu.js +98 -15
- package/dist/ui/actions/ActionsMenu.js.map +1 -1
- package/dist/ui/actions/CopyButton.js +31 -11
- package/dist/ui/actions/CopyButton.js.map +1 -1
- package/dist/ui/actions/tableRowText.js +7 -0
- package/dist/ui/actions/tableRowText.js.map +1 -0
- package/dist/ui/cards/RecordCard.js +145 -0
- package/dist/ui/cards/RecordCard.js.map +1 -0
- package/dist/ui/cards/RecordCardSkeleton.js +33 -0
- package/dist/ui/cards/RecordCardSkeleton.js.map +1 -0
- package/dist/ui/countdown/Countdown.js +38 -0
- package/dist/ui/countdown/Countdown.js.map +1 -0
- package/dist/ui/countdown/countdownParts.js +34 -0
- package/dist/ui/countdown/countdownParts.js.map +1 -0
- package/dist/ui/countdown/useCountdown.js +35 -0
- package/dist/ui/countdown/useCountdown.js.map +1 -0
- package/dist/ui/documents/PdfViewerDialog.js +81 -0
- package/dist/ui/documents/PdfViewerDialog.js.map +1 -0
- package/dist/ui/filters/FilterDrawer.js +211 -0
- package/dist/ui/filters/FilterDrawer.js.map +1 -0
- package/dist/ui/filters/filterDrawerFields.js +119 -0
- package/dist/ui/filters/filterDrawerFields.js.map +1 -0
- package/dist/ui/help/HelpButton.js +17 -0
- package/dist/ui/help/HelpButton.js.map +1 -0
- package/dist/ui/help/HelpCarouselDialog.js +154 -0
- package/dist/ui/help/HelpCarouselDialog.js.map +1 -0
- package/dist/ui/help/useHelpCarousel.js +25 -0
- package/dist/ui/help/useHelpCarousel.js.map +1 -0
- package/dist/ui/labels/IconBadge.js +82 -0
- package/dist/ui/labels/IconBadge.js.map +1 -0
- package/dist/ui/navigation/RouteTabs.js +75 -0
- package/dist/ui/navigation/RouteTabs.js.map +1 -0
- package/dist/ui/navigation/routeTabMatching.js +23 -0
- package/dist/ui/navigation/routeTabMatching.js.map +1 -0
- package/dist/upload/AttachmentsInput.js +127 -0
- package/dist/upload/AttachmentsInput.js.map +1 -0
- package/dist/upload/FileChip.js +27 -0
- package/dist/upload/FileChip.js.map +1 -0
- package/dist/upload/FileDropzone.js +19 -84
- package/dist/upload/FileDropzone.js.map +1 -1
- package/dist/upload/FileInput.js +112 -0
- package/dist/upload/FileInput.js.map +1 -0
- package/dist/upload/FileUploadInput.js +285 -0
- package/dist/upload/FileUploadInput.js.map +1 -0
- package/dist/upload/ImageInput.js +125 -0
- package/dist/upload/ImageInput.js.map +1 -0
- package/dist/upload/TemplateDownloadButton.js +67 -0
- package/dist/upload/TemplateDownloadButton.js.map +1 -0
- package/dist/upload/fileAppearance.js +21 -0
- package/dist/upload/fileAppearance.js.map +1 -0
- package/dist/upload/fileRules.js +27 -1
- package/dist/upload/fileRules.js.map +1 -1
- package/dist/upload/transferProgress.js +23 -0
- package/dist/upload/transferProgress.js.map +1 -0
- package/dist/upload/uploadMachine.js +8 -8
- package/dist/upload/uploadMachine.js.map +1 -1
- package/dist/upload/uploadWithProgress.js +1 -1
- package/dist/upload/uploadWithProgress.js.map +1 -1
- package/dist/upload/useFilePicker.js +101 -0
- package/dist/upload/useFilePicker.js.map +1 -0
- 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/
|
|
58
|
-
import {
|
|
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
|
|
63
|
-
import { default as
|
|
64
|
-
import { default as
|
|
65
|
-
import { default as
|
|
66
|
-
import { default as
|
|
67
|
-
import { default as
|
|
68
|
-
import { default as
|
|
69
|
-
import { default as
|
|
70
|
-
import { default as
|
|
71
|
-
import { default as
|
|
72
|
-
import { default as
|
|
73
|
-
import { default as
|
|
74
|
-
import { default as
|
|
75
|
-
import { default as
|
|
76
|
-
import { default as
|
|
77
|
-
import { LANGUAGES, default as
|
|
78
|
-
import { default as
|
|
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
|
|
81
|
-
import { default as
|
|
82
|
-
import { default as
|
|
83
|
-
import { default as
|
|
84
|
-
import {
|
|
85
|
-
import { default as
|
|
86
|
-
import {
|
|
87
|
-
import { default as
|
|
88
|
-
import { default as
|
|
89
|
-
import {
|
|
90
|
-
import { default as
|
|
91
|
-
import { default as
|
|
92
|
-
import { default as
|
|
93
|
-
import {
|
|
94
|
-
import { default as
|
|
95
|
-
import { default as
|
|
96
|
-
import { default as
|
|
97
|
-
import {
|
|
98
|
-
import {
|
|
99
|
-
import { default as
|
|
100
|
-
import { default as
|
|
101
|
-
import { default as
|
|
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
|
|
124
|
-
import { default as
|
|
125
|
-
import { default as
|
|
126
|
-
import { default as
|
|
127
|
-
import { default as
|
|
128
|
-
import { default as
|
|
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
|
|
133
|
-
import { default as
|
|
134
|
-
import { default as
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
191
|
+
default64 as CalendarHeatmap,
|
|
157
192
|
default18 as Can,
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
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
|
-
|
|
165
|
-
|
|
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
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
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
|
-
|
|
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
|
-
|
|
191
|
-
|
|
192
|
-
|
|
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
|
-
|
|
195
|
-
|
|
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
|
-
|
|
201
|
-
|
|
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
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
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
|
-
|
|
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
|
-
|
|
217
|
-
|
|
218
|
-
|
|
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
|
-
|
|
277
|
+
default73 as NumberInput,
|
|
223
278
|
PASSWORD_RULE,
|
|
224
279
|
PHONE_MEDIA_QUERY,
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
280
|
+
default46 as PageBreadcrumbs,
|
|
281
|
+
default36 as PageHeader,
|
|
282
|
+
default37 as PageHeading,
|
|
228
283
|
default21 as PasswordChecklist,
|
|
229
|
-
|
|
284
|
+
default80 as PdfViewerDialog,
|
|
285
|
+
default54 as PeriodRangeSelector,
|
|
230
286
|
default20 as PermissionMatrix,
|
|
231
|
-
|
|
232
|
-
|
|
287
|
+
default38 as ProfileHeader,
|
|
288
|
+
default55 as QuickFilters,
|
|
233
289
|
REDIRECT_PARAM,
|
|
234
|
-
|
|
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
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
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
|
-
|
|
307
|
+
default85 as SessionsCard,
|
|
247
308
|
SettingSection,
|
|
248
309
|
default8 as StaleBuildBoundary,
|
|
249
|
-
|
|
310
|
+
default58 as StatusChip,
|
|
250
311
|
THEME_LOOK,
|
|
251
312
|
TOAST_DEFAULT_OPTIONS,
|
|
252
313
|
TOP_BAR,
|
|
253
314
|
TREND_DIRECTION,
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
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
|
-
|
|
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
|
|
57
|
-
|
|
58
|
-
|
|
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
|
-
|
|
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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"}
|