@gjsify/react-native 0.46.0 → 0.48.0
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/PROPS.md +319 -92
- package/README.md +94 -0
- package/SUPPORT.md +14 -9
- package/lib/esm/accessibility.js +1 -0
- package/lib/esm/apis/alert.js +1 -1
- package/lib/esm/app-registry.js +1 -1
- package/lib/esm/child-facts.js +1 -0
- package/lib/esm/components.js +1 -1
- package/lib/esm/generated/own-exports.js +1 -1
- package/lib/esm/generated/unsupported-react-native.js +1 -1
- package/lib/esm/index.js +1 -1
- package/lib/esm/lists/controller.js +1 -1
- package/lib/esm/primitives/accessibility.js +1 -0
- package/lib/esm/primitives/answers.js +1 -1
- package/lib/esm/primitives/defaults.js +1 -1
- package/lib/esm/primitives/errors.js +1 -1
- package/lib/esm/primitives/index.js +1 -1
- package/lib/esm/primitives/resolve.js +1 -1
- package/lib/esm/primitives/style.js +1 -1
- package/lib/esm/primitives/table.js +1 -1
- package/lib/esm/prop-table.js +1 -1
- package/lib/esm/router/chrome.js +1 -0
- package/lib/esm/router/navigation.js +1 -1
- package/lib/esm/router/per-route-cache.js +1 -0
- package/lib/esm/router/stack.js +1 -1
- package/lib/esm/router/tabs.js +1 -1
- package/lib/esm/solid/index.js +1 -1
- package/lib/esm/support-table.js +1 -1
- package/lib/esm/window-chrome.js +1 -0
- package/lib/types/accessibility.d.ts +10 -0
- package/lib/types/app-registry.d.ts +95 -5
- package/lib/types/app-registry.spec.d.ts +2 -0
- package/lib/types/child-facts.d.ts +45 -0
- package/lib/types/child-facts.spec.d.ts +2 -0
- package/lib/types/components.d.ts +34 -1
- package/lib/types/generated/unsupported-react-native.d.ts +8 -4
- package/lib/types/index.d.ts +3 -3
- package/lib/types/primitives/accessibility.d.ts +112 -0
- package/lib/types/primitives/answers.d.ts +18 -0
- package/lib/types/primitives/errors.d.ts +9 -0
- package/lib/types/primitives/resolve.d.ts +10 -0
- package/lib/types/primitives/style.d.ts +23 -0
- package/lib/types/primitives/table.d.ts +13 -1
- package/lib/types/prop-table.d.ts +29 -0
- package/lib/types/router/chrome.d.ts +106 -0
- package/lib/types/router/errors.d.ts +3 -1
- package/lib/types/router/per-route-cache.d.ts +21 -0
- package/lib/types/router/stack.d.ts +6 -1
- package/lib/types/solid/index.d.ts +2 -1
- package/lib/types/support-table.d.ts +1 -1
- package/lib/types/window-chrome.d.ts +39 -0
- package/package.json +7 -7
- package/react-native-surface.json +18 -9
package/PROPS.md
CHANGED
|
@@ -11,8 +11,13 @@ The **answer** column is `acceptsProp()`'s: `property`, `event`, `style`, `file`
|
|
|
11
11
|
`refused` throws a `PrimitiveError` at render time. A prop that appears in no row throws too,
|
|
12
12
|
naming the ones that are here.
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
A prop can be answered and still refuse some of its VALUES by name — `accessibilityRole` is
|
|
15
|
+
the one that does. Those rows name the refused values and the sentences follow the table.
|
|
16
|
+
|
|
17
|
+
Ask this from a test rather than reading it: `acceptsProp("Text", "onPress")` is `false`,
|
|
18
|
+
`explainProp("Text", "onPress")` is the sentence a render would have thrown, and
|
|
19
|
+
`explainPropValue("View", "accessibilityRole", "keyboardkey")` is the one it would have thrown
|
|
20
|
+
for that value (ADR 0039).
|
|
16
21
|
|
|
17
22
|
## `<View>`
|
|
18
23
|
|
|
@@ -20,30 +25,40 @@ widget `GtkBox` · takes no text child.
|
|
|
20
25
|
|
|
21
26
|
| prop | answer | GTK | why |
|
|
22
27
|
|---|---|---|---|
|
|
23
|
-
| `accessibilityHint` |
|
|
24
|
-
| `accessibilityLabel` |
|
|
28
|
+
| `accessibilityHint` | accessible | `Gtk.Accessible.update_property(): help-text` | — |
|
|
29
|
+
| `accessibilityLabel` | accessible | `Gtk.Accessible.update_property(): label` | — |
|
|
25
30
|
| `accessibilityLiveRegion` | refused | — | declares that a screen reader should speak this element when its CONTENT changes. GTK has the announcement — `Gtk.Accessible.announce(message, priority)` since 4.14 — but not the watch: it is an imperative call, and this element’s content is a SUBTREE, which GTK emits no signal for. `<Text>` answers this prop, because its content is one property (`Gtk.Label:label`) and so is both the moment and the message. Elsewhere, call `announce()` on the widget through a ref when you change the content |
|
|
26
|
-
| `accessibilityRole` |
|
|
27
|
-
| `accessibilityState` |
|
|
28
|
-
| `accessible` |
|
|
31
|
+
| `accessibilityRole` | property | `accessible-role` | refuses `drawerlayout`, `horizontalscrollview`, `keyboardkey`, `pager`, `scrollview`, `slidingdrawer`, `summary` — see below |
|
|
32
|
+
| `accessibilityState` | accessible | `busy → Gtk.Accessible.update_state(): busy`, `checked → Gtk.Accessible.update_state(): checked`, `disabled → Gtk.Accessible.update_state(): disabled`, `expanded → Gtk.Accessible.update_state(): expanded`, `selected → Gtk.Accessible.update_state(): selected` | — |
|
|
33
|
+
| `accessible` | ignored | — | asks for two things, and GTK already answers one: every GTK widget is in the accessibility tree, so “this element is an accessibility element” is the desktop default rather than an opt-in. The other thing it asks — merge my whole subtree into ONE accessible node, which is what `accessible={true}` does on iOS — GTK has no mechanism for, and a desktop screen reader navigates the widget tree it is given. To take an element OUT of that tree, set `accessibilityRole="none"`: it is the one prop that writes `Gtk.Accessible:accessible-role`, and two props writing one property is the silent-drop shape this table refuses by name |
|
|
29
34
|
| `id` | refused | — | would write `Gtk.Widget:name`, and so does `testID`. Two props for one property is the silent-drop shape the host refuses by name (`signalTaken`), so this layer picks one: use `testID` |
|
|
30
35
|
| `nativeID` | refused | — | would write `Gtk.Widget:name`, and so does `testID`. Two props for one property is the silent-drop shape the host refuses by name (`signalTaken`), so this layer picks one: use `testID` |
|
|
31
36
|
| `onLayout` | refused | — | GTK reports its allocation through `Gtk.Widget.vfunc_size_allocate`, a SUBCLASS override rather than a signal, so there is no handler to bind. `useWindowDimensions` (tier P2) is the window-level answer |
|
|
32
37
|
| `pointerEvents` | property | `can-target` | — |
|
|
33
38
|
| `testID` | property | `name` | — |
|
|
34
39
|
|
|
40
|
+
`accessibilityRole` is answered for every other value, and these are refused by name:
|
|
41
|
+
|
|
42
|
+
- `drawerlayout` — names Android’s DrawerLayout. The desktop pattern survives the component (`Adw.OverlaySplitView`), but it is a widget rather than a role — drop the prop and give the drawer an `accessibilityLabel`; React Native’s role list has no `navigation`, and the widget carries the rest
|
|
43
|
+
- `horizontalscrollview` — names an Android class, like `scrollview` — use `<ScrollView horizontal>` and drop the prop
|
|
44
|
+
- `keyboardkey` — describes a key of an on-screen keyboard, and neither GTK nor ARIA has a role for one — a desktop keyboard is the input method, not a widget in your tree. If you are building a keypad, the keys are `accessibilityRole="button"`; the container needs no role, because React Native has no spelling for ARIA’s `group` and a plain `<View>` is already the `generic` a screen reader walks through
|
|
45
|
+
- `pager` — names Android’s ViewPager. GTK’s counterpart is a `Gtk.Stack`, and the role a screen reader wants on it is `tablist` when it has visible switchers and nothing at all when it does not
|
|
46
|
+
- `scrollview` — names Android’s ScrollView class rather than a role, and this layer already answers the idea: `<ScrollView>` becomes a `Gtk.ScrolledWindow`, whose accessibility a screen reader reads from the widget itself. Drop the prop
|
|
47
|
+
- `slidingdrawer` — names a deprecated Android class — see `drawerlayout`
|
|
48
|
+
- `summary` — is an iOS trait for the one element VoiceOver reads first when an app launches, and GTK has no counterpart because a desktop screen reader announces the focused widget instead. Put the text in the window title, or carry it as `accessibilityLabel` on the element it summarises — React Native’s role list has no `status`, so there is no role to give it here
|
|
49
|
+
|
|
35
50
|
## `<Text>`
|
|
36
51
|
|
|
37
52
|
widget `GtkLabel` · a text child writes `label`.
|
|
38
53
|
|
|
39
54
|
| prop | answer | GTK | why |
|
|
40
55
|
|---|---|---|---|
|
|
41
|
-
| `accessibilityHint` |
|
|
42
|
-
| `accessibilityLabel` |
|
|
56
|
+
| `accessibilityHint` | accessible | `Gtk.Accessible.update_property(): help-text` | — |
|
|
57
|
+
| `accessibilityLabel` | accessible | `Gtk.Accessible.update_property(): label` | — |
|
|
43
58
|
| `accessibilityLiveRegion` | announcement | `notify::label`, `Gtk.Accessible.announce()` | — |
|
|
44
|
-
| `accessibilityRole` |
|
|
45
|
-
| `accessibilityState` |
|
|
46
|
-
| `accessible` |
|
|
59
|
+
| `accessibilityRole` | property | `accessible-role` | refuses `drawerlayout`, `horizontalscrollview`, `keyboardkey`, `pager`, `scrollview`, `slidingdrawer`, `summary` — see below |
|
|
60
|
+
| `accessibilityState` | accessible | `busy → Gtk.Accessible.update_state(): busy`, `checked → Gtk.Accessible.update_state(): checked`, `disabled → Gtk.Accessible.update_state(): disabled`, `expanded → Gtk.Accessible.update_state(): expanded`, `selected → Gtk.Accessible.update_state(): selected` | — |
|
|
61
|
+
| `accessible` | ignored | — | asks for two things, and GTK already answers one: every GTK widget is in the accessibility tree, so “this element is an accessibility element” is the desktop default rather than an opt-in. The other thing it asks — merge my whole subtree into ONE accessible node, which is what `accessible={true}` does on iOS — GTK has no mechanism for, and a desktop screen reader navigates the widget tree it is given. To take an element OUT of that tree, set `accessibilityRole="none"`: it is the one prop that writes `Gtk.Accessible:accessible-role`, and two props writing one property is the silent-drop shape this table refuses by name |
|
|
47
62
|
| `adjustsFontSizeToFit` | refused | — | GTK has no shrink-to-fit text; a label ellipsizes or wraps. Use `numberOfLines` with `ellipsizeMode` |
|
|
48
63
|
| `allowFontScaling` | ignored | — | text scaling is a desktop-wide GNOME setting, not a per-label opt-in |
|
|
49
64
|
| `ellipsizeMode` | property | `ellipsize` | — |
|
|
@@ -56,18 +71,28 @@ widget `GtkLabel` · a text child writes `label`.
|
|
|
56
71
|
| `selectable` | property | `selectable` | — |
|
|
57
72
|
| `testID` | property | `name` | — |
|
|
58
73
|
|
|
74
|
+
`accessibilityRole` is answered for every other value, and these are refused by name:
|
|
75
|
+
|
|
76
|
+
- `drawerlayout` — names Android’s DrawerLayout. The desktop pattern survives the component (`Adw.OverlaySplitView`), but it is a widget rather than a role — drop the prop and give the drawer an `accessibilityLabel`; React Native’s role list has no `navigation`, and the widget carries the rest
|
|
77
|
+
- `horizontalscrollview` — names an Android class, like `scrollview` — use `<ScrollView horizontal>` and drop the prop
|
|
78
|
+
- `keyboardkey` — describes a key of an on-screen keyboard, and neither GTK nor ARIA has a role for one — a desktop keyboard is the input method, not a widget in your tree. If you are building a keypad, the keys are `accessibilityRole="button"`; the container needs no role, because React Native has no spelling for ARIA’s `group` and a plain `<View>` is already the `generic` a screen reader walks through
|
|
79
|
+
- `pager` — names Android’s ViewPager. GTK’s counterpart is a `Gtk.Stack`, and the role a screen reader wants on it is `tablist` when it has visible switchers and nothing at all when it does not
|
|
80
|
+
- `scrollview` — names Android’s ScrollView class rather than a role, and this layer already answers the idea: `<ScrollView>` becomes a `Gtk.ScrolledWindow`, whose accessibility a screen reader reads from the widget itself. Drop the prop
|
|
81
|
+
- `slidingdrawer` — names a deprecated Android class — see `drawerlayout`
|
|
82
|
+
- `summary` — is an iOS trait for the one element VoiceOver reads first when an app launches, and GTK has no counterpart because a desktop screen reader announces the focused widget instead. Put the text in the window title, or carry it as `accessibilityLabel` on the element it summarises — React Native’s role list has no `status`, so there is no role to give it here
|
|
83
|
+
|
|
59
84
|
## `<Pressable>`
|
|
60
85
|
|
|
61
86
|
widget `GtkButton` · a text child writes `label`.
|
|
62
87
|
|
|
63
88
|
| prop | answer | GTK | why |
|
|
64
89
|
|---|---|---|---|
|
|
65
|
-
| `accessibilityHint` |
|
|
66
|
-
| `accessibilityLabel` |
|
|
90
|
+
| `accessibilityHint` | accessible | `Gtk.Accessible.update_property(): help-text` | — |
|
|
91
|
+
| `accessibilityLabel` | accessible | `Gtk.Accessible.update_property(): label` | — |
|
|
67
92
|
| `accessibilityLiveRegion` | refused | — | declares that a screen reader should speak this element when its CONTENT changes. GTK has the announcement — `Gtk.Accessible.announce(message, priority)` since 4.14 — but not the watch: it is an imperative call, and this element’s content is a SUBTREE, which GTK emits no signal for. `<Text>` answers this prop, because its content is one property (`Gtk.Label:label`) and so is both the moment and the message. Elsewhere, call `announce()` on the widget through a ref when you change the content |
|
|
68
|
-
| `accessibilityRole` |
|
|
69
|
-
| `accessibilityState` |
|
|
70
|
-
| `accessible` |
|
|
93
|
+
| `accessibilityRole` | property | `accessible-role` | refuses `drawerlayout`, `horizontalscrollview`, `keyboardkey`, `pager`, `scrollview`, `slidingdrawer`, `summary` — see below |
|
|
94
|
+
| `accessibilityState` | accessible | `busy → Gtk.Accessible.update_state(): busy`, `checked → Gtk.Accessible.update_state(): checked`, `disabled → Gtk.Accessible.update_state(): disabled`, `expanded → Gtk.Accessible.update_state(): expanded`, `selected → Gtk.Accessible.update_state(): selected` | — |
|
|
95
|
+
| `accessible` | ignored | — | asks for two things, and GTK already answers one: every GTK widget is in the accessibility tree, so “this element is an accessibility element” is the desktop default rather than an opt-in. The other thing it asks — merge my whole subtree into ONE accessible node, which is what `accessible={true}` does on iOS — GTK has no mechanism for, and a desktop screen reader navigates the widget tree it is given. To take an element OUT of that tree, set `accessibilityRole="none"`: it is the one prop that writes `Gtk.Accessible:accessible-role`, and two props writing one property is the silent-drop shape this table refuses by name |
|
|
71
96
|
| `android_ripple` | ignored | — | an Android-only ripple; Adwaita has its own press feedback |
|
|
72
97
|
| `delayLongPress` | refused | — | see `onLongPress` |
|
|
73
98
|
| `disabled` | property | `sensitive` | — |
|
|
@@ -82,18 +107,28 @@ widget `GtkButton` · a text child writes `label`.
|
|
|
82
107
|
| `pointerEvents` | property | `can-target` | — |
|
|
83
108
|
| `testID` | property | `name` | — |
|
|
84
109
|
|
|
110
|
+
`accessibilityRole` is answered for every other value, and these are refused by name:
|
|
111
|
+
|
|
112
|
+
- `drawerlayout` — names Android’s DrawerLayout. The desktop pattern survives the component (`Adw.OverlaySplitView`), but it is a widget rather than a role — drop the prop and give the drawer an `accessibilityLabel`; React Native’s role list has no `navigation`, and the widget carries the rest
|
|
113
|
+
- `horizontalscrollview` — names an Android class, like `scrollview` — use `<ScrollView horizontal>` and drop the prop
|
|
114
|
+
- `keyboardkey` — describes a key of an on-screen keyboard, and neither GTK nor ARIA has a role for one — a desktop keyboard is the input method, not a widget in your tree. If you are building a keypad, the keys are `accessibilityRole="button"`; the container needs no role, because React Native has no spelling for ARIA’s `group` and a plain `<View>` is already the `generic` a screen reader walks through
|
|
115
|
+
- `pager` — names Android’s ViewPager. GTK’s counterpart is a `Gtk.Stack`, and the role a screen reader wants on it is `tablist` when it has visible switchers and nothing at all when it does not
|
|
116
|
+
- `scrollview` — names Android’s ScrollView class rather than a role, and this layer already answers the idea: `<ScrollView>` becomes a `Gtk.ScrolledWindow`, whose accessibility a screen reader reads from the widget itself. Drop the prop
|
|
117
|
+
- `slidingdrawer` — names a deprecated Android class — see `drawerlayout`
|
|
118
|
+
- `summary` — is an iOS trait for the one element VoiceOver reads first when an app launches, and GTK has no counterpart because a desktop screen reader announces the focused widget instead. Put the text in the window title, or carry it as `accessibilityLabel` on the element it summarises — React Native’s role list has no `status`, so there is no role to give it here
|
|
119
|
+
|
|
85
120
|
## `<ScrollView>`
|
|
86
121
|
|
|
87
122
|
widget `GtkScrolledWindow` · children go into `GtkBox` · takes no text child.
|
|
88
123
|
|
|
89
124
|
| prop | answer | GTK | why |
|
|
90
125
|
|---|---|---|---|
|
|
91
|
-
| `accessibilityHint` |
|
|
92
|
-
| `accessibilityLabel` |
|
|
126
|
+
| `accessibilityHint` | accessible | `Gtk.Accessible.update_property(): help-text` | — |
|
|
127
|
+
| `accessibilityLabel` | accessible | `Gtk.Accessible.update_property(): label` | — |
|
|
93
128
|
| `accessibilityLiveRegion` | refused | — | declares that a screen reader should speak this element when its CONTENT changes. GTK has the announcement — `Gtk.Accessible.announce(message, priority)` since 4.14 — but not the watch: it is an imperative call, and this element’s content is a SUBTREE, which GTK emits no signal for. `<Text>` answers this prop, because its content is one property (`Gtk.Label:label`) and so is both the moment and the message. Elsewhere, call `announce()` on the widget through a ref when you change the content |
|
|
94
|
-
| `accessibilityRole` |
|
|
95
|
-
| `accessibilityState` |
|
|
96
|
-
| `accessible` |
|
|
129
|
+
| `accessibilityRole` | property | `accessible-role` | refuses `drawerlayout`, `horizontalscrollview`, `keyboardkey`, `pager`, `scrollview`, `slidingdrawer`, `summary` — see below |
|
|
130
|
+
| `accessibilityState` | accessible | `busy → Gtk.Accessible.update_state(): busy`, `checked → Gtk.Accessible.update_state(): checked`, `disabled → Gtk.Accessible.update_state(): disabled`, `expanded → Gtk.Accessible.update_state(): expanded`, `selected → Gtk.Accessible.update_state(): selected` | — |
|
|
131
|
+
| `accessible` | ignored | — | asks for two things, and GTK already answers one: every GTK widget is in the accessibility tree, so “this element is an accessibility element” is the desktop default rather than an opt-in. The other thing it asks — merge my whole subtree into ONE accessible node, which is what `accessible={true}` does on iOS — GTK has no mechanism for, and a desktop screen reader navigates the widget tree it is given. To take an element OUT of that tree, set `accessibilityRole="none"`: it is the one prop that writes `Gtk.Accessible:accessible-role`, and two props writing one property is the silent-drop shape this table refuses by name |
|
|
97
132
|
| `contentContainerClassName` | ignored | — | read directly as the content node’s class list |
|
|
98
133
|
| `contentContainerStyle` | ignored | — | read directly as the content node’s style set |
|
|
99
134
|
| `horizontal` | property | `orientation`, `hscrollbar-policy`, `vscrollbar-policy` | — |
|
|
@@ -110,18 +145,28 @@ widget `GtkScrolledWindow` · children go into `GtkBox` · takes no text child.
|
|
|
110
145
|
| `showsVerticalScrollIndicator` | property | `vscrollbar-policy` | — |
|
|
111
146
|
| `testID` | property | `name` | — |
|
|
112
147
|
|
|
148
|
+
`accessibilityRole` is answered for every other value, and these are refused by name:
|
|
149
|
+
|
|
150
|
+
- `drawerlayout` — names Android’s DrawerLayout. The desktop pattern survives the component (`Adw.OverlaySplitView`), but it is a widget rather than a role — drop the prop and give the drawer an `accessibilityLabel`; React Native’s role list has no `navigation`, and the widget carries the rest
|
|
151
|
+
- `horizontalscrollview` — names an Android class, like `scrollview` — use `<ScrollView horizontal>` and drop the prop
|
|
152
|
+
- `keyboardkey` — describes a key of an on-screen keyboard, and neither GTK nor ARIA has a role for one — a desktop keyboard is the input method, not a widget in your tree. If you are building a keypad, the keys are `accessibilityRole="button"`; the container needs no role, because React Native has no spelling for ARIA’s `group` and a plain `<View>` is already the `generic` a screen reader walks through
|
|
153
|
+
- `pager` — names Android’s ViewPager. GTK’s counterpart is a `Gtk.Stack`, and the role a screen reader wants on it is `tablist` when it has visible switchers and nothing at all when it does not
|
|
154
|
+
- `scrollview` — names Android’s ScrollView class rather than a role, and this layer already answers the idea: `<ScrollView>` becomes a `Gtk.ScrolledWindow`, whose accessibility a screen reader reads from the widget itself. Drop the prop
|
|
155
|
+
- `slidingdrawer` — names a deprecated Android class — see `drawerlayout`
|
|
156
|
+
- `summary` — is an iOS trait for the one element VoiceOver reads first when an app launches, and GTK has no counterpart because a desktop screen reader announces the focused widget instead. Put the text in the window title, or carry it as `accessibilityLabel` on the element it summarises — React Native’s role list has no `status`, so there is no role to give it here
|
|
157
|
+
|
|
113
158
|
## `<ActivityIndicator>`
|
|
114
159
|
|
|
115
160
|
widget `AdwSpinner` · takes no text child.
|
|
116
161
|
|
|
117
162
|
| prop | answer | GTK | why |
|
|
118
163
|
|---|---|---|---|
|
|
119
|
-
| `accessibilityHint` |
|
|
120
|
-
| `accessibilityLabel` |
|
|
164
|
+
| `accessibilityHint` | accessible | `Gtk.Accessible.update_property(): help-text` | — |
|
|
165
|
+
| `accessibilityLabel` | accessible | `Gtk.Accessible.update_property(): label` | — |
|
|
121
166
|
| `accessibilityLiveRegion` | refused | — | declares that a screen reader should speak this element when its CONTENT changes. GTK has the announcement — `Gtk.Accessible.announce(message, priority)` since 4.14 — but not the watch: it is an imperative call, and this element’s content is a SUBTREE, which GTK emits no signal for. `<Text>` answers this prop, because its content is one property (`Gtk.Label:label`) and so is both the moment and the message. Elsewhere, call `announce()` on the widget through a ref when you change the content |
|
|
122
|
-
| `accessibilityRole` |
|
|
123
|
-
| `accessibilityState` |
|
|
124
|
-
| `accessible` |
|
|
167
|
+
| `accessibilityRole` | property | `accessible-role` | refuses `drawerlayout`, `horizontalscrollview`, `keyboardkey`, `pager`, `scrollview`, `slidingdrawer`, `summary` — see below |
|
|
168
|
+
| `accessibilityState` | accessible | `busy → Gtk.Accessible.update_state(): busy`, `checked → Gtk.Accessible.update_state(): checked`, `disabled → Gtk.Accessible.update_state(): disabled`, `expanded → Gtk.Accessible.update_state(): expanded`, `selected → Gtk.Accessible.update_state(): selected` | — |
|
|
169
|
+
| `accessible` | ignored | — | asks for two things, and GTK already answers one: every GTK widget is in the accessibility tree, so “this element is an accessibility element” is the desktop default rather than an opt-in. The other thing it asks — merge my whole subtree into ONE accessible node, which is what `accessible={true}` does on iOS — GTK has no mechanism for, and a desktop screen reader navigates the widget tree it is given. To take an element OUT of that tree, set `accessibilityRole="none"`: it is the one prop that writes `Gtk.Accessible:accessible-role`, and two props writing one property is the silent-drop shape this table refuses by name |
|
|
125
170
|
| `animating` | property | `visible` | — |
|
|
126
171
|
| `color` | style | `style: color` | — |
|
|
127
172
|
| `hidesWhenStopped` | ignored | — | a stopped `Adw.Spinner` is a hidden one here — there is no property that stops it while it is on screen (measured), so this is already the behaviour |
|
|
@@ -131,18 +176,28 @@ widget `AdwSpinner` · takes no text child.
|
|
|
131
176
|
| `size` | property | `width-request`, `height-request` | — |
|
|
132
177
|
| `testID` | property | `name` | — |
|
|
133
178
|
|
|
179
|
+
`accessibilityRole` is answered for every other value, and these are refused by name:
|
|
180
|
+
|
|
181
|
+
- `drawerlayout` — names Android’s DrawerLayout. The desktop pattern survives the component (`Adw.OverlaySplitView`), but it is a widget rather than a role — drop the prop and give the drawer an `accessibilityLabel`; React Native’s role list has no `navigation`, and the widget carries the rest
|
|
182
|
+
- `horizontalscrollview` — names an Android class, like `scrollview` — use `<ScrollView horizontal>` and drop the prop
|
|
183
|
+
- `keyboardkey` — describes a key of an on-screen keyboard, and neither GTK nor ARIA has a role for one — a desktop keyboard is the input method, not a widget in your tree. If you are building a keypad, the keys are `accessibilityRole="button"`; the container needs no role, because React Native has no spelling for ARIA’s `group` and a plain `<View>` is already the `generic` a screen reader walks through
|
|
184
|
+
- `pager` — names Android’s ViewPager. GTK’s counterpart is a `Gtk.Stack`, and the role a screen reader wants on it is `tablist` when it has visible switchers and nothing at all when it does not
|
|
185
|
+
- `scrollview` — names Android’s ScrollView class rather than a role, and this layer already answers the idea: `<ScrollView>` becomes a `Gtk.ScrolledWindow`, whose accessibility a screen reader reads from the widget itself. Drop the prop
|
|
186
|
+
- `slidingdrawer` — names a deprecated Android class — see `drawerlayout`
|
|
187
|
+
- `summary` — is an iOS trait for the one element VoiceOver reads first when an app launches, and GTK has no counterpart because a desktop screen reader announces the focused widget instead. Put the text in the window title, or carry it as `accessibilityLabel` on the element it summarises — React Native’s role list has no `status`, so there is no role to give it here
|
|
188
|
+
|
|
134
189
|
## `<TextInput>`
|
|
135
190
|
|
|
136
191
|
widget `GtkEntry` · a text child writes `text` · a `ref` receives the `text-input` handle, not the widget.
|
|
137
192
|
|
|
138
193
|
| prop | answer | GTK | why |
|
|
139
194
|
|---|---|---|---|
|
|
140
|
-
| `accessibilityHint` |
|
|
141
|
-
| `accessibilityLabel` |
|
|
195
|
+
| `accessibilityHint` | accessible | `Gtk.Accessible.update_property(): help-text` | — |
|
|
196
|
+
| `accessibilityLabel` | accessible | `Gtk.Accessible.update_property(): label` | — |
|
|
142
197
|
| `accessibilityLiveRegion` | refused | — | declares that a screen reader should speak this element when its CONTENT changes. GTK has the announcement — `Gtk.Accessible.announce(message, priority)` since 4.14 — but not the watch: it is an imperative call, and this element’s content is a SUBTREE, which GTK emits no signal for. `<Text>` answers this prop, because its content is one property (`Gtk.Label:label`) and so is both the moment and the message. Elsewhere, call `announce()` on the widget through a ref when you change the content |
|
|
143
|
-
| `accessibilityRole` |
|
|
144
|
-
| `accessibilityState` |
|
|
145
|
-
| `accessible` |
|
|
198
|
+
| `accessibilityRole` | property | `accessible-role` | refuses `drawerlayout`, `horizontalscrollview`, `keyboardkey`, `pager`, `scrollview`, `slidingdrawer`, `summary` — see below |
|
|
199
|
+
| `accessibilityState` | accessible | `busy → Gtk.Accessible.update_state(): busy`, `checked → Gtk.Accessible.update_state(): checked`, `disabled → Gtk.Accessible.update_state(): disabled`, `expanded → Gtk.Accessible.update_state(): expanded`, `selected → Gtk.Accessible.update_state(): selected` | — |
|
|
200
|
+
| `accessible` | ignored | — | asks for two things, and GTK already answers one: every GTK widget is in the accessibility tree, so “this element is an accessibility element” is the desktop default rather than an opt-in. The other thing it asks — merge my whole subtree into ONE accessible node, which is what `accessible={true}` does on iOS — GTK has no mechanism for, and a desktop screen reader navigates the widget tree it is given. To take an element OUT of that tree, set `accessibilityRole="none"`: it is the one prop that writes `Gtk.Accessible:accessible-role`, and two props writing one property is the silent-drop shape this table refuses by name |
|
|
146
201
|
| `autoCapitalize` | ignored | — | an on-screen keyboard behaviour; a hardware keyboard has no shift state to preset |
|
|
147
202
|
| `autoComplete` | ignored | — | is Android’s autofill hint, and there is no autofill service on a GTK desktop to hint to — a password manager fills a field through the accessibility bus or a paste, neither of which the widget declares anything for. `keyboardType` is the one hint that does land: it writes `Gtk.Entry:input-purpose`, which an input method reads |
|
|
148
203
|
| `autoCorrect` | ignored | — | an on-screen keyboard behaviour |
|
|
@@ -168,6 +223,16 @@ widget `GtkEntry` · a text child writes `text` · a `ref` receives the `text-in
|
|
|
168
223
|
| `textContentType` | ignored | — | is `autoComplete`’s iOS spelling and has the same absent addressee. Note `Gtk.Accessible` does carry an `autocomplete` PROPERTY, and it is a different thing: it describes a widget that completes its own text (a combo box), not a system that fills it in |
|
|
169
224
|
| `value` | property | `text` | — |
|
|
170
225
|
|
|
226
|
+
`accessibilityRole` is answered for every other value, and these are refused by name:
|
|
227
|
+
|
|
228
|
+
- `drawerlayout` — names Android’s DrawerLayout. The desktop pattern survives the component (`Adw.OverlaySplitView`), but it is a widget rather than a role — drop the prop and give the drawer an `accessibilityLabel`; React Native’s role list has no `navigation`, and the widget carries the rest
|
|
229
|
+
- `horizontalscrollview` — names an Android class, like `scrollview` — use `<ScrollView horizontal>` and drop the prop
|
|
230
|
+
- `keyboardkey` — describes a key of an on-screen keyboard, and neither GTK nor ARIA has a role for one — a desktop keyboard is the input method, not a widget in your tree. If you are building a keypad, the keys are `accessibilityRole="button"`; the container needs no role, because React Native has no spelling for ARIA’s `group` and a plain `<View>` is already the `generic` a screen reader walks through
|
|
231
|
+
- `pager` — names Android’s ViewPager. GTK’s counterpart is a `Gtk.Stack`, and the role a screen reader wants on it is `tablist` when it has visible switchers and nothing at all when it does not
|
|
232
|
+
- `scrollview` — names Android’s ScrollView class rather than a role, and this layer already answers the idea: `<ScrollView>` becomes a `Gtk.ScrolledWindow`, whose accessibility a screen reader reads from the widget itself. Drop the prop
|
|
233
|
+
- `slidingdrawer` — names a deprecated Android class — see `drawerlayout`
|
|
234
|
+
- `summary` — is an iOS trait for the one element VoiceOver reads first when an app launches, and GTK has no counterpart because a desktop screen reader announces the focused widget instead. Put the text in the window title, or carry it as `accessibilityLabel` on the element it summarises — React Native’s role list has no `status`, so there is no role to give it here
|
|
235
|
+
|
|
171
236
|
## `<TextInput multiline>`
|
|
172
237
|
|
|
173
238
|
widget `GtkTextView` · takes no text child · a `ref` receives the `text-input` handle, not the widget.
|
|
@@ -176,12 +241,12 @@ One React Native prop, two GTK widgets: `multiline` selects this row instead of
|
|
|
176
241
|
|
|
177
242
|
| prop | answer | GTK | why |
|
|
178
243
|
|---|---|---|---|
|
|
179
|
-
| `accessibilityHint` |
|
|
180
|
-
| `accessibilityLabel` |
|
|
244
|
+
| `accessibilityHint` | accessible | `Gtk.Accessible.update_property(): help-text` | — |
|
|
245
|
+
| `accessibilityLabel` | accessible | `Gtk.Accessible.update_property(): label` | — |
|
|
181
246
|
| `accessibilityLiveRegion` | refused | — | declares that a screen reader should speak this element when its CONTENT changes. GTK has the announcement — `Gtk.Accessible.announce(message, priority)` since 4.14 — but not the watch: it is an imperative call, and this element’s content is a SUBTREE, which GTK emits no signal for. `<Text>` answers this prop, because its content is one property (`Gtk.Label:label`) and so is both the moment and the message. Elsewhere, call `announce()` on the widget through a ref when you change the content |
|
|
182
|
-
| `accessibilityRole` |
|
|
183
|
-
| `accessibilityState` |
|
|
184
|
-
| `accessible` |
|
|
247
|
+
| `accessibilityRole` | property | `accessible-role` | refuses `drawerlayout`, `horizontalscrollview`, `keyboardkey`, `pager`, `scrollview`, `slidingdrawer`, `summary` — see below |
|
|
248
|
+
| `accessibilityState` | accessible | `busy → Gtk.Accessible.update_state(): busy`, `checked → Gtk.Accessible.update_state(): checked`, `disabled → Gtk.Accessible.update_state(): disabled`, `expanded → Gtk.Accessible.update_state(): expanded`, `selected → Gtk.Accessible.update_state(): selected` | — |
|
|
249
|
+
| `accessible` | ignored | — | asks for two things, and GTK already answers one: every GTK widget is in the accessibility tree, so “this element is an accessibility element” is the desktop default rather than an opt-in. The other thing it asks — merge my whole subtree into ONE accessible node, which is what `accessible={true}` does on iOS — GTK has no mechanism for, and a desktop screen reader navigates the widget tree it is given. To take an element OUT of that tree, set `accessibilityRole="none"`: it is the one prop that writes `Gtk.Accessible:accessible-role`, and two props writing one property is the silent-drop shape this table refuses by name |
|
|
185
250
|
| `autoCapitalize` | ignored | — | an on-screen keyboard behaviour; a hardware keyboard has no shift state to preset |
|
|
186
251
|
| `autoComplete` | ignored | — | is Android’s autofill hint, and there is no autofill service on a GTK desktop to hint to — a password manager fills a field through the accessibility bus or a paste, neither of which the widget declares anything for. `keyboardType` is the one hint that does land: it writes `Gtk.Entry:input-purpose`, which an input method reads |
|
|
187
252
|
| `autoCorrect` | ignored | — | an on-screen keyboard behaviour |
|
|
@@ -207,18 +272,28 @@ One React Native prop, two GTK widgets: `multiline` selects this row instead of
|
|
|
207
272
|
| `textContentType` | ignored | — | is `autoComplete`’s iOS spelling and has the same absent addressee. Note `Gtk.Accessible` does carry an `autocomplete` PROPERTY, and it is a different thing: it describes a widget that completes its own text (a combo box), not a system that fills it in |
|
|
208
273
|
| `value` | refused | — | `Gtk.TextView` keeps its content in a `Gtk.TextBuffer` rather than in a property (measured: 61 properties, no `text`), so there is nothing for this layer to set as data. Drop `multiline` for a `Gtk.Entry`, or reach the buffer through a ref |
|
|
209
274
|
|
|
275
|
+
`accessibilityRole` is answered for every other value, and these are refused by name:
|
|
276
|
+
|
|
277
|
+
- `drawerlayout` — names Android’s DrawerLayout. The desktop pattern survives the component (`Adw.OverlaySplitView`), but it is a widget rather than a role — drop the prop and give the drawer an `accessibilityLabel`; React Native’s role list has no `navigation`, and the widget carries the rest
|
|
278
|
+
- `horizontalscrollview` — names an Android class, like `scrollview` — use `<ScrollView horizontal>` and drop the prop
|
|
279
|
+
- `keyboardkey` — describes a key of an on-screen keyboard, and neither GTK nor ARIA has a role for one — a desktop keyboard is the input method, not a widget in your tree. If you are building a keypad, the keys are `accessibilityRole="button"`; the container needs no role, because React Native has no spelling for ARIA’s `group` and a plain `<View>` is already the `generic` a screen reader walks through
|
|
280
|
+
- `pager` — names Android’s ViewPager. GTK’s counterpart is a `Gtk.Stack`, and the role a screen reader wants on it is `tablist` when it has visible switchers and nothing at all when it does not
|
|
281
|
+
- `scrollview` — names Android’s ScrollView class rather than a role, and this layer already answers the idea: `<ScrollView>` becomes a `Gtk.ScrolledWindow`, whose accessibility a screen reader reads from the widget itself. Drop the prop
|
|
282
|
+
- `slidingdrawer` — names a deprecated Android class — see `drawerlayout`
|
|
283
|
+
- `summary` — is an iOS trait for the one element VoiceOver reads first when an app launches, and GTK has no counterpart because a desktop screen reader announces the focused widget instead. Put the text in the window title, or carry it as `accessibilityLabel` on the element it summarises — React Native’s role list has no `status`, so there is no role to give it here
|
|
284
|
+
|
|
210
285
|
## `<Switch>`
|
|
211
286
|
|
|
212
287
|
widget `GtkSwitch` · takes no text child.
|
|
213
288
|
|
|
214
289
|
| prop | answer | GTK | why |
|
|
215
290
|
|---|---|---|---|
|
|
216
|
-
| `accessibilityHint` |
|
|
217
|
-
| `accessibilityLabel` |
|
|
291
|
+
| `accessibilityHint` | accessible | `Gtk.Accessible.update_property(): help-text` | — |
|
|
292
|
+
| `accessibilityLabel` | accessible | `Gtk.Accessible.update_property(): label` | — |
|
|
218
293
|
| `accessibilityLiveRegion` | refused | — | declares that a screen reader should speak this element when its CONTENT changes. GTK has the announcement — `Gtk.Accessible.announce(message, priority)` since 4.14 — but not the watch: it is an imperative call, and this element’s content is a SUBTREE, which GTK emits no signal for. `<Text>` answers this prop, because its content is one property (`Gtk.Label:label`) and so is both the moment and the message. Elsewhere, call `announce()` on the widget through a ref when you change the content |
|
|
219
|
-
| `accessibilityRole` |
|
|
220
|
-
| `accessibilityState` |
|
|
221
|
-
| `accessible` |
|
|
294
|
+
| `accessibilityRole` | property | `accessible-role` | refuses `drawerlayout`, `horizontalscrollview`, `keyboardkey`, `pager`, `scrollview`, `slidingdrawer`, `summary` — see below |
|
|
295
|
+
| `accessibilityState` | accessible | `busy → Gtk.Accessible.update_state(): busy`, `checked → Gtk.Accessible.update_state(): checked`, `disabled → Gtk.Accessible.update_state(): disabled`, `expanded → Gtk.Accessible.update_state(): expanded`, `selected → Gtk.Accessible.update_state(): selected` | — |
|
|
296
|
+
| `accessible` | ignored | — | asks for two things, and GTK already answers one: every GTK widget is in the accessibility tree, so “this element is an accessibility element” is the desktop default rather than an opt-in. The other thing it asks — merge my whole subtree into ONE accessible node, which is what `accessible={true}` does on iOS — GTK has no mechanism for, and a desktop screen reader navigates the widget tree it is given. To take an element OUT of that tree, set `accessibilityRole="none"`: it is the one prop that writes `Gtk.Accessible:accessible-role`, and two props writing one property is the silent-drop shape this table refuses by name |
|
|
222
297
|
| `disabled` | property | `sensitive` | — |
|
|
223
298
|
| `id` | refused | — | would write `Gtk.Widget:name`, and so does `testID`. Two props for one property is the silent-drop shape the host refuses by name (`signalTaken`), so this layer picks one: use `testID` |
|
|
224
299
|
| `ios_backgroundColor` | ignored | — | an iOS-only fallback colour |
|
|
@@ -230,18 +305,28 @@ widget `GtkSwitch` · takes no text child.
|
|
|
230
305
|
| `trackColor` | refused | — | Adwaita paints the switch from the theme’s accent colour, and its track is a CSS `slider`/`trough` subnode rather than a property. Style it from the application stylesheet |
|
|
231
306
|
| `value` | property | `active` | — |
|
|
232
307
|
|
|
308
|
+
`accessibilityRole` is answered for every other value, and these are refused by name:
|
|
309
|
+
|
|
310
|
+
- `drawerlayout` — names Android’s DrawerLayout. The desktop pattern survives the component (`Adw.OverlaySplitView`), but it is a widget rather than a role — drop the prop and give the drawer an `accessibilityLabel`; React Native’s role list has no `navigation`, and the widget carries the rest
|
|
311
|
+
- `horizontalscrollview` — names an Android class, like `scrollview` — use `<ScrollView horizontal>` and drop the prop
|
|
312
|
+
- `keyboardkey` — describes a key of an on-screen keyboard, and neither GTK nor ARIA has a role for one — a desktop keyboard is the input method, not a widget in your tree. If you are building a keypad, the keys are `accessibilityRole="button"`; the container needs no role, because React Native has no spelling for ARIA’s `group` and a plain `<View>` is already the `generic` a screen reader walks through
|
|
313
|
+
- `pager` — names Android’s ViewPager. GTK’s counterpart is a `Gtk.Stack`, and the role a screen reader wants on it is `tablist` when it has visible switchers and nothing at all when it does not
|
|
314
|
+
- `scrollview` — names Android’s ScrollView class rather than a role, and this layer already answers the idea: `<ScrollView>` becomes a `Gtk.ScrolledWindow`, whose accessibility a screen reader reads from the widget itself. Drop the prop
|
|
315
|
+
- `slidingdrawer` — names a deprecated Android class — see `drawerlayout`
|
|
316
|
+
- `summary` — is an iOS trait for the one element VoiceOver reads first when an app launches, and GTK has no counterpart because a desktop screen reader announces the focused widget instead. Put the text in the window title, or carry it as `accessibilityLabel` on the element it summarises — React Native’s role list has no `status`, so there is no role to give it here
|
|
317
|
+
|
|
233
318
|
## `<Image>`
|
|
234
319
|
|
|
235
320
|
widget `GtkPicture` · takes no text child.
|
|
236
321
|
|
|
237
322
|
| prop | answer | GTK | why |
|
|
238
323
|
|---|---|---|---|
|
|
239
|
-
| `accessibilityHint` |
|
|
240
|
-
| `accessibilityLabel` |
|
|
324
|
+
| `accessibilityHint` | accessible | `Gtk.Accessible.update_property(): help-text` | — |
|
|
325
|
+
| `accessibilityLabel` | accessible | `Gtk.Accessible.update_property(): label` | — |
|
|
241
326
|
| `accessibilityLiveRegion` | refused | — | declares that a screen reader should speak this element when its CONTENT changes. GTK has the announcement — `Gtk.Accessible.announce(message, priority)` since 4.14 — but not the watch: it is an imperative call, and this element’s content is a SUBTREE, which GTK emits no signal for. `<Text>` answers this prop, because its content is one property (`Gtk.Label:label`) and so is both the moment and the message. Elsewhere, call `announce()` on the widget through a ref when you change the content |
|
|
242
|
-
| `accessibilityRole` |
|
|
243
|
-
| `accessibilityState` |
|
|
244
|
-
| `accessible` |
|
|
327
|
+
| `accessibilityRole` | property | `accessible-role` | refuses `drawerlayout`, `horizontalscrollview`, `keyboardkey`, `pager`, `scrollview`, `slidingdrawer`, `summary` — see below |
|
|
328
|
+
| `accessibilityState` | accessible | `busy → Gtk.Accessible.update_state(): busy`, `checked → Gtk.Accessible.update_state(): checked`, `disabled → Gtk.Accessible.update_state(): disabled`, `expanded → Gtk.Accessible.update_state(): expanded`, `selected → Gtk.Accessible.update_state(): selected` | — |
|
|
329
|
+
| `accessible` | ignored | — | asks for two things, and GTK already answers one: every GTK widget is in the accessibility tree, so “this element is an accessibility element” is the desktop default rather than an opt-in. The other thing it asks — merge my whole subtree into ONE accessible node, which is what `accessible={true}` does on iOS — GTK has no mechanism for, and a desktop screen reader navigates the widget tree it is given. To take an element OUT of that tree, set `accessibilityRole="none"`: it is the one prop that writes `Gtk.Accessible:accessible-role`, and two props writing one property is the silent-drop shape this table refuses by name |
|
|
245
330
|
| `alt` | property | `alternative-text` | — |
|
|
246
331
|
| `blurRadius` | refused | — | is a per-pixel effect. GTK composites a `Gdk.Paintable` and has no filter property on the widget that draws it — the counterpart is a `Gsk` render node or a `Gtk.Snapshot` subclass, which is a widget of its own rather than a prop on this one |
|
|
247
332
|
| `capInsets` | refused | — | is iOS nine-part stretching. GTK’s counterpart is a CSS `border-image` on a widget’s background, which is a different widget and a different property set |
|
|
@@ -264,18 +349,28 @@ widget `GtkPicture` · takes no text child.
|
|
|
264
349
|
| `testID` | property | `name` | — |
|
|
265
350
|
| `tintColor` | refused | — | is a per-pixel effect. GTK composites a `Gdk.Paintable` and has no filter property on the widget that draws it — the counterpart is a `Gsk` render node or a `Gtk.Snapshot` subclass, which is a widget of its own rather than a prop on this one |
|
|
266
351
|
|
|
352
|
+
`accessibilityRole` is answered for every other value, and these are refused by name:
|
|
353
|
+
|
|
354
|
+
- `drawerlayout` — names Android’s DrawerLayout. The desktop pattern survives the component (`Adw.OverlaySplitView`), but it is a widget rather than a role — drop the prop and give the drawer an `accessibilityLabel`; React Native’s role list has no `navigation`, and the widget carries the rest
|
|
355
|
+
- `horizontalscrollview` — names an Android class, like `scrollview` — use `<ScrollView horizontal>` and drop the prop
|
|
356
|
+
- `keyboardkey` — describes a key of an on-screen keyboard, and neither GTK nor ARIA has a role for one — a desktop keyboard is the input method, not a widget in your tree. If you are building a keypad, the keys are `accessibilityRole="button"`; the container needs no role, because React Native has no spelling for ARIA’s `group` and a plain `<View>` is already the `generic` a screen reader walks through
|
|
357
|
+
- `pager` — names Android’s ViewPager. GTK’s counterpart is a `Gtk.Stack`, and the role a screen reader wants on it is `tablist` when it has visible switchers and nothing at all when it does not
|
|
358
|
+
- `scrollview` — names Android’s ScrollView class rather than a role, and this layer already answers the idea: `<ScrollView>` becomes a `Gtk.ScrolledWindow`, whose accessibility a screen reader reads from the widget itself. Drop the prop
|
|
359
|
+
- `slidingdrawer` — names a deprecated Android class — see `drawerlayout`
|
|
360
|
+
- `summary` — is an iOS trait for the one element VoiceOver reads first when an app launches, and GTK has no counterpart because a desktop screen reader announces the focused widget instead. Put the text in the window title, or carry it as `accessibilityLabel` on the element it summarises — React Native’s role list has no `status`, so there is no role to give it here
|
|
361
|
+
|
|
267
362
|
## `<ImageBackground>`
|
|
268
363
|
|
|
269
364
|
widget `GtkOverlay` · children go into `GtkBox` · backdrop `GtkPicture` · takes no text child.
|
|
270
365
|
|
|
271
366
|
| prop | answer | GTK | why |
|
|
272
367
|
|---|---|---|---|
|
|
273
|
-
| `accessibilityHint` |
|
|
274
|
-
| `accessibilityLabel` |
|
|
368
|
+
| `accessibilityHint` | accessible | `Gtk.Accessible.update_property(): help-text` | — |
|
|
369
|
+
| `accessibilityLabel` | accessible | `Gtk.Accessible.update_property(): label` | — |
|
|
275
370
|
| `accessibilityLiveRegion` | refused | — | declares that a screen reader should speak this element when its CONTENT changes. GTK has the announcement — `Gtk.Accessible.announce(message, priority)` since 4.14 — but not the watch: it is an imperative call, and this element’s content is a SUBTREE, which GTK emits no signal for. `<Text>` answers this prop, because its content is one property (`Gtk.Label:label`) and so is both the moment and the message. Elsewhere, call `announce()` on the widget through a ref when you change the content |
|
|
276
|
-
| `accessibilityRole` |
|
|
277
|
-
| `accessibilityState` |
|
|
278
|
-
| `accessible` |
|
|
371
|
+
| `accessibilityRole` | property | `accessible-role` | refuses `drawerlayout`, `horizontalscrollview`, `keyboardkey`, `pager`, `scrollview`, `slidingdrawer`, `summary` — see below |
|
|
372
|
+
| `accessibilityState` | accessible | `busy → Gtk.Accessible.update_state(): busy`, `checked → Gtk.Accessible.update_state(): checked`, `disabled → Gtk.Accessible.update_state(): disabled`, `expanded → Gtk.Accessible.update_state(): expanded`, `selected → Gtk.Accessible.update_state(): selected` | — |
|
|
373
|
+
| `accessible` | ignored | — | asks for two things, and GTK already answers one: every GTK widget is in the accessibility tree, so “this element is an accessibility element” is the desktop default rather than an opt-in. The other thing it asks — merge my whole subtree into ONE accessible node, which is what `accessible={true}` does on iOS — GTK has no mechanism for, and a desktop screen reader navigates the widget tree it is given. To take an element OUT of that tree, set `accessibilityRole="none"`: it is the one prop that writes `Gtk.Accessible:accessible-role`, and two props writing one property is the silent-drop shape this table refuses by name |
|
|
279
374
|
| `alt` | property | `alternative-text` | — |
|
|
280
375
|
| `id` | refused | — | would write `Gtk.Widget:name`, and so does `testID`. Two props for one property is the silent-drop shape the host refuses by name (`signalTaken`), so this layer picks one: use `testID` |
|
|
281
376
|
| `imageRef` | refused | — | hands back the inner `Image`’s instance. This element’s `ref` is the `Gtk.Overlay`; the picture is its main child and `overlay.get_child()` reaches it, so a second ref would be a second way to say the same thing |
|
|
@@ -287,18 +382,28 @@ widget `GtkOverlay` · children go into `GtkBox` · backdrop `GtkPicture` · tak
|
|
|
287
382
|
| `source` | file | `file` | — |
|
|
288
383
|
| `testID` | property | `name` | — |
|
|
289
384
|
|
|
385
|
+
`accessibilityRole` is answered for every other value, and these are refused by name:
|
|
386
|
+
|
|
387
|
+
- `drawerlayout` — names Android’s DrawerLayout. The desktop pattern survives the component (`Adw.OverlaySplitView`), but it is a widget rather than a role — drop the prop and give the drawer an `accessibilityLabel`; React Native’s role list has no `navigation`, and the widget carries the rest
|
|
388
|
+
- `horizontalscrollview` — names an Android class, like `scrollview` — use `<ScrollView horizontal>` and drop the prop
|
|
389
|
+
- `keyboardkey` — describes a key of an on-screen keyboard, and neither GTK nor ARIA has a role for one — a desktop keyboard is the input method, not a widget in your tree. If you are building a keypad, the keys are `accessibilityRole="button"`; the container needs no role, because React Native has no spelling for ARIA’s `group` and a plain `<View>` is already the `generic` a screen reader walks through
|
|
390
|
+
- `pager` — names Android’s ViewPager. GTK’s counterpart is a `Gtk.Stack`, and the role a screen reader wants on it is `tablist` when it has visible switchers and nothing at all when it does not
|
|
391
|
+
- `scrollview` — names Android’s ScrollView class rather than a role, and this layer already answers the idea: `<ScrollView>` becomes a `Gtk.ScrolledWindow`, whose accessibility a screen reader reads from the widget itself. Drop the prop
|
|
392
|
+
- `slidingdrawer` — names a deprecated Android class — see `drawerlayout`
|
|
393
|
+
- `summary` — is an iOS trait for the one element VoiceOver reads first when an app launches, and GTK has no counterpart because a desktop screen reader announces the focused widget instead. Put the text in the window title, or carry it as `accessibilityLabel` on the element it summarises — React Native’s role list has no `status`, so there is no role to give it here
|
|
394
|
+
|
|
290
395
|
## `<TouchableOpacity>`
|
|
291
396
|
|
|
292
397
|
widget `GtkButton` · a text child writes `label`.
|
|
293
398
|
|
|
294
399
|
| prop | answer | GTK | why |
|
|
295
400
|
|---|---|---|---|
|
|
296
|
-
| `accessibilityHint` |
|
|
297
|
-
| `accessibilityLabel` |
|
|
401
|
+
| `accessibilityHint` | accessible | `Gtk.Accessible.update_property(): help-text` | — |
|
|
402
|
+
| `accessibilityLabel` | accessible | `Gtk.Accessible.update_property(): label` | — |
|
|
298
403
|
| `accessibilityLiveRegion` | refused | — | declares that a screen reader should speak this element when its CONTENT changes. GTK has the announcement — `Gtk.Accessible.announce(message, priority)` since 4.14 — but not the watch: it is an imperative call, and this element’s content is a SUBTREE, which GTK emits no signal for. `<Text>` answers this prop, because its content is one property (`Gtk.Label:label`) and so is both the moment and the message. Elsewhere, call `announce()` on the widget through a ref when you change the content |
|
|
299
|
-
| `accessibilityRole` |
|
|
300
|
-
| `accessibilityState` |
|
|
301
|
-
| `accessible` |
|
|
404
|
+
| `accessibilityRole` | property | `accessible-role` | refuses `drawerlayout`, `horizontalscrollview`, `keyboardkey`, `pager`, `scrollview`, `slidingdrawer`, `summary` — see below |
|
|
405
|
+
| `accessibilityState` | accessible | `busy → Gtk.Accessible.update_state(): busy`, `checked → Gtk.Accessible.update_state(): checked`, `disabled → Gtk.Accessible.update_state(): disabled`, `expanded → Gtk.Accessible.update_state(): expanded`, `selected → Gtk.Accessible.update_state(): selected` | — |
|
|
406
|
+
| `accessible` | ignored | — | asks for two things, and GTK already answers one: every GTK widget is in the accessibility tree, so “this element is an accessibility element” is the desktop default rather than an opt-in. The other thing it asks — merge my whole subtree into ONE accessible node, which is what `accessible={true}` does on iOS — GTK has no mechanism for, and a desktop screen reader navigates the widget tree it is given. To take an element OUT of that tree, set `accessibilityRole="none"`: it is the one prop that writes `Gtk.Accessible:accessible-role`, and two props writing one property is the silent-drop shape this table refuses by name |
|
|
302
407
|
| `activeOpacity` | refused | — | sets the pressed appearance, which on GTK is the CSS `:active` pseudo-class rather than a prop (ADR 0032 § 7). Write `active:opacity-70` — it resolves through the same variant mechanism as every other utility, reads the project's own token scale, and GTK animates it with no re-render at all |
|
|
303
408
|
| `delayLongPress` | refused | — | see `onLongPress` |
|
|
304
409
|
| `delayPressIn` | refused | — | see `onPressIn` — there is no press-in event to delay |
|
|
@@ -317,18 +422,28 @@ widget `GtkButton` · a text child writes `label`.
|
|
|
317
422
|
| `testID` | property | `name` | — |
|
|
318
423
|
| `touchSoundDisabled` | ignored | — | an Android touch sound; a desktop button makes none |
|
|
319
424
|
|
|
425
|
+
`accessibilityRole` is answered for every other value, and these are refused by name:
|
|
426
|
+
|
|
427
|
+
- `drawerlayout` — names Android’s DrawerLayout. The desktop pattern survives the component (`Adw.OverlaySplitView`), but it is a widget rather than a role — drop the prop and give the drawer an `accessibilityLabel`; React Native’s role list has no `navigation`, and the widget carries the rest
|
|
428
|
+
- `horizontalscrollview` — names an Android class, like `scrollview` — use `<ScrollView horizontal>` and drop the prop
|
|
429
|
+
- `keyboardkey` — describes a key of an on-screen keyboard, and neither GTK nor ARIA has a role for one — a desktop keyboard is the input method, not a widget in your tree. If you are building a keypad, the keys are `accessibilityRole="button"`; the container needs no role, because React Native has no spelling for ARIA’s `group` and a plain `<View>` is already the `generic` a screen reader walks through
|
|
430
|
+
- `pager` — names Android’s ViewPager. GTK’s counterpart is a `Gtk.Stack`, and the role a screen reader wants on it is `tablist` when it has visible switchers and nothing at all when it does not
|
|
431
|
+
- `scrollview` — names Android’s ScrollView class rather than a role, and this layer already answers the idea: `<ScrollView>` becomes a `Gtk.ScrolledWindow`, whose accessibility a screen reader reads from the widget itself. Drop the prop
|
|
432
|
+
- `slidingdrawer` — names a deprecated Android class — see `drawerlayout`
|
|
433
|
+
- `summary` — is an iOS trait for the one element VoiceOver reads first when an app launches, and GTK has no counterpart because a desktop screen reader announces the focused widget instead. Put the text in the window title, or carry it as `accessibilityLabel` on the element it summarises — React Native’s role list has no `status`, so there is no role to give it here
|
|
434
|
+
|
|
320
435
|
## `<TouchableHighlight>`
|
|
321
436
|
|
|
322
437
|
widget `GtkButton` · a text child writes `label`.
|
|
323
438
|
|
|
324
439
|
| prop | answer | GTK | why |
|
|
325
440
|
|---|---|---|---|
|
|
326
|
-
| `accessibilityHint` |
|
|
327
|
-
| `accessibilityLabel` |
|
|
441
|
+
| `accessibilityHint` | accessible | `Gtk.Accessible.update_property(): help-text` | — |
|
|
442
|
+
| `accessibilityLabel` | accessible | `Gtk.Accessible.update_property(): label` | — |
|
|
328
443
|
| `accessibilityLiveRegion` | refused | — | declares that a screen reader should speak this element when its CONTENT changes. GTK has the announcement — `Gtk.Accessible.announce(message, priority)` since 4.14 — but not the watch: it is an imperative call, and this element’s content is a SUBTREE, which GTK emits no signal for. `<Text>` answers this prop, because its content is one property (`Gtk.Label:label`) and so is both the moment and the message. Elsewhere, call `announce()` on the widget through a ref when you change the content |
|
|
329
|
-
| `accessibilityRole` |
|
|
330
|
-
| `accessibilityState` |
|
|
331
|
-
| `accessible` |
|
|
444
|
+
| `accessibilityRole` | property | `accessible-role` | refuses `drawerlayout`, `horizontalscrollview`, `keyboardkey`, `pager`, `scrollview`, `slidingdrawer`, `summary` — see below |
|
|
445
|
+
| `accessibilityState` | accessible | `busy → Gtk.Accessible.update_state(): busy`, `checked → Gtk.Accessible.update_state(): checked`, `disabled → Gtk.Accessible.update_state(): disabled`, `expanded → Gtk.Accessible.update_state(): expanded`, `selected → Gtk.Accessible.update_state(): selected` | — |
|
|
446
|
+
| `accessible` | ignored | — | asks for two things, and GTK already answers one: every GTK widget is in the accessibility tree, so “this element is an accessibility element” is the desktop default rather than an opt-in. The other thing it asks — merge my whole subtree into ONE accessible node, which is what `accessible={true}` does on iOS — GTK has no mechanism for, and a desktop screen reader navigates the widget tree it is given. To take an element OUT of that tree, set `accessibilityRole="none"`: it is the one prop that writes `Gtk.Accessible:accessible-role`, and two props writing one property is the silent-drop shape this table refuses by name |
|
|
332
447
|
| `activeOpacity` | refused | — | sets the pressed appearance, which on GTK is the CSS `:active` pseudo-class rather than a prop (ADR 0032 § 7). Write `active:opacity-70` — it resolves through the same variant mechanism as every other utility, reads the project's own token scale, and GTK animates it with no re-render at all |
|
|
333
448
|
| `delayLongPress` | refused | — | see `onLongPress` |
|
|
334
449
|
| `delayPressIn` | refused | — | see `onPressIn` — there is no press-in event to delay |
|
|
@@ -350,18 +465,28 @@ widget `GtkButton` · a text child writes `label`.
|
|
|
350
465
|
| `touchSoundDisabled` | ignored | — | an Android touch sound; a desktop button makes none |
|
|
351
466
|
| `underlayColor` | refused | — | sets the pressed appearance, which on GTK is the CSS `:active` pseudo-class rather than a prop (ADR 0032 § 7). Write `active:bg-<token>` — it resolves through the same variant mechanism as every other utility, reads the project's own token scale, and GTK animates it with no re-render at all |
|
|
352
467
|
|
|
468
|
+
`accessibilityRole` is answered for every other value, and these are refused by name:
|
|
469
|
+
|
|
470
|
+
- `drawerlayout` — names Android’s DrawerLayout. The desktop pattern survives the component (`Adw.OverlaySplitView`), but it is a widget rather than a role — drop the prop and give the drawer an `accessibilityLabel`; React Native’s role list has no `navigation`, and the widget carries the rest
|
|
471
|
+
- `horizontalscrollview` — names an Android class, like `scrollview` — use `<ScrollView horizontal>` and drop the prop
|
|
472
|
+
- `keyboardkey` — describes a key of an on-screen keyboard, and neither GTK nor ARIA has a role for one — a desktop keyboard is the input method, not a widget in your tree. If you are building a keypad, the keys are `accessibilityRole="button"`; the container needs no role, because React Native has no spelling for ARIA’s `group` and a plain `<View>` is already the `generic` a screen reader walks through
|
|
473
|
+
- `pager` — names Android’s ViewPager. GTK’s counterpart is a `Gtk.Stack`, and the role a screen reader wants on it is `tablist` when it has visible switchers and nothing at all when it does not
|
|
474
|
+
- `scrollview` — names Android’s ScrollView class rather than a role, and this layer already answers the idea: `<ScrollView>` becomes a `Gtk.ScrolledWindow`, whose accessibility a screen reader reads from the widget itself. Drop the prop
|
|
475
|
+
- `slidingdrawer` — names a deprecated Android class — see `drawerlayout`
|
|
476
|
+
- `summary` — is an iOS trait for the one element VoiceOver reads first when an app launches, and GTK has no counterpart because a desktop screen reader announces the focused widget instead. Put the text in the window title, or carry it as `accessibilityLabel` on the element it summarises — React Native’s role list has no `status`, so there is no role to give it here
|
|
477
|
+
|
|
353
478
|
## `<TouchableWithoutFeedback>`
|
|
354
479
|
|
|
355
480
|
widget `GtkBox` · takes no text child.
|
|
356
481
|
|
|
357
482
|
| prop | answer | GTK | why |
|
|
358
483
|
|---|---|---|---|
|
|
359
|
-
| `accessibilityHint` |
|
|
360
|
-
| `accessibilityLabel` |
|
|
484
|
+
| `accessibilityHint` | accessible | `Gtk.Accessible.update_property(): help-text` | — |
|
|
485
|
+
| `accessibilityLabel` | accessible | `Gtk.Accessible.update_property(): label` | — |
|
|
361
486
|
| `accessibilityLiveRegion` | refused | — | declares that a screen reader should speak this element when its CONTENT changes. GTK has the announcement — `Gtk.Accessible.announce(message, priority)` since 4.14 — but not the watch: it is an imperative call, and this element’s content is a SUBTREE, which GTK emits no signal for. `<Text>` answers this prop, because its content is one property (`Gtk.Label:label`) and so is both the moment and the message. Elsewhere, call `announce()` on the widget through a ref when you change the content |
|
|
362
|
-
| `accessibilityRole` |
|
|
363
|
-
| `accessibilityState` |
|
|
364
|
-
| `accessible` |
|
|
487
|
+
| `accessibilityRole` | property | `accessible-role` | refuses `drawerlayout`, `horizontalscrollview`, `keyboardkey`, `pager`, `scrollview`, `slidingdrawer`, `summary` — see below |
|
|
488
|
+
| `accessibilityState` | accessible | `busy → Gtk.Accessible.update_state(): busy`, `checked → Gtk.Accessible.update_state(): checked`, `disabled → Gtk.Accessible.update_state(): disabled`, `expanded → Gtk.Accessible.update_state(): expanded`, `selected → Gtk.Accessible.update_state(): selected` | — |
|
|
489
|
+
| `accessible` | ignored | — | asks for two things, and GTK already answers one: every GTK widget is in the accessibility tree, so “this element is an accessibility element” is the desktop default rather than an opt-in. The other thing it asks — merge my whole subtree into ONE accessible node, which is what `accessible={true}` does on iOS — GTK has no mechanism for, and a desktop screen reader navigates the widget tree it is given. To take an element OUT of that tree, set `accessibilityRole="none"`: it is the one prop that writes `Gtk.Accessible:accessible-role`, and two props writing one property is the silent-drop shape this table refuses by name |
|
|
365
490
|
| `delayLongPress` | refused | — | see `onLongPress` |
|
|
366
491
|
| `delayPressIn` | refused | — | see `onPressIn` — there is no press-in event to delay |
|
|
367
492
|
| `delayPressOut` | refused | — | see `onPressIn` |
|
|
@@ -379,18 +504,28 @@ widget `GtkBox` · takes no text child.
|
|
|
379
504
|
| `testID` | property | `name` | — |
|
|
380
505
|
| `touchSoundDisabled` | ignored | — | an Android touch sound; a desktop button makes none |
|
|
381
506
|
|
|
507
|
+
`accessibilityRole` is answered for every other value, and these are refused by name:
|
|
508
|
+
|
|
509
|
+
- `drawerlayout` — names Android’s DrawerLayout. The desktop pattern survives the component (`Adw.OverlaySplitView`), but it is a widget rather than a role — drop the prop and give the drawer an `accessibilityLabel`; React Native’s role list has no `navigation`, and the widget carries the rest
|
|
510
|
+
- `horizontalscrollview` — names an Android class, like `scrollview` — use `<ScrollView horizontal>` and drop the prop
|
|
511
|
+
- `keyboardkey` — describes a key of an on-screen keyboard, and neither GTK nor ARIA has a role for one — a desktop keyboard is the input method, not a widget in your tree. If you are building a keypad, the keys are `accessibilityRole="button"`; the container needs no role, because React Native has no spelling for ARIA’s `group` and a plain `<View>` is already the `generic` a screen reader walks through
|
|
512
|
+
- `pager` — names Android’s ViewPager. GTK’s counterpart is a `Gtk.Stack`, and the role a screen reader wants on it is `tablist` when it has visible switchers and nothing at all when it does not
|
|
513
|
+
- `scrollview` — names Android’s ScrollView class rather than a role, and this layer already answers the idea: `<ScrollView>` becomes a `Gtk.ScrolledWindow`, whose accessibility a screen reader reads from the widget itself. Drop the prop
|
|
514
|
+
- `slidingdrawer` — names a deprecated Android class — see `drawerlayout`
|
|
515
|
+
- `summary` — is an iOS trait for the one element VoiceOver reads first when an app launches, and GTK has no counterpart because a desktop screen reader announces the focused widget instead. Put the text in the window title, or carry it as `accessibilityLabel` on the element it summarises — React Native’s role list has no `status`, so there is no role to give it here
|
|
516
|
+
|
|
382
517
|
## `<Button>`
|
|
383
518
|
|
|
384
519
|
widget `GtkButton` · takes no text child.
|
|
385
520
|
|
|
386
521
|
| prop | answer | GTK | why |
|
|
387
522
|
|---|---|---|---|
|
|
388
|
-
| `accessibilityHint` |
|
|
389
|
-
| `accessibilityLabel` |
|
|
523
|
+
| `accessibilityHint` | accessible | `Gtk.Accessible.update_property(): help-text` | — |
|
|
524
|
+
| `accessibilityLabel` | accessible | `Gtk.Accessible.update_property(): label` | — |
|
|
390
525
|
| `accessibilityLiveRegion` | refused | — | declares that a screen reader should speak this element when its CONTENT changes. GTK has the announcement — `Gtk.Accessible.announce(message, priority)` since 4.14 — but not the watch: it is an imperative call, and this element’s content is a SUBTREE, which GTK emits no signal for. `<Text>` answers this prop, because its content is one property (`Gtk.Label:label`) and so is both the moment and the message. Elsewhere, call `announce()` on the widget through a ref when you change the content |
|
|
391
|
-
| `accessibilityRole` |
|
|
392
|
-
| `accessibilityState` |
|
|
393
|
-
| `accessible` |
|
|
526
|
+
| `accessibilityRole` | property | `accessible-role` | refuses `drawerlayout`, `horizontalscrollview`, `keyboardkey`, `pager`, `scrollview`, `slidingdrawer`, `summary` — see below |
|
|
527
|
+
| `accessibilityState` | accessible | `busy → Gtk.Accessible.update_state(): busy`, `checked → Gtk.Accessible.update_state(): checked`, `disabled → Gtk.Accessible.update_state(): disabled`, `expanded → Gtk.Accessible.update_state(): expanded`, `selected → Gtk.Accessible.update_state(): selected` | — |
|
|
528
|
+
| `accessible` | ignored | — | asks for two things, and GTK already answers one: every GTK widget is in the accessibility tree, so “this element is an accessibility element” is the desktop default rather than an opt-in. The other thing it asks — merge my whole subtree into ONE accessible node, which is what `accessible={true}` does on iOS — GTK has no mechanism for, and a desktop screen reader navigates the widget tree it is given. To take an element OUT of that tree, set `accessibilityRole="none"`: it is the one prop that writes `Gtk.Accessible:accessible-role`, and two props writing one property is the silent-drop shape this table refuses by name |
|
|
394
529
|
| `color` | refused | — | is the button’s background on Android and its text colour on iOS — one prop, two meanings, and GTK has a third answer: `suggested-action` and `destructive-action` are Adwaita’s own classes for the two cases a colour is usually asking for. Set them from the application stylesheet, or use `<Pressable>` |
|
|
395
530
|
| `disabled` | property | `sensitive` | — |
|
|
396
531
|
| `hasTVPreferredFocus` | ignored | — | an Android TV focus hint |
|
|
@@ -407,36 +542,98 @@ widget `GtkButton` · takes no text child.
|
|
|
407
542
|
| `title` | property | `label` | — |
|
|
408
543
|
| `touchSoundDisabled` | ignored | — | an Android touch sound; a desktop button makes none |
|
|
409
544
|
|
|
545
|
+
`accessibilityRole` is answered for every other value, and these are refused by name:
|
|
546
|
+
|
|
547
|
+
- `drawerlayout` — names Android’s DrawerLayout. The desktop pattern survives the component (`Adw.OverlaySplitView`), but it is a widget rather than a role — drop the prop and give the drawer an `accessibilityLabel`; React Native’s role list has no `navigation`, and the widget carries the rest
|
|
548
|
+
- `horizontalscrollview` — names an Android class, like `scrollview` — use `<ScrollView horizontal>` and drop the prop
|
|
549
|
+
- `keyboardkey` — describes a key of an on-screen keyboard, and neither GTK nor ARIA has a role for one — a desktop keyboard is the input method, not a widget in your tree. If you are building a keypad, the keys are `accessibilityRole="button"`; the container needs no role, because React Native has no spelling for ARIA’s `group` and a plain `<View>` is already the `generic` a screen reader walks through
|
|
550
|
+
- `pager` — names Android’s ViewPager. GTK’s counterpart is a `Gtk.Stack`, and the role a screen reader wants on it is `tablist` when it has visible switchers and nothing at all when it does not
|
|
551
|
+
- `scrollview` — names Android’s ScrollView class rather than a role, and this layer already answers the idea: `<ScrollView>` becomes a `Gtk.ScrolledWindow`, whose accessibility a screen reader reads from the widget itself. Drop the prop
|
|
552
|
+
- `slidingdrawer` — names a deprecated Android class — see `drawerlayout`
|
|
553
|
+
- `summary` — is an iOS trait for the one element VoiceOver reads first when an app launches, and GTK has no counterpart because a desktop screen reader announces the focused widget instead. Put the text in the window title, or carry it as `accessibilityLabel` on the element it summarises — React Native’s role list has no `status`, so there is no role to give it here
|
|
554
|
+
|
|
410
555
|
## `<SafeAreaView>`
|
|
411
556
|
|
|
412
557
|
widget `GtkBox` · takes no text child.
|
|
413
558
|
|
|
414
559
|
| prop | answer | GTK | why |
|
|
415
560
|
|---|---|---|---|
|
|
416
|
-
| `accessibilityHint` |
|
|
417
|
-
| `accessibilityLabel` |
|
|
561
|
+
| `accessibilityHint` | accessible | `Gtk.Accessible.update_property(): help-text` | — |
|
|
562
|
+
| `accessibilityLabel` | accessible | `Gtk.Accessible.update_property(): label` | — |
|
|
418
563
|
| `accessibilityLiveRegion` | refused | — | declares that a screen reader should speak this element when its CONTENT changes. GTK has the announcement — `Gtk.Accessible.announce(message, priority)` since 4.14 — but not the watch: it is an imperative call, and this element’s content is a SUBTREE, which GTK emits no signal for. `<Text>` answers this prop, because its content is one property (`Gtk.Label:label`) and so is both the moment and the message. Elsewhere, call `announce()` on the widget through a ref when you change the content |
|
|
419
|
-
| `accessibilityRole` |
|
|
420
|
-
| `accessibilityState` |
|
|
421
|
-
| `accessible` |
|
|
564
|
+
| `accessibilityRole` | property | `accessible-role` | refuses `drawerlayout`, `horizontalscrollview`, `keyboardkey`, `pager`, `scrollview`, `slidingdrawer`, `summary` — see below |
|
|
565
|
+
| `accessibilityState` | accessible | `busy → Gtk.Accessible.update_state(): busy`, `checked → Gtk.Accessible.update_state(): checked`, `disabled → Gtk.Accessible.update_state(): disabled`, `expanded → Gtk.Accessible.update_state(): expanded`, `selected → Gtk.Accessible.update_state(): selected` | — |
|
|
566
|
+
| `accessible` | ignored | — | asks for two things, and GTK already answers one: every GTK widget is in the accessibility tree, so “this element is an accessibility element” is the desktop default rather than an opt-in. The other thing it asks — merge my whole subtree into ONE accessible node, which is what `accessible={true}` does on iOS — GTK has no mechanism for, and a desktop screen reader navigates the widget tree it is given. To take an element OUT of that tree, set `accessibilityRole="none"`: it is the one prop that writes `Gtk.Accessible:accessible-role`, and two props writing one property is the silent-drop shape this table refuses by name |
|
|
422
567
|
| `id` | refused | — | would write `Gtk.Widget:name`, and so does `testID`. Two props for one property is the silent-drop shape the host refuses by name (`signalTaken`), so this layer picks one: use `testID` |
|
|
423
568
|
| `nativeID` | refused | — | would write `Gtk.Widget:name`, and so does `testID`. Two props for one property is the silent-drop shape the host refuses by name (`signalTaken`), so this layer picks one: use `testID` |
|
|
424
569
|
| `onLayout` | refused | — | GTK reports its allocation through `Gtk.Widget.vfunc_size_allocate`, a SUBCLASS override rather than a signal, so there is no handler to bind. `useWindowDimensions` (tier P2) is the window-level answer |
|
|
425
570
|
| `pointerEvents` | property | `can-target` | — |
|
|
426
571
|
| `testID` | property | `name` | — |
|
|
427
572
|
|
|
573
|
+
`accessibilityRole` is answered for every other value, and these are refused by name:
|
|
574
|
+
|
|
575
|
+
- `drawerlayout` — names Android’s DrawerLayout. The desktop pattern survives the component (`Adw.OverlaySplitView`), but it is a widget rather than a role — drop the prop and give the drawer an `accessibilityLabel`; React Native’s role list has no `navigation`, and the widget carries the rest
|
|
576
|
+
- `horizontalscrollview` — names an Android class, like `scrollview` — use `<ScrollView horizontal>` and drop the prop
|
|
577
|
+
- `keyboardkey` — describes a key of an on-screen keyboard, and neither GTK nor ARIA has a role for one — a desktop keyboard is the input method, not a widget in your tree. If you are building a keypad, the keys are `accessibilityRole="button"`; the container needs no role, because React Native has no spelling for ARIA’s `group` and a plain `<View>` is already the `generic` a screen reader walks through
|
|
578
|
+
- `pager` — names Android’s ViewPager. GTK’s counterpart is a `Gtk.Stack`, and the role a screen reader wants on it is `tablist` when it has visible switchers and nothing at all when it does not
|
|
579
|
+
- `scrollview` — names Android’s ScrollView class rather than a role, and this layer already answers the idea: `<ScrollView>` becomes a `Gtk.ScrolledWindow`, whose accessibility a screen reader reads from the widget itself. Drop the prop
|
|
580
|
+
- `slidingdrawer` — names a deprecated Android class — see `drawerlayout`
|
|
581
|
+
- `summary` — is an iOS trait for the one element VoiceOver reads first when an app launches, and GTK has no counterpart because a desktop screen reader announces the focused widget instead. Put the text in the window title, or carry it as `accessibilityLabel` on the element it summarises — React Native’s role list has no `status`, so there is no role to give it here
|
|
582
|
+
|
|
583
|
+
## `<Modal>`
|
|
584
|
+
|
|
585
|
+
widget `AdwDialog` · children go into `GtkBox` · takes no text child.
|
|
586
|
+
|
|
587
|
+
| prop | answer | GTK | why |
|
|
588
|
+
|---|---|---|---|
|
|
589
|
+
| `accessibilityHint` | accessible | `Gtk.Accessible.update_property(): help-text` | — |
|
|
590
|
+
| `accessibilityLabel` | accessible | `Gtk.Accessible.update_property(): label` | — |
|
|
591
|
+
| `accessibilityLiveRegion` | refused | — | declares that a screen reader should speak this element when its CONTENT changes. GTK has the announcement — `Gtk.Accessible.announce(message, priority)` since 4.14 — but not the watch: it is an imperative call, and this element’s content is a SUBTREE, which GTK emits no signal for. `<Text>` answers this prop, because its content is one property (`Gtk.Label:label`) and so is both the moment and the message. Elsewhere, call `announce()` on the widget through a ref when you change the content |
|
|
592
|
+
| `accessibilityRole` | property | `accessible-role` | refuses `drawerlayout`, `horizontalscrollview`, `keyboardkey`, `pager`, `scrollview`, `slidingdrawer`, `summary` — see below |
|
|
593
|
+
| `accessibilityState` | accessible | `busy → Gtk.Accessible.update_state(): busy`, `checked → Gtk.Accessible.update_state(): checked`, `disabled → Gtk.Accessible.update_state(): disabled`, `expanded → Gtk.Accessible.update_state(): expanded`, `selected → Gtk.Accessible.update_state(): selected` | — |
|
|
594
|
+
| `accessible` | ignored | — | asks for two things, and GTK already answers one: every GTK widget is in the accessibility tree, so “this element is an accessibility element” is the desktop default rather than an opt-in. The other thing it asks — merge my whole subtree into ONE accessible node, which is what `accessible={true}` does on iOS — GTK has no mechanism for, and a desktop screen reader navigates the widget tree it is given. To take an element OUT of that tree, set `accessibilityRole="none"`: it is the one prop that writes `Gtk.Accessible:accessible-role`, and two props writing one property is the silent-drop shape this table refuses by name |
|
|
595
|
+
| `allowSwipeDismissal` | refused | — | swipe-to-dismiss is a touch gesture; the desktop dismissal is Escape or a click on the backdrop, and `onRequestClose` already reports both |
|
|
596
|
+
| `animationType` | refused | — | libadwaita animates the presentation itself and picks the animation from `Adw.Dialog:presentation-mode` — a floating sheet fades and scales, a bottom sheet slides up — so there is no property that selects one. Reach the dialog through a `ref` and set `presentation-mode` if the sheet should arrive from the bottom |
|
|
597
|
+
| `backdropColor` | refused | — | see `transparent` — the dim layer is libadwaita’s and is painted from the theme |
|
|
598
|
+
| `hardwareAccelerated` | ignored | — | an Android window flag; GTK4 renders through GSK either way |
|
|
599
|
+
| `id` | refused | — | would write `Gtk.Widget:name`, and so does `testID`. Two props for one property is the silent-drop shape the host refuses by name (`signalTaken`), so this layer picks one: use `testID` |
|
|
600
|
+
| `modalRef` | refused | — | React Native’s second ref, to the native modal host view. There is one node here and `ref` already hands back its `Gtk.Widget`; two refs to one widget would be two names for the same thing |
|
|
601
|
+
| `nativeID` | refused | — | would write `Gtk.Widget:name`, and so does `testID`. Two props for one property is the silent-drop shape the host refuses by name (`signalTaken`), so this layer picks one: use `testID` |
|
|
602
|
+
| `navigationBarTranslucent` | ignored | — | see `statusBarTranslucent` |
|
|
603
|
+
| `onDismiss` | refused | — | would never fire. The only thing that dismisses a dialog here is the element being unrendered, and the host disconnects a node’s handlers BEFORE it retracts the node — so `Adw.Dialog::closed` is emitted with the handler already gone. A callback that fires for no dismissal at all is worse than one that says so. Do the work in the effect cleanup of whatever renders the `<Modal>` |
|
|
604
|
+
| `onLayout` | refused | — | GTK reports its allocation through `Gtk.Widget.vfunc_size_allocate`, a SUBCLASS override rather than a signal, so there is no handler to bind. `useWindowDimensions` (tier P2) is the window-level answer |
|
|
605
|
+
| `onOrientationChange` | refused | — | see `supportedOrientations` — nothing rotates |
|
|
606
|
+
| `onRequestClose` | event | `close-attempt` | — |
|
|
607
|
+
| `onShow` | event | `map` | — |
|
|
608
|
+
| `presentationStyle` | refused | — | iOS presentation vocabulary. The GTK axis is `Adw.Dialog:presentation-mode` (auto / floating / bottom-sheet), which says WHERE the sheet sits rather than how much it covers, so no member of this maps onto one. Set that property through a `ref` |
|
|
609
|
+
| `statusBarTranslucent` | ignored | — | a desktop window has no status bar to go under |
|
|
610
|
+
| `supportedOrientations` | refused | — | a desktop window has no orientation to lock |
|
|
611
|
+
| `testID` | property | `name` | — |
|
|
612
|
+
| `transparent` | refused | — | an `Adw.Dialog` is always a sheet over libadwaita’s own dimmed backdrop; there is no full-bleed transparent mode, and faking one would be a sheet with no chrome that still dims. For an overlay you paint yourself, put an absolutely positioned `<View>` in a `<View>` — that becomes a `Gtk.Overlay` — instead of a `<Modal>` |
|
|
613
|
+
| `visible` | ignored | — | read directly by the binding: the element is rendered only while it is true |
|
|
614
|
+
|
|
615
|
+
`accessibilityRole` is answered for every other value, and these are refused by name:
|
|
616
|
+
|
|
617
|
+
- `drawerlayout` — names Android’s DrawerLayout. The desktop pattern survives the component (`Adw.OverlaySplitView`), but it is a widget rather than a role — drop the prop and give the drawer an `accessibilityLabel`; React Native’s role list has no `navigation`, and the widget carries the rest
|
|
618
|
+
- `horizontalscrollview` — names an Android class, like `scrollview` — use `<ScrollView horizontal>` and drop the prop
|
|
619
|
+
- `keyboardkey` — describes a key of an on-screen keyboard, and neither GTK nor ARIA has a role for one — a desktop keyboard is the input method, not a widget in your tree. If you are building a keypad, the keys are `accessibilityRole="button"`; the container needs no role, because React Native has no spelling for ARIA’s `group` and a plain `<View>` is already the `generic` a screen reader walks through
|
|
620
|
+
- `pager` — names Android’s ViewPager. GTK’s counterpart is a `Gtk.Stack`, and the role a screen reader wants on it is `tablist` when it has visible switchers and nothing at all when it does not
|
|
621
|
+
- `scrollview` — names Android’s ScrollView class rather than a role, and this layer already answers the idea: `<ScrollView>` becomes a `Gtk.ScrolledWindow`, whose accessibility a screen reader reads from the widget itself. Drop the prop
|
|
622
|
+
- `slidingdrawer` — names a deprecated Android class — see `drawerlayout`
|
|
623
|
+
- `summary` — is an iOS trait for the one element VoiceOver reads first when an app launches, and GTK has no counterpart because a desktop screen reader announces the focused widget instead. Put the text in the window title, or carry it as `accessibilityLabel` on the element it summarises — React Native’s role list has no `status`, so there is no role to give it here
|
|
624
|
+
|
|
428
625
|
## `<Icon>`
|
|
429
626
|
|
|
430
627
|
widget `GtkImage` · takes no text child.
|
|
431
628
|
|
|
432
629
|
| prop | answer | GTK | why |
|
|
433
630
|
|---|---|---|---|
|
|
434
|
-
| `accessibilityHint` |
|
|
435
|
-
| `accessibilityLabel` |
|
|
631
|
+
| `accessibilityHint` | accessible | `Gtk.Accessible.update_property(): help-text` | — |
|
|
632
|
+
| `accessibilityLabel` | accessible | `Gtk.Accessible.update_property(): label` | — |
|
|
436
633
|
| `accessibilityLiveRegion` | refused | — | declares that a screen reader should speak this element when its CONTENT changes. GTK has the announcement — `Gtk.Accessible.announce(message, priority)` since 4.14 — but not the watch: it is an imperative call, and this element’s content is a SUBTREE, which GTK emits no signal for. `<Text>` answers this prop, because its content is one property (`Gtk.Label:label`) and so is both the moment and the message. Elsewhere, call `announce()` on the widget through a ref when you change the content |
|
|
437
|
-
| `accessibilityRole` |
|
|
438
|
-
| `accessibilityState` |
|
|
439
|
-
| `accessible` |
|
|
634
|
+
| `accessibilityRole` | property | `accessible-role` | refuses `drawerlayout`, `horizontalscrollview`, `keyboardkey`, `pager`, `scrollview`, `slidingdrawer`, `summary` — see below |
|
|
635
|
+
| `accessibilityState` | accessible | `busy → Gtk.Accessible.update_state(): busy`, `checked → Gtk.Accessible.update_state(): checked`, `disabled → Gtk.Accessible.update_state(): disabled`, `expanded → Gtk.Accessible.update_state(): expanded`, `selected → Gtk.Accessible.update_state(): selected` | — |
|
|
636
|
+
| `accessible` | ignored | — | asks for two things, and GTK already answers one: every GTK widget is in the accessibility tree, so “this element is an accessibility element” is the desktop default rather than an opt-in. The other thing it asks — merge my whole subtree into ONE accessible node, which is what `accessible={true}` does on iOS — GTK has no mechanism for, and a desktop screen reader navigates the widget tree it is given. To take an element OUT of that tree, set `accessibilityRole="none"`: it is the one prop that writes `Gtk.Accessible:accessible-role`, and two props writing one property is the silent-drop shape this table refuses by name |
|
|
440
637
|
| `color` | style | `style: color` | — |
|
|
441
638
|
| `id` | refused | — | would write `Gtk.Widget:name`, and so does `testID`. Two props for one property is the silent-drop shape the host refuses by name (`signalTaken`), so this layer picks one: use `testID` |
|
|
442
639
|
| `name` | property | `icon-name` | — |
|
|
@@ -445,18 +642,28 @@ widget `GtkImage` · takes no text child.
|
|
|
445
642
|
| `size` | property | `pixel-size` | — |
|
|
446
643
|
| `testID` | property | `name` | — |
|
|
447
644
|
|
|
645
|
+
`accessibilityRole` is answered for every other value, and these are refused by name:
|
|
646
|
+
|
|
647
|
+
- `drawerlayout` — names Android’s DrawerLayout. The desktop pattern survives the component (`Adw.OverlaySplitView`), but it is a widget rather than a role — drop the prop and give the drawer an `accessibilityLabel`; React Native’s role list has no `navigation`, and the widget carries the rest
|
|
648
|
+
- `horizontalscrollview` — names an Android class, like `scrollview` — use `<ScrollView horizontal>` and drop the prop
|
|
649
|
+
- `keyboardkey` — describes a key of an on-screen keyboard, and neither GTK nor ARIA has a role for one — a desktop keyboard is the input method, not a widget in your tree. If you are building a keypad, the keys are `accessibilityRole="button"`; the container needs no role, because React Native has no spelling for ARIA’s `group` and a plain `<View>` is already the `generic` a screen reader walks through
|
|
650
|
+
- `pager` — names Android’s ViewPager. GTK’s counterpart is a `Gtk.Stack`, and the role a screen reader wants on it is `tablist` when it has visible switchers and nothing at all when it does not
|
|
651
|
+
- `scrollview` — names Android’s ScrollView class rather than a role, and this layer already answers the idea: `<ScrollView>` becomes a `Gtk.ScrolledWindow`, whose accessibility a screen reader reads from the widget itself. Drop the prop
|
|
652
|
+
- `slidingdrawer` — names a deprecated Android class — see `drawerlayout`
|
|
653
|
+
- `summary` — is an iOS trait for the one element VoiceOver reads first when an app launches, and GTK has no counterpart because a desktop screen reader announces the focused widget instead. Put the text in the window title, or carry it as `accessibilityLabel` on the element it summarises — React Native’s role list has no `status`, so there is no role to give it here
|
|
654
|
+
|
|
448
655
|
## `<KeyboardAvoidingView>`
|
|
449
656
|
|
|
450
657
|
widget `GtkBox` · takes no text child.
|
|
451
658
|
|
|
452
659
|
| prop | answer | GTK | why |
|
|
453
660
|
|---|---|---|---|
|
|
454
|
-
| `accessibilityHint` |
|
|
455
|
-
| `accessibilityLabel` |
|
|
661
|
+
| `accessibilityHint` | accessible | `Gtk.Accessible.update_property(): help-text` | — |
|
|
662
|
+
| `accessibilityLabel` | accessible | `Gtk.Accessible.update_property(): label` | — |
|
|
456
663
|
| `accessibilityLiveRegion` | refused | — | declares that a screen reader should speak this element when its CONTENT changes. GTK has the announcement — `Gtk.Accessible.announce(message, priority)` since 4.14 — but not the watch: it is an imperative call, and this element’s content is a SUBTREE, which GTK emits no signal for. `<Text>` answers this prop, because its content is one property (`Gtk.Label:label`) and so is both the moment and the message. Elsewhere, call `announce()` on the widget through a ref when you change the content |
|
|
457
|
-
| `accessibilityRole` |
|
|
458
|
-
| `accessibilityState` |
|
|
459
|
-
| `accessible` |
|
|
664
|
+
| `accessibilityRole` | property | `accessible-role` | refuses `drawerlayout`, `horizontalscrollview`, `keyboardkey`, `pager`, `scrollview`, `slidingdrawer`, `summary` — see below |
|
|
665
|
+
| `accessibilityState` | accessible | `busy → Gtk.Accessible.update_state(): busy`, `checked → Gtk.Accessible.update_state(): checked`, `disabled → Gtk.Accessible.update_state(): disabled`, `expanded → Gtk.Accessible.update_state(): expanded`, `selected → Gtk.Accessible.update_state(): selected` | — |
|
|
666
|
+
| `accessible` | ignored | — | asks for two things, and GTK already answers one: every GTK widget is in the accessibility tree, so “this element is an accessibility element” is the desktop default rather than an opt-in. The other thing it asks — merge my whole subtree into ONE accessible node, which is what `accessible={true}` does on iOS — GTK has no mechanism for, and a desktop screen reader navigates the widget tree it is given. To take an element OUT of that tree, set `accessibilityRole="none"`: it is the one prop that writes `Gtk.Accessible:accessible-role`, and two props writing one property is the silent-drop shape this table refuses by name |
|
|
460
667
|
| `behavior` | ignored | — | describes how to move out of an on-screen keyboard’s way, and none appears |
|
|
461
668
|
| `contentContainerStyle` | refused | — | styles the inner view React Native adds to do the avoiding, and there is no avoiding here — so there is no second node to style. Put it on `style`, which lands on the one box this element is |
|
|
462
669
|
| `enabled` | ignored | — | see `behavior` — the avoidance is already off |
|
|
@@ -467,6 +674,16 @@ widget `GtkBox` · takes no text child.
|
|
|
467
674
|
| `pointerEvents` | property | `can-target` | — |
|
|
468
675
|
| `testID` | property | `name` | — |
|
|
469
676
|
|
|
677
|
+
`accessibilityRole` is answered for every other value, and these are refused by name:
|
|
678
|
+
|
|
679
|
+
- `drawerlayout` — names Android’s DrawerLayout. The desktop pattern survives the component (`Adw.OverlaySplitView`), but it is a widget rather than a role — drop the prop and give the drawer an `accessibilityLabel`; React Native’s role list has no `navigation`, and the widget carries the rest
|
|
680
|
+
- `horizontalscrollview` — names an Android class, like `scrollview` — use `<ScrollView horizontal>` and drop the prop
|
|
681
|
+
- `keyboardkey` — describes a key of an on-screen keyboard, and neither GTK nor ARIA has a role for one — a desktop keyboard is the input method, not a widget in your tree. If you are building a keypad, the keys are `accessibilityRole="button"`; the container needs no role, because React Native has no spelling for ARIA’s `group` and a plain `<View>` is already the `generic` a screen reader walks through
|
|
682
|
+
- `pager` — names Android’s ViewPager. GTK’s counterpart is a `Gtk.Stack`, and the role a screen reader wants on it is `tablist` when it has visible switchers and nothing at all when it does not
|
|
683
|
+
- `scrollview` — names Android’s ScrollView class rather than a role, and this layer already answers the idea: `<ScrollView>` becomes a `Gtk.ScrolledWindow`, whose accessibility a screen reader reads from the widget itself. Drop the prop
|
|
684
|
+
- `slidingdrawer` — names a deprecated Android class — see `drawerlayout`
|
|
685
|
+
- `summary` — is an iOS trait for the one element VoiceOver reads first when an app launches, and GTK has no counterpart because a desktop screen reader announces the focused widget instead. Put the text in the window title, or carry it as `accessibilityLabel` on the element it summarises — React Native’s role list has no `status`, so there is no role to give it here
|
|
686
|
+
|
|
470
687
|
## `<FlatList>`
|
|
471
688
|
|
|
472
689
|
widget `GtkBox` · children go into `GtkScrolledWindow` · takes no text child.
|
|
@@ -477,12 +694,12 @@ widget `GtkBox` · children go into `GtkScrolledWindow` · takes no text child.
|
|
|
477
694
|
| `ListEmptyComponent` | ignored | — | rendered by the component instead of the scroller |
|
|
478
695
|
| `ListFooterComponent` | ignored | — | rendered by the component, after the scroller |
|
|
479
696
|
| `ListHeaderComponent` | ignored | — | rendered by the component, before the scroller |
|
|
480
|
-
| `accessibilityHint` |
|
|
481
|
-
| `accessibilityLabel` |
|
|
697
|
+
| `accessibilityHint` | accessible | `Gtk.Accessible.update_property(): help-text` | — |
|
|
698
|
+
| `accessibilityLabel` | accessible | `Gtk.Accessible.update_property(): label` | — |
|
|
482
699
|
| `accessibilityLiveRegion` | refused | — | declares that a screen reader should speak this element when its CONTENT changes. GTK has the announcement — `Gtk.Accessible.announce(message, priority)` since 4.14 — but not the watch: it is an imperative call, and this element’s content is a SUBTREE, which GTK emits no signal for. `<Text>` answers this prop, because its content is one property (`Gtk.Label:label`) and so is both the moment and the message. Elsewhere, call `announce()` on the widget through a ref when you change the content |
|
|
483
|
-
| `accessibilityRole` |
|
|
484
|
-
| `accessibilityState` |
|
|
485
|
-
| `accessible` |
|
|
700
|
+
| `accessibilityRole` | property | `accessible-role` | refuses `drawerlayout`, `horizontalscrollview`, `keyboardkey`, `pager`, `scrollview`, `slidingdrawer`, `summary` — see below |
|
|
701
|
+
| `accessibilityState` | accessible | `busy → Gtk.Accessible.update_state(): busy`, `checked → Gtk.Accessible.update_state(): checked`, `disabled → Gtk.Accessible.update_state(): disabled`, `expanded → Gtk.Accessible.update_state(): expanded`, `selected → Gtk.Accessible.update_state(): selected` | — |
|
|
702
|
+
| `accessible` | ignored | — | asks for two things, and GTK already answers one: every GTK widget is in the accessibility tree, so “this element is an accessibility element” is the desktop default rather than an opt-in. The other thing it asks — merge my whole subtree into ONE accessible node, which is what `accessible={true}` does on iOS — GTK has no mechanism for, and a desktop screen reader navigates the widget tree it is given. To take an element OUT of that tree, set `accessibilityRole="none"`: it is the one prop that writes `Gtk.Accessible:accessible-role`, and two props writing one property is the silent-drop shape this table refuses by name |
|
|
486
703
|
| `columnWrapperStyle` | refused | — | see `numColumns` |
|
|
487
704
|
| `contentContainerStyle` | refused | — | styles the box React Native puts the rows in, and there is no such box: `Gtk.ListView` builds each row from the factory and owns the space between them. Style the row inside `renderItem`, or the list itself through `style` |
|
|
488
705
|
| `data` | ignored | — | read by the component, which drives the Gio.ListStore from it |
|
|
@@ -523,3 +740,13 @@ widget `GtkBox` · children go into `GtkScrolledWindow` · takes no text child.
|
|
|
523
740
|
| `viewabilityConfig` | refused | — | see `onViewableItemsChanged` |
|
|
524
741
|
| `viewabilityConfigCallbackPairs` | refused | — | see `onViewableItemsChanged` |
|
|
525
742
|
| `windowSize` | refused | — | tunes React Native’s own virtualisation, and `Gtk.ListView` does that job itself — it creates and recycles rows through the factory as the viewport moves (measured: 205 of 500 rows set up in a 400×300 window) and installs no property that changes the batching. There is nothing for this to set |
|
|
743
|
+
|
|
744
|
+
`accessibilityRole` is answered for every other value, and these are refused by name:
|
|
745
|
+
|
|
746
|
+
- `drawerlayout` — names Android’s DrawerLayout. The desktop pattern survives the component (`Adw.OverlaySplitView`), but it is a widget rather than a role — drop the prop and give the drawer an `accessibilityLabel`; React Native’s role list has no `navigation`, and the widget carries the rest
|
|
747
|
+
- `horizontalscrollview` — names an Android class, like `scrollview` — use `<ScrollView horizontal>` and drop the prop
|
|
748
|
+
- `keyboardkey` — describes a key of an on-screen keyboard, and neither GTK nor ARIA has a role for one — a desktop keyboard is the input method, not a widget in your tree. If you are building a keypad, the keys are `accessibilityRole="button"`; the container needs no role, because React Native has no spelling for ARIA’s `group` and a plain `<View>` is already the `generic` a screen reader walks through
|
|
749
|
+
- `pager` — names Android’s ViewPager. GTK’s counterpart is a `Gtk.Stack`, and the role a screen reader wants on it is `tablist` when it has visible switchers and nothing at all when it does not
|
|
750
|
+
- `scrollview` — names Android’s ScrollView class rather than a role, and this layer already answers the idea: `<ScrollView>` becomes a `Gtk.ScrolledWindow`, whose accessibility a screen reader reads from the widget itself. Drop the prop
|
|
751
|
+
- `slidingdrawer` — names a deprecated Android class — see `drawerlayout`
|
|
752
|
+
- `summary` — is an iOS trait for the one element VoiceOver reads first when an app launches, and GTK has no counterpart because a desktop screen reader announces the focused widget instead. Put the text in the window title, or carry it as `accessibilityLabel` on the element it summarises — React Native’s role list has no `status`, so there is no role to give it here
|