@momo-kits/native-kits 0.157.1-beta.9-debug → 0.157.1-com.1-debug
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/compose/build.gradle.kts +1 -1
- package/compose/compose.podspec +1 -1
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Avatar.kt +157 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Carousel.kt +123 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Collapse.kt +224 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Loader.kt +108 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/ProgressInfo.kt +350 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Rating.kt +87 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Slider.kt +360 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Stepper.kt +256 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Steps.kt +494 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/SuggestAction.kt +131 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Swipe.kt +215 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/TabView.kt +449 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tooltip.kt +21 -7
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Uploader.kt +192 -0
- package/gradle.properties +1 -1
- package/ios/Input/Input.swift +4 -0
- package/local.properties +2 -2
- package/package.json +1 -1
- package/src/doctor/README.md +73 -0
- package/src/doctor/package-lock.json +885 -0
- package/src/doctor/package.json +44 -0
- package/src/doctor/publish.sh +27 -0
- package/src/doctor/src/Users.json +112 -0
- package/src/doctor/src/Whitelist.json +6 -0
- package/src/doctor/src/commands/check.ts +81 -0
- package/src/doctor/src/commands/doctor.ts +193 -0
- package/src/doctor/src/index.ts +35 -0
- package/src/doctor/src/logger.ts +84 -0
- package/src/doctor/src/task/native.ts +21 -0
- package/src/doctor/src/task/utils.ts +20 -0
- package/src/doctor/src/utils/checkCoreDependencies.ts +138 -0
- package/src/doctor/src/utils/checkDeletedPackage.ts +53 -0
- package/src/doctor/src/utils/checkDeprecatedPackages.ts +168 -0
- package/src/doctor/src/utils/checkDeprecatedVersion.ts +60 -0
- package/src/doctor/src/utils/checkShareDependencies.ts +251 -0
- package/src/doctor/src/utils/checkWrongVersionCommunityPackage.ts +64 -0
- package/src/doctor/src/utils/getErrorMessage.ts +84 -0
- package/src/doctor/src/utils/scanComponentUsage.ts +206 -0
- package/src/doctor/src/utils/scanFoundationImports.ts +169 -0
- package/src/doctor/src/utils/scanMaxApiUsage.ts +86 -0
- package/src/doctor/src/utils/scanNativeModulesUsage.ts +78 -0
- package/src/doctor/src/utils/sendMessage.ts +28 -0
- package/src/doctor/tsconfig.json +14 -0
- package/src/doctor/yarn.lock +492 -0
- package/src/foundations/Application/BottomSheet.tsx +358 -0
- package/src/foundations/Application/BottomTab/BottomTabBar.tsx +320 -0
- package/src/foundations/Application/BottomTab/CustomBottomTabItem.tsx +155 -0
- package/src/foundations/Application/BottomTab/TabBarIcon.tsx +113 -0
- package/src/foundations/Application/BottomTab/index.tsx +449 -0
- package/src/foundations/Application/Components/BackgroundImageView.tsx +126 -0
- package/src/foundations/Application/Components/HeaderAnimated.tsx +69 -0
- package/src/foundations/Application/Components/HeaderBackground.tsx +83 -0
- package/src/foundations/Application/Components/HeaderExtendHeader.tsx +225 -0
- package/src/foundations/Application/Components/HeaderLeft.tsx +93 -0
- package/src/foundations/Application/Components/HeaderRight.tsx +444 -0
- package/src/foundations/Application/Components/HeaderTitle.tsx +596 -0
- package/src/foundations/Application/Components/NavigationButton.tsx +76 -0
- package/src/foundations/Application/Components/SearchHeader.tsx +127 -0
- package/src/foundations/Application/Localize.ts +44 -0
- package/src/foundations/Application/ModalScreen.tsx +148 -0
- package/src/foundations/Application/Navigation.ts +63 -0
- package/src/foundations/Application/NavigationContainer.tsx +245 -0
- package/src/foundations/Application/Navigator.ts +171 -0
- package/src/foundations/Application/ScaleSizeProvider.tsx +16 -0
- package/src/foundations/Application/StackScreen.tsx +420 -0
- package/src/foundations/Application/TooltipPortal.tsx +127 -0
- package/src/foundations/Application/WidgetContainer.tsx +162 -0
- package/src/foundations/Application/index.ts +34 -0
- package/src/foundations/Application/types.ts +350 -0
- package/src/foundations/Application/utils.tsx +239 -0
- package/src/foundations/Assets/DotAnimation.json +256 -0
- package/src/foundations/Assets/SpinnerAnimation.json +1027 -0
- package/src/foundations/Assets/icon.json +4052 -0
- package/src/foundations/Assets/icon_bank.json +506 -0
- package/src/foundations/Assets/language.json +208 -0
- package/src/foundations/Assets/lottie_circle_loader.json +1 -0
- package/src/foundations/Assets/pinAnimation.json +1 -0
- package/src/foundations/Assets/unpinAnimation.json +1 -0
- package/src/foundations/Badge/Badge.tsx +104 -0
- package/src/foundations/Badge/BadgeDot.tsx +35 -0
- package/src/foundations/Badge/BadgeDotAnimation.tsx +95 -0
- package/src/foundations/Badge/BadgeRibbon.tsx +112 -0
- package/src/foundations/Badge/Shape.tsx +29 -0
- package/src/foundations/Badge/index.tsx +8 -0
- package/src/foundations/Badge/styles.ts +125 -0
- package/src/foundations/Badge/types.ts +68 -0
- package/src/foundations/Button/index.tsx +371 -0
- package/src/foundations/Button/styles.ts +65 -0
- package/src/foundations/CheckBox/index.tsx +104 -0
- package/src/foundations/CheckBox/styles.ts +17 -0
- package/src/foundations/CheckBox/types.ts +37 -0
- package/src/foundations/Consts/colors+spacing+radius.ts +232 -0
- package/src/foundations/Consts/index.ts +4 -0
- package/src/foundations/Consts/styles.ts +52 -0
- package/src/foundations/Consts/theme.ts +121 -0
- package/src/foundations/Context/index.ts +27 -0
- package/src/foundations/Divider/DashDivider.tsx +46 -0
- package/src/foundations/Divider/index.tsx +45 -0
- package/src/foundations/FoundationList/index.tsx +12 -0
- package/src/foundations/FoundationList/types.ts +7 -0
- package/src/foundations/Icon/index.tsx +57 -0
- package/src/foundations/Icon/types.ts +32 -0
- package/src/foundations/IconButton/index.tsx +144 -0
- package/src/foundations/IconButton/styles.ts +20 -0
- package/src/foundations/Image/index.tsx +115 -0
- package/src/foundations/Image/styles.ts +7 -0
- package/src/foundations/Image/types.ts +7 -0
- package/src/foundations/Input/Input.tsx +280 -0
- package/src/foundations/Input/InputDropDown.tsx +161 -0
- package/src/foundations/Input/InputMoney.tsx +325 -0
- package/src/foundations/Input/InputOTP.tsx +299 -0
- package/src/foundations/Input/InputPhoneNumber.tsx +287 -0
- package/src/foundations/Input/InputSearch.tsx +351 -0
- package/src/foundations/Input/InputTextArea.tsx +218 -0
- package/src/foundations/Input/SystemTextInput.tsx +44 -0
- package/src/foundations/Input/TextTyping.tsx +115 -0
- package/src/foundations/Input/common.tsx +243 -0
- package/src/foundations/Input/index.tsx +373 -0
- package/src/foundations/Input/styles.ts +226 -0
- package/src/foundations/Input/utils.ts +97 -0
- package/src/foundations/Layout/Card.tsx +108 -0
- package/src/foundations/Layout/FloatingButton.tsx +179 -0
- package/src/foundations/Layout/GridSystem.tsx +137 -0
- package/src/foundations/Layout/Item.tsx +59 -0
- package/src/foundations/Layout/ItemList.tsx +66 -0
- package/src/foundations/Layout/ItemSectionList.tsx +40 -0
- package/src/foundations/Layout/Screen.tsx +644 -0
- package/src/foundations/Layout/Section.tsx +103 -0
- package/src/foundations/Layout/TrackingScope.tsx +18 -0
- package/src/foundations/Layout/index.ts +34 -0
- package/src/foundations/Layout/styles.ts +95 -0
- package/src/foundations/Layout/types.ts +40 -0
- package/src/foundations/Layout/utils.ts +47 -0
- package/src/foundations/Loader/DotLoader.tsx +37 -0
- package/src/foundations/Loader/Loader.tsx +13 -0
- package/src/foundations/Loader/ProgressBar.tsx +45 -0
- package/src/foundations/Loader/Spinner.tsx +29 -0
- package/src/foundations/Loader/index.tsx +6 -0
- package/src/foundations/Loader/styles.ts +10 -0
- package/src/foundations/Loader/types.ts +35 -0
- package/src/foundations/Loader/utils.ts +25 -0
- package/src/foundations/Pagination/Dot.tsx +19 -0
- package/src/foundations/Pagination/PaginationDot.tsx +44 -0
- package/src/foundations/Pagination/PaginationNumber.tsx +31 -0
- package/src/foundations/Pagination/PaginationScroll.tsx +99 -0
- package/src/foundations/Pagination/PaginationWhiteDot.tsx +43 -0
- package/src/foundations/Pagination/index.tsx +25 -0
- package/src/foundations/Pagination/styles.ts +51 -0
- package/src/foundations/Pagination/types.ts +40 -0
- package/src/foundations/Popup/PopupNotify.tsx +276 -0
- package/src/foundations/Popup/PopupPromotion.tsx +118 -0
- package/src/foundations/Popup/index.tsx +4 -0
- package/src/foundations/Popup/types.ts +96 -0
- package/src/foundations/Radio/index.tsx +108 -0
- package/src/foundations/Radio/styles.ts +15 -0
- package/src/foundations/Radio/types.ts +31 -0
- package/src/foundations/Skeleton/index.tsx +118 -0
- package/src/foundations/Skeleton/styles.ts +5 -0
- package/src/foundations/Skeleton/types.ts +6 -0
- package/src/foundations/Switch/index.tsx +68 -0
- package/src/foundations/Switch/styles.ts +25 -0
- package/src/foundations/Switch/types.ts +19 -0
- package/src/foundations/Tag/index.tsx +128 -0
- package/src/foundations/Tag/types.ts +41 -0
- package/src/foundations/Text/index.tsx +241 -0
- package/src/foundations/Text/styles.ts +78 -0
- package/src/foundations/Text/types.ts +53 -0
- package/src/foundations/Text/utils.ts +63 -0
- package/src/foundations/Title/index.tsx +285 -0
- package/src/foundations/Title/styles.ts +55 -0
- package/src/foundations/Title/types.ts +21 -0
- package/src/foundations/index.ts +50 -0
- package/src/foundations/package.json +35 -0
- package/src/foundations/publish.sh +17 -0
- package/src/libs/AutoComplete/index.tsx +88 -0
- package/src/libs/AutoComplete/package.json +16 -0
- package/src/libs/AutoComplete/publish.sh +16 -0
- package/src/libs/AutoComplete/styles.ts +15 -0
- package/src/libs/AutoComplete/types.ts +60 -0
- package/src/libs/Avatar/index.tsx +146 -0
- package/src/libs/Avatar/package.json +16 -0
- package/src/libs/Avatar/publish.sh +20 -0
- package/src/libs/Avatar/styles.ts +18 -0
- package/src/libs/Avatar/types.ts +57 -0
- package/src/libs/Badge/Badge.tsx +70 -0
- package/src/libs/Badge/BadgeDot.tsx +11 -0
- package/src/libs/Badge/BadgeRibbon.tsx +122 -0
- package/src/libs/Badge/Shape.tsx +29 -0
- package/src/libs/Badge/index.tsx +7 -0
- package/src/libs/Badge/package.json +16 -0
- package/src/libs/Badge/publish.sh +18 -0
- package/src/libs/Badge/styles.ts +55 -0
- package/src/libs/Badge/types.ts +63 -0
- package/src/libs/Calendar/CalendarPro.tsx +307 -0
- package/src/libs/Calendar/Day.tsx +150 -0
- package/src/libs/Calendar/HeaderControl.tsx +55 -0
- package/src/libs/Calendar/LunarDateConverter.ts +228 -0
- package/src/libs/Calendar/LunarService.ts +206 -0
- package/src/libs/Calendar/Month.tsx +118 -0
- package/src/libs/Calendar/MonthList.tsx +226 -0
- package/src/libs/Calendar/TabHeader.tsx +91 -0
- package/src/libs/Calendar/Util.ts +288 -0
- package/src/libs/Calendar/holidayData.ts +118 -0
- package/src/libs/Calendar/index.tsx +383 -0
- package/src/libs/Calendar/package.json +18 -0
- package/src/libs/Calendar/publish.sh +18 -0
- package/src/libs/Calendar/styles.ts +122 -0
- package/src/libs/Calendar/types.ts +212 -0
- package/src/libs/Carousel/animation.ts +62 -0
- package/src/libs/Carousel/index.tsx +517 -0
- package/src/libs/Carousel/package.json +18 -0
- package/src/libs/Carousel/publish.sh +16 -0
- package/src/libs/Carousel/types.ts +71 -0
- package/src/libs/Chip/index.tsx +164 -0
- package/src/libs/Chip/package.json +16 -0
- package/src/libs/Chip/publish.sh +16 -0
- package/src/libs/Chip/styles.ts +20 -0
- package/src/libs/Chip/types.ts +72 -0
- package/src/libs/Collapse/index.tsx +305 -0
- package/src/libs/Collapse/package.json +16 -0
- package/src/libs/Collapse/publish.sh +18 -0
- package/src/libs/Collapse/styles.ts +37 -0
- package/src/libs/Collapse/types.ts +84 -0
- package/src/libs/DateTimePicker/WheelPicker.tsx +163 -0
- package/src/libs/DateTimePicker/WheelPickerItem.tsx +58 -0
- package/src/libs/DateTimePicker/index.tsx +188 -0
- package/src/libs/DateTimePicker/package.json +16 -0
- package/src/libs/DateTimePicker/publish.sh +17 -0
- package/src/libs/DateTimePicker/styles.ts +31 -0
- package/src/libs/DateTimePicker/types.ts +102 -0
- package/src/libs/DateTimePicker/utils.ts +114 -0
- package/src/libs/Information/index.tsx +129 -0
- package/src/libs/Information/package.json +16 -0
- package/src/libs/Information/publish.sh +18 -0
- package/src/libs/Information/styles.ts +34 -0
- package/src/libs/Information/types.ts +79 -0
- package/src/libs/Logo/index.tsx +39 -0
- package/src/libs/Logo/package.json +17 -0
- package/src/libs/Logo/publish.sh +16 -0
- package/src/libs/Logo/styles.ts +25 -0
- package/src/libs/Logo/types.ts +13 -0
- package/src/libs/ProgressInfo/ProgressInfoHorizontal.tsx +128 -0
- package/src/libs/ProgressInfo/ProgressInfoIcon.tsx +88 -0
- package/src/libs/ProgressInfo/ProgressInfoVertical.tsx +85 -0
- package/src/libs/ProgressInfo/index.tsx +22 -0
- package/src/libs/ProgressInfo/package.json +16 -0
- package/src/libs/ProgressInfo/publish.sh +16 -0
- package/src/libs/ProgressInfo/styles.ts +46 -0
- package/src/libs/ProgressInfo/types.ts +60 -0
- package/src/libs/ProgressInfo/yarn.lock +8 -0
- package/src/libs/Rating/index.tsx +74 -0
- package/src/libs/Rating/package.json +16 -0
- package/src/libs/Rating/publish.sh +18 -0
- package/src/libs/Rating/type.ts +25 -0
- package/src/libs/Slider/Label.tsx +33 -0
- package/src/libs/Slider/helpers.ts +35 -0
- package/src/libs/Slider/hooks.tsx +218 -0
- package/src/libs/Slider/index.tsx +453 -0
- package/src/libs/Slider/package.json +16 -0
- package/src/libs/Slider/publish.sh +18 -0
- package/src/libs/Slider/styles.ts +36 -0
- package/src/libs/Stepper/NumberView.tsx +64 -0
- package/src/libs/Stepper/StepperButton.tsx +37 -0
- package/src/libs/Stepper/index.tsx +139 -0
- package/src/libs/Stepper/package.json +16 -0
- package/src/libs/Stepper/publish.sh +17 -0
- package/src/libs/Stepper/styles.ts +44 -0
- package/src/libs/Stepper/types.ts +154 -0
- package/src/libs/Steps/StepIcon.tsx +86 -0
- package/src/libs/Steps/StepsHorizontal.tsx +189 -0
- package/src/libs/Steps/StepsVertical.tsx +133 -0
- package/src/libs/Steps/index.tsx +20 -0
- package/src/libs/Steps/package.json +16 -0
- package/src/libs/Steps/publish.sh +16 -0
- package/src/libs/Steps/styles.ts +46 -0
- package/src/libs/Steps/types.ts +159 -0
- package/src/libs/Steps/utils.ts +175 -0
- package/src/libs/SuggestAction/SuggestActionView.tsx +124 -0
- package/src/libs/SuggestAction/index.tsx +3 -0
- package/src/libs/SuggestAction/package.json +16 -0
- package/src/libs/SuggestAction/publish.sh +16 -0
- package/src/libs/SuggestAction/styles.ts +30 -0
- package/src/libs/SuggestAction/types.ts +36 -0
- package/src/libs/Swipe/SwipeView.tsx +151 -0
- package/src/libs/Swipe/index.tsx +5 -0
- package/src/libs/Swipe/package.json +16 -0
- package/src/libs/Swipe/publish.sh +16 -0
- package/src/libs/Swipe/styles.ts +16 -0
- package/src/libs/Swipe/types.ts +109 -0
- package/src/libs/TabView/assets/Path.tsx +29 -0
- package/src/libs/TabView/index.tsx +184 -0
- package/src/libs/TabView/package.json +16 -0
- package/src/libs/TabView/publish.sh +16 -0
- package/src/libs/TabView/styles.ts +96 -0
- package/src/libs/TabView/tabBar/CardTabBar.tsx +137 -0
- package/src/libs/TabView/tabBar/SrollableTabBar.tsx +218 -0
- package/src/libs/TabView/tabBar/TabBar.tsx +67 -0
- package/src/libs/TabView/tabItem/CardTabItem.tsx +118 -0
- package/src/libs/TabView/tabItem/TabItem.tsx +180 -0
- package/src/libs/TabView/types.ts +166 -0
- package/src/libs/Template/HeaderSliderBanner/index.tsx +86 -0
- package/src/libs/Template/HeaderSliderBanner/types.ts +16 -0
- package/src/libs/Template/TrustBanner/CustomAvatar.tsx +39 -0
- package/src/libs/Template/TrustBanner/index.tsx +161 -0
- package/src/libs/Template/TrustBanner/styles.ts +48 -0
- package/src/libs/Template/TrustBanner/types.ts +50 -0
- package/src/libs/Template/index.tsx +4 -0
- package/src/libs/Template/package.json +18 -0
- package/src/libs/Template/publish.sh +17 -0
- package/src/libs/Title/index.tsx +284 -0
- package/src/libs/Title/package.json +17 -0
- package/src/libs/Title/publish.sh +16 -0
- package/src/libs/Title/styles.ts +54 -0
- package/src/libs/Title/types.ts +21 -0
- package/src/libs/Tooltip/TooltipButtons.tsx +54 -0
- package/src/libs/Tooltip/index.tsx +608 -0
- package/src/libs/Tooltip/package.json +16 -0
- package/src/libs/Tooltip/publish.sh +18 -0
- package/src/libs/Tooltip/styles.ts +70 -0
- package/src/libs/Tooltip/types.ts +61 -0
- package/src/libs/Uploader/index.tsx +87 -0
- package/src/libs/Uploader/package.json +17 -0
- package/src/libs/Uploader/publish.sh +18 -0
- package/src/libs/Uploader/styles.ts +30 -0
- package/src/libs/Uploader/types.ts +69 -0
- package/src/native/MoMoNative.podspec +18 -0
- package/src/native/calculator/android/build.gradle +61 -0
- package/src/native/calculator/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/src/native/calculator/android/gradle/wrapper/gradle-wrapper.properties +6 -0
- package/src/native/calculator/android/gradlew +172 -0
- package/src/native/calculator/android/gradlew.bat +84 -0
- package/src/native/calculator/android/src/main/AndroidManifest.xml +5 -0
- package/src/native/calculator/android/src/main/java/com/calculator/KeyboardViewModule.java +22 -0
- package/src/native/calculator/android/src/main/java/com/calculator/KeyboardViewPackage.java +35 -0
- package/src/native/calculator/android/src/main/java/com/calculator/modules/CalculatorKeyboardModule.java +157 -0
- package/src/native/calculator/android/src/main/java/com/calculator/views/calculatorkeyboard/CalculatorEditText.java +36 -0
- package/src/native/calculator/android/src/main/java/com/calculator/views/calculatorkeyboard/FixedRelativeLayout.java +45 -0
- package/src/native/calculator/android/src/main/java/com/calculator/views/calculatorkeyboard/MomoTextInputCalculatorManager.java +173 -0
- package/src/native/calculator/android/src/main/java/com/calculator/views/customkeyboard/RNCustomKeyboardModule.java +417 -0
- package/src/native/calculator/ios/Helper/MomoHelper.swift +16 -0
- package/src/native/calculator/ios/KeyboardView-Bridging-Header.h +60 -0
- package/src/native/calculator/ios/KeyboardView.h +19 -0
- package/src/native/calculator/ios/KeyboardView.m +56 -0
- package/src/native/calculator/ios/MomoTextInputCalculator.swift +144 -0
- package/src/native/calculator/ios/RNCustomKeyboard/RNCustomKeyboard.h +6 -0
- package/src/native/calculator/ios/RNCustomKeyboard/RNCustomKeyboard.m +143 -0
- package/src/native/package.json +14 -0
- package/src/native/publish.sh +29 -0
- package/src/native/resource/android/build.gradle +57 -0
- package/src/native/resource/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/src/native/resource/android/gradle/wrapper/gradle-wrapper.properties +6 -0
- package/src/native/resource/android/src/main/AndroidManifest.xml +6 -0
- package/src/native/resource/android/src/main/java/com/resource/RNResourceModule.java +90 -0
- package/src/native/resource/android/src/main/java/com/resource/RNResourcePackage.java +22 -0
- package/src/native/resource/ios/RNResouce.m +71 -0
- package/src/native/resource/ios/RNResource.h +5 -0
- package/example/ios/Example.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/xcschememanagement.plist +0 -14
- package/example/ios/Example.xcworkspace/xcuserdata/sophia.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/example/ios/Example.xcworkspace/xcuserdata/sophia.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +0 -6
- package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/MoMoUIKits.xcscheme +0 -58
- package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/Pods-Example.xcscheme +0 -58
- package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/SDWebImage.xcscheme +0 -58
- package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/SDWebImageSwiftUI.xcscheme +0 -58
- package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/SkeletonUI.xcscheme +0 -58
- package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/lottie-ios-LottiePrivacyInfo.xcscheme +0 -58
- package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/lottie-ios.xcscheme +0 -58
- package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/xcschememanagement.plist +0 -46
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import {TagProps} from '@momo-kits/foundation';
|
|
2
|
+
import React, {Dispatch, SetStateAction} from 'react';
|
|
3
|
+
|
|
4
|
+
export type CollapseImageSize = 24 | 32 | 40;
|
|
5
|
+
|
|
6
|
+
export type CollapseProps = {
|
|
7
|
+
/**
|
|
8
|
+
* The title represents what is being collapsed or expanded. It is usually a summary or
|
|
9
|
+
* a brief heading corresponding to the detailed content that gets revealed.
|
|
10
|
+
*/
|
|
11
|
+
title: string;
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Optional. A more detailed explanation or continuation of the title. This text provides
|
|
15
|
+
* additional context or information, which is particularly useful when the collapsed content
|
|
16
|
+
* is not immediately visible or requires extra explanation.
|
|
17
|
+
*/
|
|
18
|
+
description?: string;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Optional. The URL or local file path of an image to be displayed. This feature is often
|
|
22
|
+
* used to provide a visual context or decoration, enhancing user engagement or understanding
|
|
23
|
+
* of the information being toggled.
|
|
24
|
+
*/
|
|
25
|
+
image?: string;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Optional. A callback function that is triggered when the collapse component is pressed or
|
|
29
|
+
* selected. This function is typically used to toggle the view state of the collapsible content.
|
|
30
|
+
* Add isExpanded as a parameter to know the current state of the collapse, for tracking.
|
|
31
|
+
*/
|
|
32
|
+
onPress?: (isExpanded: boolean) => void;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Optional. If `true`, a border is displayed around the collapse component, visually separating
|
|
36
|
+
* it from other UI elements. This is particularly useful in densely packed interfaces to delineate
|
|
37
|
+
* between different sections.
|
|
38
|
+
* Defaults to `false` if not provided.
|
|
39
|
+
*/
|
|
40
|
+
showBorder?: boolean;
|
|
41
|
+
|
|
42
|
+
imageSize?: CollapseImageSize;
|
|
43
|
+
|
|
44
|
+
subTitle?: string;
|
|
45
|
+
tagProps?: TagProps;
|
|
46
|
+
scrollEnabled?: boolean;
|
|
47
|
+
scrollContentMaxHeight?: number;
|
|
48
|
+
titleSize?: 'small' | 'medium' | 'large';
|
|
49
|
+
useBackgroundCollapseButton?: boolean;
|
|
50
|
+
|
|
51
|
+
headerAlign: 'flex-start' | 'flex-end' | 'center';
|
|
52
|
+
|
|
53
|
+
expandDefault?: boolean;
|
|
54
|
+
|
|
55
|
+
children?: React.ReactNode;
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Optional. If `true`, the collapse component will not use Animated.View for the transition
|
|
59
|
+
* effect when expanding or collapsing. This is useful when the component is nested within
|
|
60
|
+
* another collapsible component that already has an animated transition effect.
|
|
61
|
+
* Can be use to fix the iseue: If WebView is the children of Collapse, the WebView will be blank when collapse is expanded.
|
|
62
|
+
* Defaults to `false` if not provided.
|
|
63
|
+
*/
|
|
64
|
+
disabledAnimated?: boolean;
|
|
65
|
+
|
|
66
|
+
accessibilityLabel?: string;
|
|
67
|
+
|
|
68
|
+
nestedScrollEnabled?: boolean;
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Optional. Background color of the collapse.
|
|
72
|
+
*/
|
|
73
|
+
backgroundColor?: string;
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Optional. Color of the title text.
|
|
77
|
+
*/
|
|
78
|
+
titleColor?: string;
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
export type CollapseHandle = {
|
|
82
|
+
setExpanded: Dispatch<SetStateAction<boolean>>;
|
|
83
|
+
expanded: boolean;
|
|
84
|
+
};
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import React, {
|
|
2
|
+
FC,
|
|
3
|
+
memo,
|
|
4
|
+
useCallback,
|
|
5
|
+
useContext,
|
|
6
|
+
useEffect,
|
|
7
|
+
useRef,
|
|
8
|
+
} from 'react';
|
|
9
|
+
import {
|
|
10
|
+
Animated,
|
|
11
|
+
FlatList,
|
|
12
|
+
ListRenderItemInfo,
|
|
13
|
+
NativeScrollEvent,
|
|
14
|
+
NativeSyntheticEvent,
|
|
15
|
+
View,
|
|
16
|
+
} from 'react-native';
|
|
17
|
+
import styles from './styles';
|
|
18
|
+
import { ApplicationContext } from '@momo-kits/foundation';
|
|
19
|
+
import { WheelPickerProps } from './types';
|
|
20
|
+
import { debounce, itemSize } from './utils';
|
|
21
|
+
import WheelPickerItem from './WheelPickerItem';
|
|
22
|
+
|
|
23
|
+
const AnimatedFlatList = Animated.createAnimatedComponent(FlatList);
|
|
24
|
+
const WheelPicker: FC<WheelPickerProps> = ({
|
|
25
|
+
name,
|
|
26
|
+
data,
|
|
27
|
+
style,
|
|
28
|
+
onChange,
|
|
29
|
+
selectedData,
|
|
30
|
+
}) => {
|
|
31
|
+
const { theme } = useContext(ApplicationContext);
|
|
32
|
+
const flatListRef = useRef<any>(null);
|
|
33
|
+
const scrollAnimatedValue = useRef(new Animated.Value(0)).current;
|
|
34
|
+
const canMomentum = useRef(false);
|
|
35
|
+
const initItemNum = 15;
|
|
36
|
+
|
|
37
|
+
useEffect(() => {
|
|
38
|
+
debouncedScrollEnd();
|
|
39
|
+
return () => {
|
|
40
|
+
debouncedScrollEnd.cancel();
|
|
41
|
+
};
|
|
42
|
+
}, [data.length]);
|
|
43
|
+
|
|
44
|
+
const findClosestIndex = (array: string[], value: string) => {
|
|
45
|
+
let closest = array.reduce((a, b) => {
|
|
46
|
+
let aDiff = Math.abs(Number(a) - Number(value));
|
|
47
|
+
let bDiff = Math.abs(Number(b) - Number(value));
|
|
48
|
+
|
|
49
|
+
if (aDiff === bDiff) {
|
|
50
|
+
return a < b ? a : b;
|
|
51
|
+
} else {
|
|
52
|
+
return bDiff < aDiff ? b : a;
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
return array.indexOf(closest);
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
const debouncedScrollEnd = debounce(() => {
|
|
60
|
+
let selectedIndex = data.indexOf(selectedData);
|
|
61
|
+
|
|
62
|
+
if (selectedIndex === -1) {
|
|
63
|
+
selectedIndex = findClosestIndex(data, selectedData);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
if (selectedIndex < 2) {
|
|
67
|
+
selectedIndex = 2;
|
|
68
|
+
}
|
|
69
|
+
if (selectedIndex > data.length - 3) {
|
|
70
|
+
selectedIndex = data.length - 3;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
flatListRef.current?.scrollToIndex({
|
|
74
|
+
index: selectedIndex - 2,
|
|
75
|
+
animated: true,
|
|
76
|
+
});
|
|
77
|
+
}, 100);
|
|
78
|
+
|
|
79
|
+
const renderItem = useCallback(({ item, index }: ListRenderItemInfo<any>) => {
|
|
80
|
+
return (
|
|
81
|
+
<WheelPickerItem
|
|
82
|
+
item={item}
|
|
83
|
+
index={index}
|
|
84
|
+
scrollAnimatedValue={scrollAnimatedValue}
|
|
85
|
+
itemSize={itemSize}
|
|
86
|
+
/>
|
|
87
|
+
);
|
|
88
|
+
}, []);
|
|
89
|
+
|
|
90
|
+
const renderOverlay = () => {
|
|
91
|
+
return (
|
|
92
|
+
<View style={styles.overlay}>
|
|
93
|
+
<View style={[styles.selectedItem, { height: itemSize }]} />
|
|
94
|
+
</View>
|
|
95
|
+
);
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
const getItemLayout = (
|
|
99
|
+
_data: ArrayLike<unknown> | null | undefined,
|
|
100
|
+
index: number,
|
|
101
|
+
) => ({
|
|
102
|
+
length: itemSize,
|
|
103
|
+
offset: itemSize * index,
|
|
104
|
+
index,
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
const onMomentumScrollBegin = () => {
|
|
108
|
+
canMomentum.current = true;
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
const onMomentumScrollEnd = (e: NativeSyntheticEvent<NativeScrollEvent>) => {
|
|
112
|
+
if (canMomentum.current) {
|
|
113
|
+
let index = Math.round(e.nativeEvent.contentOffset.y / itemSize);
|
|
114
|
+
onChange?.(name, data[index + 2]);
|
|
115
|
+
}
|
|
116
|
+
canMomentum.current = false;
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
const onScrollToIndexFailed = (error: any) => {
|
|
120
|
+
console.warn('FlatList scrollToIndex failed', error);
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
return (
|
|
124
|
+
<View
|
|
125
|
+
style={[
|
|
126
|
+
style,
|
|
127
|
+
styles.wheelPicker,
|
|
128
|
+
{
|
|
129
|
+
borderColor: theme.colors.border.default,
|
|
130
|
+
backgroundColor: theme.colors.background.surface,
|
|
131
|
+
maxHeight: itemSize * 5,
|
|
132
|
+
},
|
|
133
|
+
]}
|
|
134
|
+
>
|
|
135
|
+
{renderOverlay()}
|
|
136
|
+
<AnimatedFlatList
|
|
137
|
+
windowSize={7}
|
|
138
|
+
initialNumToRender={initItemNum}
|
|
139
|
+
maxToRenderPerBatch={initItemNum}
|
|
140
|
+
snapToInterval={itemSize}
|
|
141
|
+
snapToOffsets={data.map((_, index) => index * itemSize)}
|
|
142
|
+
keyExtractor={(item, index) => `Wheel picker item ${item}-${index}`}
|
|
143
|
+
decelerationRate={'fast'}
|
|
144
|
+
getItemLayout={getItemLayout}
|
|
145
|
+
onScrollToIndexFailed={onScrollToIndexFailed}
|
|
146
|
+
onMomentumScrollBegin={onMomentumScrollBegin}
|
|
147
|
+
onScroll={Animated.event(
|
|
148
|
+
[{ nativeEvent: { contentOffset: { y: scrollAnimatedValue } } }],
|
|
149
|
+
{
|
|
150
|
+
useNativeDriver: true,
|
|
151
|
+
},
|
|
152
|
+
)}
|
|
153
|
+
onMomentumScrollEnd={onMomentumScrollEnd}
|
|
154
|
+
ref={flatListRef}
|
|
155
|
+
showsVerticalScrollIndicator={false}
|
|
156
|
+
data={data}
|
|
157
|
+
renderItem={renderItem}
|
|
158
|
+
/>
|
|
159
|
+
</View>
|
|
160
|
+
);
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
export default memo(WheelPicker);
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import React, { FC, memo, useContext } from 'react';
|
|
2
|
+
import { Animated } from 'react-native';
|
|
3
|
+
import styles from './styles';
|
|
4
|
+
import { ApplicationContext } from '@momo-kits/foundation';
|
|
5
|
+
import { WheelPickerItemProps } from './types';
|
|
6
|
+
|
|
7
|
+
const WheelPickerItem: FC<WheelPickerItemProps> = ({
|
|
8
|
+
item,
|
|
9
|
+
index,
|
|
10
|
+
scrollAnimatedValue,
|
|
11
|
+
itemSize,
|
|
12
|
+
}) => {
|
|
13
|
+
const { theme } = useContext(ApplicationContext);
|
|
14
|
+
const position = Animated.divide(scrollAnimatedValue, itemSize);
|
|
15
|
+
const distance = Animated.subtract(index, position);
|
|
16
|
+
const opacity =
|
|
17
|
+
distance.interpolate({
|
|
18
|
+
inputRange: [0, 1, 2, 3, 4],
|
|
19
|
+
outputRange: [0.4, 0.8, 1, 0.8, 0.4],
|
|
20
|
+
extrapolate: 'clamp',
|
|
21
|
+
}) || 1;
|
|
22
|
+
const scale =
|
|
23
|
+
distance.interpolate({
|
|
24
|
+
inputRange: [0, 1, 2, 3, 4],
|
|
25
|
+
outputRange: [0.87, 0.87, 1, 0.87, 0.87],
|
|
26
|
+
extrapolate: 'clamp',
|
|
27
|
+
}) || 1;
|
|
28
|
+
|
|
29
|
+
return (
|
|
30
|
+
<Animated.View
|
|
31
|
+
style={[
|
|
32
|
+
styles.wheelItem,
|
|
33
|
+
{
|
|
34
|
+
opacity,
|
|
35
|
+
height: itemSize,
|
|
36
|
+
},
|
|
37
|
+
]}
|
|
38
|
+
>
|
|
39
|
+
<Animated.Text
|
|
40
|
+
allowFontScaling={false}
|
|
41
|
+
style={{
|
|
42
|
+
fontFamily: `${theme.font}-Semibold`,
|
|
43
|
+
transform: [
|
|
44
|
+
{
|
|
45
|
+
scale,
|
|
46
|
+
},
|
|
47
|
+
],
|
|
48
|
+
fontSize: 16,
|
|
49
|
+
lineHeight: 22,
|
|
50
|
+
}}
|
|
51
|
+
>
|
|
52
|
+
{item}
|
|
53
|
+
</Animated.Text>
|
|
54
|
+
</Animated.View>
|
|
55
|
+
);
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
export default memo(WheelPickerItem);
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
import React, { FC, useEffect, useMemo, useState } from 'react';
|
|
2
|
+
import { Dimensions, LayoutChangeEvent, View } from 'react-native';
|
|
3
|
+
import { Spacing, Text } from '@momo-kits/foundation';
|
|
4
|
+
import WheelPicker from './WheelPicker';
|
|
5
|
+
import {
|
|
6
|
+
getDaysInMonth,
|
|
7
|
+
getHours,
|
|
8
|
+
getMinutes,
|
|
9
|
+
getMonths,
|
|
10
|
+
getYears,
|
|
11
|
+
timeMode,
|
|
12
|
+
} from './utils';
|
|
13
|
+
import { DateObject, DateTimePickerProps, PickerDataObject } from './types';
|
|
14
|
+
import styles from './styles';
|
|
15
|
+
|
|
16
|
+
const date = new Date();
|
|
17
|
+
const minDateDefault = new Date(date);
|
|
18
|
+
const maxDateDefault = new Date(date);
|
|
19
|
+
minDateDefault.setFullYear(minDateDefault.getFullYear() - 10);
|
|
20
|
+
maxDateDefault.setFullYear(maxDateDefault.getFullYear() + 10);
|
|
21
|
+
date.setHours(0, 0);
|
|
22
|
+
const screenWidth = Dimensions.get('window').width;
|
|
23
|
+
|
|
24
|
+
const DateTimePicker: FC<DateTimePickerProps> = ({
|
|
25
|
+
format = 'DD-MM-YYYY',
|
|
26
|
+
minuteInterval = 1,
|
|
27
|
+
onChange,
|
|
28
|
+
selectedValue = date,
|
|
29
|
+
minDate = minDateDefault,
|
|
30
|
+
maxDate = maxDateDefault,
|
|
31
|
+
arrayLabelTime = [],
|
|
32
|
+
style,
|
|
33
|
+
}) => {
|
|
34
|
+
const [data, setData] = useState<DateObject[]>([]);
|
|
35
|
+
let [currentDate, setCurrentDate] = useState<PickerDataObject>({
|
|
36
|
+
day: selectedValue.getDate(),
|
|
37
|
+
month: selectedValue.getMonth() + 1,
|
|
38
|
+
year: selectedValue.getFullYear(),
|
|
39
|
+
hour: selectedValue.getHours(),
|
|
40
|
+
min: selectedValue.getMinutes(),
|
|
41
|
+
});
|
|
42
|
+
const [containerWidth, setContainerWidth] = useState(screenWidth);
|
|
43
|
+
|
|
44
|
+
useEffect(() => {
|
|
45
|
+
setupData();
|
|
46
|
+
}, [currentDate]);
|
|
47
|
+
|
|
48
|
+
useEffect(() => {
|
|
49
|
+
let initData = selectedValue;
|
|
50
|
+
|
|
51
|
+
if (selectedValue < minDate) {
|
|
52
|
+
initData = minDate;
|
|
53
|
+
} else if (selectedValue > maxDate) {
|
|
54
|
+
initData = maxDate;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
onChange?.(initData);
|
|
58
|
+
}, []);
|
|
59
|
+
|
|
60
|
+
const formatParts = format.split(/[^A-Za-z]+/);
|
|
61
|
+
const isOnlyHour = formatParts.length === 1 && formatParts[0] === 'HH';
|
|
62
|
+
const dayData = useMemo(
|
|
63
|
+
() =>
|
|
64
|
+
getDaysInMonth(+currentDate.year, +currentDate.month, minDate, maxDate),
|
|
65
|
+
[currentDate.year, currentDate.month, minDate, maxDate],
|
|
66
|
+
);
|
|
67
|
+
const monthData = useMemo(
|
|
68
|
+
() => getMonths(minDate, maxDate, +currentDate.year),
|
|
69
|
+
[currentDate.year, minDate, maxDate],
|
|
70
|
+
);
|
|
71
|
+
const yearData = useMemo(
|
|
72
|
+
() => getYears(minDate, maxDate),
|
|
73
|
+
[minDate, maxDate],
|
|
74
|
+
);
|
|
75
|
+
const hourData = useMemo(() => getHours(isOnlyHour ? 12 : 24), []);
|
|
76
|
+
const minData = useMemo(() => getMinutes(minuteInterval), []);
|
|
77
|
+
|
|
78
|
+
const setupData = () => {
|
|
79
|
+
const componentData: { [key: string]: DateObject } = {
|
|
80
|
+
DD: {
|
|
81
|
+
name: 'day',
|
|
82
|
+
data: dayData,
|
|
83
|
+
},
|
|
84
|
+
MM: {
|
|
85
|
+
name: 'month',
|
|
86
|
+
data: monthData,
|
|
87
|
+
},
|
|
88
|
+
YYYY: {
|
|
89
|
+
name: 'year',
|
|
90
|
+
data: yearData,
|
|
91
|
+
},
|
|
92
|
+
HH: { name: 'hour', data: hourData },
|
|
93
|
+
mm: { name: 'min', data: minData },
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
const initialData = formatParts.map(part => {
|
|
97
|
+
const component = componentData[part];
|
|
98
|
+
if (!component) {
|
|
99
|
+
throw new Error(`Invalid format component: ${part}`);
|
|
100
|
+
}
|
|
101
|
+
return {
|
|
102
|
+
...component,
|
|
103
|
+
};
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
if (isOnlyHour) {
|
|
107
|
+
initialData.push({ name: 'timeMode', data: timeMode });
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
setData(initialData);
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
const numOfColumns = data.length;
|
|
114
|
+
|
|
115
|
+
const onPickerChange = (name: string, dataItem: string) => {
|
|
116
|
+
const newDate = {
|
|
117
|
+
...currentDate,
|
|
118
|
+
[name]: dataItem,
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
if (name === 'month') {
|
|
122
|
+
const finalDay = new Date(newDate.year, newDate.month, 0).getDate();
|
|
123
|
+
if (newDate.day > finalDay) {
|
|
124
|
+
newDate.day = finalDay;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
const changedDate = new Date(
|
|
129
|
+
newDate.year,
|
|
130
|
+
newDate.month - 1,
|
|
131
|
+
newDate.day,
|
|
132
|
+
newDate.hour,
|
|
133
|
+
newDate.min,
|
|
134
|
+
);
|
|
135
|
+
|
|
136
|
+
if (
|
|
137
|
+
JSON.stringify(newDate.valueOf()) !==
|
|
138
|
+
JSON.stringify(currentDate.valueOf())
|
|
139
|
+
) {
|
|
140
|
+
if (changedDate < minDate) {
|
|
141
|
+
onChange?.(minDate);
|
|
142
|
+
} else if (changedDate > maxDate) {
|
|
143
|
+
onChange?.(maxDate);
|
|
144
|
+
} else onChange?.(changedDate);
|
|
145
|
+
}
|
|
146
|
+
setCurrentDate(newDate);
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
const paddingArray = ['', ''];
|
|
150
|
+
|
|
151
|
+
const onLayout = (e: LayoutChangeEvent) => {
|
|
152
|
+
if (containerWidth !== e.nativeEvent.layout.width) {
|
|
153
|
+
setContainerWidth(e.nativeEvent.layout.width);
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
return (
|
|
158
|
+
<View onLayout={onLayout} style={[style, styles.datePicker]}>
|
|
159
|
+
{data.map((dataItem, index) => {
|
|
160
|
+
return (
|
|
161
|
+
<View key={`${dataItem.name}_${index}`}>
|
|
162
|
+
{arrayLabelTime[index] && (
|
|
163
|
+
<View style={styles.dateTimeContainer}>
|
|
164
|
+
<Text typography="action_s_bold">{arrayLabelTime[index]}</Text>
|
|
165
|
+
</View>
|
|
166
|
+
)}
|
|
167
|
+
<WheelPicker
|
|
168
|
+
selectedData={String(currentDate[dataItem.name])}
|
|
169
|
+
onChange={onPickerChange}
|
|
170
|
+
data={[...paddingArray, ...dataItem.data, ...paddingArray]}
|
|
171
|
+
name={dataItem.name}
|
|
172
|
+
style={{
|
|
173
|
+
width:
|
|
174
|
+
(containerWidth -
|
|
175
|
+
Spacing.M * 2 -
|
|
176
|
+
(numOfColumns - 1) * Spacing.M) /
|
|
177
|
+
numOfColumns,
|
|
178
|
+
}}
|
|
179
|
+
/>
|
|
180
|
+
</View>
|
|
181
|
+
);
|
|
182
|
+
})}
|
|
183
|
+
</View>
|
|
184
|
+
);
|
|
185
|
+
};
|
|
186
|
+
|
|
187
|
+
export type { DateTimePickerProps };
|
|
188
|
+
export { DateTimePicker };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@momo-kits/date-picker",
|
|
3
|
+
"version": "0.157.1-beta.4",
|
|
4
|
+
"private": false,
|
|
5
|
+
"main": "index.tsx",
|
|
6
|
+
"peerDependencies": {
|
|
7
|
+
"@momo-kits/foundation": "latest",
|
|
8
|
+
"react": "*",
|
|
9
|
+
"react-native": "*"
|
|
10
|
+
},
|
|
11
|
+
"license": "MoMo",
|
|
12
|
+
"publishConfig": {
|
|
13
|
+
"registry": "https://registry.npmjs.org/"
|
|
14
|
+
},
|
|
15
|
+
"dependencies": {}
|
|
16
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
if [ "$1" == "stable" ]; then
|
|
4
|
+
npm version $(npm view @momo-kits/foundation@stable version)
|
|
5
|
+
npm version patch
|
|
6
|
+
npm publish --tag stable --access=public
|
|
7
|
+
elif [ "$1" == "latest" ]; then
|
|
8
|
+
npm publish --tag latest --access=public
|
|
9
|
+
elif [ "$1" == "beta" ]; then
|
|
10
|
+
npm publish --tag beta --access=public
|
|
11
|
+
else
|
|
12
|
+
npm publish --tag alpha --access=public
|
|
13
|
+
fi
|
|
14
|
+
|
|
15
|
+
PACKAGE_NAME=$(npm pkg get name)
|
|
16
|
+
NEW_PACKAGE_VERSION=$(npm pkg get version)
|
|
17
|
+
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { StyleSheet } from 'react-native';
|
|
2
|
+
import { Colors, Radius, Spacing } from '@momo-kits/foundation';
|
|
3
|
+
|
|
4
|
+
export default StyleSheet.create({
|
|
5
|
+
wheelItem: {
|
|
6
|
+
width: '100%',
|
|
7
|
+
alignItems: 'center',
|
|
8
|
+
justifyContent: 'center',
|
|
9
|
+
},
|
|
10
|
+
wheelPicker: {
|
|
11
|
+
borderWidth: 1,
|
|
12
|
+
borderRadius: Radius.S,
|
|
13
|
+
},
|
|
14
|
+
overlay: {
|
|
15
|
+
position: 'absolute',
|
|
16
|
+
top: 0,
|
|
17
|
+
bottom: 0,
|
|
18
|
+
right: 0,
|
|
19
|
+
left: 0,
|
|
20
|
+
justifyContent: 'center',
|
|
21
|
+
},
|
|
22
|
+
selectedItem: {
|
|
23
|
+
backgroundColor: Colors.blue_10,
|
|
24
|
+
},
|
|
25
|
+
datePicker: {
|
|
26
|
+
overflow: 'hidden',
|
|
27
|
+
flexDirection: 'row',
|
|
28
|
+
justifyContent: 'space-evenly',
|
|
29
|
+
},
|
|
30
|
+
dateTimeContainer: { alignItems: 'center', marginBottom: Spacing.S },
|
|
31
|
+
});
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import {Animated, ViewStyle} from 'react-native';
|
|
2
|
+
import AnimatedValue = Animated.AnimatedValue;
|
|
3
|
+
|
|
4
|
+
export type DateTimePickerProps = {
|
|
5
|
+
/**
|
|
6
|
+
* Optional. Specifies the format for displaying the date and time.
|
|
7
|
+
*/
|
|
8
|
+
format?: string;
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Optional. The interval between minutes in the picker. For example, '15' would show minute options 0, 15, 30, 45, etc.
|
|
12
|
+
*/
|
|
13
|
+
minuteInterval?: number;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Optional. A callback function that is triggered when the date or time value changes.
|
|
17
|
+
*/
|
|
18
|
+
onChange?: (data: Date) => void;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Optional. The initially selected date and time value.
|
|
22
|
+
*/
|
|
23
|
+
selectedValue?: Date;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Optional. The minimum date that can be selected.
|
|
27
|
+
*/
|
|
28
|
+
minDate?: Date;
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Optional. The maximum date that can be selected.
|
|
32
|
+
*/
|
|
33
|
+
maxDate?: Date;
|
|
34
|
+
/**
|
|
35
|
+
* Optional. Label for Time
|
|
36
|
+
*/
|
|
37
|
+
arrayLabelTime?: string[];
|
|
38
|
+
|
|
39
|
+
style?: ViewStyle;
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Represents the data structure for individual date and time components.
|
|
44
|
+
*/
|
|
45
|
+
export type PickerDataObject = {
|
|
46
|
+
day: number;
|
|
47
|
+
month: number;
|
|
48
|
+
year: number;
|
|
49
|
+
hour: number;
|
|
50
|
+
min: number;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Optional. Specifies the mode of time presentation, e.g., 'AM' or 'PM'.
|
|
54
|
+
*/
|
|
55
|
+
timeMode?: string;
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Type representing a date object with a name identifying the component ('day', 'month', etc.) and the associated data.
|
|
60
|
+
*/
|
|
61
|
+
export type DateObject = {
|
|
62
|
+
name: 'day' | 'month' | 'year' | 'hour' | 'min' | 'timeMode';
|
|
63
|
+
data: string[];
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Properties for the WheelPicker component.
|
|
68
|
+
* This component provides a spinning-wheel style picker for selecting from provided data.
|
|
69
|
+
*/
|
|
70
|
+
export type WheelPickerProps = {
|
|
71
|
+
/**
|
|
72
|
+
* The name of the picker, used to identify it.
|
|
73
|
+
*/
|
|
74
|
+
name: string;
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* The data to be displayed and selected in the picker.
|
|
78
|
+
*/
|
|
79
|
+
data: string[];
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Custom styles to apply to the WheelPicker component.
|
|
83
|
+
*/
|
|
84
|
+
style: ViewStyle;
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* A callback function that is triggered when the selected data changes.
|
|
88
|
+
*/
|
|
89
|
+
onChange: (name: string, data: string) => void;
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* The currently selected data in the picker.
|
|
93
|
+
*/
|
|
94
|
+
selectedData: string;
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
export type WheelPickerItemProps = {
|
|
98
|
+
item: number;
|
|
99
|
+
index: number;
|
|
100
|
+
scrollAnimatedValue: AnimatedValue;
|
|
101
|
+
itemSize: number;
|
|
102
|
+
};
|