<template> <div class="shadow-control" :class="{ disabled: !present }" > <div class="shadow-preview-container"> <div :disabled="!present" class="y-shift-control" > <input v-model="selected.y" :disabled="!present" class="input-number" type="number" > <div class="wrap"> <input v-model="selected.y" :disabled="!present" class="input-range" type="range" max="20" min="-20" > </div> </div> <div class="preview-window"> <div class="preview-block" :style="style" /> </div> <div :disabled="!present" class="x-shift-control" > <input v-model="selected.x" :disabled="!present" class="input-number" type="number" > <div class="wrap"> <input v-model="selected.x" :disabled="!present" class="input-range" type="range" max="20" min="-20" > </div> </div> </div> <div class="shadow-tweak"> <div :disabled="usingFallback" class="id-control style-control" > <label for="shadow-switcher" class="select" :disabled="!ready || usingFallback" > <select id="shadow-switcher" v-model="selectedId" class="shadow-switcher" :disabled="!ready || usingFallback" > <option v-for="(shadow, index) in cValue" :key="index" :value="index" > {{ $t('settings.style.shadows.shadow_id', { value: index }) }} </option> </select> <i class="icon-down-open" /> </label> <button class="btn btn-default" :disabled="!ready || !present" @click="del" > <i class="icon-cancel" /> </button> <button class="btn btn-default" :disabled="!moveUpValid" @click="moveUp" > <i class="icon-up-open" /> </button> <button class="btn btn-default" :disabled="!moveDnValid" @click="moveDn" > <i class="icon-down-open" /> </button> <button class="btn btn-default" :disabled="usingFallback" @click="add" > <i class="icon-plus" /> </button> </div> <div :disabled="!present" class="inset-control style-control" > <label for="inset" class="label" > {{ $t('settings.style.shadows.inset') }} </label> <input id="inset" v-model="selected.inset" :disabled="!present" name="inset" class="input-inset" type="checkbox" > <label class="checkbox-label" for="inset" /> </div> <div :disabled="!present" class="blur-control style-control" > <label for="spread" class="label" > {{ $t('settings.style.shadows.blur') }} </label> <input id="blur" v-model="selected.blur" :disabled="!present" name="blur" class="input-range" type="range" max="20" min="0" > <input v-model="selected.blur" :disabled="!present" class="input-number" type="number" min="0" > </div> <div :disabled="!present" class="spread-control style-control" > <label for="spread" class="label" > {{ $t('settings.style.shadows.spread') }} </label> <input id="spread" v-model="selected.spread" :disabled="!present" name="spread" class="input-range" type="range" max="20" min="-20" > <input v-model="selected.spread" :disabled="!present" class="input-number" type="number" > </div> <ColorInput v-model="selected.color" :disabled="!present" :label="$t('settings.style.common.color')" name="shadow" /> <OpacityInput v-model="selected.alpha" :disabled="!present" /> <p> {{ $t('settings.style.shadows.hint') }} </p> </div> </div> </template> <script src="./shadow_control.js" ></script> <style lang="scss"> @import '../../_variables.scss'; .shadow-control { display: flex; flex-wrap: wrap; justify-content: center; margin-bottom: 1em; .shadow-preview-container, .shadow-tweak { margin: 5px 6px 0 0; } .shadow-preview-container { flex: 0; display: flex; flex-wrap: wrap; $side: 15em; input[type=number] { width: 5em; min-width: 2em; } .x-shift-control, .y-shift-control { display: flex; flex: 0; &[disabled=disabled] *{ opacity: .5 } } .x-shift-control { align-items: flex-start; } .x-shift-control .wrap, input[type=range] { margin: 0; width: $side; height: 2em; } .y-shift-control { flex-direction: column; align-items: flex-end; .wrap { width: 2em; height: $side; } input[type=range] { transform-origin: 1em 1em; transform: rotate(90deg); } } .preview-window { flex: 1; background-color: #999999; display: flex; align-items: center; justify-content: center; background-image: linear-gradient(45deg, #666666 25%, transparent 25%), linear-gradient(-45deg, #666666 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #666666 75%), linear-gradient(-45deg, transparent 75%, #666666 75%); background-size: 20px 20px; background-position:0 0, 0 10px, 10px -10px, -10px 0; border-radius: $fallback--inputRadius; border-radius: var(--inputRadius, $fallback--inputRadius); .preview-block { width: 33%; height: 33%; background-color: $fallback--bg; background-color: var(--bg, $fallback--bg); border-radius: $fallback--panelRadius; border-radius: var(--panelRadius, $fallback--panelRadius); } } } .shadow-tweak { flex: 1; min-width: 280px; .id-control { align-items: stretch; .select, .btn { min-width: 1px; margin-right: 5px; } .btn { padding: 0 .4em; margin: 0 .1em; } .select { flex: 1; select { align-self: initial; } } } } } </style>