@getmicdrop/svelte-components 2.8.0 → 3.0.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/dist/components/Alert/Alert.svelte +24 -12
- package/dist/components/Alert/Alert.svelte.d.ts +15 -45
- package/dist/components/Alert/Alert.svelte.d.ts.map +1 -1
- package/dist/components/Badges/Badge.svelte +53 -37
- package/dist/components/Badges/Badge.svelte.d.ts +60 -48
- package/dist/components/Badges/Badge.svelte.d.ts.map +1 -1
- package/dist/components/BottomSheet/BottomSheet.svelte +37 -20
- package/dist/components/BottomSheet/BottomSheet.svelte.d.ts +45 -47
- package/dist/components/BottomSheet/BottomSheet.svelte.d.ts.map +1 -1
- package/dist/components/Breadcrumb/Breadcrumb.svelte +22 -16
- package/dist/components/Breadcrumb/Breadcrumb.svelte.d.ts +50 -31
- package/dist/components/Breadcrumb/Breadcrumb.svelte.d.ts.map +1 -1
- package/dist/components/Button/Button.svelte +179 -134
- package/dist/components/Button/Button.svelte.d.ts +37 -78
- package/dist/components/Button/Button.svelte.d.ts.map +1 -1
- package/dist/components/Checkbox/Checkbox.svelte +71 -41
- package/dist/components/Checkbox/Checkbox.svelte.d.ts +34 -62
- package/dist/components/Checkbox/Checkbox.svelte.d.ts.map +1 -1
- package/dist/components/Drawer/Drawer.svelte +63 -46
- package/dist/components/Drawer/Drawer.svelte.d.ts +110 -54
- package/dist/components/Drawer/Drawer.svelte.d.ts.map +1 -1
- package/dist/components/Dropdown/Dropdown.svelte +203 -193
- package/dist/components/Dropdown/Dropdown.svelte.d.ts +44 -42
- package/dist/components/Dropdown/Dropdown.svelte.d.ts.map +1 -1
- package/dist/components/Dropdown/DropdownItem.svelte +124 -111
- package/dist/components/Dropdown/DropdownItem.svelte.d.ts +39 -43
- package/dist/components/Dropdown/DropdownItem.svelte.d.ts.map +1 -1
- package/dist/components/Dropdown/SelectDropdown.svelte +31 -25
- package/dist/components/Dropdown/SelectDropdown.svelte.d.ts +48 -29
- package/dist/components/Dropdown/SelectDropdown.svelte.d.ts.map +1 -1
- package/dist/components/Input/Input.svelte +141 -98
- package/dist/components/Input/Input.svelte.d.ts +94 -110
- package/dist/components/Input/Input.svelte.d.ts.map +1 -1
- package/dist/components/Input/MultiSelect.svelte +58 -39
- package/dist/components/Input/MultiSelect.svelte.d.ts +101 -40
- package/dist/components/Input/MultiSelect.svelte.d.ts.map +1 -1
- package/dist/components/Input/OTPInput.svelte +30 -17
- package/dist/components/Input/OTPInput.svelte.d.ts +45 -36
- package/dist/components/Input/OTPInput.svelte.d.ts.map +1 -1
- package/dist/components/Input/Search.svelte +196 -173
- package/dist/components/Input/Search.svelte.d.ts +36 -65
- package/dist/components/Input/Search.svelte.d.ts.map +1 -1
- package/dist/components/Input/Select.svelte +49 -35
- package/dist/components/Input/Select.svelte.d.ts +44 -46
- package/dist/components/Input/Select.svelte.d.ts.map +1 -1
- package/dist/components/Input/Textarea.svelte +187 -160
- package/dist/components/Input/Textarea.svelte.d.ts +56 -66
- package/dist/components/Input/Textarea.svelte.d.ts.map +1 -1
- package/dist/components/Modal/ConfirmationModal.svelte +103 -78
- package/dist/components/Modal/ConfirmationModal.svelte.d.ts +132 -47
- package/dist/components/Modal/ConfirmationModal.svelte.d.ts.map +1 -1
- package/dist/components/Modal/InputModal.svelte +157 -132
- package/dist/components/Modal/InputModal.svelte.d.ts +181 -48
- package/dist/components/Modal/InputModal.svelte.d.ts.map +1 -1
- package/dist/components/Modal/Modal.svelte +83 -45
- package/dist/components/Modal/Modal.svelte.d.ts +56 -41
- package/dist/components/Modal/Modal.svelte.d.ts.map +1 -1
- package/dist/components/Modal/ModalTestWrapper.svelte.d.ts +2 -2
- package/dist/components/Modal/StatusModal.svelte +149 -122
- package/dist/components/Modal/StatusModal.svelte.d.ts +126 -47
- package/dist/components/Modal/StatusModal.svelte.d.ts.map +1 -1
- package/dist/components/OrderSummary/OrderSummary.svelte +68 -59
- package/dist/components/OrderSummary/OrderSummary.svelte.d.ts +72 -60
- package/dist/components/OrderSummary/OrderSummary.svelte.d.ts.map +1 -1
- package/dist/components/Pagination/Pagination.svelte +49 -39
- package/dist/components/Pagination/Pagination.svelte.d.ts +89 -36
- package/dist/components/Pagination/Pagination.svelte.d.ts.map +1 -1
- package/dist/components/PublicCard/PublicCard.svelte +22 -12
- package/dist/components/PublicCard/PublicCard.svelte.d.ts +14 -32
- package/dist/components/PublicCard/PublicCard.svelte.d.ts.map +1 -1
- package/dist/components/Radio/Radio.svelte +35 -21
- package/dist/components/Radio/Radio.svelte.d.ts +22 -51
- package/dist/components/Radio/Radio.svelte.d.ts.map +1 -1
- package/dist/components/ShowCard/ShowCard.svelte +47 -40
- package/dist/components/ShowCard/ShowCard.svelte.d.ts +30 -36
- package/dist/components/ShowCard/ShowCard.svelte.d.ts.map +1 -1
- package/dist/components/ShowTimeCard/ShowTimeCard.svelte +23 -14
- package/dist/components/ShowTimeCard/ShowTimeCard.svelte.d.ts +20 -34
- package/dist/components/ShowTimeCard/ShowTimeCard.svelte.d.ts.map +1 -1
- package/dist/components/SuperLogin/SuperLogin.svelte +1282 -0
- package/dist/components/SuperLogin/SuperLogin.svelte.d.ts +44 -0
- package/dist/components/SuperLogin/SuperLogin.svelte.d.ts.map +1 -0
- package/dist/components/SuperLogin/index.d.ts +2 -0
- package/dist/components/SuperLogin/index.d.ts.map +1 -0
- package/dist/components/SuperLogin/index.js +1 -0
- package/dist/components/Toggle.spec.js +21 -52
- package/dist/components/Toggle.svelte +11 -9
- package/dist/components/Toggle.svelte.d.ts +17 -30
- package/dist/components/Toggle.svelte.d.ts.map +1 -1
- package/dist/components/pages/settings/tabs/CustomImageDropzone.svelte +45 -32
- package/dist/components/pages/settings/tabs/CustomImageDropzone.svelte.d.ts +22 -36
- package/dist/components/pages/settings/tabs/CustomImageDropzone.svelte.d.ts.map +1 -1
- package/dist/components/pages/shows/TabNavigation.svelte +16 -8
- package/dist/components/pages/shows/TabNavigation.svelte.d.ts +20 -30
- package/dist/components/pages/shows/TabNavigation.svelte.d.ts.map +1 -1
- package/dist/constants/validation.d.ts +55 -0
- package/dist/constants/validation.d.ts.map +1 -0
- package/dist/constants/validation.js +91 -0
- package/dist/constants/validation.spec.d.ts +2 -0
- package/dist/constants/validation.spec.d.ts.map +1 -0
- package/dist/constants/validation.spec.js +64 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +4 -0
- package/package.json +1 -1
|
@@ -1,59 +1,138 @@
|
|
|
1
1
|
export default StatusModal;
|
|
2
|
-
type StatusModal =
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
type StatusModal = {
|
|
3
|
+
$on?(type: string, callback: (e: any) => void): () => void;
|
|
4
|
+
$set?(props: Partial<Props>): void;
|
|
5
|
+
};
|
|
6
|
+
declare const StatusModal: import("svelte").Component<{
|
|
7
|
+
/**
|
|
8
|
+
* - Whether the modal is visible
|
|
9
|
+
*/
|
|
7
10
|
show?: boolean | undefined;
|
|
11
|
+
/**
|
|
12
|
+
* - Modal size
|
|
13
|
+
*/
|
|
14
|
+
size?: "default" | "small" | "large" | undefined;
|
|
15
|
+
/**
|
|
16
|
+
* - Modal title
|
|
17
|
+
*/
|
|
18
|
+
title?: string | undefined;
|
|
19
|
+
/**
|
|
20
|
+
* - For profile-style modals
|
|
21
|
+
*/
|
|
8
22
|
subtitle?: string | undefined;
|
|
23
|
+
/**
|
|
24
|
+
* - Modal description
|
|
25
|
+
*/
|
|
26
|
+
description?: string | undefined;
|
|
27
|
+
/**
|
|
28
|
+
* - Button text
|
|
29
|
+
*/
|
|
30
|
+
buttonText?: string | undefined;
|
|
31
|
+
/**
|
|
32
|
+
* - Icon type
|
|
33
|
+
*/
|
|
34
|
+
iconType?: "info" | "success" | "warning" | "error" | undefined;
|
|
35
|
+
/**
|
|
36
|
+
* - Custom icon URL
|
|
37
|
+
*/
|
|
38
|
+
customIcon?: string | null | undefined;
|
|
39
|
+
/**
|
|
40
|
+
* - Profile image URL
|
|
41
|
+
*/
|
|
42
|
+
image?: string | null | undefined;
|
|
43
|
+
/**
|
|
44
|
+
* - Disabled state
|
|
45
|
+
*/
|
|
9
46
|
disabled?: boolean | undefined;
|
|
47
|
+
/**
|
|
48
|
+
* - Loading state
|
|
49
|
+
*/
|
|
10
50
|
loading?: boolean | undefined;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
confirm: CustomEvent<any>;
|
|
19
|
-
close: CustomEvent<any>;
|
|
20
|
-
} & {
|
|
21
|
-
[evt: string]: CustomEvent<any>;
|
|
22
|
-
}, {}> & {
|
|
23
|
-
$$bindings?: string | undefined;
|
|
24
|
-
};
|
|
25
|
-
declare const StatusModal: $$__sveltets_2_IsomorphicComponent<{
|
|
26
|
-
title?: string | undefined;
|
|
27
|
-
size?: string | undefined;
|
|
28
|
-
variant?: null | undefined;
|
|
51
|
+
/**
|
|
52
|
+
* - Alternative to iconType
|
|
53
|
+
*/
|
|
54
|
+
variant?: string | null | undefined;
|
|
55
|
+
/**
|
|
56
|
+
* - Action buttons
|
|
57
|
+
*/
|
|
29
58
|
actions?: any[] | undefined;
|
|
59
|
+
/**
|
|
60
|
+
* - Show close button
|
|
61
|
+
*/
|
|
62
|
+
closeBtn?: boolean | undefined;
|
|
63
|
+
/**
|
|
64
|
+
* - Confirm callback
|
|
65
|
+
*/
|
|
66
|
+
onconfirm?: Function | undefined;
|
|
67
|
+
/**
|
|
68
|
+
* - Close callback
|
|
69
|
+
*/
|
|
70
|
+
onclose?: Function | undefined;
|
|
71
|
+
}, {}, "show">;
|
|
72
|
+
type Props = {
|
|
73
|
+
/**
|
|
74
|
+
* - Whether the modal is visible
|
|
75
|
+
*/
|
|
30
76
|
show?: boolean | undefined;
|
|
77
|
+
/**
|
|
78
|
+
* - Modal size
|
|
79
|
+
*/
|
|
80
|
+
size?: "default" | "small" | "large" | undefined;
|
|
81
|
+
/**
|
|
82
|
+
* - Modal title
|
|
83
|
+
*/
|
|
84
|
+
title?: string | undefined;
|
|
85
|
+
/**
|
|
86
|
+
* - For profile-style modals
|
|
87
|
+
*/
|
|
31
88
|
subtitle?: string | undefined;
|
|
89
|
+
/**
|
|
90
|
+
* - Modal description
|
|
91
|
+
*/
|
|
92
|
+
description?: string | undefined;
|
|
93
|
+
/**
|
|
94
|
+
* - Button text
|
|
95
|
+
*/
|
|
96
|
+
buttonText?: string | undefined;
|
|
97
|
+
/**
|
|
98
|
+
* - Icon type
|
|
99
|
+
*/
|
|
100
|
+
iconType?: "info" | "success" | "warning" | "error" | undefined;
|
|
101
|
+
/**
|
|
102
|
+
* - Custom icon URL
|
|
103
|
+
*/
|
|
104
|
+
customIcon?: string | null | undefined;
|
|
105
|
+
/**
|
|
106
|
+
* - Profile image URL
|
|
107
|
+
*/
|
|
108
|
+
image?: string | null | undefined;
|
|
109
|
+
/**
|
|
110
|
+
* - Disabled state
|
|
111
|
+
*/
|
|
32
112
|
disabled?: boolean | undefined;
|
|
113
|
+
/**
|
|
114
|
+
* - Loading state
|
|
115
|
+
*/
|
|
33
116
|
loading?: boolean | undefined;
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
117
|
+
/**
|
|
118
|
+
* - Alternative to iconType
|
|
119
|
+
*/
|
|
120
|
+
variant?: string | null | undefined;
|
|
121
|
+
/**
|
|
122
|
+
* - Action buttons
|
|
123
|
+
*/
|
|
124
|
+
actions?: any[] | undefined;
|
|
125
|
+
/**
|
|
126
|
+
* - Show close button
|
|
127
|
+
*/
|
|
39
128
|
closeBtn?: boolean | undefined;
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
} & Exports;
|
|
50
|
-
(internal: unknown, props: Props & {
|
|
51
|
-
$$events?: Events;
|
|
52
|
-
$$slots?: Slots;
|
|
53
|
-
}): Exports & {
|
|
54
|
-
$set?: any;
|
|
55
|
-
$on?: any;
|
|
56
|
-
};
|
|
57
|
-
z_$$bindings?: Bindings;
|
|
58
|
-
}
|
|
129
|
+
/**
|
|
130
|
+
* - Confirm callback
|
|
131
|
+
*/
|
|
132
|
+
onconfirm?: Function | undefined;
|
|
133
|
+
/**
|
|
134
|
+
* - Close callback
|
|
135
|
+
*/
|
|
136
|
+
onclose?: Function | undefined;
|
|
137
|
+
};
|
|
59
138
|
//# sourceMappingURL=StatusModal.svelte.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatusModal.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/Modal/StatusModal.svelte.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"StatusModal.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/Modal/StatusModal.svelte.js"],"names":[],"mappings":";;;;;AA4OA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAA0D"}
|
|
@@ -1,34 +1,50 @@
|
|
|
1
1
|
<script>
|
|
2
2
|
import { fly, fade } from 'svelte/transition';
|
|
3
3
|
import { cubicOut } from 'svelte/easing';
|
|
4
|
-
import { createEventDispatcher } from 'svelte';
|
|
5
4
|
import ChevronDown from 'carbon-icons-svelte/lib/ChevronDown.svelte';
|
|
6
5
|
import Close from 'carbon-icons-svelte/lib/Close.svelte';
|
|
7
6
|
import Spinner from '../Spinner/Spinner.svelte';
|
|
8
7
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
8
|
+
/**
|
|
9
|
+
* @type {{
|
|
10
|
+
* loading?: boolean,
|
|
11
|
+
* quantities?: Record<string, number>,
|
|
12
|
+
* eventTickets?: Array<{ ID: string | number, name: string, price: number }>,
|
|
13
|
+
* checkoutTicket?: (() => void) | null,
|
|
14
|
+
* isAgreed?: boolean,
|
|
15
|
+
* btnText?: string,
|
|
16
|
+
* promoApplied?: boolean,
|
|
17
|
+
* promoDiscount?: number,
|
|
18
|
+
* currentPromoRule?: { provideDiscount?: boolean, discountTicketIds?: string[], amount?: string, discountType?: '%' | '$' } | null,
|
|
19
|
+
* executePurchase?: ((elements: any) => void) | null,
|
|
20
|
+
* elements?: any,
|
|
21
|
+
* venueServiceCharge?: { serviceFeeCents?: number, serviceFeePercentage?: number, serviceFeeChargeType?: string, maxServiceFeeCents?: number, taxPercentage?: number },
|
|
22
|
+
* onpriceupdate?: (detail: { subtotal: number, fees: number, taxes: number, total: number, promoSavings: number }) => void
|
|
23
|
+
* }}
|
|
24
|
+
*/
|
|
25
|
+
let {
|
|
26
|
+
loading = false,
|
|
27
|
+
quantities = {},
|
|
28
|
+
eventTickets = [],
|
|
29
|
+
checkoutTicket = null,
|
|
30
|
+
isAgreed = true,
|
|
31
|
+
btnText = 'Checkout',
|
|
32
|
+
promoApplied = false,
|
|
33
|
+
promoDiscount = 0,
|
|
34
|
+
currentPromoRule = null,
|
|
35
|
+
executePurchase = null,
|
|
36
|
+
elements = null,
|
|
37
|
+
venueServiceCharge = {
|
|
38
|
+
serviceFeeCents: 0,
|
|
39
|
+
serviceFeePercentage: 0,
|
|
40
|
+
serviceFeeChargeType: 'both',
|
|
41
|
+
maxServiceFeeCents: 0,
|
|
42
|
+
taxPercentage: 0,
|
|
43
|
+
},
|
|
44
|
+
onpriceupdate
|
|
45
|
+
} = $props();
|
|
46
|
+
|
|
47
|
+
let feeFor = $derived((price) => {
|
|
32
48
|
const chargeType = venueServiceCharge.serviceFeeChargeType || 'both';
|
|
33
49
|
let fee = 0;
|
|
34
50
|
|
|
@@ -47,31 +63,22 @@
|
|
|
47
63
|
}
|
|
48
64
|
|
|
49
65
|
return fee;
|
|
50
|
-
};
|
|
66
|
+
});
|
|
51
67
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
let showFooter = false;
|
|
55
|
-
let subtotal = 0;
|
|
56
|
-
let fees = 0;
|
|
57
|
-
let taxes = 0;
|
|
58
|
-
let total = 0;
|
|
59
|
-
let showOrderSummaryOnMobile = false;
|
|
68
|
+
let showOrderSummaryOnMobile = $state(false);
|
|
60
69
|
|
|
61
70
|
function makeOrderSummaryVisible() {
|
|
62
71
|
showOrderSummaryOnMobile = !showOrderSummaryOnMobile;
|
|
63
72
|
}
|
|
64
73
|
|
|
65
74
|
// Calculate discounted price for a ticket
|
|
66
|
-
|
|
75
|
+
let getDiscountedPrice = $derived((ticket) => {
|
|
67
76
|
if (!currentPromoRule?.provideDiscount) return null;
|
|
68
77
|
|
|
69
78
|
// Check if this discount applies to this specific ticket
|
|
70
|
-
// If discountTicketIds is empty or not provided, discount applies to all tickets
|
|
71
|
-
// If discountTicketIds has values, only apply to those specific ticket IDs
|
|
72
79
|
const discountTicketIds = currentPromoRule.discountTicketIds || [];
|
|
73
80
|
if (discountTicketIds.length > 0 && !discountTicketIds.includes(ticket.ID)) {
|
|
74
|
-
return null;
|
|
81
|
+
return null;
|
|
75
82
|
}
|
|
76
83
|
|
|
77
84
|
const basePrice = parseFloat(ticket.price) || 0;
|
|
@@ -82,44 +89,46 @@
|
|
|
82
89
|
return Math.max(0, basePrice - discountAmount).toFixed(2);
|
|
83
90
|
}
|
|
84
91
|
return null;
|
|
85
|
-
};
|
|
92
|
+
});
|
|
86
93
|
|
|
87
|
-
|
|
94
|
+
let totalQuantity = $derived(Object.values(quantities).reduce((sum, q) => sum + q, 0));
|
|
95
|
+
let showFooter = $derived(totalQuantity > 0);
|
|
88
96
|
|
|
89
97
|
// Calculate subtotal without any discounts (for calculating savings)
|
|
90
|
-
|
|
98
|
+
let subtotalWithoutDiscount = $derived(Object.keys(quantities).reduce((acc, key) => {
|
|
91
99
|
const ticket = eventTickets.find(t => t.ID == key);
|
|
92
100
|
if (!ticket) return acc;
|
|
93
101
|
return acc + quantities[key] * ticket.price;
|
|
94
|
-
}, 0);
|
|
102
|
+
}, 0));
|
|
95
103
|
|
|
96
104
|
// Calculate subtotal with discounts applied
|
|
97
|
-
|
|
105
|
+
let subtotal = $derived(Object.keys(quantities).reduce((acc, key) => {
|
|
98
106
|
const ticket = eventTickets.find(t => t.ID == key);
|
|
99
107
|
if (!ticket) return acc;
|
|
100
108
|
const discountedPrice = getDiscountedPrice(ticket);
|
|
101
109
|
const priceToUse = discountedPrice !== null ? parseFloat(discountedPrice) : ticket.price;
|
|
102
110
|
return acc + quantities[key] * priceToUse;
|
|
103
|
-
}, 0);
|
|
111
|
+
}, 0));
|
|
104
112
|
|
|
105
113
|
// Calculate actual savings from promo code
|
|
106
|
-
|
|
114
|
+
let promoSavings = $derived(currentPromoRule?.provideDiscount ? (subtotalWithoutDiscount - subtotal) : 0);
|
|
107
115
|
|
|
108
|
-
|
|
116
|
+
let fees = $derived(Object.keys(quantities).reduce((acc, key) => {
|
|
109
117
|
const ticket = eventTickets.find(t => t.ID == key);
|
|
110
118
|
if (!ticket || ticket.price == 0) return acc;
|
|
111
119
|
const discountedPrice = getDiscountedPrice(ticket);
|
|
112
120
|
const priceToUse = discountedPrice !== null ? parseFloat(discountedPrice) : ticket.price;
|
|
113
121
|
return acc + quantities[key] * feeFor(priceToUse);
|
|
114
|
-
}, 0);
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
122
|
+
}, 0));
|
|
123
|
+
|
|
124
|
+
let taxRate = $derived((venueServiceCharge.taxPercentage || 0) / 100);
|
|
125
|
+
let taxes = $derived(subtotal > 0 ? subtotal * taxRate : 0);
|
|
126
|
+
let total = $derived(Math.max(0, subtotal + fees + taxes - (promoApplied && !currentPromoRule?.provideDiscount ? promoDiscount : 0)));
|
|
127
|
+
|
|
128
|
+
// Dispatch price update when values change
|
|
129
|
+
$effect(() => {
|
|
130
|
+
onpriceupdate?.({ subtotal, fees, taxes, total, promoSavings });
|
|
131
|
+
});
|
|
123
132
|
</script>
|
|
124
133
|
|
|
125
134
|
<div
|
|
@@ -210,7 +219,7 @@
|
|
|
210
219
|
<button
|
|
211
220
|
class="checkout-btn w-full h-12 font-semibold rounded-lg flex items-center justify-center transition-colors"
|
|
212
221
|
class:disabled={totalQuantity === 0}
|
|
213
|
-
|
|
222
|
+
onclick={() => {
|
|
214
223
|
if (totalQuantity === 0) return;
|
|
215
224
|
if (executePurchase) {
|
|
216
225
|
executePurchase(elements);
|
|
@@ -233,7 +242,7 @@
|
|
|
233
242
|
<!-- Backdrop overlay - dims background -->
|
|
234
243
|
<button
|
|
235
244
|
class="mobile-backdrop mobile-only"
|
|
236
|
-
|
|
245
|
+
onclick={() => (showOrderSummaryOnMobile = false)}
|
|
237
246
|
aria-label="Close order summary"
|
|
238
247
|
transition:fade={{ duration: 200 }}
|
|
239
248
|
></button>
|
|
@@ -248,7 +257,7 @@
|
|
|
248
257
|
Order summary
|
|
249
258
|
</h2>
|
|
250
259
|
<button
|
|
251
|
-
|
|
260
|
+
onclick={() => (showOrderSummaryOnMobile = false)}
|
|
252
261
|
class="close-btn transition-colors p-2 rounded-lg"
|
|
253
262
|
aria-label="Close order summary"
|
|
254
263
|
>
|
|
@@ -323,7 +332,7 @@
|
|
|
323
332
|
class="mobile-footer mobile-only fixed bottom-0 left-0 right-0 z-[500]"
|
|
324
333
|
>
|
|
325
334
|
<div class="mobile-footer-content">
|
|
326
|
-
<button class="mobile-footer-left"
|
|
335
|
+
<button class="mobile-footer-left" onclick={makeOrderSummaryVisible}>
|
|
327
336
|
<span class="mobile-footer-tickets">
|
|
328
337
|
{totalQuantity} {totalQuantity > 1 ? 'tickets' : 'ticket'}
|
|
329
338
|
<ChevronDown size={16} class="chevron-icon transition-transform duration-200 {showOrderSummaryOnMobile ? 'rotate-180' : ''}" />
|
|
@@ -333,7 +342,7 @@
|
|
|
333
342
|
|
|
334
343
|
<button
|
|
335
344
|
class="checkout-btn mobile-footer-btn"
|
|
336
|
-
|
|
345
|
+
onclick={() => {
|
|
337
346
|
if (executePurchase) {
|
|
338
347
|
executePurchase(elements);
|
|
339
348
|
} else if (checkoutTicket) {
|
|
@@ -1,65 +1,77 @@
|
|
|
1
1
|
export default OrderSummary;
|
|
2
|
-
type OrderSummary =
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
2
|
+
type OrderSummary = {
|
|
3
|
+
$on?(type: string, callback: (e: any) => void): () => void;
|
|
4
|
+
$set?(props: Partial<{
|
|
5
|
+
loading?: boolean | undefined;
|
|
6
|
+
quantities?: Record<string, number> | undefined;
|
|
7
|
+
eventTickets?: {
|
|
8
|
+
ID: string | number;
|
|
9
|
+
name: string;
|
|
10
|
+
price: number;
|
|
11
|
+
}[] | undefined;
|
|
12
|
+
checkoutTicket?: (() => void) | null | undefined;
|
|
13
|
+
isAgreed?: boolean | undefined;
|
|
14
|
+
btnText?: string | undefined;
|
|
15
|
+
promoApplied?: boolean | undefined;
|
|
16
|
+
promoDiscount?: number | undefined;
|
|
17
|
+
currentPromoRule?: {
|
|
18
|
+
provideDiscount?: boolean | undefined;
|
|
19
|
+
discountTicketIds?: string[] | undefined;
|
|
20
|
+
amount?: string | undefined;
|
|
21
|
+
discountType?: "%" | "$" | undefined;
|
|
22
|
+
} | null | undefined;
|
|
23
|
+
executePurchase?: ((elements: any) => void) | null | undefined;
|
|
24
|
+
elements?: any;
|
|
25
|
+
venueServiceCharge?: {
|
|
26
|
+
serviceFeeCents?: number | undefined;
|
|
27
|
+
serviceFeePercentage?: number | undefined;
|
|
28
|
+
serviceFeeChargeType?: string | undefined;
|
|
29
|
+
maxServiceFeeCents?: number | undefined;
|
|
30
|
+
taxPercentage?: number | undefined;
|
|
31
|
+
} | undefined;
|
|
32
|
+
onpriceupdate?: ((detail: {
|
|
33
|
+
subtotal: number;
|
|
34
|
+
fees: number;
|
|
35
|
+
taxes: number;
|
|
36
|
+
total: number;
|
|
37
|
+
promoSavings: number;
|
|
38
|
+
}) => void) | undefined;
|
|
39
|
+
}>): void;
|
|
27
40
|
};
|
|
28
|
-
declare const OrderSummary:
|
|
29
|
-
loading?: boolean
|
|
30
|
-
quantities?:
|
|
31
|
-
eventTickets?:
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
41
|
+
declare const OrderSummary: import("svelte").Component<{
|
|
42
|
+
loading?: boolean;
|
|
43
|
+
quantities?: Record<string, number>;
|
|
44
|
+
eventTickets?: Array<{
|
|
45
|
+
ID: string | number;
|
|
46
|
+
name: string;
|
|
47
|
+
price: number;
|
|
48
|
+
}>;
|
|
49
|
+
checkoutTicket?: (() => void) | null;
|
|
50
|
+
isAgreed?: boolean;
|
|
51
|
+
btnText?: string;
|
|
52
|
+
promoApplied?: boolean;
|
|
53
|
+
promoDiscount?: number;
|
|
54
|
+
currentPromoRule?: {
|
|
55
|
+
provideDiscount?: boolean;
|
|
56
|
+
discountTicketIds?: string[];
|
|
57
|
+
amount?: string;
|
|
58
|
+
discountType?: "%" | "$";
|
|
59
|
+
} | null;
|
|
60
|
+
executePurchase?: ((elements: any) => void) | null;
|
|
61
|
+
elements?: any;
|
|
40
62
|
venueServiceCharge?: {
|
|
41
|
-
serviceFeeCents
|
|
42
|
-
serviceFeePercentage
|
|
43
|
-
serviceFeeChargeType
|
|
44
|
-
maxServiceFeeCents
|
|
45
|
-
taxPercentage
|
|
46
|
-
} | undefined;
|
|
47
|
-
}, {
|
|
48
|
-
priceUpdate: CustomEvent<any>;
|
|
49
|
-
} & {
|
|
50
|
-
[evt: string]: CustomEvent<any>;
|
|
51
|
-
}, {}, {}, string>;
|
|
52
|
-
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
53
|
-
new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
|
|
54
|
-
$$bindings?: Bindings;
|
|
55
|
-
} & Exports;
|
|
56
|
-
(internal: unknown, props: Props & {
|
|
57
|
-
$$events?: Events;
|
|
58
|
-
$$slots?: Slots;
|
|
59
|
-
}): Exports & {
|
|
60
|
-
$set?: any;
|
|
61
|
-
$on?: any;
|
|
63
|
+
serviceFeeCents?: number;
|
|
64
|
+
serviceFeePercentage?: number;
|
|
65
|
+
serviceFeeChargeType?: string;
|
|
66
|
+
maxServiceFeeCents?: number;
|
|
67
|
+
taxPercentage?: number;
|
|
62
68
|
};
|
|
63
|
-
|
|
64
|
-
|
|
69
|
+
onpriceupdate?: (detail: {
|
|
70
|
+
subtotal: number;
|
|
71
|
+
fees: number;
|
|
72
|
+
taxes: number;
|
|
73
|
+
total: number;
|
|
74
|
+
promoSavings: number;
|
|
75
|
+
}) => void;
|
|
76
|
+
}, {}, "">;
|
|
65
77
|
//# sourceMappingURL=OrderSummary.svelte.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OrderSummary.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/OrderSummary/OrderSummary.svelte.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"OrderSummary.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/OrderSummary/OrderSummary.svelte.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwWA;cAfiB,OAAO;iBACJ,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;mBACpB,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;qBACzD,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI;eACzB,OAAO;cACR,MAAM;mBACD,OAAO;oBACN,MAAM;uBACH;QAAE,eAAe,CAAC,EAAE,OAAO,CAAC;QAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,GAAG,GAAG,GAAG,CAAA;KAAE,GAAG,IAAI;sBAC9G,CAAC,CAAC,QAAQ,EAAE,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI;eACvC,GAAG;yBACO;QAAE,eAAe,CAAC,EAAE,MAAM,CAAC;QAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE;oBACpJ,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI;WAGpE"}
|