Files
docuseal/app/javascript/submission_form/number_step.vue
T

96 lines
2.1 KiB
Vue
Raw Normal View History

2024-02-23 15:58:49 +02:00
<template>
<label
2024-03-09 18:24:21 +02:00
v-if="showFieldNames && (field.name || field.title)"
2024-02-23 15:58:49 +02:00
:for="field.uuid"
dir="auto"
2025-03-18 17:34:11 +02:00
class="label text-xl sm:text-2xl py-0 mb-2 sm:mb-3.5 field-name-label"
2024-02-23 15:58:49 +02:00
:class="{ 'mb-2': !field.description }"
>
<MarkdownContent
v-if="field.title"
:string="field.title"
/>
2024-02-23 15:58:49 +02:00
<template v-else>{{ field.name }}</template>
2024-06-13 14:24:37 +03:00
<template v-if="!field.required">
2025-02-02 12:30:01 +02:00
<span :class="{ 'hidden sm:inline': (field.title || field.name).length > 20 }">
({{ t('optional') }})
</span>
2024-06-13 14:24:37 +03:00
</template>
2024-02-23 15:58:49 +02:00
</label>
<div
v-else
class="py-1"
/>
<div
v-if="field.description"
2026-04-16 12:41:42 +03:00
:id="field.uuid + '-desc'"
2024-03-09 18:24:21 +02:00
dir="auto"
2025-03-18 17:34:11 +02:00
class="mb-3 px-1 field-description-text"
2024-03-09 18:24:21 +02:00
>
<MarkdownContent :string="field.description" />
</div>
2024-02-23 15:58:49 +02:00
<AppearsOn :field="field" />
<div class="items-center flex">
<input
type="hidden"
name="cast_number"
value="true"
>
<input
:id="field.uuid"
v-model="number"
type="number"
2025-08-20 18:19:23 +03:00
:step="field.validation?.step || 'any'"
:min="field.validation?.min"
:max="field.validation?.max"
2024-02-23 15:58:49 +02:00
class="base-input !text-2xl w-full"
:required="field.required"
2026-04-16 12:41:42 +03:00
:aria-describedby="field.description ? field.uuid + '-desc' : undefined"
2024-02-23 15:58:49 +02:00
:placeholder="`${t('type_here_')}${field.required ? '' : ` (${t('optional')})`}`"
:name="`values[${field.uuid}]`"
@focus="$emit('focus')"
>
</div>
</template>
<script>
import AppearsOn from './appears_on'
2024-03-09 18:24:21 +02:00
import MarkdownContent from './markdown_content'
2024-02-23 15:58:49 +02:00
export default {
name: 'TextStep',
components: {
2024-03-09 18:24:21 +02:00
AppearsOn,
MarkdownContent
2024-02-23 15:58:49 +02:00
},
inject: ['t'],
props: {
field: {
type: Object,
required: true
},
showFieldNames: {
type: Boolean,
required: false,
default: true
},
modelValue: {
2024-02-24 01:01:36 +02:00
type: [String, Number],
2024-02-23 15:58:49 +02:00
required: false,
default: ''
}
},
emits: ['update:model-value', 'focus'],
computed: {
number: {
set (value) {
this.$emit('update:model-value', value)
},
get () {
return this.modelValue
}
}
}
}
</script>