Merge pull request #17 from dderbentsov/UC-5

Изменены стили под использование сетки, поправлены зависимости
This commit is contained in:
Алексей Дёмин
2022-10-11 22:23:05 +03:00
committed by GitHub
11 changed files with 819 additions and 461 deletions

852
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -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,

View 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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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

View File

@@ -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>

View File

@@ -1,157 +1,139 @@
<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 AddEventButton from "@/components/base/buttons/BaseAddEvent";
import ButtonPlus from "@/components/base/buttons/BaseButtonPlus";
export default {
name: "FormChangeEvent",
components: {AddEventButton, ButtonPlus},
props: {
listResponsible: {
default: ["Захарова А.О.", "Коломойцев И.К.", "Ситников А.Г."]
}
},
data() {
return {
formOpen: true,
selectResponsibleOpen: false,
selectKindEventOpen: false,
listFriendInfo: [1],
listContacts: [1],
kindEvents: ["Встреча", "Планерка", "Интервью","Важная работа"],
eventData: {
responsible: "Выберите ответственного",
eventClient: "",
timeEvent: {
firstTime: "11:00",
secondTime: "12:30",
},
friendInfo: {},
kindEvent: "Вид события",
contacts: {}
}
}
},
methods: {
createEvent() {
this.formOpen = !this.formOpen
},
addFriendInfo(e) {
if(e.currentTarget.id === "addInfo") {
this.listFriendInfo.push(this.listFriendInfo[this.listFriendInfo.length-1]+1)
}
if(e.currentTarget.id === "addContact") {
this.listContacts.push(this.listContacts[this.listContacts.length-1]+1)
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, BaseSelect},
props: {
listResponsible: {
default: ["Захарова А.О.", "Коломойцев И.К.", "Ситников А.Г."]
}
},
closeEventForm() {
this.formOpen=!this.formOpen
},
openSelectResponsible() {
this.selectResponsibleOpen = !this.selectResponsibleOpen
},
openSelectKindEvent() {
this.selectKindEventOpen = !this.selectKindEventOpen
},
chooseOption(event) {
if(event.currentTarget.id === "responsible") {
this.eventData.responsible=this.listResponsible[event.target.id]
data() {
return {
formOpen: true,
selectResponsibleOpen: false,
selectKindEventOpen: false,
listFriendInfo: [1],
listContacts: [1],
kindEvents: ["Встреча", "Планерка", "Интервью","Важная работа"],
eventData: {
responsible: "Выберите ответственного",
eventClient: "",
timeEvent: {
firstTime: "11:00",
secondTime: "12:30",
},
friendInfo: {},
kindEvent: "Вид события",
contacts: {}
}
}
if(event.currentTarget.id === "kind") {
this.eventData.kindEvent=this.kindEvents[event.target.id]
},
methods: {
createEvent() {
this.formOpen = !this.formOpen
},
addFriendInfo(e) {
if(e.currentTarget.id === "addInfo") {
this.listFriendInfo.push(this.listFriendInfo[this.listFriendInfo.length-1]+1)
}
if(e.currentTarget.id === "addContact") {
this.listContacts.push(this.listContacts[this.listContacts.length-1]+1)
}
},
closeEventForm() {
this.formOpen=!this.formOpen
},
openSelectResponsible() {
this.selectResponsibleOpen = !this.selectResponsibleOpen
},
openSelectKindEvent() {
this.selectKindEventOpen = !this.selectKindEventOpen
},
chooseOption(event) {
if(event.currentTarget.id === "responsible") {
this.eventData.responsible=this.listResponsible[event.target.id]
}
if(event.currentTarget.id === "kind") {
this.eventData.kindEvent=this.kindEvents[event.target.id]
}
}
}
}
}
</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,17 @@ 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
//.select-container-res
// min-width: 205px
//.select-container-kind
// min-width: 119px
</style>

View File

@@ -18,6 +18,7 @@ module.exports = {
xl: ['20px', { lineHeight: '23px' }],
'2xl': ['28px', { lineHeight: '33px' }],
'3xl': ['60px', { lineHeight: '70px' }],
'4xl': ['44px', { lineHeight: '48px' }],
}
},
},

View File

@@ -36,12 +36,6 @@ module.exports = defineConfig({
{
loader: 'postcss-loader'
},
{
loader: 'style-loader'
},
{
loader: 'css-loader'
},
{
loader: 'sass-loader'
},