Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DataViews: Bootstrap Quick Edit #63600

Merged
merged 11 commits into from
Jul 22, 2024
Merged

DataViews: Bootstrap Quick Edit #63600

merged 11 commits into from
Jul 22, 2024

Conversation

youknowriad
Copy link
Contributor

Related to #55101 and #59745

What?

This PR bootstraps a panel for quick edit pages in the pages dataviews of the site editor. There's a lot of iterations and questions that needs answering but my goal for this initial PR is to set the "architecture" in place:

  • How do we render the panel.
  • How do we select an item.
  • How do we save changes.
  • How do we organize the code base.

The following items will be left for other PRs: (I don't mind feedback on them but I know that they need work and would prefer to leave them separate)

  • The design of the panel itself. It's using the raw "DataForm" for now, I think we probably need two kind of "views" when rendering forms: regular forms and panels (like the inspector panels)
  • Bulk editing: it has its own challenges, I think we should quickly follow-up with a PR for this in order to see how the code base and the flows can be adapted to edit multiple entities rather than one.

Testing Instructions

1- Open the "pages" section of the site editor.
2- Click "quick edit" in the actions menu of a given page.
3- Notice that you can edit the title.

@youknowriad youknowriad added [Type] Feature New feature to highlight in changelogs. [Feature] Site Editor Related to the overarching Site Editor (formerly "full site editing") [Feature] DataViews Work surrounding upgrading and evolving views in the site editor and beyond labels Jul 16, 2024
@youknowriad youknowriad self-assigned this Jul 16, 2024
@@ -201,6 +201,17 @@ export default function Layout( { route } ) {
</div>
) }

