You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
91 lines
2.1 KiB
91 lines
2.1 KiB
<template>
|
|
<div :class="[`tw-grid tw-grid-cols-1 md:tw-grid-cols-[${label_width}px_auto] xl:tw-grid-cols-[${label_width}px_auto] tw-gap-[10px]`]">
|
|
<label v-if="label_width!=0" class="tw-mb-[10px] tw-font-normal" :for="select.id"><span>{{ $t(select.label)
|
|
}}<span v-if="select.required" class="required">*</span></span></label>
|
|
<select :class="[`tw-pr-[40px] tw-min-w-[${select_width}px]`,validation ? '' : 'tw-border-error-default']" :name="select.id" v-model="value"
|
|
@change="inputVal">
|
|
<option :value="0">{{ $t("Select option") }}</option>
|
|
<option v-for="{ id, name } in selectList" :key="id" :value="id">
|
|
{{ name }}
|
|
</option>
|
|
</select>
|
|
</div>
|
|
</template>
|
|
<script>
|
|
export default {
|
|
name: "ElementSelectNew",
|
|
props: {
|
|
select: {
|
|
type: Object,
|
|
},
|
|
selectList: {
|
|
type: Array,
|
|
},
|
|
default: {
|
|
type: String,
|
|
},
|
|
validation: {
|
|
type: Boolean,
|
|
},
|
|
isRow: {
|
|
type: Boolean,
|
|
default: () => false,
|
|
},
|
|
itemsCenter: {
|
|
type: Boolean,
|
|
default: () => false,
|
|
},
|
|
labelWidth:{
|
|
type: Number,
|
|
default: () => 90,
|
|
},
|
|
selectWidth:{
|
|
type: Number,
|
|
default: () => 200,
|
|
}
|
|
},
|
|
data() {
|
|
return {
|
|
value: this.default ?? null,
|
|
label_width: this.labelWidth,
|
|
select_width: this.selectWidth
|
|
};
|
|
},
|
|
mounted() { },
|
|
watch: {
|
|
default: {
|
|
handler: function () {
|
|
this.value = this.default;
|
|
},
|
|
},
|
|
labelWidth:{
|
|
handler: function () {
|
|
this.label_width = this.labelWidth;
|
|
},
|
|
},
|
|
selectWidth:{
|
|
handler: function () {
|
|
this.select_width = this.selectWidth;
|
|
},
|
|
}
|
|
},
|
|
methods: {
|
|
inputVal() {
|
|
this.$emit("change", this.value);
|
|
},
|
|
},
|
|
};
|
|
</script>
|
|
<style lang="scss" scoped>
|
|
select {
|
|
-moz-appearance: none;
|
|
/* Firefox */
|
|
-webkit-appearance: none;
|
|
/* Safari and Chrome */
|
|
appearance: none;
|
|
background-image: url("~/assets/svg/down-arrow.svg");
|
|
background-size: 9px 6px;
|
|
background-position: right 20px center;
|
|
background-repeat: no-repeat;
|
|
}
|
|
</style>
|