logo

pleroma-fe

My custom branche(s) on git.pleroma.social/pleroma/pleroma-fe git clone https://anongit.hacktivis.me/git/pleroma-fe.git/
commit: 4e2cb8c13291607407c388dec96e5c594f08dfbc
parent f1d0a6b0a2c3cba9d757782859b0188c367e9c72
Author: Henry Jameson <me@hjkos.com>
Date:   Wed, 23 Oct 2024 21:54:16 +0300

re-thought shadow ComponentPreview and added more assists to it

Diffstat:

Msrc/components/component_preview/component_preview.vue164++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------------------
Msrc/components/settings_modal/tabs/style_tab/style_tab.js10+++++++++-
Msrc/i18n/en.json4++++
3 files changed, 129 insertions(+), 49 deletions(-)

diff --git a/src/components/component_preview/component_preview.vue b/src/components/component_preview/component_preview.vue @@ -11,19 +11,50 @@ <!-- eslint-enable vue/no-v-html vue/no-v-text-v-html-on-component --> <label v-show="shadowControl" + role="heading" class="header" :class="{ faint: disabled }" > {{ $t('settings.style.shadows.offset') }} </label> + <label + v-show="shadowControl && !hideControls" + class="x-shift-number" + > + {{ $t('settings.style.shadows.offset-x') }} + <input + :value="shadow?.x" + :disabled="disabled" + :class="{ disabled }" + class="input input-number" + type="number" + @input="e => updateProperty('x', e.target.value)" + > + </label> + <label + class="y-shift-number" + v-show="shadowControl && !hideControls" + > + {{ $t('settings.style.shadows.offset-y') }} + <input + :value="shadow?.y" + :disabled="disabled" + :class="{ disabled }" + class="input input-number" + type="number" + @input="e => updateProperty('y', e.target.value)" + > + </label> <input v-show="shadowControl && !hideControls" - :value="shadow?.y" + :value="shadow?.x" :disabled="disabled" :class="{ disabled }" - class="input input-number y-shift-number" - type="number" - @input="e => updateProperty('y', e.target.value)" + class="input input-range x-shift-slider" + type="range" + max="20" + min="-20" + @input="e => updateProperty('x', e.target.value)" > <input v-show="shadowControl && !hideControls" @@ -43,7 +74,7 @@ <div class="preview-block" :class="previewClass" - :style="previewStyle" + :style="style" > {{ $t('settings.style.themes3.editor.test_string') }} </div> @@ -53,43 +84,42 @@ </div> </div> </div> - <input - v-show="shadowControl && !hideControls" - :value="shadow?.x" - :disabled="disabled" - :class="{ disabled }" - class="input input-number x-shift-number" - type="number" - @input="e => updateProperty('x', e.target.value)" - > - <input - v-show="shadowControl && !hideControls" - :value="shadow?.x" - :disabled="disabled" - :class="{ disabled }" - class="input input-range x-shift-slider" - type="range" - max="20" - min="-20" - @input="e => updateProperty('x', e.target.value)" - > - <Checkbox - id="lightGrid" - v-model="lightGrid" - name="lightGrid" - class="input-light-grid" - > - {{ $t('settings.style.shadows.light_grid') }} - </Checkbox> + <div class="assists"> + <Checkbox + v-model="lightGrid" + name="lightGrid" + class="input-light-grid" + > + {{ $t('settings.style.shadows.light_grid') }} + </Checkbox> + <div class="style-control"> + <label class="label"> + {{ $t('settings.style.shadows.zoom') }} + </label> + <input + v-model="zoom" + class="input input-number y-shift-number" + type="number" + > + </div> + <ColorInput + class="input-color-input" + v-model="colorOverride" + fallback="#606060" + :label="$t('settings.style.shadows.color_override')" + /> + </div> </div> </template> <script> import Checkbox from 'src/components/checkbox/checkbox.vue' +import ColorInput from 'src/components/color_input/color_input.vue' export default { components: { - Checkbox + Checkbox, + ColorInput }, props: [ 'shadow', @@ -103,10 +133,21 @@ export default { emits: ['update:shadow'], data () { return { - lightGrid: false + colorOverride: null, + lightGrid: false, + zoom: 100 } }, computed: { + style () { + console.log(this.previewStyle) + const result = [ + this.previewStyle, + `zoom: ${this.zoom / 100}` + ] + if (this.colorOverride) result.push(`--background: ${this.colorOverride}`) + return result + }, hideControls () { return typeof this.shadow === 'string' } @@ -121,16 +162,27 @@ export default { <style lang="scss"> .ComponentPreview { display: grid; - grid-template-columns: 3em 1fr 3em; - grid-template-rows: 2em 1fr 2em; + grid-template-columns: 1em 1fr 1fr 1em; + grid-template-rows: 2em 1fr 1fr 1fr 1em 2em max-content; grid-template-areas: - ". header y-num " - ". preview y-slide" - "x-num x-slide . " - "options options options"; + "header header header header " + "preview preview preview y-slide" + "preview preview preview y-slide" + "preview preview preview y-slide" + "x-slide x-slide x-slide . " + "x-num x-num y-num y-num " + "assists assists assists assists"; grid-gap: 0.5em; - max-width: 25em; - max-height: 25em; + + &:not(.-shadow-controls) { + grid-template-areas: + "header header header header " + "preview preview preview y-slide" + "preview preview preview y-slide" + "preview preview preview y-slide" + "assists assists assists assists"; + grid-template-rows: 2em 1fr 1fr 1fr max-content; + } .header { grid-area: header; @@ -155,8 +207,15 @@ export default { } } + .assists { + grid-area: assists; + display: grid; + grid-auto-flow: rows; + grid-auto-rows: 2em; + grid-gap: 0.5em; + } + .input-light-grid { - grid-area: options; justify-self: center; } @@ -166,6 +225,19 @@ export default { .x-shift-number { grid-area: x-num; + justify-self: right; + } + + .y-shift-number { + grid-area: y-num; + justify-self: left; + } + + .x-shift-number, + .y-shift-number { + input { + max-width: 4em; + } } .x-shift-slider { @@ -175,10 +247,6 @@ export default { min-width: 10em; } - .y-shift-number { - grid-area: y-num; - } - .y-shift-slider { grid-area: y-slide; writing-mode: vertical-lr; diff --git a/src/components/settings_modal/tabs/style_tab/style_tab.js b/src/components/settings_modal/tabs/style_tab/style_tab.js @@ -680,6 +680,14 @@ export default { { immediate: true } ) + const virtualDirectivesOut = computed(() => { + return [ + 'Root {', + ...virtualDirectives.map(vd => ` --${vd.name}: ${vd.value};`), + '}' + ].join('\n') + }) + exports.getNewVirtualDirective = () => ({ name: 'newDirective', valType: 'generic', @@ -695,7 +703,6 @@ export default { } exports.contrast = computed(() => { - console.log('APR', applicablePreviewRules.value) return getContrast( exports.computeColor(previewColors.value.background), exports.computeColor(previewColors.value.text) @@ -777,6 +784,7 @@ export default { return [ metaOut.value, palettesOut.value, + virtualDirectivesOut.value, serialize(editorFriendlyToOriginal.value) ].join('\n\n') }) diff --git a/src/i18n/en.json b/src/i18n/en.json @@ -949,7 +949,11 @@ "override": "Override", "shadow_id": "Shadow #{value}", "offset": "Shadow offset", + "zoom": "Zoom", + "offset-x": "x:", + "offset-y": "y:", "light_grid": "Use light checkerboard", + "color_override": "Use different color", "name": "Name", "blur": "Blur", "spread": "Spread",