microsoft / react-native-windows

A framework for building native Windows apps with React.
https://microsoft.github.io/react-native-windows/
Other
16.3k stars 1.14k forks source link

Text component parity for Fabric #11143

Closed jonthysell closed 5 months ago

jonthysell commented 1 year ago

This task captures the work to reach parity between Paper and Fabric for the native code for the <Text> component.

ComponentView

  1. [x] Create the ParagraphComponentView (PCV)
  2. [x] Register the ComponentView in the ComponentViewRegistry

APIs

See latest spec at https://reactnative.dev/docs/text.

38/51

Text Props

API Platform RNW Paper RNW Fabric Notes
  • [x] accessibilityHint
FEVM, No CBCV+CDAP Fabric: #12036
  • [x] accessibilityLanguage
iOS No No?
  • [x] accessibilityLabel
FEVM, No CBCV+CDAP Fabric: #11674
  • [x] accessibilityRole
TVM+FEVM, No CDAP Fabric: #11412
  • [ ] accessibilityState
FEVM, No CBCV+CDAP Fabric: Partial impl in #11674
  • [ ] accessibilityActions
FEVM, No Pri 2
  • [ ] onAccessibilityAction
VMB Pri 2
  • [x] accessible
FEVM, No CBCV+CDAP Fabric: #11719
  • [x] adjustsFontSizeToFit
No No?
  • [ ] allowFontScaling
TVM, No Pri 1
  • [x] android_hyphenationFrequency
Android No No?
  • [x] dataDetectorType
Android No No?
  • [x] disabled
Android No No?
  • [ ] ellipsizeMode
TVM, No Pri 1
  • [x] maxFontSizeMultiplier
No No?
  • [x] minimumFontScale
iOS No No?
  • [x] nativeID
No No?
  • [x] numberOfLines
TVM, No Pri 1
  • [x] onLayout
VMB Pri 1
  • [x] onLongPress
No No?
  • [x] onMoveShouldSetResponder
JS JS
  • [x] onPress
VMB Pri 1
  • [x] onResponderGrant
JS JS
  • [x] onResponderMove
JS JS
  • [x] onResponderRelease
JS JS
  • [x] onResponderTerminate
JS JS
  • [x] onResponderTerminationRequest
JS JS
  • [x] onStartShouldSetResponderCapture
JS JS
  • [x] onTextLayout
No No?
  • [x] pressRetentionOffset
No No?
  • [ ] selectable
TVM, No Pri 1
  • [x] selectionColor
Android TVM, No No?
  • [x] style
See Below See Below Supports Text Style Props, View Style Props, Layout Props, Shadow Props
  • [x] suppressHighlighting
iOS No No?
  • [x] testID
FEVM, No CDAP Fabric: #11412
  • [x] textBreakStrategy
Android No No?
  • [ ] accessibilityPosInSet
Windows FEVM, No Pri 2
  • [ ] accessibilitySetSize
Windows FEVM, No Pri 2
  • [x] keyDownEvents
Windows VMB CBCV Fabric: #12146
  • [x] keyUpEvents
Windows VMB CBCV Fabric: #12146
  • [ ] onBlur
Windows VMB Pri 1 Paper: Event is registered, but maybe never fired?
  • [ ] onFocus
Windows VMB Pri 1 Paper: Event is registered, but maybe never fired?
  • [x] onKeyDown
Windows VMB CBCV+CEH Fabric: #12146
  • [ ] onKeyDownCapture
Windows VMB Pri 1
  • [x] onKeyUp
Windows VMB CBCV+CEH Fabric: #12146
  • [ ] onKeyUpCapture
Windows VMB Pri 1
  • [x] onMouseEnter
Windows VMB, VTVM+VMB CEH
  • [x] onMouseLeave
Windows VMB, VTVM+VMB CEH
  • [x] pointerEvents
Windows N/A PCV Fabric: This appears to be implemented though not a part of RN core?
  • [ ] tooltip
Windows FEVM, No Pri 1

18/20

Text Style Props

API Platform RNW Paper RNW Fabric Notes
  • [x] color
TVM, VTVM PCV
  • [x] fontFamily
TVM, VTVM TLM
  • [x] fontSize
TVM, VTVM TLM
  • [x] fontStyle
TVM, VTVM TLM
  • [x] fontWeight
TVM, VTVM TLM
  • [x] includeFontPadding
Android No No?
  • [x] fontVariant
No No?
  • [x] letterSpacing
TVM, VTVM Pri 1
  • [x] lineHeight
TVM Pri 1
  • [x] textAlign
TVM PCV
  • [x] textAlignVertical
Android No No?
  • [x] textDecorationColor
iOS No No?
  • [x] textDecorationLine
TVM, VTVM PCV
  • [x] textDecorationStyle
iOS No No?
  • [x] textShadowColor
No No?
  • [x] textShadowOffset
No No?
  • [x] textShadowRadius
