components: InputControl to TypeScript #33696
Conversation
Size Change: +1.93 kB (0%) Total Size: 1.08 MB
|
Filename | Size |
---|---|
build/a11y/index.min.js |
1.12 kB |
build/api-fetch/index.min.js |
2.44 kB |
build/autop/index.min.js |
2.28 kB |
build/blob/index.min.js |
673 B |
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/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.css |
474 B |
build/block-library/blocks/buttons/editor-rtl.css |
315 B |
build/block-library/blocks/buttons/editor.css |
315 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/cover/editor.css |
670 B |
build/block-library/blocks/embed/style.css |
400 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.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 |
711 B |
build/block-library/blocks/gallery/theme-rtl.css |
122 B |
build/block-library/blocks/gallery/theme.css |
122 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 |
93 B |
build/block-library/blocks/group/theme.css |
93 B |
build/block-library/blocks/heading/editor-rtl.css |
152 B |
build/block-library/blocks/heading/editor.css |
152 B |
build/block-library/blocks/heading/style-rtl.css |
76 B |
build/block-library/blocks/heading/style.css |
76 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/image/theme-rtl.css |
124 B |
build/block-library/blocks/image/theme.css |
124 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/list/style-rtl.css |
63 B |
build/block-library/blocks/list/style.css |
63 B |
build/block-library/blocks/navigation-link/editor-rtl.css |
474 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/view.min.js |
2.84 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 |
310 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.css |
248 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-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-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/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 |
270 B |
build/block-library/blocks/query-pagination/editor.css |
262 B |
build/block-library/blocks/query-pagination/style-rtl.css |
168 B |
build/block-library/blocks/query-pagination/style.css |
168 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 |
169 B |
build/block-library/blocks/quote/style.css |
169 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/theme-rtl.css |
172 B |
build/block-library/blocks/separator/theme.css |
172 B |
build/block-library/blocks/social-link/editor.css |
165 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/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/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/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/reset-rtl.css |
514 B |
build/block-serialization-default-parser/index.min.js |
1.3 kB |
build/block-serialization-spec-parser/index.min.js |
3.06 kB |
build/compose/index.min.js |
10.2 kB |
build/deprecated/index.min.js |
738 B |
build/dom-ready/index.min.js |
576 B |
build/dom/index.min.js |
4.78 kB |
build/element/index.min.js |
3.44 kB |
build/escape-html/index.min.js |
739 B |
build/format-library/style-rtl.css |
668 B |
build/format-library/style.css |
669 B |
build/hooks/index.min.js |
1.76 kB |
build/html-entities/index.min.js |
628 B |
build/i18n/index.min.js |
3.73 kB |
build/is-shallow-equal/index.min.js |
710 B |
build/keyboard-shortcuts/index.min.js |
1.74 kB |
build/keycodes/index.min.js |
1.49 kB |
build/list-reusable-blocks/index.min.js |
2.07 kB |
build/media-utils/index.min.js |
3.08 kB |
build/notices/index.min.js |
1.07 kB |
build/primitives/index.min.js |
1.06 kB |
build/priority-queue/index.min.js |
791 B |
build/react-i18n/index.min.js |
924 B |
build/redux-routine/index.min.js |
2.82 kB |
build/reusable-blocks/index.min.js |
2.56 kB |
build/reusable-blocks/style-rtl.css |
256 B |
build/reusable-blocks/style.css |
256 B |
build/rich-text/index.min.js |
10.8 kB |
build/shortcode/index.min.js |
1.68 kB |
build/token-list/index.min.js |
848 B |
build/url/index.min.js |
1.95 kB |
build/viewport/index.min.js |
1.28 kB |
build/warning/index.min.js |
1.16 kB |
build/wordcount/index.min.js |
1.24 kB |
Great work, @sarayourfriend ! It's a bit hard for me to review in detail all of the types that you extracted to the I tried to focus particularly for any potential runtime change, and left a few comments |
return { | ||
...initialInputControlState, | ||
...initialState, | ||
initialValue: value, | ||
}; | ||
} as InputState; |
diegohaz
Jul 28, 2021
Member
Why does this need to be explicitly cast? TypeScript should be able to infer and combine the types from the other objects. If there's an error or something, there may be a bug there that the cast is hiding?
Why does this need to be explicitly cast? TypeScript should be able to infer and combine the types from the other objects. If there's an error or something, there may be a bug there that the cast is hiding?
sarayourfriend
Jul 28, 2021
Author
Contributor
It was because the initialValue
couldn't be undefined
and the Partial<InputState>
was making it allowed to be undefined. But I think previously this was allowable anyway so I've made value
and initialValue
undefined.
Though won't that mess up the "controlled-ness" of the input? Should we only allow "empty" values but not undefined?
It was because the initialValue
couldn't be undefined
and the Partial<InputState>
was making it allowed to be undefined. But I think previously this was allowable anyway so I've made value
and initialValue
undefined.
Though won't that mess up the "controlled-ness" of the input? Should we only allow "empty" values but not undefined?
sarayourfriend
Aug 6, 2021
Author
Contributor
I'm going to merge this PR and we can refine the types for this if we decide it's a problem. Currently I think we're not introducing anything that isn't already true for the intrinsic input
element.
I'm going to merge this PR and we can refine the types for this if we decide it's a problem. Currently I think we're not introducing anything that isn't already true for the intrinsic input
element.
dispatch( { | ||
type, | ||
payload: { value: nextValue, event }, | ||
} ); | ||
} as actions.InputAction ); |
diegohaz
Jul 28, 2021
Member
Same here I guess. What's the error if we don't explicitly cast this object?
Same here I guess. What's the error if we don't explicitly cast this object?
sarayourfriend
Jul 28, 2021
Author
Contributor
It complains that the type
parameter must be INVALIDATE
for some reason. I'm not sure why it complains here and not in the other places 🤔
It complains that the type
parameter must be INVALIDATE
for some reason. I'm not sure why it complains here and not in the other places
This is great, Sara! Thanks for working on this! |
* Convert Select to TypeScript * Stop spreading props into InputBase and add all HTML attributes for select * Remove need for `omit`
Whoops, I accidentally merged the SelectControl into this PR |
Description
I did this refactor while I was working on something else so I figured I might as well open a PR for it.
It just converts the InputControl to TypeScript and (I think) improves the way the reducer code is structured while we're at it.
How has this been tested?
Storybook should work the same for InputControl, NumberControl and UnitControl, the last two depend on InputControl.
TS build should pass as well.
Types of changes
Janitorial
Checklist:
*.native.js
files for terms that need renaming or removal).