Navigator
: refactor to TypeScript
#35214
Conversation
Size Change: +156 B (0%) Total Size: 1.07 MB
|
Filename | Size |
---|---|
build/a11y/index.min.js |
931 B |
build/admin-manifest/index.min.js |
1.09 kB |
build/annotations/index.min.js |
2.7 kB |
build/api-fetch/index.min.js |
2.21 kB |
build/autop/index.min.js |
2.08 kB |
build/blob/index.min.js |
459 B |
build/block-directory/index.min.js |
6.19 kB |
build/block-directory/style-rtl.css |
1.01 kB |
build/block-directory/style.css |
1.01 kB |
build/block-editor/default-editor-styles-rtl.css |
378 B |
build/block-editor/default-editor-styles.css |
378 B |
build/block-editor/style-rtl.css |
13.9 kB |
build/block-editor/style.css |
13.9 kB |
build/block-library/blocks/archives/editor-rtl.css |
61 B |
build/block-library/blocks/archives/editor.css |
60 B |
build/block-library/blocks/archives/style-rtl.css |
65 B |
build/block-library/blocks/archives/style.css |
65 B |
build/block-library/blocks/audio/editor-rtl.css |
58 B |
build/block-library/blocks/audio/editor.css |
58 B |
build/block-library/blocks/audio/style-rtl.css |
111 B |
build/block-library/blocks/audio/style.css |
111 B |
build/block-library/blocks/audio/theme-rtl.css |
125 B |
build/block-library/blocks/audio/theme.css |
125 B |
build/block-library/blocks/block/editor-rtl.css |
161 B |
build/block-library/blocks/block/editor.css |
161 B |
build/block-library/blocks/button/editor-rtl.css |
474 B |
build/block-library/blocks/button/editor.css |
474 B |
build/block-library/blocks/button/style-rtl.css |
600 B |
build/block-library/blocks/button/style.css |
600 B |
build/block-library/blocks/buttons/editor-rtl.css |
315 B |
build/block-library/blocks/buttons/editor.css |
315 B |
build/block-library/blocks/buttons/style-rtl.css |
370 B |
build/block-library/blocks/buttons/style.css |
370 B |
build/block-library/blocks/calendar/style-rtl.css |
207 B |
build/block-library/blocks/calendar/style.css |
207 B |
build/block-library/blocks/categories/editor-rtl.css |
84 B |
build/block-library/blocks/categories/editor.css |
83 B |
build/block-library/blocks/categories/style-rtl.css |
79 B |
build/block-library/blocks/categories/style.css |
79 B |
build/block-library/blocks/code/style-rtl.css |
90 B |
build/block-library/blocks/code/style.css |
90 B |
build/block-library/blocks/code/theme-rtl.css |
131 B |
build/block-library/blocks/code/theme.css |
131 B |
build/block-library/blocks/columns/editor-rtl.css |
206 B |
build/block-library/blocks/columns/editor.css |
205 B |
build/block-library/blocks/columns/style-rtl.css |
497 B |
build/block-library/blocks/columns/style.css |
496 B |
build/block-library/blocks/cover/editor-rtl.css |
666 B |
build/block-library/blocks/cover/editor.css |
670 B |
build/block-library/blocks/cover/style-rtl.css |
1.23 kB |
build/block-library/blocks/cover/style.css |
1.23 kB |
build/block-library/blocks/embed/editor-rtl.css |
488 B |
build/block-library/blocks/embed/editor.css |
488 B |
build/block-library/blocks/embed/style-rtl.css |
417 B |
build/block-library/blocks/embed/style.css |
417 B |
build/block-library/blocks/embed/theme-rtl.css |
124 B |
build/block-library/blocks/embed/theme.css |
124 B |
build/block-library/blocks/file/editor-rtl.css |
300 B |
build/block-library/blocks/file/editor.css |
300 B |
build/block-library/blocks/file/style-rtl.css |
255 B |
build/block-library/blocks/file/style.css |
255 B |
build/block-library/blocks/file/view.min.js |
322 B |
build/block-library/blocks/freeform/editor-rtl.css |
2.44 kB |
build/block-library/blocks/freeform/editor.css |
2.44 kB |
build/block-library/blocks/gallery/editor-rtl.css |
977 B |
build/block-library/blocks/gallery/editor.css |
982 B |
build/block-library/blocks/gallery/style-rtl.css |
1.6 kB |
build/block-library/blocks/gallery/style.css |
1.59 kB |
build/block-library/blocks/gallery/theme-rtl.css |
122 B |
build/block-library/blocks/gallery/theme.css |
122 B |
build/block-library/blocks/group/editor-rtl.css |
159 B |
build/block-library/blocks/group/editor.css |
159 B |
build/block-library/blocks/group/style-rtl.css |
57 B |
build/block-library/blocks/group/style.css |
57 B |
build/block-library/blocks/group/theme-rtl.css |
78 B |
build/block-library/blocks/group/theme.css |
78 B |
build/block-library/blocks/heading/style-rtl.css |
114 B |
build/block-library/blocks/heading/style.css |
114 B |
build/block-library/blocks/home-link/style-rtl.css |
247 B |
build/block-library/blocks/home-link/style.css |
247 B |
build/block-library/blocks/html/editor-rtl.css |
332 B |
build/block-library/blocks/html/editor.css |
333 B |
build/block-library/blocks/image/editor-rtl.css |
728 B |
build/block-library/blocks/image/editor.css |
728 B |
build/block-library/blocks/image/style-rtl.css |
482 B |
build/block-library/blocks/image/style.css |
487 B |
build/block-library/blocks/image/theme-rtl.css |
124 B |
build/block-library/blocks/image/theme.css |
124 B |
build/block-library/blocks/latest-comments/style-rtl.css |
284 B |
build/block-library/blocks/latest-comments/style.css |
284 B |
build/block-library/blocks/latest-posts/editor-rtl.css |
137 B |
build/block-library/blocks/latest-posts/editor.css |
137 B |
build/block-library/blocks/latest-posts/style-rtl.css |
528 B |
build/block-library/blocks/latest-posts/style.css |
527 B |
build/block-library/blocks/list/style-rtl.css |
94 B |
build/block-library/blocks/list/style.css |
94 B |
build/block-library/blocks/media-text/editor-rtl.css |
266 B |
build/block-library/blocks/media-text/editor.css |
263 B |
build/block-library/blocks/media-text/style-rtl.css |
488 B |
build/block-library/blocks/media-text/style.css |
485 B |
build/block-library/blocks/more/editor-rtl.css |
431 B |
build/block-library/blocks/more/editor.css |
431 B |
build/block-library/blocks/navigation-link/editor-rtl.css |
568 B |
build/block-library/blocks/navigation-link/editor.css |
570 B |
build/block-library/blocks/navigation-link/style-rtl.css |
94 B |
build/block-library/blocks/navigation-link/style.css |
94 B |
build/block-library/blocks/navigation-submenu/editor-rtl.css |
300 B |
build/block-library/blocks/navigation-submenu/editor.css |
299 B |
build/block-library/blocks/navigation-submenu/style-rtl.css |
195 B |
build/block-library/blocks/navigation-submenu/style.css |
195 B |
build/block-library/blocks/navigation-submenu/view.min.js |
343 B |
build/block-library/blocks/navigation/editor-rtl.css |
1.72 kB |
build/block-library/blocks/navigation/editor.css |
1.72 kB |
build/block-library/blocks/navigation/style-rtl.css |
1.62 kB |
build/block-library/blocks/navigation/style.css |
1.61 kB |
build/block-library/blocks/navigation/view.min.js |
2.74 kB |
build/block-library/blocks/nextpage/editor-rtl.css |
395 B |
build/block-library/blocks/nextpage/editor.css |
395 B |
build/block-library/blocks/page-list/editor-rtl.css |
377 B |
build/block-library/blocks/page-list/editor.css |
377 B |
build/block-library/blocks/page-list/style-rtl.css |
198 B |
build/block-library/blocks/page-list/style.css |
198 B |
build/block-library/blocks/paragraph/editor-rtl.css |
157 B |
build/block-library/blocks/paragraph/editor.css |
157 B |
build/block-library/blocks/paragraph/style-rtl.css |
273 B |
build/block-library/blocks/paragraph/style.css |
273 B |
build/block-library/blocks/post-author/editor-rtl.css |
210 B |
build/block-library/blocks/post-author/editor.css |
210 B |
build/block-library/blocks/post-author/style-rtl.css |
182 B |
build/block-library/blocks/post-author/style.css |
181 B |
build/block-library/blocks/post-comments-form/style-rtl.css |
140 B |
build/block-library/blocks/post-comments-form/style.css |
140 B |
build/block-library/blocks/post-comments/style-rtl.css |
360 B |
build/block-library/blocks/post-comments/style.css |
359 B |
build/block-library/blocks/post-content/editor-rtl.css |
138 B |
build/block-library/blocks/post-content/editor.css |
138 B |
build/block-library/blocks/post-excerpt/editor-rtl.css |
73 B |
build/block-library/blocks/post-excerpt/editor.css |
73 B |
build/block-library/blocks/post-excerpt/style-rtl.css |
69 B |
build/block-library/blocks/post-excerpt/style.css |
69 B |
build/block-library/blocks/post-featured-image/editor-rtl.css |
398 B |
build/block-library/blocks/post-featured-image/editor.css |
398 B |
build/block-library/blocks/post-featured-image/style-rtl.css |
143 B |
build/block-library/blocks/post-featured-image/style.css |
143 B |
build/block-library/blocks/post-template/editor-rtl.css |
99 B |
build/block-library/blocks/post-template/editor.css |
98 B |
build/block-library/blocks/post-template/style-rtl.css |
391 B |
build/block-library/blocks/post-template/style.css |
392 B |
build/block-library/blocks/post-terms/style-rtl.css |
73 B |
build/block-library/blocks/post-terms/style.css |
73 B |
build/block-library/blocks/post-title/style-rtl.css |
60 B |
build/block-library/blocks/post-title/style.css |
60 B |
build/block-library/blocks/preformatted/style-rtl.css |
103 B |
build/block-library/blocks/preformatted/style.css |
103 B |
build/block-library/blocks/pullquote/editor-rtl.css |
198 B |
build/block-library/blocks/pullquote/editor.css |
198 B |
build/block-library/blocks/pullquote/style-rtl.css |
378 B |
build/block-library/blocks/pullquote/style.css |
378 B |
build/block-library/blocks/pullquote/theme-rtl.css |
167 B |
build/block-library/blocks/pullquote/theme.css |
167 B |
build/block-library/blocks/query-pagination-numbers/editor-rtl.css |
122 B |
build/block-library/blocks/query-pagination-numbers/editor.css |
121 B |
build/block-library/blocks/query-pagination/editor-rtl.css |
262 B |
build/block-library/blocks/query-pagination/editor.css |
255 B |
build/block-library/blocks/query-pagination/style-rtl.css |
234 B |
build/block-library/blocks/query-pagination/style.css |
231 B |
build/block-library/blocks/query-title/editor-rtl.css |
85 B |
build/block-library/blocks/query-title/editor.css |
85 B |
build/block-library/blocks/query/editor-rtl.css |
131 B |
build/block-library/blocks/query/editor.css |
132 B |
build/block-library/blocks/quote/style-rtl.css |
187 B |
build/block-library/blocks/quote/style.css |
187 B |
build/block-library/blocks/quote/theme-rtl.css |
220 B |
build/block-library/blocks/quote/theme.css |
222 B |
build/block-library/blocks/rss/editor-rtl.css |
202 B |
build/block-library/blocks/rss/editor.css |
204 B |
build/block-library/blocks/rss/style-rtl.css |
289 B |
build/block-library/blocks/rss/style.css |
288 B |
build/block-library/blocks/search/editor-rtl.css |
165 B |
build/block-library/blocks/search/editor.css |
165 B |
build/block-library/blocks/search/style-rtl.css |
374 B |
build/block-library/blocks/search/style.css |
375 B |
build/block-library/blocks/search/theme-rtl.css |
64 B |
build/block-library/blocks/search/theme.css |
64 B |
build/block-library/blocks/separator/editor-rtl.css |
99 B |
build/block-library/blocks/separator/editor.css |
99 B |
build/block-library/blocks/separator/style-rtl.css |
250 B |
build/block-library/blocks/separator/style.css |
250 B |
build/block-library/blocks/separator/theme-rtl.css |
172 B |
build/block-library/blocks/separator/theme.css |
172 B |
build/block-library/blocks/shortcode/editor-rtl.css |
474 B |
build/block-library/blocks/shortcode/editor.css |
474 B |
build/block-library/blocks/site-logo/editor-rtl.css |
462 B |
build/block-library/blocks/site-logo/editor.css |
464 B |
build/block-library/blocks/site-logo/style-rtl.css |
153 B |
build/block-library/blocks/site-logo/style.css |
153 B |
build/block-library/blocks/site-tagline/editor-rtl.css |
86 B |
build/block-library/blocks/site-tagline/editor.css |
86 B |
build/block-library/blocks/site-title/editor-rtl.css |
84 B |
build/block-library/blocks/site-title/editor.css |
84 B |
build/block-library/blocks/social-link/editor-rtl.css |
165 B |
build/block-library/blocks/social-link/editor.css |
165 B |
build/block-library/blocks/social-links/editor-rtl.css |
812 B |
build/block-library/blocks/social-links/editor.css |
811 B |
build/block-library/blocks/social-links/style-rtl.css |
1.3 kB |
build/block-library/blocks/social-links/style.css |
1.3 kB |
build/block-library/blocks/spacer/editor-rtl.css |
307 B |
build/block-library/blocks/spacer/editor.css |
307 B |
build/block-library/blocks/spacer/style-rtl.css |
48 B |
build/block-library/blocks/spacer/style.css |
48 B |
build/block-library/blocks/table/editor-rtl.css |
471 B |
build/block-library/blocks/table/editor.css |
472 B |
build/block-library/blocks/table/style-rtl.css |
481 B |
build/block-library/blocks/table/style.css |
481 B |
build/block-library/blocks/table/theme-rtl.css |
188 B |
build/block-library/blocks/table/theme.css |
188 B |
build/block-library/blocks/tag-cloud/style-rtl.css |
146 B |
build/block-library/blocks/tag-cloud/style.css |
146 B |
build/block-library/blocks/template-part/editor-rtl.css |
636 B |
build/block-library/blocks/template-part/editor.css |
635 B |
build/block-library/blocks/template-part/theme-rtl.css |
101 B |
build/block-library/blocks/template-part/theme.css |
101 B |
build/block-library/blocks/term-description/editor-rtl.css |
90 B |
build/block-library/blocks/term-description/editor.css |
90 B |
build/block-library/blocks/text-columns/editor-rtl.css |
95 B |
build/block-library/blocks/text-columns/editor.css |
95 B |
build/block-library/blocks/text-columns/style-rtl.css |
166 B |
build/block-library/blocks/text-columns/style.css |
166 B |
build/block-library/blocks/verse/style-rtl.css |
87 B |
build/block-library/blocks/verse/style.css |
87 B |
build/block-library/blocks/video/editor-rtl.css |
571 B |
build/block-library/blocks/video/editor.css |
572 B |
build/block-library/blocks/video/style-rtl.css |
173 B |
build/block-library/blocks/video/style.css |
173 B |
build/block-library/blocks/video/theme-rtl.css |
124 B |
build/block-library/blocks/video/theme.css |
124 B |
build/block-library/common-rtl.css |
853 B |
build/block-library/common.css |
849 B |
build/block-library/editor-rtl.css |
9.76 kB |
build/block-library/editor.css |
9.75 kB |
build/block-library/index.min.js |
146 kB |
build/block-library/reset-rtl.css |
536 B |
build/block-library/reset.css |
536 B |
build/block-library/style-rtl.css |
10.4 kB |
build/block-library/style.css |
10.4 kB |
build/block-library/theme-rtl.css |
665 B |
build/block-library/theme.css |
669 B |
build/block-serialization-default-parser/index.min.js |
1.09 kB |
build/block-serialization-spec-parser/index.min.js |
2.79 kB |
build/components/style-rtl.css |
15.9 kB |
build/components/style.css |
15.9 kB |
build/compose/index.min.js |
10.3 kB |
build/core-data/index.min.js |
12.3 kB |
build/customize-widgets/index.min.js |
11.1 kB |
build/customize-widgets/style-rtl.css |
1.5 kB |
build/customize-widgets/style.css |
1.49 kB |
build/data-controls/index.min.js |
614 B |
build/data/index.min.js |
7.1 kB |
build/date/index.min.js |
31.5 kB |
build/deprecated/index.min.js |
428 B |
build/dom-ready/index.min.js |
304 B |
build/dom/index.min.js |
4.45 kB |
build/edit-navigation/index.min.js |
15.3 kB |
build/edit-navigation/style-rtl.css |
3.71 kB |
build/edit-navigation/style.css |
3.7 kB |
build/edit-post/classic-rtl.css |
492 B |
build/edit-post/classic.css |
494 B |
build/edit-post/index.min.js |
29.2 kB |
build/edit-post/style-rtl.css |
7.19 kB |
build/edit-post/style.css |
7.18 kB |
build/edit-site/style-rtl.css |
5.36 kB |
build/edit-site/style.css |
5.36 kB |
build/edit-widgets/index.min.js |
15.7 kB |
build/edit-widgets/style-rtl.css |
4.1 kB |
build/edit-widgets/style.css |
4.1 kB |
build/editor/index.min.js |
37.4 kB |
build/editor/style-rtl.css |
3.76 kB |
build/editor/style.css |
3.75 kB |
build/element/index.min.js |
3.17 kB |
build/escape-html/index.min.js |
517 B |
build/format-library/index.min.js |
5.68 kB |
build/format-library/style-rtl.css |
571 B |
build/format-library/style.css |
571 B |
build/hooks/index.min.js |
1.55 kB |
build/html-entities/index.min.js |
424 B |
build/i18n/index.min.js |
3.6 kB |
build/is-shallow-equal/index.min.js |
501 B |
build/keyboard-shortcuts/index.min.js |
1.72 kB |
build/keycodes/index.min.js |
1.3 kB |
build/list-reusable-blocks/index.min.js |
1.85 kB |
build/list-reusable-blocks/style-rtl.css |
838 B |
build/list-reusable-blocks/style.css |
838 B |
build/media-utils/index.min.js |
2.92 kB |
build/notices/index.min.js |
845 B |
build/nux/index.min.js |
2.03 kB |
build/nux/style-rtl.css |
747 B |
build/nux/style.css |
743 B |
build/plugins/index.min.js |
1.83 kB |
build/primitives/index.min.js |
921 B |
build/priority-queue/index.min.js |
582 B |
build/react-i18n/index.min.js |
671 B |
build/redux-routine/index.min.js |
2.63 kB |
build/reusable-blocks/index.min.js |
2.28 kB |
build/reusable-blocks/style-rtl.css |
256 B |
build/reusable-blocks/style.css |
256 B |
build/rich-text/index.min.js |
10.6 kB |
build/server-side-render/index.min.js |
1.5 kB |
build/shortcode/index.min.js |
1.48 kB |
build/token-list/index.min.js |
562 B |
build/url/index.min.js |
1.74 kB |
build/viewport/index.min.js |
1.02 kB |
build/warning/index.min.js |
248 B |
build/widgets/index.min.js |
7.11 kB |
build/widgets/style-rtl.css |
1.16 kB |
build/widgets/style.css |
1.16 kB |
build/wordcount/index.min.js |
1.04 kB |
props: WordPressComponentProps< NavigatorProviderProps, 'div' >, | ||
forwardedRef: Ref< any > | ||
) { | ||
const { initialPath, children, ...otherProps } = useContextSystem( |
Why do we need to use this context system?
Using the context system can be useful for the future, so that this component can read from it — for example, I can see how a parent NavigatorProvider
could "sync" with a nested NavigatorProvider
.
The contest system is a core functionality for the new generation of components that we've been building. Using it here would also align this component to what we recommend in the contributing guidelines for new components.
But I also understand if at this point we may think this is not needed.
I guess I'm usually in the camp that if you don't need it now, don't add it because you don't know what you'll want to do in the future, priorities can change...
} ); | ||
|
||
return ( | ||
<View ref={ forwardedRef } { ...otherProps }> |
Why do we show a view at all, this is probably going to create an extra div for nothing.
Having a wrapping div
around all the "screens" made sense to me, and I think is going to be necessary to fix the scrollbar bug (flagged initially here) by setting overflow: hidden
on it.
On top of that, it offers a component to attach a forwardedRef
to, together with all of the remaining props that may be passed to this component (given that we mark its props as WordPressComponentProps
).
I don't like overflow: hidden
as a way to solve the scrolling issue, we can't use as otherwise we may risk hiding popovers shown inside that div potentially. For me it's more a way to hide the issue and not solve it.
* ); | ||
* ``` | ||
*/ | ||
const ConnectedNavigatorProvider = contextConnect( |
What is this for?
It connects the component to the Context System, so that the useContextSystem
can be used to read from the context. It also does more, like forwarding refs, adding a display name and a CSS selector (see here).
It is a core functionality for the new generation of components that we've been building.
>; | ||
|
||
function NavigatorScreen( props: Props, forwardedRef: Ref< any > ) { | ||
const { children, path, ...otherProps } = useContextSystem( |
I guess the same question above applies here.
// Props specific to `framer-motion` can't be currently passed to `NavigatorScreen`, | ||
// as some of them would overlap with HTML props (e.g. `onAnimationStart`, ...) | ||
type Props = Omit< | ||
WordPressComponentProps< NavigatorScreenProps, 'div', false >, |
What does WordPressComponentProps
do? In other words, why NavigatorScreenProps
is not enough as Props type for this component?
This is the basic type that we've been using for all recently-built component's props (definition).
It augments NavigatorScreenProps
with all of the props that a div
HTML element may accept. In this case, the false
means that we're marking NavigatorScreen
as non-polymorphic.
|
||
if ( prefersReducedMotion ) { | ||
return ( | ||
<View ref={ forwardedRef } { ...otherProps }> |
What does View
bring compared to div
?
View
is the basic building block of the components library. Every component that has been build recently uses View
under the hood. In its default state, it renders a div
, but it then enables other features (like polymorphism)
Looking at the code of the View
component, it's not clear to me what that does bring to high-level components?
Left some questions, the typing looks good in general (and learned a few tricks) but I felt that there's extra complexity in the components that might not be needed or that I at least don't understand yet.
ciampo commentedSep 29, 2021
•
edited
Description
Part of #34907
Changes in this PR:
Navigator*
components to TypeScript (including adding thenavigator/**
folder totsconfig.json
)NavigatorProvider
andNavigatorScreen
components to the Context SystemThere are a few minor runtime changes, which were applied when connecting the components to the Context System (via the
useContextSystem
hook):NavigatorProvider
component have been wrapped in aView
componentNavigationScreen
component, whenprefersReducedMotion === true
, aView
component is now returned instead of adiv
How has this been tested?
Types of changes
Refactor (from JavaScript to TypeScript)
Checklist:
*.native.js
files for terms that need renaming or removal).The text was updated successfully, but these errors were encountered: