@bagelink/vue 0.0.1218 → 0.0.1220

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.
Files changed (138) hide show
  1. package/dist/components/Calendar/Index.vue.d.ts +510 -0
  2. package/dist/components/Calendar/Index.vue.d.ts.map +1 -0
  3. package/dist/components/Calendar/components/header/Header.vue.d.ts +117 -0
  4. package/dist/components/Calendar/components/header/Header.vue.d.ts.map +1 -0
  5. package/dist/components/Calendar/components/month/AgendaEventTile.vue.d.ts +37 -0
  6. package/dist/components/Calendar/components/month/AgendaEventTile.vue.d.ts.map +1 -0
  7. package/dist/components/Calendar/components/month/AgendaEvents.vue.d.ts +37 -0
  8. package/dist/components/Calendar/components/month/AgendaEvents.vue.d.ts.map +1 -0
  9. package/dist/components/Calendar/components/month/Day.vue.d.ts +84 -0
  10. package/dist/components/Calendar/components/month/Day.vue.d.ts.map +1 -0
  11. package/dist/components/Calendar/components/month/Event.vue.d.ts +69 -0
  12. package/dist/components/Calendar/components/month/Event.vue.d.ts.map +1 -0
  13. package/dist/components/Calendar/components/month/Month.vue.d.ts +134 -0
  14. package/dist/components/Calendar/components/month/Month.vue.d.ts.map +1 -0
  15. package/dist/components/Calendar/components/month/WeekDay.vue.d.ts +7 -0
  16. package/dist/components/Calendar/components/month/WeekDay.vue.d.ts.map +1 -0
  17. package/dist/components/Calendar/components/partials/EventFlyout.vue.d.ts +122 -0
  18. package/dist/components/Calendar/components/partials/EventFlyout.vue.d.ts.map +1 -0
  19. package/dist/components/Calendar/components/week/Day.vue.d.ts +152 -0
  20. package/dist/components/Calendar/components/week/Day.vue.d.ts.map +1 -0
  21. package/dist/components/Calendar/components/week/DayEvent.vue.d.ts +136 -0
  22. package/dist/components/Calendar/components/week/DayEvent.vue.d.ts.map +1 -0
  23. package/dist/components/Calendar/components/week/DayTimeline.vue.d.ts +23 -0
  24. package/dist/components/Calendar/components/week/DayTimeline.vue.d.ts.map +1 -0
  25. package/dist/components/Calendar/components/week/FullDayEvent.vue.d.ts +42 -0
  26. package/dist/components/Calendar/components/week/FullDayEvent.vue.d.ts.map +1 -0
  27. package/dist/components/Calendar/components/week/Week.vue.d.ts +196 -0
  28. package/dist/components/Calendar/components/week/Week.vue.d.ts.map +1 -0
  29. package/dist/components/Calendar/components/week/WeekTimeline.vue.d.ts +21 -0
  30. package/dist/components/Calendar/components/week/WeekTimeline.vue.d.ts.map +1 -0
  31. package/dist/components/Calendar/constants.d.ts +13 -0
  32. package/dist/components/Calendar/constants.d.ts.map +1 -0
  33. package/dist/components/Calendar/helpers/DayIntervals.d.ts +17 -0
  34. package/dist/components/Calendar/helpers/DayIntervals.d.ts.map +1 -0
  35. package/dist/components/Calendar/helpers/EDate.d.ts +10 -0
  36. package/dist/components/Calendar/helpers/EDate.d.ts.map +1 -0
  37. package/dist/components/Calendar/helpers/Errors.d.ts +18 -0
  38. package/dist/components/Calendar/helpers/Errors.d.ts.map +1 -0
  39. package/dist/components/Calendar/helpers/EventChange.d.ts +19 -0
  40. package/dist/components/Calendar/helpers/EventChange.d.ts.map +1 -0
  41. package/dist/components/Calendar/helpers/EventConcurrency.d.ts +12 -0
  42. package/dist/components/Calendar/helpers/EventConcurrency.d.ts.map +1 -0
  43. package/dist/components/Calendar/helpers/EventFlyoutPosition.d.ts +14 -0
  44. package/dist/components/Calendar/helpers/EventFlyoutPosition.d.ts.map +1 -0
  45. package/dist/components/Calendar/helpers/EventPosition.d.ts +11 -0
  46. package/dist/components/Calendar/helpers/EventPosition.d.ts.map +1 -0
  47. package/dist/components/Calendar/helpers/EventsFilter.d.ts +11 -0
  48. package/dist/components/Calendar/helpers/EventsFilter.d.ts.map +1 -0
  49. package/dist/components/Calendar/helpers/Helpers.d.ts +19 -0
  50. package/dist/components/Calendar/helpers/Helpers.d.ts.map +1 -0
  51. package/dist/components/Calendar/helpers/Time.d.ts +118 -0
  52. package/dist/components/Calendar/helpers/Time.d.ts.map +1 -0
  53. package/dist/components/Calendar/helpers/Week.d.ts +10 -0
  54. package/dist/components/Calendar/helpers/Week.d.ts.map +1 -0
  55. package/dist/components/Calendar/index.d.ts +4 -0
  56. package/dist/components/Calendar/index.d.ts.map +1 -0
  57. package/dist/components/Calendar/language/index.d.ts +6 -0
  58. package/dist/components/Calendar/language/index.d.ts.map +1 -0
  59. package/dist/components/Calendar/language/keys.d.ts +90 -0
  60. package/dist/components/Calendar/language/keys.d.ts.map +1 -0
  61. package/dist/components/Calendar/models/Event.d.ts +50 -0
  62. package/dist/components/Calendar/models/Event.d.ts.map +1 -0
  63. package/dist/components/Calendar/typings/config.interface.d.ts +77 -0
  64. package/dist/components/Calendar/typings/config.interface.d.ts.map +1 -0
  65. package/dist/components/Calendar/typings/interfaces/day.interface.d.ts +10 -0
  66. package/dist/components/Calendar/typings/interfaces/day.interface.d.ts.map +1 -0
  67. package/dist/components/Calendar/typings/interfaces/event.interface.d.ts +32 -0
  68. package/dist/components/Calendar/typings/interfaces/event.interface.d.ts.map +1 -0
  69. package/dist/components/Calendar/typings/interfaces/full-day-events-week.type.d.ts +7 -0
  70. package/dist/components/Calendar/typings/interfaces/full-day-events-week.type.d.ts.map +1 -0
  71. package/dist/components/Calendar/typings/interfaces/period.interface.d.ts +6 -0
  72. package/dist/components/Calendar/typings/interfaces/period.interface.d.ts.map +1 -0
  73. package/dist/components/Calendar/typings/interfaces/time-modes.d.ts +6 -0
  74. package/dist/components/Calendar/typings/interfaces/time-modes.d.ts.map +1 -0
  75. package/dist/components/Calendar/typings/types.d.ts +21 -0
  76. package/dist/components/Calendar/typings/types.d.ts.map +1 -0
  77. package/dist/components/DataTable/DataTable.vue.d.ts.map +1 -1
  78. package/dist/components/form/inputs/DatePick.vue.d.ts +8 -0
  79. package/dist/components/form/inputs/DatePick.vue.d.ts.map +1 -1
  80. package/dist/components/form/inputs/NumberInput.vue.d.ts.map +1 -1
  81. package/dist/components/index.d.ts +2 -1
  82. package/dist/components/index.d.ts.map +1 -1
  83. package/dist/directives/index.d.ts +2 -0
  84. package/dist/directives/index.d.ts.map +1 -1
  85. package/dist/directives/vResize.d.ts +18 -0
  86. package/dist/directives/vResize.d.ts.map +1 -0
  87. package/dist/index.cjs +3583 -111
  88. package/dist/index.mjs +3584 -112
  89. package/dist/style.css +843 -77
  90. package/package.json +2 -1
  91. package/src/components/Calendar/Index.vue +420 -0
  92. package/src/components/Calendar/assets/base.css +60 -0
  93. package/src/components/Calendar/components/header/Header.vue +274 -0
  94. package/src/components/Calendar/components/month/AgendaEventTile.vue +137 -0
  95. package/src/components/Calendar/components/month/AgendaEvents.vue +107 -0
  96. package/src/components/Calendar/components/month/Day.vue +271 -0
  97. package/src/components/Calendar/components/month/Event.vue +221 -0
  98. package/src/components/Calendar/components/month/Month.vue +278 -0
  99. package/src/components/Calendar/components/month/WeekDay.vue +25 -0
  100. package/src/components/Calendar/components/partials/EventFlyout.vue +429 -0
  101. package/src/components/Calendar/components/week/Day.vue +212 -0
  102. package/src/components/Calendar/components/week/DayEvent.vue +585 -0
  103. package/src/components/Calendar/components/week/DayTimeline.vue +86 -0
  104. package/src/components/Calendar/components/week/FullDayEvent.vue +121 -0
  105. package/src/components/Calendar/components/week/Week.vue +414 -0
  106. package/src/components/Calendar/components/week/WeekTimeline.vue +126 -0
  107. package/src/components/Calendar/constants.ts +13 -0
  108. package/src/components/Calendar/env.d.ts +8 -0
  109. package/src/components/Calendar/helpers/DayIntervals.ts +48 -0
  110. package/src/components/Calendar/helpers/EDate.ts +18 -0
  111. package/src/components/Calendar/helpers/Errors.ts +69 -0
  112. package/src/components/Calendar/helpers/EventChange.ts +88 -0
  113. package/src/components/Calendar/helpers/EventConcurrency.ts +69 -0
  114. package/src/components/Calendar/helpers/EventFlyoutPosition.ts +96 -0
  115. package/src/components/Calendar/helpers/EventPosition.ts +154 -0
  116. package/src/components/Calendar/helpers/EventsFilter.ts +50 -0
  117. package/src/components/Calendar/helpers/Helpers.ts +86 -0
  118. package/src/components/Calendar/helpers/Time.ts +588 -0
  119. package/src/components/Calendar/helpers/Week.ts +37 -0
  120. package/src/components/Calendar/index.ts +4 -0
  121. package/src/components/Calendar/language/index.ts +37 -0
  122. package/src/components/Calendar/language/keys.ts +90 -0
  123. package/src/components/Calendar/models/Event.ts +112 -0
  124. package/src/components/Calendar/styles/_mixins.css +21 -0
  125. package/src/components/Calendar/styles/_variables.css +51 -0
  126. package/src/components/Calendar/typings/config.interface.ts +87 -0
  127. package/src/components/Calendar/typings/interfaces/day.interface.ts +10 -0
  128. package/src/components/Calendar/typings/interfaces/event.interface.ts +32 -0
  129. package/src/components/Calendar/typings/interfaces/full-day-events-week.type.ts +8 -0
  130. package/src/components/Calendar/typings/interfaces/period.interface.ts +5 -0
  131. package/src/components/Calendar/typings/interfaces/time-modes.ts +9 -0
  132. package/src/components/Calendar/typings/types.ts +23 -0
  133. package/src/components/DataTable/DataTable.vue +4 -0
  134. package/src/components/form/inputs/DatePick.vue +189 -152
  135. package/src/components/form/inputs/NumberInput.vue +1 -3
  136. package/src/components/index.ts +3 -6
  137. package/src/directives/index.ts +2 -0
  138. package/src/directives/vResize.ts +205 -0
