@codeleap/mobile 4.0.2 → 4.2.1
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/Registry.d.ts +7 -0
- package/dist/Registry.js +67 -0
- package/dist/Registry.js.map +1 -0
- package/dist/components/ActionIcon/index.d.ts +13 -0
- package/dist/components/ActionIcon/index.js +79 -0
- package/dist/components/ActionIcon/index.js.map +1 -0
- package/dist/components/ActionIcon/styles.d.ts +5 -0
- package/dist/components/ActionIcon/styles.js +3 -0
- package/dist/components/ActionIcon/styles.js.map +1 -0
- package/dist/components/ActionIcon/types.d.ts +11 -0
- package/dist/components/ActionIcon/types.js +3 -0
- package/dist/components/ActionIcon/types.js.map +1 -0
- package/dist/components/ActivityIndicator/index.d.ts +15 -0
- package/dist/components/ActivityIndicator/index.js +66 -0
- package/dist/components/ActivityIndicator/index.js.map +1 -0
- package/dist/components/ActivityIndicator/styles.d.ts +1 -0
- package/dist/components/ActivityIndicator/styles.js +3 -0
- package/dist/components/ActivityIndicator/styles.js.map +1 -0
- package/dist/components/ActivityIndicator/types.d.ts +9 -0
- package/dist/components/ActivityIndicator/types.js +3 -0
- package/dist/components/ActivityIndicator/types.js.map +1 -0
- package/dist/components/Autocomplete/index.d.ts +13 -0
- package/dist/components/Autocomplete/index.js +192 -0
- package/dist/components/Autocomplete/index.js.map +1 -0
- package/dist/components/Autocomplete/styles.d.ts +8 -0
- package/dist/components/Autocomplete/styles.js +3 -0
- package/dist/components/Autocomplete/styles.js.map +1 -0
- package/dist/components/Autocomplete/types.d.ts +58 -0
- package/dist/components/Autocomplete/types.js +3 -0
- package/dist/components/Autocomplete/types.js.map +1 -0
- package/dist/components/Avatar/index.d.ts +13 -0
- package/dist/components/Avatar/index.js +112 -0
- package/dist/components/Avatar/index.js.map +1 -0
- package/dist/components/Avatar/styles.d.ts +2 -0
- package/dist/components/Avatar/styles.js +3 -0
- package/dist/components/Avatar/styles.js.map +1 -0
- package/dist/components/Avatar/types.d.ts +19 -0
- package/dist/components/Avatar/types.js +3 -0
- package/dist/components/Avatar/types.js.map +1 -0
- package/dist/components/AvatarGroup/index.d.ts +13 -0
- package/dist/components/AvatarGroup/index.js +79 -0
- package/dist/components/AvatarGroup/index.js.map +1 -0
- package/dist/components/AvatarGroup/styles.d.ts +3 -0
- package/dist/components/AvatarGroup/styles.js +3 -0
- package/dist/components/AvatarGroup/styles.js.map +1 -0
- package/dist/components/AvatarGroup/types.d.ts +9 -0
- package/dist/components/AvatarGroup/types.js +3 -0
- package/dist/components/AvatarGroup/types.js.map +1 -0
- package/dist/components/Backdrop/index.d.ts +13 -0
- package/dist/components/Backdrop/index.js +82 -0
- package/dist/components/Backdrop/index.js.map +1 -0
- package/dist/components/Backdrop/styles.d.ts +1 -0
- package/dist/components/Backdrop/styles.js +3 -0
- package/dist/components/Backdrop/styles.js.map +1 -0
- package/dist/components/Backdrop/types.d.ts +11 -0
- package/dist/components/Backdrop/types.js +3 -0
- package/dist/components/Backdrop/types.js.map +1 -0
- package/dist/components/Badge/index.d.ts +13 -0
- package/dist/components/Badge/index.js +109 -0
- package/dist/components/Badge/index.js.map +1 -0
- package/dist/components/Badge/styles.d.ts +4 -0
- package/dist/components/Badge/styles.js +3 -0
- package/dist/components/Badge/styles.js.map +1 -0
- package/dist/components/Badge/types.d.ts +27 -0
- package/dist/components/Badge/types.js +3 -0
- package/dist/components/Badge/types.js.map +1 -0
- package/dist/components/Button/index.d.ts +5 -0
- package/dist/components/Button/index.js +123 -0
- package/dist/components/Button/index.js.map +1 -0
- package/dist/components/Button/styles.d.ts +12 -0
- package/dist/components/Button/styles.js +3 -0
- package/dist/components/Button/styles.js.map +1 -0
- package/dist/components/Button/types.d.ts +16 -0
- package/dist/components/Button/types.js +3 -0
- package/dist/components/Button/types.js.map +1 -0
- package/dist/components/Calendar/index.d.ts +19 -0
- package/dist/components/Calendar/index.js +82 -0
- package/dist/components/Calendar/index.js.map +1 -0
- package/dist/components/Calendar/types.d.ts +95 -0
- package/dist/components/Calendar/types.js +3 -0
- package/dist/components/Calendar/types.js.map +1 -0
- package/dist/components/Checkbox/index.d.ts +13 -0
- package/dist/components/Checkbox/index.js +120 -0
- package/dist/components/Checkbox/index.js.map +1 -0
- package/dist/components/Checkbox/styles.d.ts +7 -0
- package/dist/components/Checkbox/styles.js +3 -0
- package/dist/components/Checkbox/styles.js.map +1 -0
- package/dist/components/Checkbox/types.d.ts +10 -0
- package/dist/components/Checkbox/types.js +3 -0
- package/dist/components/Checkbox/types.js.map +1 -0
- package/dist/components/DatePickerModal/index.d.ts +13 -0
- package/dist/components/DatePickerModal/index.js +156 -0
- package/dist/components/DatePickerModal/index.js.map +1 -0
- package/dist/components/DatePickerModal/styles.d.ts +5 -0
- package/dist/components/DatePickerModal/styles.js +3 -0
- package/dist/components/DatePickerModal/styles.js.map +1 -0
- package/dist/components/DatePickerModal/types.d.ts +42 -0
- package/dist/components/DatePickerModal/types.js +3 -0
- package/dist/components/DatePickerModal/types.js.map +1 -0
- package/dist/components/EmptyPlaceholder/index.d.ts +13 -0
- package/dist/components/EmptyPlaceholder/index.js +87 -0
- package/dist/components/EmptyPlaceholder/index.js.map +1 -0
- package/dist/components/EmptyPlaceholder/styles.d.ts +2 -0
- package/dist/components/EmptyPlaceholder/styles.js +3 -0
- package/dist/components/EmptyPlaceholder/styles.js.map +1 -0
- package/dist/components/EmptyPlaceholder/types.d.ts +20 -0
- package/dist/components/EmptyPlaceholder/types.js +3 -0
- package/dist/components/EmptyPlaceholder/types.js.map +1 -0
- package/dist/components/FileInput/index.d.ts +9 -0
- package/dist/components/FileInput/index.js +218 -0
- package/dist/components/FileInput/index.js.map +1 -0
- package/dist/components/FileInput/types.d.ts +23 -0
- package/dist/components/FileInput/types.js +3 -0
- package/dist/components/FileInput/types.js.map +1 -0
- package/dist/components/Grid/index.d.ts +5 -0
- package/dist/components/Grid/index.js +110 -0
- package/dist/components/Grid/index.js.map +1 -0
- package/dist/components/Grid/styles.d.ts +2 -0
- package/dist/components/Grid/styles.js +3 -0
- package/dist/components/Grid/styles.js.map +1 -0
- package/dist/components/Grid/types.d.ts +15 -0
- package/dist/components/Grid/types.js +3 -0
- package/dist/components/Grid/types.js.map +1 -0
- package/dist/components/Icon/index.d.ts +7 -0
- package/dist/components/Icon/index.js +96 -0
- package/dist/components/Icon/index.js.map +1 -0
- package/dist/components/Icon/styles.d.ts +2 -0
- package/dist/components/Icon/styles.js +3 -0
- package/dist/components/Icon/styles.js.map +1 -0
- package/dist/components/Icon/types.d.ts +12 -0
- package/dist/components/Icon/types.js +3 -0
- package/dist/components/Icon/types.js.map +1 -0
- package/dist/components/Image/index.d.ts +5 -0
- package/dist/components/Image/index.js +151 -0
- package/dist/components/Image/index.js.map +1 -0
- package/dist/components/Image/styles.d.ts +2 -0
- package/dist/components/Image/styles.js +3 -0
- package/dist/components/Image/styles.js.map +1 -0
- package/dist/components/Image/types.d.ts +16 -0
- package/dist/components/Image/types.js +3 -0
- package/dist/components/Image/types.js.map +1 -0
- package/dist/components/ImageView/Spotlight.d.ts +41 -0
- package/dist/components/ImageView/Spotlight.js +178 -0
- package/dist/components/ImageView/Spotlight.js.map +1 -0
- package/dist/components/ImageView/component.d.ts +5 -0
- package/dist/components/ImageView/component.js +18 -0
- package/dist/components/ImageView/component.js.map +1 -0
- package/dist/components/ImageView/index.d.ts +2 -0
- package/dist/components/ImageView/index.js +19 -0
- package/dist/components/ImageView/index.js.map +1 -0
- package/dist/components/InputBase/index.d.ts +11 -0
- package/dist/components/InputBase/index.js +110 -0
- package/dist/components/InputBase/index.js.map +1 -0
- package/dist/components/InputBase/styles.d.ts +20 -0
- package/dist/components/InputBase/styles.js +99 -0
- package/dist/components/InputBase/styles.js.map +1 -0
- package/dist/components/InputBase/types.d.ts +26 -0
- package/dist/components/InputBase/types.js +3 -0
- package/dist/components/InputBase/types.js.map +1 -0
- package/dist/components/InputBase/utils.d.ts +12 -0
- package/dist/components/InputBase/utils.js +41 -0
- package/dist/components/InputBase/utils.js.map +1 -0
- package/dist/components/List/index.d.ts +5 -0
- package/dist/components/List/index.js +104 -0
- package/dist/components/List/index.js.map +1 -0
- package/dist/components/List/styles.d.ts +5 -0
- package/dist/components/List/styles.js +3 -0
- package/dist/components/List/styles.js.map +1 -0
- package/dist/components/List/types.d.ts +36 -0
- package/dist/components/List/types.js +3 -0
- package/dist/components/List/types.js.map +1 -0
- package/dist/components/LoadingOverlay/index.d.ts +13 -0
- package/dist/components/LoadingOverlay/index.js +84 -0
- package/dist/components/LoadingOverlay/index.js.map +1 -0
- package/dist/components/LoadingOverlay/styles.d.ts +4 -0
- package/dist/components/LoadingOverlay/styles.js +3 -0
- package/dist/components/LoadingOverlay/styles.js.map +1 -0
- package/dist/components/LoadingOverlay/types.d.ts +8 -0
- package/dist/components/LoadingOverlay/types.js +3 -0
- package/dist/components/LoadingOverlay/types.js.map +1 -0
- package/dist/components/Modal/index.d.ts +14 -0
- package/dist/components/Modal/index.js +151 -0
- package/dist/components/Modal/index.js.map +1 -0
- package/dist/components/Modal/styles.d.ts +4 -0
- package/dist/components/Modal/styles.js +3 -0
- package/dist/components/Modal/styles.js.map +1 -0
- package/dist/components/Modal/types.d.ts +36 -0
- package/dist/components/Modal/types.js +3 -0
- package/dist/components/Modal/types.js.map +1 -0
- package/dist/components/Navigation/Navigation.d.ts +55 -0
- package/dist/components/Navigation/Navigation.js +84 -0
- package/dist/components/Navigation/Navigation.js.map +1 -0
- package/dist/components/Navigation/constants.d.ts +9 -0
- package/dist/components/Navigation/constants.js +12 -0
- package/dist/components/Navigation/constants.js.map +1 -0
- package/dist/components/Navigation/index.d.ts +3 -0
- package/dist/components/Navigation/index.js +20 -0
- package/dist/components/Navigation/index.js.map +1 -0
- package/dist/components/Navigation/types.d.ts +26 -0
- package/dist/components/Navigation/types.js +3 -0
- package/dist/components/Navigation/types.js.map +1 -0
- package/dist/components/Navigation/utils.d.ts +3 -0
- package/dist/components/Navigation/utils.js +69 -0
- package/dist/components/Navigation/utils.js.map +1 -0
- package/dist/components/NumberIncrement/index.d.ts +5 -0
- package/dist/components/NumberIncrement/index.js +263 -0
- package/dist/components/NumberIncrement/index.js.map +1 -0
- package/dist/components/NumberIncrement/styles.d.ts +4 -0
- package/dist/components/NumberIncrement/styles.js +3 -0
- package/dist/components/NumberIncrement/styles.js.map +1 -0
- package/dist/components/NumberIncrement/types.d.ts +34 -0
- package/dist/components/NumberIncrement/types.js +3 -0
- package/dist/components/NumberIncrement/types.js.map +1 -0
- package/dist/components/NumberIncrement/utils.d.ts +5 -0
- package/dist/components/NumberIncrement/utils.js +27 -0
- package/dist/components/NumberIncrement/utils.js.map +1 -0
- package/dist/components/Pager/PagerDots.d.ts +16 -0
- package/dist/components/Pager/PagerDots.js +58 -0
- package/dist/components/Pager/PagerDots.js.map +1 -0
- package/dist/components/Pager/index.d.ts +14 -0
- package/dist/components/Pager/index.js +127 -0
- package/dist/components/Pager/index.js.map +1 -0
- package/dist/components/Pager/styles.d.ts +4 -0
- package/dist/components/Pager/styles.js +3 -0
- package/dist/components/Pager/styles.js.map +1 -0
- package/dist/components/Pager/types.d.ts +25 -0
- package/dist/components/Pager/types.js +3 -0
- package/dist/components/Pager/types.js.map +1 -0
- package/dist/components/PaginationIndicator/index.d.ts +11 -0
- package/dist/components/PaginationIndicator/index.js +49 -0
- package/dist/components/PaginationIndicator/index.js.map +1 -0
- package/dist/components/PaginationIndicator/styles.d.ts +2 -0
- package/dist/components/PaginationIndicator/styles.js +3 -0
- package/dist/components/PaginationIndicator/styles.js.map +1 -0
- package/dist/components/PaginationIndicator/types.d.ts +10 -0
- package/dist/components/PaginationIndicator/types.js +3 -0
- package/dist/components/PaginationIndicator/types.js.map +1 -0
- package/dist/components/PlacesAutocomplete/index.d.ts +19 -0
- package/dist/components/PlacesAutocomplete/index.js +127 -0
- package/dist/components/PlacesAutocomplete/index.js.map +1 -0
- package/dist/components/PlacesAutocomplete/styles.d.ts +4 -0
- package/dist/components/PlacesAutocomplete/styles.js +3 -0
- package/dist/components/PlacesAutocomplete/styles.js.map +1 -0
- package/dist/components/PlacesAutocomplete/types.d.ts +41 -0
- package/dist/components/PlacesAutocomplete/types.js +3 -0
- package/dist/components/PlacesAutocomplete/types.js.map +1 -0
- package/dist/components/RadioInput/index.d.ts +13 -0
- package/dist/components/RadioInput/index.js +123 -0
- package/dist/components/RadioInput/index.js.map +1 -0
- package/dist/components/RadioInput/styles.d.ts +6 -0
- package/dist/components/RadioInput/styles.js +3 -0
- package/dist/components/RadioInput/styles.js.map +1 -0
- package/dist/components/RadioInput/types.d.ts +27 -0
- package/dist/components/RadioInput/types.js +3 -0
- package/dist/components/RadioInput/types.js.map +1 -0
- package/dist/components/RefreshControl/index.d.ts +13 -0
- package/dist/components/RefreshControl/index.js +67 -0
- package/dist/components/RefreshControl/index.js.map +1 -0
- package/dist/components/RefreshControl/styles.d.ts +1 -0
- package/dist/components/RefreshControl/styles.js +3 -0
- package/dist/components/RefreshControl/styles.js.map +1 -0
- package/dist/components/RefreshControl/types.d.ts +6 -0
- package/dist/components/RefreshControl/types.js +3 -0
- package/dist/components/RefreshControl/types.js.map +1 -0
- package/dist/components/Scroll/index.d.ts +5 -0
- package/dist/components/Scroll/index.js +108 -0
- package/dist/components/Scroll/index.js.map +1 -0
- package/dist/components/Scroll/styles.d.ts +1 -0
- package/dist/components/Scroll/styles.js +3 -0
- package/dist/components/Scroll/styles.js.map +1 -0
- package/dist/components/Scroll/types.d.ts +16 -0
- package/dist/components/Scroll/types.js +3 -0
- package/dist/components/Scroll/types.js.map +1 -0
- package/dist/components/SearchInput/index.d.ts +15 -0
- package/dist/components/SearchInput/index.js +93 -0
- package/dist/components/SearchInput/index.js.map +1 -0
- package/dist/components/Sections/index.d.ts +5 -0
- package/dist/components/Sections/index.js +118 -0
- package/dist/components/Sections/index.js.map +1 -0
- package/dist/components/Sections/styles.d.ts +1 -0
- package/dist/components/Sections/styles.js +3 -0
- package/dist/components/Sections/styles.js.map +1 -0
- package/dist/components/Sections/types.d.ts +34 -0
- package/dist/components/Sections/types.js +3 -0
- package/dist/components/Sections/types.js.map +1 -0
- package/dist/components/SegmentedControl/Option.d.ts +18 -0
- package/dist/components/SegmentedControl/Option.js +44 -0
- package/dist/components/SegmentedControl/Option.js.map +1 -0
- package/dist/components/SegmentedControl/index.d.ts +5 -0
- package/dist/components/SegmentedControl/index.js +174 -0
- package/dist/components/SegmentedControl/index.js.map +1 -0
- package/dist/components/SegmentedControl/styles.d.ts +8 -0
- package/dist/components/SegmentedControl/styles.js +3 -0
- package/dist/components/SegmentedControl/styles.js.map +1 -0
- package/dist/components/SegmentedControl/types.d.ts +34 -0
- package/dist/components/SegmentedControl/types.js +3 -0
- package/dist/components/SegmentedControl/types.js.map +1 -0
- package/dist/components/Select/index.d.ts +13 -0
- package/dist/components/Select/index.js +259 -0
- package/dist/components/Select/index.js.map +1 -0
- package/dist/components/Select/styles.d.ts +9 -0
- package/dist/components/Select/styles.js +3 -0
- package/dist/components/Select/styles.js.map +1 -0
- package/dist/components/Select/types.d.ts +77 -0
- package/dist/components/Select/types.js +3 -0
- package/dist/components/Select/types.js.map +1 -0
- package/dist/components/Slider/index.d.ts +13 -0
- package/dist/components/Slider/index.js +183 -0
- package/dist/components/Slider/index.js.map +1 -0
- package/dist/components/Slider/styles.d.ts +11 -0
- package/dist/components/Slider/styles.js +3 -0
- package/dist/components/Slider/styles.js.map +1 -0
- package/dist/components/Slider/types.d.ts +22 -0
- package/dist/components/Slider/types.js +3 -0
- package/dist/components/Slider/types.js.map +1 -0
- package/dist/components/SortablePhotos/index.d.ts +13 -0
- package/dist/components/SortablePhotos/index.js +125 -0
- package/dist/components/SortablePhotos/index.js.map +1 -0
- package/dist/components/SortablePhotos/styles.d.ts +2 -0
- package/dist/components/SortablePhotos/styles.js +3 -0
- package/dist/components/SortablePhotos/styles.js.map +1 -0
- package/dist/components/SortablePhotos/types.d.ts +54 -0
- package/dist/components/SortablePhotos/types.js +3 -0
- package/dist/components/SortablePhotos/types.js.map +1 -0
- package/dist/components/SortablePhotos/useSortablePhotos.d.ts +21 -0
- package/dist/components/SortablePhotos/useSortablePhotos.js +192 -0
- package/dist/components/SortablePhotos/useSortablePhotos.js.map +1 -0
- package/dist/components/Switch/index.d.ts +13 -0
- package/dist/components/Switch/index.js +115 -0
- package/dist/components/Switch/index.js.map +1 -0
- package/dist/components/Switch/styles.d.ts +7 -0
- package/dist/components/Switch/styles.js +3 -0
- package/dist/components/Switch/styles.js.map +1 -0
- package/dist/components/Switch/types.d.ts +9 -0
- package/dist/components/Switch/types.js +3 -0
- package/dist/components/Switch/types.js.map +1 -0
- package/dist/components/Text/index.d.ts +7 -0
- package/dist/components/Text/index.js +127 -0
- package/dist/components/Text/index.js.map +1 -0
- package/dist/components/Text/styles.d.ts +6 -0
- package/dist/components/Text/styles.js +3 -0
- package/dist/components/Text/styles.js.map +1 -0
- package/dist/components/Text/types.d.ts +16 -0
- package/dist/components/Text/types.js +3 -0
- package/dist/components/Text/types.js.map +1 -0
- package/dist/components/TextInput/index.d.ts +5 -0
- package/dist/components/TextInput/index.js +181 -0
- package/dist/components/TextInput/index.js.map +1 -0
- package/dist/components/TextInput/styles.d.ts +5 -0
- package/dist/components/TextInput/styles.js +3 -0
- package/dist/components/TextInput/styles.js.map +1 -0
- package/dist/components/TextInput/types.d.ts +21 -0
- package/dist/components/TextInput/types.js +3 -0
- package/dist/components/TextInput/types.js.map +1 -0
- package/dist/components/Touchable/index.d.ts +5 -0
- package/dist/components/Touchable/index.js +220 -0
- package/dist/components/Touchable/index.js.map +1 -0
- package/dist/components/Touchable/styles.d.ts +6 -0
- package/dist/components/Touchable/styles.js +3 -0
- package/dist/components/Touchable/styles.js.map +1 -0
- package/dist/components/Touchable/types.d.ts +25 -0
- package/dist/components/Touchable/types.js +3 -0
- package/dist/components/Touchable/types.js.map +1 -0
- package/dist/components/View/index.d.ts +13 -0
- package/dist/components/View/index.js +53 -0
- package/dist/components/View/index.js.map +1 -0
- package/dist/components/View/styles.d.ts +1 -0
- package/dist/components/View/styles.js +3 -0
- package/dist/components/View/styles.js.map +1 -0
- package/dist/components/View/types.d.ts +13 -0
- package/dist/components/View/types.js +3 -0
- package/dist/components/View/types.js.map +1 -0
- package/dist/components/components.d.ts +42 -0
- package/dist/components/components.js +59 -0
- package/dist/components/components.js.map +1 -0
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.js +15 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +44 -0
- package/dist/index.js.map +1 -0
- package/dist/modules/PressableRipple/index.d.ts +2 -0
- package/dist/modules/PressableRipple/index.js +9 -0
- package/dist/modules/PressableRipple/index.js.map +1 -0
- package/dist/modules/PressableRipple/ripple.d.ts +30 -0
- package/dist/modules/PressableRipple/ripple.js +213 -0
- package/dist/modules/PressableRipple/ripple.js.map +1 -0
- package/dist/modules/PressableRipple/styles.d.ts +19 -0
- package/dist/modules/PressableRipple/styles.js +29 -0
- package/dist/modules/PressableRipple/styles.js.map +1 -0
- package/dist/modules/PressableRipple/type.d.ts +12 -0
- package/dist/modules/PressableRipple/type.js +3 -0
- package/dist/modules/PressableRipple/type.js.map +1 -0
- package/dist/modules/reactNavigation.d.ts +21 -0
- package/dist/modules/reactNavigation.js +25 -0
- package/dist/modules/reactNavigation.js.map +1 -0
- package/dist/modules/textInputMask.d.ts +6 -0
- package/dist/modules/textInputMask.js +21 -0
- package/dist/modules/textInputMask.js.map +1 -0
- package/dist/modules/types/textInputMask.d.ts +7 -0
- package/dist/modules/types/textInputMask.js +3 -0
- package/dist/modules/types/textInputMask.js.map +1 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/index.js +18 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/utility.d.ts +14 -0
- package/dist/types/utility.js +3 -0
- package/dist/types/utility.js.map +1 -0
- package/dist/utils/KeyboardAware/context.d.ts +14 -0
- package/dist/utils/KeyboardAware/context.js +28 -0
- package/dist/utils/KeyboardAware/context.js.map +1 -0
- package/dist/utils/KeyboardAware/index.d.ts +3 -0
- package/dist/utils/KeyboardAware/index.js +20 -0
- package/dist/utils/KeyboardAware/index.js.map +1 -0
- package/dist/utils/KeyboardAware/keyboardHooks.d.ts +21 -0
- package/dist/utils/KeyboardAware/keyboardHooks.js +82 -0
- package/dist/utils/KeyboardAware/keyboardHooks.js.map +1 -0
- package/dist/utils/KeyboardAware/types.d.ts +1 -0
- package/dist/utils/KeyboardAware/types.js +7 -0
- package/dist/utils/KeyboardAware/types.js.map +1 -0
- package/dist/utils/ModalManager/components.d.ts +15 -0
- package/dist/utils/ModalManager/components.js +83 -0
- package/dist/utils/ModalManager/components.js.map +1 -0
- package/dist/utils/ModalManager/context.d.ts +48 -0
- package/dist/utils/ModalManager/context.js +184 -0
- package/dist/utils/ModalManager/context.js.map +1 -0
- package/dist/utils/ModalManager/index.d.ts +10 -0
- package/dist/utils/ModalManager/index.js +12 -0
- package/dist/utils/ModalManager/index.js.map +1 -0
- package/dist/utils/NotificationManager/index.d.ts +55 -0
- package/dist/utils/NotificationManager/index.js +304 -0
- package/dist/utils/NotificationManager/index.js.map +1 -0
- package/dist/utils/NotificationManager/types.d.ts +16 -0
- package/dist/utils/NotificationManager/types.js +3 -0
- package/dist/utils/NotificationManager/types.js.map +1 -0
- package/dist/utils/OSAlert.d.ts +32 -0
- package/dist/utils/OSAlert.js +143 -0
- package/dist/utils/OSAlert.js.map +1 -0
- package/dist/utils/PermissionManager/context.d.ts +53 -0
- package/dist/utils/PermissionManager/context.js +324 -0
- package/dist/utils/PermissionManager/context.js.map +1 -0
- package/dist/utils/PermissionManager/index.d.ts +4 -0
- package/dist/utils/PermissionManager/index.js +9 -0
- package/dist/utils/PermissionManager/index.js.map +1 -0
- package/dist/utils/PermissionManager/types.d.ts +16 -0
- package/dist/utils/PermissionManager/types.js +3 -0
- package/dist/utils/PermissionManager/types.js.map +1 -0
- package/dist/utils/StorageManager.d.ts +20 -0
- package/dist/utils/StorageManager.js +86 -0
- package/dist/utils/StorageManager.js.map +1 -0
- package/dist/utils/Subscription.d.ts +17 -0
- package/dist/utils/Subscription.js +72 -0
- package/dist/utils/Subscription.js.map +1 -0
- package/dist/utils/deprecated/notifications.d.ts +40 -0
- package/dist/utils/deprecated/notifications.js +274 -0
- package/dist/utils/deprecated/notifications.js.map +1 -0
- package/dist/utils/hooks.d.ts +68 -0
- package/dist/utils/hooks.js +228 -0
- package/dist/utils/hooks.js.map +1 -0
- package/dist/utils/index.d.ts +14 -0
- package/dist/utils/index.js +44 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/input.d.ts +35 -0
- package/dist/utils/input.js +49 -0
- package/dist/utils/input.js.map +1 -0
- package/dist/utils/locale.d.ts +1 -0
- package/dist/utils/locale.js +10 -0
- package/dist/utils/locale.js.map +1 -0
- package/dist/utils/misc.d.ts +12 -0
- package/dist/utils/misc.js +124 -0
- package/dist/utils/misc.js.map +1 -0
- package/dist/utils/theme.d.ts +23 -0
- package/dist/utils/theme.js +41 -0
- package/dist/utils/theme.js.map +1 -0
- package/dist/utils/useQueryListRefresh.d.ts +12 -0
- package/dist/utils/useQueryListRefresh.js +42 -0
- package/dist/utils/useQueryListRefresh.js.map +1 -0
- package/package.json +15 -13
- package/package.json.bak +53 -0
- package/src/components/Badge/index.tsx +3 -3
- package/src/components/DatePickerModal/index.tsx +3 -2
- package/src/components/FileInput/index.tsx +7 -7
- package/src/components/FileInput/types.ts +1 -1
- package/src/components/Image/index.tsx +1 -1
- package/src/components/Image/types.ts +1 -1
- package/src/components/NumberIncrement/index.tsx +21 -3
- package/src/components/NumberIncrement/types.ts +1 -0
- package/src/components/Pager/PagerDots.tsx +56 -0
- package/src/components/Pager/index.tsx +85 -173
- package/src/components/Pager/styles.ts +6 -1
- package/src/components/Pager/types.ts +16 -26
- package/src/components/PlacesAutocomplete/index.tsx +154 -0
- package/src/components/PlacesAutocomplete/styles.ts +12 -0
- package/src/components/PlacesAutocomplete/types.ts +42 -0
- package/src/components/Select/index.tsx +9 -13
- package/src/components/SortablePhotos/index.tsx +170 -0
- package/src/components/SortablePhotos/styles.ts +9 -0
- package/src/components/SortablePhotos/types.ts +58 -0
- package/src/components/SortablePhotos/useSortablePhotos.ts +174 -0
- package/src/components/Text/index.tsx +1 -1
- package/src/components/Text/types.ts +3 -2
- package/src/components/TextInput/index.tsx +8 -0
- package/src/components/TextInput/types.ts +2 -0
- package/src/components/components.ts +2 -0
- package/src/modules/PressableRipple/ripple.js +61 -61
- package/src/utils/StorageManager.ts +112 -0
- package/src/utils/hooks.ts +2 -51
- package/src/utils/index.ts +2 -1
- package/src/utils/misc.ts +41 -2
- package/src/utils/theme.ts +13 -9
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { AppIcon, ICSS, StyledProp } from '@codeleap/styles'
|
|
2
|
+
import { PlacesAutocompleteComposition } from './styles'
|
|
3
|
+
import { TextInputProps } from '../TextInput'
|
|
4
|
+
import { FlatListProps } from '../List'
|
|
5
|
+
import { EmptyPlaceholderProps } from '../EmptyPlaceholder'
|
|
6
|
+
import { ActivityIndicatorProps } from '../ActivityIndicator'
|
|
7
|
+
import { PlaceAddress, PlaceLatLng } from '@codeleap/common'
|
|
8
|
+
|
|
9
|
+
export type CustomData = {
|
|
10
|
+
item?: Partial<PlaceAddress> & Partial<PlaceLatLng>
|
|
11
|
+
content?: JSX.Element
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export type PlaceItem = PlaceAddress & PlaceLatLng & { content?: JSX.Element }
|
|
15
|
+
|
|
16
|
+
export type PlaceRowProps = {
|
|
17
|
+
item?: PlaceItem
|
|
18
|
+
styles?: Record<PlacesAutocompleteComposition, ICSS>
|
|
19
|
+
onPress?: PlacesAutocompleteProps['onPress']
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export type PlacesAutocompleteProps = {
|
|
23
|
+
style?: StyledProp<PlacesAutocompleteComposition>
|
|
24
|
+
itemRow?: (props: any) => JSX.Element
|
|
25
|
+
textInputProps?: TextInputProps
|
|
26
|
+
emptyPlaceholderProps?: EmptyPlaceholderProps
|
|
27
|
+
listProps?: FlatListProps
|
|
28
|
+
data: PlaceAddress[] | PlaceLatLng[]
|
|
29
|
+
customData?: CustomData[]
|
|
30
|
+
onPress?: (address: string, place: PlaceItem) => void
|
|
31
|
+
onValueChange?: (address: string) => void
|
|
32
|
+
showClearIcon?: boolean
|
|
33
|
+
showEmptyPlaceholder?: boolean
|
|
34
|
+
clearIcon?: AppIcon
|
|
35
|
+
placeRowComponent?: React.ComponentType<PlaceRowProps>
|
|
36
|
+
renderPlaceRow?: (props: PlaceRowProps) => React.ReactElement
|
|
37
|
+
placeRow?: React.ReactElement
|
|
38
|
+
debounce?: number
|
|
39
|
+
activityIndicatorProps?: ActivityIndicatorProps
|
|
40
|
+
persistResultsOnBlur?: boolean
|
|
41
|
+
isLoading?: boolean
|
|
42
|
+
}
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
onUpdate,
|
|
7
7
|
usePrevious,
|
|
8
8
|
useSearch,
|
|
9
|
-
|
|
9
|
+
useConditionalState,
|
|
10
10
|
} from '@codeleap/common'
|
|
11
11
|
import React, { useCallback, useMemo } from 'react'
|
|
12
12
|
import { List } from '../List'
|
|
@@ -35,10 +35,11 @@ const defaultFilterFunction = (search: string, options: FormTypes.Options<any>)
|
|
|
35
35
|
|
|
36
36
|
const defaultGetLabel = (option) => {
|
|
37
37
|
if (TypeGuards.isArray(option)) {
|
|
38
|
-
if (option
|
|
39
|
-
|
|
40
|
-
return option.map(o => o.label).join(', ')
|
|
38
|
+
if (option?.length === 0) return null
|
|
41
39
|
|
|
40
|
+
const labels = option?.map(option => option?.label)?.filter(value => !!value)
|
|
41
|
+
|
|
42
|
+
return labels?.join(', ')
|
|
42
43
|
} else {
|
|
43
44
|
if (!option) return null
|
|
44
45
|
return option?.label
|
|
@@ -140,7 +141,7 @@ export const Select = <T extends string | number = string, Multi extends boolean
|
|
|
140
141
|
onLoadOptionsError,
|
|
141
142
|
})
|
|
142
143
|
|
|
143
|
-
const [visible, toggle] =
|
|
144
|
+
const [visible, toggle] = useConditionalState(_visible, _toggle, { initialValue: false, isBooleanToggle: true })
|
|
144
145
|
|
|
145
146
|
const currentValueLabel = useMemo(() => {
|
|
146
147
|
const _options = (multiple ? labelOptions : labelOptions?.[0]) as Multi extends true ? FormTypes.Options<T> : FormTypes.Options<T>[number]
|
|
@@ -174,19 +175,15 @@ export const Select = <T extends string | number = string, Multi extends boolean
|
|
|
174
175
|
|
|
175
176
|
const select = useCallback((selectedValue) => {
|
|
176
177
|
let newValue = null
|
|
177
|
-
|
|
178
178
|
let newOption = null
|
|
179
179
|
let removedIndex = null
|
|
180
180
|
|
|
181
181
|
if (multiple && isValueArray) {
|
|
182
|
-
|
|
183
182
|
if (value.includes(selectedValue)) {
|
|
184
183
|
removedIndex = value.findIndex(v => v === selectedValue)
|
|
185
184
|
|
|
186
185
|
newValue = value.filter((v, i) => i !== removedIndex)
|
|
187
|
-
|
|
188
186
|
} else {
|
|
189
|
-
|
|
190
187
|
if (TypeGuards.isNumber(limit) && value.length >= limit) {
|
|
191
188
|
return
|
|
192
189
|
}
|
|
@@ -195,7 +192,6 @@ export const Select = <T extends string | number = string, Multi extends boolean
|
|
|
195
192
|
|
|
196
193
|
newValue = [...value, selectedValue]
|
|
197
194
|
}
|
|
198
|
-
|
|
199
195
|
} else {
|
|
200
196
|
newValue = selectedValue
|
|
201
197
|
newOption = currentOptions.find(o => o.value === selectedValue)
|
|
@@ -209,7 +205,8 @@ export const Select = <T extends string | number = string, Multi extends boolean
|
|
|
209
205
|
newOptions.splice(removedIndex, 1)
|
|
210
206
|
setLabelOptions(newOptions)
|
|
211
207
|
} else {
|
|
212
|
-
|
|
208
|
+
const newLabels = [...labelOptions, newOption]
|
|
209
|
+
setLabelOptions(newLabels)
|
|
213
210
|
}
|
|
214
211
|
} else {
|
|
215
212
|
setLabelOptions([newOption])
|
|
@@ -218,7 +215,7 @@ export const Select = <T extends string | number = string, Multi extends boolean
|
|
|
218
215
|
if (closeOnSelect) {
|
|
219
216
|
close?.()
|
|
220
217
|
}
|
|
221
|
-
}, [isValueArray, (isValueArray ? value : [value]), limit, multiple])
|
|
218
|
+
}, [isValueArray, (isValueArray ? value : [value]), limit, multiple, labelOptions, currentOptions])
|
|
222
219
|
|
|
223
220
|
const renderListItem = useCallback(({ item, index }) => {
|
|
224
221
|
let selected = false
|
|
@@ -335,7 +332,6 @@ export const Select = <T extends string | number = string, Multi extends boolean
|
|
|
335
332
|
</>
|
|
336
333
|
}
|
|
337
334
|
|
|
338
|
-
|
|
339
335
|
Select.styleRegistryName = 'Select'
|
|
340
336
|
Select.elements = [...Modal.elements, 'input', 'list', 'item', 'searchInput']
|
|
341
337
|
Select.rootElement = 'inputWrapper'
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { AnyRecord, IJSX, StyledComponentProps, useNestedStylesByKey } from '@codeleap/styles'
|
|
2
|
+
import { FileInput } from '../FileInput'
|
|
3
|
+
import { Icon } from '../Icon'
|
|
4
|
+
import { Image } from '../Image'
|
|
5
|
+
import { Dimensions, View } from 'react-native'
|
|
6
|
+
import { DragSortableView } from 'react-native-drag-sort'
|
|
7
|
+
import { SortableItemProps, SortablePhoto, SortablePhotosProps } from './types'
|
|
8
|
+
import { useSortablePhotos } from './useSortablePhotos'
|
|
9
|
+
import { useStylesFor } from '../../hooks'
|
|
10
|
+
import { MobileStyleRegistry } from '../../Registry'
|
|
11
|
+
import { ActivityIndicator } from '../ActivityIndicator'
|
|
12
|
+
|
|
13
|
+
export * from './styles'
|
|
14
|
+
export * from './types'
|
|
15
|
+
|
|
16
|
+
const DefaultItem = <T extends SortablePhoto>(props: SortableItemProps<T>) => {
|
|
17
|
+
const { photo, width, height, styles, emptyIcon } = props
|
|
18
|
+
|
|
19
|
+
return (
|
|
20
|
+
<View style={[{ width, height }, styles.photoWrapper]}>
|
|
21
|
+
{
|
|
22
|
+
!!photo?.filename
|
|
23
|
+
? <Image resizeMode='cover' source={{ uri: photo?.file }} style={styles.photoImage} />
|
|
24
|
+
: <Icon name={emptyIcon} style={styles.photoEmptyIcon} />
|
|
25
|
+
}
|
|
26
|
+
</View>
|
|
27
|
+
)
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const defaultGetFilename = (file: string) => {
|
|
31
|
+
if (!file) return null
|
|
32
|
+
|
|
33
|
+
const filenameWithExtension = file?.split?.('/').pop()
|
|
34
|
+
|
|
35
|
+
if (filenameWithExtension) {
|
|
36
|
+
return filenameWithExtension?.split('.').slice(0, -1).join('.')
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
return new Date().toISOString()
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const screenWidth = Dimensions.get('screen').width
|
|
43
|
+
|
|
44
|
+
export const SortablePhotos = <T extends SortablePhoto>(props: SortablePhotosProps<T>) => {
|
|
45
|
+
const allProps = {
|
|
46
|
+
...SortablePhotos.defaultProps,
|
|
47
|
+
...props,
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const {
|
|
51
|
+
numColumns,
|
|
52
|
+
renderPhoto: RenderItem,
|
|
53
|
+
gap,
|
|
54
|
+
multiple,
|
|
55
|
+
pickerConfig,
|
|
56
|
+
emptyIcon,
|
|
57
|
+
disableDragDropEmptyItems,
|
|
58
|
+
itemWidth: _itemWidth,
|
|
59
|
+
itemHeight: _itemHeight,
|
|
60
|
+
width: _parentWidth,
|
|
61
|
+
style,
|
|
62
|
+
loading,
|
|
63
|
+
...rest
|
|
64
|
+
} = allProps
|
|
65
|
+
|
|
66
|
+
const styles = useStylesFor(SortablePhotos.styleRegistryName, style)
|
|
67
|
+
|
|
68
|
+
const loaderStyles = useNestedStylesByKey('loader', styles)
|
|
69
|
+
|
|
70
|
+
const {
|
|
71
|
+
input,
|
|
72
|
+
handlePressPhoto,
|
|
73
|
+
numberPhotosMissing,
|
|
74
|
+
emptyIndexes,
|
|
75
|
+
onChangePhotosOrder,
|
|
76
|
+
data,
|
|
77
|
+
} = useSortablePhotos<T>(allProps)
|
|
78
|
+
|
|
79
|
+
const defaultParentWidth = screenWidth - (gap * 2)
|
|
80
|
+
const defaultItemWidth = (defaultParentWidth / numColumns) - gap
|
|
81
|
+
|
|
82
|
+
const itemWidth = _itemWidth ?? defaultItemWidth
|
|
83
|
+
const itemHeight = _itemHeight ?? itemWidth
|
|
84
|
+
const parentWidth = _parentWidth ?? defaultParentWidth
|
|
85
|
+
|
|
86
|
+
const childrenMargin = gap / 2
|
|
87
|
+
|
|
88
|
+
const fileInputPickerOptions = {
|
|
89
|
+
...SortablePhotos.defaultProps.pickerConfig,
|
|
90
|
+
...pickerConfig,
|
|
91
|
+
multiple,
|
|
92
|
+
maxFiles: numberPhotosMissing,
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
if (loading) {
|
|
96
|
+
return (
|
|
97
|
+
<View style={[styles.wrapper, styles['wrapper:loading']]}>
|
|
98
|
+
<ActivityIndicator style={loaderStyles} />
|
|
99
|
+
</View>
|
|
100
|
+
)
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
return (
|
|
104
|
+
<View style={styles.wrapper}>
|
|
105
|
+
<FileInput
|
|
106
|
+
mode='hidden'
|
|
107
|
+
ref={input.ref}
|
|
108
|
+
pickerOptions={fileInputPickerOptions}
|
|
109
|
+
/>
|
|
110
|
+
|
|
111
|
+
<DragSortableView
|
|
112
|
+
dataSource={data}
|
|
113
|
+
childrenHeight={itemHeight}
|
|
114
|
+
childrenWidth={itemWidth}
|
|
115
|
+
parentWidth={parentWidth}
|
|
116
|
+
marginChildrenBottom={childrenMargin}
|
|
117
|
+
marginChildrenLeft={childrenMargin}
|
|
118
|
+
marginChildrenRight={childrenMargin}
|
|
119
|
+
marginChildrenTop={childrenMargin}
|
|
120
|
+
onDataChange={onChangePhotosOrder}
|
|
121
|
+
onClickItem={handlePressPhoto}
|
|
122
|
+
fixedItems={disableDragDropEmptyItems ? emptyIndexes : undefined}
|
|
123
|
+
{...rest}
|
|
124
|
+
renderItem={(item, order) => (
|
|
125
|
+
<RenderItem
|
|
126
|
+
width={itemWidth}
|
|
127
|
+
height={itemHeight}
|
|
128
|
+
photo={item}
|
|
129
|
+
order={order}
|
|
130
|
+
styles={styles}
|
|
131
|
+
emptyIcon={emptyIcon}
|
|
132
|
+
/>
|
|
133
|
+
)}
|
|
134
|
+
/>
|
|
135
|
+
</View>
|
|
136
|
+
)
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
SortablePhotos.styleRegistryName = 'SortablePhotos'
|
|
140
|
+
SortablePhotos.elements = ['wrapper', 'photo', 'loader']
|
|
141
|
+
SortablePhotos.rootElement = 'wrapper'
|
|
142
|
+
|
|
143
|
+
SortablePhotos.withVariantTypes = <S extends AnyRecord>(styles: S) => {
|
|
144
|
+
return SortablePhotos as <T extends SortablePhoto>(props: StyledComponentProps<SortablePhotosProps<T>, typeof styles>) => IJSX
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
SortablePhotos.defaultProps = {
|
|
148
|
+
numPhotos: 9,
|
|
149
|
+
numColumns: 3,
|
|
150
|
+
renderPhoto: DefaultItem,
|
|
151
|
+
multiple: true,
|
|
152
|
+
disableDragDropEmptyItems: true,
|
|
153
|
+
gap: 16,
|
|
154
|
+
emptyIcon: 'plus',
|
|
155
|
+
modalTitle: 'Photos',
|
|
156
|
+
modalBody: null,
|
|
157
|
+
modalLibraryText: 'Choose from gallery',
|
|
158
|
+
modalCameraText: 'Take a photo',
|
|
159
|
+
modalDeleteText: 'Remove photo',
|
|
160
|
+
getFilename: defaultGetFilename,
|
|
161
|
+
pickerConfig: {
|
|
162
|
+
cropping: true,
|
|
163
|
+
showCropFrame: true,
|
|
164
|
+
compressImageMaxHeight: 1700,
|
|
165
|
+
compressImageMaxWidth: 1700,
|
|
166
|
+
compressImageQuality: 0.8,
|
|
167
|
+
},
|
|
168
|
+
} as Partial<SortablePhotosProps<any>>
|
|
169
|
+
|
|
170
|
+
MobileStyleRegistry.registerComponent(SortablePhotos)
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { AppIcon, ICSS, StyledProp } from '@codeleap/styles'
|
|
2
|
+
import { ReactElement } from 'react'
|
|
3
|
+
import { SortablePhotosComposition } from './styles'
|
|
4
|
+
|
|
5
|
+
export type SortablePhoto = {
|
|
6
|
+
filename: string | null
|
|
7
|
+
file: string | null
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export type SortableItemProps<T extends SortablePhoto> = {
|
|
11
|
+
photo: T
|
|
12
|
+
order: number
|
|
13
|
+
height: number
|
|
14
|
+
width: number
|
|
15
|
+
styles: Record<SortablePhotosComposition, ICSS>
|
|
16
|
+
emptyIcon: AppIcon
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export type SortablePhotosPickerConfig = {
|
|
20
|
+
cropping?: boolean
|
|
21
|
+
compressImageMaxHeight?: number
|
|
22
|
+
compressImageMaxWidth?: number
|
|
23
|
+
compressImageQuality?: number
|
|
24
|
+
showCropFrame?: boolean
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export type SortablePhotosProps<T extends SortablePhoto> = {
|
|
28
|
+
numColumns?: number
|
|
29
|
+
numPhotos?: number
|
|
30
|
+
renderPhoto?: (props: SortableItemProps<T>) => ReactElement
|
|
31
|
+
photos: T[]
|
|
32
|
+
onChangePhotos: (newPhotos: T[]) => void
|
|
33
|
+
gap?: number
|
|
34
|
+
itemHeight?: number
|
|
35
|
+
itemWidth?: number
|
|
36
|
+
width?: number
|
|
37
|
+
onPressPhoto?: (data: T[], photo: T, order: number) => void
|
|
38
|
+
onDragStart?: (fromIndex: number) => void
|
|
39
|
+
onDragEnd?: (fromIndex: number, toIndex: number) => void
|
|
40
|
+
keyExtractor?: (photo: T, order: number) => any
|
|
41
|
+
delayLongPress?: number
|
|
42
|
+
pickerConfig?: SortablePhotosPickerConfig
|
|
43
|
+
multiple?: boolean
|
|
44
|
+
maxScale?: number
|
|
45
|
+
minOpacity?: number
|
|
46
|
+
scaleDuration?: number
|
|
47
|
+
slideDuration?: number
|
|
48
|
+
emptyIcon?: AppIcon
|
|
49
|
+
disableDragDropEmptyItems?: boolean
|
|
50
|
+
style?: StyledProp<SortablePhotosComposition>
|
|
51
|
+
modalTitle?: string
|
|
52
|
+
modalBody?: string
|
|
53
|
+
modalLibraryText?: string
|
|
54
|
+
modalCameraText?: string
|
|
55
|
+
modalDeleteText?: string
|
|
56
|
+
getFilename?: (file: string) => string
|
|
57
|
+
loading?: boolean
|
|
58
|
+
}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import { CreateOSAlert, useEffect, useGlobalContext, useMemo, useState } from '@codeleap/common'
|
|
2
|
+
import { FileInputImageSource, useFileInput } from '../FileInput'
|
|
3
|
+
import { SortablePhoto, SortablePhotosProps } from './types'
|
|
4
|
+
|
|
5
|
+
const SortableAlert = CreateOSAlert()
|
|
6
|
+
|
|
7
|
+
export const useSortablePhotos = <T extends SortablePhoto>(props: SortablePhotosProps<T>) => {
|
|
8
|
+
const {
|
|
9
|
+
onChangePhotos,
|
|
10
|
+
onPressPhoto,
|
|
11
|
+
modalBody,
|
|
12
|
+
modalTitle,
|
|
13
|
+
modalCameraText,
|
|
14
|
+
modalDeleteText,
|
|
15
|
+
modalLibraryText,
|
|
16
|
+
getFilename,
|
|
17
|
+
numPhotos,
|
|
18
|
+
loading,
|
|
19
|
+
photos: currentPhotos
|
|
20
|
+
} = props
|
|
21
|
+
|
|
22
|
+
const input = useFileInput()
|
|
23
|
+
const { logger } = useGlobalContext()
|
|
24
|
+
|
|
25
|
+
const [data, setData] = useState<T[]>([])
|
|
26
|
+
|
|
27
|
+
const onChange = (photos: T[]) => {
|
|
28
|
+
const { newPhotos, sortedPhotos } = sortPhotos(photos)
|
|
29
|
+
|
|
30
|
+
setData(sortedPhotos)
|
|
31
|
+
onChangePhotos(newPhotos)
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
useEffect(() => {
|
|
35
|
+
if (!loading && data?.length < numPhotos) {
|
|
36
|
+
const currentLength = currentPhotos?.length ?? 0
|
|
37
|
+
const length = Math.abs(numPhotos - currentLength)
|
|
38
|
+
const fillPhotos = Array(length).fill({ filename: null, file: null }) as T[]
|
|
39
|
+
|
|
40
|
+
const newPhotos = currentPhotos.concat(fillPhotos)
|
|
41
|
+
|
|
42
|
+
setData(newPhotos)
|
|
43
|
+
onChangePhotos(currentPhotos)
|
|
44
|
+
}
|
|
45
|
+
}, [loading])
|
|
46
|
+
|
|
47
|
+
const { emptyIndexes, numberPhotosMissing } = useMemo(() => {
|
|
48
|
+
const copyPhotos = [...data]
|
|
49
|
+
|
|
50
|
+
const emptyIndexes = copyPhotos.reduce((indexes, photo, index) => {
|
|
51
|
+
if (!photo?.filename) {
|
|
52
|
+
indexes.push(index)
|
|
53
|
+
}
|
|
54
|
+
return indexes
|
|
55
|
+
}, [])
|
|
56
|
+
|
|
57
|
+
const numberPhotosMissing = emptyIndexes?.length
|
|
58
|
+
|
|
59
|
+
return {
|
|
60
|
+
emptyIndexes,
|
|
61
|
+
numberPhotosMissing,
|
|
62
|
+
}
|
|
63
|
+
}, [JSON.stringify(data)])
|
|
64
|
+
|
|
65
|
+
const sortPhotos = (_unorderedPhotos: T[]) => {
|
|
66
|
+
const unorderedPhotos = [..._unorderedPhotos]
|
|
67
|
+
|
|
68
|
+
const [newPhotos, emptyPhotos] = unorderedPhotos.reduce(
|
|
69
|
+
([newPhotos, emptyPhotos], photo) => {
|
|
70
|
+
!!photo?.filename ? newPhotos.push(photo) : emptyPhotos.push(photo)
|
|
71
|
+
return [newPhotos, emptyPhotos]
|
|
72
|
+
},
|
|
73
|
+
[[], []] as [T[], T[]]
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
const sortedPhotos: T[] = newPhotos.concat(emptyPhotos)
|
|
77
|
+
|
|
78
|
+
return {
|
|
79
|
+
sortedPhotos,
|
|
80
|
+
newPhotos,
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
const handleOpenPicker = async (pickerType: FileInputImageSource, photo: T, order: number) => {
|
|
85
|
+
let files = []
|
|
86
|
+
|
|
87
|
+
const isEdit = !!photo?.filename
|
|
88
|
+
|
|
89
|
+
try {
|
|
90
|
+
files = await input?.openFilePicker(pickerType, {
|
|
91
|
+
multiple: isEdit ? false : props?.multiple
|
|
92
|
+
})
|
|
93
|
+
} catch (error) {
|
|
94
|
+
logger.error('Error opening file picker:', error)
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
if (files?.length <= 0) return null
|
|
98
|
+
|
|
99
|
+
const isMultiple = files?.length > 1 && !isEdit
|
|
100
|
+
|
|
101
|
+
const newPhotos = [...data]
|
|
102
|
+
|
|
103
|
+
if (isMultiple) {
|
|
104
|
+
for (const fileIndex in files) {
|
|
105
|
+
const file = files?.[fileIndex]
|
|
106
|
+
const order = emptyIndexes[fileIndex]
|
|
107
|
+
const uri = file?.file?.uri
|
|
108
|
+
const filename = getFilename(uri)
|
|
109
|
+
|
|
110
|
+
newPhotos[order] = {
|
|
111
|
+
...newPhotos[order],
|
|
112
|
+
filename,
|
|
113
|
+
file: uri,
|
|
114
|
+
} as T
|
|
115
|
+
}
|
|
116
|
+
} else {
|
|
117
|
+
const file = files?.[0]
|
|
118
|
+
const uri = file?.file?.uri
|
|
119
|
+
const filename = getFilename(uri)
|
|
120
|
+
|
|
121
|
+
newPhotos[order] = {
|
|
122
|
+
...newPhotos[order],
|
|
123
|
+
filename,
|
|
124
|
+
file: uri,
|
|
125
|
+
} as T
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
onChange(newPhotos)
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
const handleDeletePhoto = (photo: T, order: number) => {
|
|
132
|
+
const newPhotos = [...data]
|
|
133
|
+
|
|
134
|
+
newPhotos[order] = {
|
|
135
|
+
...newPhotos[order],
|
|
136
|
+
filename: null,
|
|
137
|
+
file: null,
|
|
138
|
+
} as T
|
|
139
|
+
|
|
140
|
+
onChange(newPhotos)
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
const handlePressPhoto = (currentData: T[], photo: T, order: number) => {
|
|
144
|
+
SortableAlert.custom({
|
|
145
|
+
title: modalTitle,
|
|
146
|
+
body: modalBody,
|
|
147
|
+
options: [
|
|
148
|
+
{ text: modalLibraryText, onPress: () => handleOpenPicker('library', photo, order) },
|
|
149
|
+
{ text: modalCameraText, onPress: () => handleOpenPicker('camera', photo, order) },
|
|
150
|
+
!!photo?.filename && { text: modalDeleteText, onPress: () => handleDeletePhoto(photo, order) },
|
|
151
|
+
],
|
|
152
|
+
// @ts-expect-error
|
|
153
|
+
isRow: false,
|
|
154
|
+
})
|
|
155
|
+
|
|
156
|
+
onPressPhoto?.(currentData, photo, order)
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
const onChangePhotosOrder = (newData: T[]) => {
|
|
160
|
+
onChange(newData)
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
return {
|
|
164
|
+
input,
|
|
165
|
+
handlePressPhoto,
|
|
166
|
+
handleDeletePhoto,
|
|
167
|
+
handleOpenPicker,
|
|
168
|
+
sortPhotos,
|
|
169
|
+
numberPhotosMissing,
|
|
170
|
+
onChangePhotosOrder,
|
|
171
|
+
emptyIndexes,
|
|
172
|
+
data,
|
|
173
|
+
}
|
|
174
|
+
}
|
|
@@ -104,7 +104,7 @@ Text.elements = ['text', 'pressFeedback']
|
|
|
104
104
|
Text.rootElement = 'text'
|
|
105
105
|
|
|
106
106
|
Text.withVariantTypes = <S extends AnyRecord>(styles: S) => {
|
|
107
|
-
return Text as (props: StyledComponentProps<TextProps
|
|
107
|
+
return Text as (props: StyledComponentProps<TextProps, typeof styles>) => IJSX
|
|
108
108
|
}
|
|
109
109
|
|
|
110
110
|
Text.defaultProps = {
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { StyledProp } from '@codeleap/styles'
|
|
2
2
|
import { ReactNode } from 'react'
|
|
3
|
-
import { TextProps as RNTextProps, Animated, ViewStyle, ImageStyle, TextStyle } from 'react-native'
|
|
3
|
+
import { TextProps as RNTextProps, Animated, ViewStyle, ImageStyle, TextStyle, Text as NativeText } from 'react-native'
|
|
4
4
|
import { AnimatedStyleProp } from 'react-native-reanimated'
|
|
5
5
|
import { TextComposition } from './styles'
|
|
6
6
|
|
|
7
7
|
export type TextProps =
|
|
8
|
-
Omit<RNTextProps, 'style'> &
|
|
8
|
+
Omit<RNTextProps, 'style' | 'ref'> &
|
|
9
9
|
{
|
|
10
10
|
text?: ReactNode
|
|
11
11
|
animated?: boolean
|
|
@@ -15,4 +15,5 @@ export type TextProps =
|
|
|
15
15
|
pressDisabled?: boolean
|
|
16
16
|
style?: StyledProp<TextComposition>
|
|
17
17
|
animatedStyle?: AnimatedStyleProp<ViewStyle | ImageStyle | TextStyle>
|
|
18
|
+
ref?: React.ForwardedRef<NativeText>
|
|
18
19
|
}
|
|
@@ -17,6 +17,7 @@ export const TextInput = forwardRef<NativeTextInput, TextInputProps>((props, inp
|
|
|
17
17
|
const innerInputRef = React.useRef<NativeTextInput>(null)
|
|
18
18
|
|
|
19
19
|
const [isFocused, setIsFocused] = useState(false)
|
|
20
|
+
const [currentSelection, setCurrentSelection] = useState({ start: 0 })
|
|
20
21
|
|
|
21
22
|
const {
|
|
22
23
|
inputBaseProps,
|
|
@@ -38,6 +39,8 @@ export const TextInput = forwardRef<NativeTextInput, TextInputProps>((props, inp
|
|
|
38
39
|
visibleIcon,
|
|
39
40
|
hiddenIcon,
|
|
40
41
|
style,
|
|
42
|
+
autoAdjustSelection,
|
|
43
|
+
selectionStart,
|
|
41
44
|
_error = null,
|
|
42
45
|
...textInputProps
|
|
43
46
|
} = others
|
|
@@ -68,12 +71,14 @@ export const TextInput = forwardRef<NativeTextInput, TextInputProps>((props, inp
|
|
|
68
71
|
const handleBlur = React.useCallback((e: NativeSyntheticEvent<TextInputFocusEventData>) => {
|
|
69
72
|
validation.onInputBlurred()
|
|
70
73
|
setIsFocused(false)
|
|
74
|
+
if (autoAdjustSelection) setCurrentSelection({ start: selectionStart })
|
|
71
75
|
props.onBlur?.(e)
|
|
72
76
|
}, [validation.onInputBlurred, props.onBlur])
|
|
73
77
|
|
|
74
78
|
const handleFocus = React.useCallback((e: NativeSyntheticEvent<TextInputFocusEventData>) => {
|
|
75
79
|
validation.onInputFocused()
|
|
76
80
|
setIsFocused(true)
|
|
81
|
+
if (autoAdjustSelection) setCurrentSelection(null)
|
|
77
82
|
props.onFocus?.(e)
|
|
78
83
|
}, [validation.onInputFocused, props.onFocus])
|
|
79
84
|
|
|
@@ -153,6 +158,7 @@ export const TextInput = forwardRef<NativeTextInput, TextInputProps>((props, inp
|
|
|
153
158
|
allowFontScaling={false}
|
|
154
159
|
editable={!isPressable && !isDisabled}
|
|
155
160
|
{...buttonModeProps}
|
|
161
|
+
selection={autoAdjustSelection ? currentSelection : undefined}
|
|
156
162
|
placeholderTextColor={placeholderTextColor}
|
|
157
163
|
value={value}
|
|
158
164
|
selectionColor={selectionColor}
|
|
@@ -188,6 +194,8 @@ TextInput.defaultProps = {
|
|
|
188
194
|
hiddenIcon: 'input-visiblity:hidden' as AppIcon,
|
|
189
195
|
visibleIcon: 'input-visiblity:visible' as AppIcon,
|
|
190
196
|
visibilityToggle: false,
|
|
197
|
+
autoAdjustSelection: false,
|
|
198
|
+
selectionStart: 0,
|
|
191
199
|
} as Partial<TextInputProps>
|
|
192
200
|
|
|
193
201
|
MobileStyleRegistry.registerComponent(TextInput)
|
|
@@ -12,6 +12,8 @@ export type TextInputProps =
|
|
|
12
12
|
password?: boolean
|
|
13
13
|
validate?: FormTypes.ValidatorFunctionWithoutForm | yup.SchemaOf<string>
|
|
14
14
|
debugName: string
|
|
15
|
+
autoAdjustSelection?: boolean
|
|
16
|
+
selectionStart?: number
|
|
15
17
|
visibilityToggle?: boolean
|
|
16
18
|
masking?: FormTypes.TextField['masking']
|
|
17
19
|
onChangeMask?: TextInputMaskProps['onChangeText']
|