Merge branch 'master' into UC-1
This commit is contained in:
852
package-lock.json
generated
852
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
15
package.json
15
package.json
@@ -8,15 +8,7 @@
|
||||
"lint": "vue-cli-service lint"
|
||||
},
|
||||
"dependencies": {
|
||||
"@tailwindcss/forms": "^0.5.3",
|
||||
"@webdiscus/pug-loader": "^2.9.3",
|
||||
"autoprefixer": "^10.4.12",
|
||||
"core-js": "^3.8.3",
|
||||
"css-loader": "^6.7.1",
|
||||
"postcss": "^8.4.17",
|
||||
"postcss-loader": "^7.0.1",
|
||||
"style-loader": "^3.3.1",
|
||||
"tailwindcss": "^3.1.8",
|
||||
"vue": "^3.2.13",
|
||||
"vue-router": "^4.1.5",
|
||||
"vuex": "^4.0.2"
|
||||
@@ -27,12 +19,17 @@
|
||||
"@vue/cli-plugin-babel": "~5.0.0",
|
||||
"@vue/cli-plugin-eslint": "~5.0.0",
|
||||
"@vue/cli-service": "~5.0.0",
|
||||
"@webdiscus/pug-loader": "^2.9.4",
|
||||
"autoprefixer": "^10.4.12",
|
||||
"eslint": "^7.32.0",
|
||||
"eslint-plugin-vue": "^8.0.3",
|
||||
"node-sass": "^7.0.3",
|
||||
"postcss": "^8.4.17",
|
||||
"postcss-loader": "^7.0.1",
|
||||
"pug": "^3.0.2",
|
||||
"pug-plain-loader": "^1.1.0",
|
||||
"sass-loader": "^13.0.2"
|
||||
"sass-loader": "^13.0.2",
|
||||
"tailwindcss": "^3.1.8"
|
||||
},
|
||||
"eslintConfig": {
|
||||
"root": true,
|
||||
|
||||
61
src/components/BaseSelect.vue
Normal file
61
src/components/BaseSelect.vue
Normal file
@@ -0,0 +1,61 @@
|
||||
<template lang="pug">
|
||||
.flex.gap-2.py-2.px-4.container(@click="selectOpen")
|
||||
.relative.flex.flex-col
|
||||
.not-italic.text-base.select {{optionData}}
|
||||
.absolute.options(v-if="isOpen" :id="id" @click="(event)=>chooseOption(event)")
|
||||
.not-italic.text-base.option(v-for="(responsible, index) in listData" :key="index" :id="index") {{responsible}}
|
||||
.select-form-separator
|
||||
.text-sm.icon-down-arrow.icon
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "BaseSelect",
|
||||
props: {
|
||||
id: String,
|
||||
optionData: String,
|
||||
listData: Array,
|
||||
chooseOption: Function,
|
||||
isOpen: Boolean,
|
||||
selectOpen: Function
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="sass" scoped>
|
||||
.container
|
||||
align-items: center
|
||||
cursor: pointer
|
||||
border-radius: 4px
|
||||
width: fit-content
|
||||
background-color: var(--bg-ligth-blue-color)
|
||||
.select
|
||||
appearance: none
|
||||
border: none
|
||||
outline: none
|
||||
cursor: pointer
|
||||
color: rgba(9, 10, 21, 0.5)
|
||||
background-color: rgba(9, 10, 21, 0)
|
||||
&::-webkit-calendar-picker-indicator
|
||||
display: none
|
||||
-webkit-appearance: none
|
||||
.options
|
||||
z-index: 3
|
||||
width: max-content
|
||||
background-color: var(--bg-ligth-blue-color)
|
||||
.option
|
||||
color: var(--font-black-color)
|
||||
&:hover
|
||||
background-color: var(--btn-blue-color)
|
||||
.select-form-separator
|
||||
background-color: rgba(65, 105, 225, 0.2)
|
||||
height: 24px
|
||||
width: 1px
|
||||
border-radius: 1px
|
||||
.icon
|
||||
text-align: center
|
||||
color: var(--font-dark-blue-color)
|
||||
&:hover
|
||||
color: var(--btn-blue-color)
|
||||
</style>
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
<template lang="pug">
|
||||
.sidebar-container
|
||||
.top-button-container
|
||||
.sidebar.flex.flex-col.justify-between.flex-auto.py-6.box-border
|
||||
.flex.flex-col.gap-y-6
|
||||
the-button-sidebar(id="home" path="#/")
|
||||
.icon-home
|
||||
the-button-sidebar(id="calendar" path="#/calendar")
|
||||
.icon-calendar-2
|
||||
the-button-sidebar(id="user" path="#/user")
|
||||
.icon-person-2
|
||||
.bottom-button-container
|
||||
.flex.text-4xl.flex-col.gap-y-6
|
||||
the-button-sidebar(id="settings" path="#/settings")
|
||||
.icon-settings
|
||||
</template>
|
||||
@@ -22,21 +22,7 @@
|
||||
</script>
|
||||
|
||||
<style lang="sass" scoped>
|
||||
#person
|
||||
font-style: normal
|
||||
.sidebar-container
|
||||
display: flex
|
||||
flex-direction: column
|
||||
justify-content: space-between
|
||||
flex: auto
|
||||
padding: 24px 0 24px 0
|
||||
box-sizing: border-box
|
||||
.sidebar
|
||||
max-width: 80px
|
||||
background-color: #F8F8FF
|
||||
|
||||
.top-button-container
|
||||
display: flex
|
||||
font-size: 40px
|
||||
flex-direction: column
|
||||
row-gap: 24px
|
||||
</style>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template lang="pug">
|
||||
button(class="add-button-event") Создать событие
|
||||
button.event-button.not-italic.leading-5.text-base.py-3.px-4 Создать событие
|
||||
</template>
|
||||
|
||||
<script>
|
||||
@@ -9,16 +9,12 @@
|
||||
</script>
|
||||
|
||||
<style lang="sass" scoped>
|
||||
.add-button-event
|
||||
.event-button
|
||||
outline: none
|
||||
border: none
|
||||
cursor: pointer
|
||||
font-style: normal
|
||||
line-height: 19px
|
||||
font-size: 16px
|
||||
width: fit-content
|
||||
color: var(--bg-white-color)
|
||||
background-color: var(--btn-blue-color)
|
||||
padding: 11px 16px 11px 16px
|
||||
border-radius: 4px
|
||||
</style>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template lang="pug">
|
||||
button.icon-plus(class="button-plus")
|
||||
button.icon-plus.button-plus.text-xs.pt-1
|
||||
</template>
|
||||
|
||||
<script>
|
||||
@@ -12,10 +12,11 @@
|
||||
.button-plus
|
||||
outline: none
|
||||
border: none
|
||||
font-size: 12px
|
||||
cursor: pointer
|
||||
width: 24px
|
||||
height: 24px
|
||||
max-height: 24px
|
||||
color: #4772F2
|
||||
padding: 7px 7px 5px 7px
|
||||
background-color: rgba(65, 105, 225, 0.25)
|
||||
border-radius: 50%
|
||||
</style>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template lang="pug">
|
||||
a(:href="path")
|
||||
button(:id="id" class="button-icon-item")
|
||||
button.button.text-4xl.py-3.pr-4.pl-3(:id="id")
|
||||
slot
|
||||
</template>
|
||||
|
||||
@@ -21,11 +21,9 @@
|
||||
</script>
|
||||
|
||||
<style lang="sass" scoped>
|
||||
.button-icon-item
|
||||
.button
|
||||
width: fit-content
|
||||
padding: 12px 16px 12px 12px
|
||||
cursor: pointer
|
||||
font-size: 40px
|
||||
background-color: rgb(65, 105, 225, 0)
|
||||
border-radius: 0 4px 4px 0
|
||||
border-left-color: rgb(65, 105, 225, 0)
|
||||
@@ -34,11 +32,11 @@
|
||||
border-top: none
|
||||
border-bottom: none
|
||||
border-left-style: solid
|
||||
.button-icon-item:focus
|
||||
.button:focus
|
||||
background-color: rgb(65, 105, 225, 0.3)
|
||||
border-left-color: rgb(65, 105, 225, 1)
|
||||
color: #4169E1
|
||||
.button-icon-item:hover
|
||||
.button:hover
|
||||
background-color: rgb(65, 105, 225, 0.3)
|
||||
border-left-color: rgb(65, 105, 225, 1)
|
||||
color: #4169E1
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
<template lang="pug">
|
||||
form-add-event
|
||||
calendar-form-add-event
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import FormAddEvent from "./components/CalendarFormAddEvent.vue";
|
||||
import CalendarFormAddEvent from "./components/CalendarFormAddEvent.vue";
|
||||
export default {
|
||||
name: "TheCalendar",
|
||||
components: {FormAddEvent}
|
||||
components: {CalendarFormAddEvent}
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -1,64 +1,67 @@
|
||||
<template lang="pug">
|
||||
.event-form-change(v-if="formOpen")
|
||||
.form-item-container
|
||||
.close-icon-position
|
||||
span.title-form Ответственный
|
||||
.icon-cancel.close-icon(@click="closeEventForm")
|
||||
.input-container(@click="openSelectResponsible")
|
||||
.form-select
|
||||
.form-item-input.select-container-res {{eventData.responsible}}
|
||||
.option-container(v-if="selectResponsibleOpen" id="responsible" @click="(event)=>chooseOption(event)")
|
||||
.option-item(v-for="(responsible, index) in listResponsible" :key="index" :id="index") {{responsible}}
|
||||
.select-form-separator
|
||||
.icon-down-arrow.arrow-icon
|
||||
.form-item-container
|
||||
span.title-form Оновная информация
|
||||
.form-inform-container
|
||||
.icon-time.container-icon
|
||||
.time-input-container
|
||||
.input-container
|
||||
input.form-item-input(v-model="eventData.timeEvent.firstTime" type="time" min="08:00" max="18:00")
|
||||
.flex.flex-col.gap-y-6.pt-5.pb-6.px-8.event-form(v-if="formOpen")
|
||||
.flex.flex-col.gap-y-2
|
||||
.flex.justify-between.pt-2
|
||||
span.not-italic.text-xs.opacity-40.leading-3 Ответственный
|
||||
.icon-cancel.close-icon.text-xs(@click="closeEventForm")
|
||||
base-select(
|
||||
id="responsible"
|
||||
:option-data="eventData.responsible"
|
||||
:list-data="listResponsible"
|
||||
:choose-option="chooseOption"
|
||||
:is-open="selectResponsibleOpen"
|
||||
:select-open="openSelectResponsible"
|
||||
)
|
||||
.flex.flex-col.gap-y-2
|
||||
span.not-italic.text-xs.opacity-40.leading-3 Оновная информация
|
||||
.flex.gap-x-4.items-center
|
||||
.icon-time.text-xl.icon
|
||||
.flex.gap-x-2.items-center
|
||||
.form-item.flex.gap-x-2.px-4.py-2.items-center
|
||||
input.item-input.no-italic.text-base(v-model="eventData.timeEvent.firstTime" type="time" min="08:00" max="18:00")
|
||||
span —
|
||||
.input-container
|
||||
input.form-item-input(v-model="eventData.timeEvent.secondTime" type="time" min="08:00" max="18:00")
|
||||
.form-inform-container
|
||||
.icon-person.container-icon
|
||||
.input-container
|
||||
input.form-item-input(v-model="eventData.eventClient" type="text" placeholder="ФИО клиента")
|
||||
.form-item-container(class="additional-information")
|
||||
.form-inform-container
|
||||
span.title-form Дополнительная информация
|
||||
.form-item.flex.gap-x-2.px-4.py-2.items-center
|
||||
input.item-input.no-italic.text-base(v-model="eventData.timeEvent.secondTime" type="time" min="08:00" max="18:00")
|
||||
.flex.gap-x-4.items-center
|
||||
.icon-person.text-xl.icon
|
||||
.form-item.flex.gap-x-2.px-4.py-2.items-center
|
||||
input.item-input.no-italic.text-base(v-model="eventData.eventClient" type="text" placeholder="ФИО клиента")
|
||||
.flex.flex-col.gap-y-2(class='additional-information')
|
||||
.flex.gap-x-4.items-center
|
||||
span.not-italic.text-xs.opacity-40.leading-3 Дополнительная информация
|
||||
button-plus(id="addInfo" @click="(e)=>addFriendInfo(e)")
|
||||
.form-inform-container(v-for="(info, index) in listFriendInfo" :key="index")
|
||||
span.number-additional {{info}}
|
||||
.input-container
|
||||
input.form-item-input(v-model="eventData.friendInfo[info]" type="text" placeholder="Что-то важное")
|
||||
.form-item-container
|
||||
span.title-form Вид события
|
||||
.input-container(@click="openSelectKindEvent")
|
||||
.form-select
|
||||
.form-item-input.select-container-kind {{eventData.kindEvent}}
|
||||
.option-container(v-if="selectKindEventOpen" id="kind" @click="(event)=>chooseOption(event)")
|
||||
.option-item(v-for="(kind, index) in kindEvents" :key="index" :id="index") {{kind}}
|
||||
.select-form-separator
|
||||
.icon-down-arrow.arrow-icon
|
||||
.form-item-container
|
||||
.form-inform-container
|
||||
span.title-form Контакты
|
||||
.flex.gap-x-4.items-center(v-for="(info, index) in listFriendInfo" :key="index")
|
||||
span.ml-1 {{info}}
|
||||
.form-item.flex.gap-x-2.px-4.py-2.items-center
|
||||
input.item-input.no-italic.text-base(v-model="eventData.friendInfo[info]" type="text" placeholder="Что-то важное")
|
||||
.flex.flex-col.gap-y-2
|
||||
span.not-italic.text-xs.opacity-40.leading-3 Вид события
|
||||
base-select(
|
||||
id="kind"
|
||||
:option-data="eventData.kindEvent"
|
||||
:list-data="kindEvents"
|
||||
:choose-option="chooseOption"
|
||||
:is-open="selectKindEventOpen"
|
||||
:select-open="openSelectKindEvent"
|
||||
)
|
||||
.flex.flex-col.gap-y-2
|
||||
.flex.gap-x-4.items-center
|
||||
span.not-italic.text-xs.opacity-40.leading-3 Контакты
|
||||
button-plus(id="addContact" @click="(e)=>addFriendInfo(e)")
|
||||
.form-inform-container(v-for="(contact, index) in listContacts" :key="index")
|
||||
.icon-mail.container-icon
|
||||
.input-container
|
||||
input.form-item-input(v-model="eventData.contacts[contact]" type="text" placeholder="E-mail")
|
||||
.flex.gap-x-4.items-center(v-for="(contact, index) in listContacts" :key="index")
|
||||
.icon-mail.text-xl.icon
|
||||
.form-item.flex.gap-x-2.px-4.py-2.items-center
|
||||
input.item-input.no-italic.text-base(v-model="eventData.contacts[contact]" type="text" placeholder="E-mail")
|
||||
add-event-button(@click="createEvent")
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import BaseSelect from "@/components/BaseSelect";
|
||||
import AddEventButton from "@/components/base/buttons/BaseAddEvent";
|
||||
import ButtonPlus from "@/components/base/buttons/BaseButtonPlus";
|
||||
export default {
|
||||
name: "FormChangeEvent",
|
||||
components: {AddEventButton, ButtonPlus},
|
||||
components: {AddEventButton, ButtonPlus, BaseSelect},
|
||||
props: {
|
||||
listResponsible: {
|
||||
default: ["Захарова А.О.", "Коломойцев И.К.", "Ситников А.Г."]
|
||||
@@ -119,39 +122,18 @@ export default {
|
||||
</script>
|
||||
|
||||
<style lang="sass" scoped>
|
||||
.event-form-change
|
||||
position: relative
|
||||
display: flex
|
||||
flex-direction: column
|
||||
.event-form
|
||||
height: fit-content
|
||||
row-gap: 24px
|
||||
min-width: 448px
|
||||
padding: 21px 32px 24px 32px
|
||||
background-color: var(--bg-white-color)
|
||||
box-shadow: -4px -4px 16px rgba(9, 10, 21, 0.25), 4px 4px 16px rgba(9, 10, 21, 0.25)
|
||||
border-radius: 4px
|
||||
.title-form
|
||||
font-size: 12px
|
||||
line-height: 14px
|
||||
font-style: normal
|
||||
opacity: 0.4
|
||||
.form-item-container
|
||||
display: flex
|
||||
flex-direction: column
|
||||
row-gap: 8px
|
||||
.input-container
|
||||
display: flex
|
||||
column-gap: 8px
|
||||
align-items: center
|
||||
.form-item
|
||||
cursor: pointer
|
||||
border-radius: 4px
|
||||
padding: 8px 16px 8px 16px
|
||||
width: fit-content
|
||||
background-color: var(--bg-ligth-blue-color)
|
||||
.form-item-input
|
||||
font-family: Raleway, sans-serif
|
||||
font-style: normal
|
||||
font-size: 16px
|
||||
.item-input
|
||||
appearance: none
|
||||
border: none
|
||||
outline: none
|
||||
@@ -161,61 +143,13 @@ export default {
|
||||
&::-webkit-calendar-picker-indicator
|
||||
display: none
|
||||
-webkit-appearance: none
|
||||
.select-form-separator
|
||||
background-color: rgba(65, 105, 225, 0.2)
|
||||
height: 24px
|
||||
width: 1px
|
||||
border-radius: 1px
|
||||
.time-input-container
|
||||
display: flex
|
||||
align-items: center
|
||||
column-gap: 8px
|
||||
.form-inform-container
|
||||
display: flex
|
||||
align-items: center
|
||||
column-gap: 16px
|
||||
.number-additional
|
||||
margin-left: 6px
|
||||
.arrow-icon
|
||||
margin-bottom: -12px
|
||||
text-align: center
|
||||
font-size: 14px
|
||||
color: var(--font-dark-blue-color)
|
||||
&:hover
|
||||
color: var(--btn-blue-color)
|
||||
.container-icon
|
||||
.icon
|
||||
width: 24px
|
||||
height: 24px
|
||||
font-size: 21px
|
||||
color: var(--font-dark-blue-color)
|
||||
.close-icon
|
||||
cursor: pointer
|
||||
font-size: 14px
|
||||
color: var(--font-dark-blue-color)
|
||||
&:hover
|
||||
color: var(--btn-blue-color)
|
||||
.close-icon-position
|
||||
display: flex
|
||||
justify-content: space-between
|
||||
padding-top: 10px
|
||||
.form-select
|
||||
position: relative
|
||||
display: flex
|
||||
flex-direction: column
|
||||
.option-container
|
||||
position: absolute
|
||||
width: max-content
|
||||
background-color: var(--bg-ligth-blue-color)
|
||||
z-index: 3
|
||||
.option-item
|
||||
color: var(--font-black-color)
|
||||
font-family: Raleway, sans-serif
|
||||
font-style: normal
|
||||
font-size: 16px
|
||||
&:hover
|
||||
background-color: var(--btn-blue-color)
|
||||
.select-container-res
|
||||
min-width: 205px
|
||||
.select-container-kind
|
||||
min-width: 119px
|
||||
</style>
|
||||
|
||||
@@ -18,6 +18,7 @@ module.exports = {
|
||||
xl: ['20px', { lineHeight: '23px' }],
|
||||
'2xl': ['28px', { lineHeight: '33px' }],
|
||||
'3xl': ['60px', { lineHeight: '70px' }],
|
||||
'4xl': ['44px', { lineHeight: '48px' }],
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
@@ -36,12 +36,6 @@ module.exports = defineConfig({
|
||||
{
|
||||
loader: 'postcss-loader'
|
||||
},
|
||||
{
|
||||
loader: 'style-loader'
|
||||
},
|
||||
{
|
||||
loader: 'css-loader'
|
||||
},
|
||||
{
|
||||
loader: 'sass-loader'
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user