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

Make global inserter always visible & Fix a Global inserter bug #22115

Merged

Conversation

jorgefilipecosta
Copy link
Member

Description

The global inserter never appears if inserting at the root level is not possible. Inserting at the root level may not be possible, while inserting inside a specific block may be possible e.g: if we have CPT with locking all and the columns block inside.

This PR addresses the issue and makes sure the global inserter appears if it is possible to insert a block in the current position where it will be inserted.

How has this been tested?

I added an end to end tests and verified it passes.

@jorgefilipecosta jorgefilipecosta added [Type] Bug An existing feature does not function as intended [Feature] Inserter The main way to insert blocks using the + button in the editing interface labels May 5, 2020
@github-actions
Copy link

github-actions bot commented May 5, 2020

Size Change: +32 B (0%)

Total Size: 1.12 MB

Filename Size Change
build/block-editor/index.js 105 kB +18 B (0%)
build/edit-post/index.js 302 kB +14 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/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/style-rtl.css 12.2 kB 0 B
build/edit-post/style.css 12.2 kB 0 B
build/edit-site/index.js 12.9 kB 0 B
build/edit-site/style-rtl.css 5.31 kB 0 B
build/edit-site/style.css 5.31 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

@jorgefilipecosta jorgefilipecosta force-pushed the fix/global-inserter-never-shows-on-locked-cpts branch from 3d5371c to 4c2bc98 Compare May 5, 2020 21:12
@jorgefilipecosta jorgefilipecosta force-pushed the fix/global-inserter-never-shows-on-locked-cpts branch from 4c2bc98 to fa66dff Compare May 18, 2020 20:13
hasFixedToolbar: select( 'core/edit-post' ).isFeatureActive(
'fixedToolbar'
),
// This setting (richEditingEnabled) should not live in the block editor's setting.
isInserterEnabled:
select( 'core/edit-post' ).getEditorMode() === 'visual' &&
select( 'core/editor' ).getEditorSettings().richEditingEnabled,
isInserterVisible: select( 'core/block-editor' ).hasInserterItems(),
isInserterVisible: hasInserterItems(
Copy link
Contributor

Choose a reason for hiding this comment

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

Right now we can "disable" or "hide" the inserter, I wonder if we should just one technique in all cases (disable it) to avoid "jumps"

Copy link
Member Author

@jorgefilipecosta jorgefilipecosta May 19, 2020

Choose a reason for hiding this comment

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

So essentially you are suggesting a refactor that makes the inserter always visible, although sometimes it can be disabled?
I think it would be a positive change and the UX would be better because the position of the other buttons would not move around and we would be consistent with what happens in other buttons e.g: undo.

Copy link
Contributor

Choose a reason for hiding this comment

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

yes, something like that.

@jorgefilipecosta jorgefilipecosta force-pushed the fix/global-inserter-never-shows-on-locked-cpts branch from fa66dff to 263eec7 Compare May 20, 2020 17:17
@jorgefilipecosta
Copy link
Member Author

Hi @youknowriad this PR was updated and now makes the global inserter always visible.


<!-- wp:columns -->
<div class=\\"wp-block-columns\\"></div>
<!-- /wp:columns -->"
Copy link
Contributor

Choose a reason for hiding this comment

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

Not sure I understand why the snapshots change since you add a new test?

Copy link
Member Author

Choose a reason for hiding this comment

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

I added a columns block to the default template so I can test a CPT locked all with a block without locking. The existing snapshots need to be updated to contain the added columns block.

@jorgefilipecosta jorgefilipecosta force-pushed the fix/global-inserter-never-shows-on-locked-cpts branch from 263eec7 to 8245ee8 Compare May 21, 2020 13:43
@jorgefilipecosta jorgefilipecosta changed the title Fix: Global inserter never appears if inserting at the root level is not possible Make global inserter always visible & Fix a Global inserter bug May 21, 2020
@jorgefilipecosta jorgefilipecosta merged commit e290640 into master May 21, 2020
@jorgefilipecosta jorgefilipecosta deleted the fix/global-inserter-never-shows-on-locked-cpts branch May 21, 2020 14:49
@github-actions github-actions bot added this to the Gutenberg 8.2 milestone May 21, 2020
@ellatrix ellatrix mentioned this pull request Jun 16, 2020
12 tasks
@oxyc oxyc mentioned this pull request Jun 20, 2020
6 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Feature] Inserter The main way to insert blocks using the + button in the editing interface [Type] Bug An existing feature does not function as intended
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants