110 lines
2.1 KiB
Vue
110 lines
2.1 KiB
Vue
|
<template>
|
||
|
<div
|
||
|
class="figure penis"
|
||
|
>
|
||
|
<div class="value-section">
|
||
|
<span class="value-label">Units</span>
|
||
|
|
||
|
<select
|
||
|
:value="units"
|
||
|
class="input"
|
||
|
:disabled="!editing.has('penis')"
|
||
|
@change="emit('units', $event.target.value)"
|
||
|
>
|
||
|
<option value="imperial">Imperial</option>
|
||
|
<option value="metric">Metric</option>
|
||
|
</select>
|
||
|
</div>
|
||
|
|
||
|
<div class="value-section">
|
||
|
<span class="value-label">Penis length</span>
|
||
|
|
||
|
<span v-if="units === 'metric'">
|
||
|
<input
|
||
|
v-model="penis.metricLength"
|
||
|
type="number"
|
||
|
class="volume input"
|
||
|
min="1"
|
||
|
max="30"
|
||
|
:disabled="!editing.has('penis')"
|
||
|
> cm
|
||
|
</span>
|
||
|
|
||
|
<span v-if="units === 'imperial'">
|
||
|
<input
|
||
|
v-model="penis.imperialLength"
|
||
|
type="number"
|
||
|
class="volume input"
|
||
|
min="1"
|
||
|
max="30"
|
||
|
:disabled="!editing.has('penis')"
|
||
|
> inch
|
||
|
</span>
|
||
|
</div>
|
||
|
|
||
|
<div class="value-section">
|
||
|
<span class="value-label">Penis girth</span>
|
||
|
|
||
|
<span v-if="units === 'metric'">
|
||
|
<input
|
||
|
v-model="penis.metricGirth"
|
||
|
type="number"
|
||
|
class="volume input"
|
||
|
min="1"
|
||
|
max="30"
|
||
|
:disabled="!editing.has('penis')"
|
||
|
> cm
|
||
|
</span>
|
||
|
|
||
|
<span v-if="units === 'imperial'">
|
||
|
<input
|
||
|
v-model="penis.imperialGirth"
|
||
|
type="number"
|
||
|
class="volume input"
|
||
|
min="1"
|
||
|
max="30"
|
||
|
:disabled="!editing.has('penis')"
|
||
|
> inch
|
||
|
</span>
|
||
|
</div>
|
||
|
|
||
|
<div class="value-section">
|
||
|
<span class="value-label">Circumcised</span>
|
||
|
|
||
|
<select
|
||
|
v-model="penis.isCircumcised"
|
||
|
class="input"
|
||
|
:disabled="!editing.has('penis')"
|
||
|
>
|
||
|
<option :value="null" />
|
||
|
<option :value="true">Yes</option>
|
||
|
<option :value="false">No</option>
|
||
|
</select>
|
||
|
</div>
|
||
|
</div>
|
||
|
</template>
|
||
|
|
||
|
<script setup>
|
||
|
import { reactive, watch } from 'vue';
|
||
|
|
||
|
const props = defineProps({
|
||
|
edits: {
|
||
|
type: Object,
|
||
|
default: null,
|
||
|
},
|
||
|
editing: {
|
||
|
type: Set,
|
||
|
default: null,
|
||
|
},
|
||
|
units: {
|
||
|
type: String,
|
||
|
default: null,
|
||
|
},
|
||
|
});
|
||
|
|
||
|
const emit = defineEmits(['penis', 'units']);
|
||
|
const penis = reactive(props.edits.penis);
|
||
|
|
||
|
watch(penis, () => emit('penis', penis));
|
||
|
</script>
|