@bagelink/vue 1.8.12 → 1.8.16
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/dist/components/AddToCalendar.vue.d.ts +9 -12
- package/dist/components/AddToCalendar.vue.d.ts.map +1 -1
- package/dist/components/calendar/Index.vue.d.ts +1 -1
- package/dist/components/calendar/views/WeekView.vue.d.ts +1 -1
- package/dist/components/calendar/views/WeekView.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/Upload/UploadInput.vue.d.ts.map +1 -1
- package/dist/index.cjs +24 -23
- package/dist/index.mjs +4578 -4500
- package/dist/style.css +1 -1
- package/dist/types/BagelForm.d.ts +0 -1
- package/dist/types/BagelForm.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/calendar/types.d.ts +8 -0
- package/dist/utils/calendar/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/AddToCalendar.vue +230 -45
- package/src/components/form/inputs/Upload/UploadInput.vue +10 -20
- package/src/types/BagelForm.ts +61 -61
- package/src/types/index.ts +36 -35
- package/src/utils/calendar/types.ts +9 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BagelForm.d.ts","sourceRoot":"","sources":["../../src/types/BagelForm.ts"],"names":[],"mappings":"AACA,
|
|
1
|
+
{"version":3,"file":"BagelForm.d.ts","sourceRoot":"","sources":["../../src/types/BagelForm.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { IconType, MaterialIcons } from '../components/Icon/types';
|
|
2
2
|
export type { ModalComponentProps, ModalComponentProps as ModalFormComponentProps, ModalOptions, } from '../plugins/modalTypes';
|
|
3
3
|
export type { IconType, MaterialIcons };
|
|
4
|
+
export type { AddToCalendarEvent } from '../utils/calendar/types';
|
|
4
5
|
export * from './BagelForm';
|
|
5
6
|
export * from './BtnOptions';
|
|
6
7
|
export type { StorageFile } from './file';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACX,mBAAmB,EACnB,mBAAmB,IAAI,uBAAuB,EAC9C,YAAY,GACZ,MAAM,uBAAuB,CAAA;AAE9B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,4 +24,12 @@ export interface EventInterface {
|
|
|
24
24
|
};
|
|
25
25
|
originalEvent?: Omit<EventInterface, 'originalEvent'>;
|
|
26
26
|
}
|
|
27
|
+
export interface AddToCalendarEvent {
|
|
28
|
+
title: string;
|
|
29
|
+
description?: string;
|
|
30
|
+
location?: string;
|
|
31
|
+
startTime: Date | string;
|
|
32
|
+
endTime: Date | string;
|
|
33
|
+
url?: string;
|
|
34
|
+
}
|
|
27
35
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/utils/calendar/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEzC,MAAM,WAAW,cAAc;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,EAAE;QACL,KAAK,EAAE,MAAM,CAAA;QACb,GAAG,EAAE,MAAM,CAAA;KACX,CAAA;IACD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAA;IACvB,aAAa,CAAC,EAAE,QAAQ,EAAE,CAAA;IAC1B,QAAQ,CAAC,EAAE,OAAO,GAAG,QAAQ,EAAE,CAAA;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,2BAA2B,CAAC,EAAE,MAAM,CAAA;IACpC,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,MAAM,CAAC,EAAE;QACR,KAAK,EAAE,IAAI,CAAA;QACX,GAAG,EAAE,IAAI,CAAA;KACT,CAAA;IACD,aAAa,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,eAAe,CAAC,CAAA;CACrD"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/utils/calendar/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEzC,MAAM,WAAW,cAAc;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,EAAE;QACL,KAAK,EAAE,MAAM,CAAA;QACb,GAAG,EAAE,MAAM,CAAA;KACX,CAAA;IACD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAA;IACvB,aAAa,CAAC,EAAE,QAAQ,EAAE,CAAA;IAC1B,QAAQ,CAAC,EAAE,OAAO,GAAG,QAAQ,EAAE,CAAA;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,2BAA2B,CAAC,EAAE,MAAM,CAAA;IACpC,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,MAAM,CAAC,EAAE;QACR,KAAK,EAAE,IAAI,CAAA;QACX,GAAG,EAAE,IAAI,CAAA;KACT,CAAA;IACD,aAAa,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,eAAe,CAAC,CAAA;CACrD;AAED,MAAM,WAAW,kBAAkB;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,IAAI,GAAG,MAAM,CAAA;IACxB,OAAO,EAAE,IAAI,GAAG,MAAM,CAAA;IACtB,GAAG,CAAC,EAAE,MAAM,CAAA;CACZ"}
|
package/package.json
CHANGED
|
@@ -1,66 +1,251 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import type {
|
|
3
|
-
import {
|
|
2
|
+
import type { AddToCalendarEvent } from '@bagelink/vue'
|
|
3
|
+
import { Btn, Dropdown, ListItem } from '@bagelink/vue'
|
|
4
4
|
import { computed } from 'vue'
|
|
5
|
-
import { useAddToCalendar } from '../composables/useAddToCalendar'
|
|
6
5
|
|
|
7
6
|
interface Props {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
outline?: boolean
|
|
7
|
+
event: AddToCalendarEvent
|
|
8
|
+
google?: boolean
|
|
9
|
+
apple?: boolean
|
|
10
|
+
outlook?: boolean
|
|
11
|
+
office365?: boolean
|
|
12
|
+
yahoo?: boolean
|
|
13
|
+
ics?: boolean
|
|
16
14
|
}
|
|
17
15
|
|
|
18
|
-
const props =
|
|
19
|
-
|
|
16
|
+
const props = defineProps<Props>()
|
|
17
|
+
|
|
18
|
+
// Check if any calendar prop was explicitly passed
|
|
19
|
+
const hasExplicitCalendars = computed(() => props.google !== undefined
|
|
20
|
+
|| props.apple !== undefined
|
|
21
|
+
|| props.outlook !== undefined
|
|
22
|
+
|| props.office365 !== undefined
|
|
23
|
+
|| props.yahoo !== undefined
|
|
24
|
+
|| props.ics !== undefined
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
const allCalendars = [
|
|
28
|
+
{
|
|
29
|
+
name: 'Google Calendar',
|
|
30
|
+
icon: 'google',
|
|
31
|
+
action: 'google',
|
|
32
|
+
color: '#EA4335', // Google Red
|
|
33
|
+
prop: 'google' as const,
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
name: 'Apple Calendar',
|
|
37
|
+
icon: 'apple',
|
|
38
|
+
action: 'apple',
|
|
39
|
+
color: '#000000', // Apple Black
|
|
40
|
+
prop: 'apple' as const,
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: 'Outlook',
|
|
44
|
+
icon: 'windows',
|
|
45
|
+
action: 'outlook',
|
|
46
|
+
color: '#0072C6', // Outlook Blue
|
|
47
|
+
prop: 'outlook' as const,
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
name: 'Office 365',
|
|
51
|
+
icon: 'microsoft',
|
|
52
|
+
action: 'office365',
|
|
53
|
+
color: '#EA3E23', // Office 365 Orange/Red
|
|
54
|
+
prop: 'office365' as const,
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: 'Yahoo Calendar',
|
|
58
|
+
icon: 'yahoo',
|
|
59
|
+
action: 'yahoo',
|
|
60
|
+
color: '#6001D2', // Yahoo Purple
|
|
61
|
+
prop: 'yahoo' as const,
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
name: 'Calendar (ICS file)',
|
|
65
|
+
icon: 'calendar',
|
|
66
|
+
action: 'ics',
|
|
67
|
+
color: '#96A2B4',
|
|
68
|
+
prop: 'ics' as const,
|
|
69
|
+
},
|
|
70
|
+
]
|
|
71
|
+
|
|
72
|
+
// Filter calendars based on enabled props
|
|
73
|
+
const availableCalendars = computed(() => {
|
|
74
|
+
// If no calendar props were passed, show all
|
|
75
|
+
if (!hasExplicitCalendars.value) {
|
|
76
|
+
return allCalendars
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// Filter to only show calendars that are explicitly truthy
|
|
80
|
+
const filtered = allCalendars.filter(cal => props[cal.prop] === true)
|
|
81
|
+
|
|
82
|
+
// If none are enabled, default to showing all
|
|
83
|
+
return filtered.length > 0 ? filtered : allCalendars
|
|
20
84
|
})
|
|
21
85
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
86
|
+
// Check if only one calendar is available
|
|
87
|
+
const isSingleCalendar = computed(() => availableCalendars.value.length === 1)
|
|
88
|
+
|
|
89
|
+
// Get the single calendar if only one is available
|
|
90
|
+
const singleCalendar = computed(() => isSingleCalendar.value ? availableCalendars.value[0] : null
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
// Format date to YYYYMMDDTHHMMSS format for calendar links
|
|
94
|
+
function formatDateTime(date: Date | string): string {
|
|
95
|
+
const d = typeof date === 'string' ? new Date(date) : date
|
|
96
|
+
return `${d.toISOString().replace(/[-:]/g, '').split('.')[0]}Z`
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// Format date to YYYY-MM-DDTHH:mm:ss format for Outlook
|
|
100
|
+
function formatOutlookDateTime(date: Date | string): string {
|
|
101
|
+
const d = typeof date === 'string' ? new Date(date) : date
|
|
102
|
+
return d.toISOString().split('.')[0]
|
|
28
103
|
}
|
|
29
104
|
|
|
30
|
-
|
|
105
|
+
// Generate Google Calendar URL
|
|
106
|
+
const googleCalendarUrl = computed(() => {
|
|
107
|
+
const params = new URLSearchParams({
|
|
108
|
+
action: 'TEMPLATE',
|
|
109
|
+
text: props.event.title,
|
|
110
|
+
dates: `${formatDateTime(props.event.startTime)}/${formatDateTime(props.event.endTime)}`,
|
|
111
|
+
details: props.event.description || '',
|
|
112
|
+
location: props.event.location || '',
|
|
113
|
+
})
|
|
31
114
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
115
|
+
if (props.event.url) {
|
|
116
|
+
params.set('details', `${props.event.description || ''}\n\n${props.event.url}`)
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
return `https://calendar.google.com/calendar/render?${params.toString()}`
|
|
120
|
+
})
|
|
121
|
+
|
|
122
|
+
// Generate Outlook/Office 365 URL
|
|
123
|
+
const outlookUrl = computed(() => {
|
|
124
|
+
const params = new URLSearchParams({
|
|
125
|
+
path: '/calendar/action/compose',
|
|
126
|
+
rru: 'addevent',
|
|
127
|
+
subject: props.event.title,
|
|
128
|
+
startdt: formatOutlookDateTime(props.event.startTime),
|
|
129
|
+
enddt: formatOutlookDateTime(props.event.endTime),
|
|
130
|
+
body: props.event.description || '',
|
|
131
|
+
location: props.event.location || '',
|
|
132
|
+
})
|
|
40
133
|
|
|
41
|
-
|
|
42
|
-
if (!props.providers || !props.providers.length) { return calendarProviders }
|
|
43
|
-
return calendarProviders.filter(provider => props.providers?.includes(provider.id))
|
|
134
|
+
return `https://outlook.live.com/calendar/0/deeplink/compose?${params.toString()}`
|
|
44
135
|
})
|
|
45
136
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
137
|
+
// Generate Office 365 URL
|
|
138
|
+
const office365Url = computed(() => {
|
|
139
|
+
const params = new URLSearchParams({
|
|
140
|
+
path: '/calendar/action/compose',
|
|
141
|
+
rru: 'addevent',
|
|
142
|
+
subject: props.event.title,
|
|
143
|
+
startdt: formatOutlookDateTime(props.event.startTime),
|
|
144
|
+
enddt: formatOutlookDateTime(props.event.endTime),
|
|
145
|
+
body: props.event.description || '',
|
|
146
|
+
location: props.event.location || '',
|
|
147
|
+
})
|
|
148
|
+
|
|
149
|
+
return `https://outlook.office.com/calendar/0/deeplink/compose?${params.toString()}`
|
|
150
|
+
})
|
|
151
|
+
|
|
152
|
+
// Generate Yahoo Calendar URL
|
|
153
|
+
const yahooUrl = computed(() => {
|
|
154
|
+
const params = new URLSearchParams({
|
|
155
|
+
v: '60',
|
|
156
|
+
title: props.event.title,
|
|
157
|
+
st: formatDateTime(props.event.startTime),
|
|
158
|
+
et: formatDateTime(props.event.endTime),
|
|
159
|
+
desc: props.event.description || '',
|
|
160
|
+
in_loc: props.event.location || '',
|
|
161
|
+
})
|
|
162
|
+
|
|
163
|
+
return `https://calendar.yahoo.com/?${params.toString()}`
|
|
164
|
+
})
|
|
165
|
+
|
|
166
|
+
// Generate ICS file content for Apple Calendar and other clients
|
|
167
|
+
function generateICS(): string {
|
|
168
|
+
const icsContent = [
|
|
169
|
+
'BEGIN:VCALENDAR',
|
|
170
|
+
'VERSION:2.0',
|
|
171
|
+
'PRODID:-//Add to Calendar//EN',
|
|
172
|
+
'BEGIN:VEVENT',
|
|
173
|
+
`UID:${Date.now()}@addtocalendar`,
|
|
174
|
+
`DTSTAMP:${formatDateTime(new Date())}`,
|
|
175
|
+
`DTSTART:${formatDateTime(props.event.startTime)}`,
|
|
176
|
+
`DTEND:${formatDateTime(props.event.endTime)}`,
|
|
177
|
+
`SUMMARY:${props.event.title}`,
|
|
178
|
+
props.event.description ? `DESCRIPTION:${props.event.description.replace(/\n/g, '\\n')}` : '',
|
|
179
|
+
props.event.location ? `LOCATION:${props.event.location}` : '',
|
|
180
|
+
props.event.url ? `URL:${props.event.url}` : '',
|
|
181
|
+
'END:VEVENT',
|
|
182
|
+
'END:VCALENDAR',
|
|
183
|
+
].filter(Boolean).join('\r\n')
|
|
184
|
+
|
|
185
|
+
return icsContent
|
|
49
186
|
}
|
|
50
187
|
|
|
51
|
-
|
|
188
|
+
// Download ICS file for Apple Calendar and generic calendar apps
|
|
189
|
+
function downloadICS() {
|
|
190
|
+
const icsContent = generateICS()
|
|
191
|
+
const blob = new Blob([icsContent], { type: 'text/calendar;charset=utf-8' })
|
|
192
|
+
const link = document.createElement('a')
|
|
193
|
+
link.href = URL.createObjectURL(blob)
|
|
194
|
+
link.download = `${props.event.title.replace(/[^a-z0-9]/gi, '_').toLowerCase()}.ics`
|
|
195
|
+
document.body.appendChild(link)
|
|
196
|
+
link.click()
|
|
197
|
+
document.body.removeChild(link)
|
|
198
|
+
URL.revokeObjectURL(link.href)
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
function handleCalendarClick(type: string) {
|
|
202
|
+
switch (type) {
|
|
203
|
+
case 'google':
|
|
204
|
+
window.open(googleCalendarUrl.value, '_blank')
|
|
205
|
+
break
|
|
206
|
+
case 'outlook':
|
|
207
|
+
window.open(outlookUrl.value, '_blank')
|
|
208
|
+
break
|
|
209
|
+
case 'office365':
|
|
210
|
+
window.open(office365Url.value, '_blank')
|
|
211
|
+
break
|
|
212
|
+
case 'yahoo':
|
|
213
|
+
window.open(yahooUrl.value, '_blank')
|
|
214
|
+
break
|
|
215
|
+
case 'apple':
|
|
216
|
+
case 'ics':
|
|
217
|
+
downloadICS()
|
|
218
|
+
break
|
|
219
|
+
}
|
|
220
|
+
}
|
|
52
221
|
</script>
|
|
53
222
|
|
|
54
223
|
<template>
|
|
55
|
-
<
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
224
|
+
<Btn
|
|
225
|
+
v-if="isSingleCalendar && singleCalendar" :icon="singleCalendar.icon" color="white"
|
|
226
|
+
class="inline-block calendar-btn" :flat="false" :style="{ '--bgl-text-color': singleCalendar.color }"
|
|
227
|
+
@click="handleCalendarClick(singleCalendar.action)"
|
|
228
|
+
>
|
|
229
|
+
Add to {{ singleCalendar.name }}
|
|
230
|
+
</Btn>
|
|
231
|
+
|
|
232
|
+
<!-- Multiple calendars: show dropdown -->
|
|
233
|
+
<Dropdown
|
|
234
|
+
v-else-if="availableCalendars.length > 1" value="Add to Calendar" icon="calendar" color="white"
|
|
235
|
+
class="inline-block" :flat="false"
|
|
236
|
+
>
|
|
237
|
+
<ListItem
|
|
238
|
+
v-for="calendar in availableCalendars" :key="calendar.action" :icon="calendar.icon" :thin="true"
|
|
239
|
+
class="txt16" :style="{ '--bgl-text-color': '#000000', '--bgl-primary': calendar.color }"
|
|
240
|
+
@click="handleCalendarClick(calendar.action)"
|
|
241
|
+
>
|
|
242
|
+
{{ calendar.name }}
|
|
243
|
+
</ListItem>
|
|
65
244
|
</Dropdown>
|
|
66
245
|
</template>
|
|
246
|
+
|
|
247
|
+
<style>
|
|
248
|
+
.calendar-btn .bgl_icon-font {
|
|
249
|
+
color: var(--bgl-text-color);
|
|
250
|
+
}
|
|
251
|
+
</style>
|
|
@@ -124,27 +124,17 @@ function fileName(pathKey: string) {
|
|
|
124
124
|
>
|
|
125
125
|
<slot name="files" :files="pathKeys" :fileQueue>
|
|
126
126
|
<div v-if="multiple" class="bgl-multi-preview">
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
<p class="m-0">
|
|
137
|
-
{{ fileName(path_key) }}
|
|
138
|
-
</p>
|
|
139
|
-
<Btn thin flat icon="delete" color="red" @click="removeFile(path_key)" />
|
|
140
|
-
</div>
|
|
141
|
-
</template>
|
|
142
|
-
<!-- File count indicator when showFileList is false and multiple files -->
|
|
143
|
-
<div v-if="showFileList === false && pathKeys.length > 0" class="flex column gap-05 pt-1">
|
|
144
|
-
<p class="color-primary">
|
|
145
|
-
{{ pathKeys.length }} file{{ pathKeys.length > 1 ? 's' : '' }} uploaded
|
|
127
|
+
<div
|
|
128
|
+
v-for="path_key in pathKeys" :key="path_key"
|
|
129
|
+
v-lightbox="{ src: pathKeyToURL(path_key), download: true }"
|
|
130
|
+
class="multi-image-item-preview" :class="{ 'bgl_fill-image': fill }"
|
|
131
|
+
>
|
|
132
|
+
<Image v-if="isImage(path_key)" :pathKey="path_key" class="multi-preview" />
|
|
133
|
+
<Icon v-else icon="description" class="multi-preview" />
|
|
134
|
+
<p class="m-0">
|
|
135
|
+
{{ fileName(path_key) }}
|
|
146
136
|
</p>
|
|
147
|
-
<Btn
|
|
137
|
+
<Btn thin flat icon="delete" color="red" @click="removeFile(path_key)" />
|
|
148
138
|
</div>
|
|
149
139
|
<div
|
|
150
140
|
v-for="file in fileQueue" :key="file.name" class="multi-image-item-preview"
|
package/src/types/BagelForm.ts
CHANGED
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
// Local type definitions for internal use only
|
|
2
|
-
type ArrayAttrs = any
|
|
3
|
-
interface Option { label: string, value: any }
|
|
4
2
|
import type { Paths, Get, IterableElement, OmitIndexSignature } from 'type-fest'
|
|
5
3
|
import type { ToString } from 'type-fest/source/internal'
|
|
6
4
|
import type { LiteralStringUnion } from 'type-fest/source/literal-union'
|
|
7
5
|
import type { PathsOptions, DefaultPathsOptions } from 'type-fest/source/paths'
|
|
8
6
|
import type { VNode } from 'vue'
|
|
9
7
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
|
15
|
-
|
|
8
|
+
type ArrayAttrs = any
|
|
9
|
+
interface Option { label: string, value: any }
|
|
10
|
+
|
|
11
|
+
export type AttributeValue
|
|
12
|
+
= | string
|
|
13
|
+
| number
|
|
14
|
+
| boolean
|
|
15
|
+
| undefined
|
|
16
|
+
| { [key: string]: any }
|
|
16
17
|
|
|
17
18
|
export type AttributeFn<T, P extends Path<T>> = (
|
|
18
19
|
field: SmartFieldVal<T, P>,
|
|
@@ -23,25 +24,25 @@ export interface Attributes<T, P extends Path<T>> {
|
|
|
23
24
|
[key: string]: AttributeValue | AttributeFn<T, P>
|
|
24
25
|
}
|
|
25
26
|
|
|
26
|
-
export type BagelFieldOptions<T, P extends Path<T>>
|
|
27
|
-
| string
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
27
|
+
export type BagelFieldOptions<T, P extends Path<T>>
|
|
28
|
+
= | string
|
|
29
|
+
| (
|
|
30
|
+
| {
|
|
31
|
+
label?: string
|
|
32
|
+
value: string | number
|
|
33
|
+
}
|
|
34
|
+
| string
|
|
35
|
+
| number
|
|
36
|
+
| boolean
|
|
37
|
+
| { [key: string]: any }
|
|
38
|
+
)[]
|
|
39
|
+
| ((val?: SmartFieldVal<T, P>, rowData?: T) => Option[] | ((query: string) => Promise<Option[]>))
|
|
40
|
+
| ((query: string, val?: SmartFieldVal<T, P>, rowData?: T) => Promise<Option[]>)
|
|
41
|
+
|
|
42
|
+
export type VIfType<T, P extends Path<T>>
|
|
43
|
+
= | string
|
|
35
44
|
| boolean
|
|
36
|
-
|
|
|
37
|
-
)[]
|
|
38
|
-
| ((val?: SmartFieldVal<T, P>, rowData?: T) => Option[] | ((query: string) => Promise<Option[]>))
|
|
39
|
-
| ((query: string, val?: SmartFieldVal<T, P>, rowData?: T) => Promise<Option[]>)
|
|
40
|
-
|
|
41
|
-
export type VIfType<T, P extends Path<T>> =
|
|
42
|
-
| string
|
|
43
|
-
| boolean
|
|
44
|
-
| ((val?: SmartFieldVal<T, P>, rowData?: T) => boolean)
|
|
45
|
+
| ((val?: SmartFieldVal<T, P>, rowData?: T) => boolean)
|
|
45
46
|
|
|
46
47
|
export type ValidationFn<T, P extends Path<T>> = (
|
|
47
48
|
val?: SmartFieldVal<T, P>,
|
|
@@ -58,14 +59,14 @@ export type _Path<
|
|
|
58
59
|
> = ToString<Paths<OmitIndexSignature<T>, PO>>
|
|
59
60
|
|
|
60
61
|
// Utility type for open-ended object paths
|
|
61
|
-
export type OpenEndedPath<T>
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
62
|
+
export type OpenEndedPath<T>
|
|
63
|
+
= keyof T extends infer K
|
|
64
|
+
? K extends keyof T
|
|
65
|
+
? T[K] extends { [key: string]: any }
|
|
66
|
+
? `${K & string}.${string}`
|
|
67
|
+
: never
|
|
68
|
+
: never
|
|
69
|
+
: never
|
|
69
70
|
|
|
70
71
|
// Helper type to get paths for index signature properties
|
|
71
72
|
type IndexSignaturePaths<T> = {
|
|
@@ -77,40 +78,40 @@ type IndexSignaturePaths<T> = {
|
|
|
77
78
|
}[keyof T]
|
|
78
79
|
|
|
79
80
|
// Enhanced Path type that allows flexibility for nested open-ended objects
|
|
80
|
-
export type Path<T, PO extends PathsOptions = DefaultPathsOptions>
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
81
|
+
export type Path<T, PO extends PathsOptions = DefaultPathsOptions>
|
|
82
|
+
= FieldVal<T, _Path<T, PO>> extends Array<any>
|
|
83
|
+
? LiteralStringUnion<_Path<T, PO>>
|
|
84
|
+
: _Path<T, PO> | IndexSignaturePaths<T> | `${keyof T & string}.more_info.${string}`
|
|
84
85
|
|
|
85
86
|
// Smart field value type that preserves type information when possible
|
|
86
|
-
export type SmartFieldVal<T, P extends Path<T>>
|
|
87
|
-
P extends string
|
|
87
|
+
export type SmartFieldVal<T, P extends Path<T>>
|
|
88
|
+
= P extends string
|
|
88
89
|
? P extends keyof T
|
|
89
90
|
? T[P]
|
|
90
91
|
: any
|
|
91
92
|
: FieldVal<T, P>
|
|
92
93
|
|
|
93
94
|
// Smart bagel field options that preserve type information
|
|
94
|
-
export type SmartBagelFieldOptions<T, P extends Path<T>>
|
|
95
|
-
| string
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
95
|
+
export type SmartBagelFieldOptions<T, P extends Path<T>>
|
|
96
|
+
= | string
|
|
97
|
+
| (
|
|
98
|
+
| {
|
|
99
|
+
label?: string
|
|
100
|
+
value: string | number
|
|
101
|
+
}
|
|
102
|
+
| string
|
|
103
|
+
| number
|
|
104
|
+
| boolean
|
|
105
|
+
| { [key: string]: any }
|
|
106
|
+
)[]
|
|
107
|
+
| ((val?: SmartFieldVal<T, P>, rowData?: T) => Option[] | ((query: string) => Promise<Option[]>))
|
|
108
|
+
| ((query: string, val?: SmartFieldVal<T, P>, rowData?: T) => Promise<Option[]>)
|
|
108
109
|
|
|
109
110
|
// Smart VIf type that preserves type information
|
|
110
|
-
export type SmartVIfType<T, P extends Path<T>>
|
|
111
|
-
| string
|
|
112
|
-
|
|
113
|
-
|
|
111
|
+
export type SmartVIfType<T, P extends Path<T>>
|
|
112
|
+
= | string
|
|
113
|
+
| boolean
|
|
114
|
+
| ((val?: SmartFieldVal<T, P>, rowData?: T) => boolean)
|
|
114
115
|
|
|
115
116
|
// Smart validation function that preserves type information
|
|
116
117
|
export type SmartValidationFn<T, P extends Path<T>> = (
|
|
@@ -138,8 +139,8 @@ export type SmartUpdateFn<T, P extends Path<T>> = (
|
|
|
138
139
|
|
|
139
140
|
/** The value type at path P in object T. */
|
|
140
141
|
// Fall back to unknown if type resolution fails
|
|
141
|
-
export type FieldVal<T, P extends Path<T>>
|
|
142
|
-
unknown extends Get<T, P> ? unknown : Get<T, P>
|
|
142
|
+
export type FieldVal<T, P extends Path<T>>
|
|
143
|
+
= unknown extends Get<T, P> ? unknown : Get<T, P>
|
|
143
144
|
|
|
144
145
|
/** If path P in T is an array, this gives the array's element type. */
|
|
145
146
|
export type ArrayFieldVal<T, P extends Path<T>> = IterableElement<Get<T, P>>
|
|
@@ -297,5 +298,4 @@ export interface UploadInputProps {
|
|
|
297
298
|
dropPlaceholder?: string
|
|
298
299
|
noFilePlaceholder?: string
|
|
299
300
|
btnPlaceholder?: string
|
|
300
|
-
showFileList?: boolean
|
|
301
301
|
}
|