@timum/booking 0.2.5 → 0.4.0
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/build/asset-manifest.json +3 -5
- package/build/index.html +1 -1
- package/build/static/media/timum-logo.8bcea41f280f1b02fa418b8f6497fbd3.svg +62 -0
- package/build/timum-booking.js +1 -1
- package/build/timum-booking.js.LICENSE.txt +0 -9
- package/build/timum-booking.js.map +1 -1
- package/examples/fullExample.htm +529 -0
- package/package.json +8 -9
- package/build/static/css/main.2cb80f6b.css +0 -2
- package/build/static/css/main.2cb80f6b.css.map +0 -1
- package/examples/single.htm +0 -31
|
@@ -0,0 +1,529 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="UTF-8" />
|
|
6
|
+
<meta name="viewport" content="initial-scale=1, user-scalable=0, maximum-scale=1, minimum-scale=0.6" />
|
|
7
|
+
<title>timum single instance example</title>
|
|
8
|
+
</head>
|
|
9
|
+
|
|
10
|
+
<body>
|
|
11
|
+
<div id="bookingjs" style="margin: 15px;"></div>
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
<script type="text/javascript" src="../build/timum-booking.js"></script>
|
|
15
|
+
<script type="text/javascript">
|
|
16
|
+
timum.init(
|
|
17
|
+
{
|
|
18
|
+
// Reference of the resource to show the appointments of
|
|
19
|
+
// This is the only prop that is mandatory. Everything else is optional.
|
|
20
|
+
// Can also be a url parameter.
|
|
21
|
+
ref: "booking-widget-demo-resource@timum",
|
|
22
|
+
|
|
23
|
+
// height of timum in your page. 500px is standard.
|
|
24
|
+
height: '500px',
|
|
25
|
+
|
|
26
|
+
// timum has, as of now, 4 different channels through which you can share your resource's appointments.
|
|
27
|
+
// You can find them in the timum frontend under <resource name> -> Calendar Sharing (Terminbuchung freigeben)
|
|
28
|
+
// Every channel has its own settings allowing you to control whom of your customers can see certain appointments,
|
|
29
|
+
// whether they book directly or create an request first and other settings.
|
|
30
|
+
// Valid values for this attribute are:
|
|
31
|
+
// * RESOURCE_PUBLIC -> referring to "Public Booking Link" (Öffentlicher Buchungs-Link)
|
|
32
|
+
// * RESOURCE_EXCLUSIVE -> referring to "Exclusive Booking Access" (Exklusiver Buchungs-Zugang)
|
|
33
|
+
// * RESOURCE_REFERENCE -> referring to "Embedded booking calendars" (Eingebettete Buchungskalender)
|
|
34
|
+
// * CALENDAR_PUBLIC -> referring to "In all Website Plugin Views and your General Calendar" (In Website-Plugin Ansichten sowie Ihrem Gesamtkalender)
|
|
35
|
+
// RESOURCE_PUBLIC is the default, used if you specify nothing else.
|
|
36
|
+
// Can also be a url parameter.
|
|
37
|
+
channelKey: 'RESOURCE_PUBLIC',
|
|
38
|
+
|
|
39
|
+
// either fullCalendar or pureListView or detailsListView
|
|
40
|
+
calendarFrontend: 'detailsListView',
|
|
41
|
+
|
|
42
|
+
// The localisation to use. If not specified the browser language is used.
|
|
43
|
+
// Can also be a url parameter.
|
|
44
|
+
culture: "de",
|
|
45
|
+
|
|
46
|
+
// Data indentifying the customer, so that they don't have to input their data again.
|
|
47
|
+
// Works in conjunction with timum and select, supported plaforms like OnOffice, Immosolve etc.
|
|
48
|
+
// Can also be a url parameter. -> the params are named differently though: pDataPlatform, pDataId
|
|
49
|
+
pData: {
|
|
50
|
+
platform: 'timum',
|
|
51
|
+
personId: 'some-id'
|
|
52
|
+
},
|
|
53
|
+
|
|
54
|
+
// here are various callbacks which allow you to run custom code
|
|
55
|
+
// here is the reference for the RTKQ portions: https://redux-toolkit.js.org/rtk-query/usage-with-typescript#type-safe-error-handling
|
|
56
|
+
callbacks: {
|
|
57
|
+
// makeup of timeslot:
|
|
58
|
+
/*
|
|
59
|
+
{
|
|
60
|
+
"start": luxon Datetime object. Internal state. "2023-01-27T09:05:00.000Z",
|
|
61
|
+
"end": luxon Datetime object. Internal state. "2023-01-27T09:35:00.000Z",
|
|
62
|
+
"timeslot_uuid": uuid of the booked timeslot. e.g. "82ec5220-9d55-11ed-8617-e4a7a0ca32e8",
|
|
63
|
+
"product_uuid": uuid of the booked product e.g. "92867f70-4836-11e5-bc04-021a52c25043",
|
|
64
|
+
"product_name": string. e.g. "Meeting",
|
|
65
|
+
"resource_name": string. e.g. "Booking Widget DEMO",
|
|
66
|
+
"capacity": number e.g. 1,
|
|
67
|
+
"capacity_left": number e.g. 1,
|
|
68
|
+
"kind": either "models.Bookable" or "models.LotAppointment",
|
|
69
|
+
"untouchedStart": ISO String e.g: "2023-01-27T09:05:00+01:00" as the server sent it,
|
|
70
|
+
"untouchedEnd": ISO String e.g: "2023-01-27T09:35:00+01:00" as the server sent it
|
|
71
|
+
}
|
|
72
|
+
*/
|
|
73
|
+
|
|
74
|
+
// makeup of data. Contains properties named after the 'fields' property placed right after 'callbacks'.
|
|
75
|
+
// e.g if you defined field.creditCard : {title: ..., <...>} then it's input value is stored under "creditCard".
|
|
76
|
+
// the fields you see here are hose present if you use timum's standard configuration.
|
|
77
|
+
//
|
|
78
|
+
// --> this allows you to evaluate the input data of your custom fields in these callbacks and act accordingly.
|
|
79
|
+
/*
|
|
80
|
+
{
|
|
81
|
+
"firstName": "Sebastian",
|
|
82
|
+
"lastName": "Müller",
|
|
83
|
+
"email": "sebastian@timum.de",
|
|
84
|
+
"agbs": true
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
*/
|
|
88
|
+
createBookingStarted: ({ timeslot, data }) => { },
|
|
89
|
+
createBookingSuccessful: ({ timeslot, response /* an RTKQ response object */, data }) => { },
|
|
90
|
+
createBookingFailed: ({ timeslot, response/* an RTKQ response object */, data }) => { },
|
|
91
|
+
|
|
92
|
+
cancelationgStarted: ({ timeslot, response /* an RTKQ response object */ }) => { },
|
|
93
|
+
cancelationSuccessful: ({ timeslot, response /* an RTKQ response object */ }) => { },
|
|
94
|
+
cancelationFailed: ({ timeslot, response /* an RTKQ response object */ }) => { },
|
|
95
|
+
|
|
96
|
+
// these are requests collecting the necessary information to
|
|
97
|
+
// display the booking frontend
|
|
98
|
+
fetchingPublicDataSucceeded: (publicData) => { },
|
|
99
|
+
fetchingProductsSucceeded: (products) => { },
|
|
100
|
+
fetchingBookablesSucceeded: (bookables) => { },
|
|
101
|
+
|
|
102
|
+
fetchingPublicDataFailed: (error /* an RTKQ error object */) => { },
|
|
103
|
+
fetchingProductsFailed: (error /* an RTKQ error object */) => { },
|
|
104
|
+
fetchingBookablesFailed: (error /* an RTKQ error object */) => { },
|
|
105
|
+
},
|
|
106
|
+
|
|
107
|
+
// The standard fields displayed for unknown customers.
|
|
108
|
+
// You can customise what information is demanded of your customers prior to booking.
|
|
109
|
+
// timum only ever needs firstName, lastName, email and agbs to function (meaning you can savely remove fields 'mobile' and 'message').
|
|
110
|
+
// But you can also add fields of your own.
|
|
111
|
+
//
|
|
112
|
+
// See 'callbacks' to see how you can process input data of your custom fields.
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
/*
|
|
116
|
+
How to do custom fields
|
|
117
|
+
|
|
118
|
+
Anatomy of a field
|
|
119
|
+
<fieldName> : {
|
|
120
|
+
title: string or JSXElement;
|
|
121
|
+
validation: yup based validation. See https://github.com/jquense/yup. Re-exported and accessible via timum.yup
|
|
122
|
+
type: string; either 'text' (default), 'phoneNumber', 'textarea', 'checkbox' or 'select',
|
|
123
|
+
prefilled: string; value a fiels is initiated with. Not that for fields of type 'select' you must use the 'key' of on of it's options.
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
Depending on the type there are additional properties you can/must specify:
|
|
127
|
+
Type 'text':
|
|
128
|
+
-> format: string; the native input fields 'type' (... don't judge ^^). Can be 'email', 'number' etc.
|
|
129
|
+
|
|
130
|
+
Type 'phoneNumber':
|
|
131
|
+
-> does NOT support 'validation'. Phone number validation is hard. So timum does it for you.
|
|
132
|
+
This does mean that field validaion localisation is currently not supported for fields of this type.
|
|
133
|
+
This will be fixed in a future update.
|
|
134
|
+
-> isRequired: boolean; if true, this field must be filled with a valid number
|
|
135
|
+
|
|
136
|
+
Type 'textArea':
|
|
137
|
+
-> limit: number; sets the maximum number of characters customers may enter.
|
|
138
|
+
|
|
139
|
+
Type 'checkbox':
|
|
140
|
+
-> no special properties here
|
|
141
|
+
|
|
142
|
+
Type 'select':
|
|
143
|
+
-> options: array of objects. Structure { title: string, key: string };
|
|
144
|
+
'title' is displayed. 'key' is what you get in the 'data' object passed into callbacks.
|
|
145
|
+
|
|
146
|
+
*/
|
|
147
|
+
|
|
148
|
+
fields: {
|
|
149
|
+
firstName: {
|
|
150
|
+
title: 'fields.firstName',
|
|
151
|
+
validation: timum.yup.string().required('validation.field_required'), // <- compare with key in 'localisation'
|
|
152
|
+
},
|
|
153
|
+
lastName: {
|
|
154
|
+
title: 'fields.lastName',
|
|
155
|
+
validation: timum.yup.string().required('validation.field_required'),
|
|
156
|
+
},
|
|
157
|
+
email: {
|
|
158
|
+
title: 'fields.email',
|
|
159
|
+
format: 'email',
|
|
160
|
+
type: 'text',
|
|
161
|
+
validation: timum.yup
|
|
162
|
+
.string()
|
|
163
|
+
.email('validation.email_field_must_be_valid')
|
|
164
|
+
.required('validation.field_required'),
|
|
165
|
+
},
|
|
166
|
+
mobile: {
|
|
167
|
+
title: 'fields.mobile',
|
|
168
|
+
type: 'phoneNumber',
|
|
169
|
+
isRequired: false,
|
|
170
|
+
// validation: is in built and ignored
|
|
171
|
+
},
|
|
172
|
+
message: {
|
|
173
|
+
title: 'fields.message',
|
|
174
|
+
type: 'textarea',
|
|
175
|
+
validation: timum.yup.string().max(1024),
|
|
176
|
+
limit: 1024,
|
|
177
|
+
},
|
|
178
|
+
agbs: {
|
|
179
|
+
title: 'fields.accept_timum_privacy',
|
|
180
|
+
type: 'checkbox',
|
|
181
|
+
validation: timum.yup
|
|
182
|
+
.boolean()
|
|
183
|
+
.required('validation.field_required')
|
|
184
|
+
.test(
|
|
185
|
+
'privacyAccepted',
|
|
186
|
+
'validation.privacy_field_required',
|
|
187
|
+
(value) => value === true
|
|
188
|
+
),
|
|
189
|
+
},
|
|
190
|
+
},
|
|
191
|
+
|
|
192
|
+
// Here are all localization variables and their standard texts.
|
|
193
|
+
// You may change the texts as you see fit.
|
|
194
|
+
// timum supports de and en out of the box.
|
|
195
|
+
// You can easily expand this with fr or it (or any other language)
|
|
196
|
+
// by adding it to the localization object below and translating all of the variables.
|
|
197
|
+
localization: {
|
|
198
|
+
de: {
|
|
199
|
+
product_selection_headline: 'Terminart wählen',
|
|
200
|
+
booked_successfully_header: 'Termin gebucht',
|
|
201
|
+
booked_successfully_message:
|
|
202
|
+
'Sie erhalten eine E-Mail mit den Termindetails an {{mail}}',
|
|
203
|
+
requested_successfully_header: 'Termin angefragt',
|
|
204
|
+
requested_successfully_message:
|
|
205
|
+
'Sie erhalten eine E-Mail mit den Termindetails an {{mail}}. Sie werden unter der gleichen Adresse benachrichtigt, sobald Ihre Anfrage bearbeitet wurde.',
|
|
206
|
+
submit_button_book: 'Buchen',
|
|
207
|
+
submit_button_request: 'Verbindlich Anfragen',
|
|
208
|
+
|
|
209
|
+
noEventsMessage:
|
|
210
|
+
'Zur Zeit sind leider keine buchbaren Termine verfügbar.',
|
|
211
|
+
appoinment_at_capacity: 'vollständig ausgebucht',
|
|
212
|
+
add_to_calendar_btn: 'Zu Kalender hinzufügen',
|
|
213
|
+
until_reservation_expiration:
|
|
214
|
+
'{{expiration}} bis zum Ablauf der Reservierung',
|
|
215
|
+
reservation_expired: 'Reservierung abgelaufen.',
|
|
216
|
+
identified_customer_hint:
|
|
217
|
+
'Sie wurden mit persönlichem Link eingeladen und können direkt Ihren Termin buchen.',
|
|
218
|
+
cancellation: {
|
|
219
|
+
cancelation_successfull_message: 'Termin erfolgreich abgesagt',
|
|
220
|
+
cancellable_appointment_highlight: 'Mein Termin',
|
|
221
|
+
submit_button_cancel: 'Absagen',
|
|
222
|
+
cancel_appointment_header: 'Ihr Termin',
|
|
223
|
+
message_label: 'Nachricht zur Terminabsage',
|
|
224
|
+
},
|
|
225
|
+
// if you have additional fields with their own validation texts you can add
|
|
226
|
+
// translation keys here and reference them in your custom fields validation.
|
|
227
|
+
// e.g. If you were to add the key 'valid_credit_card' here, you could reference it in your credit card field with 'validation.valid_credit_card'.
|
|
228
|
+
validation: {
|
|
229
|
+
field_required: 'Notwendig',
|
|
230
|
+
privacy_field_required:
|
|
231
|
+
'Sie müssen die Datenschutzbestimmungen akzeptieren bevor Sie buchen können.',
|
|
232
|
+
email_field_must_be_valid: 'Geben Sie eine valide E-Mail Adresse ein',
|
|
233
|
+
},
|
|
234
|
+
// Similarly to additional validation texts for your custom fields above,
|
|
235
|
+
// you can also add custom labels for them.
|
|
236
|
+
// e.g. add creditCard here and reference it in your custom field's 'title' with 'fields.creditCard'
|
|
237
|
+
fields: {
|
|
238
|
+
firstName: 'Vorname',
|
|
239
|
+
lastName: 'Nachname',
|
|
240
|
+
name: 'Name',
|
|
241
|
+
email: 'E-Mail',
|
|
242
|
+
mobile: 'Mobil',
|
|
243
|
+
message: 'Ihre Nachricht',
|
|
244
|
+
accept_timum_privacy:
|
|
245
|
+
'Datenschutzbestimmungen gelesen und akzeptiert',
|
|
246
|
+
},
|
|
247
|
+
},
|
|
248
|
+
// the same for english.
|
|
249
|
+
en: {
|
|
250
|
+
product_selection_headline: 'Choose Product',
|
|
251
|
+
booked_successfully_header: 'Appoinment Booked',
|
|
252
|
+
booked_successfully_message:
|
|
253
|
+
'You will receive an email with appointment details to {{mail}}',
|
|
254
|
+
requested_successfully_header: 'Appointment Requested',
|
|
255
|
+
requested_successfully_message:
|
|
256
|
+
'You will receive an email with appointment details to {{mail}}. You will be notified at the same address once your request has been processed.',
|
|
257
|
+
submit_button_book: 'Book',
|
|
258
|
+
submit_button_request: 'Request',
|
|
259
|
+
|
|
260
|
+
noEventsMessage:
|
|
261
|
+
'Unfortunately, there are no bookable dates available at the moment.',
|
|
262
|
+
appoinment_at_capacity: 'fully booked',
|
|
263
|
+
add_to_calendar_btn: 'Add to Calendar',
|
|
264
|
+
until_reservation_expiration:
|
|
265
|
+
'{{expiration}} until reservation expiration.',
|
|
266
|
+
reservation_expired: 'Reservation expired.',
|
|
267
|
+
identified_customer_hint:
|
|
268
|
+
'You have been invited with a personal link and can book your appointment directly.',
|
|
269
|
+
cancellation: {
|
|
270
|
+
cancelation_successfull_message: 'Appointment canceled sucessfully.',
|
|
271
|
+
cancellable_appointment_highlight: 'My Appointment',
|
|
272
|
+
submit_button_cancel: 'Cancel',
|
|
273
|
+
cancel_appointment_header: 'Your Appointment',
|
|
274
|
+
message_label: 'You may enter a reason here.',
|
|
275
|
+
},
|
|
276
|
+
validation: {
|
|
277
|
+
field_required: 'Required',
|
|
278
|
+
privacy_field_required:
|
|
279
|
+
'You must accept the privacy policy prior to booking.',
|
|
280
|
+
email_field_must_be_valid: 'Enter a valid email address',
|
|
281
|
+
},
|
|
282
|
+
fields: {
|
|
283
|
+
firstName: 'First name',
|
|
284
|
+
lastName: 'Last name',
|
|
285
|
+
name: 'name',
|
|
286
|
+
email: 'E-mail',
|
|
287
|
+
mobile: 'Mobile',
|
|
288
|
+
message: 'Your Message',
|
|
289
|
+
accept_timum_privacy: '<0>Privacy policy</0> read and accepted.',
|
|
290
|
+
},
|
|
291
|
+
},
|
|
292
|
+
},
|
|
293
|
+
},
|
|
294
|
+
{
|
|
295
|
+
// This is a mui theme object. Documentation: https://mui.com/material-ui/customization/default-theme/
|
|
296
|
+
// If you are in a professional plan you can customise the look and feel of timum booking to your hearts content.
|
|
297
|
+
// otherwise timum's standard theme is used.
|
|
298
|
+
|
|
299
|
+
// Here is an example which alters some aspects of the standard timum theme.
|
|
300
|
+
// (Based on https://github.com/app-generator/react-berry-dashboard)
|
|
301
|
+
palette: {
|
|
302
|
+
common: {
|
|
303
|
+
black: '#000000'
|
|
304
|
+
},
|
|
305
|
+
primary: {
|
|
306
|
+
light: '#b39ddb',
|
|
307
|
+
main: '#5e35b1',
|
|
308
|
+
},
|
|
309
|
+
secondary: {
|
|
310
|
+
light: '#ede7f6',
|
|
311
|
+
main: '#673ab7',
|
|
312
|
+
dark: '#5e35b1'
|
|
313
|
+
},
|
|
314
|
+
error: {
|
|
315
|
+
main: '#f44336',
|
|
316
|
+
},
|
|
317
|
+
warning: {
|
|
318
|
+
main: '#ffe57f',
|
|
319
|
+
},
|
|
320
|
+
success: {
|
|
321
|
+
main: '#00e676',
|
|
322
|
+
},
|
|
323
|
+
grey: {
|
|
324
|
+
50: '#fafafa',
|
|
325
|
+
100: '#f5f5f5',
|
|
326
|
+
500: '#9e9e9e',
|
|
327
|
+
600: '#757575',
|
|
328
|
+
700: '#616161',
|
|
329
|
+
900: '#212121'
|
|
330
|
+
},
|
|
331
|
+
text: {
|
|
332
|
+
primary: '#616161',
|
|
333
|
+
secondary: '#9e9e9e',
|
|
334
|
+
dark: '#212121',
|
|
335
|
+
hint: '#f5f5f5'
|
|
336
|
+
},
|
|
337
|
+
},
|
|
338
|
+
typography: {
|
|
339
|
+
fontFamily: "'Inter', sans-serif",
|
|
340
|
+
fontSize: "16px",
|
|
341
|
+
h6: {
|
|
342
|
+
fontWeight: 500,
|
|
343
|
+
color: '#757575',
|
|
344
|
+
fontSize: '0.75rem'
|
|
345
|
+
},
|
|
346
|
+
h5: {
|
|
347
|
+
fontSize: '0.875rem',
|
|
348
|
+
color: '#757575',
|
|
349
|
+
fontWeight: 500
|
|
350
|
+
},
|
|
351
|
+
h4: {
|
|
352
|
+
fontSize: '1rem',
|
|
353
|
+
color: '#757575',
|
|
354
|
+
fontWeight: 600
|
|
355
|
+
},
|
|
356
|
+
h3: {
|
|
357
|
+
fontSize: '1.25rem',
|
|
358
|
+
color: '#757575',
|
|
359
|
+
fontWeight: 600
|
|
360
|
+
},
|
|
361
|
+
h2: {
|
|
362
|
+
fontSize: '1.5rem',
|
|
363
|
+
color: '#757575',
|
|
364
|
+
fontWeight: 700
|
|
365
|
+
},
|
|
366
|
+
h1: {
|
|
367
|
+
fontSize: '2.125rem',
|
|
368
|
+
color: '#757575',
|
|
369
|
+
fontWeight: 700
|
|
370
|
+
},
|
|
371
|
+
subtitle1: {
|
|
372
|
+
fontSize: '0.875rem',
|
|
373
|
+
fontWeight: 500,
|
|
374
|
+
color: '#212121'
|
|
375
|
+
},
|
|
376
|
+
subtitle2: {
|
|
377
|
+
fontSize: '0.75rem',
|
|
378
|
+
fontWeight: 400,
|
|
379
|
+
color: '#9e9e9e'
|
|
380
|
+
},
|
|
381
|
+
caption: {
|
|
382
|
+
fontSize: '0.75rem',
|
|
383
|
+
color: '#9e9e9e',
|
|
384
|
+
fontWeight: 400
|
|
385
|
+
},
|
|
386
|
+
body1: {
|
|
387
|
+
fontSize: '0.875rem',
|
|
388
|
+
fontWeight: 400,
|
|
389
|
+
lineHeight: '1.334'
|
|
390
|
+
},
|
|
391
|
+
body2: {
|
|
392
|
+
fontSize: '0.800rem',
|
|
393
|
+
letterSpacing: '0em',
|
|
394
|
+
fontWeight: 400,
|
|
395
|
+
lineHeight: '1.5',
|
|
396
|
+
color: '#616161'
|
|
397
|
+
},
|
|
398
|
+
},
|
|
399
|
+
components: {
|
|
400
|
+
MuiButton: {
|
|
401
|
+
styleOverrides: {
|
|
402
|
+
root: {
|
|
403
|
+
fontWeight: 500,
|
|
404
|
+
textTransform: 'capitalize',
|
|
405
|
+
borderRadius: '16px'
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
},
|
|
409
|
+
MuiPaper: {
|
|
410
|
+
defaultProps: {
|
|
411
|
+
elevation: 0
|
|
412
|
+
},
|
|
413
|
+
styleOverrides: {
|
|
414
|
+
root: {
|
|
415
|
+
backgroundImage: 'none'
|
|
416
|
+
},
|
|
417
|
+
rounded: {
|
|
418
|
+
borderRadius: '16px'
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
},
|
|
422
|
+
|
|
423
|
+
MuiCardContent: {
|
|
424
|
+
styleOverrides: {
|
|
425
|
+
root: {
|
|
426
|
+
padding: '12px'
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
},
|
|
430
|
+
MuiCardActions: {
|
|
431
|
+
styleOverrides: {
|
|
432
|
+
root: {
|
|
433
|
+
padding: '12px'
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
},
|
|
437
|
+
MuiListItem: {
|
|
438
|
+
styleOverrides: {
|
|
439
|
+
root: {
|
|
440
|
+
borderRadius: '16px'
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
},
|
|
444
|
+
MuiListItemButton: {
|
|
445
|
+
styleOverrides: {
|
|
446
|
+
root: {
|
|
447
|
+
color: '#616161',
|
|
448
|
+
paddingTop: '10px',
|
|
449
|
+
paddingBottom: '10px',
|
|
450
|
+
borderRadius: '16px',
|
|
451
|
+
'&:hover': {
|
|
452
|
+
backgroundColor: '#ede7f6',
|
|
453
|
+
color: '#ede7f6',
|
|
454
|
+
'& .MuiListItemIcon-root': {
|
|
455
|
+
color: '#5e35b1'
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
},
|
|
461
|
+
MuiListItemIcon: {
|
|
462
|
+
styleOverrides: {
|
|
463
|
+
root: {
|
|
464
|
+
color: '#616161',
|
|
465
|
+
minWidth: '36px'
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
},
|
|
469
|
+
MuiListItemText: {
|
|
470
|
+
styleOverrides: {
|
|
471
|
+
primary: {
|
|
472
|
+
color: '#212121'
|
|
473
|
+
},
|
|
474
|
+
borderRadius: '16px',
|
|
475
|
+
}
|
|
476
|
+
},
|
|
477
|
+
MuiInputBase: {
|
|
478
|
+
styleOverrides: {
|
|
479
|
+
input: {
|
|
480
|
+
color: '#212121',
|
|
481
|
+
'&::placeholder': {
|
|
482
|
+
color: '#212121',
|
|
483
|
+
fontSize: '0.875rem'
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
},
|
|
488
|
+
MuiOutlinedInput: {
|
|
489
|
+
styleOverrides: {
|
|
490
|
+
root: {
|
|
491
|
+
background: '#fafafa',
|
|
492
|
+
borderRadius: '16px',
|
|
493
|
+
'& .MuiOutlinedInput-notchedOutline': {
|
|
494
|
+
borderColor: '#bdbdbd'
|
|
495
|
+
},
|
|
496
|
+
'&:hover $notchedOutline': {
|
|
497
|
+
borderColor: '#e3f2fd'
|
|
498
|
+
},
|
|
499
|
+
'&.MuiInputBase-multiline': {
|
|
500
|
+
padding: 1
|
|
501
|
+
}
|
|
502
|
+
},
|
|
503
|
+
input: {
|
|
504
|
+
fontWeight: 500,
|
|
505
|
+
background: '#fafafa',
|
|
506
|
+
padding: '15.5px 14px',
|
|
507
|
+
borderRadius: '16px',
|
|
508
|
+
'&.MuiInputBase-inputSizeSmall': {
|
|
509
|
+
padding: '10px 14px',
|
|
510
|
+
'&.MuiInputBase-inputAdornedStart': {
|
|
511
|
+
paddingLeft: 0
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
},
|
|
515
|
+
inputAdornedStart: {
|
|
516
|
+
paddingLeft: 4
|
|
517
|
+
},
|
|
518
|
+
notchedOutline: {
|
|
519
|
+
borderRadius: '16px'
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
},
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
);
|
|
526
|
+
</script>
|
|
527
|
+
</body>
|
|
528
|
+
|
|
529
|
+
</html>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@timum/booking",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"license": "CC-BY-ND-4.0",
|
|
5
5
|
"main": "build/timum-booking.js",
|
|
6
6
|
"publishConfig": {
|
|
@@ -13,11 +13,11 @@
|
|
|
13
13
|
"@fortawesome/fontawesome-svg-core": "^6.1.1",
|
|
14
14
|
"@fortawesome/free-solid-svg-icons": "^6.1.1",
|
|
15
15
|
"@fortawesome/react-fontawesome": "^0.1.18",
|
|
16
|
-
"@fullcalendar/core": "^
|
|
17
|
-
"@fullcalendar/daygrid": "^
|
|
18
|
-
"@fullcalendar/list": "^
|
|
19
|
-
"@fullcalendar/react": "^
|
|
20
|
-
"@fullcalendar/timegrid": "^
|
|
16
|
+
"@fullcalendar/core": "^6.0.1",
|
|
17
|
+
"@fullcalendar/daygrid": "^6.0.1",
|
|
18
|
+
"@fullcalendar/list": "^6.0.1",
|
|
19
|
+
"@fullcalendar/react": "^6.0.1",
|
|
20
|
+
"@fullcalendar/timegrid": "^6.0.1",
|
|
21
21
|
"@hookform/devtools": "^4.2.2",
|
|
22
22
|
"@hookform/resolvers": "^2.9.3",
|
|
23
23
|
"@mui/icons-material": "^5.8.3",
|
|
@@ -28,8 +28,7 @@
|
|
|
28
28
|
"@testing-library/jest-dom": "^5.16.4",
|
|
29
29
|
"@testing-library/react": "^13.3.0",
|
|
30
30
|
"@testing-library/user-event": "^13.5.0",
|
|
31
|
-
"@timum
|
|
32
|
-
"@timum/timum_pdk": "^1.0.15",
|
|
31
|
+
"@timum/timum_pdk": "^2.0.2",
|
|
33
32
|
"add-to-calendar-button": "^1.18.8",
|
|
34
33
|
"create-react-app": "^5.0.1",
|
|
35
34
|
"i18next": "^21.10.0",
|
|
@@ -38,7 +37,7 @@
|
|
|
38
37
|
"luxon": "^2.3.1",
|
|
39
38
|
"material-ui-confirm": "^3.0.4",
|
|
40
39
|
"mui-tel-input": "^2.1.0",
|
|
41
|
-
"notistack": "
|
|
40
|
+
"notistack": "v3.0.0-alpha.11",
|
|
42
41
|
"react": "^18.2.0",
|
|
43
42
|
"react-bootstrap-icons": "^1.8.4",
|
|
44
43
|
"react-countdown": "^2.3.5",
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
.fc-not-allowed,.fc-not-allowed .fc-event{cursor:not-allowed}.fc-unselectable{-webkit-touch-callout:none;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-user-select:none;user-select:none}.fc{display:flex;flex-direction:column;font-size:1em}.fc,.fc *,.fc :after,.fc :before{box-sizing:border-box}.fc table{border-collapse:collapse;border-spacing:0;font-size:1em}.fc th{text-align:center}.fc td,.fc th{padding:0;vertical-align:top}.fc a[data-navlink]{cursor:pointer}.fc a[data-navlink]:hover{text-decoration:underline}.fc-direction-ltr{direction:ltr;text-align:left}.fc-direction-rtl{direction:rtl;text-align:right}.fc-theme-standard td,.fc-theme-standard th{border:1px solid #ddd;border:1px solid var(--fc-border-color,#ddd)}.fc-liquid-hack td,.fc-liquid-hack th{position:relative}@font-face{font-family:fcicons;font-style:normal;font-weight:400;src:url(data:application/x-font-ttf;charset=utf-8;base64,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) format("truetype")}.fc-icon{speak:none;-webkit-font-feature-settings:normal;font-feature-settings:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-family:fcicons!important;font-style:normal;font-variant:normal;font-weight:400;height:1em;line-height:1;text-align:center;text-transform:none;-webkit-user-select:none;user-select:none;width:1em}.fc-icon-chevron-left:before{content:"\e900"}.fc-icon-chevron-right:before{content:"\e901"}.fc-icon-chevrons-left:before{content:"\e902"}.fc-icon-chevrons-right:before{content:"\e903"}.fc-icon-minus-square:before{content:"\e904"}.fc-icon-plus-square:before{content:"\e905"}.fc-icon-x:before{content:"\e906"}.fc .fc-button{border-radius:0;font-family:inherit;font-size:inherit;line-height:inherit;margin:0;overflow:visible;text-transform:none}.fc .fc-button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.fc .fc-button{-webkit-appearance:button}.fc .fc-button:not(:disabled){cursor:pointer}.fc .fc-button::-moz-focus-inner{border-style:none;padding:0}.fc .fc-button{background-color:initial;border:1px solid transparent;border-radius:.25em;display:inline-block;font-size:1em;font-weight:400;line-height:1.5;padding:.4em .65em;text-align:center;-webkit-user-select:none;user-select:none;vertical-align:middle}.fc .fc-button:hover{text-decoration:none}.fc .fc-button:focus{box-shadow:0 0 0 .2rem rgba(44,62,80,.25);outline:0}.fc .fc-button:disabled{opacity:.65}.fc .fc-button-primary{background-color:#2c3e50;background-color:var(--fc-button-bg-color,#2c3e50);border-color:#2c3e50;border-color:var(--fc-button-border-color,#2c3e50);color:#fff;color:var(--fc-button-text-color,#fff)}.fc .fc-button-primary:hover{background-color:#1e2b37;background-color:var(--fc-button-hover-bg-color,#1e2b37);border-color:#1a252f;border-color:var(--fc-button-hover-border-color,#1a252f);color:#fff;color:var(--fc-button-text-color,#fff)}.fc .fc-button-primary:disabled{background-color:#2c3e50;background-color:var(--fc-button-bg-color,#2c3e50);border-color:#2c3e50;border-color:var(--fc-button-border-color,#2c3e50);color:#fff;color:var(--fc-button-text-color,#fff)}.fc .fc-button-primary:focus{box-shadow:0 0 0 .2rem rgba(76,91,106,.5)}.fc .fc-button-primary:not(:disabled).fc-button-active,.fc .fc-button-primary:not(:disabled):active{background-color:#1a252f;background-color:var(--fc-button-active-bg-color,#1a252f);border-color:#151e27;border-color:var(--fc-button-active-border-color,#151e27);color:#fff;color:var(--fc-button-text-color,#fff)}.fc .fc-button-primary:not(:disabled).fc-button-active:focus,.fc .fc-button-primary:not(:disabled):active:focus{box-shadow:0 0 0 .2rem rgba(76,91,106,.5)}.fc .fc-button .fc-icon{font-size:1.5em;vertical-align:middle}.fc .fc-button-group{display:inline-flex;position:relative;vertical-align:middle}.fc .fc-button-group>.fc-button{flex:1 1 auto;position:relative}.fc .fc-button-group>.fc-button.fc-button-active,.fc .fc-button-group>.fc-button:active,.fc .fc-button-group>.fc-button:focus,.fc .fc-button-group>.fc-button:hover{z-index:1}.fc-direction-ltr .fc-button-group>.fc-button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0;margin-left:-1px}.fc-direction-ltr .fc-button-group>.fc-button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.fc-direction-rtl .fc-button-group>.fc-button:not(:first-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}.fc-direction-rtl .fc-button-group>.fc-button:not(:last-child){border-bottom-left-radius:0;border-top-left-radius:0}.fc .fc-toolbar{align-items:center;display:flex;justify-content:space-between}.fc .fc-toolbar.fc-header-toolbar{margin-bottom:1.5em}.fc .fc-toolbar.fc-footer-toolbar{margin-top:1.5em}.fc .fc-toolbar-title{font-size:1.75em;margin:0}.fc-direction-ltr .fc-toolbar>*>:not(:first-child){margin-left:.75em}.fc-direction-rtl .fc-toolbar>*>:not(:first-child){margin-right:.75em}.fc-direction-rtl .fc-toolbar-ltr{flex-direction:row-reverse}.fc .fc-scroller{-webkit-overflow-scrolling:touch;position:relative}.fc .fc-scroller-liquid{height:100%}.fc .fc-scroller-liquid-absolute{bottom:0;left:0;position:absolute;right:0;top:0}.fc .fc-scroller-harness{direction:ltr;overflow:hidden;position:relative}.fc .fc-scroller-harness-liquid{height:100%}.fc-direction-rtl .fc-scroller-harness>.fc-scroller{direction:rtl}.fc-theme-standard .fc-scrollgrid{border:1px solid #ddd;border:1px solid var(--fc-border-color,#ddd)}.fc .fc-scrollgrid,.fc .fc-scrollgrid table{table-layout:fixed;width:100%}.fc .fc-scrollgrid table{border-left-style:hidden;border-right-style:hidden;border-top-style:hidden}.fc .fc-scrollgrid{border-bottom-width:0;border-collapse:initial;border-right-width:0}.fc .fc-scrollgrid-liquid{height:100%}.fc .fc-scrollgrid-section,.fc .fc-scrollgrid-section table,.fc .fc-scrollgrid-section>td{height:1px}.fc .fc-scrollgrid-section-liquid>td{height:100%}.fc .fc-scrollgrid-section>*{border-left-width:0;border-top-width:0}.fc .fc-scrollgrid-section-footer>*,.fc .fc-scrollgrid-section-header>*{border-bottom-width:0}.fc .fc-scrollgrid-section-body table,.fc .fc-scrollgrid-section-footer table{border-bottom-style:hidden}.fc .fc-scrollgrid-section-sticky>*{background:#fff;background:var(--fc-page-bg-color,#fff);position:-webkit-sticky;position:sticky;z-index:3}.fc .fc-scrollgrid-section-header.fc-scrollgrid-section-sticky>*{top:0}.fc .fc-scrollgrid-section-footer.fc-scrollgrid-section-sticky>*{bottom:0}.fc .fc-scrollgrid-sticky-shim{height:1px;margin-bottom:-1px}.fc-sticky{position:-webkit-sticky;position:sticky}.fc .fc-view-harness{flex-grow:1;position:relative}.fc .fc-view-harness-active>.fc-view{bottom:0;left:0;position:absolute;right:0;top:0}.fc .fc-col-header-cell-cushion{display:inline-block;padding:2px 4px}.fc .fc-bg-event,.fc .fc-highlight,.fc .fc-non-business{bottom:0;left:0;position:absolute;right:0;top:0}.fc .fc-non-business{background:hsla(0,0%,84%,.3);background:var(--fc-non-business-color,hsla(0,0%,84%,.3))}.fc .fc-bg-event{background:#8fdf82;background:var(--fc-bg-event-color,#8fdf82);opacity:.3;opacity:var(--fc-bg-event-opacity,.3)}.fc .fc-bg-event .fc-event-title{font-size:.85em;font-size:var(--fc-small-font-size,.85em);font-style:italic;margin:.5em}.fc .fc-highlight{background:rgba(188,232,241,.3);background:var(--fc-highlight-color,rgba(188,232,241,.3))}.fc .fc-cell-shaded,.fc .fc-day-disabled{background:hsla(0,0%,82%,.3);background:var(--fc-neutral-bg-color,hsla(0,0%,82%,.3))}a.fc-event,a.fc-event:hover{text-decoration:none}.fc-event.fc-event-draggable,.fc-event[href]{cursor:pointer}.fc-event .fc-event-main{position:relative;z-index:2}.fc-event-dragging:not(.fc-event-selected){opacity:.75}.fc-event-dragging.fc-event-selected{box-shadow:0 2px 7px rgba(0,0,0,.3)}.fc-event .fc-event-resizer{display:none;position:absolute;z-index:4}.fc-event-selected .fc-event-resizer,.fc-event:hover .fc-event-resizer{display:block}.fc-event-selected .fc-event-resizer{background:#fff;background:var(--fc-page-bg-color,#fff);border-color:inherit;border-radius:4px;border-radius:calc(var(--fc-event-resizer-dot-total-width, 8px)/2);border-style:solid;border-width:1px;border-width:var(--fc-event-resizer-dot-border-width,1px);height:8px;height:var(--fc-event-resizer-dot-total-width,8px);width:8px;width:var(--fc-event-resizer-dot-total-width,8px)}.fc-event-selected .fc-event-resizer:before{bottom:-20px;content:"";left:-20px;position:absolute;right:-20px;top:-20px}.fc-event-selected,.fc-event:focus{box-shadow:0 2px 5px rgba(0,0,0,.2)}.fc-event-selected:before,.fc-event:focus:before{bottom:0;content:"";left:0;position:absolute;right:0;top:0;z-index:3}.fc-event-selected:after,.fc-event:focus:after{background:rgba(0,0,0,.25);background:var(--fc-event-selected-overlay-color,rgba(0,0,0,.25));bottom:-1px;content:"";left:-1px;position:absolute;right:-1px;top:-1px;z-index:1}.fc-h-event{background-color:#3788d8;background-color:var(--fc-event-bg-color,#3788d8);border:1px solid #3788d8;border:1px solid var(--fc-event-border-color,#3788d8);display:block}.fc-h-event .fc-event-main{color:#fff;color:var(--fc-event-text-color,#fff)}.fc-h-event .fc-event-main-frame{display:flex}.fc-h-event .fc-event-time{max-width:100%;overflow:hidden}.fc-h-event .fc-event-title-container{flex-grow:1;flex-shrink:1;min-width:0}.fc-h-event .fc-event-title{display:inline-block;left:0;max-width:100%;overflow:hidden;right:0;vertical-align:top}.fc-h-event.fc-event-selected:before{bottom:-10px;top:-10px}.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-start),.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-end){border-bottom-left-radius:0;border-left-width:0;border-top-left-radius:0}.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-end),.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-start){border-bottom-right-radius:0;border-right-width:0;border-top-right-radius:0}.fc-h-event:not(.fc-event-selected) .fc-event-resizer{bottom:0;top:0;width:8px;width:var(--fc-event-resizer-thickness,8px)}.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start,.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end{cursor:w-resize;left:-4px;left:calc(var(--fc-event-resizer-thickness, 8px)*-.5)}.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end,.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start{cursor:e-resize;right:-4px;right:calc(var(--fc-event-resizer-thickness, 8px)*-.5)}.fc-h-event.fc-event-selected .fc-event-resizer{margin-top:-4px;margin-top:calc(var(--fc-event-resizer-dot-total-width, 8px)*-.5);top:50%}.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-start,.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-end{left:-4px;left:calc(var(--fc-event-resizer-dot-total-width, 8px)*-.5)}.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-end,.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-start{right:-4px;right:calc(var(--fc-event-resizer-dot-total-width, 8px)*-.5)}.fc .fc-popover{box-shadow:0 2px 6px rgba(0,0,0,.15);position:absolute;z-index:9999}.fc .fc-popover-header{align-items:center;display:flex;flex-direction:row;justify-content:space-between;padding:3px 4px}.fc .fc-popover-title{margin:0 2px}.fc .fc-popover-close{cursor:pointer;font-size:1.1em;opacity:.65}.fc-theme-standard .fc-popover{background:#fff;background:var(--fc-page-bg-color,#fff);border:1px solid #ddd;border:1px solid var(--fc-border-color,#ddd)}.fc-theme-standard .fc-popover-header{background:hsla(0,0%,82%,.3);background:var(--fc-neutral-bg-color,hsla(0,0%,82%,.3))}:root{--fc-list-event-dot-width:10px;--fc-list-event-hover-bg-color:#f5f5f5}.fc-theme-standard .fc-list{border:1px solid #ddd;border:1px solid var(--fc-border-color,#ddd)}.fc .fc-list-empty{align-items:center;background-color:hsla(0,0%,82%,.3);background-color:var(--fc-neutral-bg-color,hsla(0,0%,82%,.3));display:flex;height:100%;justify-content:center}.fc .fc-list-empty-cushion{margin:5em 0}.fc .fc-list-table{border-style:hidden;width:100%}.fc .fc-list-table tr>*{border-left:0;border-right:0}.fc .fc-list-sticky .fc-list-day>*{background:#fff;background:var(--fc-page-bg-color,#fff);position:-webkit-sticky;position:sticky;top:0}.fc .fc-list-table thead{left:-10000px;position:absolute}.fc .fc-list-table tbody>tr:first-child th{border-top:0}.fc .fc-list-table th{padding:0}.fc .fc-list-day-cushion,.fc .fc-list-table td{padding:8px 14px}.fc .fc-list-day-cushion:after{clear:both;content:"";display:table}.fc-theme-standard .fc-list-day-cushion{background-color:hsla(0,0%,82%,.3);background-color:var(--fc-neutral-bg-color,hsla(0,0%,82%,.3))}.fc-direction-ltr .fc-list-day-text,.fc-direction-rtl .fc-list-day-side-text{float:left}.fc-direction-ltr .fc-list-day-side-text,.fc-direction-rtl .fc-list-day-text{float:right}.fc-direction-ltr .fc-list-table .fc-list-event-graphic{padding-right:0}.fc-direction-rtl .fc-list-table .fc-list-event-graphic{padding-left:0}.fc .fc-list-event.fc-event-forced-url{cursor:pointer}.fc .fc-list-event:hover td{background-color:#f5f5f5;background-color:var(--fc-list-event-hover-bg-color,#f5f5f5)}.fc .fc-list-event-graphic,.fc .fc-list-event-time{white-space:nowrap;width:1px}.fc .fc-list-event-dot{border:5px solid #3788d8;border:calc(var(--fc-list-event-dot-width, 10px)/2) solid var(--fc-event-border-color,#3788d8);border-radius:5px;border-radius:calc(var(--fc-list-event-dot-width, 10px)/2);box-sizing:initial;display:inline-block;height:0;width:0}.fc .fc-list-event-title a{color:inherit;text-decoration:none}.fc .fc-list-event.fc-event-forced-url:hover a{text-decoration:underline}
|
|
2
|
-
/*# sourceMappingURL=main.2cb80f6b.css.map*/
|