[WIP] Заменил селекты, попровил стили

This commit is contained in:
megavrilinvv
2023-01-20 17:46:26 +03:00
parent 739e94fc00
commit 611558597a
10 changed files with 58 additions and 145 deletions

View File

@@ -13,7 +13,13 @@
.icon-wrapper.mr-2.flex.justify-center .icon-wrapper.mr-2.flex.justify-center
.icon-ok.text-xs.flex.justify-center.items-center(v-if="filter === selectedFilter") .icon-ok.text-xs.flex.justify-center.items-center(v-if="filter === selectedFilter")
.flex.items-center {{ filter }} .flex.items-center {{ filter }}
base-input.p-4(type="text", square, placeholder="Искать ...", borderless) base-input.p-4(
type="text",
placeholder="Искать ...",
text-color="var(--btn-blue-color)",
borderless,
square
)
</template> </template>
<script> <script>

View File

@@ -1,49 +1,35 @@
<template lang="pug"> <template lang="pug">
.flex.flex-col.gap-y-2 .flex.flex-col.gap-y-2
.font-semibold.opacity-40( base-input-container(:label="label")
v-if="label", q-select(
:class="labelClass" v-model="value",
) {{ label }} :options="items",
.base-select( :disable="disable",
@click="invertOpen", bg-color="var(--bg-disable-grey-color)"
:class="{'open': open && !disable, 'border-none': borderNone}", outlined,
:style="{'background-color': disable && 'var(--bg-disable-grey-color)'}" dense,
ref="select" emit-value,
) map-options,
.placeholder( )
:class="{'value-color': value || placeholderOpacity, ...textClass}", template(v-slot:selected)
:style="{'color': !disable || '#9ca3af', 'opacity': 1}" span {{ textSelect }}
) {{ value || placeholder }}
.flex.items-center
.select-form-separator.cursor-pointer.mr-4(v-if="separator")
span.icon-down-arrow.open-icon(:class="{'open': open && !disable }")
base-menu(v-if="open")
.items-container(
@click="open = false",
v-click-outside="leaveSelect",
:class="textClass"
)
.item(v-for="item in items", :key="item.id" @click="clickItem(item.label)") {{ item.label }}
</template> </template>
<script> <script>
import BaseMenu from "@/components/base/BaseMenu"; import BaseMenu from "@/components/base/BaseMenu";
import BaseInputContainer from "@/components/base/BaseInputContainer";
export default { export default {
name: "VSelect", name: "VSelect",
components: { BaseMenu }, components: { BaseMenu, BaseInputContainer },
props: { props: {
placeholder: String, placeholder: String,
modelValue: String, modelValue: [Object, String],
items: { items: {
type: Array, type: Array,
default: () => [], default: () => [],
}, },
borderNone: Boolean,
separator: Boolean,
placeholderOpacity: Boolean,
disable: Boolean, disable: Boolean,
textStyle: String,
labelStyle: String,
label: String, label: String,
}, },
emits: ["update:modelValue"], emits: ["update:modelValue"],
@@ -61,91 +47,9 @@ export default {
this.$emit("update:modelValue", value); this.$emit("update:modelValue", value);
}, },
}, },
textClass() { textSelect() {
return this.textStyle return this.value.label ? this.value.label : this.placeholder;
? {
[this.textStyle]: true,
}
: {
"text-base": true,
};
},
labelClass() {
return this.labelStyle
? {
[this.labelStyle]: true,
}
: {
"text-sm": true,
};
},
},
methods: {
clickItem(id) {
this.value = id;
},
leaveSelect() {
this.open = false;
},
invertOpen() {
if (!this.disable) this.open = !this.open;
}, },
}, },
}; };
</script> </script>
<style scoped lang="sass">
.base-select
width: 100%
height: 40px
border: 1.5px solid #D3D4DC
border-radius: 4px
padding: 9px 16px
background-color: white
user-select: none
display: flex
justify-content: space-between
align-items: center
gap: 16px
cursor: pointer
&.open
border: 1.5px solid #4772F2
.items-container
box-shadow: 1px 1px 8px rgba(37, 40, 80, 0.15)
border-radius: 4px
background-color: white
margin-top: 4px
.placeholder
color: #090A15
opacity: 0.5
text-overflow: ellipsis
overflow: hidden
.item
padding: 8px 16px
border-bottom: 0.5px solid #D3D4DC
color: #090A15
cursor: pointer
&:hover
background-color: rgba(215, 217, 255, 0.25)
&:last-child
border-bottom: none
.open-icon
font-size: 10px
display: flex
&.open
transform: rotate(180deg)
.separator
background-color: var(--btn-blue-color-3)
height: 24px
width: 1px
border-radius: 1px
.border-none
border: none
.value-color
opacity: 1
.select-form-separator
background-color: var(--btn-blue-color-3)
height: 24px
width: 1px
border-radius: 1px
</style>

