mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-27 04:43:12 +03:00
1447a57aa8
no issue - pressing enter in the accent field would attempt to submit the form and trigger the confirm action - no confirm action was present on the modal component meaning the base modal confirm action would trigger a invalid usage error - we don't want enter in the accent field to save, instead we want to blur the element and trigger a preview update
160 lines
8.0 KiB
Handlebars
160 lines
8.0 KiB
Handlebars
<div class="gh-stack" ...attributes>
|
|
<div class="gh-stack-item gh-setting-first gh-accent-color">
|
|
<div class="gh-setting-content">
|
|
<div class="gh-setting-title">Accent color</div>
|
|
<div class="gh-setting-desc">Primary color used in your publication theme</div>
|
|
{{#each uploader.errors as |error|}}
|
|
<div class="gh-setting-error" data-test-error="icon">{{or error.context error.message}}</div>
|
|
{{/each}}
|
|
<div class="w-100 flex flex-column flex-row-ns">
|
|
<GhErrorMessage @errors={{settings.errors}} @property="accentColor" class="w-100 red"/>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="gh-setting-action" data-test-setting="accentColor">
|
|
<GhFormGroup
|
|
@errors={{this.settings.errors}}
|
|
@hasValidated={{this.settings.hasValidated}}
|
|
@property="accentColor"
|
|
@class="input-color-form-group"
|
|
>
|
|
<div class="input-color">
|
|
<input
|
|
type="text"
|
|
placeholder="15171A"
|
|
name="accent-color"
|
|
autocorrect="off"
|
|
maxlength="6"
|
|
value={{this.accentColor}}
|
|
class="gh-input"
|
|
{{on "input" (perform this.debounceUpdateAccentColor)}}
|
|
{{on "blur" this.updateAccentColor}}
|
|
{{on-key "Enter" this.blurElement}}
|
|
data-test-input="accentColor"
|
|
/>
|
|
<div class="color-picker-horizontal-divider"></div>
|
|
<div
|
|
class="color-box-container"
|
|
style={{this.accentColorBgStlye}}
|
|
>
|
|
<input
|
|
type="color"
|
|
name="accent-color"
|
|
class="color-picker"
|
|
value="{{this.accentColorPickerValue}}"
|
|
{{on "input" (perform this.debounceUpdateAccentColor)}}
|
|
>
|
|
</div>
|
|
</div>
|
|
</GhFormGroup>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="gh-stack-item gh-setting" data-test-setting="icon">
|
|
<GhUploader
|
|
@extensions={{this.iconExtensions}}
|
|
@paramsHash={{hash purpose="icon"}}
|
|
@onComplete={{fn this.imageUploaded "icon"}}
|
|
as |uploader|
|
|
>
|
|
<div class="gh-setting-content">
|
|
<div class="gh-setting-title">Publication icon</div>
|
|
<div class="gh-setting-desc">A square, social icon used in the UI of your publication, at least 60x60px</div>
|
|
{{#each uploader.errors as |error|}}
|
|
<div class="gh-setting-error" data-test-error="icon">{{or error.context error.message}}</div>
|
|
{{/each}}
|
|
</div>
|
|
<div class="gh-setting-action gh-uploadbutton-container gh-setting-action-smallimg flex flex-column">
|
|
{{#if uploader.isUploading}}
|
|
{{uploader.progressBar}}
|
|
{{else if this.settings.icon}}
|
|
<div class="gh-branding-image-container transparent-bg">
|
|
<img class="blog-icon" src="{{this.settings.icon}}" {{on "click" this.triggerFileDialog}} alt="icon" data-test-icon-img>
|
|
<button type="button" class="gh-setting-action-smallimg-delete" {{on "click" (fn this.removeImage "icon")}} data-test-delete-image="icon">
|
|
{{svg-jar "trash" class="w4 h4 fill-white"}}
|
|
</button>
|
|
</div>
|
|
{{else}}
|
|
<button type="button" class="gh-btn self-center" {{on "click" triggerFileDialog}} data-test-image-upload-btn="icon">
|
|
<span>Upload icon</span>
|
|
</button>
|
|
{{/if}}
|
|
<div style="display:none">
|
|
<GhFileInput @multiple={{false}} @action={{uploader.setFiles}} @accept={{this.iconMimeTypes}} data-test-file-input="icon" />
|
|
</div>
|
|
</div>
|
|
</GhUploader>
|
|
</div>
|
|
|
|
<div class="gh-stack-item gh-setting" data-test-setting="logo">
|
|
<GhUploader
|
|
@extensions={{this.imageExtensions}}
|
|
@onComplete={{fn this.imageUploaded "logo"}}
|
|
as |uploader|
|
|
>
|
|
<div>
|
|
<div class="gh-setting-title">Publication logo</div>
|
|
<div class="gh-setting-desc mb3">The primary logo for your brand displayed across your theme, should be transparent and at least 600px x 72px</div>
|
|
|
|
<div class="gh-setting-action gh-uploadbutton-container gh-setting-action-smallimg flex flex-column">
|
|
{{#each uploader.errors as |error|}}
|
|
<div class="gh-setting-error" data-test-error="logo">{{or error.context error.message}}</div>
|
|
{{/each}}
|
|
{{#if uploader.isUploading}}
|
|
{{uploader.progressBar}}
|
|
{{else if this.settings.logo}}
|
|
<div class="gh-branding-image-container largeimg justify-center transparent-bg">
|
|
<img class="blog-logo" src="{{this.settings.logo}}" {{on "click" this.triggerFileDialog}} alt="logo" data-test-logo-img>
|
|
<button type="button" class="gh-setting-action-smallimg-delete" {{on "click" (fn this.removeImage "logo")}} data-test-delete-image="logo">
|
|
{{svg-jar "trash" class="w4 h4 fill-white"}}
|
|
</button>
|
|
</div>
|
|
{{else}}
|
|
<button type="button" class="gh-btn self-start" {{on "click" this.triggerFileDialog}} data-test-image-upload-btn="logo">
|
|
<span>Upload logo</span>
|
|
</button>
|
|
{{/if}}
|
|
<div style="display:none">
|
|
<GhFileInput @multiple={{false}} @action={{uploader.setFiles}} @accept={{this.imageMimeTypes}} data-test-file-input="logo" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</GhUploader>
|
|
</div>
|
|
|
|
<div class="gh-stack-item gh-setting" data-test-setting="coverImage">
|
|
<GhUploader
|
|
@extensions={{this.imageExtensions}}
|
|
@onComplete={{fn this.imageUploaded "coverImage"}}
|
|
as |uploader|
|
|
>
|
|
<div>
|
|
<div class="gh-setting-title">Publication cover</div>
|
|
<div class="gh-setting-desc mb3">An optional large background image for your site</div>
|
|
{{#each uploader.errors as |error|}}
|
|
<div class="gh-setting-error" data-test-error="coverImage">{{or error.context error.message}}</div>
|
|
{{/each}}
|
|
|
|
<div class="gh-setting-action gh-uploadbutton-container flex flex-column items-stretch">
|
|
{{#if uploader.isUploading}}
|
|
{{uploader.progressBar}}
|
|
{{else if this.settings.coverImage}}
|
|
<div class="gh-branding-image-container largeimg justify-start">
|
|
<img class="blog-cover" src="{{this.settings.coverImage}}" {{on "click" this.triggerFileDialog}} alt="cover photo" data-test-cover-img>
|
|
<button type="button" class="gh-setting-action-largeimg-delete" {{on "click" (fn this.removeImage "coverImage")}} data-test-delete-image="coverImage">
|
|
{{svg-jar "trash" class="w4 h4 fill-white"}}
|
|
</button>
|
|
</div>
|
|
{{else}}
|
|
<button type="button" class="gh-btn self-start" {{on "click" this.triggerFileDialog}} data-test-image-upload-btn="coverImage">
|
|
<span>Upload cover</span>
|
|
</button>
|
|
{{/if}}
|
|
<div style="display:none">
|
|
<GhFileInput @multiple={{false}} @action={{uploader.setFiles}} @accept={{this.imageMimeTypes}} data-test-file-input="coverImage" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</GhUploader>
|
|
</div>
|
|
</div> |