Ghost/ghost/admin/lib/koenig-editor/addon/components/koenig-card-header.hbs
Gabriel Csapo beb5ae1737 [chore] adds ember-template-lint and fixes all fixable issues (#2238)
no issue

- This will help with the octane migration and you can still run the lint rules even when they are todos. (Checkout the docs at 158b119667/docs/todos.md) The good news is any new code will be checked against the recommended config.
- I fixed all the auto fixable things we could get in this PR as well
2022-02-02 16:09:43 +00:00

186 lines
9.6 KiB
Handlebars

<KoenigCard
@env={{@env}}
@class="flex flex-column mih10 miw-100 relative koenig-breakout-full"
@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="kg-header-card kg-size-{{@payload.size}} kg-style-{{@payload.style}}" style="{{if (eq @payload.style "image") this.backgroundImageStyle}}">
<KoenigBasicHtmlInput
@html={{@payload.header}}
@placeholder="Enter heading text"
@class="w-100 fw4 bn bg-transparent kg-header-card-header"
@name="header"
@defaultTag="h2"
@onChange={{action "setHeader"}}
@didCreateEditor={{action "registerHeaderEditor"}}
/>
<KoenigBasicHtmlInput
@html={{@payload.subheader}}
@placeholder="Enter subheading text"
@class="w-100 fw4 bg-transparent kg-header-card-subheader"
@name="subheader"
@defaultTag="h3"
@onChange={{action "setSubheader"}}
@didCreateEditor={{action "registerSubheaderEditor"}}
@allowBr={{true}}
/>
{{#if @payload.buttonEnabled}}
<a href="javascript:void(0)" class="gh-btn kg-header-card-button" disabled={{not @payload.buttonText}}>
<span>
{{or @payload.buttonText "Add button text"}}
</span>
</a>
{{/if}}
</div>
<KoenigSettingsPanel>
<div class="kg-settings-panel-control kg-settings-panel-control-horizontal">
<div class="kg-settings-panel-control-label">Size</div>
<div class="kg-settings-panel-control-input">
<div class="gh-btn-group icons">
<button type="button" title="Small" class="gh-btn gh-btn-icon {{if (eq @payload.size "small") "gh-btn-group-selected"}}" {{on "click" (fn this.setSize "small")}}><span>S</span></button>
<button type="button" title="Medium" class="gh-btn gh-btn-icon {{if (eq @payload.size "medium") "gh-btn-group-selected"}}" {{on "click" (fn this.setSize "medium")}}><span>M</span></button>
<button type="button" title="Large" class="gh-btn gh-btn-icon {{if (eq @payload.size "large") "gh-btn-group-selected"}}" {{on "click" (fn this.setSize "large")}}><span>L</span></button>
</div>
</div>
</div>
<div class="kg-settings-panel-control kg-settings-panel-control-horizontal-top">
<div class="kg-settings-panel-control-label">Style</div>
<div class="kg-settings-panel-control-input">
<div class="gh-btn-group kg-settings-headerstyle-btn-group">
<button type="button" class="gh-btn kg-headerstyle-btn-dark {{if (eq @payload.style "dark") "gh-btn-group-selected"}}" {{on "click" (fn this.setStyle "dark")}}></button>
<button type="button" class="gh-btn kg-headerstyle-btn-light {{if (eq @payload.style "light") "gh-btn-group-selected"}}" {{on "click" (fn this.setStyle "light")}}></button>
<button type="button" class="gh-btn kg-headerstyle-btn-accent {{if (eq @payload.style "accent") "gh-btn-group-selected"}}" {{on "click" (fn this.setStyle "accent")}}></button>
<button type="button" class="gh-btn kg-headerstyle-btn-image {{if (eq @payload.style "image") "gh-btn-group-selected"}}" {{on "click" (fn this.setStyle "image")}}>{{svg-jar "plus"}}</button>
</div>
</div>
</div>
<div>
<GhUploader
@uploadUrl="/images/upload/"
@accept={{this.imageMimeTypes}}
@extensions={{this.imageExtensions}}
@onComplete={{this.backgroundImageUploadCompleted}}
as |uploader|
>
{{#if (eq @payload.style "image")}}
<div class="relative w-100">
{{#if uploader.isUploading}}
<div class="kg-upload-thumbnail-xl">
{{uploader.progressBar}}
</div>
{{else if @payload.backgroundImageSrc}}
<div class="kg-thumbnail-xl-container">
<img class="kg-thumbnail-xl" src={{@payload.backgroundImageSrc}} {{on "click" uploader.triggerFileDialog}}>
<div class="image-overlay">
<div class="flex flex-row-reverse">
<button class="bg-white-90 br3 pe-auto" type="button" {{on "click" this.deleteBackgroundImage}}>
{{svg-jar "koenig/kg-trash" class="kg-replace-icon fill-darkgrey"}}
</button>
</div>
</div>
</div>
{{else}}
<button type="button" class="gh-btn kg-upload-thumbnail-xl with-label" {{on "click" uploader.triggerFileDialog}}>
{{svg-jar "upload-fill"}}
<span>Click to add background image</span>
</button>
{{/if}}
</div>
{{/if}}
<div style="display:none">
<GhFileInput
@multiple={{false}}
@action={{uploader.setFiles}}
@accept={{this.imageMimeTypes}}
@onInsert={{uploader.registerFileInput}}
/>
</div>
</GhUploader>
</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">Button</div>
<div class="kg-settings-panel-control-input">
<div class="for-switch x-small">
<label class="switch" for="has-button">
<input
type="checkbox"
checked={{@payload.buttonEnabled}}
id="has-button"
{{on "click" this.toggleButton}}
>
<span class="input-toggle-component mt1"></span>
</label>
</div>
</div>
</div>
{{#if @payload.buttonEnabled}}
<div class="kg-settings-panel-control">
<label class="kg-settings-panel-control-label" for="header-button-input">Text</label>
<div class="kg-settings-panel-control-input">
<input
type="text"
class="gh-input"
id="header-button-input"
name="header-button"
value={{@payload.buttonText}}
placeholder="Add button text"
{{on "input" this.setButtonText}}
{{on-key "Enter" (fn this.focusElement "#header-button-input")}}
>
</div>
</div>
<div class="kg-settings-panel-control">
<label class="kg-settings-panel-control-label" for="header-url-input">URL</label>
<div class="kg-settings-panel-control-input">
<input
type="text"
class="gh-input"
id="header-url-input"
name="header-url"
value={{@payload.buttonUrl}}
placeholder="Add URL"
{{on "input" this.setButtonUrl}}
{{on-key "Enter" (fn this.focusElement "#header-url-input")}}
>
</div>
</div>
{{/if}}
</KoenigSettingsPanel>
{{else}}
<div class="kg-header-card kg-size-{{@payload.size}} kg-style-{{@payload.style}}" style="{{if (eq @payload.style "image") this.backgroundImageStyle}}">
<h2 class="kg-header-card-header">{{{@payload.header}}}</h2>
{{#if this.hasSubheader}}
<h3 class="kg-header-card-subheader">{{{@payload.subheader}}}</h3>
{{/if}}
{{#if @payload.buttonEnabled}}
<a href="javascript:void(0)" class="gh-btn kg-header-card-button {{if this.isButtonIncomplete "o-50"}}" disabled={{not @payload.buttonText}}>
<span>
{{or @payload.buttonText "Add button text"}}
</span>
</a>
{{/if}}
</div>
{{/if}}
</KoenigCard>