WIP Переделаны селект и инпуты

This commit is contained in:
Daria Golova
2022-12-28 18:54:58 +03:00
parent 83e1588e1f
commit 9fc796c9d7
5 changed files with 116 additions and 122 deletions

View File

@@ -1,4 +1,6 @@
<template lang="pug"> <template lang="pug">
.flex.flex-col.gap-y-2
.label.font-semibold.text-xxs.opacity-40(v-if="label") {{ label }}
.base-select.flex.justify-between.items-center.py-9px.px-4.gap-4.cursor-pointer.relative( .base-select.flex.justify-between.items-center.py-9px.px-4.gap-4.cursor-pointer.relative(
@click="open = !open", @click="open = !open",
:class="{'open': open, 'border-none': borderNone}", :class="{'open': open, 'border-none': borderNone}",
@@ -40,6 +42,7 @@ export default {
separator: Boolean, separator: Boolean,
placeholderOpacity: Boolean, placeholderOpacity: Boolean,
center: Boolean, center: Boolean,
label: String,
}, },
emits: ["update:modelValue"], emits: ["update:modelValue"],
data() { data() {

View File

@@ -1,16 +1,12 @@
<template lang="pug"> <template lang="pug">
.flex.flex-col.gap-y-2
.label.font-semibold.text-xxs.opacity-40(v-if="label") {{ label }}
.input-wrapper.flex.gap-x-2.px-4.box-border.py-10px( .input-wrapper.flex.gap-x-2.px-4.box-border.py-10px(
:class="{'border-none': borderNone, 'date-input': dateInput}", :class="{'border-none': borderNone}"
:style="{ minWidth: widthInput + 'px' }"
) )
input.input.w-full.outline-0.not-italic( input.input.w-full.outline-0.not-italic(
:class="{date:type === 'date'}", v-model="value",
:value="value",
:type="type",
@input="$emit('update:value', $event.target.value)",
:placeholder="placeholder", :placeholder="placeholder",
:maxLength="maxLength",
:max="maxDate",
:disabled="disabled" :disabled="disabled"
) )
.slot(v-if="withIcon", :class="iconPosition") .slot(v-if="withIcon", :class="iconPosition")
@@ -22,11 +18,7 @@
export default { export default {
name: "BaseInput", name: "BaseInput",
props: { props: {
type: { modelValue: String,
default: "text",
},
maxLength: Number,
value: String,
withIcon: { withIcon: {
default: false, default: false,
}, },
@@ -34,11 +26,20 @@ export default {
default: "right", default: "right",
}, },
placeholder: String, placeholder: String,
widthInput: Number,
borderNone: Boolean, borderNone: Boolean,
disabled: Boolean, disabled: Boolean,
maxDate: String, label: String,
dateInput: Boolean, },
emits: ["update:modelValue"],
computed: {
value: {
get() {
return this.modelValue;
},
set(value) {
this.$emit("update:modelValue", value);
},
},
}, },
}; };
</script> </script>
@@ -55,12 +56,10 @@ export default {
background-color: var(--default-white) background-color: var(--default-white)
color: var(--font-black-color) color: var(--font-black-color)
height: 40px height: 40px
.date
background: url("../../assets/icons/calendar-input.svg") no-repeat 100% 50%
&::-webkit-calendar-picker-indicator
opacity: 0
.border-none .border-none
border: none border: none
.input .input
background-color: inherit background-color: inherit
.label
color: var(--font-black-color)
</style> </style>

View File

@@ -1,5 +1,5 @@
<template lang="pug"> <template lang="pug">
.flex.flex-col .flex.flex-col.gap-y-2
.label(v-if="!!label") {{label}} .label(v-if="!!label") {{label}}
.field .field
input( input(
@@ -37,7 +37,7 @@ export default {
<style lang="sass" scoped> <style lang="sass" scoped>
.field .field
height: 100% height: 40px
display: flex display: flex
align-items: center align-items: center
border: 1.5px solid var(--border-light-grey-color) border: 1.5px solid var(--border-light-grey-color)
@@ -55,6 +55,7 @@ export default {
.label .label
font-weight: 600 font-weight: 600
font-size: 14px font-size: 12px
line-height: 135% line-height: 14px
opacity: 0.4
</style> </style>

View File

@@ -1,14 +1,11 @@
<template lang="pug"> <template lang="pug">
.input-wrapper.flex.gap-x-2.px-4.box-border( .flex.flex-col.gap-y-2
class="py-2.5" .label.font-semibold.text-xxs.opacity-40(v-if="label") {{ label }}
:style="{ minWidth: widthInput + 'px' }" .input-wrapper.flex.gap-x-2.px-4.box-border.py-2.h-10
)
input.input.w-full.outline-0.not-italic.cursor-text( input.input.w-full.outline-0.not-italic.cursor-text(
:value="value" v-model="value"
type="time" type="time"
@input="$emit('update:value', $event.target.value)"
:placeholder="placeholder" :placeholder="placeholder"
:maxlength="maxLength"
) )
.slot(v-if="withIcon" :class="iconPosition") .slot(v-if="withIcon" :class="iconPosition")
slot.cursor-pointer slot.cursor-pointer
@@ -18,8 +15,7 @@
export default { export default {
name: "BaseInputTime", name: "BaseInputTime",
props: { props: {
maxLength: Number, modelValue: String,
value: String,
withIcon: { withIcon: {
default: false, default: false,
}, },
@@ -27,7 +23,18 @@ export default {
default: "right", default: "right",
}, },
placeholder: String, placeholder: String,
widthInput: Number, label: String,
},
emits: ["update:modelValue"],
computed: {
value: {
get() {
return this.modelValue;
},
set(value) {
this.$emit("update:modelValue", value);
},
},
}, },
}; };
</script> </script>
@@ -41,6 +48,7 @@ export default {
border-radius: 4px border-radius: 4px
background-color: var(--default-white) background-color: var(--default-white)
color: var(--font-black-color) color: var(--font-black-color)
border: 1.5px solid var(--border-light-grey-color)
input::-webkit-calendar-picker-indicator input::-webkit-calendar-picker-indicator
cursor: pointer cursor: pointer
</style> </style>

View File

@@ -7,53 +7,44 @@
.flex.pt-2 .flex.pt-2
.icon-cancel.close-icon.tesxt-xs.cursor-pointer(@click="clearForm") .icon-cancel.close-icon.tesxt-xs.cursor-pointer(@click="clearForm")
.flex.flex-col.gap-y-8 .flex.flex-col.gap-y-8
.flex.flex-col.gap-y-2 base-custom-select(
span.text-xxs.opacity-40.font-bold.leading-3 Статус приема
base-custom-select.select(
v-if="selectedEventData.id" v-if="selectedEventData.id"
v-model="status", v-model="status",
:items="eventStatuses", :items="eventStatuses",
placeholder="Статус приема" label="Статус приема"
) )
base-input( base-input(
v-else, v-else,
disabled, disabled,
v-model:value="status.label" v-model="status.label",
label="Статус приема"
) )
.flex.flex-col(class="gap-y-1.5") base-custom-select(
span.text-xxs.opacity-40.font-bold Сотрудник
base-custom-select.select(
:items="ownersList", :items="ownersList",
v-model="employees.employee", v-model="employees.employee",
placeholder="Выберите сотрудника" placeholder="Выберите сотрудника"
label="Сотрудник"
) )
base-custom-select(
.flex.flex-col(class="gap-y-1.5")
span.text-xxs.opacity-40.font-bold Клиент
base-custom-select.select(
:items="membersList", :items="membersList",
v-model="members.person", v-model="members.person",
placeholder="Выберите клиента", placeholder="Выберите клиента",
label="Клиент"
) )
.flex.flex-col.gap-y-8
.flex.gap-x-4 .flex.gap-x-4
.flex.gap-x-2 base-input-date(
.flex.flex-col(class="gap-y-1.5") v-model="eventDate",
span.text-xxs.opacity-40.font-bold.leading-3.font-bold Дата label="Дата"
base-input-date.h-10(v-model="eventDate") )
.flex.gap-x-2.items-center .flex.gap-x-2.items-center
.flex.flex-col(class="gap-y-1.5") base-input-time.item-input.text-base(
span.text-xxs.opacity-40.font-bold.leading-3.font-bold Начало v-model="startTime",
base-input-time.item-input.text-base.select( label="Начало"
v-model:value="startTime",
:width-input="72"
) )
span.mt-4 span.mt-4
.flex.flex-col(class="gap-y-1.5") base-input-time.item-input.text-base(
span.text-xxs.opacity-40.font-bold.leading-3.font-bold Конец v-model="endTime",
base-input-time.item-input.text-base.select( label="Конец"
v-model:value="endTime",
:width-input="72"
) )
base-button.create-button.text-base.font-semibold( base-button.create-button.text-base.font-semibold(
v-if="!selectedEventData.id", v-if="!selectedEventData.id",
@@ -597,7 +588,6 @@ export default {
<style lang="sass" scoped> <style lang="sass" scoped>
.event-form .event-form
height: fit-content
width: 634px width: 634px
background-color: var(--default-white) background-color: var(--default-white)
box-shadow: var(--default-shadow) box-shadow: var(--default-shadow)
@@ -613,18 +603,12 @@ export default {
appearance: none appearance: none
border: none border: none
outline: none outline: none
height: 40px
&::-webkit-calendar-picker-indicator &::-webkit-calendar-picker-indicator
display: none display: none
-webkit-appearance: none -webkit-appearance: none
&::placeholder &::placeholder
color: var(--font-black-color-1) color: var(--font-black-color-1)
.time-input
width: 72px
border-radius: 4px
background-color: var(--default-white)
.date-input .date-input
width: 174px width: 174px
border-radius: 4px border-radius: 4px
@@ -644,7 +628,6 @@ export default {
width: 183px width: 183px
.select .select
height: 40px
border: 1.5px solid var(--border-light-grey-color) border: 1.5px solid var(--border-light-grey-color)
border-radius: 4px border-radius: 4px