View File

@@ -7,7 +7,7 @@
.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
base-custom-select( base-select(
v-if="selectedEventData.id" v-if="selectedEventData.id"
v-model="status", v-model="status",
:items="eventStatuses", :items="eventStatuses",
@@ -20,13 +20,13 @@
label="Статус приема", label="Статус приема",
outlined outlined
) )
base-custom-select( base-select(
:items="ownersList", :items="ownersList",
v-model="employees.employee", v-model="employees.employee",
placeholder="Выберите сотрудника" placeholder="Выберите сотрудника"
label="Сотрудник" label="Сотрудник"
) )
base-custom-select( base-select(
:items="membersList", :items="membersList",
v-model="members.person", v-model="members.person",
placeholder="Выберите клиента", placeholder="Выберите клиента",
@@ -79,7 +79,6 @@ import { addNotification } from "@/components/Notifications/notificationContext"
import { fetchWrapper } from "@/shared/fetchWrapper.js"; import { fetchWrapper } from "@/shared/fetchWrapper.js";
import BaseInput from "@/components/base/BaseInput.vue"; import BaseInput from "@/components/base/BaseInput.vue";
import BaseSelect from "@/components/base/BaseSelect.vue"; import BaseSelect from "@/components/base/BaseSelect.vue";
import BaseCustomSelect from "@/components/base/BaseCustomSelect.vue";
import * as moment from "moment/moment"; import * as moment from "moment/moment";
import { statusesDictionary } from "../utils/statusesDictionary.js"; import { statusesDictionary } from "../utils/statusesDictionary.js";
@@ -88,7 +87,6 @@ export default {
components: { components: {
BaseSelect, BaseSelect,
BaseInput, BaseInput,
BaseCustomSelect,
TheNotificationProvider, TheNotificationProvider,
}, },
emits: ["clear-selected-event-data", "close-change-form"], emits: ["clear-selected-event-data", "close-change-form"],

View File

@@ -1,7 +1,7 @@
<template lang="pug"> <template lang="pug">
.wrapper-info.h-full .wrapper-info.h-full
.grid.grid-cols-2.gap-x-4.gap-y-6 .grid.grid-cols-2.gap-x-4.gap-y-6
base-custom-select.input-info( base-select(
:items="priorityList", :items="priorityList",
placeholder="Приоритет клиента", placeholder="Приоритет клиента",
v-model="basicInfo.priority", v-model="basicInfo.priority",
@@ -46,14 +46,14 @@
import BaseInput from "@/components/base/BaseInput"; import BaseInput from "@/components/base/BaseInput";
import BaseAddingNetwork from "@/components/base/BaseAddingNetwork"; import BaseAddingNetwork from "@/components/base/BaseAddingNetwork";
import { column } from "@/pages/clients/utils/tableConfig"; import { column } from "@/pages/clients/utils/tableConfig";
import BaseCustomSelect from "@/components/base/BaseCustomSelect"; import BaseSelect from "@/components/base/BaseSelect";
export default { export default {
name: "FormCreateBasicInfo", name: "FormCreateBasicInfo",
components: { components: {
BaseInput, BaseInput,
BaseAddingNetwork, BaseAddingNetwork,
BaseCustomSelect, BaseSelect,
}, },
props: { props: {
choosePriority: Function, choosePriority: Function,

View File

@@ -1,10 +1,10 @@
<template lang="pug"> <template lang="pug">
.flex.box-border.px-4.items-center.w-full.text-sm( .flex.box-border.px-2.items-center.w-full.text-sm(
:style="{ width : width + 'px'}" :style="{ width : width + 'px'}"
) )
span(v-if="!isOpenChange") {{ birthday }} span(v-if="!isOpenChange") {{ birthday }}
base-input( base-input(
:width="130" :width="140"
type="date", type="date",
v-if="isOpenChange", v-if="isOpenChange",
@click.stop, @click.stop,

View File

@@ -1,5 +1,5 @@
<template lang="pug"> <template lang="pug">
.network-cell.flex.box-border.px-4.items-center.w-full(:style="{ width: width + 'px'}") .flex.box-border.px-4.items-center.w-full(:style="{ width: width + 'px'}")
.flex.gap-x-1 .flex.gap-x-1
.text-xl.icon.relative( .text-xl.icon.relative(
v-for="network in getNetworks", v-for="network in getNetworks",
@@ -117,8 +117,6 @@ export default {
</script> </script>
<style lang="sass" scoped> <style lang="sass" scoped>
.network-cell
column-gap: 2px
.icon .icon
color: var(--btn-blue-color) color: var(--btn-blue-color)
&:last-child &:last-child

View File

@@ -6,9 +6,10 @@
.flex.gap-x-2.text-sm(class="w-[164px]") .flex.gap-x-2.text-sm(class="w-[164px]")
base-select( base-select(
v-if="isOpenChange", v-if="isOpenChange",
@click.stop :items="getPriorityList", @click.stop,
:items="getPriorityList",
v-model="value.priority", v-model="value.priority",
textStyle="text-sm" :placeholder="value.priority"
) )
</template> </template>
@@ -32,7 +33,7 @@ export default {
computed: { computed: {
getPriorityList() { getPriorityList() {
return this.prioritySettings.settings.map((el) => { return this.prioritySettings.settings.map((el) => {
return { label: el.text, id: el.id }; return el.text;
}); });
}, },
}, },

View File

@@ -8,8 +8,16 @@
.icon-cancel.close-icon.tesxt-xs.cursor-pointer(@click="closeForm") .icon-cancel.close-icon.tesxt-xs.cursor-pointer(@click="closeForm")
.flex.flex-col.gap-y-6 .flex.flex-col.gap-y-6
base-input(label="Дата", type="date", outlined) base-input(label="Дата", type="date", outlined)
base-custom-select(v-model="currentEmployee", label="Текущий сотрудник") base-select(
base-custom-select(v-model="currentEmployee", label="Замена сотрудника") v-model="currentEmployee",
label="Текущий сотрудник",
placeholder="Выберите сотрудника"
)
base-select(
v-model="currentEmployee",
label="Замена сотрудника",
placeholder="Выберите сотрудника"
)
.time-wrapper.flex.justify-center.gap-x-6 .time-wrapper.flex.justify-center.gap-x-6
base-input( base-input(
type="time", type="time",
@@ -34,12 +42,12 @@
</template> </template>
<script> <script>
import BaseCustomSelect from "@/components/base/BaseCustomSelect.vue"; import BaseSelect from "@/components/base/BaseSelect.vue";
import BaseInput from "@/components/base/BaseInput.vue"; import BaseInput from "@/components/base/BaseInput.vue";
export default { export default {
name: "FormChangeShift", name: "FormChangeShift",
components: { BaseCustomSelect, BaseInput }, components: { BaseSelect, BaseInput },
props: { closeForm: Function, timesShift: Object }, props: { closeForm: Function, timesShift: Object },
data() { data() {
return { return {

View File

@@ -31,9 +31,8 @@
style="width: 200px" style="width: 200px"
) )
.graph-template.flex.flex-col.items-center.gap-y-4 .graph-template.flex.flex-col.items-center.gap-y-4
base-custom-select( base-select(
:items="templateList", :items="templateList",
center,
v-model="template.item", v-model="template.item",
placeholder="Шаблоны графиков" placeholder="Шаблоны графиков"
) )
@@ -65,14 +64,14 @@
</template> </template>
<script> <script>
import BaseCustomSelect from "@/components/base/BaseCustomSelect.vue"; import BaseSelect from "@/components/base/BaseSelect.vue";
import BaseInput from "@/components/base/BaseInput.vue"; import BaseInput from "@/components/base/BaseInput.vue";
export default { export default {
name: "ScheduleBar", name: "ScheduleBar",
components: { components: {
BaseInput, BaseInput,
BaseCustomSelect, BaseSelect,
}, },
props: { props: {
buttons: Array, buttons: Array,

View File

@@ -18,12 +18,11 @@
:style="{color: 'var(--btn-blue-color)'}" :style="{color: 'var(--btn-blue-color)'}"
) )
// TODO: какая-то странная хуйня с v-model, передается пропса // TODO: какая-то странная хуйня с v-model, передается пропса
base-custom-select( base-select(
v-if="!selectEmployee.label", v-if="!selectEmployee.label",
:items="ownersList", :items="ownersList",
v-model="selectEmployee", v-model="selectEmployee",
placeholder="Добавить сотрудника", placeholder="Добавить сотрудника"
:style="{border: 'none', justifyContent: 'center'}"
) )
.flex.justify-center(v-else) {{selectEmployee.label}} .flex.justify-center(v-else) {{selectEmployee.label}}
.row.flex .row.flex
@@ -39,11 +38,11 @@
</template> </template>
<script> <script>
import BaseCustomSelect from "@/components/base/BaseCustomSelect.vue"; import BaseSelect from "@/components/base/BaseSelect.vue";
export default { export default {
name: "ScheduleTableSelect", name: "ScheduleTableSelect",
components: { BaseCustomSelect }, components: { BaseSelect },
props: { props: {
selectEmployee: Object, selectEmployee: Object,
result: Array, result: Array,