No No?
  • [x] textTransform
TVM, VTVM Pri 1
  • [ ] writingDirection
FEVM, No Pri 1
  • [ ] characterSpacing
Windows TVM, VTVM Pri 1 Alias for letterSpacing?

29/29

View Style Props

API Platform RNW Paper RNW Fabric Notes
  • [x] backfaceVisibility
No CBCV+PCV Fabric: #12115 Impl in CBCV and CV must call updateTransformProps
  • [x] backgroundColor
TVM, VTVM PCV Fabric: #11335
  • [x] borderBottomColor
No CBCV+PCV Fabric: #11323, Border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • [x] borderBottomEndRadius
No CBCV+PCV Fabric: #11323, Border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • [x] borderBottomLeftRadius
No CBCV+PCV Fabric: #11323, Border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • [x] borderBottomRightRadius
No CBCV+PCV Fabric: #11323, Border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • [x] borderBottomStartRadius
No CBCV+PCV Fabric: #11323, Border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • [x] borderBottomWidth
NUIM CBCV+PCV Fabric: #11323, RN Core resolves LayoutMetrics, but border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • [x] borderColor
No CBCV+PCV Fabric: #11323, Border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • [x] borderEndColor
No CBCV+PCV Fabric: #11323, Border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • [x] borderEndWidth
NUIM CBCV+PCV Fabric: #11323, RN Core resolves LayoutMetrics, but border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • [x] borderLeftColor
No CBCV+PCV Fabric: #11323, Border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • [x] borderLeftWidth
NUIM CBCV+PCV Fabric: #11323, RN Core resolves LayoutMetrics, but border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • [x] borderRadius
No CBCV+PCV Fabric: #11323, Border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • [x] borderRightColor
No CBCV+PCV Fabric: #11323, Border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • [x] borderRightWidth
NUIM CBCV+PCV Fabric: #11323, RN Core resolves LayoutMetrics, but border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • [x] borderStartColor
No CBCV+PCV Fabric: #11323, Border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • [x] borderStartWidth
NUIM CBCV+PCV Fabric: #11323, RN Core resolves LayoutMetrics, but border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
No CBCV Fabric: Border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • [x] borderTopColor
No CBCV+PCV Fabric: #11323, Border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • [x] borderTopEndRadius
No CBCV+PCV Fabric: #11323, Border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • [x] borderTopLeftRadius
No CBCV+PCV Fabric: #11323, Border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • [x] borderTopRightRadius
No CBCV+PCV Fabric: #11323, Border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • [x] borderTopStartRadius
No CBCV+PCV Fabric: #11323, Border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • [x] borderTopWidth
NUIM CBCV+PCV Fabric: #11323, RN Core resolves LayoutMetrics, but border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • [x] borderWidth
NUIM CBCV+PCV Fabric: #11323, RN Core resolves LayoutMetrics, but border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • [x] elevation
Android No No?
  • [x] opacity
FEVM, No PCV
  • [x] transform
FEVM, No CBCV+PCV Fabric: #12115 Impl in CBCV and CV must call updateTransformProps

52/53

Layout Props

API Platform RNW Paper RNW Fabric Notes
  • [x] alignContent
NUIM CBCV+PCV Fabric: RN Core resolves LayoutMetrics
  • [x] alignItems
NUIM CBCV+PCV Fabric: RN Core resolves LayoutMetrics
  • [x] alignSelf
NUIM CBCV+PCV Fabric: RN Core resolves LayoutMetrics
  • [x] aspectRatio
NUIM CBCV+PCV Fabric: RN Core resolves LayoutMetrics
  • [x] borderBottomWidth
NUIM CBCV+PCV Fabric: #11323, RN Core resolves LayoutMetrics, but border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • [x] borderEndWidth
NUIM CBCV+PCV Fabric: #11323, RN Core resolves LayoutMetrics, but border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • [x] borderLeftWidth
NUIM CBCV+PCV Fabric: #11323, RN Core resolves LayoutMetrics, but border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • [x] borderRightWidth
NUIM CBCV+PCV Fabric: #11323, RN Core resolves LayoutMetrics, but border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • [x] borderStartWidth
NUIM CBCV+PCV Fabric: #11323, RN Core resolves LayoutMetrics, but border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • [x] borderTopWidth
NUIM CBCV+PCV Fabric: #11323, RN Core resolves LayoutMetrics, but border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • [x] borderWidth
NUIM CBCV+PCV Fabric: #11323, RN Core resolves LayoutMetrics, but border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • [x] bottom
NUIM CBCV+PCV Fabric: RN Core resolves LayoutMetrics
  • [x] direction
FEVM+NUIM, NUIM CBCV+PCV Fabric: RN Core resolves LayoutMetrics
  • [x] display
FEVM+NUIM, NUIM PCV
  • [x] end
NUIM CBCV+PCV Fabric: RN Core resolves LayoutMetrics
  • [x] flex
