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

Edit Site: Page and Template switchers improvements. #22449

Merged
merged 3 commits into from
May 21, 2020

Conversation

epiqueras
Copy link
Contributor

Description

This PR improves a few things related to the page and template switchers:

  • It preloads pages for the page switcher to load faster.
  • It hides the "All Posts" option in the page switcher if the front page is not set to display the latest posts.
  • It groups both switchers, separated by a slash, and positions them at the end of their toolbar group so that when they expand, it's not so jarring.

How has this been tested?

It was verified that the page and template switchers still work as expected.

Screenshots

Screen Shot 2020-05-18 at 5 41 25 PM

Checklist:

  • My code is tested.
  • My code follows the WordPress code style.
  • My code follows the accessibility standards.
  • My code has proper inline documentation.
  • I've included developer documentation if appropriate.
  • I've updated all React Native files affected by any refactorings/renamings in this PR.

@github-actions
Copy link

github-actions bot commented May 19, 2020

Size Change: +67 B (0%)

Total Size: 1.12 MB

Filename Size Change
build/edit-site/index.js 12.9 kB +15 B (0%)
build/edit-site/style-rtl.css 5.34 kB +26 B (0%)
build/edit-site/style.css 5.34 kB +26 B (0%)
ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 1.02 kB 0 B
build/annotations/index.js 3.62 kB 0 B
build/api-fetch/index.js 3.39 kB 0 B
build/autop/index.js 2.83 kB 0 B
build/blob/index.js 620 B 0 B
build/block-directory/index.js 6.93 kB 0 B
build/block-directory/style-rtl.css 790 B 0 B
build/block-directory/style.css 791 B 0 B
build/block-editor/index.js 105 kB 0 B
build/block-editor/style-rtl.css 10.9 kB 0 B
build/block-editor/style.css 10.9 kB 0 B
build/block-library/editor-rtl.css 7.17 kB 0 B
build/block-library/editor.css 7.17 kB 0 B
build/block-library/index.js 119 kB 0 B
build/block-library/style-rtl.css 7.48 kB 0 B
build/block-library/style.css 7.48 kB 0 B
build/block-library/theme-rtl.css 684 B 0 B
build/block-library/theme.css 686 B 0 B
build/block-serialization-default-parser/index.js 1.88 kB 0 B
build/block-serialization-spec-parser/index.js 3.1 kB 0 B
build/blocks/index.js 48.1 kB 0 B
build/components/index.js 190 kB 0 B
build/components/style-rtl.css 17.1 kB 0 B
build/components/style.css 17.1 kB 0 B
build/compose/index.js 9.24 kB 0 B
build/core-data/index.js 11.4 kB 0 B
build/data-controls/index.js 1.29 kB 0 B
build/data/index.js 8.42 kB 0 B
build/date/index.js 5.47 kB 0 B
build/deprecated/index.js 771 B 0 B
build/dom-ready/index.js 568 B 0 B
build/dom/index.js 3.11 kB 0 B
build/edit-navigation/index.js 6.63 kB 0 B
build/edit-navigation/style-rtl.css 857 B 0 B
build/edit-navigation/style.css 856 B 0 B
build/edit-post/index.js 302 kB 0 B
build/edit-post/style-rtl.css 12.2 kB 0 B
build/edit-post/style.css 12.2 kB 0 B
build/edit-widgets/index.js 7.73 kB 0 B
build/edit-widgets/style-rtl.css 4.59 kB 0 B
build/edit-widgets/style.css 4.59 kB 0 B
build/editor/editor-styles-rtl.css 425 B 0 B
build/editor/editor-styles.css 428 B 0 B
build/editor/index.js 44.6 kB 0 B
build/editor/style-rtl.css 5.06 kB 0 B
build/editor/style.css 5.06 kB 0 B
build/element/index.js 4.65 kB 0 B
build/escape-html/index.js 733 B 0 B
build/format-library/index.js 7.64 kB 0 B
build/format-library/style-rtl.css 502 B 0 B
build/format-library/style.css 502 B 0 B
build/hooks/index.js 2.13 kB 0 B
build/html-entities/index.js 622 B 0 B
build/i18n/index.js 3.56 kB 0 B
build/is-shallow-equal/index.js 711 B 0 B
build/keyboard-shortcuts/index.js 2.51 kB 0 B
build/keycodes/index.js 1.94 kB 0 B
build/list-reusable-blocks/index.js 3.13 kB 0 B
build/list-reusable-blocks/style-rtl.css 226 B 0 B
build/list-reusable-blocks/style.css 226 B 0 B
build/media-utils/index.js 5.29 kB 0 B
build/notices/index.js 1.79 kB 0 B
build/nux/index.js 3.4 kB 0 B
build/nux/style-rtl.css 616 B 0 B
build/nux/style.css 613 B 0 B
build/plugins/index.js 2.56 kB 0 B
build/primitives/index.js 1.5 kB 0 B
build/priority-queue/index.js 789 B 0 B
build/redux-routine/index.js 2.85 kB 0 B
build/rich-text/index.js 14.8 kB 0 B
build/server-side-render/index.js 2.68 kB 0 B
build/shortcode/index.js 1.7 kB 0 B
build/token-list/index.js 1.28 kB 0 B
build/url/index.js 4.02 kB 0 B
build/viewport/index.js 1.84 kB 0 B
build/warning/index.js 1.14 kB 0 B
build/wordcount/index.js 1.17 kB 0 B

