fds-vue-core 6.2.7 → 6.2.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fds-vue-core",
3
- "version": "6.2.7",
3
+ "version": "6.2.8",
4
4
  "description": "FDS Vue Core Component Library",
5
5
  "type": "module",
6
6
  "main": "./dist/fds-vue-core.cjs.js",
@@ -9,7 +9,7 @@ const meta: Meta<typeof FdsWeekCalendar> = {
9
9
  tags: ['autodocs'],
10
10
  parameters: {
11
11
  actions: {
12
- handles: ['change-date-range', 'change-selected-day', 'increment-week', 'decrement-week'],
12
+ handles: ['change-date-range', 'select-date', 'increment-week', 'decrement-week'],
13
13
  },
14
14
  },
15
15
  argTypes: {
@@ -1,14 +1,5 @@
1
1
  <script setup lang="ts">
2
- import {
3
- addWeeks,
4
- getISODay,
5
- getISOWeek,
6
- isBefore,
7
- isSameDay,
8
- isSameWeek,
9
- startOfISOWeek,
10
- subWeeks,
11
- } from 'date-fns'
2
+ import { addWeeks, getISODay, getISOWeek, isBefore, isSameDay, isSameWeek, startOfISOWeek, subWeeks } from 'date-fns'
12
3
  import { computed, ref, watch } from 'vue'
13
4
  import FdsButtonIcon from '../Buttons/FdsButtonIcon/FdsButtonIcon.vue'
14
5
  import FdsSpinner from '../FdsSpinner/FdsSpinner.vue'
@@ -122,6 +113,18 @@ watch(
122
113
  },
123
114
  )
124
115
 
116
+ watch(
117
+ () => props.goToWeek?.getTime(),
118
+ (newTimestamp) => {
119
+ if (!newTimestamp) return
120
+ const normalizedWeek = startOfISOWeek(new Date(newTimestamp))
121
+ if (isSameWeek(normalizedWeek, currentWeek.value, { weekStartsOn: 1 })) return
122
+ slideDirection.value = normalizedWeek.getTime() > currentWeek.value.getTime() ? 'left' : 'right'
123
+ onHandleSetCurrentWeek(normalizedWeek)
124
+ },
125
+ { immediate: true },
126
+ )
127
+
125
128
  const onHandleSelectedDay = (weekDay: Date | null) => {
126
129
  selectedDay.value = weekDay
127
130
  emit('select-date', weekDay)
@@ -134,18 +137,26 @@ const onHandleSetCurrentWeek = (week: Date) => {
134
137
  currentWeek.value = week
135
138
  }
136
139
 
140
+ const navigateToWeek = (week: Date) => {
141
+ const normalizedWeek = startOfISOWeek(week)
142
+ if (isSameWeek(normalizedWeek, currentWeek.value, { weekStartsOn: 1 })) return
143
+
144
+ const isForward = normalizedWeek.getTime() > currentWeek.value.getTime()
145
+ if (isForward && disableNextWeekInteraction.value) return
146
+ if (!isForward && disableLastWeekInteraction.value) return
147
+
148
+ slideDirection.value = isForward ? 'left' : 'right'
149
+ onHandleSetCurrentWeek(normalizedWeek)
150
+ }
151
+
137
152
  const incrementWeek = () => {
138
- if (disableNextWeekInteraction.value) return
139
- slideDirection.value = 'left'
140
153
  emit('increment-week')
141
- onHandleSetCurrentWeek(addWeeks(currentWeek.value, 1))
154
+ navigateToWeek(addWeeks(currentWeek.value, 1))
142
155
  }
143
156
 
144
157
  const decrementWeek = () => {
145
- if (disableLastWeekInteraction.value) return
146
- slideDirection.value = 'right'
147
158
  emit('decrement-week')
148
- onHandleSetCurrentWeek(subWeeks(currentWeek.value, 1))
159
+ navigateToWeek(subWeeks(currentWeek.value, 1))
149
160
  }
150
161
 
151
162
  const isWeekDayDisabled = (weekDay: Date) =>
@@ -17,6 +17,7 @@ export interface FdsWeekCalendarProps extends /* @vue-ignore */ HTMLAttributes {
17
17
  disableNextWeek?: boolean
18
18
  enableHorizontalAnimation?: boolean
19
19
  minWeek?: Date
20
+ goToWeek?: Date
20
21
  maxDate?: Date
21
22
  previewOtherDays?: boolean
22
23
  selected?: Date | null