Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[RNMobile] Add disabled style to Cell component #50665

Merged
merged 19 commits into from
May 22, 2023

Conversation

fluiddot
Copy link
Contributor

@fluiddot fluiddot commented May 16, 2023

What?

Add disabled style to Cell component to reflect when a cell is disabled.

Why?

Disabling the Cell component didn't reflect any change in the UI, which is confusing to users.

How?

Change the opacity of the value component (Text / TextInput components) when the Cell component is disabled.

Since this change might affect the different control components we use in the app, I checked the different components exported in the @wordpress/components package. The ones with ✅ are controls affected that have been verified:

  • TextControl
  • ColorControl
  • RangeControl - Slider
  • RangeControl - Stepper
  • ToggleControl ✅ (This PR reverts [RNMobile] Add disabled prop to SwitchCell component #50560 as now the disabled state is managed in the Cell component)
  • BottomSheetTextControl
  • BottomSheetSelectControl
  • CycleSelectControl
  • BaseControl (cell not used)
  • TextareaControl (cell not used)
  • SearchControl (cell not used)
  • SelectControl
  • FooterMessageControl (disabled not needed)
  • QueryControls (composition of control components - SelectControl + SelectControl (TreeSelect) + RangeControl)
  • RadioControl
  • UnitControl
  • SegmentedControls (cell not used)
  • SegmentedControl (cell not used)

Testing Instructions

In order to test the different control components, I created a test component for this purpose.

  1. Apply the following patch to incorporate the test component:
Click here to display patch
diff --git forkSrcPrefix/packages/edit-post/src/components/layout/index.native.js forkDstPrefix/packages/edit-post/src/components/layout/index.native.js
index a9c38ee1ccb8d5ea579a46bde8070edc372e8567..e0d2ea1c969805500405bbeb8c75255ebc08793b 100644
--- forkSrcPrefix/packages/edit-post/src/components/layout/index.native.js
+++ forkDstPrefix/packages/edit-post/src/components/layout/index.native.js
@@ -33,6 +33,7 @@ import headerToolbarStyles from '../header/header-toolbar/style.scss';
 import Header from '../header';
 import VisualEditor from '../visual-editor';
 import { store as editPostStore } from '../../store';
+import TestControls from './test-controls';
 
 class Layout extends Component {
 	constructor() {
@@ -149,6 +150,7 @@ class Layout extends Component {
 				>
 					<AutosaveMonitor disableIntervalChecks />
 					<View style={ editorStyles }>
+						<TestControls />
 						{ isHtmlView ? this.renderHTML() : this.renderVisual() }
 						{ ! isHtmlView && Platform.OS === 'android' && (
 							<FloatingToolbar />
diff --git forkSrcPrefix/packages/edit-post/src/components/layout/test-controls.js forkDstPrefix/packages/edit-post/src/components/layout/test-controls.js
new file mode 100644
index 0000000000000000000000000000000000000000..7dacdb799c72f42449bcd0d004f4352a5f6a0187
--- /dev/null
+++ forkDstPrefix/packages/edit-post/src/components/layout/test-controls.js
@@ -0,0 +1,221 @@
+/**
+ * WordPress dependencies
+ */
+import {
+	PanelBody,
+	BottomSheet,
+	BottomSheetTextControl,
+	BottomSheetSelectControl,
+	FooterMessageControl,
+	RangeControl,
+	TextControl,
+	ColorControl,
+	ToggleControl,
+	CycleSelectControl,
+	SelectControl,
+	RadioControl,
+	UnitControl,
+	ColorSettings,
+} from '@wordpress/components';
+import { useState } from '@wordpress/element';
+import { useMultipleOriginColorsAndGradients } from '@wordpress/block-editor';
+
+/**
+ * External dependencies
+ */
+// eslint-disable-next-line import/no-extraneous-dependencies
+import { useNavigation } from '@react-navigation/native';
+
+const TestControlsContainer = () => {
+	const colorSettings = useMultipleOriginColorsAndGradients();
+
+	return (
+		<BottomSheet
+			isVisible={ true }
+			onClose={ () => {} }
+			hideHeader
+			hasNavigation
+		>
+			<BottomSheet.NavigationContainer animate main>
+				<BottomSheet.NavigationScreen name={ 'main' }>
+					<TestControls />
+				</BottomSheet.NavigationScreen>
+				<BottomSheet.NavigationScreen
+					name={ BottomSheet.SubSheet.screenName }
+				>
+					<BottomSheet.SubSheet.Slot />
+				</BottomSheet.NavigationScreen>
+				<BottomSheet.NavigationScreen name="Color">
+					<ColorSettings defaultSettings={ colorSettings } />
+				</BottomSheet.NavigationScreen>
+			</BottomSheet.NavigationContainer>
+		</BottomSheet>
+	);
+};
+
+const TestControls = () => {
+	const [ controlsDisabled, setControlsDisabled ] = useState( true );
+
+	const [ selectValue, setSelectValue ] = useState( 1 );
+	const [ rangeValue, setRangeValue ] = useState( 0 );
+	const [ unitValue, setUnitValue ] = useState( 'px' );
+	const [ textValue, setTextValue ] = useState( 'example' );
+	const [ colorValue, setColorValue ] = useState( '#000000' );
+	const [ toggleValue, setToggleValue ] = useState( false );
+
+	const navigation = useNavigation();
+
+	return (
+		<>
+			<PanelBody title="Panel only for Testing">
+				<ToggleControl
+					label="Disable the below controls"
+					onChange={ setControlsDisabled }
+					checked={ controlsDisabled }
+				/>
+			</PanelBody>
+			<PanelBody title="Select Controls">
+				<BottomSheetSelectControl
+					label="BottomSheetSelectControl"
+					options={ [
+						{ value: 1, label: 'Value 1' },
+						{ value: 2, label: 'Value 2' },
+						{ value: 3, label: 'Value 3' },
+					] }
+					onChange={ setSelectValue }
+					value={ selectValue }
+					disabled={ controlsDisabled }
+				/>
+				<CycleSelectControl
+					label="CycleSelectControl"
+					onChange={ setSelectValue }
+					options={ [
+						{ value: 1, name: 'Value 1' },
+						{ value: 2, name: 'Value 2' },
+						{ value: 3, name: 'Value 3' },
+					] }
+					value={ selectValue }
+					disabled={ controlsDisabled }
+				/>
+				<SelectControl
+					label="SelectControl"
+					value={ selectValue }
+					onChange={ setSelectValue }
+					options={ [
+						{ value: 1, label: 'Value 1' },
+						{ value: 2, label: 'Value 2' },
+						{ value: 3, label: 'Value 3' },
+					] }
+					hideCancelButton
+					disabled={ controlsDisabled }
+				/>
+			</PanelBody>
+			<PanelBody title="Radio Control">
+				<RadioControl
+					selected={ selectValue }
+					options={ [
+						{ value: 1, label: 'Value 1' },
+						{ value: 2, label: 'Value 2' },
+						{ value: 3, label: 'Value 3' },
+					] }
+					onChange={ setSelectValue }
+					disabled={ controlsDisabled }
+				/>
+			</PanelBody>
+			<PanelBody title="Range Controls">
+				<RangeControl
+					label="RangeControl - Stepper"
+					value={ rangeValue }
+					onChange={ setRangeValue }
+					min={ 0 }
+					max={ 10 }
+					type="stepper"
+					disabled={ controlsDisabled }
+				/>
+				<RangeControl
+					label="RangeControl - Slider"
+					value={ rangeValue }
+					onChange={ setRangeValue }
+					min={ 0 }
+					max={ 10 }
+					disabled={ controlsDisabled }
+				/>
+				<UnitControl
+					label="UnitControl"
+					min={ 0 }
+					max={ 10 }
+					value={ rangeValue }
+					onChange={ setRangeValue }
+					onUnitChange={ setUnitValue }
+					unit={ unitValue }
+					units={ [
+						{
+							value: 'px',
+							label: 'px',
+							step: 1,
+						},
+						{
+							value: 'em',
+							label: 'em',
+							step: 0.1,
+						},
+					] }
+					disabled={ controlsDisabled }
+				/>
+			</PanelBody>
+			<PanelBody title="Text Controls">
+				<TextControl
+					value={ textValue }
+					onChange={ setTextValue }
+					placeholder="placeholder"
+					label="TextControl"
+					disabled={ controlsDisabled }
+				/>
+				<TextControl
+					value=""
+					onChange={ setTextValue }
+					placeholder="placeholder"
+					label="TextControl"
+					disabled={ controlsDisabled }
+				/>
+				<BottomSheetTextControl
+					initialValue={ textValue }
+					onChange={ setTextValue }
+					label="BottomSheetTextControl"
+					disabled={ controlsDisabled }
+				/>
+				<BottomSheetTextControl
+					onChange={ setTextValue }
+					placeholder="placeholder"
+					label="BottomSheetTextControl"
+					disabled={ controlsDisabled }
+				/>
+			</PanelBody>
+			<PanelBody title="Other controls">
+				<ColorControl
+					label="ColorControl"
+					color={ colorValue }
+					onPress={ () => {
+						navigation.navigate( 'Color', {
+							onColorChange: setColorValue,
+							colorValue,
+							onColorCleared: () => setColorValue( undefined ),
+							label: 'ColorControl',
+						} );
+					} }
+					withColorIndicator
+					disabled={ controlsDisabled }
+				/>
+				<ToggleControl
+					label="ToggleControl"
+					onChange={ setToggleValue }
+					checked={ toggleValue }
+					disabled={ controlsDisabled }
+				/>
+				<FooterMessageControl label="FooterMessageControl" />
+			</PanelBody>
+		</>
+	);
+};
+
+export default TestControlsContainer;
  1. Open a post/page in the app.
  2. Observe that a bottom sheet is automatically open.
  3. Observe that all displayed controls are disabled.
  4. Enable the controls using the toggle located at the top of the sheet.
  5. Observe that all displayed controls are enabled.

Testing Instructions for Keyboard

N/A

Screenshots or screencast

Click here to show Android screenshots

Light mode

Cell active Cell disabled

Dark mode

Cell active Cell disabled
Click here to show iOS screenshots

Light mode

Cell active Cell disabled

Dark mode

Cell active Cell disabled

@fluiddot fluiddot added the Mobile App - i.e. Android or iOS Native mobile impl of the block editor. (Note: used in scripts, ping mobile folks to change) label May 16, 2023
@fluiddot fluiddot self-assigned this May 16, 2023
@github-actions
Copy link

github-actions bot commented May 16, 2023

Size Change: 0 B

Total Size: 1.4 MB

ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 982 B
build/annotations/index.min.js 2.76 kB
build/api-fetch/index.min.js 2.33 kB
build/autop/index.min.js 2.14 kB
build/blob/index.min.js 472 B
build/block-directory/index.min.js 7.18 kB
build/block-directory/style-rtl.css 1.02 kB
build/block-directory/style.css 1.02 kB
build/block-editor/content-rtl.css 4.12 kB
build/block-editor/content.css 4.12 kB
build/block-editor/default-editor-styles-rtl.css 381 B
build/block-editor/default-editor-styles.css 381 B
build/block-editor/index.min.js 198 kB
build/block-editor/style-rtl.css 15.2 kB
build/block-editor/style.css 15.1 kB
build/block-library/blocks/archives/editor-rtl.css 61 B
build/block-library/blocks/archives/editor.css 60 B
build/block-library/blocks/archives/style-rtl.css 90 B
build/block-library/blocks/archives/style.css 90 B
build/block-library/blocks/audio/editor-rtl.css 150 B
build/block-library/blocks/audio/editor.css 150 B
build/block-library/blocks/audio/style-rtl.css 122 B
build/block-library/blocks/audio/style.css 122 B
build/block-library/blocks/audio/theme-rtl.css 126 B
build/block-library/blocks/audio/theme.css 126 B
build/block-library/blocks/avatar/editor-rtl.css 116 B
build/block-library/blocks/avatar/editor.css 116 B
build/block-library/blocks/avatar/style-rtl.css 91 B
build/block-library/blocks/avatar/style.css 91 B
build/block-library/blocks/block/editor-rtl.css 305 B
build/block-library/blocks/block/editor.css 305 B
build/block-library/blocks/button/editor-rtl.css 584 B
build/block-library/blocks/button/editor.css 582 B
build/block-library/blocks/button/style-rtl.css 624 B
build/block-library/blocks/button/style.css 623 B
build/block-library/blocks/buttons/editor-rtl.css 337 B
build/block-library/blocks/buttons/editor.css 337 B
build/block-library/blocks/buttons/style-rtl.css 332 B
build/block-library/blocks/buttons/style.css 332 B
build/block-library/blocks/calendar/style-rtl.css 239 B
build/block-library/blocks/calendar/style.css 239 B
build/block-library/blocks/categories/editor-rtl.css 113 B
build/block-library/blocks/categories/editor.css 112 B
build/block-library/blocks/categories/style-rtl.css 124 B
build/block-library/blocks/categories/style.css 124 B
build/block-library/blocks/code/editor-rtl.css 53 B
build/block-library/blocks/code/editor.css 53 B
build/block-library/blocks/code/style-rtl.css 121 B
build/block-library/blocks/code/style.css 121 B
build/block-library/blocks/code/theme-rtl.css 124 B
build/block-library/blocks/code/theme.css 124 B
build/block-library/blocks/columns/editor-rtl.css 108 B
build/block-library/blocks/columns/editor.css 108 B
build/block-library/blocks/columns/style-rtl.css 409 B
build/block-library/blocks/columns/style.css 409 B
build/block-library/blocks/comment-author-avatar/editor-rtl.css 125 B
build/block-library/blocks/comment-author-avatar/editor.css 125 B
build/block-library/blocks/comment-content/style-rtl.css 92 B
build/block-library/blocks/comment-content/style.css 92 B
build/block-library/blocks/comment-template/style-rtl.css 199 B
build/block-library/blocks/comment-template/style.css 198 B
build/block-library/blocks/comments-pagination-numbers/editor-rtl.css 123 B
build/block-library/blocks/comments-pagination-numbers/editor.css 121 B
build/block-library/blocks/comments-pagination/editor-rtl.css 222 B
build/block-library/blocks/comments-pagination/editor.css 209 B
build/block-library/blocks/comments-pagination/style-rtl.css 235 B
build/block-library/blocks/comments-pagination/style.css 231 B
build/block-library/blocks/comments-title/editor-rtl.css 75 B
build/block-library/blocks/comments-title/editor.css 75 B
build/block-library/blocks/comments/editor-rtl.css 840 B
build/block-library/blocks/comments/editor.css 839 B
build/block-library/blocks/comments/style-rtl.css 637 B
build/block-library/blocks/comments/style.css 636 B
build/block-library/blocks/cover/editor-rtl.css 647 B
build/block-library/blocks/cover/editor.css 650 B
build/block-library/blocks/cover/style-rtl.css 1.61 kB
build/block-library/blocks/cover/style.css 1.6 kB
build/block-library/blocks/details/editor-rtl.css 65 B
build/block-library/blocks/details/editor.css 65 B
build/block-library/blocks/details/style-rtl.css 159 B
build/block-library/blocks/details/style.css 159 B
build/block-library/blocks/embed/editor-rtl.css 293 B
build/block-library/blocks/embed/editor.css 293 B
build/block-library/blocks/embed/style-rtl.css 410 B
build/block-library/blocks/embed/style.css 410 B
build/block-library/blocks/embed/theme-rtl.css 126 B
build/block-library/blocks/embed/theme.css 126 B
build/block-library/blocks/file/editor-rtl.css 316 B
build/block-library/blocks/file/editor.css 316 B
build/block-library/blocks/file/interactivity.min.js 395 B
build/block-library/blocks/file/style-rtl.css 269 B
build/block-library/blocks/file/style.css 270 B
build/block-library/blocks/file/view.min.js 375 B
build/block-library/blocks/freeform/editor-rtl.css 2.44 kB
build/block-library/blocks/freeform/editor.css 2.44 kB
build/block-library/blocks/gallery/editor-rtl.css 947 B
build/block-library/blocks/gallery/editor.css 952 B
build/block-library/blocks/gallery/style-rtl.css 1.53 kB
build/block-library/blocks/gallery/style.css 1.53 kB
build/block-library/blocks/gallery/theme-rtl.css 108 B
build/block-library/blocks/gallery/theme.css 108 B
build/block-library/blocks/group/editor-rtl.css 654 B
build/block-library/blocks/group/editor.css 654 B
build/block-library/blocks/group/style-rtl.css 57 B
build/block-library/blocks/group/style.css 57 B
build/block-library/blocks/group/theme-rtl.css 78 B
build/block-library/blocks/group/theme.css 78 B
build/block-library/blocks/heading/style-rtl.css 76 B
build/block-library/blocks/heading/style.css 76 B
build/block-library/blocks/html/editor-rtl.css 336 B
build/block-library/blocks/html/editor.css 337 B
build/block-library/blocks/image/editor-rtl.css 834 B
build/block-library/blocks/image/editor.css 833 B
build/block-library/blocks/image/style-rtl.css 652 B
build/block-library/blocks/image/style.css 652 B
build/block-library/blocks/image/theme-rtl.css 126 B
build/block-library/blocks/image/theme.css 126 B
build/block-library/blocks/latest-comments/style-rtl.css 357 B
build/block-library/blocks/latest-comments/style.css 357 B
build/block-library/blocks/latest-posts/editor-rtl.css 213 B
build/block-library/blocks/latest-posts/editor.css 212 B
build/block-library/blocks/latest-posts/style-rtl.css 478 B
build/block-library/blocks/latest-posts/style.css 478 B
build/block-library/blocks/list/style-rtl.css 88 B
build/block-library/blocks/list/style.css 88 B
build/block-library/blocks/media-text/editor-rtl.css 266 B
build/block-library/blocks/media-text/editor.css 263 B
build/block-library/blocks/media-text/style-rtl.css 507 B
build/block-library/blocks/media-text/style.css 505 B
build/block-library/blocks/more/editor-rtl.css 431 B
build/block-library/blocks/more/editor.css 431 B
build/block-library/blocks/navigation-link/editor-rtl.css 712 B
build/block-library/blocks/navigation-link/editor.css 711 B
build/block-library/blocks/navigation-link/style-rtl.css 115 B
build/block-library/blocks/navigation-link/style.css 115 B
build/block-library/blocks/navigation-submenu/editor-rtl.css 296 B
build/block-library/blocks/navigation-submenu/editor.css 295 B
build/block-library/blocks/navigation/editor-rtl.css 2.33 kB
build/block-library/blocks/navigation/editor.css 2.33 kB
build/block-library/blocks/navigation/interactivity.min.js 865 B
build/block-library/blocks/navigation/style-rtl.css 2.21 kB
build/block-library/blocks/navigation/style.css 2.2 kB
build/block-library/blocks/navigation/view-modal.min.js 2.81 kB
build/block-library/blocks/navigation/view.min.js 443 B
build/block-library/blocks/nextpage/editor-rtl.css 395 B
build/block-library/blocks/nextpage/editor.css 395 B
build/block-library/blocks/page-list/editor-rtl.css 401 B
build/block-library/blocks/page-list/editor.css 401 B
build/block-library/blocks/page-list/style-rtl.css 175 B
build/block-library/blocks/page-list/style.css 175 B
build/block-library/blocks/paragraph/editor-rtl.css 174 B
build/block-library/blocks/paragraph/editor.css 174 B
build/block-library/blocks/paragraph/style-rtl.css 279 B
build/block-library/blocks/paragraph/style.css 281 B
build/block-library/blocks/post-author/style-rtl.css 175 B
build/block-library/blocks/post-author/style.css 176 B
build/block-library/blocks/post-comments-form/editor-rtl.css 96 B
build/block-library/blocks/post-comments-form/editor.css 96 B
build/block-library/blocks/post-comments-form/style-rtl.css 501 B
build/block-library/blocks/post-comments-form/style.css 501 B
build/block-library/blocks/post-date/style-rtl.css 61 B
build/block-library/blocks/post-date/style.css 61 B
build/block-library/blocks/post-excerpt/editor-rtl.css 71 B
build/block-library/blocks/post-excerpt/editor.css 71 B
build/block-library/blocks/post-excerpt/style-rtl.css 141 B
build/block-library/blocks/post-excerpt/style.css 141 B
build/block-library/blocks/post-featured-image/editor-rtl.css 588 B
build/block-library/blocks/post-featured-image/editor.css 586 B
build/block-library/blocks/post-featured-image/style-rtl.css 319 B
build/block-library/blocks/post-featured-image/style.css 319 B
build/block-library/blocks/post-navigation-link/style-rtl.css 153 B
build/block-library/blocks/post-navigation-link/style.css 153 B
build/block-library/blocks/post-template/editor-rtl.css 99 B
build/block-library/blocks/post-template/editor.css 98 B
build/block-library/blocks/post-template/style-rtl.css 281 B
build/block-library/blocks/post-template/style.css 281 B
build/block-library/blocks/post-terms/style-rtl.css 96 B
build/block-library/blocks/post-terms/style.css 96 B
build/block-library/blocks/post-time-to-read/style-rtl.css 69 B
build/block-library/blocks/post-time-to-read/style.css 69 B
build/block-library/blocks/post-title/style-rtl.css 100 B
build/block-library/blocks/post-title/style.css 100 B
build/block-library/blocks/preformatted/style-rtl.css 103 B
build/block-library/blocks/preformatted/style.css 103 B
build/block-library/blocks/pullquote/editor-rtl.css 135 B
build/block-library/blocks/pullquote/editor.css 135 B
build/block-library/blocks/pullquote/style-rtl.css 335 B
build/block-library/blocks/pullquote/style.css 335 B
build/block-library/blocks/pullquote/theme-rtl.css 167 B
build/block-library/blocks/pullquote/theme.css 167 B
build/block-library/blocks/query-pagination-numbers/editor-rtl.css 122 B
build/block-library/blocks/query-pagination-numbers/editor.css 121 B
build/block-library/blocks/query-pagination/editor-rtl.css 221 B
build/block-library/blocks/query-pagination/editor.css 211 B
build/block-library/blocks/query-pagination/style-rtl.css 288 B
build/block-library/blocks/query-pagination/style.css 284 B
build/block-library/blocks/query-title/style-rtl.css 63 B
build/block-library/blocks/query-title/style.css 63 B
build/block-library/blocks/query/editor-rtl.css 450 B
build/block-library/blocks/query/editor.css 449 B
build/block-library/blocks/quote/style-rtl.css 222 B
build/block-library/blocks/quote/style.css 222 B
build/block-library/blocks/quote/theme-rtl.css 223 B
build/block-library/blocks/quote/theme.css 226 B
build/block-library/blocks/read-more/style-rtl.css 132 B
build/block-library/blocks/read-more/style.css 132 B
build/block-library/blocks/rss/editor-rtl.css 149 B
build/block-library/blocks/rss/editor.css 149 B
build/block-library/blocks/rss/style-rtl.css 289 B
build/block-library/blocks/rss/style.css 288 B
build/block-library/blocks/search/editor-rtl.css 178 B
build/block-library/blocks/search/editor.css 178 B
build/block-library/blocks/search/style-rtl.css 434 B
build/block-library/blocks/search/style.css 432 B
build/block-library/blocks/search/theme-rtl.css 114 B
build/block-library/blocks/search/theme.css 114 B
build/block-library/blocks/separator/editor-rtl.css 146 B
build/block-library/blocks/separator/editor.css 146 B
build/block-library/blocks/separator/style-rtl.css 234 B
build/block-library/blocks/separator/style.css 234 B
build/block-library/blocks/separator/theme-rtl.css 194 B
build/block-library/blocks/separator/theme.css 194 B
build/block-library/blocks/shortcode/editor-rtl.css 323 B
build/block-library/blocks/shortcode/editor.css 323 B
build/block-library/blocks/site-logo/editor-rtl.css 754 B
build/block-library/blocks/site-logo/editor.css 754 B
build/block-library/blocks/site-logo/style-rtl.css 203 B
build/block-library/blocks/site-logo/style.css 203 B
build/block-library/blocks/site-tagline/editor-rtl.css 86 B
build/block-library/blocks/site-tagline/editor.css 86 B
build/block-library/blocks/site-title/editor-rtl.css 116 B
build/block-library/blocks/site-title/editor.css 116 B
build/block-library/blocks/site-title/style-rtl.css 57 B
build/block-library/blocks/site-title/style.css 57 B
build/block-library/blocks/social-link/editor-rtl.css 184 B
build/block-library/blocks/social-link/editor.css 184 B
build/block-library/blocks/social-links/editor-rtl.css 674 B
build/block-library/blocks/social-links/editor.css 673 B
build/block-library/blocks/social-links/style-rtl.css 1.4 kB
build/block-library/blocks/social-links/style.css 1.39 kB
build/block-library/blocks/spacer/editor-rtl.css 348 B
build/block-library/blocks/spacer/editor.css 348 B
build/block-library/blocks/spacer/style-rtl.css 48 B
build/block-library/blocks/spacer/style.css 48 B
build/block-library/blocks/table/editor-rtl.css 433 B
build/block-library/blocks/table/editor.css 433 B
build/block-library/blocks/table/style-rtl.css 645 B
build/block-library/blocks/table/style.css 644 B
build/block-library/blocks/table/theme-rtl.css 146 B
build/block-library/blocks/table/theme.css 146 B
build/block-library/blocks/tag-cloud/style-rtl.css 251 B
build/block-library/blocks/tag-cloud/style.css 253 B
build/block-library/blocks/template-part/editor-rtl.css 403 B
build/block-library/blocks/template-part/editor.css 403 B
build/block-library/blocks/template-part/theme-rtl.css 101 B
build/block-library/blocks/template-part/theme.css 101 B
build/block-library/blocks/text-columns/editor-rtl.css 95 B
build/block-library/blocks/text-columns/editor.css 95 B
build/block-library/blocks/text-columns/style-rtl.css 166 B
build/block-library/blocks/text-columns/style.css 166 B
build/block-library/blocks/verse/style-rtl.css 99 B
build/block-library/blocks/verse/style.css 99 B
build/block-library/blocks/video/editor-rtl.css 552 B
build/block-library/blocks/video/editor.css 555 B
build/block-library/blocks/video/style-rtl.css 174 B
build/block-library/blocks/video/style.css 174 B
build/block-library/blocks/video/theme-rtl.css 126 B
build/block-library/blocks/video/theme.css 126 B
build/block-library/classic-rtl.css 179 B
build/block-library/classic.css 179 B
build/block-library/common-rtl.css 1.1 kB
build/block-library/common.css 1.1 kB
build/block-library/editor-elements-rtl.css 75 B
build/block-library/editor-elements.css 75 B
build/block-library/editor-rtl.css 12 kB
build/block-library/editor.css 12 kB
build/block-library/elements-rtl.css 54 B
build/block-library/elements.css 54 B
build/block-library/index.min.js 204 kB
build/block-library/interactivity/runtime.min.js 2.23 kB
build/block-library/interactivity/vendors.min.js 8.15 kB
build/block-library/reset-rtl.css 478 B
build/block-library/reset.css 478 B
build/block-library/style-rtl.css 12.8 kB
build/block-library/style.css 12.8 kB
build/block-library/theme-rtl.css 686 B
build/block-library/theme.css 691 B
build/block-serialization-default-parser/index.min.js 1.12 kB
build/block-serialization-spec-parser/index.min.js 2.83 kB
build/blocks/index.min.js 50.9 kB
build/commands/index.min.js 15 kB
build/commands/style-rtl.css 827 B
build/commands/style.css 827 B
build/components/index.min.js 232 kB
build/components/style-rtl.css 11.7 kB
build/components/style.css 11.7 kB
build/compose/index.min.js 12.4 kB
build/core-commands/index.min.js 1.8 kB
build/core-data/index.min.js 16.5 kB
build/customize-widgets/index.min.js 12.2 kB
build/customize-widgets/style-rtl.css 1.38 kB
build/customize-widgets/style.css 1.38 kB
build/data-controls/index.min.js 708 B
build/data/index.min.js 8.68 kB
build/date/index.min.js 40.5 kB
build/deprecated/index.min.js 507 B
build/dom-ready/index.min.js 324 B
build/dom/index.min.js 4.72 kB
build/edit-post/classic-rtl.css 544 B
build/edit-post/classic.css 545 B
build/edit-post/index.min.js 35.2 kB
build/edit-post/style-rtl.css 7.76 kB
build/edit-post/style.css 7.75 kB
build/edit-site/index.min.js 63.8 kB
build/edit-site/style-rtl.css 10.5 kB
build/edit-site/style.css 10.5 kB
build/edit-widgets/index.min.js 17.3 kB
build/edit-widgets/style-rtl.css 4.53 kB
build/edit-widgets/style.css 4.53 kB
build/editor/index.min.js 45.8 kB
build/editor/style-rtl.css 3.54 kB
build/editor/style.css 3.53 kB
build/element/index.min.js 4.89 kB
build/escape-html/index.min.js 537 B
build/format-library/index.min.js 7.77 kB
build/format-library/style-rtl.css 554 B
build/format-library/style.css 553 B
build/hooks/index.min.js 1.64 kB
build/html-entities/index.min.js 448 B
build/i18n/index.min.js 3.73 kB
build/is-shallow-equal/index.min.js 527 B
build/keyboard-shortcuts/index.min.js 1.78 kB
build/keycodes/index.min.js 1.91 kB
build/list-reusable-blocks/index.min.js 2.14 kB
build/list-reusable-blocks/style-rtl.css 836 B
build/list-reusable-blocks/style.css 836 B
build/media-utils/index.min.js 2.97 kB
build/notices/index.min.js 963 B
build/plugins/index.min.js 1.85 kB
build/preferences-persistence/index.min.js 2.22 kB
build/preferences/index.min.js 1.33 kB
build/primitives/index.min.js 944 B
build/priority-queue/index.min.js 1.52 kB
build/private-apis/index.min.js 939 B
build/react-i18n/index.min.js 696 B
build/react-refresh-entry/index.min.js 8.44 kB
build/react-refresh-runtime/index.min.js 7.31 kB
build/redux-routine/index.min.js 2.74 kB
build/reusable-blocks/index.min.js 2.25 kB
build/reusable-blocks/style-rtl.css 243 B
build/reusable-blocks/style.css 243 B
build/rich-text/index.min.js 11 kB
build/router/index.min.js 1.78 kB
build/server-side-render/index.min.js 2.08 kB
build/shortcode/index.min.js 1.42 kB
build/style-engine/index.min.js 1.52 kB
build/token-list/index.min.js 644 B
build/url/index.min.js 3.65 kB
build/vendors/inert-polyfill.min.js 2.48 kB
build/vendors/react-dom.min.js 41.8 kB
build/vendors/react.min.js 4.02 kB
build/viewport/index.min.js 1.08 kB
build/warning/index.min.js 268 B
build/widgets/index.min.js 7.28 kB
build/widgets/style-rtl.css 1.15 kB
build/widgets/style.css 1.16 kB
build/wordcount/index.min.js 1.06 kB

compressed-size-action

@fluiddot fluiddot force-pushed the rnmobile/cell-add-disabled-style branch from 53a9343 to e808a49 Compare May 16, 2023 18:03
@@ -251,11 +257,12 @@ class BottomSheetCell extends Component {
onBlur={ finishEditing }
onSubmitEditing={ onSubmit }
keyboardType={ this.typeToKeyboardType( type, step ) }
disabled={ disabled }
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The text input is also disabled.

@@ -225,7 +224,6 @@ class BottomSheetRangeCell extends Component {
testID={ `Slider ${ cellProps.label }` }
value={ sliderValue }
defaultValue={ defaultValue }
disabled={ disabled }
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On iOS the default disabled style of the Slider already makes it transparent. So, in order to avoid making it too transparent with the Cell's disabled style, we only disable it on Android.

@@ -61,6 +63,7 @@ export default function BottomSheetSwitchCell( props ) {
editable={ false }
value={ '' }
disabled={ disabled }
disabledStyle={ EMPTY_STYLE }
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the case of the Switch component, we don't want to make it transparent as it already provides a disabled style via the disabled prop. Hence, we pass an empty style to override it.

disabled && disabledStyle,
styles.cellRowContainer,
] }
pointerEvents={ disabled ? 'none' : 'auto' }
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Although the parent component (TouchableRipple) is disabled, I noticed that some controls render input elements that also need to be disabled to prevent interaction. Instead of disabling them one by one, I simply disabled all touch events for the children when the cell is disabled.

@fluiddot
Copy link
Contributor Author

fluiddot commented May 17, 2023

Heads up that I noticed that the placeholder color for BottomSheetTextControl component wasn't being affected by the disabled styles. I pushed a fix for this in d51768d.

UPDATE: I've applied another fix as shared in #50665 (comment).

@fluiddot fluiddot force-pushed the rnmobile/cell-add-disabled-style branch from d51768d to 4d9fd15 Compare May 17, 2023 08:53
@fluiddot
Copy link
Contributor Author

Heads up that I noticed that the placeholder color for BottomSheetTextControl component wasn't being affected by the disabled styles. I pushed a fix for this in d51768d.

I noticed some issues when testing this change, so I've edited the changes and pushed another fix in 4d9fd15.

Heads up that I've also updated the screenshots in the PR's description to reflect the last changes.

Comment on lines +232 to +237
const placeholderTextColor = disabled
? this.props.getStylesFromColorScheme(
styles.placeholderColorDisabled,
styles.placeholderColorDisabledDark
).color
: styles.placeholderColor.color;
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I finally calculated the placeholder text color to handle the different cases.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is great. I noticed this when I started my review and then noted you updated this code. :) The raw hex values stood out to me even when working on the Clear Button issue from a while ago -- thanks for addressing them here!

@@ -284,7 +284,15 @@

// used in both light and dark modes
.placeholderColor {
color: #87a6bc;
color: $gray;
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I noticed this color is already defined globally:

@fluiddot
Copy link
Contributor Author

@osullivanchris I'd appreciate your design input on these changes (I added several screenshots in the PR's description). I haven't generated an installable build, but let me know if you'd like to test them with a build and I'll create one.
Thanks for the help 🙇 !

Copy link
Member

@derekblank derekblank left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks great, thanks for tackling this! I was able to test disabled inputs on both platforms successfully, including dark mode on both. Additionally, thank you for adding the patch to the testing instructions, which made this very easy to test. LGTM. 🚀

Comment on lines +232 to +237
const placeholderTextColor = disabled
? this.props.getStylesFromColorScheme(
styles.placeholderColorDisabled,
styles.placeholderColorDisabledDark
).color
: styles.placeholderColor.color;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is great. I noticed this when I started my review and then noted you updated this code. :) The raw hex values stood out to me even when working on the Clear Button issue from a while ago -- thanks for addressing them here!

@fluiddot
Copy link
Contributor Author

Thank @derekblank for reviewing the PR 🙇 !

[...] Additionally, thank you for adding the patch to the testing instructions, which made this very easy to test. LGTM. 🚀

I also found having the test component particularly useful when testing. In fact, I'm thinking of incorporating it into the code base for testing purposes. We could even use Storybook for this, although it might require extra work to support RN.

@osullivanchris
Copy link

@fluiddot I might take a closer look at this one. If you want to proceed, and if I have an improvement in mind I can let you know.

A couple of things come to mind:

  • the disabled state for some items have a similar but slightly different color. As its using transparency. In this screenshot for example. There's grey-ish and blue-ish grey text. Maybe a hard coded disabled color would be better. Or maybe its a question higher up the chain of why our labels are sometimes a blue-ish grey and sometimes a flat grey color.
  • I think when a ColorControl is disabled it should be a special case and not make the colour transparent. It can make it unclear what the colour in use is.
  • I'm trying to look at other examples to see if the field name as well as the field value should have a disabled state. Right now the field name on the left always remains in an enabled appearance. Maybe fine. Just considering.
  • Should we show a toast message or similar when a user taps a disabled field, to add clarity?

@fluiddot
Copy link
Contributor Author

@fluiddot I might take a closer look at this one. If you want to proceed, and if I have an improvement in mind I can let you know.

Great, thanks @osullivanchris for the feedback 🙇 ! Let me know if there's any improvement that we should make before merging the PR. These changes are blocking wordpress-mobile/gutenberg-mobile#5782, but it can wait until we provide a good solution here. Note that the disabled state is not yet used, it will be first used by the changes introduced in wordpress-mobile/gutenberg-mobile#5782.

  • the disabled state for some items have a similar but slightly different color. As its using transparency. In this screenshot for example. There's grey-ish and blue-ish grey text. Maybe a hard coded disabled color would be better. Or maybe its a question higher up the chain of why our labels are sometimes a blue-ish grey and sometimes a flat grey color.

The blue-ish is used as the placeholder color (i.e. when the text field is empty) while the grey-ish is for regular text. I understand the color difference is to differentiate when a text field is empty. Should we use the same color when the component is disabled?

  • I think when a ColorControl is disabled it should be a special case and not make the colour transparent. It can make it unclear what the colour in use is.

Good point, I can handle that case independently to prevent making the color transparent. However, I'm wondering if the disabled state would be noticeable just by adding transparency to the right arrow. WDYT?

  • I'm trying to look at other examples to see if the field name as well as the field value should have a disabled state. Right now the field name on the left always remains in an enabled appearance. Maybe fine. Just considering.

We could also apply a disabled style to the field name, I was tempted to make it also transparent but I felt it was too much transparency. Do you have any idea what we could do in this case? This could help the case I mentioned above about the ColorControl.

  • Should we show a toast message or similar when a user taps a disabled field, to add clarity?

Good idea. This could be helpful to clarify why the field is disabled. I'll open a GitHub issue as a follow-up after we merge the PR.

@fluiddot
Copy link
Contributor Author

@osullivanchris As we discussed internally, I'm going to merge this as-is to unblock the changes from wordpress-mobile/gutenberg-mobile#5782. I'll incorporate the design changes we discussed in a separate PR.

@fluiddot fluiddot force-pushed the rnmobile/cell-add-disabled-style branch from deb639c to 0a8de68 Compare May 22, 2023 10:54
@github-actions
Copy link

github-actions bot commented May 22, 2023

Flaky tests detected in 0a8de68.
Some tests passed with failed attempts. The failures may not be related to this commit but are still reported for visibility. See the documentation for more information.

🔍 Workflow run URL: https://github.com/WordPress/gutenberg/actions/runs/5044907853
📝 Reported issues:

@fluiddot fluiddot merged commit a093361 into trunk May 22, 2023
@fluiddot fluiddot deleted the rnmobile/cell-add-disabled-style branch May 22, 2023 13:48
@github-actions github-actions bot added this to the Gutenberg 15.9 milestone May 22, 2023
@fluiddot
Copy link
Contributor Author

@osullivanchris As we discussed internally, I'm going to merge this as-is to unblock the changes from wordpress-mobile/gutenberg-mobile#5782. I'll incorporate the design changes we discussed in a separate PR.

Here is the PR with the changes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Mobile App - i.e. Android or iOS Native mobile impl of the block editor. (Note: used in scripts, ping mobile folks to change)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants