diff --git a/packages/block-editor/src/components/index.native.js b/packages/block-editor/src/components/index.native.js index 032e1a01c30ad9..130cde1c2303bb 100644 --- a/packages/block-editor/src/components/index.native.js +++ b/packages/block-editor/src/components/index.native.js @@ -37,8 +37,7 @@ export { default as VideoPlayer, VIDEO_ASPECT_RATIO } from './video-player'; // Content Related Components export { __experimentalPageTemplatePicker, - __experimentalUsePageTemplatePickerVisible, - __experimentalWithPageTemplatePickerVisible, + __experimentalWithPageTemplatePicker, } from './page-template-picker'; export { default as BlockList } from './block-list'; export { default as BlockMover } from './block-mover'; diff --git a/packages/block-editor/src/components/page-template-picker/button.native.js b/packages/block-editor/src/components/page-template-picker/button.native.js index 9c03d10379f65f..063703f1525966 100644 --- a/packages/block-editor/src/components/page-template-picker/button.native.js +++ b/packages/block-editor/src/components/page-template-picker/button.native.js @@ -1,25 +1,29 @@ /** * External dependencies */ -import { TouchableOpacity, Text } from 'react-native'; +import { TouchableOpacity, Text, View } from 'react-native'; /** * WordPress dependencies */ import { __ } from '@wordpress/i18n'; -import { withPreferredColorScheme } from '@wordpress/compose'; +import { usePreferredColorSchemeStyle } from '@wordpress/compose'; /** * Internal dependencies */ import styles from './styles.scss'; -const PickerButton = ( { icon, label, onPress, getStylesFromColorScheme } ) => { - const butonStyles = getStylesFromColorScheme( +const PickerButton = ( { icon, label, onPress } ) => { + const butonWrapperStyles = usePreferredColorSchemeStyle( + styles.buttonWrapper, + styles.buttonWrapperDark + ); + const buttonStyles = usePreferredColorSchemeStyle( styles.button, styles.buttonDark ); - const butonTextStyles = getStylesFromColorScheme( + const buttonTextStyles = usePreferredColorSchemeStyle( styles.buttonText, styles.buttonTextDark ); @@ -30,12 +34,14 @@ const PickerButton = ( { icon, label, onPress, getStylesFromColorScheme } ) => { accessibilityHint={ __( 'Double tap to select layout' ) } activeOpacity={ 0.7 } onPress={ onPress } - style={ butonStyles } + style={ butonWrapperStyles } > - { icon } - { label } + + { icon } + { label } + ); }; -export default withPreferredColorScheme( PickerButton ); +export default PickerButton; diff --git a/packages/block-editor/src/components/page-template-picker/index.native.js b/packages/block-editor/src/components/page-template-picker/index.native.js index 88fa9323799fc8..3fdc5146b2551b 100644 --- a/packages/block-editor/src/components/page-template-picker/index.native.js +++ b/packages/block-editor/src/components/page-template-picker/index.native.js @@ -2,9 +2,7 @@ * Internal dependencies */ import __experimentalPageTemplatePicker from './picker'; -import __experimentalWithPageTemplatePickerVisible from './with-page-template-picker-visible'; -import __experimentalUsePageTemplatePickerVisible from './use-page-template-picker-visible'; +import __experimentalWithPageTemplatePicker from './with-page-template-picker'; export { __experimentalPageTemplatePicker }; -export { __experimentalWithPageTemplatePickerVisible }; -export { __experimentalUsePageTemplatePickerVisible }; +export { __experimentalWithPageTemplatePicker }; diff --git a/packages/block-editor/src/components/page-template-picker/picker.js b/packages/block-editor/src/components/page-template-picker/picker.native.js similarity index 68% rename from packages/block-editor/src/components/page-template-picker/picker.js rename to packages/block-editor/src/components/page-template-picker/picker.native.js index 89eb4f8ede3bfa..e419e0bf8d019d 100644 --- a/packages/block-editor/src/components/page-template-picker/picker.js +++ b/packages/block-editor/src/components/page-template-picker/picker.native.js @@ -1,13 +1,14 @@ /** * WordPress dependencies */ -import { useState } from '@wordpress/element'; +import { useState, useEffect, useRef } from '@wordpress/element'; import { useDispatch, useSelect } from '@wordpress/data'; /** * External dependencies */ import { logUserEvent, userEvents } from 'react-native-gutenberg-bridge'; +import { Animated } from 'react-native'; /** * Internal dependencies @@ -19,6 +20,7 @@ import Preview from './preview'; const __experimentalPageTemplatePicker = ( { templates = getDefaultTemplates(), + visible, } ) => { const { editPost } = useDispatch( 'core/editor' ); const { title } = useSelect( ( select ) => { @@ -30,6 +32,12 @@ const __experimentalPageTemplatePicker = ( { } ); const [ templatePreview, setTemplatePreview ] = useState(); + const [ pickerVisible, setPickerVisible ] = useState( visible ); + const contentOpacity = useRef( new Animated.Value( 0 ) ); + + useEffect( () => { + onPickerAnimation(); + }, [ visible ] ); const onApply = () => { editPost( { @@ -42,8 +50,28 @@ const __experimentalPageTemplatePicker = ( { setTemplatePreview( undefined ); }; + const onPickerAnimation = () => { + if ( visible && ! pickerVisible ) { + setPickerVisible( true ); + } + + Animated.timing( contentOpacity.current, { + toValue: visible ? 1 : 0, + duration: 300, + useNativeDriver: true, + } ).start( () => { + if ( ! visible ) { + setPickerVisible( false ); + } + } ); + }; + + if ( ! pickerVisible ) { + return null; + } + return ( - <> + { templates.map( ( template ) => (