@aws-amplify/ui-react 5.3.2 → 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 -1
- 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/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/package.json +13 -45
- package/dist/Field-94e428ed.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,42 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { classNames, ComponentClassName, classNameModifier } from '@aws-amplify/ui';
|
|
3
|
+
import '../Field/FieldClearButton.mjs';
|
|
4
|
+
import { FieldDescription } from '../Field/FieldDescription.mjs';
|
|
5
|
+
import { FieldErrorMessage } from '../Field/FieldErrorMessage.mjs';
|
|
6
|
+
import '../Field/Field.mjs';
|
|
7
|
+
import { Flex } from '../Flex/Flex.mjs';
|
|
8
|
+
import { Label } from '../Label/Label.mjs';
|
|
9
|
+
import { Select } from '../Select/Select.mjs';
|
|
10
|
+
import { splitPrimitiveProps } from '../utils/splitPrimitiveProps.mjs';
|
|
11
|
+
import { useStableId } from '../utils/useStableId.mjs';
|
|
12
|
+
import { primitiveWithForwardRef } from '../utils/primitiveWithForwardRef.mjs';
|
|
13
|
+
|
|
14
|
+
const selectFieldChildren = ({ children, options, }) => {
|
|
15
|
+
if (children) {
|
|
16
|
+
if (options?.length) {
|
|
17
|
+
// eslint-disable-next-line no-console
|
|
18
|
+
console.warn('Amplify UI: <SelectField> component defaults to rendering children over `options`. When using the `options` prop, omit children.');
|
|
19
|
+
}
|
|
20
|
+
return children;
|
|
21
|
+
}
|
|
22
|
+
return options?.map((option, index) => (React.createElement("option", { label: option, value: option, key: `${option}-${index}` }, option)));
|
|
23
|
+
};
|
|
24
|
+
const SelectFieldPrimitive = (props, ref) => {
|
|
25
|
+
const { children, className, descriptiveText, errorMessage, hasError = false, id, label, labelHidden = false, options, size, testId, inputStyles, ..._rest } = props;
|
|
26
|
+
const fieldId = useStableId(id);
|
|
27
|
+
const descriptionId = useStableId();
|
|
28
|
+
const ariaDescribedBy = descriptiveText ? descriptionId : undefined;
|
|
29
|
+
const { styleProps, rest } = splitPrimitiveProps(_rest);
|
|
30
|
+
return (React.createElement(Flex, { className: classNames(ComponentClassName.Field, classNameModifier(ComponentClassName.Field, size), ComponentClassName.SelectField, className), testId: testId, ...styleProps },
|
|
31
|
+
React.createElement(Label, { htmlFor: fieldId, visuallyHidden: labelHidden }, label),
|
|
32
|
+
React.createElement(FieldDescription, { id: descriptionId, labelHidden: labelHidden, descriptiveText: descriptiveText }),
|
|
33
|
+
React.createElement(Select, { "aria-describedby": ariaDescribedBy, hasError: hasError, id: fieldId, ref: ref, size: size, ...rest, ...inputStyles }, selectFieldChildren({ children, options })),
|
|
34
|
+
React.createElement(FieldErrorMessage, { hasError: hasError, errorMessage: errorMessage })));
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* [📖 Docs](https://ui.docs.amplify.aws/react/components/selectfield)
|
|
38
|
+
*/
|
|
39
|
+
const SelectField = primitiveWithForwardRef(SelectFieldPrimitive);
|
|
40
|
+
SelectField.displayName = 'SelectField';
|
|
41
|
+
|
|
42
|
+
export { SelectField };
|
|
@@ -1 +1,77 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import { sanitizeNamespaceImport, isFunction, classNames, ComponentClassName, classNameModifier, classNameModifierByFlag } from '@aws-amplify/ui';
|
|
2
|
+
import * as RadixSlider from '@radix-ui/react-slider';
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import '../Field/FieldClearButton.mjs';
|
|
5
|
+
import { FieldDescription } from '../Field/FieldDescription.mjs';
|
|
6
|
+
import { FieldErrorMessage } from '../Field/FieldErrorMessage.mjs';
|
|
7
|
+
import '../Field/Field.mjs';
|
|
8
|
+
import { FieldGroup } from '../FieldGroup/FieldGroup.mjs';
|
|
9
|
+
import { Flex } from '../Flex/Flex.mjs';
|
|
10
|
+
import { Label } from '../Label/Label.mjs';
|
|
11
|
+
import { splitPrimitiveProps } from '../utils/splitPrimitiveProps.mjs';
|
|
12
|
+
import { View } from '../View/View.mjs';
|
|
13
|
+
import { useStableId } from '../utils/useStableId.mjs';
|
|
14
|
+
import { useFieldset } from '../Fieldset/useFieldset.mjs';
|
|
15
|
+
import { primitiveWithForwardRef } from '../utils/primitiveWithForwardRef.mjs';
|
|
16
|
+
|
|
17
|
+
// Radix packages don't support ESM in Node, in some scenarios(e.g. SSR)
|
|
18
|
+
// We have to use namespace import and sanitize it to ensure the interoperablity between ESM and CJS
|
|
19
|
+
const { Range, Root, Thumb, Track } = sanitizeNamespaceImport(RadixSlider);
|
|
20
|
+
const SLIDER_LABEL_TEST_ID = 'slider-label';
|
|
21
|
+
const SLIDER_ROOT_TEST_ID = 'slider-root';
|
|
22
|
+
const SLIDER_TRACK_TEST_ID = 'slider-track';
|
|
23
|
+
const SLIDER_RANGE_TEST_ID = 'slider-range';
|
|
24
|
+
const SliderFieldPrimitive = ({ ariaValuetext, className, defaultValue = 0, descriptiveText, emptyTrackColor, errorMessage, filledTrackColor, formatValue, hasError = false, id, isDisabled, isValueHidden = false, label, labelHidden = false, onChange, orientation = 'horizontal', outerEndComponent, outerStartComponent, testId, thumbColor, trackSize, value, size, ..._rest }, ref) => {
|
|
25
|
+
const { isFieldsetDisabled } = useFieldset();
|
|
26
|
+
const fieldId = useStableId(id);
|
|
27
|
+
const labelId = useStableId();
|
|
28
|
+
const descriptionId = useStableId();
|
|
29
|
+
const ariaDescribedBy = descriptiveText ? descriptionId : undefined;
|
|
30
|
+
const disabled = isFieldsetDisabled ? isFieldsetDisabled : isDisabled;
|
|
31
|
+
const { styleProps, rest } = splitPrimitiveProps(_rest);
|
|
32
|
+
const isControlled = value !== undefined;
|
|
33
|
+
const [currentValue, setCurrentValue] = React.useState(isControlled ? value : defaultValue);
|
|
34
|
+
const values = isControlled ? [value] : undefined;
|
|
35
|
+
const defaultValues = !isControlled ? [defaultValue] : undefined;
|
|
36
|
+
const onValueChange = React.useCallback((value) => {
|
|
37
|
+
setCurrentValue(value[0]);
|
|
38
|
+
if (isFunction(onChange)) {
|
|
39
|
+
// Do not have multiple thumbs support yet
|
|
40
|
+
onChange(value[0]);
|
|
41
|
+
}
|
|
42
|
+
}, [onChange]);
|
|
43
|
+
const renderedValue = React.useMemo(() => {
|
|
44
|
+
const formattedValue = isFunction(formatValue)
|
|
45
|
+
? formatValue(currentValue)
|
|
46
|
+
: currentValue;
|
|
47
|
+
return typeof formatValue === 'string' ? (React.createElement(View, { as: "span" }, formattedValue)) : (formattedValue);
|
|
48
|
+
}, [currentValue, formatValue]);
|
|
49
|
+
const isVertical = orientation === 'vertical';
|
|
50
|
+
const componentClasses = classNames(ComponentClassName.SliderFieldTrack, classNameModifier(ComponentClassName.SliderFieldTrack, orientation), classNameModifier(ComponentClassName.SliderFieldTrack, size));
|
|
51
|
+
const rootComponentClasses = classNames(ComponentClassName.SliderFieldRoot, classNameModifier(ComponentClassName.SliderFieldRoot, orientation), classNameModifier(ComponentClassName.SliderFieldRoot, size), classNameModifierByFlag(ComponentClassName.SliderFieldRoot, 'disabled', disabled), className);
|
|
52
|
+
return (React.createElement(Flex
|
|
53
|
+
// Custom classnames will be added to Root below
|
|
54
|
+
, {
|
|
55
|
+
// Custom classnames will be added to Root below
|
|
56
|
+
className: classNames(ComponentClassName.Field, classNameModifier(ComponentClassName.Field, size), ComponentClassName.SliderField), testId: testId, ...styleProps },
|
|
57
|
+
React.createElement(Label, { className: ComponentClassName.SliderFieldLabel, id: labelId, testId: SLIDER_LABEL_TEST_ID, visuallyHidden: labelHidden },
|
|
58
|
+
React.createElement(View, { as: "span" }, label),
|
|
59
|
+
!isValueHidden ? renderedValue : null),
|
|
60
|
+
React.createElement(FieldDescription, { id: descriptionId, labelHidden: labelHidden, descriptiveText: descriptiveText }),
|
|
61
|
+
React.createElement(FieldGroup, { className: ComponentClassName.SliderFieldGroup, id: fieldId, orientation: orientation, outerStartComponent: outerStartComponent, outerEndComponent: outerEndComponent },
|
|
62
|
+
React.createElement(Root, { className: rootComponentClasses, "data-testid": SLIDER_ROOT_TEST_ID, disabled: disabled, defaultValue: defaultValues, onValueChange: onValueChange, orientation: orientation, ref: ref, value: values, ...rest },
|
|
63
|
+
React.createElement(Track, { className: componentClasses, "data-testid": SLIDER_TRACK_TEST_ID, style: {
|
|
64
|
+
backgroundColor: String(emptyTrackColor),
|
|
65
|
+
[`${isVertical ? 'width' : 'height'}`]: trackSize,
|
|
66
|
+
} },
|
|
67
|
+
React.createElement(Range, { className: classNames(ComponentClassName.SliderFieldRange, classNameModifier(ComponentClassName.SliderFieldRange, orientation), classNameModifierByFlag(ComponentClassName.SliderFieldRange, 'disabled', disabled)), "data-testid": SLIDER_RANGE_TEST_ID, style: { backgroundColor: String(filledTrackColor) } })),
|
|
68
|
+
React.createElement(Thumb, { "aria-describedby": ariaDescribedBy, "aria-labelledby": labelId, "aria-valuetext": ariaValuetext, className: classNames(ComponentClassName.SliderFieldThumb, classNameModifier(ComponentClassName.SliderFieldThumb, size), classNameModifierByFlag(ComponentClassName.SliderFieldThumb, 'disabled', disabled)), style: { backgroundColor: String(thumbColor) } }))),
|
|
69
|
+
React.createElement(FieldErrorMessage, { hasError: hasError, errorMessage: errorMessage })));
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* [📖 Docs](https://ui.docs.amplify.aws/react/components/sliderfield)
|
|
73
|
+
*/
|
|
74
|
+
const SliderField = primitiveWithForwardRef(SliderFieldPrimitive);
|
|
75
|
+
SliderField.displayName = 'SliderField';
|
|
76
|
+
|
|
77
|
+
export { SLIDER_LABEL_TEST_ID, SLIDER_RANGE_TEST_ID, SLIDER_ROOT_TEST_ID, SLIDER_TRACK_TEST_ID, SliderField };
|
|
@@ -1 +1,60 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { classNames, ComponentClassName, classNameModifier, classNameModifierByFlag } from '@aws-amplify/ui';
|
|
3
|
+
import { useStepper } from './useStepper.mjs';
|
|
4
|
+
import '../Field/FieldClearButton.mjs';
|
|
5
|
+
import { FieldDescription } from '../Field/FieldDescription.mjs';
|
|
6
|
+
import { FieldErrorMessage } from '../Field/FieldErrorMessage.mjs';
|
|
7
|
+
import '../Field/Field.mjs';
|
|
8
|
+
import { FieldGroup } from '../FieldGroup/FieldGroup.mjs';
|
|
9
|
+
import '../FieldGroupIcon/FieldGroupIcon.mjs';
|
|
10
|
+
import { FieldGroupIconButton } from '../FieldGroupIcon/FieldGroupIconButton.mjs';
|
|
11
|
+
import { Flex } from '../Flex/Flex.mjs';
|
|
12
|
+
import '../Icon/Icon.mjs';
|
|
13
|
+
import '../Icon/context/IconsContext.mjs';
|
|
14
|
+
import { useIcons } from '../Icon/context/useIcons.mjs';
|
|
15
|
+
import { IconAdd } from '../Icon/icons/IconAdd.mjs';
|
|
16
|
+
import '../View/View.mjs';
|
|
17
|
+
import { IconRemove } from '../Icon/icons/IconRemove.mjs';
|
|
18
|
+
import { Input } from '../Input/Input.mjs';
|
|
19
|
+
import { Label } from '../Label/Label.mjs';
|
|
20
|
+
import { ComponentText } from '../shared/constants.mjs';
|
|
21
|
+
import { splitPrimitiveProps } from '../utils/splitPrimitiveProps.mjs';
|
|
22
|
+
import { useStableId } from '../utils/useStableId.mjs';
|
|
23
|
+
import { primitiveWithForwardRef } from '../utils/primitiveWithForwardRef.mjs';
|
|
24
|
+
|
|
25
|
+
const DECREASE_ICON = 'decrease-icon';
|
|
26
|
+
const INCREASE_ICON = 'increase-icon';
|
|
27
|
+
const StepperFieldPrimitive = (props, ref) => {
|
|
28
|
+
const { className,
|
|
29
|
+
// destructure to prevent `defaultValue` from being passed to underlying `Input` via `_rest`
|
|
30
|
+
defaultValue, descriptiveText, errorMessage, hasError = false, id, inputStyles, isDisabled, isReadOnly, isRequired, increaseButtonLabel = ComponentText.StepperField.increaseButtonLabel, decreaseButtonLabel = ComponentText.StepperField.decreaseButtonLabel, label, labelHidden = false,
|
|
31
|
+
// destructure to prevent `onStepChange` from being passed to underlying `Input` via `_rest`
|
|
32
|
+
onStepChange, size, testId,
|
|
33
|
+
// this is only required in useStepper hook but deconstruct here to remove its existence in rest
|
|
34
|
+
value: controlledValue, variation, ..._rest } = props;
|
|
35
|
+
const fieldId = useStableId(id);
|
|
36
|
+
const descriptionId = useStableId();
|
|
37
|
+
const ariaDescribedBy = descriptiveText ? descriptionId : undefined;
|
|
38
|
+
const { styleProps, rest } = splitPrimitiveProps(_rest);
|
|
39
|
+
const icons = useIcons('stepperField');
|
|
40
|
+
const { step, value, inputValue, handleDecrease, handleIncrease, handleOnBlur, handleOnChange, handleOnWheel, setInputValue, shouldDisableDecreaseButton, shouldDisableIncreaseButton, } = useStepper({ ...props, defaultValue, onStepChange });
|
|
41
|
+
React.useEffect(() => {
|
|
42
|
+
const isControlled = controlledValue !== undefined;
|
|
43
|
+
if (isControlled) {
|
|
44
|
+
setInputValue(controlledValue);
|
|
45
|
+
}
|
|
46
|
+
}, [controlledValue, setInputValue]);
|
|
47
|
+
return (React.createElement(Flex, { className: classNames(ComponentClassName.Field, classNameModifier(ComponentClassName.Field, size), ComponentClassName.StepperField, className), testId: testId, ...styleProps },
|
|
48
|
+
React.createElement(Label, { htmlFor: fieldId, visuallyHidden: labelHidden }, label),
|
|
49
|
+
React.createElement(FieldDescription, { id: descriptionId, labelHidden: labelHidden, descriptiveText: descriptiveText }),
|
|
50
|
+
React.createElement(FieldGroup, { outerStartComponent: React.createElement(FieldGroupIconButton, { "aria-controls": fieldId, ariaLabel: `${decreaseButtonLabel} ${value - step}`, className: classNames(ComponentClassName.StepperFieldButtonDecrease, classNameModifier(ComponentClassName.StepperFieldButtonDecrease, variation), classNameModifierByFlag(ComponentClassName.StepperFieldButtonDecrease, 'disabled', shouldDisableDecreaseButton)), "data-invalid": hasError, isDisabled: shouldDisableDecreaseButton, onClick: handleDecrease, size: size }, icons?.remove ?? React.createElement(IconRemove, { "data-testid": DECREASE_ICON })), outerEndComponent: React.createElement(FieldGroupIconButton, { "aria-controls": fieldId, ariaLabel: `${increaseButtonLabel} ${value + step}`, className: classNames(ComponentClassName.StepperFieldButtonIncrease, classNameModifier(ComponentClassName.StepperFieldButtonIncrease, variation), classNameModifierByFlag(ComponentClassName.StepperFieldButtonIncrease, 'disabled', shouldDisableIncreaseButton)), "data-invalid": hasError, isDisabled: shouldDisableIncreaseButton, onClick: handleIncrease, size: size }, icons?.add ?? React.createElement(IconAdd, { "data-testid": INCREASE_ICON })) },
|
|
51
|
+
React.createElement(Input, { "aria-describedby": ariaDescribedBy, className: ComponentClassName.StepperFieldInput, hasError: hasError, id: fieldId, isDisabled: isDisabled, isReadOnly: isReadOnly, isRequired: isRequired, onBlur: handleOnBlur, onChange: handleOnChange, onWheel: handleOnWheel, ref: ref, size: size, variation: variation, type: "number", value: inputValue, ...inputStyles, ...rest })),
|
|
52
|
+
React.createElement(FieldErrorMessage, { hasError: hasError, errorMessage: errorMessage })));
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* [📖 Docs](https://ui.docs.amplify.aws/react/components/stepperfield)
|
|
56
|
+
*/
|
|
57
|
+
const StepperField = primitiveWithForwardRef(StepperFieldPrimitive);
|
|
58
|
+
StepperField.displayName = 'StepperField';
|
|
59
|
+
|
|
60
|
+
export { DECREASE_ICON, INCREASE_ICON, StepperField };
|
|
@@ -1 +1,113 @@
|
|
|
1
|
-
import*as
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { isFunction } from '@aws-amplify/ui';
|
|
3
|
+
|
|
4
|
+
const getCorrectSteppingValue = ({ max, min, step, value, }) => {
|
|
5
|
+
// Round it to the closest step value
|
|
6
|
+
// It will be based off min to be consistent with native input[type="number"]
|
|
7
|
+
// This allows keyboard accessible
|
|
8
|
+
const remainder = (value - min) % step;
|
|
9
|
+
value = value - remainder + Math.round(remainder / step) * step;
|
|
10
|
+
// Make sure new value is not outside the bound
|
|
11
|
+
value = Math.max(min, value);
|
|
12
|
+
if (value > max) {
|
|
13
|
+
value = max - ((max - min) % step);
|
|
14
|
+
}
|
|
15
|
+
return value;
|
|
16
|
+
};
|
|
17
|
+
const useStepper = ({ defaultValue = 0, value: controlledValue, step = 1, max = Number.MAX_SAFE_INTEGER, min = Number.MIN_SAFE_INTEGER, isDisabled, isReadOnly, onChange, onDecrease, onIncrease, onStepChange, }) => {
|
|
18
|
+
const isControlled = controlledValue !== undefined;
|
|
19
|
+
// Make sure max value is greater than or equal to min value
|
|
20
|
+
max = Math.max(min, max);
|
|
21
|
+
// Maintain an internal state for uncontrolled components
|
|
22
|
+
// This allows to take over the input value and correct any invalid versus purely relying on the native uncontrolled input
|
|
23
|
+
const [uncontrolledValue, setUncontrolledValue] = React.useState(() =>
|
|
24
|
+
// This is required for users could provide any defaultValue
|
|
25
|
+
getCorrectSteppingValue({ min, max, step, value: defaultValue }));
|
|
26
|
+
// Same for controlled components on the first render because users could provide invalid initial value.
|
|
27
|
+
// It seems redundant afterwards but necessary for the first render
|
|
28
|
+
const value = isControlled
|
|
29
|
+
? getCorrectSteppingValue({ min, max, step, value: controlledValue })
|
|
30
|
+
: uncontrolledValue;
|
|
31
|
+
const shouldDisableIncreaseButton = isDisabled ?? isReadOnly ?? value + step > max;
|
|
32
|
+
const shouldDisableDecreaseButton = isDisabled ?? isReadOnly ?? value - step < min;
|
|
33
|
+
// This is the exact value to be rendered on screen
|
|
34
|
+
// It could be a string, like '-' or empty string when users clear the input
|
|
35
|
+
const [inputValue, setInputValue] = React.useState(value);
|
|
36
|
+
const handleOnChange = React.useCallback((event) => {
|
|
37
|
+
setInputValue(event.target.value);
|
|
38
|
+
if (isFunction(onChange)) {
|
|
39
|
+
onChange(event);
|
|
40
|
+
}
|
|
41
|
+
}, [onChange]);
|
|
42
|
+
const handleOnBlur = React.useCallback((event) => {
|
|
43
|
+
const parsedValue = parseFloat(event.target.value);
|
|
44
|
+
// Though input[type='number'] has built-in validation to reject non-numerical entries
|
|
45
|
+
// The entered value could still be empty string or minus '-'
|
|
46
|
+
// in these cases, no need to do the following validation
|
|
47
|
+
if (isNaN(parsedValue)) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
const newValue = getCorrectSteppingValue({
|
|
51
|
+
min,
|
|
52
|
+
max,
|
|
53
|
+
step,
|
|
54
|
+
value: parsedValue,
|
|
55
|
+
});
|
|
56
|
+
if (!isControlled) {
|
|
57
|
+
setUncontrolledValue(newValue);
|
|
58
|
+
}
|
|
59
|
+
if (isFunction(onStepChange)) {
|
|
60
|
+
onStepChange(newValue);
|
|
61
|
+
}
|
|
62
|
+
setInputValue(newValue);
|
|
63
|
+
}, [min, max, step, isControlled, onStepChange]);
|
|
64
|
+
const handleIncrease = React.useCallback(() => {
|
|
65
|
+
// No need to check if the value will be outside the bounds
|
|
66
|
+
// The button will be disabled if so
|
|
67
|
+
if (!isControlled) {
|
|
68
|
+
setUncontrolledValue(value + step);
|
|
69
|
+
}
|
|
70
|
+
if (isFunction(onStepChange)) {
|
|
71
|
+
onStepChange(value + step);
|
|
72
|
+
}
|
|
73
|
+
if (isFunction(onIncrease)) {
|
|
74
|
+
onIncrease();
|
|
75
|
+
}
|
|
76
|
+
setInputValue(value + step);
|
|
77
|
+
}, [step, value, isControlled, onIncrease, onStepChange]);
|
|
78
|
+
const handleDecrease = React.useCallback(() => {
|
|
79
|
+
// No need to check if the value will be outside the bounds
|
|
80
|
+
// The button will be disabled if so
|
|
81
|
+
if (!isControlled) {
|
|
82
|
+
setUncontrolledValue(value - step);
|
|
83
|
+
}
|
|
84
|
+
if (isFunction(onStepChange)) {
|
|
85
|
+
onStepChange(value - step);
|
|
86
|
+
}
|
|
87
|
+
if (isFunction(onDecrease)) {
|
|
88
|
+
onDecrease();
|
|
89
|
+
}
|
|
90
|
+
setInputValue(value - step);
|
|
91
|
+
}, [step, value, isControlled, onDecrease, onStepChange]);
|
|
92
|
+
// This aims to disable unwanted behaviors on React input[type='number']
|
|
93
|
+
// When the input gets focused, rotating a wheel will change its value
|
|
94
|
+
// But the parent container(mostly the entire window) will be scrolling to elsewhere
|
|
95
|
+
const handleOnWheel = React.useCallback((event) => {
|
|
96
|
+
event.currentTarget.blur();
|
|
97
|
+
}, []);
|
|
98
|
+
return {
|
|
99
|
+
step,
|
|
100
|
+
value,
|
|
101
|
+
inputValue,
|
|
102
|
+
handleDecrease,
|
|
103
|
+
handleIncrease,
|
|
104
|
+
handleOnBlur,
|
|
105
|
+
handleOnChange,
|
|
106
|
+
handleOnWheel,
|
|
107
|
+
setInputValue,
|
|
108
|
+
shouldDisableDecreaseButton,
|
|
109
|
+
shouldDisableIncreaseButton,
|
|
110
|
+
};
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
export { useStepper };
|
|
@@ -1 +1,48 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { classNames, ComponentClassName, classNameModifierByFlag, classNameModifier } from '@aws-amplify/ui';
|
|
3
|
+
import { Flex } from '../Flex/Flex.mjs';
|
|
4
|
+
import '../Field/FieldClearButton.mjs';
|
|
5
|
+
import '../Field/FieldDescription.mjs';
|
|
6
|
+
import { FieldErrorMessage } from '../Field/FieldErrorMessage.mjs';
|
|
7
|
+
import '../Field/Field.mjs';
|
|
8
|
+
import { Input } from '../Input/Input.mjs';
|
|
9
|
+
import { Label } from '../Label/Label.mjs';
|
|
10
|
+
import { useStableId } from '../utils/useStableId.mjs';
|
|
11
|
+
import { useSwitch } from './useSwitch.mjs';
|
|
12
|
+
import { View } from '../View/View.mjs';
|
|
13
|
+
import { VisuallyHidden } from '../VisuallyHidden/VisuallyHidden.mjs';
|
|
14
|
+
import { useFieldset } from '../Fieldset/useFieldset.mjs';
|
|
15
|
+
import { primitiveWithForwardRef } from '../utils/primitiveWithForwardRef.mjs';
|
|
16
|
+
|
|
17
|
+
const SwitchFieldPrimitive = ({ className, defaultChecked, id, isChecked, isDisabled, isLabelHidden, label, labelPosition, name, onChange, size, thumbColor, trackCheckedColor, trackColor, value, hasError, errorMessage, ...rest }, ref) => {
|
|
18
|
+
const { isOn, changeHandler, isFocused, setIsFocused } = useSwitch({
|
|
19
|
+
onChange,
|
|
20
|
+
isChecked,
|
|
21
|
+
defaultChecked,
|
|
22
|
+
isDisabled,
|
|
23
|
+
});
|
|
24
|
+
const { isFieldsetDisabled } = useFieldset();
|
|
25
|
+
const shouldBeDisabled = isFieldsetDisabled ? isFieldsetDisabled : isDisabled;
|
|
26
|
+
const fieldId = useStableId(id);
|
|
27
|
+
const wrapperClasses = classNames(ComponentClassName.SwitchTrack, classNameModifierByFlag(ComponentClassName.SwitchTrack, 'checked', isOn), classNameModifierByFlag(ComponentClassName.SwitchTrack, 'disabled', shouldBeDisabled), classNameModifierByFlag(ComponentClassName.SwitchTrack, 'focused', isFocused), classNameModifierByFlag(ComponentClassName.SwitchTrack, 'error', hasError));
|
|
28
|
+
const componentClasses = classNames(ComponentClassName.SwitchThumb, classNameModifierByFlag(ComponentClassName.SwitchThumb, 'checked', isOn), classNameModifierByFlag(ComponentClassName.SwitchThumb, 'disabled', shouldBeDisabled));
|
|
29
|
+
return (React.createElement(Flex, { className: classNames(ComponentClassName.SwitchField, classNameModifier(ComponentClassName.SwitchField, size), labelPosition ? `amplify-label-${labelPosition}` : null, className), ref: ref, ...rest },
|
|
30
|
+
React.createElement(VisuallyHidden, null,
|
|
31
|
+
React.createElement(Input, { role: "switch", type: "checkbox", id: fieldId, onChange: changeHandler, disabled: isDisabled, name: name, checked: isOn, value: value, onFocus: () => {
|
|
32
|
+
setIsFocused(true);
|
|
33
|
+
}, onBlur: () => {
|
|
34
|
+
setIsFocused(false);
|
|
35
|
+
} })),
|
|
36
|
+
React.createElement(Label, { htmlFor: fieldId, className: classNames(ComponentClassName.SwitchWrapper, classNameModifier(ComponentClassName.SwitchWrapper, labelPosition)) },
|
|
37
|
+
isLabelHidden ? (React.createElement(VisuallyHidden, { as: "span", className: ComponentClassName.SwitchLabel }, label)) : (React.createElement(View, { as: "span", className: ComponentClassName.SwitchLabel }, label)),
|
|
38
|
+
React.createElement(View, { as: "span", className: wrapperClasses, backgroundColor: isOn ? trackCheckedColor : trackColor },
|
|
39
|
+
React.createElement(View, { as: "span", className: componentClasses, "data-checked": isOn, "data-disabled": shouldBeDisabled, backgroundColor: thumbColor }))),
|
|
40
|
+
React.createElement(FieldErrorMessage, { hasError: hasError, errorMessage: errorMessage })));
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* [📖 Docs](https://ui.docs.amplify.aws/react/components/switchfield)
|
|
44
|
+
*/
|
|
45
|
+
const SwitchField = primitiveWithForwardRef(SwitchFieldPrimitive);
|
|
46
|
+
SwitchField.displayName = 'SwitchField';
|
|
47
|
+
|
|
48
|
+
export { SwitchField };
|
|
@@ -1 +1,30 @@
|
|
|
1
|
-
import{useState
|
|
1
|
+
import { useState, useCallback } from 'react';
|
|
2
|
+
import { isFunction } from '@aws-amplify/ui';
|
|
3
|
+
|
|
4
|
+
const useSwitch = (props) => {
|
|
5
|
+
const { onChange, isChecked, defaultChecked, isDisabled } = props;
|
|
6
|
+
const isControlled = typeof isChecked !== 'undefined';
|
|
7
|
+
const [isOn, setIsOn] = useState(isControlled ? isChecked : !!defaultChecked);
|
|
8
|
+
const [isFocused, setIsFocused] = useState(false);
|
|
9
|
+
const changeHandler = useCallback((event) => {
|
|
10
|
+
if (isDisabled) {
|
|
11
|
+
event.preventDefault();
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
if (isFunction(onChange)) {
|
|
15
|
+
onChange(event);
|
|
16
|
+
}
|
|
17
|
+
setIsOn(event.target.checked);
|
|
18
|
+
}, [onChange, isDisabled]);
|
|
19
|
+
if (isControlled && isOn !== isChecked) {
|
|
20
|
+
setIsOn(isChecked);
|
|
21
|
+
}
|
|
22
|
+
return {
|
|
23
|
+
isOn,
|
|
24
|
+
changeHandler,
|
|
25
|
+
isFocused,
|
|
26
|
+
setIsFocused,
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export { useSwitch };
|
|
@@ -1 +1,18 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { classNames, ComponentClassName, classNameModifier } from '@aws-amplify/ui';
|
|
3
|
+
import { View } from '../View/View.mjs';
|
|
4
|
+
import { primitiveWithForwardRef } from '../utils/primitiveWithForwardRef.mjs';
|
|
5
|
+
|
|
6
|
+
const TablePrimitive = ({ caption, children, className, highlightOnHover = false, size, variation, ...rest }, ref) => {
|
|
7
|
+
const componentClasses = classNames(ComponentClassName.Table, classNameModifier(ComponentClassName.Table, size), classNameModifier(ComponentClassName.Table, variation), className);
|
|
8
|
+
return (React.createElement(View, { as: "table", className: componentClasses, "data-highlightonhover": highlightOnHover, ref: ref, ...rest },
|
|
9
|
+
caption && (React.createElement(View, { as: "caption", className: ComponentClassName.TableCaption }, caption)),
|
|
10
|
+
children));
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* [📖 Docs](https://ui.docs.amplify.aws/react/components/table)
|
|
14
|
+
*/
|
|
15
|
+
const Table = primitiveWithForwardRef(TablePrimitive);
|
|
16
|
+
Table.displayName = 'Table';
|
|
17
|
+
|
|
18
|
+
export { Table };
|
|
@@ -1 +1,10 @@
|
|
|
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 TableBodyPrimitive = ({ children, className, ...rest }, ref) => (React.createElement(View, { as: "tbody", className: classNames(ComponentClassName.TableBody, className), ref: ref, ...rest }, children));
|
|
7
|
+
const TableBody = primitiveWithForwardRef(TableBodyPrimitive);
|
|
8
|
+
TableBody.displayName = 'TableBody';
|
|
9
|
+
|
|
10
|
+
export { TableBody };
|
|
@@ -1 +1,12 @@
|
|
|
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 TableCellPrimitive = ({ as: asElementTag = 'td', children, className, ...rest }, ref) => (React.createElement(View, { as: asElementTag, className: classNames(asElementTag === 'td'
|
|
7
|
+
? ComponentClassName.TableTd
|
|
8
|
+
: ComponentClassName.TableTh, className), ref: ref, ...rest }, children));
|
|
9
|
+
const TableCell = primitiveWithForwardRef(TableCellPrimitive);
|
|
10
|
+
TableCell.displayName = 'TableCell';
|
|
11
|
+
|
|
12
|
+
export { TableCell };
|
|
@@ -1 +1,10 @@
|
|
|
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 TableFootPrimitive = ({ children, className, ...rest }, ref) => (React.createElement(View, { as: "tfoot", className: classNames(ComponentClassName.TableFoot, className), ref: ref, ...rest }, children));
|
|
7
|
+
const TableFoot = primitiveWithForwardRef(TableFootPrimitive);
|
|
8
|
+
TableFoot.displayName = 'TableFoot';
|
|
9
|
+
|
|
10
|
+
export { TableFoot };
|
|
@@ -1 +1,10 @@
|
|
|
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 TableHeadPrimitive = ({ children, className, ...rest }, ref) => (React.createElement(View, { as: "thead", className: classNames(ComponentClassName.TableHead, className), ref: ref, ...rest }, children));
|
|
7
|
+
const TableHead = primitiveWithForwardRef(TableHeadPrimitive);
|
|
8
|
+
TableHead.displayName = 'TableHead';
|
|
9
|
+
|
|
10
|
+
export { TableHead };
|
|
@@ -1 +1,10 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import { classNames, ComponentClassName } from '@aws-amplify/ui';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { View } from '../View/View.mjs';
|
|
4
|
+
import { primitiveWithForwardRef } from '../utils/primitiveWithForwardRef.mjs';
|
|
5
|
+
|
|
6
|
+
const TableRowPrimitive = ({ children, className, ...rest }, ref) => (React.createElement(View, { as: "tr", className: classNames(ComponentClassName.TableRow, className), ref: ref, ...rest }, children));
|
|
7
|
+
const TableRow = primitiveWithForwardRef(TableRowPrimitive);
|
|
8
|
+
TableRow.displayName = 'TableRow';
|
|
9
|
+
|
|
10
|
+
export { TableRow };
|
|
@@ -1 +1,24 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { primitiveWithForwardRef } from '../utils/primitiveWithForwardRef.mjs';
|
|
3
|
+
import { TabsItem } from './TabsItem.mjs';
|
|
4
|
+
import { TabList } from './TabsList.mjs';
|
|
5
|
+
import { TabPanel } from './TabsPanel.mjs';
|
|
6
|
+
import { TabsContainer } from './TabsContainer.mjs';
|
|
7
|
+
|
|
8
|
+
const TabsPrimitive = ({ items, indicatorPosition, justifyContent, spacing, ...rest }, ref) => {
|
|
9
|
+
return (React.createElement(TabsContainer, { ...rest, ref: ref },
|
|
10
|
+
React.createElement(TabList, { indicatorPosition: indicatorPosition, justifyContent: justifyContent, spacing: spacing }, items?.map(({ value, label, content, ...rest }) => (React.createElement(TabsItem, { ...rest, key: value, value: value }, label)))),
|
|
11
|
+
items?.map(({ value, content, isDisabled }) => (React.createElement(TabPanel, { key: value, value: value, isDisabled: isDisabled }, content)))));
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* [📖 Docs](https://ui.docs.amplify.aws/react/components/tabs)
|
|
15
|
+
*/
|
|
16
|
+
const Tabs = Object.assign(primitiveWithForwardRef(TabsPrimitive), {
|
|
17
|
+
Item: TabsItem,
|
|
18
|
+
List: TabList,
|
|
19
|
+
Panel: TabPanel,
|
|
20
|
+
Container: TabsContainer,
|
|
21
|
+
});
|
|
22
|
+
Tabs.displayName = 'Tabs';
|
|
23
|
+
|
|
24
|
+
export { Tabs };
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { isFunction, classNames, ComponentClassName } from '@aws-amplify/ui';
|
|
3
|
+
import { primitiveWithForwardRef } from '../utils/primitiveWithForwardRef.mjs';
|
|
4
|
+
import { View } from '../View/View.mjs';
|
|
5
|
+
import { TabsContext } from './TabsContext.mjs';
|
|
6
|
+
|
|
7
|
+
const TabsContainerPrimitive = ({ children, defaultValue, className, value: controlledValue, onValueChange, isLazy, ...rest }, ref) => {
|
|
8
|
+
const isControlled = controlledValue !== undefined;
|
|
9
|
+
const [localValue, setLocalValue] = React.useState(() => isControlled ? controlledValue : defaultValue);
|
|
10
|
+
const activeTab = isControlled ? controlledValue : localValue ?? '';
|
|
11
|
+
const setActiveTab = React.useCallback((newValue) => {
|
|
12
|
+
if (isFunction(onValueChange)) {
|
|
13
|
+
onValueChange(newValue);
|
|
14
|
+
}
|
|
15
|
+
if (!isControlled) {
|
|
16
|
+
setLocalValue(newValue);
|
|
17
|
+
}
|
|
18
|
+
}, [onValueChange, isControlled]);
|
|
19
|
+
const _value = React.useMemo(() => {
|
|
20
|
+
return {
|
|
21
|
+
activeTab,
|
|
22
|
+
isLazy,
|
|
23
|
+
setActiveTab,
|
|
24
|
+
};
|
|
25
|
+
}, [activeTab, setActiveTab, isLazy]);
|
|
26
|
+
return (React.createElement(TabsContext.Provider, { value: _value },
|
|
27
|
+
React.createElement(View, { ...rest, ref: ref, className: classNames(className, ComponentClassName.Tabs) }, children)));
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* [📖 Docs](https://ui.docs.amplify.aws/react/components/tabs)
|
|
31
|
+
*/
|
|
32
|
+
const TabsContainer = primitiveWithForwardRef(TabsContainerPrimitive);
|
|
33
|
+
TabsContainer.displayName = 'Tabs.Container';
|
|
34
|
+
|
|
35
|
+
export { TabsContainer };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { classNames, ComponentClassName, classNameModifierByFlag, isTypedFunction } from '@aws-amplify/ui';
|
|
3
|
+
import { View } from '../View/View.mjs';
|
|
4
|
+
import { primitiveWithForwardRef } from '../utils/primitiveWithForwardRef.mjs';
|
|
5
|
+
import { TabsContext } from './TabsContext.mjs';
|
|
6
|
+
|
|
7
|
+
const TabsItemPrimitive = ({ className, value, children, onClick, as = 'button', role = 'tab', ...rest }, ref) => {
|
|
8
|
+
const { activeTab, setActiveTab } = React.useContext(TabsContext);
|
|
9
|
+
const isActive = activeTab === value;
|
|
10
|
+
const handleOnClick = (e) => {
|
|
11
|
+
if (isTypedFunction(onClick)) {
|
|
12
|
+
onClick?.(e);
|
|
13
|
+
}
|
|
14
|
+
setActiveTab(value);
|
|
15
|
+
};
|
|
16
|
+
return (React.createElement(View, { ...rest, role: role, as: as, id: `${value}-tab`, "aria-selected": isActive, "aria-controls": `${value}-panel`, tabIndex: !isActive ? -1 : undefined, className: classNames(ComponentClassName.TabsItem, classNameModifierByFlag(ComponentClassName.TabsItem, 'active', activeTab === value), className), ref: ref, onClick: handleOnClick }, children));
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* [📖 Docs](https://ui.docs.amplify.aws/react/components/tabs)
|
|
20
|
+
*/
|
|
21
|
+
const TabsItem = primitiveWithForwardRef(TabsItemPrimitive);
|
|
22
|
+
TabsItem.displayName = 'Tabs.Item';
|
|
23
|
+
|
|
24
|
+
export { TabsItem };
|