mirror of https://github.com/docusealco/docuseal
parent
2573d8cb19
commit
7a4629bf79
@ -0,0 +1,115 @@
|
||||
<template>
|
||||
<Field
|
||||
v-if="dragPlaceholder && isField && !isMask && field"
|
||||
ref="dragPlaceholder"
|
||||
:style="dragPlaceholderStyle"
|
||||
:field="field"
|
||||
:with-options="false"
|
||||
class="fixed z-20 pointer-events-none"
|
||||
:editable="false"
|
||||
/>
|
||||
<div
|
||||
v-else-if="dragPlaceholder && (isDefault || isRequired) && !isMask && field"
|
||||
ref="dragPlaceholder"
|
||||
:style="[dragPlaceholderStyle, { backgroundColor: backgroundColor }]"
|
||||
class="fixed z-20 border border-base-300 rounded group default-field fields-list-item pointer-events-none"
|
||||
>
|
||||
<div class="flex items-center justify-between relative cursor-grab">
|
||||
<div class="flex items-center p-1 space-x-1">
|
||||
<IconDrag />
|
||||
<component
|
||||
:is="fieldIcons[field.type || 'text']"
|
||||
:stroke-width="1.6"
|
||||
:width="20"
|
||||
/>
|
||||
<span class="block pl-0.5">
|
||||
{{ field.title || field.name }}
|
||||
</span>
|
||||
</div>
|
||||
<span
|
||||
v-if="isRequired"
|
||||
:data-tip="t('required')"
|
||||
class="text-red-400 text-3xl pr-1.5 tooltip tooltip-left h-8"
|
||||
>
|
||||
*
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<button
|
||||
v-else-if="dragPlaceholder && !isMask && field"
|
||||
ref="dragPlaceholder"
|
||||
class="fixed field-type-button z-20 flex items-center justify-center border border-dashed w-full rounded border-base-content/20 opacity-90 pointer-events-none"
|
||||
:style="[dragPlaceholderStyle, { backgroundColor }]"
|
||||
>
|
||||
<div
|
||||
class="flex items-console cursor-grab h-full absolute left-0 bg-base-200/50"
|
||||
>
|
||||
<IconDrag class="my-auto" />
|
||||
</div>
|
||||
<div class="flex items-center flex-col px-2 py-2">
|
||||
<component :is="fieldIcons[field.type || 'text']" />
|
||||
<span class="text-xs mt-1">
|
||||
{{ fieldNames[field.type || 'text'] }}
|
||||
</span>
|
||||
</div>
|
||||
</button>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Field from './field'
|
||||
import IconDrag from './icon_drag'
|
||||
import FieldType from './field_type'
|
||||
|
||||
export default {
|
||||
name: 'DragPlaceholder',
|
||||
components: {
|
||||
Field,
|
||||
IconDrag
|
||||
},
|
||||
inject: ['t', 'backgroundColor'],
|
||||
props: {
|
||||
field: {
|
||||
type: Object,
|
||||
required: false,
|
||||
default: null
|
||||
},
|
||||
isDefault: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: false
|
||||
},
|
||||
isRequired: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: false
|
||||
},
|
||||
isField: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
isMask: false,
|
||||
dragPlaceholder: null
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
dragPlaceholderStyle () {
|
||||
if (this.dragPlaceholder) {
|
||||
return {
|
||||
left: this.dragPlaceholder.x + 'px',
|
||||
top: this.dragPlaceholder.y + 'px',
|
||||
width: this.dragPlaceholder.w + 'px',
|
||||
height: this.dragPlaceholder.h + 'px'
|
||||
}
|
||||
} else {
|
||||
return {}
|
||||
}
|
||||
},
|
||||
fieldNames: FieldType.computed.fieldNames,
|
||||
fieldIcons: FieldType.computed.fieldIcons
|
||||
}
|
||||
}
|
||||
</script>
|
||||
Loading…
Reference in new issue