From bd1824c95ef79fdf2e7fae5696051e0c17d7460f Mon Sep 17 00:00:00 2001 From: fabriziobertoglio1987 Date: Mon, 14 Nov 2022 17:12:17 +0100 Subject: [PATCH 1/6] Revert "Call to implicitly deleted constructor" This reverts commit 252e6f47b10fa00a863fc85f11fe8a8e6c9893f4. --- .../react/renderer/attributedstring/TextAttributes.cpp | 2 +- ReactCommon/react/renderer/attributedstring/TextAttributes.h | 2 +- ReactCommon/react/renderer/attributedstring/primitives.h | 4 ---- 3 files changed, 2 insertions(+), 6 deletions(-) diff --git a/ReactCommon/react/renderer/attributedstring/TextAttributes.cpp b/ReactCommon/react/renderer/attributedstring/TextAttributes.cpp index 90fc6513cd226d..741dcc85d4647f 100644 --- a/ReactCommon/react/renderer/attributedstring/TextAttributes.cpp +++ b/ReactCommon/react/renderer/attributedstring/TextAttributes.cpp @@ -98,7 +98,7 @@ void TextAttributes::apply(TextAttributes textAttributes) { accessibilityRole = textAttributes.accessibilityRole.has_value() ? textAttributes.accessibilityRole : accessibilityRole; - accessibilityUnit = !textAttributes.accessibilityUnit.has_value() ? textAttributes.accessibilityUnit + accessibilityUnit = !textAttributes.accessibilityUnit.empty() ? textAttributes.accessibilityUnit : accessibilityUnit; } diff --git a/ReactCommon/react/renderer/attributedstring/TextAttributes.h b/ReactCommon/react/renderer/attributedstring/TextAttributes.h index 4bf42586f5a173..017e2d38e16ba9 100644 --- a/ReactCommon/react/renderer/attributedstring/TextAttributes.h +++ b/ReactCommon/react/renderer/attributedstring/TextAttributes.h @@ -79,7 +79,7 @@ class TextAttributes : public DebugStringConvertible { // construction. std::optional layoutDirection{}; std::optional accessibilityRole{}; - AccessibilityUnit accessibilityUnit{}; + std::string accessibilityUnit{}; #pragma mark - Operations diff --git a/ReactCommon/react/renderer/attributedstring/primitives.h b/ReactCommon/react/renderer/attributedstring/primitives.h index 69c7caffc4000e..39e8f31e18b4a6 100644 --- a/ReactCommon/react/renderer/attributedstring/primitives.h +++ b/ReactCommon/react/renderer/attributedstring/primitives.h @@ -135,10 +135,6 @@ enum class AccessibilityRole { Toolbar, }; -struct AccessibilityUnit { - std::string hours{""}; -}; - enum class TextTransform { None, Uppercase, From e14e9ba2af29e0017cab6829c1ef6bda080107bd Mon Sep 17 00:00:00 2001 From: fabriziobertoglio1987 Date: Mon, 14 Nov 2022 19:49:41 +0100 Subject: [PATCH 2/6] separating mIsAccessibilitySpan from mAccessibilityUnit --- .../react/views/text/TextAttributeProps.java | 12 ++++++------ .../react/views/text/TextLayoutManagerMapBuffer.java | 7 ++++++- .../react/renderer/components/text/BaseTextProps.cpp | 2 +- .../examples/Accessibility/AccessibilityExample.js | 2 +- 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/text/TextAttributeProps.java b/ReactAndroid/src/main/java/com/facebook/react/views/text/TextAttributeProps.java index 36115a8a9be8e8..651de3eb6c3bb4 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/text/TextAttributeProps.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/text/TextAttributeProps.java @@ -11,7 +11,6 @@ import android.text.Layout; import android.text.TextUtils; import android.util.LayoutDirection; -import android.util.Log; import android.view.Gravity; import androidx.annotation.Nullable; import com.facebook.react.bridge.JSApplicationIllegalArgumentException; @@ -106,6 +105,7 @@ public class TextAttributeProps { protected boolean mIsAccessibilityRoleSet = false; protected @Nullable String mAccessibilityUnit = null; protected boolean mIsAccessibilityLink = false; + protected boolean mIsAccessibilityTtsSpan = false; protected int mFontStyle = UNSET; protected int mFontWeight = UNSET; @@ -612,15 +612,15 @@ private void setAccessibilityRole(@Nullable String accessibilityRole) { mIsAccessibilityLink = mAccessibilityRole.equals(AccessibilityRole.LINK); String roleClassName = AccessibilityRole.getValue(AccessibilityRole.fromValue(accessibilityRole)); - mAccessibilityUnit = - ReactTtsSpan.SUPPORTED_UNIT_TYPES.contains(roleClassName) ? roleClassName : null; + mIsAccessibilityTtsSpan = + ReactTtsSpan.SUPPORTED_UNIT_TYPES.contains(roleClassName) && Build.VERSION.SDK_INT >= 21; } } private void setAccessibilityUnit(@Nullable String accessibilityUnit) { - Log.w("TESTING::TextAttributeProps", "setAccessibilityUnit"); - Log.w("TESTING::TextAttributeProps", "accessibilityUnit: " + (accessibilityUnit)); - // not yet implemented + if (accessibilityUnit != null) { + mAccessibilityUnit = accessibilityUnit; + } } public static int getTextBreakStrategy(@Nullable String textBreakStrategy) { diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManagerMapBuffer.java b/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManagerMapBuffer.java index ed321a89bfef2c..1d7027afe15596 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManagerMapBuffer.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManagerMapBuffer.java @@ -19,6 +19,7 @@ import android.text.StaticLayout; import android.text.TextPaint; import android.util.LayoutDirection; +import android.util.Log; import android.util.LruCache; import android.view.View; import androidx.annotation.NonNull; @@ -143,8 +144,12 @@ private static void buildSpannableFromFragment( if (textAttributes.mIsAccessibilityLink) { ops.add(new SetSpanOperation(start, end, new ReactClickableSpan(reactTag))); } - if (textAttributes.mAccessibilityUnit != null && Build.VERSION.SDK_INT >= 21) { + if (textAttributes.mIsAccessibilityTtsSpan) { + // check that textAttributes.mAccessibilityRole == "time" ReactTtsSpan.Builder builder = new ReactTtsSpan.Builder(ReactTtsSpan.TYPE_TIME); + Log.w( + "TESTING::TextLayoutManagerMapBuffer", + "textAttributes.mAccessibilityUnit: " + (textAttributes.mAccessibilityUnit)); builder.setIntArgument(ReactTtsSpan.ARG_HOURS, 10); builder.setIntArgument(ReactTtsSpan.ARG_MINUTES, 30); ops.add(new SetSpanOperation(start, end, builder.build())); diff --git a/ReactCommon/react/renderer/components/text/BaseTextProps.cpp b/ReactCommon/react/renderer/components/text/BaseTextProps.cpp index 3d6eddbf8ca7d1..e1bac7373c955e 100644 --- a/ReactCommon/react/renderer/components/text/BaseTextProps.cpp +++ b/ReactCommon/react/renderer/components/text/BaseTextProps.cpp @@ -298,7 +298,7 @@ void BaseTextProps::setProp( defaults, value, textAttributes, - accessibilityRole, + accessibilityUnit, "accessibilityUnit"); REBUILD_FIELD_SWITCH_CASE( defaults, value, textAttributes, opacity, "opacity"); diff --git a/packages/rn-tester/js/examples/Accessibility/AccessibilityExample.js b/packages/rn-tester/js/examples/Accessibility/AccessibilityExample.js index 039496f5f682b7..e8495e18951dab 100644 --- a/packages/rn-tester/js/examples/Accessibility/AccessibilityExample.js +++ b/packages/rn-tester/js/examples/Accessibility/AccessibilityExample.js @@ -172,7 +172,7 @@ class AccessibilityExample extends React.Component<{}> { My number is 17:00 From 48b38afbd359e2c0b7de7aee11dde99000f57c78 Mon Sep 17 00:00:00 2001 From: fabriziobertoglio1987 Date: Mon, 14 Nov 2022 21:02:05 +0100 Subject: [PATCH 3/6] adding accessibilityHours, triggers a runtime --- .../react/views/text/TextAttributeProps.java | 21 ++++++++++++++++ .../attributedstring/TextAttributes.cpp | 8 +++++++ .../attributedstring/TextAttributes.h | 6 ++++- .../renderer/attributedstring/conversions.h | 20 ++++++++++++++++ .../components/text/BaseTextProps.cpp | 24 +++++++++++++++++++ .../components/view/AccessibilityProps.cpp | 20 ++++++++++++++++ .../components/view/AccessibilityProps.h | 2 ++ 7 files changed, 100 insertions(+), 1 deletion(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/text/TextAttributeProps.java b/ReactAndroid/src/main/java/com/facebook/react/views/text/TextAttributeProps.java index 651de3eb6c3bb4..dab369a950e843 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/text/TextAttributeProps.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/text/TextAttributeProps.java @@ -11,6 +11,7 @@ import android.text.Layout; import android.text.TextUtils; import android.util.LayoutDirection; +import android.util.Log; import android.view.Gravity; import androidx.annotation.Nullable; import com.facebook.react.bridge.JSApplicationIllegalArgumentException; @@ -54,6 +55,8 @@ public class TextAttributeProps { public static final short TA_KEY_LAYOUT_DIRECTION = 21; public static final short TA_KEY_ACCESSIBILITY_ROLE = 22; public static final short TA_KEY_ACCESSIBILITY_UNIT = 47; + public static final short TA_KEY_ACCESSIBILITY_HOURS = 48; + public static final short TA_KEY_ACCESSIBILITY_MINUTES = 49; public static final int UNSET = -1; @@ -211,6 +214,12 @@ public static TextAttributeProps fromMapBuffer(MapBuffer props) { case TA_KEY_ACCESSIBILITY_UNIT: result.setAccessibilityUnit(entry.getStringValue()); break; + case TA_KEY_ACCESSIBILITY_HOURS: + result.setAccessibilityHours(entry.getIntValue()); + break; + case TA_KEY_ACCESSIBILITY_MINUTES: + result.setAccessibilityMinutes(entry.getIntValue()); + break; } } @@ -623,6 +632,18 @@ private void setAccessibilityUnit(@Nullable String accessibilityUnit) { } } + private void setAccessibilityHours(@Nullable Integer accessibilityHours) { + if (accessibilityHours != null) { + Log.w("TESTING::TextAttributeProps", "accessibilityHours: " + (accessibilityHours)); + } + } + + private void setAccessibilityMinutes(@Nullable Integer accessibilityMinutes) { + if (accessibilityMinutes != null) { + Log.w("TESTING::TextAttributeProps", "accessibilityMinutes: " + (accessibilityMinutes)); + } + } + public static int getTextBreakStrategy(@Nullable String textBreakStrategy) { int androidTextBreakStrategy = DEFAULT_BREAK_STRATEGY; if (textBreakStrategy != null) { diff --git a/ReactCommon/react/renderer/attributedstring/TextAttributes.cpp b/ReactCommon/react/renderer/attributedstring/TextAttributes.cpp index 741dcc85d4647f..26925db4f49ee1 100644 --- a/ReactCommon/react/renderer/attributedstring/TextAttributes.cpp +++ b/ReactCommon/react/renderer/attributedstring/TextAttributes.cpp @@ -100,6 +100,10 @@ void TextAttributes::apply(TextAttributes textAttributes) { : accessibilityRole; accessibilityUnit = !textAttributes.accessibilityUnit.empty() ? textAttributes.accessibilityUnit : accessibilityUnit; + accessibilityHours = !(textAttributes.accessibilityHours == 0) ? textAttributes.accessibilityHours + : accessibilityHours; + accessibilityMinutes = !(textAttributes.accessibilityMinutes == 0) ? textAttributes.accessibilityMinutes + : accessibilityMinutes; } #pragma mark - Operators @@ -125,6 +129,8 @@ bool TextAttributes::operator==(const TextAttributes &rhs) const { layoutDirection, accessibilityRole, accessibilityUnit, + accessibilityHours, + accessibilityMinutes, textTransform) == std::tie( rhs.foregroundColor, @@ -146,6 +152,8 @@ bool TextAttributes::operator==(const TextAttributes &rhs) const { rhs.layoutDirection, rhs.accessibilityRole, rhs.accessibilityUnit, + rhs.accessibilityHours, + rhs.accessibilityMinutes, rhs.textTransform) && floatEquality(opacity, rhs.opacity) && floatEquality(fontSize, rhs.fontSize) && diff --git a/ReactCommon/react/renderer/attributedstring/TextAttributes.h b/ReactCommon/react/renderer/attributedstring/TextAttributes.h index 017e2d38e16ba9..767f25cedef4ab 100644 --- a/ReactCommon/react/renderer/attributedstring/TextAttributes.h +++ b/ReactCommon/react/renderer/attributedstring/TextAttributes.h @@ -80,6 +80,8 @@ class TextAttributes : public DebugStringConvertible { std::optional layoutDirection{}; std::optional accessibilityRole{}; std::string accessibilityUnit{}; + int accessibilityHours{}; + int accessibilityMinutes{}; #pragma mark - Operations @@ -133,7 +135,9 @@ struct hash { textAttributes.isHighlighted, textAttributes.layoutDirection, textAttributes.accessibilityRole, - textAttributes.accessibilityUnit); + textAttributes.accessibilityUnit, + textAttributes.accessibilityHours, + textAttributes.accessibilityMinutes); } }; } // namespace std diff --git a/ReactCommon/react/renderer/attributedstring/conversions.h b/ReactCommon/react/renderer/attributedstring/conversions.h index 89451afb84c2c7..91dcf44407a283 100644 --- a/ReactCommon/react/renderer/attributedstring/conversions.h +++ b/ReactCommon/react/renderer/attributedstring/conversions.h @@ -1013,6 +1013,14 @@ inline folly::dynamic toDynamic(const TextAttributes &textAttributes) { _textAttributes( "accessibilityUnit", textAttributes.accessibilityUnit); } + if (!(textAttributes.accessibilityHours == 0)) { + _textAttributes( + "accessibilityHours", textAttributes.accessibilityHours); + } + if (!(textAttributes.accessibilityMinutes == 0)) { + _textAttributes( + "accessibilityMinutes", textAttributes.accessibilityMinutes); + } return _textAttributes; } @@ -1088,6 +1096,8 @@ constexpr static MapBuffer::Key TA_KEY_LAYOUT_DIRECTION = 21; constexpr static MapBuffer::Key TA_KEY_ACCESSIBILITY_ROLE = 22; constexpr static MapBuffer::Key TA_KEY_LINE_BREAK_STRATEGY = 23; constexpr static MapBuffer::Key TA_KEY_ACCESSIBILITY_UNIT = 47; +constexpr static MapBuffer::Key TA_KEY_ACCESSIBILITY_HOURS = 48; +constexpr static MapBuffer::Key TA_KEY_ACCESSIBILITY_MINUTES = 49; // constants for ParagraphAttributes serialization constexpr static MapBuffer::Key PA_KEY_MAX_NUMBER_OF_LINES = 0; @@ -1240,6 +1250,16 @@ inline MapBuffer toMapBuffer(const TextAttributes &textAttributes) { builder.putString( TA_KEY_ACCESSIBILITY_UNIT, textAttributes.accessibilityUnit); } + if (!(textAttributes.accessibilityHours == 0)) { + + builder.putInt( + TA_KEY_ACCESSIBILITY_HOURS, textAttributes.accessibilityHours); + } + if (!(textAttributes.accessibilityMinutes == 0)) { + + builder.putInt( + TA_KEY_ACCESSIBILITY_MINUTES, textAttributes.accessibilityMinutes); + } return builder.build(); } diff --git a/ReactCommon/react/renderer/components/text/BaseTextProps.cpp b/ReactCommon/react/renderer/components/text/BaseTextProps.cpp index e1bac7373c955e..eca8825010e530 100644 --- a/ReactCommon/react/renderer/components/text/BaseTextProps.cpp +++ b/ReactCommon/react/renderer/components/text/BaseTextProps.cpp @@ -183,6 +183,18 @@ static TextAttributes convertRawProp( "accessibilityUnit", sourceTextAttributes.accessibilityUnit, defaultTextAttributes.accessibilityUnit); + textAttributes.accessibilityHours = convertRawProp( + context, + rawProps, + "accessibilityHours", + sourceTextAttributes.accessibilityHours, + defaultTextAttributes.accessibilityHours); + textAttributes.accessibilityMinutes = convertRawProp( + context, + rawProps, + "accessibilityMinutes", + sourceTextAttributes.accessibilityMinutes, + defaultTextAttributes.accessibilityMinutes); // Color (accessed in this order by ViewProps) textAttributes.opacity = convertRawProp( @@ -300,6 +312,18 @@ void BaseTextProps::setProp( textAttributes, accessibilityUnit, "accessibilityUnit"); + REBUILD_FIELD_SWITCH_CASE( + defaults, + value, + textAttributes, + accessibilityHours, + "accessibilityHours"); + REBUILD_FIELD_SWITCH_CASE( + defaults, + value, + textAttributes, + accessibilityMinutes, + "accessibilityMinutes"); REBUILD_FIELD_SWITCH_CASE( defaults, value, textAttributes, opacity, "opacity"); REBUILD_FIELD_SWITCH_CASE( diff --git a/ReactCommon/react/renderer/components/view/AccessibilityProps.cpp b/ReactCommon/react/renderer/components/view/AccessibilityProps.cpp index 80f0187564e20e..932e5d8b65b2cb 100644 --- a/ReactCommon/react/renderer/components/view/AccessibilityProps.cpp +++ b/ReactCommon/react/renderer/components/view/AccessibilityProps.cpp @@ -45,6 +45,24 @@ AccessibilityProps::AccessibilityProps( "accessibilityUnit", sourceProps.accessibilityUnit, {})), + accessibilityHours( + CoreFeatures::enablePropIteratorSetter + ? sourceProps.accessibilityHours + : convertRawProp( + context, + rawProps, + "accessibilityHours", + sourceProps.accessibilityHours, + {})), + accessibilityMinutes( + CoreFeatures::enablePropIteratorSetter + ? sourceProps.accessibilityMinutes + : convertRawProp( + context, + rawProps, + "accessibilityMinutes", + sourceProps.accessibilityMinutes, + {})), accessibilityLabel( CoreFeatures::enablePropIteratorSetter ? sourceProps.accessibilityLabel @@ -221,6 +239,8 @@ void AccessibilityProps::setProp( RAW_SET_PROP_SWITCH_CASE_BASIC(accessible, false); RAW_SET_PROP_SWITCH_CASE_BASIC(accessibilityState, {}); RAW_SET_PROP_SWITCH_CASE_BASIC(accessibilityUnit, {}); + RAW_SET_PROP_SWITCH_CASE_BASIC(accessibilityHours, {}); + RAW_SET_PROP_SWITCH_CASE_BASIC(accessibilityMinutes, {}); RAW_SET_PROP_SWITCH_CASE_BASIC(accessibilityLabel, std::string{""}); RAW_SET_PROP_SWITCH_CASE_BASIC(accessibilityLabelledBy, {}); RAW_SET_PROP_SWITCH_CASE_BASIC(accessibilityHint, std::string{""}); diff --git a/ReactCommon/react/renderer/components/view/AccessibilityProps.h b/ReactCommon/react/renderer/components/view/AccessibilityProps.h index 387245325f24ab..e7ca0df795c835 100644 --- a/ReactCommon/react/renderer/components/view/AccessibilityProps.h +++ b/ReactCommon/react/renderer/components/view/AccessibilityProps.h @@ -40,6 +40,8 @@ class AccessibilityProps { bool accessible{false}; AccessibilityState accessibilityState; AccessibilityUnit accessibilityUnit; + int accessibilityHours; + int accessibilityMinutes; std::string accessibilityLabel{""}; AccessibilityLabelledBy accessibilityLabelledBy{}; AccessibilityLiveRegion accessibilityLiveRegion{ From e7ded75e59857e488ea51e171b2c559913d1e209 Mon Sep 17 00:00:00 2001 From: fabriziobertoglio1987 Date: Mon, 14 Nov 2022 21:04:15 +0100 Subject: [PATCH 4/6] adding js type draft --- Libraries/Components/View/ReactNativeViewAttributes.js | 2 ++ Libraries/Components/View/View.js | 2 ++ Libraries/Components/View/ViewAccessibility.d.ts | 2 ++ Libraries/Components/View/ViewPropTypes.js | 2 ++ Libraries/NativeComponent/BaseViewConfig.android.js | 2 ++ Libraries/NativeComponent/BaseViewConfig.ios.js | 2 ++ Libraries/Text/Text.js | 4 ++++ 7 files changed, 16 insertions(+) diff --git a/Libraries/Components/View/ReactNativeViewAttributes.js b/Libraries/Components/View/ReactNativeViewAttributes.js index 90bd5ff4d13810..411b576269e959 100644 --- a/Libraries/Components/View/ReactNativeViewAttributes.js +++ b/Libraries/Components/View/ReactNativeViewAttributes.js @@ -20,6 +20,8 @@ const UIView = { accessibilityRole: true, accessibilityState: true, accessibilityUnit: true, + accessibilityHours: true, + accessibilityMinutes: true, accessibilityValue: true, accessibilityHint: true, accessibilityLanguage: true, diff --git a/Libraries/Components/View/View.js b/Libraries/Components/View/View.js index 6aaeb1e99282e3..b67094d45cc087 100644 --- a/Libraries/Components/View/View.js +++ b/Libraries/Components/View/View.js @@ -38,6 +38,8 @@ const View: React.AbstractComponent< accessibilityRole, accessibilityState, accessibilityUnit, + accessibilityHours, + accessibilityMinutes, accessibilityValue, 'aria-busy': ariaBusy, 'aria-checked': ariaChecked, diff --git a/Libraries/Components/View/ViewAccessibility.d.ts b/Libraries/Components/View/ViewAccessibility.d.ts index 626abcfed2567d..bef261bee887b5 100644 --- a/Libraries/Components/View/ViewAccessibility.d.ts +++ b/Libraries/Components/View/ViewAccessibility.d.ts @@ -47,6 +47,8 @@ export interface AccessibilityProps */ accessibilityState?: AccessibilityState | undefined; accessibilityUnit?: AccessibilityUnit | undefined; + accessibilityHours?: number | undefined; + accessibilityMinutes?: number | undefined; /** * alias for accessibilityState diff --git a/Libraries/Components/View/ViewPropTypes.js b/Libraries/Components/View/ViewPropTypes.js index bec5e2aa998adb..8c274034d8f7a7 100644 --- a/Libraries/Components/View/ViewPropTypes.js +++ b/Libraries/Components/View/ViewPropTypes.js @@ -503,6 +503,8 @@ export type ViewProps = $ReadOnly<{| */ accessibilityState?: ?AccessibilityState, accessibilityUnit?: ?Stringish, + accessibilityHours?: ?number, + accessibilityMinutes?: ?number, accessibilityValue?: ?AccessibilityValue, /** diff --git a/Libraries/NativeComponent/BaseViewConfig.android.js b/Libraries/NativeComponent/BaseViewConfig.android.js index f9f0525280fe9b..cf30ffa581302c 100644 --- a/Libraries/NativeComponent/BaseViewConfig.android.js +++ b/Libraries/NativeComponent/BaseViewConfig.android.js @@ -177,6 +177,8 @@ const validAttributesForNonEventProps = { accessibilityCollectionItem: true, accessibilityState: true, accessibilityUnit: true, + accessibilityHours: true, + accessibilityMinutes: true, accessibilityActions: true, accessibilityValue: true, importantForAccessibility: true, diff --git a/Libraries/NativeComponent/BaseViewConfig.ios.js b/Libraries/NativeComponent/BaseViewConfig.ios.js index 0fe4d08d094018..3380670a4ca419 100644 --- a/Libraries/NativeComponent/BaseViewConfig.ios.js +++ b/Libraries/NativeComponent/BaseViewConfig.ios.js @@ -190,6 +190,8 @@ const validAttributesForNonEventProps = { accessibilityRole: true, accessibilityState: true, accessibilityUnit: false, + accessibilityHours: false, + accessibilityMinutes: false, nativeID: true, pointerEvents: true, removeClippedSubviews: true, diff --git a/Libraries/Text/Text.js b/Libraries/Text/Text.js index 4a42219d75530b..4bef86162f15cf 100644 --- a/Libraries/Text/Text.js +++ b/Libraries/Text/Text.js @@ -225,6 +225,8 @@ const Text: React.AbstractComponent< {...restProps} accessibilityState={_accessibilityState} accessibilityUnit={props.accessibilityUnit} + accessibilityHours={props.accessibilityHours} + accessibilityMinutes={props.accessibilityMinutes} {...eventHandlersForText} accessibilityLabel={ariaLabel ?? accessibilityLabel} accessibilityRole={ @@ -245,6 +247,8 @@ const Text: React.AbstractComponent< {...restProps} {...eventHandlersForText} accessibilityUnit={props.accessibilityUnit} + accessibilityHours={props.accessibilityHours} + accessibilityMinutes={props.accessibilityMinutes} disabled={_disabled} selectable={_selectable} accessible={ From 2bedebc9918b60c61f507ffea2f93e8c4b80d137 Mon Sep 17 00:00:00 2001 From: fabriziobertoglio1987 Date: Mon, 14 Nov 2022 21:05:12 +0100 Subject: [PATCH 5/6] mapbuffer .h configs --- .../renderer/components/view/AccessibilityPropsMapBuffer.h | 2 ++ .../components/view/accessibilityPropsConversions.h | 7 +++++++ 2 files changed, 9 insertions(+) diff --git a/ReactCommon/react/renderer/components/view/AccessibilityPropsMapBuffer.h b/ReactCommon/react/renderer/components/view/AccessibilityPropsMapBuffer.h index f1d2a92fff8fd4..54f7fd1336b6f2 100644 --- a/ReactCommon/react/renderer/components/view/AccessibilityPropsMapBuffer.h +++ b/ReactCommon/react/renderer/components/view/AccessibilityPropsMapBuffer.h @@ -24,6 +24,8 @@ constexpr MapBuffer::Key AP_ACCESSIBILITY_VALUE = 7; constexpr MapBuffer::Key AP_ACCESSIBLE = 8; constexpr MapBuffer::Key AP_IMPORTANT_FOR_ACCESSIBILITY = 19; constexpr MapBuffer::Key AP_ACCESSIBILITY_UNIT = 47; +constexpr MapBuffer::Key AP_ACCESSIBILITY_HOURS = 48; +constexpr MapBuffer::Key AP_ACCESSIBILITY_MINUTES = 49; // AccessibilityAction values constexpr MapBuffer::Key ACCESSIBILITY_ACTION_NAME = 0; diff --git a/ReactCommon/react/renderer/components/view/accessibilityPropsConversions.h b/ReactCommon/react/renderer/components/view/accessibilityPropsConversions.h index 6314b89768603f..a15bce9957e7bc 100644 --- a/ReactCommon/react/renderer/components/view/accessibilityPropsConversions.h +++ b/ReactCommon/react/renderer/components/view/accessibilityPropsConversions.h @@ -191,6 +191,13 @@ inline void fromRawValue( */ } +inline void fromRawValue( + const PropsParserContext &context, + const RawValue &value, + int &result) { + result = 9; +} + inline std::string toString( const AccessibilityUnit &accessibilityUnit) { return "default string"; From b7332eecfdfe353401d494674561240e3f53c848 Mon Sep 17 00:00:00 2001 From: fabriziobertoglio1987 Date: Mon, 14 Nov 2022 21:15:55 +0100 Subject: [PATCH 6/6] using string for accessibilityHours --- .../renderer/attributedstring/TextAttributes.cpp | 6 ++++-- .../react/renderer/attributedstring/TextAttributes.h | 4 ++-- .../react/renderer/attributedstring/conversions.h | 12 ++++++------ .../renderer/components/view/AccessibilityProps.h | 4 ++-- 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/ReactCommon/react/renderer/attributedstring/TextAttributes.cpp b/ReactCommon/react/renderer/attributedstring/TextAttributes.cpp index 26925db4f49ee1..63dc72ee8a2dca 100644 --- a/ReactCommon/react/renderer/attributedstring/TextAttributes.cpp +++ b/ReactCommon/react/renderer/attributedstring/TextAttributes.cpp @@ -100,9 +100,9 @@ void TextAttributes::apply(TextAttributes textAttributes) { : accessibilityRole; accessibilityUnit = !textAttributes.accessibilityUnit.empty() ? textAttributes.accessibilityUnit : accessibilityUnit; - accessibilityHours = !(textAttributes.accessibilityHours == 0) ? textAttributes.accessibilityHours + accessibilityHours = !textAttributes.accessibilityHours.empty() ? textAttributes.accessibilityHours : accessibilityHours; - accessibilityMinutes = !(textAttributes.accessibilityMinutes == 0) ? textAttributes.accessibilityMinutes + accessibilityMinutes = !textAttributes.accessibilityMinutes.empty() ? textAttributes.accessibilityMinutes : accessibilityMinutes; } @@ -222,6 +222,8 @@ SharedDebugStringConvertibleList TextAttributes::getDebugProps() const { debugStringConvertibleItem("layoutDirection", layoutDirection), debugStringConvertibleItem("accessibilityRole", accessibilityRole), debugStringConvertibleItem("accessibilityUnit", accessibilityUnit), + debugStringConvertibleItem("accessibilityHours", accessibilityHours), + debugStringConvertibleItem("accessibilityMinutes", accessibilityMinutes), }; } #endif diff --git a/ReactCommon/react/renderer/attributedstring/TextAttributes.h b/ReactCommon/react/renderer/attributedstring/TextAttributes.h index 767f25cedef4ab..0eca094fad4876 100644 --- a/ReactCommon/react/renderer/attributedstring/TextAttributes.h +++ b/ReactCommon/react/renderer/attributedstring/TextAttributes.h @@ -80,8 +80,8 @@ class TextAttributes : public DebugStringConvertible { std::optional layoutDirection{}; std::optional accessibilityRole{}; std::string accessibilityUnit{}; - int accessibilityHours{}; - int accessibilityMinutes{}; + std::string accessibilityHours{}; + std::string accessibilityMinutes{}; #pragma mark - Operations diff --git a/ReactCommon/react/renderer/attributedstring/conversions.h b/ReactCommon/react/renderer/attributedstring/conversions.h index 91dcf44407a283..acbc5a9d254de5 100644 --- a/ReactCommon/react/renderer/attributedstring/conversions.h +++ b/ReactCommon/react/renderer/attributedstring/conversions.h @@ -1013,11 +1013,11 @@ inline folly::dynamic toDynamic(const TextAttributes &textAttributes) { _textAttributes( "accessibilityUnit", textAttributes.accessibilityUnit); } - if (!(textAttributes.accessibilityHours == 0)) { + if (!textAttributes.accessibilityHours.empty()) { _textAttributes( "accessibilityHours", textAttributes.accessibilityHours); } - if (!(textAttributes.accessibilityMinutes == 0)) { + if (!textAttributes.accessibilityMinutes.empty()) { _textAttributes( "accessibilityMinutes", textAttributes.accessibilityMinutes); } @@ -1250,14 +1250,14 @@ inline MapBuffer toMapBuffer(const TextAttributes &textAttributes) { builder.putString( TA_KEY_ACCESSIBILITY_UNIT, textAttributes.accessibilityUnit); } - if (!(textAttributes.accessibilityHours == 0)) { + if (!textAttributes.accessibilityHours.empty()) { - builder.putInt( + builder.putString( TA_KEY_ACCESSIBILITY_HOURS, textAttributes.accessibilityHours); } - if (!(textAttributes.accessibilityMinutes == 0)) { + if (!textAttributes.accessibilityMinutes.empty()) { - builder.putInt( + builder.putString( TA_KEY_ACCESSIBILITY_MINUTES, textAttributes.accessibilityMinutes); } return builder.build(); diff --git a/ReactCommon/react/renderer/components/view/AccessibilityProps.h b/ReactCommon/react/renderer/components/view/AccessibilityProps.h index e7ca0df795c835..106fb6ae092c71 100644 --- a/ReactCommon/react/renderer/components/view/AccessibilityProps.h +++ b/ReactCommon/react/renderer/components/view/AccessibilityProps.h @@ -40,8 +40,8 @@ class AccessibilityProps { bool accessible{false}; AccessibilityState accessibilityState; AccessibilityUnit accessibilityUnit; - int accessibilityHours; - int accessibilityMinutes; + AccessibilityUnit accessibilityHours; + AccessibilityUnit accessibilityMinutes; std::string accessibilityLabel{""}; AccessibilityLabelledBy accessibilityLabelledBy{}; AccessibilityLiveRegion accessibilityLiveRegion{