@@ -0,0 +1,278 @@
1
+ <script setup lang="ts">
2
+ import type { PropType } from 'vue'
3
+ import type Time from '../../helpers/Time'
4
+ import type { ConfigInterface } from '../../typings/config.interface'
5
+ import type { DayInterface } from '../../typings/interfaces/day.interface'
6
+ import type { EventInterface } from '../../typings/interfaces/event.interface'
7
+ import type { PeriodInterface } from '../../typings/interfaces/period.interface'
8
+ import { ref, onMounted } from 'vue'
9
+ import EDate from '../../helpers/EDate'
10
+ import EventPosition from '../../helpers/EventPosition'
11
+ import Helpers from '../../helpers/Helpers'
12
+ import EventFlyout from '../partials/EventFlyout.vue'
13
+ import AgendaEvents from './AgendaEvents.vue'
14
+ import Day from './Day.vue'
15
+ import WeekDay from './WeekDay.vue'
16
+
17
+ const props = defineProps({
18
+ config: {
19
+ type: Object as PropType<ConfigInterface>,
20
+ required: true,
21
+ },
22
+ time: {
23
+ type: Object as PropType<Time>,
24
+ required: true,
25
+ },
26
+ period: {
27
+ type: Object as PropType<PeriodInterface>,
28
+ required: true,
29
+ },
30
+ eventsProp: {
31
+ type: Array as PropType<EventInterface[]>,
32
+ default: () => [],
33
+ },
34
+ })
35
+
36
+ const emit = defineEmits<{
37
+ (e: 'editEvent', event: any): void
38
+ (e: 'deleteEvent', event: any): void
39
+ (e: 'updatedPeriod', period: any): void
40
+ (e: 'eventWasClicked', event: any): void
41
+ (e: 'eventWasDragged', event: any): void
42
+ (e: 'dateWasClicked', date: any): void
43
+ }>()
44
+
45
+ const EventPositionHelper = new EventPosition()
46
+
47
+ const month = ref<DayInterface[][]>([])
48
+ const selectedEvent = ref<EventInterface | null>(null)
49
+ const selectedEventElement = ref<any | null>(null)
50
+ const events = ref(props.eventsProp)
51
+ const fullDayEvents = ref<EventInterface[]>([])
52
+ const selectedDay = ref<DayInterface | null>(null)
53
+
54
+ function initMonth() {
55
+ month.value = []
56
+ sortOutFullDayEvents()
57
+ setMonth()
58
+ if (props.config.isSmall) setInitialSelectedDay()
59
+ }
60
+
61
+ function setMonth() {
62
+ const { month: currentMonth, fullYear } = new EDate(props.period.selectedDate)
63
+ const calendarMonth = props.time.getCalendarMonthSplitInWeeks(
64
+ fullYear,
65
+ currentMonth
66
+ )
67
+
68
+ const monthWithEvents = calendarMonth.map((week) => {
69
+ return week.map((day) => {
70
+ const dateTimeString = props.time.getDateTimeStringFromDate(day)
71
+ const dayEvents = events.value.filter((event) => {
72
+ return props.time.dateStringsHaveEqualDates(event.time.start, dateTimeString)
73
+ })
74
+
75
+ return {
76
+ isTrailingOrLeadingDate: props.time.isTrailingOrLeadingDate(day, currentMonth),
77
+ dayName: props.time.getLocalizedNameOfWeekday(day),
78
+ dateTimeString: props.time.getDateTimeStringFromDate(day),
79
+ events: dayEvents,
80
+ }
81
+ })
82
+ })
83
+
84
+ month.value = EventPositionHelper.positionFullDayEventsInMonth(
85
+ monthWithEvents,
86
+ fullDayEvents.value
87
+ )
88
+ }
89
+
90
+ function sortOutFullDayEvents() {
91
+ const timedEvents = []
92
+ const fullDayEventsArray = []
93
+
94
+ for (const calendarEvent of events.value) {
95
+ if (Helpers.getEventType(calendarEvent, props.time) === 'SINGLE_DAY_TIMED') {
96
+ timedEvents.push(calendarEvent)
97
+ } else {
98
+ fullDayEventsArray.push(calendarEvent)
99
+ }
100
+ }
101
+
102
+ events.value = timedEvents
103
+ fullDayEvents.value = fullDayEventsArray
104
+ }
105
+
106
+ function handleClickOnEvent(event: {
107
+ eventElement: HTMLDivElement
108
+ clickedEvent: EventInterface
109
+ }) {
110
+ emit('eventWasClicked', event)
111
+ selectedEventElement.value = event.eventElement
112
+ selectedEvent.value = event.clickedEvent
113
+ }
114
+
115
+ function handleEventWasDragged(calendarEvent: EventInterface) {
116
+ emit('eventWasDragged', calendarEvent)
117
+ const newEvents = [...events.value, ...fullDayEvents.value].filter(
118
+ e => e.id !== calendarEvent.id
119
+ )
120
+ newEvents.push(calendarEvent)
121
+ events.value = []
122
+ fullDayEvents.value = []
123
+ events.value = newEvents
124
+ initMonth()
125
+ }
126
+
127
+ function setInitialSelectedDay() {
128
+ const selectedDayDateString = props.time.getDateStringFromDate(props.period.selectedDate)
129
+ selectedDay.value = month.value.flat().find((day) => {
130
+ return props.time.dateStringFrom(day.dateTimeString) === selectedDayDateString
131
+ }) || null
132
+ }
133
+
134
+ onMounted(() => {
135
+ initMonth()
136
+ })
137
+ </script>
138
+
139
+ <template>
140
+ <div class="calendar-month">
141
+ <div
142
+ class="calendar-month__week-day-names"
143
+ >
144
+ <WeekDay
145
+ v-for="(day, dayIndex) in month[0]"
146
+ :key="dayIndex"
147
+ class="calendar-month__week-day-name"
148
+ :config="config"
149
+ :day="day"
150
+ :time="time"
151
+ />
152
+ </div>
153
+ <div class="calendar-month__weeks">
154
+ <div
155
+ v-for="(week, weekIndex) in month"
156
+ :key="weekIndex"
157
+ class="calendar-month__week"
158
+ >
159
+ <Day
160
+ v-for="(day, dayIndex) in week"
161
+ :key="dayIndex"
162
+ :config="config"
163
+ :day="day"
164
+ :time="time"
165
+ :is-selected="selectedDay?.dateTimeString === day.dateTimeString"
166
+ @eventWasClicked="handleClickOnEvent"
167
+ @eventWasDragged="handleEventWasDragged"
168
+ @dateWasClicked="emit('dateWasClicked', $event)"
169
+ @dayWasSelected="selectedDay = $event"
170
+ @updatedPeriod="emit('updatedPeriod', $event)"
171
+ >
172
+ <template #monthEvent="{ eventData }">
173
+ <slot
174
+ :event-data="eventData"
175
+ name="monthEvent"
176
+ />
177
+ </template>
178
+
179
+ <template #dayCell="{ dayData }">
180
+ <slot
181
+ :day-data="dayData"
182
+ name="dayCell"
183
+ />
184
+ </template>
185
+ </Day>
186
+ </div>
187
+ </div>
188
+
189
+ <div
190
+ v-if="!(config.month?.showEventsOnMobileView === false)"
191
+ class="calendar-month__day_events"
192
+ >
193
+ <AgendaEvents
194
+ v-if="selectedDay"
195
+ :config="config"
196
+ :time="time"
197
+ :day="selectedDay"
198
+ @eventWasClicked="handleClickOnEvent"
199
+ />
200
+ </div>
201
+
202
+ <EventFlyout
203
+ v-if="!config.eventDialog || !config.eventDialog.isDisabled"
204
+ :calendar-event-prop="selectedEvent"
205
+ :event-element="selectedEventElement"
206
+ :time="time"
207
+ :config="config"
208
+ @hide="selectedEvent = null"
209
+ @editEvent="emit('editEvent', $event)"
210
+ @deleteEvent="emit('deleteEvent', $event)"
211
+ >
212
+ <template #default="p">
213
+ <slot
214
+ name="eventDialog"
215
+ :event-dialog-data="p.eventDialogData"
216
+ :close-event-dialog="p.closeEventDialog"
217
+ />
218
+ </template>
219
+ </EventFlyout>
220
+ </div>
221
+ </template>
222
+
223
+ <style>
224
+ .calendar-month {
225
+ position: relative;
226
+ display: flex;
227
+ flex-flow: column;
228
+ width: 100%;
229
+ height: 100%;
230
+ overflow-y: auto;
231
+ }
232
+
233
+ :global(.qalendar-is-small) .calendar-month {
234
+ height: initial;
235
+ }
236
+
237
+ .calendar-month__week-day-names {
238
+ display: flex;
239
+ justify-content: space-between;
240
+ }
241
+
242
+ .calendar-month__week-day-name {
243
+ flex: 1;
244
+ text-align: center;
245
+ }
246
+
247
+ .calendar-month__weeks {
248
+ height: 100%;
249
+ flex-grow: 1;
250
+ display: flex;
251
+ flex-flow: column;
252
+ justify-content: space-between;
253
+ }
254
+
255
+ .calendar-month__week {
256
+ display: flex;
257
+ flex: 1;
258
+ }
259
+
260
+ .calendar-month__week:first-child {
261
+ border-top: var(--qalendar-border-gray-thin);
262
+ }
263
+
264
+ @media (prefers-color-scheme: dark) {
265
+ .calendar-month__week:first-child {
266
+ border-color: var(--qalendar-dark-mode-line-color);
267
+ }
268
+ }
269
+
270
+ .calendar-month__day_events {
271
+ height: 100%;
272
+ display: none;
273
+ }
274
+
275
+ :global(.qalendar-is-small) .calendar-month__day_events {
276
+ display: block;
277
+ }
278
+ </style>
@@ -0,0 +1,25 @@
1
+ <script setup lang="ts">
2
+ import type { DayInterface } from '../../typings/interfaces/day.interface'
3
+
4
+ defineProps<{
5
+ day: DayInterface
6
+ }>()
7
+ </script>
8
+
9
+ <template>
10
+ <span
11
+ class="calendar-month__day-name"
12
+ >
13
+ {{ day.dayName }}
14
+ </span>
15
+ </template>
16
+
17
+ <style scoped>
18
+ .calendar-month__day-name {
19
+ display: block;
20
+ font-size: 12px;
21
+ font-weight: 500;
22
+ color: var(--qalendar-gray-quite-dark);
23
+ margin-bottom: var(--qalendar-spacing-half);
24
+ }
25
+ </style>