Hid email specific cards from card menus when editing pages

no issue

Pages can not be sent by email so by hiding email-specific cards when editing pages we can reduce confusion and clutter.

- added a `@postType` argument to editor components that can be passed through to sub components
- set `@postType` to `post.displayName` which is either `post` or `page`
- updated `{{card-is-available}}` helper to compare a `postType` property on card menu items to the passed in `postType`
This commit is contained in:
Kevin Ansfield 2021-09-10 09:24:38 +01:00
parent e5e68ff55b
commit 8b5c18d6e5
7 changed files with 15 additions and 4 deletions

View File

@ -52,6 +52,7 @@
@updateSnippet={{@updateSnippet}}
@deleteSnippet={{@deleteSnippet}}
@cardOptions={{@cardOptions}}
@postType={{@postType}}
/>
</div>
</div>

View File

@ -92,6 +92,7 @@
@cardOptions={{hash
post=this.post
}}
@postType={{this.post.displayName}}
/>
<div class="gh-editor-wordcount-container">

View File

@ -56,6 +56,7 @@
@deleteSnippet={{this.deleteSnippet}}
@replaceWithCardSection={{action "replaceWithCardSection"}}
@replaceWithPost={{action "replaceWithPost"}}
@postType={{@postType}}
/>
{{!-- slash menu popup --}}
@ -66,6 +67,7 @@
@deleteSnippet={{this.deleteSnippet}}
@replaceWithCardSection={{action "replaceWithCardSection"}}
@replaceWithPost={{action "replaceWithPost"}}
@postType={{@postType}}
/>
{{!-- all component cards wormholed into the editor canvas --}}

View File

@ -5,7 +5,7 @@
{{section.title}}
</div>
{{#each section.items as |item|}}
{{#if (card-is-available item)}}
{{#if (card-is-available item postType=@postType)}}
<div
class="{{if (eq item @selectedItem) "kg-cardmenu-card-selected"}} {{kg-style "cardmenu-card"}}"
data-kg="cardmenu-card"

View File

@ -12,6 +12,7 @@
<KoenigMenuContent
@itemSections={{this.itemSections}}
@itemClicked={{action "itemClicked"}}
@postType={{@postType}}
/>
</div>
{{/if}}

View File

@ -6,7 +6,7 @@ export default class CardIsAvailableHelper extends Helper {
@service config;
@service feature;
compute([card]) {
compute([card], {postType} = {}) {
let cardIsAvailable = true;
if (card.developerExperiment) {
@ -17,6 +17,10 @@ export default class CardIsAvailableHelper extends Helper {
cardIsAvailable = get(this.feature, card.feature);
}
if (postType && card.postType) {
cardIsAvailable = card.postType === postType;
}
return cardIsAvailable;
}
}

View File

@ -121,7 +121,8 @@ export const CARD_MENU = [
desc: 'Only visible when delivered by email',
matches: ['email'],
type: 'card',
replaceArg: 'email'
replaceArg: 'email',
postType: 'post'
},
{
label: 'Email call to action',
@ -129,7 +130,8 @@ export const CARD_MENU = [
desc: 'Target free or paid members with a CTA',
matches: ['email', 'cta'],
type: 'card',
replaceArg: 'email-cta'
replaceArg: 'email-cta',
postType: 'post'
},
{
label: 'Public preview',