compressed-size-action

@TimothyBJacobs
Copy link
Member

Is this /wp/v2/pages?per_page=-1&context=edit preload actually working? The per_page=-1 is implemented entirely client side, theoretically the API should being erroring that out as an invalid parameter.

@epiqueras
Copy link
Contributor Author

I guess it isn't then. I copied the approach for taxonomies that I think @youknowriad took.

@TimothyBJacobs
Copy link
Member

I thought preloading at per_page=100 would work, but I don't think it will because the fetch all middleware doesn't run its sub-requests through the whole middleware stack.

@epiqueras
Copy link
Contributor Author

fetchAllMiddleware only affects -1 requests.

@TimothyBJacobs
Copy link
Member

Right, but my point was that if you preload per_page=100, when fetchAllMiddleware sees the per_page=-1 request, it would then do a per_page=100 request which would be preloaded. But that per_page=100 request won't be seen by the preloading middleware because fetchAllMiddleware occurs after the preloading middleware.

@epiqueras
Copy link
Contributor Author

Can we change the order?

@TimothyBJacobs
Copy link
Member

I'm not sure, the preloading middleware gets initialized with a wp_add_inline_script while the fetchAllMiddleware is a pre-registered middleware. So I'm not sure how we could without introducing some sort of formal useBefore useAfter type APi.

In my mind, fetchAllMiddleware would reuse apiFetch ensuring it would go through the whole stack, but there might be complications with that as well.

@epiqueras
Copy link
Contributor Author

@youknowriad What do you think?

@epiqueras
Copy link
Contributor Author

In my mind, fetchAllMiddleware would reuse apiFetch ensuring it would go through the whole stack, but there might be complications with that as well.

That makes sense to me, and I don't see any problems straight away.

@youknowriad
Copy link
Contributor

Ideally, we remove per_page=-1 entirely and come up with a good paginated Select. I thought you had a PR for that @epiqueras :P

For the middlewares order, I don't really know, we can try but changing the order can be impactful.

@epiqueras
Copy link
Contributor Author

Ideally, we remove per_page=-1 entirely and come up with a good paginated Select. I thought you had a PR for that @epiqueras :P

It's still under a11y review.

For the middlewares order, I don't really know, we can try but changing the order can be impactful.

👍 Let's try it on another PR.

@epiqueras epiqueras force-pushed the update/edit-site-page-switcher-improvements branch from d42c354 to 5ae3a7c Compare May 20, 2020 22:47
@epiqueras epiqueras force-pushed the update/edit-site-page-switcher-improvements branch from 5ae3a7c to 22cc8dd Compare May 21, 2020 16:58
Copy link
Member

@noahtallen noahtallen left a comment

Choose a reason for hiding this comment

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

This is a nice improvement for now :) I think the UX is still confusing in this area because it's not clear how pages & templates relate to each other. (Especially since you'd never really try to render "example page" with the "category template".) I bet that will be resolved as we iterate further on design, and as we get better controls for assigning a template to a page.

@noahtallen
Copy link
Member

come up with a good paginated Select

I definitely agree with this, since it would be a pretty bad UX to have all pages showing in the dropdown at once if a site has hundreds of them! (Could see search being useful here too)

@epiqueras
Copy link
Contributor Author

I'm working on something like that now.

@epiqueras epiqueras merged commit 16d1e41 into master May 21, 2020
@epiqueras epiqueras added this to Done in Phase 2 via automation May 21, 2020
@epiqueras epiqueras deleted the update/edit-site-page-switcher-improvements branch May 21, 2020 19:39
@github-actions github-actions bot added this to the Gutenberg 8.2 milestone May 21, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Type] Enhancement A suggestion for improvement.
Projects
No open projects
Phase 2
  
Done
Development

Successfully merging this pull request may close these issues.

None yet

4 participants