NUIM CBCV+PCV Fabric: RN Core resolves LayoutMetrics
  • [x] flexBasis
NUIM CBCV+PCV Fabric: RN Core resolves LayoutMetrics
  • [x] flexDirection
NUIM CBCV+PCV Fabric: RN Core resolves LayoutMetrics
  • [x] flexGrow
NUIM CBCV+PCV Fabric: RN Core resolves LayoutMetrics
  • [x] flexShrink
NUIM CBCV+PCV Fabric: RN Core resolves LayoutMetrics
  • [x] flexWrap
NUIM CBCV+PCV Fabric: RN Core resolves LayoutMetrics
  • [x] height
VMB+NUIM CBCV+PCV Fabric: RN Core resolves LayoutMetrics
  • [x] justifyContent
NUIM CBCV+PCV Fabric: RN Core resolves LayoutMetrics
  • [x] left
VMB+NUIM CBCV+PCV Fabric: RN Core resolves LayoutMetrics
  • [x] margin
NUIM CBCV+PCV Fabric: RN Core resolves LayoutMetrics
  • [x] marginBottom
NUIM CBCV+PCV Fabric: RN Core resolves LayoutMetrics
  • [x] marginEnd
NUIM CBCV+PCV Fabric: RN Core resolves LayoutMetrics
  • [x] marginHorizontal
NUIM CBCV+PCV Fabric: RN Core resolves LayoutMetrics
  • [x] marginLeft
NUIM CBCV+PCV Fabric: RN Core resolves LayoutMetrics
  • [x] marginRight
NUIM CBCV+PCV Fabric: RN Core resolves LayoutMetrics
  • [x] marginStart
NUIM CBCV+PCV Fabric: RN Core resolves LayoutMetrics
  • [x] marginTop
NUIM CBCV+PCV Fabric: RN Core resolves LayoutMetrics
  • [x] marginVertical
NUIM CBCV+PCV Fabric: RN Core resolves LayoutMetrics
  • [x] maxHeight
NUIM CBCV+PCV Fabric: RN Core resolves LayoutMetrics
  • [x] maxWidth
NUIM CBCV+PCV Fabric: RN Core resolves LayoutMetrics
  • [x] minHeight
NUIM CBCV+PCV Fabric: RN Core resolves LayoutMetrics
  • [x] minWidth
NUIM CBCV+PCV Fabric: RN Core resolves LayoutMetrics
  • [ ] overflow
NUIM Pri 1
  • [x] padding
NUIM CBCV+PCV Fabric: RN Core resolves LayoutMetrics
  • [x] paddingBottom
NUIM CBCV+PCV Fabric: RN Core resolves LayoutMetrics
  • [x] paddingEnd
NUIM CBCV+PCV Fabric: RN Core resolves LayoutMetrics
  • [x] paddingHorizontal
NUIM CBCV+PCV Fabric: RN Core resolves LayoutMetrics
  • [x] paddingLeft
NUIM CBCV+PCV Fabric: RN Core resolves LayoutMetrics
  • [x] paddingRight
NUIM CBCV+PCV Fabric: RN Core resolves LayoutMetrics
  • [x] paddingStart
NUIM CBCV+PCV Fabric: RN Core resolves LayoutMetrics
  • [x] paddingTop
NUIM CBCV+PCV Fabric: RN Core resolves LayoutMetrics
  • [x] paddingVertical
NUIM CBCV+PCV Fabric: RN Core resolves LayoutMetrics
  • [x] position
NUIM CBCV+PCV Fabric: RN Core resolves LayoutMetrics
  • [x] right
NUIM CBCV+PCV Fabric: RN Core resolves LayoutMetrics
  • [x] start
NUIM CBCV+PCV Fabric: RN Core resolves LayoutMetrics
  • [x] top
VMB+NUIM CBCV+PCV Fabric: RN Core resolves LayoutMetrics
  • [x] width
VMB+NUIM CBCV+PCV Fabric: RN Core resolves LayoutMetrics
  • [x] zIndex
FEVM, No Pri 1

4/4

Shadow Props

API Platform RNW Paper RNW Fabric Notes
  • [x] shadowColor
No CBCV+PCV Fabric: #12108, Shadow props impl in CBCV and CV must call updateShadowProps
  • [x] shadowOffset
iOS No CBCV+PCV Fabric: #12108, Shadow props impl in CBCV and CV must call updateShadowProps
  • [x] shadowOpacity
iOS No CBCV+PCV Fabric: #12108, Shadow props impl in CBCV and CV must call updateShadowProps
  • [x] shadowRadius
iOS No CBCV+PCV Fabric: #12108, Shadow props impl in CBCV and CV must call updateShadowProps

Glossary

See the Glossary to decode the abbreviations above and/or the RNW Fabric Inventory.xlsx.

jonthysell commented 5 months ago

Closing this deliverable, all remaining component properties required for parity are now being tracked by individual issues.