@asd20/ui 3.2.880 → 3.2.881

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
@@ -5,7 +5,7 @@
5
5
  "*.scss",
6
6
  "*.vue"
7
7
  ],
8
- "version": "3.2.880",
8
+ "version": "3.2.881",
9
9
  "private": false,
10
10
  "license": "MIT",
11
11
  "repository": {
@@ -106,7 +106,7 @@ import mapFilesToListItems from '../../../helpers/mapFilesToListItems'
106
106
  import globalPropMixinFactory from '../../../mixins/globalPropMixinFactory.js'
107
107
 
108
108
  export default {
109
- name: 'Asd20SearchMenu',
109
+ name: 'Asd20SiteSearch',
110
110
 
111
111
  mixins: [
112
112
  globalPropMixinFactory(
@@ -48,6 +48,33 @@
48
48
  "calendarFormat": "ical",
49
49
  "calendarColor": "#213f94"
50
50
  },
51
+ {
52
+ "@search.score": 1,
53
+ "id": null,
54
+ "uid": "MDQwMDAwMDA4MjAwRTAwMDc0QzVCNzEwMUE4MkUwMDgwMDAwMDAwMERFRTE5NzcxNThBQ0RBMDEwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDBFOEVBMjc5NkM0MDI3RjRGODFFNzY1QzQ0M0VGMDA0Mw==",
55
+ "type": "event",
56
+ "summary": "Winter Break - Break",
57
+ "description": "",
58
+ "location": "AAHS",
59
+ "start": "2022-12-25T17:00:00Z",
60
+ "end": "2022-12-25T17:30:00Z",
61
+ "dtstamp": "2022-12-25T17:00:00Z",
62
+ "class": "",
63
+ "priority": "",
64
+ "transparency": "",
65
+ "status": "",
66
+ "sequence": "",
67
+ "url": null,
68
+ "calendarId": "a0c92470-27a0-11ec-a6e3-c76d885e64a4",
69
+ "calendarName": "Choir",
70
+ "calendarOrganizationId": "bb6e9cd6-da25-9e6f-5e8d-072b9a7df4f0",
71
+ "calendarOrganizationTitle": "Air Academy High School",
72
+ "calendarCategories": [],
73
+ "calendarKeywords": [],
74
+ "calendarUrl": "https://outlook.office365.com/owa/calendar/6a1a45f079b7416f8b301747cd731778@asd20.org/93eb354f1a6b446bb533e2f40613f8a310360980508845501669/calendar.ics",
75
+ "calendarFormat": "ical",
76
+ "calendarColor": "#eb28c7"
77
+ },
51
78
  {
52
79
  "@search.score": 1,
53
80
  "id": null,
@@ -14,65 +14,65 @@ import isSameDay from 'date-fns/is_same_day'
14
14
  export default function expandEvents(events) {
15
15
  return events
16
16
  .reduce((a, event) => {
17
- // Handle multi-day events
18
- const diffTime = Math.abs(
19
- parse(event.end || event.start).getTime() - parse(event.start).getTime()
20
- )
17
+ // Parse the event start and end times
18
+ const start = parse(event.start)
19
+ const end = event.end ? parse(event.end) : start
20
+
21
+ const diffTime = Math.abs(end.getTime() - start.getTime())
21
22
  const diffHours = Math.ceil(diffTime / (1000 * 60 * 60))
22
23
  const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24))
23
- const multiDay = !isSameDay(event.start, event.end)
24
+ const multiDay = !isSameDay(start, end)
24
25
  const allDay = !event.end || (diffHours > 23 && diffHours < 25)
25
26
  const endTimeUndetermined = event.end && event.end === event.start
26
27
 
27
28
  if (multiDay && !allDay) {
29
+ // Expand multi-day events
28
30
  for (let d = 0; d < diffDays; d++) {
29
- const today = new Date()
30
- today.setDate(today.getDate() - 1)
31
- const newStart = addDays(event.start, d)
32
- if (newStart > today) {
33
- a.push(
34
- Object.assign({}, event, {
35
- start: newStart,
36
- end: event.end ? event.end : null,
37
- originalStart: event.start,
38
- allDay: parse(event.start).getHours() === 0,
39
- endTimeUndetermined,
40
- multiDay,
41
- weekday: format(parse(newStart), 'dddd'),
42
- day: format(parse(newStart), 'DD'),
43
- number: format(parse(newStart), 'D'),
44
- month: format(parse(newStart), 'MMMM'),
45
- year: format(parse(newStart), 'YYYY'),
46
- })
47
- )
48
- }
49
- }
50
- } else {
51
- a.push(
52
- Object.assign({}, event, {
53
- start: event.start,
54
- end: event.end ? event.end : null,
55
- originalStart: null,
56
- allDay,
31
+ const newStart = addDays(start, d)
32
+ a.push({
33
+ ...event,
34
+ start: newStart,
35
+ end: end,
36
+ originalStart: start,
37
+ allDay: start.getHours() === 0,
57
38
  endTimeUndetermined,
58
39
  multiDay,
59
- weekday: format(parse(event.start), 'dddd'),
60
- day: format(parse(event.start), 'DD'),
61
- number: format(parse(event.start), 'D'),
62
- month: format(parse(event.start), 'MMMM'),
63
- year: format(parse(event.start), 'YYYY'),
40
+ weekday: format(newStart, 'dddd'),
41
+ day: format(newStart, 'DD'),
42
+ number: format(newStart, 'D'),
43
+ month: format(newStart, 'MMMM'),
44
+ year: format(newStart, 'YYYY'),
64
45
  })
65
- )
46
+ }
47
+ } else {
48
+ // Add single-day events
49
+ a.push({
50
+ ...event,
51
+ start: start,
52
+ end: end,
53
+ originalStart: null,
54
+ allDay,
55
+ endTimeUndetermined,
56
+ multiDay,
57
+ weekday: format(start, 'dddd'),
58
+ day: format(start, 'DD'),
59
+ number: format(start, 'D'),
60
+ month: format(start, 'MMMM'),
61
+ year: format(start, 'YYYY'),
62
+ })
66
63
  }
67
64
  return a
68
65
  }, [])
69
66
  .reduce((a, e) => {
70
- const hasDuplicate =
71
- a.filter(
72
- ae =>
73
- ae.summary === e.summary && ae.start === e.start && ae.end === e.end
74
- ).length > 0
67
+ // Remove duplicates
68
+ const hasDuplicate = a.some(
69
+ ae => ae.summary === e.summary && ae.start.getTime() === e.start.getTime() && ae.end.getTime() === e.end.getTime()
70
+ )
75
71
  if (!hasDuplicate) a.push(e)
76
72
  return a
77
73
  }, [])
74
+ .sort((a, b) => {
75
+ // Sort events by start date
76
+ return a.start.getTime() - b.start.getTime()
77
+ })
78
78
  }