@stackcraftmx/calcita 0.32.2 → 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/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
|
@@ -1,2 +1,11 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { default as DateInput } from './datePickers/DateInput.js';
|
|
2
2
|
export { default as FormDateField } from './datePickers/FormDateField.js';
|
|
3
|
+
export { default as DateTimeInput } from './datePickers/DateTimeInput.js';
|
|
4
|
+
export { default as FormDateTimeField } from './datePickers/FormDateTimeField.js';
|
|
5
|
+
export { default as TimeInput } from './datePickers/TimeInput.js';
|
|
6
|
+
export { default as FormTimeField } from './datePickers/FormTimeField.js';
|
|
7
|
+
export { default as MonthInput } from './datePickers/MonthInput.js';
|
|
8
|
+
export { default as FormMonthField } from './datePickers/FormMonthField.js';
|
|
9
|
+
export { CALENDAR_DATE_FORMAT, CALENDAR_MONTH_FORMAT, DEFAULT_MINUTES_STEP, INSTANT_FORMAT, TIME_OF_DAY_FORMAT, earliestInstantFromNow, instantPlusMinutes, latestInstantOf, timeZoneNameOf, } from './datePickers/pickerValues.js';
|
|
10
|
+
export { minutesAfterRule, minutesFromNowRule } from './datePickers/dateTimeRules.js';
|
|
11
|
+
export { useCurrentMinute } from './datePickers/useCurrentMinute.js';
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import '
|
|
2
|
-
|
|
3
|
-
export declare const CALENDAR_DATE_FORMAT = "YYYY-MM-DD";
|
|
1
|
+
import { CALENDAR_DATE_FORMAT } from './pickerValues.js';
|
|
2
|
+
export { CALENDAR_DATE_FORMAT };
|
|
4
3
|
/**
|
|
5
4
|
* @param {object} props
|
|
6
5
|
* @param {string} [props.name]
|
|
@@ -17,9 +16,11 @@ export declare const CALENDAR_DATE_FORMAT = "YYYY-MM-DD";
|
|
|
17
16
|
* @param {'day'|'month'|'year'} [props.openTo] por dónde abre el calendario (year para un nacimiento)
|
|
18
17
|
* @param {boolean} [props.disabled]
|
|
19
18
|
* @param {import('react').Ref<HTMLInputElement>} [props.inputRef]
|
|
19
|
+
* @param {object} [props.pickerProps] lo demás del DatePicker de MUI X que aquí no tiene nombre (shouldDisableDate, slots,
|
|
20
|
+
* slotProps…); value y onChange son del campo
|
|
20
21
|
* @param {object} [props.texts] los textos que cambian, con la forma de `common` en los textos del paquete
|
|
21
22
|
*/
|
|
22
|
-
export default function DateInput({ name, label, value, onChange, onBlur, error, helperText, minDate, maxDate, disableFuture, disablePast, openTo, disabled, inputRef, texts, ...unknownProps }: {
|
|
23
|
+
export default function DateInput({ name, label, value, onChange, onBlur, error, helperText, minDate, maxDate, disableFuture, disablePast, openTo, disabled, inputRef, pickerProps, texts, ...unknownProps }: {
|
|
23
24
|
name?: string;
|
|
24
25
|
label: string;
|
|
25
26
|
value: string | null | undefined;
|
|
@@ -37,5 +38,6 @@ export default function DateInput({ name, label, value, onChange, onBlur, error,
|
|
|
37
38
|
openTo?: 'day' | 'month' | 'year';
|
|
38
39
|
disabled?: boolean;
|
|
39
40
|
inputRef?: import('react').Ref<HTMLInputElement>;
|
|
41
|
+
pickerProps?: object;
|
|
40
42
|
texts?: object;
|
|
41
43
|
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param {object} props
|
|
3
|
+
* @param {string} [props.name]
|
|
4
|
+
* @param {string} props.label ya traducido
|
|
5
|
+
* @param {string|null|undefined} props.value el instante ('2026-11-01T18:30:00Z' o con desfase) o ''
|
|
6
|
+
* @param {(value: string) => void} props.onChange recibe el instante en UTC ('' al borrar o a medias)
|
|
7
|
+
* @param {() => void} [props.onBlur]
|
|
8
|
+
* @param {string|{key: string, values?: object}} [props.error]
|
|
9
|
+
* @param {string} [props.helperText] ya traducida; va antes del nombre de la zona
|
|
10
|
+
* @param {string} [props.minDateTime] instante (el fin de algo: instantPlusMinutes(startsAt, 30))
|
|
11
|
+
* @param {number} [props.minimumMinutesFromNow] al menos tantos minutos después de ahora; se recorre con el reloj
|
|
12
|
+
* @param {string} [props.maxDateTime] instante
|
|
13
|
+
* @param {boolean} [props.disableFuture]
|
|
14
|
+
* @param {boolean} [props.disablePast] p. ej. un envío programado
|
|
15
|
+
* @param {number} [props.minutesStep] de cuánto en cuánto van los minutos; por omisión de uno en uno (15 para citas de
|
|
16
|
+
* cuarto de hora)
|
|
17
|
+
* @param {string} [props.timeZone] otra zona que la del proveedor (la de una sucursal); rotulada igual
|
|
18
|
+
* @param {boolean} [props.showTimeZone] false quita el nombre de la zona de abajo (por omisión se ve)
|
|
19
|
+
* @param {string} [props.timeZoneLabel] ya traducido, en lugar del nombre que da el navegador
|
|
20
|
+
* @param {boolean} [props.disabled]
|
|
21
|
+
* @param {import('react').Ref<HTMLInputElement>} [props.inputRef]
|
|
22
|
+
* @param {object} [props.pickerProps] lo demás del DateTimePicker de MUI X que aquí no tiene nombre (views, shouldDisableDate,
|
|
23
|
+
* slots, slotProps…); value y onChange son del campo
|
|
24
|
+
* @param {object} [props.texts] los textos que cambian, con la forma de `common` en los textos del paquete
|
|
25
|
+
*/
|
|
26
|
+
export default function DateTimeInput({ name, label, value, onChange, onBlur, error, helperText, minDateTime, minimumMinutesFromNow, maxDateTime, disableFuture, disablePast, minutesStep, timeZone, showTimeZone, timeZoneLabel, disabled, inputRef, pickerProps, texts, ...unknownProps }: {
|
|
27
|
+
name?: string;
|
|
28
|
+
label: string;
|
|
29
|
+
value: string | null | undefined;
|
|
30
|
+
onChange: (value: string) => void;
|
|
31
|
+
onBlur?: () => void;
|
|
32
|
+
error?: string | {
|
|
33
|
+
key: string;
|
|
34
|
+
values?: object;
|
|
35
|
+
};
|
|
36
|
+
helperText?: string;
|
|
37
|
+
minDateTime?: string;
|
|
38
|
+
minimumMinutesFromNow?: number;
|
|
39
|
+
maxDateTime?: string;
|
|
40
|
+
disableFuture?: boolean;
|
|
41
|
+
disablePast?: boolean;
|
|
42
|
+
minutesStep?: number;
|
|
43
|
+
timeZone?: string;
|
|
44
|
+
showTimeZone?: boolean;
|
|
45
|
+
timeZoneLabel?: string;
|
|
46
|
+
disabled?: boolean;
|
|
47
|
+
inputRef?: import('react').Ref<HTMLInputElement>;
|
|
48
|
+
pickerProps?: object;
|
|
49
|
+
texts?: object;
|
|
50
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param {{name: string} & Omit<Parameters<typeof import('./DateTimeInput.js').default>[0], 'name'|'value'|'onChange'|'onBlur'|'error'>} props las de
|
|
3
|
+
* DateTimeInput (minDateTime, minimumMinutesFromNow, disablePast, minutesStep, timeZone…), sin value / onChange / onBlur / error
|
|
4
|
+
*/
|
|
5
|
+
export default function FormDateTimeField({ name, ...inputProps }: {
|
|
6
|
+
name: string;
|
|
7
|
+
} & Omit<Parameters<typeof import('./DateTimeInput.js').default>[0], 'name' | 'value' | 'onChange' | 'onBlur' | 'error'>): import("react").JSX.Element;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param {{name: string} & Omit<Parameters<typeof import('./MonthInput.js').default>[0], 'name'|'value'|'onChange'|'onBlur'|'error'>} props las de
|
|
3
|
+
* MonthInput (minMonth, maxMonth, disableFuture…), sin value / onChange / onBlur / error
|
|
4
|
+
*/
|
|
5
|
+
export default function FormMonthField({ name, ...inputProps }: {
|
|
6
|
+
name: string;
|
|
7
|
+
} & Omit<Parameters<typeof import('./MonthInput.js').default>[0], 'name' | 'value' | 'onChange' | 'onBlur' | 'error'>): import("react").JSX.Element;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param {{name: string} & Omit<Parameters<typeof import('./TimeInput.js').default>[0], 'name'|'value'|'onChange'|'onBlur'|'error'>} props las de
|
|
3
|
+
* TimeInput (minTime, maxTime, minutesStep…), sin value / onChange / onBlur / error
|
|
4
|
+
*/
|
|
5
|
+
export default function FormTimeField({ name, ...inputProps }: {
|
|
6
|
+
name: string;
|
|
7
|
+
} & Omit<Parameters<typeof import('./TimeInput.js').default>[0], 'name' | 'value' | 'onChange' | 'onBlur' | 'error'>): import("react").JSX.Element;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param {object} props
|
|
3
|
+
* @param {string} [props.name]
|
|
4
|
+
* @param {string} props.label ya traducido
|
|
5
|
+
* @param {string|null|undefined} props.value 'AAAA-MM' o ''
|
|
6
|
+
* @param {(value: string) => void} props.onChange recibe 'AAAA-MM' ('' al borrar o a medias)
|
|
7
|
+
* @param {() => void} [props.onBlur]
|
|
8
|
+
* @param {string|{key: string, values?: object}} [props.error]
|
|
9
|
+
* @param {string} [props.helperText]
|
|
10
|
+
* @param {string} [props.minMonth] 'AAAA-MM'
|
|
11
|
+
* @param {string} [props.maxMonth] 'AAAA-MM'
|
|
12
|
+
* @param {boolean} [props.disableFuture] p. ej. el mes de un reporte que ya cerró
|
|
13
|
+
* @param {boolean} [props.disablePast]
|
|
14
|
+
* @param {boolean} [props.disabled]
|
|
15
|
+
* @param {import('react').Ref<HTMLInputElement>} [props.inputRef]
|
|
16
|
+
* @param {object} [props.pickerProps] lo demás del DatePicker de MUI X que aquí no tiene nombre (shouldDisableMonth, slots,
|
|
17
|
+
* slotProps…); value y onChange son del campo
|
|
18
|
+
* @param {object} [props.texts] los textos que cambian, con la forma de `common` en los textos del paquete
|
|
19
|
+
*/
|
|
20
|
+
export default function MonthInput({ name, label, value, onChange, onBlur, error, helperText, minMonth, maxMonth, disableFuture, disablePast, disabled, inputRef, pickerProps, texts, ...unknownProps }: {
|
|
21
|
+
name?: string;
|
|
22
|
+
label: string;
|
|
23
|
+
value: string | null | undefined;
|
|
24
|
+
onChange: (value: string) => void;
|
|
25
|
+
onBlur?: () => void;
|
|
26
|
+
error?: string | {
|
|
27
|
+
key: string;
|
|
28
|
+
values?: object;
|
|
29
|
+
};
|
|
30
|
+
helperText?: string;
|
|
31
|
+
minMonth?: string;
|
|
32
|
+
maxMonth?: string;
|
|
33
|
+
disableFuture?: boolean;
|
|
34
|
+
disablePast?: boolean;
|
|
35
|
+
disabled?: boolean;
|
|
36
|
+
inputRef?: import('react').Ref<HTMLInputElement>;
|
|
37
|
+
pickerProps?: object;
|
|
38
|
+
texts?: object;
|
|
39
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import 'dayjs/locale/es.js';
|
|
2
|
+
/**
|
|
3
|
+
* Los slotProps del selector con el campo de la casa y, encima, lo que pasó la pantalla en pickerProps.slotProps.
|
|
4
|
+
*
|
|
5
|
+
* @param {object} textField lo de la casa: id, name, onBlur, error, helperText
|
|
6
|
+
* @param {object} [pickerProps] lo que la pantalla le pasa al selector de MUI X
|
|
7
|
+
* @returns {object}
|
|
8
|
+
*/
|
|
9
|
+
export declare function textFieldSlotPropsOf(textField: object, pickerProps?: object): object;
|
|
10
|
+
/**
|
|
11
|
+
* @param {object} props
|
|
12
|
+
* @param {string} props.inputId
|
|
13
|
+
* @param {import('react').ReactNode} props.label ya traducida
|
|
14
|
+
* @param {string} props.language el del proveedor más cercano
|
|
15
|
+
* @param {import('react').ReactNode} props.children el selector de MUI X
|
|
16
|
+
*/
|
|
17
|
+
export default function PickerFrame({ inputId, label, language, children }: {
|
|
18
|
+
inputId: string;
|
|
19
|
+
label: import('react').ReactNode;
|
|
20
|
+
language: string;
|
|
21
|
+
children: import('react').ReactNode;
|
|
22
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param {object} props
|
|
3
|
+
* @param {string} [props.name]
|
|
4
|
+
* @param {string} props.label ya traducido
|
|
5
|
+
* @param {string|null|undefined} props.value 'HH:mm' o ''
|
|
6
|
+
* @param {(value: string) => void} props.onChange recibe 'HH:mm' ('' al borrar o a medias)
|
|
7
|
+
* @param {() => void} [props.onBlur]
|
|
8
|
+
* @param {string|{key: string, values?: object}} [props.error]
|
|
9
|
+
* @param {string} [props.helperText]
|
|
10
|
+
* @param {string} [props.minTime] 'HH:mm'
|
|
11
|
+
* @param {string} [props.maxTime] 'HH:mm'
|
|
12
|
+
* @param {number} [props.minutesStep] de cuánto en cuánto van los minutos; por omisión de uno en uno (30 para citas de
|
|
13
|
+
* media hora)
|
|
14
|
+
* @param {boolean} [props.disabled]
|
|
15
|
+
* @param {import('react').Ref<HTMLInputElement>} [props.inputRef]
|
|
16
|
+
* @param {object} [props.pickerProps] lo demás del TimePicker de MUI X que aquí no tiene nombre (views, shouldDisableTime,
|
|
17
|
+
* slots, slotProps…); value y onChange son del campo
|
|
18
|
+
* @param {object} [props.texts] los textos que cambian, con la forma de `common` en los textos del paquete
|
|
19
|
+
*/
|
|
20
|
+
export default function TimeInput({ name, label, value, onChange, onBlur, error, helperText, minTime, maxTime, minutesStep, disabled, inputRef, pickerProps, texts, ...unknownProps }: {
|
|
21
|
+
name?: string;
|
|
22
|
+
label: string;
|
|
23
|
+
value: string | null | undefined;
|
|
24
|
+
onChange: (value: string) => void;
|
|
25
|
+
onBlur?: () => void;
|
|
26
|
+
error?: string | {
|
|
27
|
+
key: string;
|
|
28
|
+
values?: object;
|
|
29
|
+
};
|
|
30
|
+
helperText?: string;
|
|
31
|
+
minTime?: string;
|
|
32
|
+
maxTime?: string;
|
|
33
|
+
minutesStep?: number;
|
|
34
|
+
disabled?: boolean;
|
|
35
|
+
inputRef?: import('react').Ref<HTMLInputElement>;
|
|
36
|
+
pickerProps?: object;
|
|
37
|
+
texts?: object;
|
|
38
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param {number} minutes
|
|
3
|
+
* @returns {{name: string, message: {key: string, values: {count: number}}, test: (value: unknown) => boolean}}
|
|
4
|
+
*/
|
|
5
|
+
export declare function minutesFromNowRule(minutes: number): {
|
|
6
|
+
name: string;
|
|
7
|
+
message: {
|
|
8
|
+
key: string;
|
|
9
|
+
values: {
|
|
10
|
+
count: number;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
test: (value: unknown) => boolean;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* @param {string} startField el nombre del campo de inicio, en el mismo objeto del esquema
|
|
17
|
+
* @param {number} minutes
|
|
18
|
+
* @returns {{name: string, message: {key: string, values: {count: number}}, test: (value: unknown, context: {parent: object}) => boolean}}
|
|
19
|
+
*/
|
|
20
|
+
export declare function minutesAfterRule(startField: string, minutes: number): {
|
|
21
|
+
name: string;
|
|
22
|
+
message: {
|
|
23
|
+
key: string;
|
|
24
|
+
values: {
|
|
25
|
+
count: number;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
test: (value: unknown, context: {
|
|
29
|
+
parent: object;
|
|
30
|
+
}) => boolean;
|
|
31
|
+
};
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import dayjs from 'dayjs';
|
|
2
|
+
/** Cómo viaja una fecha de calendario. */
|
|
3
|
+
export declare const CALENDAR_DATE_FORMAT = "YYYY-MM-DD";
|
|
4
|
+
/** Cómo viaja un mes. */
|
|
5
|
+
export declare const CALENDAR_MONTH_FORMAT = "YYYY-MM";
|
|
6
|
+
/** Cómo viaja una hora del día (de 24 horas, aunque en pantalla se vea con a.m. y p.m.). */
|
|
7
|
+
export declare const TIME_OF_DAY_FORMAT = "HH:mm";
|
|
8
|
+
/** Cómo viaja un instante: en UTC, con la Z al final. */
|
|
9
|
+
export declare const INSTANT_FORMAT = "YYYY-MM-DDTHH:mm:ss[Z]";
|
|
10
|
+
/** De cuánto en cuánto van los minutos en la fecha con hora y en la hora: de uno en uno (MUI X trae de 5 en 5). */
|
|
11
|
+
export declare const DEFAULT_MINUTES_STEP = 1;
|
|
12
|
+
/** Un minuto. */
|
|
13
|
+
export declare const MILLISECONDS_PER_MINUTE = 60000;
|
|
14
|
+
/**
|
|
15
|
+
* dayjs con las zonas horarias puestas: el selector de MUI X las necesita para pintar un instante en otra zona.
|
|
16
|
+
* OJO: se llama al usarla y no al importar el archivo: el paquete se declara sin efectos al importar (sideEffects: false)
|
|
17
|
+
* y un import solo por su efecto se lo puede saltar el empaquetador del proyecto.
|
|
18
|
+
*
|
|
19
|
+
* @returns {typeof dayjs}
|
|
20
|
+
*/
|
|
21
|
+
export declare function zonedDayjs(): typeof dayjs;
|
|
22
|
+
/**
|
|
23
|
+
* Cómo se ven en pantalla los cuatro campos.
|
|
24
|
+
*
|
|
25
|
+
* @param {string} language el del proveedor más cercano
|
|
26
|
+
* @param {'h23'|'h12'} [hourCycle] el del proveedor; por omisión de 24 horas
|
|
27
|
+
* @returns {{date: string, month: string, time: string, dateTime: string, ampm: boolean}}
|
|
28
|
+
*/
|
|
29
|
+
export declare function displayFormatsOf(language: string, hourCycle?: 'h23' | 'h12'): {
|
|
30
|
+
date: string;
|
|
31
|
+
month: string;
|
|
32
|
+
time: string;
|
|
33
|
+
dateTime: string;
|
|
34
|
+
ampm: boolean;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* El nombre de la zona horaria como lo dice una persona («Hora estándar central», «Pacific Time»), para rotular la fecha
|
|
38
|
+
* con hora. Si el navegador no sabe nombrarla, la zona tal cual (America/Mexico_City).
|
|
39
|
+
*
|
|
40
|
+
* @param {string} timeZone la zona IANA del proveedor
|
|
41
|
+
* @param {string} intlLocale es-MX, en-US…
|
|
42
|
+
* @param {Date} [at] el momento que se nombra (en las zonas con horario de verano el nombre puede cambiar)
|
|
43
|
+
* @returns {string}
|
|
44
|
+
*/
|
|
45
|
+
export declare function timeZoneNameOf(timeZone: string, intlLocale: string, at?: Date): string;
|
|
46
|
+
/**
|
|
47
|
+
* Un instante como lo quiere el selector, en la zona en que se pinta; null si está vacío o no se entiende.
|
|
48
|
+
*
|
|
49
|
+
* @param {string|null|undefined} instantText '2026-11-01T18:30:00Z' o con su desfase ('…-06:00')
|
|
50
|
+
* @param {string} timeZone la zona en que se pinta
|
|
51
|
+
* @returns {import('dayjs').Dayjs|null}
|
|
52
|
+
*/
|
|
53
|
+
export declare function pickerInstantOf(instantText: string | null | undefined, timeZone: string): import('dayjs').Dayjs | null;
|
|
54
|
+
/**
|
|
55
|
+
* Lo que eligió la persona como instante en UTC; '' si está vacío o a medias.
|
|
56
|
+
*
|
|
57
|
+
* @param {import('dayjs').Dayjs|null} pickedValue
|
|
58
|
+
* @returns {string}
|
|
59
|
+
*/
|
|
60
|
+
export declare function instantTextOf(pickedValue: import('dayjs').Dayjs | null): string;
|
|
61
|
+
/**
|
|
62
|
+
* El primer instante que se puede elegir cuando la regla es «al menos N minutos después de ahora» (publicar algo con
|
|
63
|
+
* anticipación): este minuto, sin segundos, más N minutos. Sin segundos para que la regla no cambie entre que la persona
|
|
64
|
+
* mira la hora y la elige.
|
|
65
|
+
*
|
|
66
|
+
* @param {number} minutes
|
|
67
|
+
* @param {Date|number} [now]
|
|
68
|
+
* @returns {string} el instante en UTC ('2026-11-02T18:35:00Z')
|
|
69
|
+
*/
|
|
70
|
+
export declare function earliestInstantFromNow(minutes: number, now?: Date | number): string;
|
|
71
|
+
/**
|
|
72
|
+
* Un instante más N minutos (el fin de algo que dura al menos N minutos desde su inicio). '' si el instante viene vacío
|
|
73
|
+
* o no se entiende.
|
|
74
|
+
*
|
|
75
|
+
* @param {string|null|undefined} instantText
|
|
76
|
+
* @param {number} minutes
|
|
77
|
+
* @returns {string}
|
|
78
|
+
*/
|
|
79
|
+
export declare function instantPlusMinutes(instantText: string | null | undefined, minutes: number): string;
|
|
80
|
+
/**
|
|
81
|
+
* El más tarde de varios instantes (los vacíos no cuentan): el mínimo que de verdad aplica cuando hay más de una regla.
|
|
82
|
+
*
|
|
83
|
+
* @param {...(string|null|undefined)} instantTexts
|
|
84
|
+
* @returns {string} '' si todos vienen vacíos
|
|
85
|
+
*/
|
|
86
|
+
export declare function latestInstantOf(...instantTexts: (string | null | undefined)[]): string;
|
|
87
|
+
/**
|
|
88
|
+
* Una hora del día 'HH:mm' como la quiere el selector; null si está vacía o no tiene esa forma.
|
|
89
|
+
*
|
|
90
|
+
* @param {string|null|undefined} timeText
|
|
91
|
+
* @returns {import('dayjs').Dayjs|null}
|
|
92
|
+
*/
|
|
93
|
+
export declare function pickerTimeOf(timeText: string | null | undefined): import('dayjs').Dayjs | null;
|
|
94
|
+
/**
|
|
95
|
+
* Lo que eligió la persona como 'HH:mm'; '' si está vacío o a medias.
|
|
96
|
+
*
|
|
97
|
+
* @param {import('dayjs').Dayjs|null} pickedValue
|
|
98
|
+
* @returns {string}
|
|
99
|
+
*/
|
|
100
|
+
export declare function timeTextOf(pickedValue: import('dayjs').Dayjs | null): string;
|
|
101
|
+
/**
|
|
102
|
+
* Un mes 'AAAA-MM' como lo quiere el selector (su día 1); null si está vacío o no tiene esa forma.
|
|
103
|
+
*
|
|
104
|
+
* @param {string|null|undefined} monthText
|
|
105
|
+
* @returns {import('dayjs').Dayjs|null}
|
|
106
|
+
*/
|
|
107
|
+
export declare function pickerMonthOf(monthText: string | null | undefined): import('dayjs').Dayjs | null;
|
|
108
|
+
/**
|
|
109
|
+
* Lo que eligió la persona como 'AAAA-MM'; '' si está vacío o a medias.
|
|
110
|
+
*
|
|
111
|
+
* @param {import('dayjs').Dayjs|null} pickedValue
|
|
112
|
+
* @returns {string}
|
|
113
|
+
*/
|
|
114
|
+
export declare function monthTextOf(pickedValue: import('dayjs').Dayjs | null): string;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { displayFormatsOf } from './pickerValues.js';
|
|
2
|
+
/**
|
|
3
|
+
* @param {object} field
|
|
4
|
+
* @param {string} [field.name]
|
|
5
|
+
* @param {string} field.kind de qué campo es (date, dateTime, time, month): da el principio del id si no hay name
|
|
6
|
+
* @param {string|{key: string, values?: object}} [field.error]
|
|
7
|
+
* @param {object} [field.texts] los textos que cambian, con la forma de `common`
|
|
8
|
+
* @returns {{language: string, timeZone: string, inputId: string, errorText: string|undefined, formats: ReturnType<typeof displayFormatsOf>}}
|
|
9
|
+
*/
|
|
10
|
+
export declare function usePickerField({ name, kind, error, texts }: {
|
|
11
|
+
name?: string;
|
|
12
|
+
kind: string;
|
|
13
|
+
error?: string | {
|
|
14
|
+
key: string;
|
|
15
|
+
values?: object;
|
|
16
|
+
};
|
|
17
|
+
texts?: object;
|
|
18
|
+
}): {
|
|
19
|
+
language: string;
|
|
20
|
+
timeZone: string;
|
|
21
|
+
inputId: string;
|
|
22
|
+
errorText: string | undefined;
|
|
23
|
+
formats: ReturnType<typeof displayFormatsOf>;
|
|
24
|
+
};
|
|
@@ -4,16 +4,19 @@
|
|
|
4
4
|
* @param {string} value el código del API
|
|
5
5
|
* @param {string} keyPrefix dónde viven sus textos dentro del namespace dictionaries ('orderStatus.paid' → orderStatus.paid.label)
|
|
6
6
|
* @param {string} color color de paleta de MUI
|
|
7
|
-
* @param {{hasShortLabel?: boolean}} [options] hasShortLabel: trae palabra corta
|
|
8
|
-
*
|
|
7
|
+
* @param {{hasShortLabel?: boolean, icon?: import('react').ElementType}} [options] hasShortLabel: trae palabra corta
|
|
8
|
+
* (keyPrefix.shortLabel); icon: el ícono con que se pinta en una insignia (IconBadge), p. ej. CreditCardOutlinedIcon
|
|
9
|
+
* @returns {{value: string, labelKey: string, tooltipKey: string, shortLabelKey?: string, icon?: import('react').ElementType, color: string, isKnown: boolean}}
|
|
9
10
|
*/
|
|
10
|
-
export declare function dictionaryEntryOf(value: string, keyPrefix: string, color: string, { hasShortLabel }?: {
|
|
11
|
+
export declare function dictionaryEntryOf(value: string, keyPrefix: string, color: string, { hasShortLabel, icon }?: {
|
|
11
12
|
hasShortLabel?: boolean;
|
|
13
|
+
icon?: import('react').ElementType;
|
|
12
14
|
}): {
|
|
13
15
|
value: string;
|
|
14
16
|
labelKey: string;
|
|
15
17
|
tooltipKey: string;
|
|
16
18
|
shortLabelKey?: string;
|
|
19
|
+
icon?: import('react').ElementType;
|
|
17
20
|
color: string;
|
|
18
21
|
isKnown: boolean;
|
|
19
22
|
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param {{name: string} & Omit<Parameters<typeof import('../upload/AttachmentsInput.js').default>[0], 'name'|'value'|'onChange'|'onBlur'|'error'>} props las de
|
|
3
|
+
* AttachmentsInput (accept, maxFiles, maxTotalSize, template…), sin value / onChange / onBlur / error
|
|
4
|
+
*/
|
|
5
|
+
export default function FormAttachmentsField({ name, ...inputProps }: {
|
|
6
|
+
name: string;
|
|
7
|
+
} & Omit<Parameters<typeof import('../upload/AttachmentsInput.js').default>[0], 'name' | 'value' | 'onChange' | 'onBlur' | 'error'>): import("react").JSX.Element;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param {{name: string} & Omit<Parameters<typeof import('../inputs/CheckboxGroupInput.js').default>[0], 'name'|'value'|'onChange'|'onBlur'|'error'>} props las de
|
|
3
|
+
* CheckboxGroupInput, sin value / onChange / onBlur / error
|
|
4
|
+
*/
|
|
5
|
+
export default function FormCheckboxGroupField({ name, ...inputProps }: {
|
|
6
|
+
name: string;
|
|
7
|
+
} & Omit<Parameters<typeof import('../inputs/CheckboxGroupInput.js').default>[0], 'name' | 'value' | 'onChange' | 'onBlur' | 'error'>): import("react").JSX.Element;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param {{name: string} & Omit<Parameters<typeof import('../upload/FileInput.js').default>[0], 'name'|'value'|'onChange'|'onBlur'|'error'>} props las de
|
|
3
|
+
* FileInput (accept, maxSize, template…), sin value / onChange / onBlur / error
|
|
4
|
+
*/
|
|
5
|
+
export default function FormFileField({ name, ...inputProps }: {
|
|
6
|
+
name: string;
|
|
7
|
+
} & Omit<Parameters<typeof import('../upload/FileInput.js').default>[0], 'name' | 'value' | 'onChange' | 'onBlur' | 'error'>): import("react").JSX.Element;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param {{name: string} & Omit<Parameters<typeof import('../upload/FileUploadInput.js').default>[0], 'name'|'value'|'onChange'|'onBlur'|'error'>} props las de
|
|
3
|
+
* FileUploadInput (upload, accept, maxSize, download…), sin value / onChange / onBlur / error
|
|
4
|
+
*/
|
|
5
|
+
export default function FormFileUploadField({ name, ...inputProps }: {
|
|
6
|
+
name: string;
|
|
7
|
+
} & Omit<Parameters<typeof import('../upload/FileUploadInput.js').default>[0], 'name' | 'value' | 'onChange' | 'onBlur' | 'error'>): import("react").JSX.Element;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param {{name: string} & Omit<Parameters<typeof import('../upload/ImageInput.js').default>[0], 'name'|'value'|'onChange'|'onBlur'|'error'>} props las de
|
|
3
|
+
* ImageInput (shape, size, maxSize…), sin value / onChange / onBlur / error
|
|
4
|
+
*/
|
|
5
|
+
export default function FormImageField({ name, ...inputProps }: {
|
|
6
|
+
name: string;
|
|
7
|
+
} & Omit<Parameters<typeof import('../upload/ImageInput.js').default>[0], 'name' | 'value' | 'onChange' | 'onBlur' | 'error'>): import("react").JSX.Element;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param {{name: string} & Omit<Parameters<typeof import('../inputs/MaskedInput.js').default>[0], 'name'|'value'|'onChange'|'onBlur'|'error'>} props
|
|
3
|
+
* las de MaskedInput (mask, label, helperText, placeholder…)
|
|
4
|
+
*/
|
|
5
|
+
export default function FormMaskedField({ name, ...inputProps }: {
|
|
6
|
+
name: string;
|
|
7
|
+
} & Omit<Parameters<typeof import('../inputs/MaskedInput.js').default>[0], 'name' | 'value' | 'onChange' | 'onBlur' | 'error'>): import("react").JSX.Element;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param {{
|
|
3
|
+
* name: string,
|
|
4
|
+
* emptyRow: object,
|
|
5
|
+
* renderRow: (row: {index: number, row: any, nameOf: (field: string) => string}) => import('react').ReactNode,
|
|
6
|
+
* removeBlockedReason?: (row: any, index: number) => string|null,
|
|
7
|
+
* confirmRemove?: (row: any, index: number) => boolean,
|
|
8
|
+
* onAdd?: (index: number) => void,
|
|
9
|
+
* onRemove?: (row: any, index: number) => void,
|
|
10
|
+
* } & Omit<Parameters<typeof import('../inputs/RepeatingFields.js').default>[0], 'rowKeys'|'renderRow'|'onAdd'|'onRemove'|'onClear'|'removeBlockedReasonOf'|'confirmRemoveOf'|'rowHasErrorOf'|'error'>} props
|
|
11
|
+
* name: la lista del formulario; emptyRow: cómo empieza un renglón nuevo; lo demás, lo de RepeatingFields
|
|
12
|
+
*/
|
|
13
|
+
export default function FormRepeatingFields({ name, emptyRow, renderRow, removeBlockedReason, confirmRemove, onAdd, onRemove, ...viewProps }: {
|
|
14
|
+
name: string;
|
|
15
|
+
emptyRow: object;
|
|
16
|
+
renderRow: (row: {
|
|
17
|
+
index: number;
|
|
18
|
+
row: any;
|
|
19
|
+
nameOf: (field: string) => string;
|
|
20
|
+
}) => import('react').ReactNode;
|
|
21
|
+
removeBlockedReason?: (row: any, index: number) => string | null;
|
|
22
|
+
confirmRemove?: (row: any, index: number) => boolean;
|
|
23
|
+
onAdd?: (index: number) => void;
|
|
24
|
+
onRemove?: (row: any, index: number) => void;
|
|
25
|
+
} & Omit<Parameters<typeof import('../inputs/RepeatingFields.js').default>[0], 'rowKeys' | 'renderRow' | 'onAdd' | 'onRemove' | 'onClear' | 'removeBlockedReasonOf' | 'confirmRemoveOf' | 'rowHasErrorOf' | 'error'>): import("react").JSX.Element;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param {{name: string} & Omit<Parameters<typeof import('../inputs/TransferListInput.js').default>[0], 'name'|'value'|'onChange'|'onBlur'|'error'>} props las de
|
|
3
|
+
* TransferListInput, sin value / onChange / onBlur / error
|
|
4
|
+
*/
|
|
5
|
+
export default function FormTransferListField({ name, ...inputProps }: {
|
|
6
|
+
name: string;
|
|
7
|
+
} & Omit<Parameters<typeof import('../inputs/TransferListInput.js').default>[0], 'name' | 'value' | 'onChange' | 'onBlur' | 'error'>): import("react").JSX.Element;
|
|
@@ -1,7 +1,16 @@
|
|
|
1
|
+
export { default as FormAttachmentsField } from './FormAttachmentsField.js';
|
|
1
2
|
export { default as FormCatalogField } from './FormCatalogField.js';
|
|
3
|
+
export { default as FormCheckboxGroupField } from './FormCheckboxGroupField.js';
|
|
2
4
|
export { default as FormColorField } from './FormColorField.js';
|
|
5
|
+
export { default as FormFileField } from './FormFileField.js';
|
|
6
|
+
export { default as FormFileUploadField } from './FormFileUploadField.js';
|
|
7
|
+
export { default as FormImageField } from './FormImageField.js';
|
|
8
|
+
export { default as FormMaskedField } from './FormMaskedField.js';
|
|
3
9
|
export { default as FormNumberField } from './FormNumberField.js';
|
|
4
10
|
export { default as FormProblemAlert } from './FormProblemAlert.js';
|
|
11
|
+
export { default as FormRepeatingFields } from './FormRepeatingFields.js';
|
|
12
|
+
export { default as FormTransferListField } from './FormTransferListField.js';
|
|
13
|
+
export { listTotalAtMostRule, listTotalOf, orderedInListRule, uniqueInListRule } from './listRules.js';
|
|
5
14
|
export { default as FormSelectField } from './FormSelectField.js';
|
|
6
15
|
export { default as FormServerProblem } from './FormServerProblem.js';
|
|
7
16
|
export { default as FormTextField } from './FormTextField.js';
|
|
@@ -14,6 +23,6 @@ export { default as TwoStepVerificationCard } from './security/TwoStepVerificati
|
|
|
14
23
|
export { RECOVERY_CODE_PATTERN, TOTP_CODE_PATTERN, normalizeRecoveryCode, normalizeTotpCode, } from './security/securityRules.js';
|
|
15
24
|
export { default as SubmitButton } from './SubmitButton.js';
|
|
16
25
|
export { applyServerProblem } from './applyServerProblem.js';
|
|
17
|
-
export { formLevelMessageOf, splitServerFieldErrors } from './serverProblemFields.js';
|
|
26
|
+
export { formLevelMessageOf, splitRowFieldErrors, splitServerFieldErrors } from './serverProblemFields.js';
|
|
18
27
|
export { useFormikField } from './useFormikField.js';
|
|
19
28
|
export { Yup, buildYupLocale, translateValidationMessage } from './validation.js';
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { Money } from '../money/money.js';
|
|
2
|
+
/**
|
|
3
|
+
* Sin repetidos en una columna: el renglón que repite dice con cuál choca.
|
|
4
|
+
*
|
|
5
|
+
* @param {string} listName la lista en el formulario ('tiers')
|
|
6
|
+
* @param {string} field la columna ('min_quantity')
|
|
7
|
+
* @returns {import('yup').TestConfig<any, any>} para .test() de yup
|
|
8
|
+
*/
|
|
9
|
+
export declare function uniqueInListRule(listName: string, field: string): import('yup').TestConfig<any, any>;
|
|
10
|
+
/**
|
|
11
|
+
* En orden por una columna, comparado con el renglón de arriba y el de abajo que tengan valor.
|
|
12
|
+
*
|
|
13
|
+
* @param {string} listName
|
|
14
|
+
* @param {string} field
|
|
15
|
+
* @param {{ascending?: boolean, allowEqual?: boolean, displayOf?: (text: string) => string}} [options] ascending: de menor
|
|
16
|
+
* a mayor (por omisión); displayOf: cómo se dice el valor del vecino en el mensaje (p. ej. con %)
|
|
17
|
+
* @returns {import('yup').TestConfig<any, any>} para .test() de yup
|
|
18
|
+
*/
|
|
19
|
+
export declare function orderedInListRule(listName: string, field: string, { ascending, allowEqual, displayOf }?: {
|
|
20
|
+
ascending?: boolean;
|
|
21
|
+
allowEqual?: boolean;
|
|
22
|
+
displayOf?: (text: string) => string;
|
|
23
|
+
}): import('yup').TestConfig<any, any>;
|
|
24
|
+
/**
|
|
25
|
+
* Lo que suma una columna, con Money (sin errores de decimales). Los vacíos cuentan como cero y los que no son número no
|
|
26
|
+
* cuentan (su propio campo ya lo dice).
|
|
27
|
+
*
|
|
28
|
+
* @param {object[]} rows
|
|
29
|
+
* @param {string} field
|
|
30
|
+
* @param {{currency?: string}} [options]
|
|
31
|
+
* @returns {Money}
|
|
32
|
+
*/
|
|
33
|
+
export declare function listTotalOf(rows: object[], field: string, { currency }?: {
|
|
34
|
+
currency?: string;
|
|
35
|
+
}): Money;
|
|
36
|
+
/**
|
|
37
|
+
* Lo que suman entre todos no pasa de un tope (el reparto de un presupuesto, de un límite de crédito). Va en la lista:
|
|
38
|
+
* Yup.array().test(listTotalAtMostRule(…)); el mensaje sale abajo de la lista.
|
|
39
|
+
*
|
|
40
|
+
* @param {string} field la columna que se suma
|
|
41
|
+
* @param {number|string|((parent: object) => number|string|null)} max el tope, o cómo sacarlo de los demás valores del
|
|
42
|
+
* formulario (el límite que se escribió arriba)
|
|
43
|
+
* @param {{currency?: string}} [options]
|
|
44
|
+
* @returns {import('yup').TestConfig<any, any>} para .test() de yup
|
|
45
|
+
*/
|
|
46
|
+
export declare function listTotalAtMostRule(field: string, max: number | string | ((parent: object) => number | string | null), { currency }?: {
|
|
47
|
+
currency?: string;
|
|
48
|
+
}): import('yup').TestConfig<any, any>;
|
|
@@ -17,3 +17,16 @@ export declare function splitServerFieldErrors(errorsByField: Record<string, str
|
|
|
17
17
|
* @returns {string|null}
|
|
18
18
|
*/
|
|
19
19
|
export declare function formLevelMessageOf(errorsByField: Record<string, string[]>, formFieldNames: string[], generalMessage: string | null | undefined): string | null;
|
|
20
|
+
/**
|
|
21
|
+
* Separa los errores de un 422 que son de un campo DENTRO de un renglón que el formulario sí tiene ('contacts.2.email'
|
|
22
|
+
* con contacts[2] en los valores): esos van a su renglón con la ruta completa. Los demás siguen el camino de siempre
|
|
23
|
+
* (fieldErrorsOf los reduce a su último nombre: 'rows.3.email' → 'email').
|
|
24
|
+
*
|
|
25
|
+
* @param {object|null|undefined} rawErrors problem.errors tal cual ({ruta: [mensajes]})
|
|
26
|
+
* @param {(path: string) => boolean} existsInForm si esa ruta existe en los valores del formulario
|
|
27
|
+
* @returns {{rowFieldErrors: Record<string, string>, otherErrors: Record<string, unknown>}}
|
|
28
|
+
*/
|
|
29
|
+
export declare function splitRowFieldErrors(rawErrors: object | null | undefined, existsInForm: (path: string) => boolean): {
|
|
30
|
+
rowFieldErrors: Record<string, string>;
|
|
31
|
+
otherErrors: Record<string, unknown>;
|
|
32
|
+
};
|
package/dist/types/forms.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { FieldArray, Form, Formik, useField, useFormikContext } from 'formik';
|
|
2
|
-
export { ChangePasswordForm, ForgotPasswordForm, FormCatalogField, FormColorField, FormNumberField, FormProblemAlert, FormSelectField, FormServerProblem, FormTextField, FormWizard, RECOVERY_CODE_PATTERN, SECOND_STEP_METHOD, SecondStepForm, SignInForm, SubmitButton, TOTP_CODE_PATTERN, TwoStepVerificationCard, Yup, applyServerProblem, buildYupLocale, formLevelMessageOf, normalizeRecoveryCode, normalizeTotpCode, splitServerFieldErrors, translateValidationMessage, useFormikField, } from './forms/index.js';
|
|
2
|
+
export { ChangePasswordForm, ForgotPasswordForm, FormAttachmentsField, FormCatalogField, FormCheckboxGroupField, FormColorField, FormFileField, FormFileUploadField, FormImageField, FormMaskedField, FormNumberField, FormProblemAlert, FormRepeatingFields, FormSelectField, FormServerProblem, FormTransferListField, FormTextField, FormWizard, RECOVERY_CODE_PATTERN, SECOND_STEP_METHOD, SecondStepForm, SignInForm, SubmitButton, TOTP_CODE_PATTERN, TwoStepVerificationCard, Yup, applyServerProblem, buildYupLocale, formLevelMessageOf, normalizeRecoveryCode, normalizeTotpCode, listTotalAtMostRule, listTotalOf, orderedInListRule, splitRowFieldErrors, splitServerFieldErrors, translateValidationMessage, uniqueInListRule, useFormikField, } from './forms/index.js';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param {{name: string, control?: object} & Omit<Parameters<typeof import('../upload/AttachmentsInput.js').default>[0], 'name'|'value'|'onChange'|'onBlur'|'error'>} props las del campo de la casa, sin
|
|
3
|
+
* value / onChange / onBlur / error; control: el de useForm, si la pantalla no usa FormProvider
|
|
4
|
+
*/
|
|
5
|
+
export default function FormAttachmentsField({ name, control, ...inputProps }: {
|
|
6
|
+
name: string;
|
|
7
|
+
control?: object;
|
|
8
|
+
} & Omit<Parameters<typeof import('../upload/AttachmentsInput.js').default>[0], 'name' | 'value' | 'onChange' | 'onBlur' | 'error'>): import("react").JSX.Element;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param {{name: string, control?: object} & Omit<Parameters<typeof import('../inputs/CheckboxGroupInput.js').default>[0], 'name'|'value'|'onChange'|'onBlur'|'error'>} props las del campo de la casa, sin
|
|
3
|
+
* value / onChange / onBlur / error; control: el de useForm, si la pantalla no usa FormProvider
|
|
4
|
+
*/
|
|
5
|
+
export default function FormCheckboxGroupField({ name, control, ...inputProps }: {
|
|
6
|
+
name: string;
|
|
7
|
+
control?: object;
|
|
8
|
+
} & Omit<Parameters<typeof import('../inputs/CheckboxGroupInput.js').default>[0], 'name' | 'value' | 'onChange' | 'onBlur' | 'error'>): import("react").JSX.Element;
|