@aws-amplify/ui-react 5.3.1 → 6.0.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/dist/Field-6c0e096a.js +1174 -0
- package/dist/esm/PrimitiveCatalog.mjs +16255 -1
- package/dist/esm/components/AccountSettings/AccountSettings.mjs +6 -1
- package/dist/esm/components/AccountSettings/ChangePassword/ChangePassword.mjs +209 -1
- package/dist/esm/components/AccountSettings/ChangePassword/defaults.mjs +77 -1
- package/dist/esm/components/AccountSettings/DeleteUser/DeleteUser.mjs +156 -1
- package/dist/esm/components/AccountSettings/DeleteUser/defaults.mjs +85 -1
- package/dist/esm/components/AccountSettings/constants.mjs +7 -1
- package/dist/esm/components/AccountSettings/shared/Defaults.mjs +66 -1
- package/dist/esm/components/AccountSettings/utils/displayText.mjs +14 -0
- package/dist/esm/components/Authenticator/Authenticator.mjs +74 -1
- package/dist/esm/components/Authenticator/ConfirmSignIn/ConfirmSignIn.mjs +42 -1
- package/dist/esm/components/Authenticator/ConfirmSignUp/ConfirmSignUp.mjs +51 -1
- package/dist/esm/components/Authenticator/FederatedSignIn/FederatedSignIn.mjs +34 -1
- package/dist/esm/components/Authenticator/FederatedSignIn/FederatedSignInButtons/FederatedSignInButton.mjs +54 -1
- package/dist/esm/components/Authenticator/ForceNewPassword/ForceNewPassword.mjs +43 -1
- package/dist/esm/components/Authenticator/ForgotPassword/ConfirmResetPassword.mjs +39 -0
- package/dist/esm/components/Authenticator/ForgotPassword/ForgotPassword.mjs +40 -0
- package/dist/esm/components/Authenticator/RouteContainer/RouteContainer.mjs +26 -1
- package/dist/esm/components/Authenticator/Router/Router.mjs +63 -1
- package/dist/esm/components/Authenticator/SetupTotp/SetupTotp.mjs +76 -0
- package/dist/esm/components/Authenticator/SignIn/SignIn.mjs +47 -1
- package/dist/esm/components/Authenticator/SignUp/SignUp.mjs +46 -1
- package/dist/esm/components/Authenticator/VerifyUser/ConfirmVerifyUser.mjs +37 -1
- package/dist/esm/components/Authenticator/VerifyUser/VerifyUser.mjs +59 -1
- package/dist/esm/components/Authenticator/hooks/useCustomComponents/defaultComponents.mjs +62 -1
- package/dist/esm/components/Authenticator/hooks/useCustomComponents/useCustomComponents.mjs +14 -1
- package/dist/esm/components/Authenticator/hooks/useFormHandlers/useFormHandlers.mjs +30 -1
- package/dist/esm/components/Authenticator/shared/ConfirmSignInFooter.mjs +18 -1
- package/dist/esm/components/Authenticator/shared/FormField.mjs +35 -1
- package/dist/esm/components/Authenticator/shared/FormFields.mjs +15 -1
- package/dist/esm/components/Authenticator/shared/RemoteErrorMessage.mjs +11 -1
- package/dist/esm/components/Authenticator/shared/SignInSignUpTabs.mjs +27 -1
- package/dist/esm/components/Authenticator/shared/TwoButtonSubmitFooter.mjs +35 -1
- package/dist/esm/components/Authenticator/utils.mjs +3 -1
- package/dist/esm/components/Authenticator/withAuthenticator.mjs +14 -1
- package/dist/esm/components/ThemeProvider/ThemeContext.mjs +8 -0
- package/dist/esm/components/ThemeProvider/ThemeProvider.mjs +23 -1
- package/dist/esm/components/index.mjs +5 -1
- package/dist/esm/components/shared/ValidationErrors.mjs +15 -1
- package/dist/esm/helpers/utils.mjs +6 -1
- package/dist/esm/hooks/useAuth.mjs +73 -1
- package/dist/esm/hooks/useBreakpointValue.mjs +29 -1
- package/dist/esm/hooks/useComposeRefsCallback.mjs +20 -1
- package/dist/esm/hooks/useDeprecationWarning.mjs +15 -1
- package/dist/esm/hooks/useStorageURL.mjs +40 -1
- package/dist/esm/hooks/useTheme.mjs +23 -1
- package/dist/esm/hooks/useThemeBreakpoint.mjs +19 -1
- package/dist/esm/index.mjs +71 -1
- package/dist/esm/internal.mjs +32 -1
- package/dist/esm/primitives/Accordion/Accordion.mjs +28 -0
- package/dist/esm/primitives/Accordion/AccordionContainer.mjs +49 -0
- package/dist/esm/primitives/Accordion/AccordionContent.mjs +15 -0
- package/dist/esm/primitives/Accordion/AccordionContext.mjs +6 -0
- package/dist/esm/primitives/Accordion/AccordionIcon.mjs +20 -0
- package/dist/esm/primitives/Accordion/AccordionItem.mjs +19 -0
- package/dist/esm/primitives/Accordion/AccordionTrigger.mjs +27 -0
- package/dist/esm/primitives/Alert/Alert.mjs +36 -1
- package/dist/esm/primitives/Alert/AlertIcon.mjs +36 -1
- package/dist/esm/primitives/Autocomplete/Autocomplete.mjs +67 -1
- package/dist/esm/primitives/Autocomplete/AutocompleteMenu.mjs +36 -1
- package/dist/esm/primitives/Autocomplete/AutocompleteOption.mjs +12 -1
- package/dist/esm/primitives/Autocomplete/useAutocomplete.mjs +188 -1
- package/dist/esm/primitives/Badge/Badge.mjs +16 -1
- package/dist/esm/primitives/Breadcrumbs/BreadcrumbContainer.mjs +18 -1
- package/dist/esm/primitives/Breadcrumbs/BreadcrumbItem.mjs +16 -1
- package/dist/esm/primitives/Breadcrumbs/BreadcrumbLink.mjs +24 -1
- package/dist/esm/primitives/Breadcrumbs/BreadcrumbSeparator.mjs +16 -1
- package/dist/esm/primitives/Breadcrumbs/Breadcrumbs.mjs +28 -1
- package/dist/esm/primitives/Button/Button.mjs +33 -1
- package/dist/esm/primitives/ButtonGroup/ButtonGroup.mjs +19 -1
- package/dist/esm/primitives/Card/Card.mjs +15 -1
- package/dist/esm/primitives/Checkbox/Checkbox.mjs +84 -1
- package/dist/esm/primitives/CheckboxField/CheckboxField.mjs +24 -1
- package/dist/esm/primitives/Collection/Collection.mjs +58 -1
- package/dist/esm/primitives/Collection/utils.mjs +30 -1
- package/dist/esm/primitives/Divider/Divider.mjs +16 -1
- package/dist/esm/primitives/DropZone/DropZone.mjs +27 -1
- package/dist/esm/primitives/DropZone/DropZoneChildren.mjs +39 -1
- package/dist/esm/primitives/DropZone/DropZoneContainer.mjs +18 -1
- package/dist/esm/primitives/DropZone/DropZoneProvider.mjs +8 -1
- package/dist/esm/primitives/DropZone/filterAllowedFiles.mjs +34 -0
- package/dist/esm/primitives/DropZone/useDropZone.mjs +65 -1
- package/dist/esm/primitives/Field/Field.mjs +20 -1
- package/dist/esm/primitives/Field/FieldClearButton.mjs +21 -1
- package/dist/esm/primitives/Field/FieldDescription.mjs +11 -1
- package/dist/esm/primitives/Field/FieldErrorMessage.mjs +10 -1
- package/dist/esm/primitives/FieldGroup/FieldGroup.mjs +29 -1
- package/dist/esm/primitives/FieldGroupIcon/FieldGroupIcon.mjs +12 -1
- package/dist/esm/primitives/FieldGroupIcon/FieldGroupIconButton.mjs +11 -1
- package/dist/esm/primitives/Fieldset/Fieldset.mjs +33 -1
- package/dist/esm/primitives/Fieldset/useFieldset.mjs +13 -1
- package/dist/esm/primitives/Flex/Flex.mjs +13 -1
- package/dist/esm/primitives/Grid/Grid.mjs +13 -1
- package/dist/esm/primitives/Heading/Heading.mjs +21 -1
- package/dist/esm/primitives/HighlightMatch/HighlightMatch.mjs +28 -1
- package/dist/esm/primitives/Icon/Icon.mjs +36 -1
- package/dist/esm/primitives/Icon/context/IconsContext.mjs +5 -1
- package/dist/esm/primitives/Icon/context/IconsProvider.mjs +8 -1
- package/dist/esm/primitives/Icon/context/useIcons.mjs +12 -1
- package/dist/esm/primitives/Icon/icons/IconAdd.mjs +15 -1
- package/dist/esm/primitives/Icon/icons/IconCheck.mjs +15 -1
- package/dist/esm/primitives/Icon/icons/IconCheckCircle.mjs +15 -1
- package/dist/esm/primitives/Icon/icons/IconCheckCircleOutline.mjs +13 -1
- package/dist/esm/primitives/Icon/icons/IconChevronLeft.mjs +15 -1
- package/dist/esm/primitives/Icon/icons/IconChevronRight.mjs +15 -1
- package/dist/esm/primitives/Icon/icons/IconClose.mjs +15 -1
- package/dist/esm/primitives/Icon/icons/IconEdit.mjs +15 -1
- package/dist/esm/primitives/Icon/icons/IconError.mjs +15 -1
- package/dist/esm/primitives/Icon/icons/IconExpandMore.mjs +15 -1
- package/dist/esm/primitives/Icon/icons/IconFile.mjs +15 -1
- package/dist/esm/primitives/Icon/icons/IconIndeterminate.mjs +15 -1
- package/dist/esm/primitives/Icon/icons/IconInfo.mjs +15 -1
- package/dist/esm/primitives/Icon/icons/IconMenu.mjs +15 -1
- package/dist/esm/primitives/Icon/icons/IconRemove.mjs +15 -1
- package/dist/esm/primitives/Icon/icons/IconSearch.mjs +15 -1
- package/dist/esm/primitives/Icon/icons/IconStar.mjs +15 -1
- package/dist/esm/primitives/Icon/icons/IconUpload.mjs +15 -1
- package/dist/esm/primitives/Icon/icons/IconVisibility.mjs +15 -1
- package/dist/esm/primitives/Icon/icons/IconVisibilityOff.mjs +15 -1
- package/dist/esm/primitives/Icon/icons/IconWarning.mjs +15 -1
- package/dist/esm/primitives/Image/Image.mjs +13 -1
- package/dist/esm/primitives/Input/Input.mjs +15 -1
- package/dist/esm/primitives/Label/Label.mjs +14 -1
- package/dist/esm/primitives/Link/Link.mjs +15 -1
- package/dist/esm/primitives/Loader/Loader.mjs +56 -1
- package/dist/esm/primitives/Menu/Menu.mjs +31 -1
- package/dist/esm/primitives/Menu/MenuButton.mjs +18 -1
- package/dist/esm/primitives/Menu/MenuItem.mjs +22 -1
- package/dist/esm/primitives/Message/Message.mjs +23 -1
- package/dist/esm/primitives/Message/MessageContainer.mjs +19 -1
- package/dist/esm/primitives/Message/MessageContent.mjs +12 -1
- package/dist/esm/primitives/Message/MessageDismiss.mjs +28 -1
- package/dist/esm/primitives/Message/MessageHeading.mjs +12 -1
- package/dist/esm/primitives/Message/MessageIcon.mjs +35 -1
- package/dist/esm/primitives/Message/useMessage.mjs +9 -1
- package/dist/esm/primitives/Pagination/Pagination.mjs +31 -1
- package/dist/esm/primitives/Pagination/PaginationItem.mjs +48 -1
- package/dist/esm/primitives/Pagination/usePagination.mjs +41 -1
- package/dist/esm/primitives/Pagination/usePaginationItems.mjs +39 -1
- package/dist/esm/primitives/Pagination/useRange.mjs +72 -1
- package/dist/esm/primitives/PasswordField/PasswordField.mjs +25 -1
- package/dist/esm/primitives/PasswordField/ShowPasswordButton.mjs +30 -1
- package/dist/esm/primitives/PhoneNumberField/DialCodeSelect.mjs +21 -0
- package/dist/esm/primitives/PhoneNumberField/PhoneNumberField.mjs +17 -1
- package/dist/esm/primitives/Placeholder/Placeholder.mjs +18 -1
- package/dist/esm/primitives/Radio/Radio.mjs +31 -1
- package/dist/esm/primitives/RadioGroupField/RadioGroupField.mjs +55 -1
- package/dist/esm/primitives/RadioGroupField/context.mjs +9 -1
- package/dist/esm/primitives/Rating/Rating.mjs +44 -1
- package/dist/esm/primitives/Rating/RatingIcon.mjs +11 -1
- package/dist/esm/primitives/Rating/RatingMixedIcon.mjs +13 -1
- package/dist/esm/primitives/Rating/utils.mjs +18 -1
- package/dist/esm/primitives/ScrollView/ScrollView.mjs +13 -1
- package/dist/esm/primitives/SearchField/SearchField.mjs +38 -1
- package/dist/esm/primitives/SearchField/SearchFieldButton.mjs +21 -1
- package/dist/esm/primitives/SearchField/useSearchField.mjs +64 -1
- package/dist/esm/primitives/Select/Select.mjs +31 -1
- package/dist/esm/primitives/SelectField/SelectField.mjs +42 -1
- package/dist/esm/primitives/SliderField/SliderField.mjs +77 -1
- package/dist/esm/primitives/StepperField/StepperField.mjs +60 -1
- package/dist/esm/primitives/StepperField/useStepper.mjs +113 -1
- package/dist/esm/primitives/SwitchField/SwitchField.mjs +48 -1
- package/dist/esm/primitives/SwitchField/useSwitch.mjs +30 -1
- package/dist/esm/primitives/Table/Table.mjs +18 -1
- package/dist/esm/primitives/Table/TableBody.mjs +10 -1
- package/dist/esm/primitives/Table/TableCell.mjs +12 -1
- package/dist/esm/primitives/Table/TableFoot.mjs +10 -1
- package/dist/esm/primitives/Table/TableHead.mjs +10 -1
- package/dist/esm/primitives/Table/TableRow.mjs +10 -1
- package/dist/esm/primitives/Tabs/Tabs.mjs +24 -1
- package/dist/esm/primitives/Tabs/TabsContainer.mjs +35 -0
- package/dist/esm/primitives/Tabs/TabsContext.mjs +8 -0
- package/dist/esm/primitives/Tabs/TabsItem.mjs +24 -0
- package/dist/esm/primitives/Tabs/TabsList.mjs +85 -0
- package/dist/esm/primitives/Tabs/TabsPanel.mjs +19 -0
- package/dist/esm/primitives/Text/Text.mjs +16 -1
- package/dist/esm/primitives/TextArea/TextArea.mjs +15 -1
- package/dist/esm/primitives/TextAreaField/TextAreaField.mjs +36 -1
- package/dist/esm/primitives/TextField/TextField.mjs +34 -1
- package/dist/esm/primitives/ToggleButton/ToggleButton.mjs +24 -1
- package/dist/esm/primitives/ToggleButton/useToggleButton.mjs +23 -1
- package/dist/esm/primitives/ToggleButtonGroup/ToggleButtonGroup.mjs +35 -1
- package/dist/esm/primitives/ToggleButtonGroup/useToggleButtonGroup.mjs +36 -1
- package/dist/esm/primitives/View/View.mjs +23 -1
- package/dist/esm/primitives/VisuallyHidden/VisuallyHidden.mjs +13 -1
- package/dist/esm/primitives/index.mjs +63 -1
- package/dist/esm/primitives/shared/constants.mjs +98 -1
- package/dist/esm/primitives/shared/getStyleValue.mjs +25 -1
- package/dist/esm/primitives/shared/responsive/getMediaQueries.mjs +29 -1
- package/dist/esm/primitives/shared/responsive/useBreakpoint.mjs +39 -1
- package/dist/esm/primitives/shared/responsive/utils.mjs +51 -1
- package/dist/esm/primitives/shared/styleUtils.mjs +122 -1
- package/dist/esm/primitives/shared/utils.mjs +60 -1
- package/dist/esm/primitives/types/style.mjs +104 -1
- package/dist/esm/primitives/types/theme.mjs +7 -1
- package/dist/esm/primitives/utils/getTestId.mjs +3 -1
- package/dist/esm/primitives/utils/primitiveWithForwardRef.mjs +14 -0
- package/dist/esm/primitives/utils/splitPrimitiveProps.mjs +36 -1
- package/dist/esm/primitives/utils/useLayoutEffect.mjs +13 -1
- package/dist/esm/primitives/utils/useStableId.mjs +34 -1
- package/dist/esm/version.mjs +3 -1
- package/dist/index.js +3485 -1
- package/dist/internal.js +16403 -1
- package/dist/styles/StorageManager.css +138 -0
- package/dist/styles/StorageManager.layer.css +140 -0
- package/dist/styles/_fieldControl.css +0 -0
- package/dist/styles/_fieldControl.layer.css +3 -0
- package/dist/styles/accordion.css +64 -0
- package/dist/styles/accordion.layer.css +66 -0
- package/dist/styles/alert.css +44 -0
- package/dist/styles/alert.layer.css +46 -0
- package/dist/styles/authenticator.css +72 -0
- package/dist/styles/authenticator.layer.css +74 -0
- package/dist/styles/autocomplete.css +48 -0
- package/dist/styles/autocomplete.layer.css +50 -0
- package/dist/styles/badge.css +35 -0
- package/dist/styles/badge.layer.css +37 -0
- package/dist/styles/base.css +1491 -0
- package/dist/styles/base.layer.css +1493 -0
- package/dist/styles/breadcrumbs.css +40 -0
- package/dist/styles/breadcrumbs.layer.css +42 -0
- package/dist/styles/button.css +1122 -0
- package/dist/styles/button.layer.css +1124 -0
- package/dist/styles/card.css +26 -0
- package/dist/styles/card.layer.css +28 -0
- package/dist/styles/checkbox.css +95 -0
- package/dist/styles/checkbox.layer.css +97 -0
- package/dist/styles/checkboxField.css +6 -0
- package/dist/styles/checkboxField.layer.css +8 -0
- package/dist/styles/collection.css +70 -0
- package/dist/styles/collection.layer.css +72 -0
- package/dist/styles/copy.css +27 -0
- package/dist/styles/copy.layer.css +29 -0
- package/dist/styles/dialCodeSelect.css +3 -0
- package/dist/styles/dialCodeSelect.layer.css +5 -0
- package/dist/styles/divider.css +47 -0
- package/dist/styles/divider.layer.css +49 -0
- package/dist/styles/dropZone.css +45 -0
- package/dist/styles/dropZone.layer.css +47 -0
- package/dist/styles/field.css +17 -0
- package/dist/styles/field.layer.css +19 -0
- package/dist/styles/fieldGroup.css +130 -0
- package/dist/styles/fieldGroup.layer.css +132 -0
- package/dist/styles/fieldMessages.css +10 -0
- package/dist/styles/fieldMessages.layer.css +12 -0
- package/dist/styles/fieldModifiers.css +15 -0
- package/dist/styles/fieldModifiers.layer.css +17 -0
- package/dist/styles/fieldset.css +37 -0
- package/dist/styles/fieldset.layer.css +39 -0
- package/dist/styles/flex.css +8 -0
- package/dist/styles/flex.layer.css +10 -0
- package/dist/styles/grid.css +3 -0
- package/dist/styles/grid.layer.css +5 -0
- package/dist/styles/heading.css +40 -0
- package/dist/styles/heading.layer.css +42 -0
- package/dist/styles/highlightMatch.css +3 -0
- package/dist/styles/highlightMatch.layer.css +5 -0
- package/dist/styles/icon.css +14 -0
- package/dist/styles/icon.layer.css +16 -0
- package/dist/styles/image.css +9 -0
- package/dist/styles/image.layer.css +11 -0
- package/dist/styles/inAppMessaging.css +179 -0
- package/dist/styles/inAppMessaging.layer.css +181 -0
- package/dist/styles/input.css +83 -0
- package/dist/styles/input.layer.css +85 -0
- package/dist/styles/link.css +26 -0
- package/dist/styles/link.layer.css +28 -0
- package/dist/styles/liveness.css +374 -0
- package/dist/styles/liveness.layer.css +376 -0
- package/dist/styles/loader.css +108 -0
- package/dist/styles/loader.layer.css +110 -0
- package/dist/styles/menu.css +54 -0
- package/dist/styles/menu.layer.css +56 -0
- package/dist/styles/message.css +111 -0
- package/dist/styles/message.layer.css +113 -0
- package/dist/styles/pagination.css +41 -0
- package/dist/styles/pagination.layer.css +43 -0
- package/dist/styles/passwordField.css +49 -0
- package/dist/styles/passwordField.layer.css +51 -0
- package/dist/styles/phoneNumberField.css +30 -0
- package/dist/styles/phoneNumberField.layer.css +32 -0
- package/dist/styles/placeholder.css +31 -0
- package/dist/styles/placeholder.layer.css +33 -0
- package/dist/styles/radio.css +82 -0
- package/dist/styles/radio.layer.css +84 -0
- package/dist/styles/radioGroupField.css +25 -0
- package/dist/styles/radioGroupField.layer.css +27 -0
- package/dist/styles/radiogroup.css +5 -0
- package/dist/styles/radiogroup.layer.css +7 -0
- package/dist/styles/rating.css +33 -0
- package/dist/styles/rating.layer.css +35 -0
- package/dist/styles/reset.css +76 -0
- package/dist/styles/reset.layer.css +78 -0
- package/dist/styles/scrollView.css +4 -0
- package/dist/styles/scrollView.layer.css +6 -0
- package/dist/styles/searchField.css +29 -0
- package/dist/styles/searchField.layer.css +31 -0
- package/dist/styles/select.css +128 -0
- package/dist/styles/select.layer.css +130 -0
- package/dist/styles/selectField.css +18 -0
- package/dist/styles/selectField.layer.css +20 -0
- package/dist/styles/sliderField.css +143 -0
- package/dist/styles/sliderField.layer.css +145 -0
- package/dist/styles/stepperField.css +77 -0
- package/dist/styles/stepperField.layer.css +79 -0
- package/dist/styles/switchField.css +76 -0
- package/dist/styles/switchField.layer.css +78 -0
- package/dist/styles/table.css +146 -0
- package/dist/styles/table.layer.css +148 -0
- package/dist/styles/tabs.css +87 -0
- package/dist/styles/tabs.layer.css +89 -0
- package/dist/styles/text.css +40 -0
- package/dist/styles/text.layer.css +42 -0
- package/dist/styles/textArea.css +71 -0
- package/dist/styles/textArea.layer.css +73 -0
- package/dist/styles/textAreaField.css +12 -0
- package/dist/styles/textAreaField.layer.css +14 -0
- package/dist/styles/textField.css +14 -0
- package/dist/styles/textField.layer.css +16 -0
- package/dist/styles/toggleButton.css +280 -0
- package/dist/styles/toggleButton.layer.css +282 -0
- package/dist/styles/toggleButtonGroup.css +31 -0
- package/dist/styles/toggleButtonGroup.layer.css +33 -0
- package/dist/styles/visuallyHidden.css +12 -0
- package/dist/styles/visuallyHidden.layer.css +14 -0
- package/dist/styles.css +299 -685
- package/dist/styles.layer.css +6115 -0
- package/dist/types/components/AccountSettings/ChangePassword/ChangePassword.d.ts +6 -6
- package/dist/types/components/AccountSettings/ChangePassword/types.d.ts +3 -0
- package/dist/types/components/AccountSettings/DeleteUser/DeleteUser.d.ts +3 -3
- package/dist/types/components/AccountSettings/DeleteUser/types.d.ts +7 -2
- package/dist/types/components/AccountSettings/utils/displayText.d.ts +18 -0
- package/dist/types/components/AccountSettings/utils/index.d.ts +1 -0
- package/dist/types/components/Authenticator/Authenticator.d.ts +4 -3
- package/dist/types/components/Authenticator/ConfirmSignIn/ConfirmSignIn.d.ts +2 -2
- package/dist/types/components/Authenticator/ConfirmSignUp/ConfirmSignUp.d.ts +2 -2
- package/dist/types/components/Authenticator/{ResetPassword → ForgotPassword}/index.d.ts +1 -1
- package/dist/types/components/Authenticator/{SetupTOTP/SetupTOTP.d.ts → SetupTotp/SetupTotp.d.ts} +1 -1
- package/dist/types/components/Authenticator/SetupTotp/index.d.ts +1 -0
- package/dist/types/components/Authenticator/SignIn/SignIn.d.ts +2 -2
- package/dist/types/components/Authenticator/SignUp/SignUp.d.ts +2 -2
- package/dist/types/components/Authenticator/VerifyUser/ConfirmVerifyUser.d.ts +2 -2
- package/dist/types/components/Authenticator/hooks/useCustomComponents/defaultComponents.d.ts +1 -1
- package/dist/types/components/Authenticator/withAuthenticator.d.ts +2 -2
- package/dist/types/components/ThemeProvider/ThemeContext.d.ts +6 -0
- package/dist/types/components/ThemeProvider/ThemeProvider.d.ts +1 -2
- package/dist/types/components/ThemeProvider/index.d.ts +1 -1
- package/dist/types/components/index.d.ts +0 -1
- package/dist/types/hooks/index.d.ts +0 -1
- package/dist/types/hooks/useAuth.d.ts +2 -2
- package/dist/types/hooks/useStorageURL.d.ts +2 -6
- package/dist/types/hooks/useTheme.d.ts +2 -2
- package/dist/types/index.d.ts +1 -1
- package/dist/types/internal.d.ts +0 -12
- package/dist/types/primitives/Accordion/Accordion.d.ts +19 -0
- package/dist/types/primitives/Accordion/AccordionContainer.d.ts +8 -0
- package/dist/types/primitives/Accordion/AccordionContent.d.ts +9 -0
- package/dist/types/primitives/Accordion/AccordionContext.d.ts +9 -0
- package/dist/types/primitives/Accordion/AccordionIcon.d.ts +9 -0
- package/dist/types/primitives/Accordion/AccordionItem.d.ts +6 -0
- package/dist/types/primitives/Accordion/AccordionTrigger.d.ts +9 -0
- package/dist/types/primitives/Accordion/index.d.ts +2 -0
- package/dist/types/primitives/Accordion/types.d.ts +49 -0
- package/dist/types/primitives/Alert/AlertIcon.d.ts +5 -2
- package/dist/types/primitives/Breadcrumbs/BreadcrumbItem.d.ts +1 -1
- package/dist/types/primitives/DropZone/DropZoneChildren.d.ts +10 -3
- package/dist/types/primitives/DropZone/filterAllowedFiles.d.ts +10 -0
- package/dist/types/primitives/Icon/context/IconsContext.d.ts +1 -1
- package/dist/types/primitives/PhoneNumberField/DialCodeSelect.d.ts +2 -0
- package/dist/types/primitives/StepperField/useStepper.d.ts +1 -1
- package/dist/types/primitives/Tabs/Tabs.d.ts +14 -3
- package/dist/types/primitives/Tabs/TabsContainer.d.ts +6 -0
- package/dist/types/primitives/Tabs/TabsContext.d.ts +7 -0
- package/dist/types/primitives/Tabs/TabsItem.d.ts +6 -0
- package/dist/types/primitives/Tabs/TabsList.d.ts +6 -0
- package/dist/types/primitives/Tabs/TabsPanel.d.ts +6 -0
- package/dist/types/primitives/Tabs/index.d.ts +2 -1
- package/dist/types/primitives/Tabs/types.d.ts +93 -0
- package/dist/types/primitives/components.d.ts +2 -2
- package/dist/types/primitives/index.d.ts +0 -1
- package/dist/types/primitives/shared/constants.d.ts +0 -6
- package/dist/types/primitives/shared/responsive/utils.d.ts +1 -1
- package/dist/types/primitives/shared/styleUtils.d.ts +2 -2
- package/dist/types/primitives/types/collection.d.ts +2 -2
- package/dist/types/primitives/types/fieldset.d.ts +1 -1
- package/dist/types/primitives/types/index.d.ts +0 -3
- package/dist/types/primitives/types/radioGroupField.d.ts +2 -1
- package/dist/types/primitives/types/view.d.ts +32 -2
- package/dist/types/primitives/utils/primitiveWithForwardRef.d.ts +11 -0
- package/dist/types/version.d.ts +1 -1
- package/package.json +13 -45
- package/dist/Field-4bd811d7.js +0 -1
- package/dist/esm/components/Authenticator/ResetPassword/ConfirmResetPassword.mjs +0 -1
- package/dist/esm/components/Authenticator/ResetPassword/ResetPassword.mjs +0 -1
- package/dist/esm/components/Authenticator/SetupTOTP/SetupTOTP.mjs +0 -1
- package/dist/esm/components/Storage/FileUploader/FileUploader.mjs +0 -1
- package/dist/esm/components/Storage/FileUploader/UploadDropZone/UploadDropZone.mjs +0 -1
- package/dist/esm/components/Storage/FileUploader/UploadPreviewer/UploadPreviewer.mjs +0 -1
- package/dist/esm/components/Storage/FileUploader/UploadTracker/UploadMessage.mjs +0 -1
- package/dist/esm/components/Storage/FileUploader/UploadTracker/UploadTracker.mjs +0 -1
- package/dist/esm/components/Storage/FileUploader/hooks/useFileUploader/useFileUploader.mjs +0 -1
- package/dist/esm/components/Storage/FileUploader/types.mjs +0 -1
- package/dist/esm/components/ThemeProvider/AmplifyContext.mjs +0 -1
- package/dist/esm/helpers/constants.mjs +0 -1
- package/dist/esm/hooks/actions/constants.mjs +0 -1
- package/dist/esm/hooks/actions/shared/types.mjs +0 -1
- package/dist/esm/hooks/actions/shared/useTypeCastFields.mjs +0 -1
- package/dist/esm/hooks/actions/useAuthSignOutAction.mjs +0 -1
- package/dist/esm/hooks/actions/useDataStoreCreateAction.mjs +0 -1
- package/dist/esm/hooks/actions/useDataStoreDeleteAction.mjs +0 -1
- package/dist/esm/hooks/actions/useDataStoreUpdateAction.mjs +0 -1
- package/dist/esm/hooks/actions/useNavigateAction.mjs +0 -1
- package/dist/esm/hooks/actions/useStateMutationAction.mjs +0 -1
- package/dist/esm/hooks/useAmplify.mjs +0 -1
- package/dist/esm/hooks/useDataStore.mjs +0 -1
- package/dist/esm/primitives/Expander/Expander.mjs +0 -1
- package/dist/esm/primitives/Expander/ExpanderItem.mjs +0 -1
- package/dist/esm/primitives/PhoneNumberField/CountryCodeSelect.mjs +0 -1
- package/dist/esm/primitives/shared/datastore.mjs +0 -1
- package/dist/esm/studio/findChildOverrides.mjs +0 -1
- package/dist/esm/studio/getOverrideProps.mjs +0 -1
- package/dist/esm/studio/getOverridesFromVariants.mjs +0 -1
- package/dist/esm/studio/mergeVariantsAndOverrides.mjs +0 -1
- package/dist/styles.js +0 -2
- package/dist/types/components/Authenticator/SetupTOTP/index.d.ts +0 -1
- package/dist/types/components/Storage/FileUploader/FileUploader.d.ts +0 -3
- package/dist/types/components/Storage/FileUploader/UploadDropZone/UploadDropZone.d.ts +0 -3
- package/dist/types/components/Storage/FileUploader/UploadDropZone/index.d.ts +0 -1
- package/dist/types/components/Storage/FileUploader/UploadPreviewer/UploadPreviewer.d.ts +0 -3
- package/dist/types/components/Storage/FileUploader/UploadPreviewer/index.d.ts +0 -1
- package/dist/types/components/Storage/FileUploader/UploadTracker/UploadMessage.d.ts +0 -3
- package/dist/types/components/Storage/FileUploader/UploadTracker/UploadTracker.d.ts +0 -3
- package/dist/types/components/Storage/FileUploader/UploadTracker/index.d.ts +0 -1
- package/dist/types/components/Storage/FileUploader/hooks/index.d.ts +0 -1
- package/dist/types/components/Storage/FileUploader/hooks/useFileUploader/index.d.ts +0 -2
- package/dist/types/components/Storage/FileUploader/hooks/useFileUploader/types.d.ts +0 -18
- package/dist/types/components/Storage/FileUploader/hooks/useFileUploader/useFileUploader.d.ts +0 -9
- package/dist/types/components/Storage/FileUploader/index.d.ts +0 -1
- package/dist/types/components/Storage/FileUploader/types.d.ts +0 -91
- package/dist/types/components/Storage/index.d.ts +0 -1
- package/dist/types/components/ThemeProvider/AmplifyContext.d.ts +0 -6
- package/dist/types/hooks/actions/constants.d.ts +0 -39
- package/dist/types/hooks/actions/shared/types.d.ts +0 -27
- package/dist/types/hooks/actions/shared/useTypeCastFields.d.ts +0 -15
- package/dist/types/hooks/actions/testModels/model.d.ts +0 -25
- package/dist/types/hooks/actions/testModels/schema.d.ts +0 -2
- package/dist/types/hooks/actions/testModels/todo.d.ts +0 -13
- package/dist/types/hooks/actions/useAuthSignOutAction.d.ts +0 -9
- package/dist/types/hooks/actions/useDataStoreCreateAction.d.ts +0 -9
- package/dist/types/hooks/actions/useDataStoreDeleteAction.d.ts +0 -10
- package/dist/types/hooks/actions/useDataStoreUpdateAction.d.ts +0 -10
- package/dist/types/hooks/actions/useNavigateAction.d.ts +0 -15
- package/dist/types/hooks/actions/useStateMutationAction.d.ts +0 -10
- package/dist/types/hooks/useAmplify.d.ts +0 -6
- package/dist/types/hooks/useDataStore.d.ts +0 -18
- package/dist/types/primitives/Expander/Expander.d.ts +0 -6
- package/dist/types/primitives/Expander/ExpanderItem.d.ts +0 -7
- package/dist/types/primitives/Expander/index.d.ts +0 -2
- package/dist/types/primitives/Menu/__tests_/menu.test.d.ts +0 -1
- package/dist/types/primitives/PhoneNumberField/CountryCodeSelect.d.ts +0 -2
- package/dist/types/primitives/Rating/__test__/Rating.test.d.ts +0 -1
- package/dist/types/primitives/Rating/__test__/utils.test.d.ts +0 -1
- package/dist/types/primitives/Text/__test__/Text.test.d.ts +0 -1
- package/dist/types/primitives/shared/datastore.d.ts +0 -7
- package/dist/types/primitives/shared/index.d.ts +0 -1
- package/dist/types/primitives/shared/types.d.ts +0 -15
- package/dist/types/primitives/types/datastore.d.ts +0 -31
- package/dist/types/primitives/types/expander.d.ts +0 -51
- package/dist/types/primitives/types/tabs.d.ts +0 -63
- package/dist/types/studio/findChildOverrides.d.ts +0 -18
- package/dist/types/studio/getOverrideProps.d.ts +0 -18
- package/dist/types/studio/getOverridesFromVariants.d.ts +0 -20
- package/dist/types/studio/index.d.ts +0 -5
- package/dist/types/studio/mergeVariantsAndOverrides.d.ts +0 -18
- package/dist/types/studio/types.d.ts +0 -18
- package/dist/types/styles.d.ts +0 -1
- /package/dist/types/components/Authenticator/{ResetPassword → ForgotPassword}/ConfirmResetPassword.d.ts +0 -0
- /package/dist/types/components/Authenticator/{ResetPassword/ResetPassword.d.ts → ForgotPassword/ForgotPassword.d.ts} +0 -0
|
@@ -1 +1,15 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import { classNames, ComponentClassName } from '@aws-amplify/ui';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { View } from '../../View/View.mjs';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @internal For internal Amplify UI use only. May be removed in a future release.
|
|
7
|
+
*/
|
|
8
|
+
const IconVisibilityOff = (props) => {
|
|
9
|
+
const { className, ...rest } = props;
|
|
10
|
+
return (React.createElement(View, { as: "span", width: "1em", height: "1em", className: classNames(ComponentClassName.Icon, className), ...rest },
|
|
11
|
+
React.createElement("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
|
|
12
|
+
React.createElement("path", { d: "M12 6.0002C15.79 6.0002 19.17 8.1302 20.82 11.5002C20.23 12.7202 19.4 13.7702 18.41 14.6202L19.82 16.0302C21.21 14.8002 22.31 13.2602 23 11.5002C21.27 7.1102 17 4.0002 12 4.0002C10.73 4.0002 9.51 4.2002 8.36 4.5702L10.01 6.2202C10.66 6.0902 11.32 6.0002 12 6.0002ZM10.93 7.14019L13 9.2102C13.57 9.4602 14.03 9.9202 14.28 10.4902L16.35 12.5602C16.43 12.2202 16.49 11.8602 16.49 11.4902C16.5 9.0102 14.48 7.0002 12 7.0002C11.63 7.0002 11.28 7.05019 10.93 7.14019ZM2.01 3.8702L4.69 6.5502C3.06 7.8302 1.77 9.5302 1 11.5002C2.73 15.8902 7 19.0002 12 19.0002C13.52 19.0002 14.98 18.7102 16.32 18.1802L19.74 21.6002L21.15 20.1902L3.42 2.4502L2.01 3.8702ZM9.51 11.3702L12.12 13.9802C12.08 13.9902 12.04 14.0002 12 14.0002C10.62 14.0002 9.5 12.8802 9.5 11.5002C9.5 11.4502 9.51 11.4202 9.51 11.3702V11.3702ZM6.11 7.97019L7.86 9.7202C7.63 10.2702 7.5 10.8702 7.5 11.5002C7.5 13.9802 9.52 16.0002 12 16.0002C12.63 16.0002 13.23 15.8702 13.77 15.6402L14.75 16.6202C13.87 16.8602 12.95 17.0002 12 17.0002C8.21 17.0002 4.83 14.8702 3.18 11.5002C3.88 10.0702 4.9 8.89019 6.11 7.97019Z", fill: "currentColor" }))));
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export { IconVisibilityOff };
|
|
@@ -1 +1,15 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import { classNames, ComponentClassName } from '@aws-amplify/ui';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { View } from '../../View/View.mjs';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @internal For internal Amplify UI use only. May be removed in a future release.
|
|
7
|
+
*/
|
|
8
|
+
const IconWarning = (props) => {
|
|
9
|
+
const { className, ...rest } = props;
|
|
10
|
+
return (React.createElement(View, { as: "span", width: "1em", height: "1em", className: classNames(ComponentClassName.Icon, className), ...rest },
|
|
11
|
+
React.createElement("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
|
|
12
|
+
React.createElement("path", { d: "M1 21H23L12 2L1 21ZM13 18H11V16H13V18ZM13 14H11V10H13V14Z", fill: "currentColor" }))));
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export { IconWarning };
|
|
@@ -1 +1,13 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { classNames, ComponentClassName } from '@aws-amplify/ui';
|
|
3
|
+
import { View } from '../View/View.mjs';
|
|
4
|
+
import { primitiveWithForwardRef } from '../utils/primitiveWithForwardRef.mjs';
|
|
5
|
+
|
|
6
|
+
const ImagePrimitive = ({ className, ...rest }, ref) => (React.createElement(View, { as: "img", ref: ref, className: classNames(ComponentClassName.Image, className), ...rest }));
|
|
7
|
+
/**
|
|
8
|
+
* [📖 Docs](https://ui.docs.amplify.aws/react/components/image)
|
|
9
|
+
*/
|
|
10
|
+
const Image = primitiveWithForwardRef(ImagePrimitive);
|
|
11
|
+
Image.displayName = 'Image';
|
|
12
|
+
|
|
13
|
+
export { Image };
|
|
@@ -1 +1,15 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { classNames, ComponentClassName, classNameModifier, classNameModifierByFlag } from '@aws-amplify/ui';
|
|
3
|
+
import { View } from '../View/View.mjs';
|
|
4
|
+
import { useFieldset } from '../Fieldset/useFieldset.mjs';
|
|
5
|
+
import { primitiveWithForwardRef } from '../utils/primitiveWithForwardRef.mjs';
|
|
6
|
+
|
|
7
|
+
const InputPrimitive = ({ autoComplete, checked, className, defaultChecked, defaultValue, id, isDisabled, isReadOnly, isRequired, size, type = 'text', hasError = false, value, variation, ...rest }, ref) => {
|
|
8
|
+
const componentClasses = classNames(ComponentClassName.Input, ComponentClassName.FieldGroupControl, classNameModifier(ComponentClassName.Input, variation), classNameModifierByFlag(ComponentClassName.Input, 'error', hasError), classNameModifier(ComponentClassName.Input, size), className);
|
|
9
|
+
const { isFieldsetDisabled } = useFieldset();
|
|
10
|
+
return (React.createElement(View, { "aria-invalid": hasError, as: "input", autoComplete: autoComplete, checked: checked, className: componentClasses, defaultChecked: defaultChecked, defaultValue: defaultValue, isDisabled: isFieldsetDisabled ? isFieldsetDisabled : isDisabled, id: id, readOnly: isReadOnly, ref: ref, required: isRequired, type: type, value: value, ...rest }));
|
|
11
|
+
};
|
|
12
|
+
const Input = primitiveWithForwardRef(InputPrimitive);
|
|
13
|
+
Input.displayName = 'Input';
|
|
14
|
+
|
|
15
|
+
export { Input };
|
|
@@ -1 +1,14 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { classNames, ComponentClassName } from '@aws-amplify/ui';
|
|
3
|
+
import { View } from '../View/View.mjs';
|
|
4
|
+
import { primitiveWithForwardRef } from '../utils/primitiveWithForwardRef.mjs';
|
|
5
|
+
|
|
6
|
+
const LabelPrimitive = ({ children, className, visuallyHidden, ...rest }, ref) => {
|
|
7
|
+
return (React.createElement(View, { as: "label", className: classNames(ComponentClassName.Label, className, {
|
|
8
|
+
[ComponentClassName.VisuallyHidden]: visuallyHidden,
|
|
9
|
+
}), ref: ref, ...rest }, children));
|
|
10
|
+
};
|
|
11
|
+
const Label = primitiveWithForwardRef(LabelPrimitive);
|
|
12
|
+
Label.displayName = 'Label';
|
|
13
|
+
|
|
14
|
+
export { Label };
|
|
@@ -1 +1,15 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { classNames, ComponentClassName } from '@aws-amplify/ui';
|
|
3
|
+
import { View } from '../View/View.mjs';
|
|
4
|
+
import { primitiveWithForwardRef } from '../utils/primitiveWithForwardRef.mjs';
|
|
5
|
+
|
|
6
|
+
const LinkPrimitive = ({ as = 'a', children, className, isExternal, ...rest }, ref) => {
|
|
7
|
+
return (React.createElement(View, { as: as, className: classNames(ComponentClassName.Link, className), ref: ref, rel: isExternal ? 'noopener noreferrer' : undefined, target: isExternal ? '_blank' : undefined, ...rest }, children));
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* [📖 Docs](https://ui.docs.amplify.aws/react/components/link)
|
|
11
|
+
*/
|
|
12
|
+
const Link = primitiveWithForwardRef(LinkPrimitive);
|
|
13
|
+
Link.displayName = 'Link';
|
|
14
|
+
|
|
15
|
+
export { Link };
|
|
@@ -1 +1,56 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { classNames, ComponentClassName, classNameModifier, classNameModifierByFlag } from '@aws-amplify/ui';
|
|
3
|
+
import { View } from '../View/View.mjs';
|
|
4
|
+
import { primitiveWithForwardRef } from '../utils/primitiveWithForwardRef.mjs';
|
|
5
|
+
|
|
6
|
+
const LINEAR_EMPTY = 'linear-empty';
|
|
7
|
+
const LINEAR_FILLED = 'linear-filled';
|
|
8
|
+
const CIRCULAR_EMPTY = 'circular-empty';
|
|
9
|
+
const CIRCULAR_FILLED = 'circular-filled';
|
|
10
|
+
// radius + strokeWidth = 50
|
|
11
|
+
const CIRCULAR_STROKE_WIDTH = 8;
|
|
12
|
+
const RADIUS = 42;
|
|
13
|
+
// circumference = 2 * r * PI (r = 42)
|
|
14
|
+
const CIRCUMFERENCE = 2 * RADIUS * Math.PI;
|
|
15
|
+
const LoaderPrimitive = ({ className, filledColor, emptyColor, size, variation, isDeterminate = false, isPercentageTextHidden = false, percentage = 0, ...rest }, ref) => {
|
|
16
|
+
percentage = Math.min(percentage, 100);
|
|
17
|
+
percentage = Math.max(percentage, 0);
|
|
18
|
+
const percent = `${percentage}%`;
|
|
19
|
+
const componentClasses = classNames(ComponentClassName.Loader, classNameModifier(ComponentClassName.Loader, size), classNameModifier(ComponentClassName.Loader, variation), classNameModifierByFlag(ComponentClassName.Loader, 'determinate', isDeterminate), className);
|
|
20
|
+
const linearLoader = (React.createElement("g", null,
|
|
21
|
+
React.createElement("line", { x1: "0", x2: "100%", y1: "50%", y2: "50%", style: { stroke: String(emptyColor) }, "data-testid": LINEAR_EMPTY }),
|
|
22
|
+
React.createElement("line", { x1: "0", x2: isDeterminate ? percent : '100%', y1: "50%", y2: "50%", style: {
|
|
23
|
+
// To get rid of the visible stroke linecap when percentage is 0
|
|
24
|
+
stroke: isDeterminate && percentage === 0
|
|
25
|
+
? 'none'
|
|
26
|
+
: filledColor
|
|
27
|
+
? String(filledColor)
|
|
28
|
+
: undefined,
|
|
29
|
+
}, "data-testid": LINEAR_FILLED }),
|
|
30
|
+
isDeterminate ? (React.createElement("text", { "aria-live": "polite", className: classNames(ComponentClassName.LoaderLabel, isPercentageTextHidden ? ComponentClassName.VisuallyHidden : null),
|
|
31
|
+
// -1% offset makes the text position look nicest
|
|
32
|
+
x: `${-1 + percentage}%`, y: "200%" }, percent)) : null));
|
|
33
|
+
// r + stroke-width should add up to 50% to avoid overflow
|
|
34
|
+
const circularLoader = (React.createElement("g", null,
|
|
35
|
+
React.createElement("circle", { cx: "50%", cy: "50%", r: `${RADIUS}%`, strokeWidth: `${CIRCULAR_STROKE_WIDTH}%`, style: { stroke: String(emptyColor) }, "data-testid": CIRCULAR_EMPTY }),
|
|
36
|
+
React.createElement("circle", { cx: "50%", cy: "50%", r: `${RADIUS}%`, strokeWidth: `${CIRCULAR_STROKE_WIDTH}%`, style: {
|
|
37
|
+
stroke: String(filledColor),
|
|
38
|
+
strokeDasharray: isDeterminate
|
|
39
|
+
? `${CIRCUMFERENCE}% ${CIRCUMFERENCE}%`
|
|
40
|
+
: undefined,
|
|
41
|
+
strokeDashoffset: isDeterminate
|
|
42
|
+
? `${CIRCUMFERENCE - (CIRCUMFERENCE * percentage) / 100}%`
|
|
43
|
+
: undefined,
|
|
44
|
+
}, "data-testid": CIRCULAR_FILLED }),
|
|
45
|
+
isDeterminate ? (React.createElement("text", { "aria-live": "polite", className: classNames(ComponentClassName.LoaderLabel, isPercentageTextHidden ? ComponentClassName.VisuallyHidden : null),
|
|
46
|
+
// this x and y make text position look nicest
|
|
47
|
+
x: "130%", y: "80%" }, percent)) : null));
|
|
48
|
+
return (React.createElement(View, { as: "svg", className: componentClasses, ref: ref, role: "img", ...rest }, variation === 'linear' ? linearLoader : circularLoader));
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* [📖 Docs](https://ui.docs.amplify.aws/react/components/loader)
|
|
52
|
+
*/
|
|
53
|
+
const Loader = primitiveWithForwardRef(LoaderPrimitive);
|
|
54
|
+
Loader.displayName = 'Loader';
|
|
55
|
+
|
|
56
|
+
export { CIRCULAR_EMPTY, CIRCULAR_FILLED, CIRCULAR_STROKE_WIDTH, CIRCUMFERENCE, LINEAR_EMPTY, LINEAR_FILLED, Loader, RADIUS };
|
|
@@ -1 +1,31 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { sanitizeNamespaceImport, classNames, ComponentClassName } from '@aws-amplify/ui';
|
|
3
|
+
import * as Dropdown from '@radix-ui/react-dropdown-menu';
|
|
4
|
+
import { ButtonGroup } from '../ButtonGroup/ButtonGroup.mjs';
|
|
5
|
+
import '../Icon/Icon.mjs';
|
|
6
|
+
import '../Icon/context/IconsContext.mjs';
|
|
7
|
+
import { useIcons } from '../Icon/context/useIcons.mjs';
|
|
8
|
+
import '../View/View.mjs';
|
|
9
|
+
import { IconMenu } from '../Icon/icons/IconMenu.mjs';
|
|
10
|
+
import { MenuButton } from './MenuButton.mjs';
|
|
11
|
+
import { primitiveWithForwardRef } from '../utils/primitiveWithForwardRef.mjs';
|
|
12
|
+
|
|
13
|
+
// Radix packages don't support ESM in Node, in some scenarios(e.g. SSR)
|
|
14
|
+
// We have to use namespace import and sanitize it to ensure the interoperablity between ESM and CJS
|
|
15
|
+
const { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent } = sanitizeNamespaceImport(Dropdown);
|
|
16
|
+
const MENU_TRIGGER_TEST_ID = 'amplify-menu-trigger-test-id';
|
|
17
|
+
const MENU_ITEMS_GROUP_TEST_ID = 'amplify-menu-items-group-test-id';
|
|
18
|
+
const MenuPrimitive = ({ menuAlign = 'start', children, className, isOpen, size, trigger, triggerClassName, ariaLabel, onOpenChange, ...rest }, ref) => {
|
|
19
|
+
const icons = useIcons('menu');
|
|
20
|
+
return (React.createElement(DropdownMenu, { onOpenChange: onOpenChange, open: isOpen },
|
|
21
|
+
React.createElement(DropdownMenuTrigger, { asChild: true }, trigger ?? (React.createElement(MenuButton, { ariaLabel: ariaLabel, size: size, testId: MENU_TRIGGER_TEST_ID, className: classNames(ComponentClassName.MenuTrigger, triggerClassName) }, icons?.menu ?? React.createElement(IconMenu, null)))),
|
|
22
|
+
React.createElement(DropdownMenuContent, { align: menuAlign, className: ComponentClassName.MenuWrapper },
|
|
23
|
+
React.createElement(ButtonGroup, { className: classNames(ComponentClassName.MenuContent, className), ref: ref, size: size, testId: MENU_ITEMS_GROUP_TEST_ID, ...rest }, children))));
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* [📖 Docs](https://ui.docs.amplify.aws/react/components/menu)
|
|
27
|
+
*/
|
|
28
|
+
const Menu = primitiveWithForwardRef(MenuPrimitive);
|
|
29
|
+
Menu.displayName = 'Menu';
|
|
30
|
+
|
|
31
|
+
export { MENU_ITEMS_GROUP_TEST_ID, MENU_TRIGGER_TEST_ID, Menu };
|
|
@@ -1 +1,18 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { classNames, ComponentClassName, classNameModifier } from '@aws-amplify/ui';
|
|
3
|
+
import { Button } from '../Button/Button.mjs';
|
|
4
|
+
import { useStyles } from '../shared/styleUtils.mjs';
|
|
5
|
+
import { primitiveWithForwardRef } from '../utils/primitiveWithForwardRef.mjs';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* [📖 Docs](https://ui.docs.amplify.aws/react/components/menu)
|
|
9
|
+
*/
|
|
10
|
+
const MenuButtonPrimitive = ({ ariaLabel, className, children, isDisabled, isLoading, size, style, type = 'button', variation, testId, ...rest }, ref) => {
|
|
11
|
+
const { propStyles, nonStyleProps } = useStyles(rest, style);
|
|
12
|
+
const componentClasses = classNames(ComponentClassName.Button, classNameModifier(ComponentClassName.Button, size), classNameModifier(ComponentClassName.Button, variation), className);
|
|
13
|
+
return (React.createElement(Button, { ref: ref, className: componentClasses, disabled: isDisabled ?? isLoading, type: type, testId: testId, "aria-label": ariaLabel, style: propStyles, ...nonStyleProps }, children));
|
|
14
|
+
};
|
|
15
|
+
const MenuButton = primitiveWithForwardRef(MenuButtonPrimitive);
|
|
16
|
+
MenuButton.displayName = 'MenuButton';
|
|
17
|
+
|
|
18
|
+
export { MenuButton };
|
|
@@ -1 +1,22 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { sanitizeNamespaceImport, classNames, ComponentClassName } from '@aws-amplify/ui';
|
|
3
|
+
import * as Dropdown from '@radix-ui/react-dropdown-menu';
|
|
4
|
+
import { MenuButton } from './MenuButton.mjs';
|
|
5
|
+
import { primitiveWithForwardRef } from '../utils/primitiveWithForwardRef.mjs';
|
|
6
|
+
|
|
7
|
+
// Radix packages don't support ESM in Node, in some scenarios(e.g. SSR)
|
|
8
|
+
// We have to use namespace import and sanitize it to ensure the interoperablity between ESM and CJS
|
|
9
|
+
const { DropdownMenuItem } = sanitizeNamespaceImport(Dropdown);
|
|
10
|
+
const MENU_ITEM_TEST_ID = 'amplify-menu-item-test-id';
|
|
11
|
+
/**
|
|
12
|
+
* [📖 Docs](https://ui.docs.amplify.aws/react/components/menu)
|
|
13
|
+
*/
|
|
14
|
+
const MenuItemPrimitive = ({ children, className, ...rest }, ref) => {
|
|
15
|
+
return (React.createElement(DropdownMenuItem, { asChild: true, ref: ref },
|
|
16
|
+
React.createElement(MenuButton, { className: classNames(ComponentClassName.MenuItem, className), testId: MENU_ITEM_TEST_ID, ...rest, variation: "menu" // ensures `menu` variation is not overwritten
|
|
17
|
+
}, children)));
|
|
18
|
+
};
|
|
19
|
+
const MenuItem = primitiveWithForwardRef(MenuItemPrimitive);
|
|
20
|
+
MenuItem.displayName = 'MenuItem';
|
|
21
|
+
|
|
22
|
+
export { MENU_ITEM_TEST_ID, MenuItem };
|
|
@@ -1 +1,23 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { MessageHeading } from './MessageHeading.mjs';
|
|
3
|
+
import { MessageIcon } from './MessageIcon.mjs';
|
|
4
|
+
import { MessageDismiss } from './MessageDismiss.mjs';
|
|
5
|
+
import { MessageContent } from './MessageContent.mjs';
|
|
6
|
+
import { MessageContainer } from './MessageContainer.mjs';
|
|
7
|
+
import { primitiveWithForwardRef } from '../utils/primitiveWithForwardRef.mjs';
|
|
8
|
+
|
|
9
|
+
const MessagePrimitive = ({ children, heading, dismissLabel, isDismissible, onDismiss, hasIcon = true, colorTheme = 'neutral', variation = 'filled', ...rest }, ref) => {
|
|
10
|
+
return (React.createElement(MessageContainer, { colorTheme: colorTheme, variation: variation, ref: ref, ...rest },
|
|
11
|
+
hasIcon ? React.createElement(MessageIcon, null) : null,
|
|
12
|
+
React.createElement(MessageContent, null,
|
|
13
|
+
heading ? React.createElement(MessageHeading, null, heading) : null,
|
|
14
|
+
children),
|
|
15
|
+
isDismissible ? (React.createElement(MessageDismiss, { onDismiss: onDismiss, dismissLabel: dismissLabel })) : null));
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* [📖 Docs](https://ui.docs.amplify.aws/react/components/message)
|
|
19
|
+
*/
|
|
20
|
+
const Message = primitiveWithForwardRef(MessagePrimitive);
|
|
21
|
+
Message.displayName = 'Message';
|
|
22
|
+
|
|
23
|
+
export { Message };
|
|
@@ -1 +1,19 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { classNames, ComponentClassName, classNameModifier } from '@aws-amplify/ui';
|
|
3
|
+
import { Flex } from '../Flex/Flex.mjs';
|
|
4
|
+
import { MessageContext } from './useMessage.mjs';
|
|
5
|
+
import { primitiveWithForwardRef } from '../utils/primitiveWithForwardRef.mjs';
|
|
6
|
+
|
|
7
|
+
const MessageContainerPrimitive = ({ children, className, colorTheme = 'neutral', variation = 'filled', ...rest }, ref) => {
|
|
8
|
+
const [dismissed, setDismissed] = React.useState(false);
|
|
9
|
+
const value = React.useMemo(() => ({
|
|
10
|
+
colorTheme,
|
|
11
|
+
dismissed,
|
|
12
|
+
setDismissed,
|
|
13
|
+
}), [colorTheme, dismissed]);
|
|
14
|
+
return (React.createElement(MessageContext.Provider, { value: value }, !dismissed ? (React.createElement(Flex, { className: classNames(ComponentClassName.Message, classNameModifier(ComponentClassName.Message, variation), classNameModifier(ComponentClassName.Message, colorTheme), className), ref: ref, ...rest }, children)) : null));
|
|
15
|
+
};
|
|
16
|
+
const MessageContainer = primitiveWithForwardRef(MessageContainerPrimitive);
|
|
17
|
+
MessageContainer.displayName = 'MessageContainer';
|
|
18
|
+
|
|
19
|
+
export { MessageContainer };
|
|
@@ -1 +1,12 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { classNames, ComponentClassName } from '@aws-amplify/ui';
|
|
3
|
+
import { Flex } from '../Flex/Flex.mjs';
|
|
4
|
+
import { primitiveWithForwardRef } from '../utils/primitiveWithForwardRef.mjs';
|
|
5
|
+
|
|
6
|
+
const MessageContentPrimitive = ({ children, className, ...rest }, ref) => {
|
|
7
|
+
return (React.createElement(Flex, { className: classNames(ComponentClassName.MessageContent, className), ref: ref, ...rest }, children));
|
|
8
|
+
};
|
|
9
|
+
const MessageContent = primitiveWithForwardRef(MessageContentPrimitive);
|
|
10
|
+
MessageContent.displayName = 'MessageContent';
|
|
11
|
+
|
|
12
|
+
export { MessageContent };
|
|
@@ -1 +1,28 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { isFunction, classNames, ComponentClassName } from '@aws-amplify/ui';
|
|
3
|
+
import { Button } from '../Button/Button.mjs';
|
|
4
|
+
import { VisuallyHidden } from '../VisuallyHidden/VisuallyHidden.mjs';
|
|
5
|
+
import '../View/View.mjs';
|
|
6
|
+
import { IconClose } from '../Icon/icons/IconClose.mjs';
|
|
7
|
+
import { useIcons } from '../Icon/context/useIcons.mjs';
|
|
8
|
+
import { ComponentText } from '../shared/constants.mjs';
|
|
9
|
+
import { useMessage } from './useMessage.mjs';
|
|
10
|
+
import { primitiveWithForwardRef } from '../utils/primitiveWithForwardRef.mjs';
|
|
11
|
+
|
|
12
|
+
const MessageDismissPrimitive = ({ onDismiss, dismissLabel, hasIcon = true, children, className, ...rest }, ref) => {
|
|
13
|
+
const { setDismissed } = useMessage();
|
|
14
|
+
const icons = useIcons('message');
|
|
15
|
+
const dismissMessage = React.useCallback(() => {
|
|
16
|
+
setDismissed(true);
|
|
17
|
+
if (isFunction(onDismiss)) {
|
|
18
|
+
onDismiss();
|
|
19
|
+
}
|
|
20
|
+
}, [setDismissed, onDismiss]);
|
|
21
|
+
return (React.createElement(Button, { variation: "link", colorTheme: "overlay", className: classNames(ComponentClassName.MessageDismiss, className), ref: ref, onClick: dismissMessage, ...rest },
|
|
22
|
+
hasIcon ? icons?.close ?? React.createElement(IconClose, { "aria-hidden": "true" }) : null,
|
|
23
|
+
children ? (children) : (React.createElement(VisuallyHidden, null, dismissLabel ? dismissLabel : ComponentText.Message.dismissLabel))));
|
|
24
|
+
};
|
|
25
|
+
const MessageDismiss = primitiveWithForwardRef(MessageDismissPrimitive);
|
|
26
|
+
MessageDismiss.displayName = 'MessageContent';
|
|
27
|
+
|
|
28
|
+
export { MessageDismiss };
|
|
@@ -1 +1,12 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { classNames, ComponentClassName } from '@aws-amplify/ui';
|
|
3
|
+
import { Flex } from '../Flex/Flex.mjs';
|
|
4
|
+
import { primitiveWithForwardRef } from '../utils/primitiveWithForwardRef.mjs';
|
|
5
|
+
|
|
6
|
+
const MessageHeadingPrimitive = ({ children, className, ...rest }, ref) => {
|
|
7
|
+
return (React.createElement(Flex, { className: classNames(ComponentClassName.MessageHeading, className), ref: ref, ...rest }, children));
|
|
8
|
+
};
|
|
9
|
+
const MessageHeading = primitiveWithForwardRef(MessageHeadingPrimitive);
|
|
10
|
+
MessageHeading.displayName = 'MessageHeading';
|
|
11
|
+
|
|
12
|
+
export { MessageHeading };
|
|
@@ -1 +1,35 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { classNames, ComponentClassName } from '@aws-amplify/ui';
|
|
3
|
+
import { View } from '../View/View.mjs';
|
|
4
|
+
import { useMessage } from './useMessage.mjs';
|
|
5
|
+
import { IconCheckCircle } from '../Icon/icons/IconCheckCircle.mjs';
|
|
6
|
+
import { IconError } from '../Icon/icons/IconError.mjs';
|
|
7
|
+
import { IconInfo } from '../Icon/icons/IconInfo.mjs';
|
|
8
|
+
import { IconWarning } from '../Icon/icons/IconWarning.mjs';
|
|
9
|
+
import { useIcons } from '../Icon/context/useIcons.mjs';
|
|
10
|
+
import { primitiveWithForwardRef } from '../utils/primitiveWithForwardRef.mjs';
|
|
11
|
+
|
|
12
|
+
const MessageIconPrimitive = ({ className, ...rest }, ref) => {
|
|
13
|
+
const icons = useIcons('message');
|
|
14
|
+
const { colorTheme } = useMessage();
|
|
15
|
+
let icon;
|
|
16
|
+
switch (colorTheme) {
|
|
17
|
+
case 'info':
|
|
18
|
+
icon = icons?.info ?? React.createElement(IconInfo, null);
|
|
19
|
+
break;
|
|
20
|
+
case 'error':
|
|
21
|
+
icon = icons?.error ?? React.createElement(IconError, null);
|
|
22
|
+
break;
|
|
23
|
+
case 'warning':
|
|
24
|
+
icon = icons?.warning ?? React.createElement(IconWarning, null);
|
|
25
|
+
break;
|
|
26
|
+
case 'success':
|
|
27
|
+
icon = icons?.success ?? React.createElement(IconCheckCircle, null);
|
|
28
|
+
break;
|
|
29
|
+
}
|
|
30
|
+
return icon ? (React.createElement(View, { className: classNames(ComponentClassName.MessageIcon, className), "aria-hidden": "true", ref: ref, ...rest }, icon)) : null;
|
|
31
|
+
};
|
|
32
|
+
const MessageIcon = primitiveWithForwardRef(MessageIconPrimitive);
|
|
33
|
+
MessageIcon.displayName = 'MessageIcon';
|
|
34
|
+
|
|
35
|
+
export { MessageIcon };
|
|
@@ -1 +1,9 @@
|
|
|
1
|
-
import*as
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
const MessageContext = React.createContext({
|
|
4
|
+
dismissed: false,
|
|
5
|
+
setDismissed: () => { },
|
|
6
|
+
});
|
|
7
|
+
const useMessage = () => React.useContext(MessageContext);
|
|
8
|
+
|
|
9
|
+
export { MessageContext, useMessage };
|
|
@@ -1 +1,31 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { classNames, ComponentClassName } from '@aws-amplify/ui';
|
|
3
|
+
import { Flex } from '../Flex/Flex.mjs';
|
|
4
|
+
import { View } from '../View/View.mjs';
|
|
5
|
+
import { usePaginationItems } from './usePaginationItems.mjs';
|
|
6
|
+
import { primitiveWithForwardRef } from '../utils/primitiveWithForwardRef.mjs';
|
|
7
|
+
|
|
8
|
+
const PaginationPrimitive = ({ className, currentPage = 1, totalPages, hasMorePages = false, siblingCount, currentPageLabel, pageLabel, previousLabel, nextLabel, onNext, onPrevious, onChange, ...rest }, ref) => {
|
|
9
|
+
const paginationItems = usePaginationItems({
|
|
10
|
+
currentPage,
|
|
11
|
+
totalPages,
|
|
12
|
+
hasMorePages,
|
|
13
|
+
siblingCount,
|
|
14
|
+
currentPageLabel,
|
|
15
|
+
pageLabel,
|
|
16
|
+
previousLabel,
|
|
17
|
+
nextLabel,
|
|
18
|
+
onNext,
|
|
19
|
+
onPrevious,
|
|
20
|
+
onChange,
|
|
21
|
+
});
|
|
22
|
+
return (React.createElement(View, { as: "nav", className: classNames(ComponentClassName.Pagination, className), ref: ref, ...rest },
|
|
23
|
+
React.createElement(Flex, { as: "ol", justifyContent: "center", alignItems: "center", gap: "inherit" }, paginationItems)));
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* [📖 Docs](https://ui.docs.amplify.aws/react/components/pagination)
|
|
27
|
+
*/
|
|
28
|
+
const Pagination = primitiveWithForwardRef(PaginationPrimitive);
|
|
29
|
+
Pagination.displayName = 'Pagination';
|
|
30
|
+
|
|
31
|
+
export { Pagination };
|
|
@@ -1 +1,48 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { classNames, ComponentClassName, classNameModifier, classNameModifierByFlag } from '@aws-amplify/ui';
|
|
3
|
+
import { Button } from '../Button/Button.mjs';
|
|
4
|
+
import { Flex } from '../Flex/Flex.mjs';
|
|
5
|
+
import '../Icon/Icon.mjs';
|
|
6
|
+
import '../Icon/context/IconsContext.mjs';
|
|
7
|
+
import { useIcons } from '../Icon/context/useIcons.mjs';
|
|
8
|
+
import { View } from '../View/View.mjs';
|
|
9
|
+
import { IconChevronLeft } from '../Icon/icons/IconChevronLeft.mjs';
|
|
10
|
+
import { IconChevronRight } from '../Icon/icons/IconChevronRight.mjs';
|
|
11
|
+
import { VisuallyHidden } from '../VisuallyHidden/VisuallyHidden.mjs';
|
|
12
|
+
import { ComponentText } from '../shared/constants.mjs';
|
|
13
|
+
|
|
14
|
+
const PAGINATION_CURRENT_TEST_ID = 'current';
|
|
15
|
+
const PAGINATION_ELLIPSIS_TEST_ID = 'ellipsis';
|
|
16
|
+
const PaginationItem = ({ type, page, currentPage, currentPageLabel = ComponentText.PaginationItem.currentPageLabel, isDisabled, onClick, ariaLabel, ...rest }) => {
|
|
17
|
+
const icons = useIcons('pagination');
|
|
18
|
+
const nextClasses = classNames(ComponentClassName.PaginationItem, classNameModifier(ComponentClassName.PaginationItem, 'link'), classNameModifierByFlag(ComponentClassName.PaginationItem, 'disabled', isDisabled));
|
|
19
|
+
const previousClasses = classNames(ComponentClassName.PaginationItem, classNameModifier(ComponentClassName.PaginationItem, 'link'), classNameModifierByFlag(ComponentClassName.PaginationItem, 'disabled', isDisabled));
|
|
20
|
+
switch (type) {
|
|
21
|
+
case 'page':
|
|
22
|
+
return (React.createElement(View, { as: "li" }, page === currentPage ? (React.createElement(Button, { "aria-current": "page", size: "small", variation: "link", className: classNames(ComponentClassName.PaginationItem, classNameModifier(ComponentClassName.PaginationItem, 'current')), testId: PAGINATION_CURRENT_TEST_ID, ...rest },
|
|
23
|
+
React.createElement(VisuallyHidden, null,
|
|
24
|
+
currentPageLabel,
|
|
25
|
+
":"),
|
|
26
|
+
page)) : (React.createElement(Button, { className: ComponentClassName.PaginationItem, size: "small", variation: "link", onClick: () => {
|
|
27
|
+
onClick?.();
|
|
28
|
+
}, ariaLabel: ariaLabel, ...rest }, page))));
|
|
29
|
+
case 'next':
|
|
30
|
+
return (React.createElement(View, { as: "li" },
|
|
31
|
+
React.createElement(Button, { className: nextClasses, size: "small", variation: "link", isDisabled: isDisabled, onClick: () => {
|
|
32
|
+
onClick?.();
|
|
33
|
+
}, ariaLabel: ariaLabel, ...rest }, icons?.next ?? React.createElement(IconChevronRight, null))));
|
|
34
|
+
case 'previous':
|
|
35
|
+
return (React.createElement(View, { as: "li" },
|
|
36
|
+
React.createElement(Button, { className: previousClasses, size: "small", variation: "link", isDisabled: isDisabled, onClick: () => {
|
|
37
|
+
onClick?.();
|
|
38
|
+
}, ariaLabel: ariaLabel, ...rest }, icons?.previous ?? React.createElement(IconChevronLeft, null))));
|
|
39
|
+
case 'ellipsis':
|
|
40
|
+
return (React.createElement(View, { as: "li" },
|
|
41
|
+
React.createElement(Flex, { as: "span", className: classNameModifier(ComponentClassName.PaginationItem, 'ellipsis'), testId: PAGINATION_ELLIPSIS_TEST_ID, ...rest }, "\u2026")));
|
|
42
|
+
// No match type found
|
|
43
|
+
}
|
|
44
|
+
return React.createElement(View, { as: "li" });
|
|
45
|
+
};
|
|
46
|
+
PaginationItem.displayName = 'PaginationItem';
|
|
47
|
+
|
|
48
|
+
export { PAGINATION_CURRENT_TEST_ID, PAGINATION_ELLIPSIS_TEST_ID, PaginationItem };
|
|
@@ -1 +1,41 @@
|
|
|
1
|
-
import*as
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
const usePagination = (props) => {
|
|
4
|
+
const { currentPage: initialPage = 1, totalPages, hasMorePages = false, siblingCount = 1, } = props;
|
|
5
|
+
// The current page should not be less than 1
|
|
6
|
+
const sanitizedInitialPage = Math.max(initialPage, 1);
|
|
7
|
+
// The total pages should be always greater than current page
|
|
8
|
+
const sanitizedTotalPages = Math.max(sanitizedInitialPage, totalPages);
|
|
9
|
+
const [currentPage, setCurrentPage] = React.useState(sanitizedInitialPage);
|
|
10
|
+
// Reset current page if initialPage or totalPages changes
|
|
11
|
+
React.useEffect(() => {
|
|
12
|
+
setCurrentPage(sanitizedInitialPage);
|
|
13
|
+
}, [sanitizedInitialPage, sanitizedTotalPages]);
|
|
14
|
+
const onNext = React.useCallback(() => {
|
|
15
|
+
if (currentPage < sanitizedTotalPages) {
|
|
16
|
+
setCurrentPage(currentPage + 1);
|
|
17
|
+
}
|
|
18
|
+
}, [currentPage, sanitizedTotalPages]);
|
|
19
|
+
const onPrevious = React.useCallback(() => {
|
|
20
|
+
if (currentPage > 1) {
|
|
21
|
+
setCurrentPage(currentPage - 1);
|
|
22
|
+
}
|
|
23
|
+
}, [currentPage]);
|
|
24
|
+
const onChange = React.useCallback((newPageIndex) => {
|
|
25
|
+
if (typeof newPageIndex === 'number') {
|
|
26
|
+
setCurrentPage(newPageIndex);
|
|
27
|
+
}
|
|
28
|
+
}, []);
|
|
29
|
+
return {
|
|
30
|
+
currentPage,
|
|
31
|
+
hasMorePages,
|
|
32
|
+
onChange,
|
|
33
|
+
onNext,
|
|
34
|
+
onPrevious,
|
|
35
|
+
// The sibling count should not be less than 1
|
|
36
|
+
siblingCount: Math.max(siblingCount, 1),
|
|
37
|
+
totalPages: sanitizedTotalPages,
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
export { usePagination };
|
|
@@ -1 +1,39 @@
|
|
|
1
|
-
import*
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { useRange, ELLIPSIS } from './useRange.mjs';
|
|
3
|
+
import { PaginationItem } from './PaginationItem.mjs';
|
|
4
|
+
import { ComponentText } from '../shared/constants.mjs';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* This hook will be used to get the pagination items to be rendered in the pagination primitive
|
|
8
|
+
* @param currentPage current page number
|
|
9
|
+
* @param totalPages total number of pages
|
|
10
|
+
* @param siblingCount the number of siblings on each side of
|
|
11
|
+
* @param onNext callback function triggered when the next-page button is pressed
|
|
12
|
+
* @param onPrevious callback function triggered when the prev-page button is pressed
|
|
13
|
+
* @param onChange callback function triggered every time the page changes
|
|
14
|
+
* @returns an array of pagination items
|
|
15
|
+
*/
|
|
16
|
+
const usePaginationItems = ({ currentPage, totalPages, hasMorePages, siblingCount, currentPageLabel = ComponentText.PaginationItem.currentPageLabel, pageLabel = ComponentText.PaginationItem.pageLabel, previousLabel = ComponentText.PaginationItem.previousLabel, nextLabel = ComponentText.PaginationItem.nextLabel, onNext, onPrevious, onChange, }) => {
|
|
17
|
+
const previousItem = (React.createElement(PaginationItem, { type: "previous", key: "previous", currentPage: currentPage, onClick: onPrevious, isDisabled: currentPage <= 1, ariaLabel: previousLabel }));
|
|
18
|
+
const nextItem = (React.createElement(PaginationItem, { type: "next", key: "next", currentPage: currentPage, onClick: onNext, isDisabled: currentPage >= totalPages && !hasMorePages, ariaLabel: nextLabel }));
|
|
19
|
+
// To get the range of page numbers to be rendered in the pagination primitive
|
|
20
|
+
const range = useRange(currentPage, totalPages, siblingCount);
|
|
21
|
+
const pageItems = React.useMemo(() => range.map((item, idx) => {
|
|
22
|
+
if (item === ELLIPSIS) {
|
|
23
|
+
return (React.createElement(PaginationItem, { type: "ellipsis", key: idx === 1 ? 'start-ellipsis' : 'end-ellipsis' }));
|
|
24
|
+
}
|
|
25
|
+
return (
|
|
26
|
+
// Note: Do NOT use index for `key` and instead use page number
|
|
27
|
+
// otherwise, react cannot update the component correctly with its diff mechanism
|
|
28
|
+
React.createElement(PaginationItem, { key: item, type: "page", page: item, currentPage: currentPage, currentPageLabel: currentPageLabel, onClick: () => onChange?.(item, currentPage),
|
|
29
|
+
/**
|
|
30
|
+
* @todo We should consider how we would support interpolation in our string translations.
|
|
31
|
+
* This works for "Go to page 31" or "translatedText {s}" as the supplied string
|
|
32
|
+
* But for Arabic or Japanese or some other languages the supplied string might look like: "{s} translatedText".
|
|
33
|
+
*/
|
|
34
|
+
ariaLabel: `${pageLabel} ${item}` }));
|
|
35
|
+
}), [range, currentPage, currentPageLabel, pageLabel, onChange]);
|
|
36
|
+
return [previousItem, ...pageItems, nextItem];
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export { usePaginationItems };
|