{ ! isMobileViewport && areas.edit && (
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added a new routable area to address this use-case. Routes in the site editor can decide to inject UI in the "edit" area.

import Page from '../page';
import usePostFields from '../post-fields';

export function PostEdit( { postType, postId } ) {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We have PostList to render dataviews for a given post type.
This new component PostEdit is meant to edit the "form" or "inspector panel" of a given post type.

);
}

function usePostFields( viewType ) {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I extracted the "fields" from the "PostList" component to be able to reuse the same fields between "PostList" and "PostEdit". This is a strong principle that we should stick to.

viewType is not necessary IMO, I think ideally we should rework our fields to not depend on the view type. I left it for now though.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Even though at this stage we share the fields between posts and pages, it would be good to have a mandatory argument of the postType passed here, no? It should be used with the future APIs with field registration etc..

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't know, as long as we don't need, I prefer to avoid it but I also think it's going to be useful very quickly.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it should be similar to usePostActions and pass an object to be flexible with additions. We can handle later of course as it won't change anything now..

header: __( 'Title' ),
id: 'title',
type: 'text',
getValue: ( { item } ) =>
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I updated this function to return the "raw" title instead of the "rendered" title. I think it's a good question to ask: what does this property correspond too. For me, it should correspond to the "raw" title". For the "rendered" values we have the render function to override this.

Copy link

github-actions bot commented Jul 16, 2024

Size Change: +1.64 kB (+0.09%)

Total Size: 1.76 MB

Filename Size Change
build/edit-post/index.min.js 12.6 kB +39 B (+0.31%)
build/edit-post/style-rtl.css 2.31 kB -23 B (-0.98%)
build/edit-post/style.css 2.31 kB -24 B (-1.03%)
build/edit-site/index.min.js 213 kB +686 B (+0.32%)
build/edit-site/style-rtl.css 11.9 kB +25 B (+0.21%)
build/edit-site/style.css 12 kB +25 B (+0.21%)
build/editor/index.min.js 99.3 kB +494 B (+0.5%)
build/editor/style-rtl.css 9.3 kB +211 B (+2.32%)
build/editor/style.css 9.3 kB +211 B (+2.32%)
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 951 B
build/annotations/index.min.js 2.26 kB
build/api-fetch/index.min.js 2.31 kB
build/autop/index.min.js 2.12 kB
build/blob/index.min.js 579 B
build/block-directory/index.min.js 7.29 kB
build/block-directory/style-rtl.css 1.01 kB
build/block-directory/style.css 1.01 kB
build/block-editor/content-rtl.css 4.58 kB
build/block-editor/content.css 4.58 kB
build/block-editor/default-editor-styles-rtl.css 394 B
build/block-editor/default-editor-styles.css 394 B
build/block-editor/index.min.js 254 kB
build/block-editor/style-rtl.css 16.2 kB
build/block-editor/style.css 16.2 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 90 B
build/block-library/blocks/archives/style.css 90 B
build/block-library/blocks/audio/editor-rtl.css 149 B
build/block-library/blocks/audio/editor.css 151 B
build/block-library/blocks/audio/style-rtl.css 132 B
build/block-library/blocks/audio/style.css 132 B
build/block-library/blocks/audio/theme-rtl.css 134 B
build/block-library/blocks/audio/theme.css 134 B
build/block-library/blocks/avatar/editor-rtl.css 115 B
build/block-library/blocks/avatar/editor.css 115 B
build/block-library/blocks/avatar/style-rtl.css 104 B
build/block-library/blocks/avatar/style.css 104 B
build/block-library/blocks/button/editor-rtl.css 310 B
build/block-library/blocks/button/editor.css 310 B
build/block-library/blocks/button/style-rtl.css 538 B
build/block-library/blocks/button/style.css 538 B
build/block-library/blocks/buttons/editor-rtl.css 336 B
build/block-library/blocks/buttons/editor.css 336 B
build/block-library/blocks/buttons/style-rtl.css 328 B
build/block-library/blocks/buttons/style.css 328 B
build/block-library/blocks/calendar/style-rtl.css 240 B
build/block-library/blocks/calendar/style.css 240 B
build/block-library/blocks/categories/editor-rtl.css 132 B
build/block-library/blocks/categories/editor.css 131 B
build/block-library/blocks/categories/style-rtl.css 152 B
build/block-library/blocks/categories/style.css 152 B
build/block-library/blocks/code/editor-rtl.css 53 B
build/block-library/blocks/code/editor.css 53 B
build/block-library/blocks/code/style-rtl.css 121 B
build/block-library/blocks/code/style.css 121 B
build/block-library/blocks/code/theme-rtl.css 122 B
build/block-library/blocks/code/theme.css 122 B
build/block-library/blocks/columns/editor-rtl.css 108 B
build/block-library/blocks/columns/editor.css 108 B
build/block-library/blocks/columns/style-rtl.css 420 B
build/block-library/blocks/columns/style.css 420 B
build/block-library/blocks/comment-author-avatar/editor-rtl.css 124 B
build/block-library/blocks/comment-author-avatar/editor.css 124 B
build/block-library/blocks/comment-content/style-rtl.css 90 B
build/block-library/blocks/comment-content/style.css 90 B
build/block-library/blocks/comment-template/style-rtl.css 200 B
build/block-library/blocks/comment-template/style.css 199 B
build/block-library/blocks/comments-pagination-numbers/editor-rtl.css 122 B
build/block-library/blocks/comments-pagination-numbers/editor.css 121 B
build/block-library/blocks/comments-pagination/editor-rtl.css 221 B
build/block-library/blocks/comments-pagination/editor.css 211 B
build/block-library/blocks/comments-pagination/style-rtl.css 234 B
build/block-library/blocks/comments-pagination/style.css 231 B
build/block-library/blocks/comments-title/editor-rtl.css 75 B
build/block-library/blocks/comments-title/editor.css 75 B
build/block-library/blocks/comments/editor-rtl.css 832 B
build/block-library/blocks/comments/editor.css 832 B
build/block-library/blocks/comments/style-rtl.css 632 B
build/block-library/blocks/comments/style.css 631 B
build/block-library/blocks/cover/editor-rtl.css 668 B
build/block-library/blocks/cover/editor.css 669 B
build/block-library/blocks/cover/style-rtl.css 1.62 kB
build/block-library/blocks/cover/style.css 1.6 kB
build/block-library/blocks/details/editor-rtl.css 65 B
build/block-library/blocks/details/editor.css 65 B
build/block-library/blocks/details/style-rtl.css 86 B
build/block-library/blocks/details/style.css 86 B
build/block-library/blocks/embed/editor-rtl.css 314 B
build/block-library/blocks/embed/editor.css 314 B
build/block-library/blocks/embed/style-rtl.css 419 B
build/block-library/blocks/embed/style.css 419 B
build/block-library/blocks/embed/theme-rtl.css 133 B
build/block-library/blocks/embed/theme.css 133 B
build/block-library/blocks/file/editor-rtl.css 326 B
build/block-library/blocks/file/editor.css 326 B
build/block-library/blocks/file/style-rtl.css 278 B
build/block-library/blocks/file/style.css 279 B
build/block-library/blocks/file/view.min.js 324 B
build/block-library/blocks/footnotes/style-rtl.css 198 B
build/block-library/blocks/footnotes/style.css 197 B
build/block-library/blocks/form-input/editor-rtl.css 229 B
build/block-library/blocks/form-input/editor.css 229 B
build/block-library/blocks/form-input/style-rtl.css 342 B
build/block-library/blocks/form-input/style.css 342 B
build/block-library/blocks/form-submission-notification/editor-rtl.css 344 B
build/block-library/blocks/form-submission-notification/editor.css 341 B
build/block-library/blocks/form-submit-button/style-rtl.css 69 B
build/block-library/blocks/form-submit-button/style.css 69 B
build/block-library/blocks/form/view.min.js 470 B
build/block-library/blocks/freeform/editor-rtl.css 2.6 kB
build/block-library/blocks/freeform/editor.css 2.6 kB
build/block-library/blocks/gallery/editor-rtl.css 958 B
build/block-library/blocks/gallery/editor.css 962 B
build/block-library/blocks/gallery/style-rtl.css 1.71 kB
build/block-library/blocks/gallery/style.css 1.71 kB
build/block-library/blocks/gallery/theme-rtl.css 108 B
build/block-library/blocks/gallery/theme.css 108 B
build/block-library/blocks/group/editor-rtl.css 402 B
build/block-library/blocks/group/editor.css 402 B
build/block-library/blocks/group/style-rtl.css 103 B
build/block-library/blocks/group/style.css 103 B
build/block-library/blocks/group/theme-rtl.css 79 B
build/block-library/blocks/group/theme.css 79 B
build/block-library/blocks/heading/style-rtl.css 188 B
build/block-library/blocks/heading/style.css 188 B
build/block-library/blocks/html/editor-rtl.css 346 B
build/block-library/blocks/html/editor.css 347 B
build/block-library/blocks/image/editor-rtl.css 845 B
build/block-library/blocks/image/editor.css 843 B
build/block-library/blocks/image/style-rtl.css 1.59 kB
build/block-library/blocks/image/style.css 1.59 kB
build/block-library/blocks/image/theme-rtl.css 137 B
build/block-library/blocks/image/theme.css 137 B
build/block-library/blocks/image/view.min.js 1.65 kB
build/block-library/blocks/latest-comments/style-rtl.css 355 B
build/block-library/blocks/latest-comments/style.css 354 B
build/block-library/blocks/latest-posts/editor-rtl.css 204 B
build/block-library/blocks/latest-posts/editor.css 204 B
build/block-library/blocks/latest-posts/style-rtl.css 509 B
build/block-library/blocks/latest-posts/style.css 510 B
build/block-library/blocks/list/style-rtl.css 107 B
build/block-library/blocks/list/style.css 107 B
build/block-library/blocks/media-text/editor-rtl.css 304 B
build/block-library/blocks/media-text/editor.css 303 B
build/block-library/blocks/media-text/style-rtl.css 516 B
build/block-library/blocks/media-text/style.css 515 B
build/block-library/blocks/more/editor-rtl.css 427 B
build/block-library/blocks/more/editor.css 427 B
build/block-library/blocks/navigation-link/editor-rtl.css 663 B
build/block-library/blocks/navigation-link/editor.css 664 B
build/block-library/blocks/navigation-link/style-rtl.css 192 B
build/block-library/blocks/navigation-link/style.css 191 B
build/block-library/blocks/navigation-submenu/editor-rtl.css 295 B
build/block-library/blocks/navigation-submenu/editor.css 294 B
build/block-library/blocks/navigation/editor-rtl.css 2.2 kB
build/block-library/blocks/navigation/editor.css 2.21 kB
build/block-library/blocks/navigation/style-rtl.css 2.25 kB
build/block-library/blocks/navigation/style.css 2.23 kB
build/block-library/blocks/navigation/view.min.js 1.03 kB
build/block-library/blocks/nextpage/editor-rtl.css 392 B
build/block-library/blocks/nextpage/editor.css 392 B
build/block-library/blocks/page-list/editor-rtl.css 378 B
build/block-library/blocks/page-list/editor.css 378 B
build/block-library/blocks/page-list/style-rtl.css 175 B
build/block-library/blocks/page-list/style.css 175 B
build/block-library/blocks/paragraph/editor-rtl.css 236 B
build/block-library/blocks/paragraph/editor.css 236 B
build/block-library/blocks/paragraph/style-rtl.css 341 B
build/block-library/blocks/paragraph/style.css 340 B
build/block-library/blocks/post-author/style-rtl.css 175 B
build/block-library/blocks/post-author/style.css 176 B
build/block-library/blocks/post-comments-form/editor-rtl.css 96 B
build/block-library/blocks/post-comments-form/editor.css 96 B
build/block-library/blocks/post-comments-form/style-rtl.css 522 B
build/block-library/blocks/post-comments-form/style.css 522 B
build/block-library/blocks/post-content/editor-rtl.css 74 B
build/block-library/blocks/post-content/editor.css 74 B
build/block-library/blocks/post-date/style-rtl.css 62 B
build/block-library/blocks/post-date/style.css 62 B
build/block-library/blocks/post-excerpt/editor-rtl.css 71 B
build/block-library/blocks/post-excerpt/editor.css 71 B
build/block-library/blocks/post-excerpt/style-rtl.css 141 B
build/block-library/blocks/post-excerpt/style.css 141 B
build/block-library/blocks/post-featured-image/editor-rtl.css 729 B
build/block-library/blocks/post-featured-image/editor.css 726 B
build/block-library/blocks/post-featured-image/style-rtl.css 341 B
build/block-library/blocks/post-featured-image/style.css 341 B
build/block-library/blocks/post-navigation-link/style-rtl.css 215 B
build/block-library/blocks/post-navigation-link/style.css 214 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 399 B
build/block-library/blocks/post-template/style.css 398 B
build/block-library/blocks/post-terms/style-rtl.css 96 B
build/block-library/blocks/post-terms/style.css 96 B
build/block-library/blocks/post-time-to-read/style-rtl.css 70 B
build/block-library/blocks/post-time-to-read/style.css 70 B
build/block-library/blocks/post-title/style-rtl.css 100 B
build/block-library/blocks/post-title/style.css 100 B
build/block-library/blocks/preformatted/style-rtl.css 125 B
build/block-library/blocks/preformatted/style.css 125 B
build/block-library/blocks/pullquote/editor-rtl.css 134 B
build/block-library/blocks/pullquote/editor.css 134 B
build/block-library/blocks/pullquote/style-rtl.css 342 B
build/block-library/blocks/pullquote/style.css 342 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 121 B
build/block-library/blocks/query-pagination-numbers/editor.css 118 B
build/block-library/blocks/query-pagination/editor-rtl.css 220 B
build/block-library/blocks/query-pagination/editor.css 208 B
build/block-library/blocks/query-pagination/style-rtl.css 287 B
build/block-library/blocks/query-pagination/style.css 283 B
build/block-library/blocks/query-title/style-rtl.css 64 B
build/block-library/blocks/query-title/style.css 64 B
build/block-library/blocks/query/editor-rtl.css 452 B
build/block-library/blocks/query/editor.css 451 B
build/block-library/blocks/query/view.min.js 958 B
build/block-library/blocks/quote/style-rtl.css 238 B
build/block-library/blocks/quote/style.css 238 B
build/block-library/blocks/quote/theme-rtl.css 221 B
build/block-library/blocks/quote/theme.css 225 B
build/block-library/blocks/read-more/style-rtl.css 138 B
build/block-library/blocks/read-more/style.css 138 B
build/block-library/blocks/rss/editor-rtl.css 101 B
build/block-library/blocks/rss/editor.css 101 B
build/block-library/blocks/rss/style-rtl.css 288 B
build/block-library/blocks/rss/style.css 287 B
build/block-library/blocks/search/editor-rtl.css 183 B
build/block-library/blocks/search/editor.css 183 B
build/block-library/blocks/search/style-rtl.css 672 B
build/block-library/blocks/search/style.css 671 B
build/block-library/blocks/search/theme-rtl.css 113 B
build/block-library/blocks/search/theme.css 113 B
build/block-library/blocks/search/view.min.js 475 B
build/block-library/blocks/separator/editor-rtl.css 100 B
build/block-library/blocks/separator/editor.css 100 B
build/block-library/blocks/separator/style-rtl.css 248 B
build/block-library/blocks/separator/style.css 248 B
build/block-library/blocks/separator/theme-rtl.css 195 B
build/block-library/blocks/separator/theme.css 195 B
build/block-library/blocks/shortcode/editor-rtl.css 286 B
build/block-library/blocks/shortcode/editor.css 286 B
build/block-library/blocks/site-logo/editor-rtl.css 806 B
build/block-library/blocks/site-logo/editor.css 803 B
build/block-library/blocks/site-logo/style-rtl.css 218 B
build/block-library/blocks/site-logo/style.css 218 B
build/block-library/blocks/site-tagline/editor-rtl.css 87 B
build/block-library/blocks/site-tagline/editor.css 87 B
build/block-library/blocks/site-title/editor-rtl.css 123 B
build/block-library/blocks/site-title/editor.css 123 B
build/block-library/blocks/site-title/style-rtl.css 71 B
build/block-library/blocks/site-title/style.css 71 B
build/block-library/blocks/social-link/editor-rtl.css 338 B
build/block-library/blocks/social-link/editor.css 338 B
build/block-library/blocks/social-links/editor-rtl.css 676 B
build/block-library/blocks/social-links/editor.css 675 B
build/block-library/blocks/social-links/style-rtl.css 1.51 kB
build/block-library/blocks/social-links/style.css 1.5 kB
build/block-library/blocks/spacer/editor-rtl.css 346 B
build/block-library/blocks/spacer/editor.css 346 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 394 B
build/block-library/blocks/table/editor.css 394 B
build/block-library/blocks/table/style-rtl.css 640 B
build/block-library/blocks/table/style.css 639 B
build/block-library/blocks/table/theme-rtl.css 152 B
build/block-library/blocks/table/theme.css 152 B
build/block-library/blocks/tag-cloud/style-rtl.css 266 B
build/block-library/blocks/tag-cloud/style.css 265 B
build/block-library/blocks/template-part/editor-rtl.css 393 B
build/block-library/blocks/template-part/editor.css 393 B
build/block-library/blocks/template-part/theme-rtl.css 113 B
build/block-library/blocks/template-part/theme.css 113 B
build/block-library/blocks/term-description/style-rtl.css 126 B
build/block-library/blocks/term-description/style.css 126 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 165 B
build/block-library/blocks/text-columns/style.css 165 B
build/block-library/blocks/verse/style-rtl.css 98 B
build/block-library/blocks/verse/style.css 98 B
build/block-library/blocks/video/editor-rtl.css 553 B
build/block-library/blocks/video/editor.css 554 B
build/block-library/blocks/video/style-rtl.css 192 B
build/block-library/blocks/video/style.css 192 B
build/block-library/blocks/video/theme-rtl.css 134 B
build/block-library/blocks/video/theme.css 134 B
build/block-library/classic-rtl.css 179 B
build/block-library/classic.css 179 B
build/block-library/common-rtl.css 1.1 kB
build/block-library/common.css 1.1 kB
build/block-library/editor-elements-rtl.css 75 B
build/block-library/editor-elements.css 75 B
build/block-library/editor-rtl.css 11.9 kB
build/block-library/editor.css 11.8 kB
build/block-library/elements-rtl.css 54 B
build/block-library/elements.css 54 B
build/block-library/index.min.js 216 kB
build/block-library/reset-rtl.css 472 B
build/block-library/reset.css 472 B
build/block-library/style-rtl.css 14.7 kB
build/block-library/style.css 14.6 kB
build/block-library/theme-rtl.css 702 B
build/block-library/theme.css 707 B
build/block-serialization-default-parser/index.min.js 1.12 kB
build/block-serialization-spec-parser/index.min.js 2.87 kB
build/blocks/index.min.js 52.2 kB
build/commands/index.min.js 16.1 kB
build/commands/style-rtl.css 955 B
build/commands/style.css 952 B
build/components/index.min.js 221 kB
build/components/style-rtl.css 12 kB
build/components/style.css 12 kB
build/compose/index.min.js 12.9 kB
build/core-commands/index.min.js 2.78 kB
build/core-data/index.min.js 72.8 kB
build/customize-widgets/index.min.js 11 kB
build/customize-widgets/style-rtl.css 1.35 kB
build/customize-widgets/style.css 1.35 kB
build/data-controls/index.min.js 641 B
build/data/index.min.js 8.98 kB
build/date/index.min.js 18 kB
build/deprecated/index.min.js 458 B
build/dom-ready/index.min.js 325 B
build/dom/index.min.js 4.65 kB
build/edit-post/classic-rtl.css 578 B
build/edit-post/classic.css 580 B
build/edit-site/posts-rtl.css 6.78 kB
build/edit-site/posts.css 6.79 kB
build/edit-widgets/index.min.js 17.6 kB
build/edit-widgets/style-rtl.css 4.2 kB
build/edit-widgets/style.css 4.2 kB
build/element/index.min.js 4.83 kB
build/escape-html/index.min.js 537 B
build/format-library/index.min.js 8.07 kB
build/format-library/style-rtl.css 506 B
build/format-library/style.css 505 B
build/hooks/index.min.js 1.54 kB
build/html-entities/index.min.js 445 B
build/i18n/index.min.js 3.58 kB
build/interactivity/debug.min.js 16.5 kB
build/interactivity/file.min.js 447 B
build/interactivity/image.min.js 1.78 kB
build/interactivity/index.min.js 13.4 kB
build/interactivity/navigation.min.js 1.16 kB
build/interactivity/query.min.js 742 B
build/interactivity/router.min.js 2.8 kB
build/interactivity/search.min.js 615 B
build/is-shallow-equal/index.min.js 526 B
build/keyboard-shortcuts/index.min.js 1.31 kB
build/keycodes/index.min.js 1.46 kB
build/list-reusable-blocks/index.min.js 2.16 kB
build/list-reusable-blocks/style-rtl.css 846 B
build/list-reusable-blocks/style.css 846 B
build/media-utils/index.min.js 2.92 kB
build/modules/importmap-polyfill.min.js 12.3 kB
build/notices/index.min.js 946 B
build/nux/index.min.js 1.59 kB
build/nux/style-rtl.css 749 B
build/nux/style.css 745 B
build/patterns/index.min.js 7.36 kB
build/patterns/style-rtl.css 687 B
build/patterns/style.css 685 B
build/plugins/index.min.js 1.81 kB
build/preferences-persistence/index.min.js 2.06 kB
build/preferences/index.min.js 2.9 kB
build/preferences/style-rtl.css 578 B
build/preferences/style.css 578 B
build/primitives/index.min.js 829 B
build/priority-queue/index.min.js 1.54 kB
build/private-apis/index.min.js 1.01 kB
build/react-i18n/index.min.js 630 B
build/react-refresh-entry/index.min.js 9.47 kB
build/react-refresh-runtime/index.min.js 6.76 kB
build/redux-routine/index.min.js 2.69 kB
build/reusable-blocks/index.min.js 2.54 kB
build/reusable-blocks/style-rtl.css 256 B
build/reusable-blocks/style.css 256 B
build/rich-text/index.min.js 10.1 kB
build/router/index.min.js 1.96 kB
build/server-side-render/index.min.js 1.94 kB
build/shortcode/index.min.js 1.4 kB
build/style-engine/index.min.js 2.03 kB
build/token-list/index.min.js 581 B
build/url/index.min.js 3.85 kB
build/vendors/react-dom.min.js 41.7 kB
build/vendors/react-jsx-runtime.min.js 560 B
build/vendors/react.min.js 4.02 kB
build/viewport/index.min.js 965 B
build/warning/index.min.js 250 B
build/widgets/index.min.js 7.19 kB
build/widgets/style-rtl.css 1.16 kB
build/widgets/style.css 1.16 kB
build/wordcount/index.min.js 1.03 kB

compressed-size-action

Copy link
Contributor

@ntsekouras ntsekouras left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's a great start, thank you!

I had in mind that we would probably render the form in a dialog and could even make it draggable, but your approach of a new area looks good.

Having it as an action (Quick edit) makes the most sense to me. It might need some design input whether to make it a primary action and give a bit more prominence.

Some quick wins for this PR to feel a bit more polished would be:

  1. add a way to close the quick edit panel
  2. probably have a toast on save and have the button enabled only if we have changes
  3. Add a title in the panel to be clear which entity you are about to edit

How do we save changes.

I think having a centralized submit makes sense and it should be enough for this first iteration. I'm pretty sure we'll have more challenges when implementing other field types 😄

How do we organize the code base.

What do you mean by that?

Finally, some tweaks with the state will be needed to handle:

  1. Quick edit one item (panel opens)
  2. Quick edit different item

@jameskoster
Copy link
Contributor

jameskoster commented Jul 16, 2024

A couple of fundamental pieces from the design side:

  • List layout needs some more design exploration. Ideally the preview frame should remain visible, even when quick-editing.
    • One potential solution is for the content frame to drill down and reveal the Inspector contents.
  • The record that appears in the panel should be correlated with the selection state. This is how we'll facilitate bulk-quick-edits down the road.
  • As Nick said, the panel must be toggle-able. For this initial PR, given List layout still needs some design work, should we restrict quick editing to Grid / Table layout? In those layouts we might use the same UI as the full screen editor, IE a toggle button with the drawer icon.
  • It's not 100% clear how saving should work. For now, could the changes be captured by the global save button/UX?

I'll update #55101 with a more comprehensive prototype when I find time.

@youknowriad
Copy link
Contributor Author

To be honest, I'm very skeptical about "preview and edit" at the same time for list views but we can focus on table and grid for now if needed. Happy to update the PR. Please do share a prototype, that will help a lot.

@jameskoster
Copy link
Contributor

To be honest I think I'd rather lose the quick-edit functionality in List layout than the visible preview. The latter seems fundamental to that layout – without it there are too many overlaps with Table layout.

Restricting quick edit to Grid / Table seems a good short term step.

@youknowriad
Copy link
Contributor Author

To be honest I think I'd rather lose the quick-edit functionality in List layout than the visible preview. The latter seems fundamental to that layout – without it there are too many overlaps with Table layout.

But we're not losing "preview", quick edit can be seen as a module, you do your edits and you return to the "preview". But I won't argue much here, I'm fine trying any approach.

@jameskoster
Copy link
Contributor

I added some mockups to #55101.

@youknowriad
Copy link
Contributor Author

I didn't disable it yet in list views, but we're getting closer to the prototypes. Can you check it?

@@ -75,6 +76,7 @@ export default function DataViews< Item >( {
selection: selectionProperty,
setSelection: setSelectionProperty,
onSelectionChange = defaultOnSelectionChange,
header,
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a temporary prop until we address this issue #63646

@youknowriad
Copy link
Contributor Author

The thing that feels weird to me is that clicking items in the table view actually bulk selects by default. I think it should unselect all the other items and selects the current one automatically. It should be different than clicking the checkbox. Maybe we could support ctrl + click for multi-select as well.

@ntsekouras
Copy link
Contributor

The thing that feels weird to me is that clicking items in the table view actually bulk selects by default.

I agree with this and with this PR especially it contributes to a quite confusing experience. I quickly tested and the status handling is still problematic when we change entities (table view for example).

Another thought is if we don't have a quick edit post action, we still need to have checks about permissions etc to edit. A basic example would be the status:trash.

Based on this, at some cases the entity will not be editable. Should we have the button there disabled? Should we not render it and have the layout shift?

@youknowriad
Copy link
Contributor Author

Based on this, at some cases the entity will not be editable. Should we have the button there disabled? Should we not render it and have the layout shift?

I think we need some placeholder content for:

  • Nothing selected.
  • An item is selected but is not editable.

@jameskoster
Copy link
Contributor

I think it should unselect all the other items and selects the current one automatically.

That works for me. Ctrl + click (and shift + click) would be nice enhancements.

Small tweak: The toggle button should be compact size.

Nothing selected.
An item is selected but is not editable.

For now some centrally aligned text is probably adequate, e.g.:

Screenshot 2024-07-18 at 15 45 22

We can elaborate on this in follow-ups.

@jameskoster
Copy link
Contributor

We should probably show something when you bulk select too, but I'm not sure what the message should be. "Only one item can be edited at a time" is a bit underwhelming, but perhaps a necessary interim?

@youknowriad youknowriad force-pushed the update/bootstrap-quick-edit branch 2 times, most recently from 3cae411 to d203618 Compare July 22, 2024 09:51
@youknowriad youknowriad force-pushed the update/bootstrap-quick-edit branch from d203618 to f2133b8 Compare July 22, 2024 13:49
onClick={ () => {
history.push( {
...location.params,
quickEdit: quickEdit ? undefined : true,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have checked and the quickEdit URL parameter seems to be cleared properly when switching screen (back to Design or into the Editor).

@@ -608,13 +291,35 @@ export default function PostList( { postType } ) {
fields={ fields }
actions={ actions }
data={ records || EMPTY_ARRAY }
isLoading={ isLoadingMainEntities || isLoadingAuthors }
isLoading={ isLoadingMainEntities || isLoading }
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: isLoadingData || isLoadingFields.

@jameskoster
Copy link
Contributor

Did you refresh the branch?

Apparently not, it's working now :)

I noticed a small regression though; in table layout the selected row no longer has blue accents.

@jameskoster
Copy link
Contributor

I noticed a small regression though; in table layout the selected row no longer has blue accents.

Never mind, this seems to be the case on trunk too.

@youknowriad youknowriad added [Type] Experimental Experimental feature or API. and removed [Type] Feature New feature to highlight in changelogs. labels Jul 22, 2024
@youknowriad youknowriad enabled auto-merge (squash) July 22, 2024 15:47
@youknowriad youknowriad merged commit 859d48b into trunk Jul 22, 2024
65 checks passed
@youknowriad youknowriad deleted the update/bootstrap-quick-edit branch July 22, 2024 16:22
@github-actions github-actions bot added this to the Gutenberg 18.9 milestone Jul 22, 2024
@oandregal oandregal mentioned this pull request Jul 24, 2024
21 tasks
@jasmussen
Copy link
Contributor

A thought: we should probably make an effort to not refer to this as "Quick Edit" (which sounds like a named feature). In practice, it's just access to editing, or even bulk editing, and this action shouldn't officially have a name.

@ntsekouras
Copy link
Contributor

Hm.. But it is an action.. Do you refer to the capitalization? If yes, this is probably because that's how we render it in wp-admin already.

@jasmussen
Copy link
Contributor

I think it's fine for us developing the software to call it this. To clarify, I'm saying this feature shouldn't officially have a name, or any user-facing name. E.g. when writing documentation, we should not refer to this as "Use the quick edit feature", it should be more in the vein of "If you're editing pages in the table view, you can show the details panel to edit additional properties".

I see it's got "quick edit" in the tooltip, I wonder if we can change that to just "Show details"?

@ntsekouras
Copy link
Contributor

I see it's got "quick edit" in the tooltip, I wonder if we can change that to just "Show details"?

We could do that yes. But do you think it's going to be clear that there we can actually edit?

Another thing is that we are going to introduce this for list layouts and is going to be part of the actions menu. Should we rename it there too? Should we have it as a togglable button too?

@jasmussen
Copy link
Contributor

The tooltip can be anything. Mainly I'd prefer "edit" used as a word rather than "Quick Edit" surfaced as a feature name. Describe the flow in a sentence rather than refer to a feature.

@jameskoster
Copy link
Contributor

Maybe something like 'View details' or 'Edit details' could work as the action name in List layout?

In other layouts the tooltip could be 'Toggle details panel'?

@jasmussen
Copy link
Contributor

jasmussen commented Aug 13, 2024

Sounds good to me! (Either.)

@ntsekouras
Copy link
Contributor

Opened a quick PR to update the copy.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Feature] DataViews Work surrounding upgrading and evolving views in the site editor and beyond [Feature] Site Editor Related to the overarching Site Editor (formerly "full site editing") [Type] Experimental Experimental feature or API.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants