From e45c2bf76142eeb0b34e65cc0e7193aa227b2291 Mon Sep 17 00:00:00 2001 From: Anastasia th9 Date: Wed, 1 Jan 2025 12:47:41 +0200 Subject: [PATCH] tasks-03 --- 03-components/10-MeetupView/MeetupView.js | 20 ++++- 03-components/20-UiClock/UiClock.js | 30 +++++++- .../30-removable-emails/EmailList.js | 16 +++- .../30-removable-emails/EmailListItem.js | 8 +- .../30-removable-emails/MarkedEmailsApp.js | 6 +- 03-components/40-UiCounter/UiCounter.js | 68 +++++++++++++++-- .../50-weather-components/WeatherApp.js | 60 +++++---------- .../50-weather-components/WeatherList.vue | 73 +++++++++++++++++++ 05-ts/10-MeetupView-TS/MeetupAgenda.vue | 14 ++-- 05-ts/10-MeetupView-TS/MeetupAgendaItem.vue | 14 ++-- 05-ts/10-MeetupView-TS/MeetupCover.vue | 16 ++-- 05-ts/10-MeetupView-TS/MeetupDescription.vue | 11 ++- 05-ts/10-MeetupView-TS/MeetupInfo.vue | 22 ++---- 05-ts/10-MeetupView-TS/MeetupView.vue | 14 ++-- 14 files changed, 257 insertions(+), 115 deletions(-) create mode 100644 03-components/50-weather-components/WeatherList.vue diff --git a/03-components/10-MeetupView/MeetupView.js b/03-components/10-MeetupView/MeetupView.js index c2715d1..7f4025d 100644 --- a/03-components/10-MeetupView/MeetupView.js +++ b/03-components/10-MeetupView/MeetupView.js @@ -12,31 +12,43 @@ export default defineComponent({ components: { UiAlert, UiContainer, + MeetupAgenda, + MeetupDescription, + MeetupCover, + MeetupInfo }, + props: { + meetup: { + type: Array, + required: true, + }, + }, + template: `
- +

Описание

+

Программа

- + Программа пока пуста... +
- - +
diff --git a/03-components/20-UiClock/UiClock.js b/03-components/20-UiClock/UiClock.js index 8215f32..2c3dd5a 100644 --- a/03-components/20-UiClock/UiClock.js +++ b/03-components/20-UiClock/UiClock.js @@ -1,9 +1,31 @@ -import { defineComponent } from 'vue' +import { defineComponent, ref, onMounted, onUnmounted } from 'vue'; export default defineComponent({ name: 'UiClock', - setup() {}, + setup() { + const time = ref(''); - template: `
10:12:02
`, -}) + const updateTime = () => { + const currentTime = new Date(); + time.value = currentTime.toLocaleTimeString(navigator.language, { timeStyle: 'medium' }); + }; + + let intervalId; + + onMounted(() => { + updateTime(); + intervalId = setInterval(updateTime, 1000); + }); + + onUnmounted(() => { + clearInterval(intervalId); + }); + + return { + time, + }; + }, + + template: `
{{ time }}
`, +}); diff --git a/03-components/30-removable-emails/EmailList.js b/03-components/30-removable-emails/EmailList.js index 7c8096e..627b3d0 100644 --- a/03-components/30-removable-emails/EmailList.js +++ b/03-components/30-removable-emails/EmailList.js @@ -15,13 +15,27 @@ export default defineComponent({ }, }, + emits: ['remove-email'], + + setup(props, { emit }) { + + const removeEmailHandler = (index) => { + emit('removeEmail', index) + } + + return { + removeEmailHandler + } + }, + template: `
    -
`, diff --git a/03-components/30-removable-emails/EmailListItem.js b/03-components/30-removable-emails/EmailListItem.js index c88ef26..a3629ef 100644 --- a/03-components/30-removable-emails/EmailListItem.js +++ b/03-components/30-removable-emails/EmailListItem.js @@ -15,10 +15,16 @@ export default defineComponent({ }, }, + methods: { + handleRemove() { + this.$emit('remove-email'); + } + }, + template: `
  • {{ email }} - +
  • `, }) diff --git a/03-components/30-removable-emails/MarkedEmailsApp.js b/03-components/30-removable-emails/MarkedEmailsApp.js index 5e77151..f314c5c 100644 --- a/03-components/30-removable-emails/MarkedEmailsApp.js +++ b/03-components/30-removable-emails/MarkedEmailsApp.js @@ -42,6 +42,8 @@ export default defineComponent({ EmailList, }, + + setup() { const emails = ref(getEmails()) const query = ref('') @@ -54,7 +56,7 @@ export default defineComponent({ }) function removeEmailByIndex(index) { - emails.value.splice(index, 1) + emails.value.splice(index, 1); } return { @@ -69,7 +71,7 @@ export default defineComponent({ - +
    `, }) diff --git a/03-components/40-UiCounter/UiCounter.js b/03-components/40-UiCounter/UiCounter.js index 48ae865..f3b7972 100644 --- a/03-components/40-UiCounter/UiCounter.js +++ b/03-components/40-UiCounter/UiCounter.js @@ -1,4 +1,4 @@ -import { defineComponent } from 'vue' +import { defineComponent, ref, watch } from 'vue' import { UiButton } from '@shgk/vue-course-ui' import './UiCounter.css' @@ -9,15 +9,73 @@ export default defineComponent({ UiButton, }, - setup() { + props: { + count: { + type: Number, + required: true, + }, + + min: { + type: Number, + default: 0, + }, + + max: { + type: Number, + default: Infinity, + }, + }, + + setup(props, { emit }) { // Рекомендуется для практики реализовать обработку событий внутри setup, а не непосредственно в шаблоне + const counter = ref(props.count); + + watch( + () => props.count, + (newCount) => { + counter.value = newCount; + } + ); + + const increment = () => { + if (counter.value < props.max) { + counter.value++; + } + }; + + const decrement = () => { + if (counter.value > props.min) { + counter.value--; + } + }; + + watch(counter, (newCount) => { + emit('update:count', newCount); + }); + + + return { + counter, + increment, + decrement, + }; }, template: `
    - - 3 - + + ➖ + + {{ counter }} + + ➕ +
    `, }) diff --git a/03-components/50-weather-components/WeatherApp.js b/03-components/50-weather-components/WeatherApp.js index 5fb34c3..a95ad86 100644 --- a/03-components/50-weather-components/WeatherApp.js +++ b/03-components/50-weather-components/WeatherApp.js @@ -1,52 +1,32 @@ -import { defineComponent } from 'vue' +import { defineComponent, ref} from 'vue' import { getWeatherData, WeatherConditionIcons } from './weather.service.ts' import './WeatherApp.css' +import WeatherList from './WeatherList.vue' export default defineComponent({ name: 'WeatherApp', + components: { WeatherList }, + + setup() { + const weatherData = ref(getWeatherData()) + + return { + weatherData, + } + }, + template: `
    -

    Погода в Средиземье

    +

    Погода в Средиземье

    - +
    `, }) diff --git a/03-components/50-weather-components/WeatherList.vue b/03-components/50-weather-components/WeatherList.vue new file mode 100644 index 0000000..229c026 --- /dev/null +++ b/03-components/50-weather-components/WeatherList.vue @@ -0,0 +1,73 @@ + + + + + diff --git a/05-ts/10-MeetupView-TS/MeetupAgenda.vue b/05-ts/10-MeetupView-TS/MeetupAgenda.vue index f3e1ce3..becb14f 100644 --- a/05-ts/10-MeetupView-TS/MeetupAgenda.vue +++ b/05-ts/10-MeetupView-TS/MeetupAgenda.vue @@ -1,14 +1,10 @@ -