@stackcraftmx/calcita 0.51.0 → 0.53.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 +73 -6
- package/cli/calcita.js +4 -2
- package/cli/checkTexts.js +66 -9
- package/dist/appShell/BarActionButton.js.map +1 -1
- package/dist/datePickers/DateInput.js +5 -3
- package/dist/datePickers/DateInput.js.map +1 -1
- package/dist/datePickers/DateTimeInput.js +6 -4
- package/dist/datePickers/DateTimeInput.js.map +1 -1
- package/dist/datePickers/FormDateField.js +1 -1
- package/dist/datePickers/FormDateField.js.map +1 -1
- package/dist/datePickers/FormDateTimeField.js +1 -1
- package/dist/datePickers/FormDateTimeField.js.map +1 -1
- package/dist/datePickers/FormMonthField.js +1 -1
- package/dist/datePickers/FormMonthField.js.map +1 -1
- package/dist/datePickers/FormTimeField.js +1 -1
- package/dist/datePickers/FormTimeField.js.map +1 -1
- package/dist/datePickers/MonthInput.js +5 -3
- package/dist/datePickers/MonthInput.js.map +1 -1
- package/dist/datePickers/PickerFrame.js +2 -2
- package/dist/datePickers/PickerFrame.js.map +1 -1
- package/dist/datePickers/TimeInput.js +6 -4
- package/dist/datePickers/TimeInput.js.map +1 -1
- package/dist/feedback/Toaster.js +11 -2
- package/dist/feedback/Toaster.js.map +1 -1
- package/dist/forms/CalcitaFormik.js +11 -0
- package/dist/forms/CalcitaFormik.js.map +1 -0
- package/dist/forms/FormAttachmentsField.js +1 -1
- package/dist/forms/FormAttachmentsField.js.map +1 -1
- package/dist/forms/FormCatalogField.js +1 -1
- package/dist/forms/FormCatalogField.js.map +1 -1
- package/dist/forms/FormCheckboxGroupField.js +1 -1
- package/dist/forms/FormCheckboxGroupField.js.map +1 -1
- package/dist/forms/FormColorField.js +1 -1
- package/dist/forms/FormColorField.js.map +1 -1
- package/dist/forms/FormFileField.js +1 -1
- package/dist/forms/FormFileField.js.map +1 -1
- package/dist/forms/FormFileUploadField.js +1 -1
- package/dist/forms/FormFileUploadField.js.map +1 -1
- package/dist/forms/FormImageField.js +1 -1
- package/dist/forms/FormImageField.js.map +1 -1
- package/dist/forms/FormMaskedField.js +1 -1
- package/dist/forms/FormMaskedField.js.map +1 -1
- package/dist/forms/FormNumberField.js +1 -1
- package/dist/forms/FormNumberField.js.map +1 -1
- package/dist/forms/FormSchemaProvider.js +17 -0
- package/dist/forms/FormSchemaProvider.js.map +1 -0
- package/dist/forms/FormSelectField.js +1 -1
- package/dist/forms/FormSelectField.js.map +1 -1
- package/dist/forms/FormTextField.js +1 -1
- package/dist/forms/FormTextField.js.map +1 -1
- package/dist/forms/FormTransferListField.js +1 -1
- package/dist/forms/FormTransferListField.js.map +1 -1
- package/dist/forms/FormWizard.js +23 -6
- package/dist/forms/FormWizard.js.map +1 -1
- package/dist/forms/schemaRequired.js +33 -0
- package/dist/forms/schemaRequired.js.map +1 -0
- package/dist/forms/useFormikField.js +18 -5
- package/dist/forms/useFormikField.js.map +1 -1
- package/dist/forms.js +52 -46
- package/dist/forms.js.map +1 -1
- package/dist/hookForm/FormAttachmentsField.js +1 -1
- package/dist/hookForm/FormAttachmentsField.js.map +1 -1
- package/dist/hookForm/FormCatalogField.js +1 -1
- package/dist/hookForm/FormCatalogField.js.map +1 -1
- package/dist/hookForm/FormCheckboxGroupField.js +1 -1
- package/dist/hookForm/FormCheckboxGroupField.js.map +1 -1
- package/dist/hookForm/FormColorField.js +1 -1
- package/dist/hookForm/FormColorField.js.map +1 -1
- package/dist/hookForm/FormFileField.js +1 -1
- package/dist/hookForm/FormFileField.js.map +1 -1
- package/dist/hookForm/FormFileUploadField.js +1 -1
- package/dist/hookForm/FormFileUploadField.js.map +1 -1
- package/dist/hookForm/FormImageField.js +1 -1
- package/dist/hookForm/FormImageField.js.map +1 -1
- package/dist/hookForm/FormMaskedField.js +1 -1
- package/dist/hookForm/FormMaskedField.js.map +1 -1
- package/dist/hookForm/FormNumberField.js +1 -1
- package/dist/hookForm/FormNumberField.js.map +1 -1
- package/dist/hookForm/FormSelectField.js +1 -1
- package/dist/hookForm/FormSelectField.js.map +1 -1
- package/dist/hookForm/FormTextField.js +1 -1
- package/dist/hookForm/FormTextField.js.map +1 -1
- package/dist/hookForm/FormTransferListField.js +1 -1
- package/dist/hookForm/FormTransferListField.js.map +1 -1
- package/dist/hookForm/FormWizard.js +21 -5
- package/dist/hookForm/FormWizard.js.map +1 -1
- package/dist/hookForm/useHookFormField.js +9 -3
- package/dist/hookForm/useHookFormField.js.map +1 -1
- package/dist/index.js +12 -3
- package/dist/index.js.map +1 -1
- package/dist/inputs/CatalogInput.js +3 -2
- package/dist/inputs/CatalogInput.js.map +1 -1
- package/dist/inputs/CheckboxGroupInput.js +2 -1
- package/dist/inputs/CheckboxGroupInput.js.map +1 -1
- package/dist/inputs/ColorInput.js +3 -1
- package/dist/inputs/ColorInput.js.map +1 -1
- package/dist/inputs/FieldFrame.js +18 -3
- package/dist/inputs/FieldFrame.js.map +1 -1
- package/dist/inputs/FormSection.js +42 -11
- package/dist/inputs/FormSection.js.map +1 -1
- package/dist/inputs/NumberInput.js +3 -1
- package/dist/inputs/NumberInput.js.map +1 -1
- package/dist/inputs/SelectInput.js +3 -1
- package/dist/inputs/SelectInput.js.map +1 -1
- package/dist/inputs/TextInput.js +1 -1
- package/dist/inputs/TextInput.js.map +1 -1
- package/dist/inputs/TransferListInput.js +2 -1
- package/dist/inputs/TransferListInput.js.map +1 -1
- package/dist/inputs/WizardLayout.js +51 -17
- package/dist/inputs/WizardLayout.js.map +1 -1
- package/dist/inputs/formLayoutContext.js +7 -2
- package/dist/inputs/formLayoutContext.js.map +1 -1
- package/dist/inputs/requiredMark.js +17 -0
- package/dist/inputs/requiredMark.js.map +1 -0
- package/dist/inputs/useWizardSteps.js +36 -0
- package/dist/inputs/useWizardSteps.js.map +1 -0
- package/dist/inputs/wizardSteps.js +32 -0
- package/dist/inputs/wizardSteps.js.map +1 -0
- package/dist/locales/en.js +1 -0
- package/dist/locales/en.js.map +1 -1
- package/dist/locales/es.js +1 -0
- package/dist/locales/es.js.map +1 -1
- package/dist/richText/FormRichTextField.js +1 -1
- package/dist/richText/FormRichTextField.js.map +1 -1
- package/dist/richText/RichTextEditor.js +4 -3
- package/dist/richText/RichTextEditor.js.map +1 -1
- package/dist/toolkit/ToolkitProvider.js +3 -0
- package/dist/toolkit/ToolkitProvider.js.map +1 -1
- package/dist/toolkit/toolkitContext.js.map +1 -1
- package/dist/types/appShell/BarActionButton.d.ts +1 -0
- package/dist/types/datePickers/DateInput.d.ts +2 -0
- package/dist/types/datePickers/DateTimeInput.d.ts +2 -0
- package/dist/types/datePickers/FormDateField.d.ts +3 -3
- package/dist/types/datePickers/FormDateTimeField.d.ts +3 -3
- package/dist/types/datePickers/FormMonthField.d.ts +3 -3
- package/dist/types/datePickers/FormTimeField.d.ts +3 -3
- package/dist/types/datePickers/MonthInput.d.ts +2 -0
- package/dist/types/datePickers/PickerFrame.d.ts +3 -1
- package/dist/types/datePickers/TimeInput.d.ts +2 -0
- package/dist/types/feedback/Toaster.d.ts +15 -1
- package/dist/types/feedback/index.d.ts +1 -1
- package/dist/types/forms/CalcitaFormik.d.ts +6 -0
- package/dist/types/forms/FormAttachmentsField.d.ts +3 -3
- package/dist/types/forms/FormCatalogField.d.ts +2 -2
- package/dist/types/forms/FormCheckboxGroupField.d.ts +3 -3
- package/dist/types/forms/FormColorField.d.ts +2 -2
- package/dist/types/forms/FormFileField.d.ts +3 -3
- package/dist/types/forms/FormFileUploadField.d.ts +3 -3
- package/dist/types/forms/FormImageField.d.ts +3 -3
- package/dist/types/forms/FormMaskedField.d.ts +2 -2
- package/dist/types/forms/FormNumberField.d.ts +2 -2
- package/dist/types/forms/FormSchemaProvider.d.ts +13 -0
- package/dist/types/forms/FormSelectField.d.ts +2 -2
- package/dist/types/forms/FormTextField.d.ts +2 -2
- package/dist/types/forms/FormTransferListField.d.ts +3 -3
- package/dist/types/forms/FormWizard.d.ts +14 -1
- package/dist/types/forms/index.d.ts +1 -0
- package/dist/types/forms/schemaRequired.d.ts +14 -0
- package/dist/types/forms/useFormikField.d.ts +10 -4
- package/dist/types/forms.d.ts +4 -2
- package/dist/types/hookForm/FormAttachmentsField.d.ts +3 -3
- package/dist/types/hookForm/FormCatalogField.d.ts +3 -3
- package/dist/types/hookForm/FormCheckboxGroupField.d.ts +3 -3
- package/dist/types/hookForm/FormColorField.d.ts +3 -3
- package/dist/types/hookForm/FormFileField.d.ts +3 -3
- package/dist/types/hookForm/FormFileUploadField.d.ts +3 -3
- package/dist/types/hookForm/FormImageField.d.ts +3 -3
- package/dist/types/hookForm/FormMaskedField.d.ts +3 -3
- package/dist/types/hookForm/FormNumberField.d.ts +3 -3
- package/dist/types/hookForm/FormSelectField.d.ts +3 -3
- package/dist/types/hookForm/FormTextField.d.ts +3 -3
- package/dist/types/hookForm/FormTransferListField.d.ts +3 -3
- package/dist/types/hookForm/FormWizard.d.ts +14 -1
- package/dist/types/hookForm/useHookFormField.d.ts +8 -4
- package/dist/types/index.d.ts +4 -3
- package/dist/types/inputs/CatalogInput.d.ts +1 -0
- package/dist/types/inputs/CheckboxGroupInput.d.ts +1 -0
- package/dist/types/inputs/ColorInput.d.ts +1 -0
- package/dist/types/inputs/FieldFrame.d.ts +1 -0
- package/dist/types/inputs/FormSection.d.ts +13 -0
- package/dist/types/inputs/NumberInput.d.ts +1 -0
- package/dist/types/inputs/SelectInput.d.ts +1 -0
- package/dist/types/inputs/TextInput.d.ts +1 -1
- package/dist/types/inputs/TransferListInput.d.ts +1 -0
- package/dist/types/inputs/WizardLayout.d.ts +6 -2
- package/dist/types/inputs/formLayoutContext.d.ts +8 -1
- package/dist/types/inputs/requiredMark.d.ts +9 -0
- package/dist/types/inputs/useWizardSteps.d.ts +23 -0
- package/dist/types/inputs/wizardSteps.d.ts +65 -0
- package/dist/types/locales/en.d.ts +1 -0
- package/dist/types/locales/es.d.ts +1 -0
- package/dist/types/richText/FormRichTextField.d.ts +3 -3
- package/dist/types/richText/RichTextEditor.d.ts +1 -0
- package/dist/types/toolkit/ToolkitProvider.d.ts +5 -1
- package/dist/types/toolkit/toolkitContext.d.ts +2 -1
- package/dist/types/ui/cards/RecordCard.d.ts +12 -0
- package/dist/types/ui/index.d.ts +1 -1
- package/dist/types/ui/navigation/BackButton.d.ts +1 -0
- package/dist/types/upload/AttachmentsInput.d.ts +2 -0
- package/dist/types/upload/FileInput.d.ts +1 -0
- package/dist/types/upload/FileUploadInput.d.ts +1 -0
- package/dist/types/upload/ImageInput.d.ts +1 -0
- package/dist/ui/cards/RecordCard.js +6 -2
- package/dist/ui/cards/RecordCard.js.map +1 -1
- package/dist/ui/navigation/BackButton.js.map +1 -1
- package/dist/upload/AttachmentsInput.js +2 -1
- package/dist/upload/AttachmentsInput.js.map +1 -1
- package/dist/upload/FileInput.js +2 -1
- package/dist/upload/FileInput.js.map +1 -1
- package/dist/upload/FileUploadInput.js +2 -1
- package/dist/upload/FileUploadInput.js.map +1 -1
- package/dist/upload/ImageInput.js +2 -1
- package/dist/upload/ImageInput.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @param {{name: string, control?: object} & Omit<Parameters<typeof import('../inputs/TextInput.js').default>[0], 'name'|'value'|'onChange'|'onBlur'|'error'>} props las del campo de la casa, sin
|
|
3
|
-
* value
|
|
2
|
+
* @param {{name: string, control?: object} & Omit<Parameters<typeof import('../inputs/TextInput.js').default>[0], 'name'|'value'|'onChange'|'onBlur'|'error'> & Partial<Pick<Parameters<typeof import('../inputs/TextInput.js').default>[0], 'onChange'|'onBlur'>>} props las del campo de la casa, sin
|
|
3
|
+
* value ni error (su onChange y su onBlur corren después de los del formulario); control: el de useForm, si la pantalla no usa FormProvider
|
|
4
4
|
*/
|
|
5
5
|
export default function FormTextField({ name, control, ...inputProps }: {
|
|
6
6
|
name: string;
|
|
7
7
|
control?: object;
|
|
8
|
-
} & Omit<Parameters<typeof import('../inputs/TextInput.js').default>[0], 'name' | 'value' | 'onChange' | 'onBlur' | 'error'>): import("react").JSX.Element;
|
|
8
|
+
} & Omit<Parameters<typeof import('../inputs/TextInput.js').default>[0], 'name' | 'value' | 'onChange' | 'onBlur' | 'error'> & Partial<Pick<Parameters<typeof import('../inputs/TextInput.js').default>[0], 'onChange' | 'onBlur'>>): import("react").JSX.Element;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @param {{name: string, control?: object} & Omit<Parameters<typeof import('../inputs/TransferListInput.js').default>[0], 'name'|'value'|'onChange'|'onBlur'|'error'>} props las del campo de la casa, sin
|
|
3
|
-
* value
|
|
2
|
+
* @param {{name: string, control?: object} & Omit<Parameters<typeof import('../inputs/TransferListInput.js').default>[0], 'name'|'value'|'onChange'|'onBlur'|'error'> & Partial<Pick<Parameters<typeof import('../inputs/TransferListInput.js').default>[0], 'onChange'|'onBlur'>>} props las del campo de la casa, sin
|
|
3
|
+
* value ni error (su onChange y su onBlur corren después de los del formulario); control: el de useForm, si la pantalla no usa FormProvider
|
|
4
4
|
*/
|
|
5
5
|
export default function FormTransferListField({ name, control, ...inputProps }: {
|
|
6
6
|
name: string;
|
|
7
7
|
control?: object;
|
|
8
|
-
} & Omit<Parameters<typeof import('../inputs/TransferListInput.js').default>[0], 'name' | 'value' | 'onChange' | 'onBlur' | 'error'>): import("react").JSX.Element;
|
|
8
|
+
} & Omit<Parameters<typeof import('../inputs/TransferListInput.js').default>[0], 'name' | 'value' | 'onChange' | 'onBlur' | 'error'> & Partial<Pick<Parameters<typeof import('../inputs/TransferListInput.js').default>[0], 'onChange' | 'onBlur'>>): import("react").JSX.Element;
|
|
@@ -6,17 +6,30 @@
|
|
|
6
6
|
* @param {string[]} [props.steps[].fields] los campos del paso (los que revisa «Siguiente»)
|
|
7
7
|
* @param {boolean} [props.steps[].optional] se puede omitir
|
|
8
8
|
* @param {import('react').ReactNode} props.steps[].content los campos del paso
|
|
9
|
+
* @param {boolean} [props.steps[].completed] lleva la palomita (cuando los títulos se pulsan, solo si la pantalla lo dice)
|
|
9
10
|
* @param {string} props.submitLabel ya traducido: el botón del último paso
|
|
11
|
+
* @param {'horizontal'|'vertical'} [props.orientation] uno de WIZARD_ORIENTATION; por omisión horizontal
|
|
12
|
+
* @param {boolean} [props.hideBackOnFirstStep] en el primer paso no se pinta «Anterior»; por omisión sale apagado, como antes
|
|
13
|
+
* @param {string} [props.initialStepKey] la llave del paso en el que se abre (la que diga el servidor); por omisión el primero
|
|
14
|
+
* @param {'none'|'free'|'checked'} [props.stepSelection] uno de WIZARD_STEP_SELECTION: si el título de otro paso se pulsa y qué
|
|
15
|
+
* revisa antes; por omisión none (se avanza con «Siguiente», como siempre)
|
|
16
|
+
* @param {(stepKey: string, index: number) => void} [props.onStepChange] cada vez que cambia el paso abierto
|
|
10
17
|
* @param {object} [props.texts] los textos que cambian, con la forma de `common`: {wizard: {next, back, skip, optional, skipped, stepOf}}
|
|
11
18
|
*/
|
|
12
|
-
export default function FormWizard({ steps, submitLabel, texts, ...unknownProps }: {
|
|
19
|
+
export default function FormWizard({ steps, submitLabel, orientation, hideBackOnFirstStep, initialStepKey, stepSelection, onStepChange, texts, ...unknownProps }: {
|
|
13
20
|
steps: {
|
|
14
21
|
key: string;
|
|
15
22
|
label: string;
|
|
16
23
|
fields?: string[];
|
|
17
24
|
optional?: boolean;
|
|
18
25
|
content: import('react').ReactNode;
|
|
26
|
+
completed?: boolean;
|
|
19
27
|
}[];
|
|
20
28
|
submitLabel: string;
|
|
29
|
+
orientation?: 'horizontal' | 'vertical';
|
|
30
|
+
hideBackOnFirstStep?: boolean;
|
|
31
|
+
initialStepKey?: string;
|
|
32
|
+
stepSelection?: 'none' | 'free' | 'checked';
|
|
33
|
+
onStepChange?: (stepKey: string, index: number) => void;
|
|
21
34
|
texts?: object;
|
|
22
35
|
}): import("react").JSX.Element;
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @param {string} name el campo del formulario
|
|
3
3
|
* @param {object} [control] el de useForm, si la pantalla no usa FormProvider
|
|
4
|
-
* @
|
|
4
|
+
* @param {{onChange?: Function, onBlur?: Function}} [screen] lo que la pantalla le dijo al campo
|
|
5
|
+
* @returns {{name: string, value: unknown, onChange: (value: unknown, ...rest: unknown[]) => void, onBlur: (...args: unknown[]) => void, inputRef: Function, error: unknown}}
|
|
5
6
|
*/
|
|
6
|
-
export declare function useHookFormField(name: string, control?: object
|
|
7
|
+
export declare function useHookFormField(name: string, control?: object, screen?: {
|
|
8
|
+
onChange?: Function;
|
|
9
|
+
onBlur?: Function;
|
|
10
|
+
}): {
|
|
7
11
|
name: string;
|
|
8
12
|
value: unknown;
|
|
9
|
-
onChange: (value: unknown) => void;
|
|
10
|
-
onBlur: () => void;
|
|
13
|
+
onChange: (value: unknown, ...rest: unknown[]) => void;
|
|
14
|
+
onBlur: (...args: unknown[]) => void;
|
|
11
15
|
inputRef: Function;
|
|
12
16
|
error: unknown;
|
|
13
17
|
};
|
package/dist/types/index.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ export { createPathIndex, fillPath } from './toolkit/pathIndex.js';
|
|
|
10
10
|
export { combineTexts } from './toolkit/combineTexts.js';
|
|
11
11
|
export { default as toolkitTextsEs } from './locales/es.js';
|
|
12
12
|
export { default as toolkitTextsEn } from './locales/en.js';
|
|
13
|
-
export { ConfirmDialog, ModalWaiting, NEW_BUILD_NOTICE_VARIANT, NewBuildNotice, StaleBuildBoundary, TOAST_DEFAULT_OPTIONS, Toaster, confirmActionMachine, dismissToast, errorsObjectToMessage, toastDefault, toastError, toastInfo, toastLoading, toastProblem, toastPromise, toastSuccess, toastWarn, useConfirmAction, } from './feedback/index.js';
|
|
13
|
+
export { ConfirmDialog, ModalWaiting, NEW_BUILD_NOTICE_VARIANT, NewBuildNotice, StaleBuildBoundary, TOAST_DEFAULT_OPTIONS, TOASTER_POSITION, Toaster, confirmActionMachine, dismissToast, errorsObjectToMessage, toastDefault, toastError, toastInfo, toastLoading, toastProblem, toastPromise, toastSuccess, toastWarn, useConfirmAction, } from './feedback/index.js';
|
|
14
14
|
export { DEFAULT_FILE_TYPES, DOWNLOAD_STATUS, DownloadManager, UNKNOWN_FILE_TYPE, cancelDownload, clearFinishedDownloads, downloadsMachine, startDownload, useFileTypes, } from './downloads/index.js';
|
|
15
15
|
export { THEME_LOOK, TOP_BAR, createToolkitTheme } from './theme/createToolkitTheme.js';
|
|
16
16
|
export { isAndroidDevice } from './theme/androidDevice.js';
|
|
@@ -62,13 +62,13 @@ export { transferProgressOf } from './upload/transferProgress.js';
|
|
|
62
62
|
export { useFilePicker } from './upload/useFilePicker.js';
|
|
63
63
|
export { buildUploadActors, uploadMachine } from './upload/uploadMachine.js';
|
|
64
64
|
export { uploadWithProgress } from './upload/uploadWithProgress.js';
|
|
65
|
-
export { APP_BAR_HEIGHT_CSS_VARIABLE, BackButton, COMPARISON_OPERATOR, FILTER_DRAWER_ANCHOR, FILTER_FIELD_KIND, FilterDrawer, activeDrawerFilterCountOf, comparisonOf, comparisonTextOf, filterDrawerChipsOf, filterDrawerDefaultsOf, filterDrawerKindsOf, filterKeysOf, CHART_VIEW, CalendarHeatmap, CollapsibleSection, ColorSchemeToggle, ContentDialog, CopyButton, DateRangeFilter, DefinitionList, DetailHeader, DictionaryText, DocumentTitle, DownloadMenu, FONT_SIZE_LEVELS, FontSizeToggle, FullPageLoader, GlassLensFilter, GlassPanel, HELP_CLOSE_REASON, HelpButton, HelpCarouselDialog, ICON_BADGE_CLASSES, ICON_BADGE_VARIANT, IconBadge, LANGUAGES, LanguageToggle, MetricCard, PageBreadcrumbs, PageHeader, PageHeading, ProfileHeader, ROUTE_TABS_MODE, RecordCard, RecordCardSkeleton, RouteTabs, TREND_DIRECTION, PeriodRangeSelector, QuickFilters, SCROLL_MARGIN_BELOW_APP_BAR, SEGMENTED_CONTROL_SX, ScrollableRow, SecretField, SectionCard, SegmentedControl, StatusChip, TableToggle, Tag, scrollableRow, tableRowTextOf, useActiveRouteTab, useAppBarHeightPublisher, useHelpCarousel, } from './ui/index.js';
|
|
65
|
+
export { APP_BAR_HEIGHT_CSS_VARIABLE, BackButton, COMPARISON_OPERATOR, FILTER_DRAWER_ANCHOR, FILTER_FIELD_KIND, FilterDrawer, activeDrawerFilterCountOf, comparisonOf, comparisonTextOf, filterDrawerChipsOf, filterDrawerDefaultsOf, filterDrawerKindsOf, filterKeysOf, CHART_VIEW, CalendarHeatmap, CollapsibleSection, ColorSchemeToggle, ContentDialog, CopyButton, DateRangeFilter, DefinitionList, DetailHeader, DictionaryText, DocumentTitle, DownloadMenu, FONT_SIZE_LEVELS, FontSizeToggle, FullPageLoader, GlassLensFilter, GlassPanel, HELP_CLOSE_REASON, HelpButton, HelpCarouselDialog, ICON_BADGE_CLASSES, ICON_BADGE_VARIANT, IconBadge, LANGUAGES, LanguageToggle, MetricCard, PageBreadcrumbs, PageHeader, PageHeading, ProfileHeader, ROUTE_TABS_MODE, RECORD_CARD_FOOTER_ALIGN, RecordCard, RecordCardSkeleton, RouteTabs, TREND_DIRECTION, PeriodRangeSelector, QuickFilters, SCROLL_MARGIN_BELOW_APP_BAR, SEGMENTED_CONTROL_SX, ScrollableRow, SecretField, SectionCard, SegmentedControl, StatusChip, TableToggle, Tag, scrollableRow, tableRowTextOf, useActiveRouteTab, useAppBarHeightPublisher, useHelpCarousel, } from './ui/index.js';
|
|
66
66
|
export { default as CatalogInput } from './inputs/CatalogInput.js';
|
|
67
67
|
export { default as ColorInput } from './inputs/ColorInput.js';
|
|
68
68
|
export { default as FieldFrame } from './inputs/FieldFrame.js';
|
|
69
69
|
export { default as MaskedInput } from './inputs/MaskedInput.js';
|
|
70
70
|
export { INPUT_MASK, isMaskComplete, maskPatternOf, maskedTextOf, rawValueOf } from './inputs/inputMasks.js';
|
|
71
|
-
export { FORM_ROW_CLASS, FormRow, default as FormSection } from './inputs/FormSection.js';
|
|
71
|
+
export { FORM_LABEL_PLACEMENT, FORM_ROW_CLASS, FormRow, default as FormSection } from './inputs/FormSection.js';
|
|
72
72
|
export { default as CheckboxGroupInput } from './inputs/CheckboxGroupInput.js';
|
|
73
73
|
export { default as NumberInput } from './inputs/NumberInput.js';
|
|
74
74
|
export { default as TransferListInput } from './inputs/TransferListInput.js';
|
|
@@ -77,6 +77,7 @@ export { default as RepeatingFields } from './inputs/RepeatingFields.js';
|
|
|
77
77
|
export { useRowKeys } from './inputs/useRowKeys.js';
|
|
78
78
|
export { default as SelectInput } from './inputs/SelectInput.js';
|
|
79
79
|
export { default as WizardLayout } from './inputs/WizardLayout.js';
|
|
80
|
+
export { WIZARD_ORIENTATION, WIZARD_STEP_SELECTION, isStepCompleted, openingStepOf, stepSelectionActionOf } from './inputs/wizardSteps.js';
|
|
80
81
|
export { default as TextInput } from './inputs/TextInput.js';
|
|
81
82
|
export { HEX_COLOR, MIN_CONTRAST, contrastOnWhite, readableVariantOf } from './inputs/colorContrast.js';
|
|
82
83
|
export { cleanNumberText, completeDecimals, groupThousands } from './inputs/numberText.js';
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dónde va la etiqueta de cada renglón: a la izquierda siempre (side, lo de siempre) o arriba del campo en el teléfono
|
|
3
|
+
* (topOnPhone: por debajo de `sm` en el tema; más ancho, a la izquierda).
|
|
4
|
+
*/
|
|
5
|
+
export declare const FORM_LABEL_PLACEMENT: Readonly<{
|
|
6
|
+
side: "side";
|
|
7
|
+
topOnPhone: "topOnPhone";
|
|
8
|
+
}>;
|
|
1
9
|
/** La clase de cada renglón: la sección le dibuja su línea de arriba, esté donde esté adentro de la tarjeta. */
|
|
2
10
|
export declare const FORM_ROW_CLASS = "calcita-form-row";
|
|
3
11
|
/**
|
|
@@ -8,22 +16,27 @@ export declare const FORM_ROW_CLASS = "calcita-form-row";
|
|
|
8
16
|
* @param {import('react').ReactNode} props.label ya traducida
|
|
9
17
|
* @param {string} [props.htmlFor] el id del campo que nombra la etiqueta
|
|
10
18
|
* @param {string} [props.labelId] el id de la etiqueta (para un campo que la nombra con aria-labelledby)
|
|
19
|
+
* @param {boolean} [props.required] el asterisco en la etiqueta (el lector de pantalla no lo lee: el campo ya lo dice)
|
|
11
20
|
* @param {import('react').ReactNode} props.children
|
|
12
21
|
*/
|
|
13
22
|
export declare function FormRow(props: {
|
|
14
23
|
label: import('react').ReactNode;
|
|
15
24
|
htmlFor?: string;
|
|
16
25
|
labelId?: string;
|
|
26
|
+
required?: boolean;
|
|
17
27
|
children: import('react').ReactNode;
|
|
18
28
|
}): import("react").JSX.Element;
|
|
19
29
|
/**
|
|
20
30
|
* @param {object} props
|
|
21
31
|
* @param {string} [props.title] ya traducido; va arriba de la tarjeta
|
|
22
32
|
* @param {import('react').ReactNode} [props.footer] la explicación, abajo de la tarjeta
|
|
33
|
+
* @param {string} [props.labelPlacement] uno de FORM_LABEL_PLACEMENT: side (por omisión, la etiqueta a la izquierda) o
|
|
34
|
+
* topOnPhone (arriba del campo por debajo de `sm`)
|
|
23
35
|
* @param {import('react').ReactNode} props.children los campos, directo o dentro de un Grid, un Stack o un componente propio
|
|
24
36
|
*/
|
|
25
37
|
export default function FormSection(props: {
|
|
26
38
|
title?: string;
|
|
27
39
|
footer?: import('react').ReactNode;
|
|
40
|
+
labelPlacement?: string;
|
|
28
41
|
children: import('react').ReactNode;
|
|
29
42
|
}): import("react").JSX.Element;
|
|
@@ -15,6 +15,7 @@ declare const NumberInput: (props: {
|
|
|
15
15
|
suffix?: import('react').ReactNode;
|
|
16
16
|
maxDigits?: number;
|
|
17
17
|
disabled?: boolean;
|
|
18
|
+
required?: boolean;
|
|
18
19
|
inputRef?: import('react').Ref<HTMLInputElement>;
|
|
19
20
|
messages?: Record<string, string | object>;
|
|
20
21
|
texts?: object;
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
* @param {string} [props.autoComplete]
|
|
23
23
|
* @param {boolean} [props.autoFocus]
|
|
24
24
|
* @param {boolean} [props.disabled]
|
|
25
|
-
* @param {boolean} [props.required]
|
|
25
|
+
* @param {boolean} [props.required] obligatorio: el asterisco en la etiqueta y, como en MUI, required en el campo
|
|
26
26
|
* @param {boolean} [props.fullWidth]
|
|
27
27
|
* @param {string} [props.id]
|
|
28
28
|
* @param {object} [props.slotProps]
|
|
@@ -3,14 +3,18 @@ declare const WizardLayout: (props: {
|
|
|
3
3
|
key: string;
|
|
4
4
|
label: string;
|
|
5
5
|
optional?: boolean;
|
|
6
|
+
completed?: boolean;
|
|
6
7
|
content: import('react').ReactNode;
|
|
7
8
|
}[];
|
|
8
9
|
activeIndex: number;
|
|
9
|
-
skippedKeys
|
|
10
|
+
skippedKeys?: Set<string>;
|
|
10
11
|
isSubmitting?: boolean;
|
|
12
|
+
orientation?: 'horizontal' | 'vertical';
|
|
13
|
+
hideBackOnFirstStep?: boolean;
|
|
11
14
|
onBack: () => void;
|
|
12
15
|
onNext: () => void;
|
|
13
|
-
onSkip
|
|
16
|
+
onSkip?: () => void;
|
|
17
|
+
onStepSelect?: (index: number) => void;
|
|
14
18
|
submitButton: import('react').ReactNode;
|
|
15
19
|
problemAlert?: import('react').ReactNode;
|
|
16
20
|
texts?: object;
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
/** @type {import('react').Context<false|{labelPlacement: string}>} */
|
|
2
|
+
export declare const FormSectionContext: import('react').Context<false | {
|
|
3
|
+
labelPlacement: string;
|
|
4
|
+
}>;
|
|
2
5
|
/** true si el campo va dentro de una FormSection. */
|
|
3
6
|
export declare const useIsInsideFormSection: () => boolean;
|
|
7
|
+
/** Cómo pide la sección sus renglones ({labelPlacement}); false fuera de una sección. */
|
|
8
|
+
export declare const useFormSectionLayout: () => false | {
|
|
9
|
+
labelPlacement: string;
|
|
10
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** El atributo que marca la etiqueta de un campo obligatorio. */
|
|
2
|
+
export declare const REQUIRED_LABEL_ATTRIBUTE = "data-required";
|
|
3
|
+
/**
|
|
4
|
+
* Los estilos de la etiqueta de un campo obligatorio: la marca después del texto, pegada y del mismo color.
|
|
5
|
+
*
|
|
6
|
+
* @param {string} mark el texto de la marca, ya traducido (common.form.requiredMark: «*»)
|
|
7
|
+
* @returns {object} para el sx de la etiqueta
|
|
8
|
+
*/
|
|
9
|
+
export declare function requiredMarkSxOf(mark: string): object;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param {object} options
|
|
3
|
+
* @param {Array<{key: string}>} options.steps
|
|
4
|
+
* @param {string} [options.initialStepKey] el paso en el que se abre (el que diga el servidor); por omisión el primero
|
|
5
|
+
* @param {string} [options.stepSelection] uno de WIZARD_STEP_SELECTION; por omisión none
|
|
6
|
+
* @param {(stepKey: string, index: number) => void} [options.onStepChange] cada vez que cambia el paso abierto
|
|
7
|
+
* @param {(index: number) => Promise<boolean>} options.isStepValid revisa los campos de ese paso y marca sus errores
|
|
8
|
+
* @returns {{activeIndex: number, setActiveIndex: import('react').Dispatch<import('react').SetStateAction<number>>, selectStep: ((index: number) => Promise<void>)|undefined}}
|
|
9
|
+
* selectStep es undefined con none: así WizardLayout sabe que los títulos no se pulsan
|
|
10
|
+
*/
|
|
11
|
+
export declare function useWizardSteps({ steps, initialStepKey, stepSelection, onStepChange, isStepValid }: {
|
|
12
|
+
steps: Array<{
|
|
13
|
+
key: string;
|
|
14
|
+
}>;
|
|
15
|
+
initialStepKey?: string;
|
|
16
|
+
stepSelection?: string;
|
|
17
|
+
onStepChange?: (stepKey: string, index: number) => void;
|
|
18
|
+
isStepValid: (index: number) => Promise<boolean>;
|
|
19
|
+
}): {
|
|
20
|
+
activeIndex: number;
|
|
21
|
+
setActiveIndex: import('react').Dispatch<import('react').SetStateAction<number>>;
|
|
22
|
+
selectStep: ((index: number) => Promise<void>) | undefined;
|
|
23
|
+
};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cómo se acomodan los pasos:
|
|
3
|
+
* horizontal los pasos en fila arriba y los campos abajo (lo de siempre; en el teléfono, «Paso 2 de 4» y su nombre);
|
|
4
|
+
* vertical uno debajo del otro, como un acordeón: los campos y los botones van dentro del paso que está abierto.
|
|
5
|
+
*/
|
|
6
|
+
export declare const WIZARD_ORIENTATION: Readonly<{
|
|
7
|
+
horizontal: "horizontal";
|
|
8
|
+
vertical: "vertical";
|
|
9
|
+
}>;
|
|
10
|
+
/**
|
|
11
|
+
* Qué pasa al pulsar el título de otro paso:
|
|
12
|
+
* none los títulos no se pulsan (lo de siempre): se avanza con «Siguiente»;
|
|
13
|
+
* free salta directo, sin revisar el paso en el que está; al enviar, el formulario regresa al primer paso con error;
|
|
14
|
+
* checked salta solo si el paso en el que está no tiene errores (igual que «Siguiente»).
|
|
15
|
+
*/
|
|
16
|
+
export declare const WIZARD_STEP_SELECTION: Readonly<{
|
|
17
|
+
none: "none";
|
|
18
|
+
free: "free";
|
|
19
|
+
checked: "checked";
|
|
20
|
+
}>;
|
|
21
|
+
/**
|
|
22
|
+
* El paso en el que se abre: el de esa llave (la que dice el servidor) o el primero si no llega.
|
|
23
|
+
*
|
|
24
|
+
* @param {Array<{key: string}>} steps
|
|
25
|
+
* @param {string} [stepKey]
|
|
26
|
+
* @returns {{index: number, isUnknownKey: boolean}} isUnknownKey: llegó una llave que no es de ningún paso (se abre el primero)
|
|
27
|
+
*/
|
|
28
|
+
export declare function openingStepOf(steps: Array<{
|
|
29
|
+
key: string;
|
|
30
|
+
}>, stepKey?: string): {
|
|
31
|
+
index: number;
|
|
32
|
+
isUnknownKey: boolean;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* ¿Al pulsar el título del paso `targetIndex` hay que revisar antes el paso en el que está? Solo con `checked` y si de veras
|
|
36
|
+
* cambia de paso. Pulsar el paso en el que ya está no hace nada.
|
|
37
|
+
*
|
|
38
|
+
* @param {string} stepSelection uno de WIZARD_STEP_SELECTION
|
|
39
|
+
* @param {number} activeIndex
|
|
40
|
+
* @param {number} targetIndex
|
|
41
|
+
* @returns {'ignore'|'jump'|'checkFirst'}
|
|
42
|
+
*/
|
|
43
|
+
export declare function stepSelectionActionOf(stepSelection: string, activeIndex: number, targetIndex: number): 'ignore' | 'jump' | 'checkFirst';
|
|
44
|
+
/**
|
|
45
|
+
* ¿El paso se pinta como hecho (la palomita)? En fila y sin pulsar, los de antes del que está abierto, salvo los omitidos
|
|
46
|
+
* (lo de siempre). Cuando los títulos se pulsan, «antes» ya no quiere decir «hecho» (se pudo brincar): sin palomita, salvo
|
|
47
|
+
* que la pantalla lo diga en `steps[].completed` (sabe qué datos ya están completos).
|
|
48
|
+
*
|
|
49
|
+
* @param {{key: string, completed?: boolean}} step
|
|
50
|
+
* @param {object} place
|
|
51
|
+
* @param {number} place.index
|
|
52
|
+
* @param {number} place.activeIndex
|
|
53
|
+
* @param {Set<string>} place.skippedKeys
|
|
54
|
+
* @param {boolean} place.isSelectable
|
|
55
|
+
* @returns {boolean}
|
|
56
|
+
*/
|
|
57
|
+
export declare function isStepCompleted(step: {
|
|
58
|
+
key: string;
|
|
59
|
+
completed?: boolean;
|
|
60
|
+
}, { index, activeIndex, skippedKeys, isSelectable }: {
|
|
61
|
+
index: number;
|
|
62
|
+
activeIndex: number;
|
|
63
|
+
skippedKeys: Set<string>;
|
|
64
|
+
isSelectable: boolean;
|
|
65
|
+
}): boolean;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @param {{name: string} & Omit<Parameters<typeof import('./RichTextEditor.js').default>[0], 'name'|'value'|'onChange'|'onBlur'|'error'>} props las de
|
|
3
|
-
* RichTextEditor (features, maxLength, placeholder…), sin value
|
|
2
|
+
* @param {{name: string} & Omit<Parameters<typeof import('./RichTextEditor.js').default>[0], 'name'|'value'|'onChange'|'onBlur'|'error'> & Partial<Pick<Parameters<typeof import('./RichTextEditor.js').default>[0], 'onChange'|'onBlur'>>} props las de
|
|
3
|
+
* RichTextEditor (features, maxLength, placeholder…), sin value ni error (su onChange y su onBlur corren después de los del formulario)
|
|
4
4
|
*/
|
|
5
5
|
export default function FormRichTextField({ name, ...editorProps }: {
|
|
6
6
|
name: string;
|
|
7
|
-
} & Omit<Parameters<typeof import('./RichTextEditor.js').default>[0], 'name' | 'value' | 'onChange' | 'onBlur' | 'error'>): import("react").JSX.Element;
|
|
7
|
+
} & Omit<Parameters<typeof import('./RichTextEditor.js').default>[0], 'name' | 'value' | 'onChange' | 'onBlur' | 'error'> & Partial<Pick<Parameters<typeof import('./RichTextEditor.js').default>[0], 'onChange' | 'onBlur'>>): import("react").JSX.Element;
|
|
@@ -16,6 +16,9 @@
|
|
|
16
16
|
* consola una vez por idioma y llave
|
|
17
17
|
* @param {(namespace: string, key: string, values?: object) => string|undefined} [props.translate] traductor del
|
|
18
18
|
* proyecto (por ejemplo i18next); undefined deja el texto del paquete
|
|
19
|
+
* @param {boolean} [props.requiredFromSchema] los campos de formik leen del esquema de yup del formulario (validationSchema)
|
|
20
|
+
* qué es obligatorio y le ponen su asterisco: el esquema manda y la pantalla no los marca a mano. Lo que la pantalla diga
|
|
21
|
+
* con required gana. Por omisión no (cada campo con su required, como antes)
|
|
19
22
|
* @param {string} [props.timeZone] zona de las fechas (por omisión la del navegador)
|
|
20
23
|
* @param {string} [props.currency] moneda de los montos, código ISO 4217 (por omisión MXN)
|
|
21
24
|
* @param {'h23'|'h12'} [props.hourCycle] la hora de 24 horas («15:10», por omisión) o de 12 con a.m. y p.m. («3:10 p.m.»):
|
|
@@ -29,7 +32,7 @@
|
|
|
29
32
|
* tiene regla
|
|
30
33
|
* @param {import('react').ReactNode} props.children
|
|
31
34
|
*/
|
|
32
|
-
export declare const ToolkitProvider: ({ language, languages, onLanguageChange, onMissingText, readValidationMessage, texts, translate, timeZone, currency, hourCycle, appName, navigation, buildId, canAccess, fileTypes, children, ...unknownProps }: {
|
|
35
|
+
export declare const ToolkitProvider: ({ language, languages, onLanguageChange, onMissingText, readValidationMessage, requiredFromSchema, texts, translate, timeZone, currency, hourCycle, appName, navigation, buildId, canAccess, fileTypes, children, ...unknownProps }: {
|
|
33
36
|
language?: string;
|
|
34
37
|
languages?: Array<{
|
|
35
38
|
code: string;
|
|
@@ -51,6 +54,7 @@ export declare const ToolkitProvider: ({ language, languages, onLanguageChange,
|
|
|
51
54
|
language: string;
|
|
52
55
|
}) => void;
|
|
53
56
|
translate?: (namespace: string, key: string, values?: object) => string | undefined;
|
|
57
|
+
requiredFromSchema?: boolean;
|
|
54
58
|
timeZone?: string;
|
|
55
59
|
currency?: string;
|
|
56
60
|
hourCycle?: 'h23' | 'h12';
|
|
@@ -2,11 +2,12 @@ export declare const ToolkitContext: import("react").Context<null>;
|
|
|
2
2
|
/**
|
|
3
3
|
* La configuración del proveedor; sin proveedor, la vigente con la navegación del navegador.
|
|
4
4
|
*
|
|
5
|
-
* @returns {{language: string, onLanguageChange: Function|null, texts: object, translate: Function|null, timeZone: string, currency: string, hourCycle: 'h23'|'h12', appName: string, buildId: string, navigation: object, canAccess: Function}}
|
|
5
|
+
* @returns {{language: string, onLanguageChange: Function|null, requiredFromSchema?: boolean, texts: object, translate: Function|null, timeZone: string, currency: string, hourCycle: 'h23'|'h12', appName: string, buildId: string, navigation: object, canAccess: Function}}
|
|
6
6
|
*/
|
|
7
7
|
export declare function useToolkitSettings(): {
|
|
8
8
|
language: string;
|
|
9
9
|
onLanguageChange: Function | null;
|
|
10
|
+
requiredFromSchema?: boolean;
|
|
10
11
|
texts: object;
|
|
11
12
|
translate: Function | null;
|
|
12
13
|
timeZone: string;
|
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cómo se acomoda el renglón de abajo (footer y «Ver detalle»):
|
|
3
|
+
* spaceBetween el footer a la izquierda y «Ver detalle» en la otra orilla (lo de siempre);
|
|
4
|
+
* start los dos juntos, a la izquierda;
|
|
5
|
+
* end los dos juntos, a la derecha.
|
|
6
|
+
*/
|
|
7
|
+
export declare const RECORD_CARD_FOOTER_ALIGN: Readonly<{
|
|
8
|
+
spaceBetween: "spaceBetween";
|
|
9
|
+
start: "start";
|
|
10
|
+
end: "end";
|
|
11
|
+
}>;
|
|
1
12
|
declare const RecordCard: (props: {
|
|
2
13
|
title: import('react').ReactNode;
|
|
3
14
|
eyebrow?: import('react').ReactNode;
|
|
@@ -25,6 +36,7 @@ declare const RecordCard: (props: {
|
|
|
25
36
|
trailing?: import('react').ReactNode;
|
|
26
37
|
columns?: string;
|
|
27
38
|
footer?: import('react').ReactNode;
|
|
39
|
+
footerAlign?: 'spaceBetween' | 'start' | 'end';
|
|
28
40
|
details?: import('react').ReactNode;
|
|
29
41
|
detailsLabel?: string;
|
|
30
42
|
defaultDetailsOpen?: boolean;
|
package/dist/types/ui/index.d.ts
CHANGED
|
@@ -21,7 +21,7 @@ export { default as PageBreadcrumbs } from './navigation/PageBreadcrumbs.js';
|
|
|
21
21
|
export { ROUTE_TABS_MODE, default as RouteTabs, useActiveRouteTab } from './navigation/RouteTabs.js';
|
|
22
22
|
export { default as HelpButton } from './help/HelpButton.js';
|
|
23
23
|
export { HELP_CLOSE_REASON, default as HelpCarouselDialog } from './help/HelpCarouselDialog.js';
|
|
24
|
-
export { default as RecordCard } from './cards/RecordCard.js';
|
|
24
|
+
export { RECORD_CARD_FOOTER_ALIGN, default as RecordCard } from './cards/RecordCard.js';
|
|
25
25
|
export { default as RecordCardSkeleton } from './cards/RecordCardSkeleton.js';
|
|
26
26
|
export { useHelpCarousel } from './help/useHelpCarousel.js';
|
|
27
27
|
export { default as DateRangeFilter } from './filters/DateRangeFilter.js';
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
* @param {boolean} [props.showButton] false esconde «Adjuntar» (la ventana se abre con pickerRef desde un botón suyo)
|
|
20
20
|
* @param {import('react').Ref<{open: () => void}>} [props.pickerRef] recibe {open} para abrir la ventana de archivos
|
|
21
21
|
* @param {boolean} [props.disabled]
|
|
22
|
+
* @param {boolean} [props.required] obligatorio: el asterisco en la etiqueta (lo revisa el esquema del formulario)
|
|
22
23
|
* @param {boolean} [props.busy] candado mientras se sube: no se puede agregar ni quitar
|
|
23
24
|
* @param {(file: File, reason: string) => void} [props.onReject] reason es uno de FILE_REJECTION; sin él, un aviso
|
|
24
25
|
* @param {Parameters<typeof import('./TemplateDownloadButton.js').default>[0]} [props.template] «Descargar la
|
|
@@ -57,6 +58,7 @@ declare function AttachmentsInputContent<T extends File | {
|
|
|
57
58
|
open: () => void;
|
|
58
59
|
}>;
|
|
59
60
|
disabled?: boolean;
|
|
61
|
+
required?: boolean;
|
|
60
62
|
busy?: boolean;
|
|
61
63
|
onReject?: (file: File, reason: string) => void;
|
|
62
64
|
template?: Parameters<typeof import('./TemplateDownloadButton.js').default>[0];
|
|
@@ -17,6 +17,7 @@ declare const FileInput: (props: {
|
|
|
17
17
|
buttonLabel?: string;
|
|
18
18
|
emptyText?: string;
|
|
19
19
|
disabled?: boolean;
|
|
20
|
+
required?: boolean;
|
|
20
21
|
busy?: boolean;
|
|
21
22
|
onReject?: (file: File, reason: string) => void;
|
|
22
23
|
template?: Parameters<typeof import('./TemplateDownloadButton.js').default>[0];
|
|
@@ -17,6 +17,8 @@ import { piecePart, withPieceSlots, usePieceProps } from "../../theme/themePiece
|
|
|
17
17
|
import { useToolkitTranslation } from "../../toolkit/useToolkitTranslation.js";
|
|
18
18
|
import { warnUnknownProps } from "../../toolkit/unknownProps.js";
|
|
19
19
|
import ActionsMenu from "../actions/ActionsMenu.js";
|
|
20
|
+
const RECORD_CARD_FOOTER_ALIGN = Object.freeze({ spaceBetween: "spaceBetween", start: "start", end: "end" });
|
|
21
|
+
const FOOTER_JUSTIFY = Object.freeze({ spaceBetween: "flex-start", start: "flex-start", end: "flex-end" });
|
|
20
22
|
const THEME_NAME = "CalcitaRecordCard";
|
|
21
23
|
const RecordCardRoot = piecePart(THEME_NAME, "Root", Paper);
|
|
22
24
|
const RecordCardHeader = piecePart(THEME_NAME, "Header", Stack);
|
|
@@ -42,6 +44,7 @@ function RecordCardContent(props) {
|
|
|
42
44
|
trailing,
|
|
43
45
|
columns,
|
|
44
46
|
footer,
|
|
47
|
+
footerAlign = RECORD_CARD_FOOTER_ALIGN.spaceBetween,
|
|
45
48
|
details,
|
|
46
49
|
detailsLabel,
|
|
47
50
|
defaultDetailsOpen = false,
|
|
@@ -122,8 +125,8 @@ function RecordCardContent(props) {
|
|
|
122
125
|
trailing && /* @__PURE__ */ jsx(Box, { sx: { minWidth: 0, alignSelf: "center", borderTop: { xs: 1, md: 0 }, pt: { xs: 1.5, md: 0 }, borderColor: "divider" }, children: trailing })
|
|
123
126
|
] }),
|
|
124
127
|
children,
|
|
125
|
-
(footer || details) && /* @__PURE__ */ jsxs(RecordCardFooter, { direction: "row", ownSx: { mt: 2, gap: 1, alignItems: "center", flexWrap: "wrap" }, children: [
|
|
126
|
-
/* @__PURE__ */ jsx(Box, { sx: { flex: 1, minWidth: 0 }, children: footer }),
|
|
128
|
+
(footer || details) && /* @__PURE__ */ jsxs(RecordCardFooter, { direction: "row", ownSx: { mt: 2, gap: 1, alignItems: "center", flexWrap: "wrap", justifyContent: FOOTER_JUSTIFY[footerAlign] ?? "flex-start" }, children: [
|
|
129
|
+
/* @__PURE__ */ jsx(Box, { sx: { flex: footerAlign === RECORD_CARD_FOOTER_ALIGN.spaceBetween ? 1 : "0 1 auto", minWidth: 0 }, children: footer }),
|
|
127
130
|
details && /* @__PURE__ */ jsx(
|
|
128
131
|
Button,
|
|
129
132
|
{
|
|
@@ -141,6 +144,7 @@ function RecordCardContent(props) {
|
|
|
141
144
|
}
|
|
142
145
|
const RecordCard = withPieceSlots(RecordCardContent, THEME_NAME);
|
|
143
146
|
export {
|
|
147
|
+
RECORD_CARD_FOOTER_ALIGN,
|
|
144
148
|
RecordCard as default
|
|
145
149
|
};
|
|
146
150
|
//# sourceMappingURL=RecordCard.js.map
|