Ghost/ghost/admin/lib/koenig-editor/addon/components/koenig-card-email-cta.hbs
Kevin Ansfield 63b1e4e8ad
Resolved power-select related deprecation warnings for loading components by string (#15466)
no issue

- in many places we were passing a string as an argument to a `<PowerSelect>` related component that referred to a component name, that was throwing deprecation warnings because those strings were used dynamically with `{{component}}` later on which isn't statically analyzable
- switched to passing a component explicitly with `{{component}}`
- https://github.com/embroider-build/embroider/blob/main/REPLACING-COMPONENT-HELPER.md#when-youre-passing-a-component-to-someone-else
2022-09-24 17:00:05 +02:00

181 lines
8.5 KiB
Handlebars

<KoenigCard
@env={{@env}}
@icon={{"koenig/card-indicator-email"}}
@class={{concat (kg-style "container-card") " kg-email-card kg-email-cta-card mih10 miw-100 relative"}}
@headerOffset={{@headerOffset}}
@toolbar={{this.toolbar}}
@payload={{@payload}}
@isSelected={{@isSelected}}
@isEditing={{@isEditing}}
@selectCard={{@selectCard}}
@deselectCard={{@deselectCard}}
@editCard={{@editCard}}
@hasEditMode={{true}}
@saveCard={{@saveCard}}
@saveAsSnippet={{@saveAsSnippet}}
@onLeaveEdit={{this.leaveEditMode}}
@addParagraphAfterCard={{@addParagraphAfterCard}}
@moveCursorToPrevSection={{@moveCursorToPrevSection}}
@moveCursorToNextSection={{@moveCursorToNextSection}}
@editor={{@editor}}
{{did-insert this.registerElement}}
as |card|
>
{{#if @isEditing}}
<div class="gh-email-cta-segment-indicator">
<p>{{capitalize this.selectedSegment.name}}</p>
</div>
{{#if @payload.showDividers}}<hr class="border-top">{{/if}}
<div class="{{if (eq @payload.alignment "center") "tc"}}">
<KoenigTextReplacementHtmlInput
@html={{@payload.html}}
@placeholder="Email only text... (optional)"
@autofocus={{true}}
@class="miw-100 bn bg-transparent"
@onChange={{this.updateHtml}}
@onFocus={{fn (mut this.contentFocused) true}}
@onBlur={{fn (mut this.contentFocused) false}}
@didCreateEditor={{this.registerEditor}}
/>
{{#if @payload.showButton}}
<button type="button" class="gh-btn gh-btn-accent" disabled={{not @payload.buttonText}}>
{{#if @payload.buttonText}}
<span>{{@payload.buttonText}}</span>
{{else}}
<span>Add button text</span>
{{/if}}
</button>
{{/if}}
</div>
{{#if @payload.showDividers}}<hr class="border-bottom">{{/if}}
<KoenigSettingsPanel>
<div class="kg-settings-panel-control">
<div class="kg-settings-panel-control-label">Visibility</div>
<div class="kg-settings-panel-control-input">
<PowerSelect
@options={{this.segments}}
@selected={{this.selectedSegment}}
@onChange={{this.setSegment}}
@searchEnabled={{false}}
@triggerComponent={{component "gh-power-select/trigger"}}
@dropdownClass="gh-member-segment-select-dropdown"
as |segment|
>
<span class="ttc">{{segment.name}}</span>
</PowerSelect>
</div>
<p class="kg-settings-panel-control-info">
Visible for this audience when delivered by email. This card is not published on your site.
</p>
</div>
<hr class="kg-settings-panel-divider">
<div class="kg-settings-panel-control kg-settings-panel-control-horizontal">
<div class="kg-settings-panel-control-label">Content alignment</div>
<div class="kg-settings-panel-control-input">
<div class="gh-btn-group icons">
<button type="button" title="Left-align content" class="gh-btn gh-btn-icon {{if (eq @payload.alignment "left") "gh-btn-group-selected"}}" {{on "click" (fn this.setAlignment "left")}}><span>{{svg-jar "align-left"}}</span></button>
<button type="button" title="Center-align content" class="gh-btn gh-btn-icon {{if (eq @payload.alignment "center") "gh-btn-group-selected"}}" {{on "click" (fn this.setAlignment "center")}}><span>{{svg-jar "align-center"}}</span></button>
</div>
</div>
</div>
<div class="kg-settings-panel-control kg-settings-panel-control-horizontal">
<label class="kg-settings-panel-control-label" for="divider-toggle">Separators</label>
<div class="kg-settings-panel-control-input">
<div class="for-switch x-small">
<label class="switch">
<input type="checkbox" class="gh-input" id="divider-toggle" checked={{@payload.showDividers}} {{on "input" this.toggleDividers}}>
<span class="input-toggle-component mt1"></span>
</label>
</div>
</div>
</div>
<hr class="kg-settings-panel-divider">
<div class="kg-settings-panel-control kg-settings-panel-control-horizontal">
<label class="kg-settings-panel-control-label" for="button-toggle">Button</label>
<div class="kg-settings-panel-control-input">
<div class="for-switch x-small">
<label class="switch">
<input type="checkbox" class="gh-input" id="button-toggle" checked={{@payload.showButton}} {{on "input" this.toggleButton}}>
<span class="input-toggle-component mt1"></span>
</label>
</div>
</div>
</div>
{{#if @payload.showButton}}
<div class="kg-settings-panel-control">
<label class="kg-settings-panel-control-label" for="button-text-input">Button title</label>
<div class="kg-settings-panel-control-input">
<input
type="text"
class="gh-input"
id="button-text-input"
name="button-text"
value={{@payload.buttonText}}
placeholder="Add button text"
{{on "input" this.setButtonText}}
{{on-key "Enter" (fn this.focusElement "#button-url-input")}}
>
</div>
</div>
<div class="kg-settings-panel-control">
<label class="kg-settings-panel-control-label" for="button-url-input">Button URL</label>
<div class="kg-settings-panel-control-input">
<GhInputWithSelect
@value={{@payload.buttonUrl}}
@options={{this.suggestedUrls}}
@valueField="url"
@searchField="url"
@placeholder="https://yoursite.com/#/portal/signup/"
@searchMessage={{null}}
@onInput={{this.setButtonUrl}}
@openOnFocus={{true}}
@closeWhenEmpty={{true}}
@triggerClass="email-cta-button-url-input"
@triggerId="button-url-input"
@renderInPlace={{false}} {{!-- avoid dropdown inheriting editor styles --}}
as |suggestion|
>
<span class="kg-settings-link-title" title="{{suggestion.name}}">{{suggestion.name}}</span>
<span class="kg-settings-link-url" {{on "mouseenter" this.enterLinkURL}} {{on "mouseleave" this.leaveLinkURL}}><span>{{suggestion.url}}</span></span>
</GhInputWithSelect>
</div>
</div>
{{/if}}
</KoenigSettingsPanel>
{{else}}
<div class="gh-email-cta-segment-indicator">
<p>{{capitalize this.selectedSegment.name}}</p>
</div>
{{#if @payload.showDividers}}<hr class="border-top">{{/if}}
<div class="{{unless @payload.showDividers "pb2"}}{{if (eq @payload.alignment "center") "tc"}}">
{{#if @payload.html}}
<div class="relative">
<p>{{{this.formattedHtml}}}</p>
<div class="koenig-card-click-overlay"></div>
</div>
{{/if}}
{{#if (and @payload.showButton @payload.buttonText @payload.buttonUrl)}}
<a class="gh-btn gh-btn-accent" href="javascript:void(0)" data-tooltip={{@payload.buttonUrl}}><span>{{@payload.buttonText}}</span></a>
{{/if}}
</div>
{{#if @payload.showDividers}}<hr class="border-bottom">{{/if}}
{{/if}}
</KoenigCard>