@rileybathurst/paddle 1.9.32 → 1.9.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/App.tsx +57 -1
- package/src/paddle-compare.tsx +121 -83
- package/src/paddle-ticket.tsx +1 -0
- package/src/types/paddle-compare-types.tsx +1 -1
package/package.json
CHANGED
package/src/App.tsx
CHANGED
|
@@ -4,6 +4,7 @@ import { useState } from 'react'
|
|
|
4
4
|
import reactLogo from './assets/react.svg'
|
|
5
5
|
import viteLogo from '/vite.svg'
|
|
6
6
|
import { PaddlePricingChart } from './paddle-pricing-chart'
|
|
7
|
+
import { PaddleCompare } from './paddle-compare'
|
|
7
8
|
|
|
8
9
|
function App() {
|
|
9
10
|
const [count, setCount] = useState(0)
|
|
@@ -31,7 +32,7 @@ function App() {
|
|
|
31
32
|
Click on the Vite and React logos to learn more
|
|
32
33
|
</p>
|
|
33
34
|
|
|
34
|
-
{/* testing */}
|
|
35
|
+
{/* // TODO: testing */}
|
|
35
36
|
<PaddlePricingChart
|
|
36
37
|
rentalRates={{
|
|
37
38
|
nodes: [
|
|
@@ -94,6 +95,61 @@ function App() {
|
|
|
94
95
|
slug: 'tahoe-city'
|
|
95
96
|
}}
|
|
96
97
|
/>
|
|
98
|
+
|
|
99
|
+
<PaddleCompare
|
|
100
|
+
peek_base="123"
|
|
101
|
+
strapiBranchName="south-tahoe"
|
|
102
|
+
tours={[
|
|
103
|
+
{
|
|
104
|
+
id: 1,
|
|
105
|
+
name: "Tour 1",
|
|
106
|
+
slug: "tour-1",
|
|
107
|
+
sport: "Paddleboarding",
|
|
108
|
+
duration: 120,
|
|
109
|
+
timeframe: "Morning",
|
|
110
|
+
start: "9:00 AM",
|
|
111
|
+
finish: "11:00 AM",
|
|
112
|
+
fitness: "Easy",
|
|
113
|
+
location: "Lake Tahoe",
|
|
114
|
+
excerpt: "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
|
|
115
|
+
minimum: 2,
|
|
116
|
+
price: 100,
|
|
117
|
+
peek: "456"
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
id: 2,
|
|
121
|
+
name: "Tour 2",
|
|
122
|
+
slug: "tour-2",
|
|
123
|
+
sport: "Paddleboarding",
|
|
124
|
+
duration: 180,
|
|
125
|
+
timeframe: "Afternoon",
|
|
126
|
+
start: "1:00 PM",
|
|
127
|
+
finish: "4:00 PM",
|
|
128
|
+
fitness: "Moderate",
|
|
129
|
+
location: "Lake Tahoe",
|
|
130
|
+
excerpt: "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
|
|
131
|
+
minimum: 2,
|
|
132
|
+
price: 150,
|
|
133
|
+
peek: "789"
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
id: 3,
|
|
137
|
+
name: "Tour 3",
|
|
138
|
+
slug: "tour-3",
|
|
139
|
+
sport: "Paddleboarding",
|
|
140
|
+
duration: 240,
|
|
141
|
+
timeframe: "Evening",
|
|
142
|
+
start: "5:00 PM",
|
|
143
|
+
finish: "9:00 PM",
|
|
144
|
+
fitness: "Hard",
|
|
145
|
+
location: "Lake Tahoe",
|
|
146
|
+
excerpt: "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
|
|
147
|
+
minimum: 2,
|
|
148
|
+
price: 200,
|
|
149
|
+
peek: "101112"
|
|
150
|
+
}
|
|
151
|
+
]}
|
|
152
|
+
/>
|
|
97
153
|
</>
|
|
98
154
|
)
|
|
99
155
|
}
|
package/src/paddle-compare.tsx
CHANGED
|
@@ -1,54 +1,40 @@
|
|
|
1
|
-
|
|
1
|
+
import React, { useState } from "react";
|
|
2
2
|
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
// import { PaddleTime } from './paddle-time';
|
|
3
|
+
import { PaddleTime } from './paddle-time';
|
|
6
4
|
import { PaddleBookNow } from './paddle-book-now';
|
|
7
5
|
import type { PaddleCompareTypes } from './types/paddle-compare-types';
|
|
8
6
|
|
|
9
|
-
type
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
name: string;
|
|
30
|
-
slug: string;
|
|
31
|
-
sport: string;
|
|
32
|
-
duration?: string;
|
|
33
|
-
timeframe?: string;
|
|
34
|
-
start?: string;
|
|
35
|
-
finish?: string;
|
|
36
|
-
excerpt?: string;
|
|
37
|
-
minimum?: number;
|
|
38
|
-
price?: number;
|
|
39
|
-
peek?: string;
|
|
40
|
-
fitness?: string;
|
|
41
|
-
}[];
|
|
7
|
+
type TourType = PaddleCompareTypes["tours"][number];
|
|
8
|
+
|
|
9
|
+
type CompareDetailsTypes = {
|
|
10
|
+
name: TourType["name"];
|
|
11
|
+
onTourChange: (value: TourType["name"]) => void;
|
|
12
|
+
link: TourType["slug"];
|
|
13
|
+
sport: TourType["sport"];
|
|
14
|
+
duration?: TourType["duration"];
|
|
15
|
+
timeframe?: TourType["timeframe"];
|
|
16
|
+
start?: TourType["start"];
|
|
17
|
+
finish?: TourType["finish"];
|
|
18
|
+
fitness?: TourType["fitness"];
|
|
19
|
+
location: TourType["location"];
|
|
20
|
+
excerpt: TourType["excerpt"];
|
|
21
|
+
minimum: TourType["minimum"];
|
|
22
|
+
price: TourType["price"];
|
|
23
|
+
peeks?: TourType["peek"];
|
|
24
|
+
peek_base: PaddleCompareTypes["peek_base"];
|
|
25
|
+
strapiBranchName: PaddleCompareTypes["strapiBranchName"];
|
|
26
|
+
tours: PaddleCompareTypes["tours"];
|
|
42
27
|
};
|
|
43
28
|
|
|
44
29
|
const CompareDetails = ({
|
|
45
|
-
|
|
30
|
+
name,
|
|
31
|
+
onTourChange,
|
|
46
32
|
link,
|
|
47
33
|
sport,
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
34
|
+
duration,
|
|
35
|
+
timeframe,
|
|
36
|
+
start,
|
|
37
|
+
finish,
|
|
52
38
|
fitness,
|
|
53
39
|
location,
|
|
54
40
|
excerpt,
|
|
@@ -58,14 +44,29 @@ const CompareDetails = ({
|
|
|
58
44
|
peek_base,
|
|
59
45
|
strapiBranchName,
|
|
60
46
|
tours
|
|
61
|
-
}:
|
|
47
|
+
}: CompareDetailsTypes) => {
|
|
48
|
+
|
|
49
|
+
const time = PaddleTime({
|
|
50
|
+
start: start,
|
|
51
|
+
finish: finish,
|
|
52
|
+
duration: duration,
|
|
53
|
+
timeframe: timeframe,
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
// TODO: testing
|
|
57
|
+
console.log("time", time);
|
|
58
|
+
console.log(time.entry);
|
|
59
|
+
console.log(time.value);
|
|
60
|
+
|
|
62
61
|
return (
|
|
63
62
|
<section>
|
|
64
63
|
<select
|
|
65
64
|
name="tour1"
|
|
66
|
-
id={
|
|
65
|
+
id={name}
|
|
67
66
|
className="comparesheet_select"
|
|
68
67
|
aria-label="Select first tour or lesson"
|
|
68
|
+
value={name}
|
|
69
|
+
onChange={(e) => onTourChange(e.target.value)}
|
|
69
70
|
>
|
|
70
71
|
{tours.map((tour) => (
|
|
71
72
|
<option
|
|
@@ -76,21 +77,16 @@ const CompareDetails = ({
|
|
|
76
77
|
</option>
|
|
77
78
|
))}
|
|
78
79
|
</select>
|
|
80
|
+
|
|
79
81
|
<h2 className="kilimanjaro">
|
|
80
|
-
<a href={link}>{
|
|
82
|
+
<a href={link}>{name}</a>
|
|
81
83
|
</h2>
|
|
82
84
|
|
|
83
85
|
<h4 className="capitalize">{sport}</h4>
|
|
84
86
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
start={start}
|
|
89
|
-
finish={finish}
|
|
90
|
-
duration={duration}
|
|
91
|
-
timeframe={timeframe}
|
|
92
|
-
/>
|
|
93
|
-
</p> */}
|
|
87
|
+
<p>
|
|
88
|
+
{time.value}
|
|
89
|
+
</p>
|
|
94
90
|
|
|
95
91
|
<p className="capitalize">
|
|
96
92
|
{fitness} <span className="show-below__vulture"> fitness</span>
|
|
@@ -128,35 +124,75 @@ export const PaddleCompare = ({ tours, strapiBranchName, peek_base }: PaddleComp
|
|
|
128
124
|
let id1 = tours[0].id;
|
|
129
125
|
let id2 = tours[1].id;
|
|
130
126
|
|
|
131
|
-
let tour1 = tours[0].name;
|
|
132
|
-
let tour2 = tours[1].name;
|
|
133
|
-
let link1 = tours[0].slug;
|
|
134
|
-
let link2 = tours[1].slug;
|
|
135
|
-
let sport1 = tours[0].sport;
|
|
136
|
-
let sport2 = tours[1].sport;
|
|
137
|
-
let duration1 = tours[0].duration ||
|
|
138
|
-
let duration2 = tours[1].duration ||
|
|
139
|
-
let timeframe1 = tours[0].timeframe ||
|
|
140
|
-
let timeframe2 = tours[1].timeframe ||
|
|
141
|
-
let start1 = tours[0].start ||
|
|
142
|
-
let start2 = tours[1].start ||
|
|
143
|
-
let finish1 = tours[0].finish ||
|
|
144
|
-
let finish2 = tours[1].finish ||
|
|
145
|
-
let
|
|
146
|
-
let
|
|
147
|
-
let
|
|
148
|
-
let
|
|
149
|
-
let
|
|
150
|
-
let
|
|
151
|
-
let
|
|
152
|
-
let
|
|
153
|
-
let
|
|
154
|
-
let
|
|
127
|
+
let [tour1, setTour1] = useState(tours[0].name || "Tour 1");
|
|
128
|
+
let [tour2, setTour2] = useState(tours[1].name || "Tour 2");
|
|
129
|
+
let [link1, setLink1] = useState(tours[0].slug || "not set");
|
|
130
|
+
let [link2, setLink2] = useState(tours[1].slug || "not set");
|
|
131
|
+
let [sport1, setSport1] = useState(tours[0].sport || "not set");
|
|
132
|
+
let [sport2, setSport2] = useState(tours[1].sport || "not set");
|
|
133
|
+
let [duration1, setDuration1] = useState(tours[0].duration || 0);
|
|
134
|
+
let [duration2, setDuration2] = useState(tours[1].duration || 0);
|
|
135
|
+
let [timeframe1, setTimeframe1] = useState(tours[0].timeframe || "not set");
|
|
136
|
+
let [timeframe2, setTimeframe2] = useState(tours[1].timeframe || "not set");
|
|
137
|
+
let [start1, setStart1] = useState(tours[0].start || "not set");
|
|
138
|
+
let [start2, setStart2] = useState(tours[1].start || "not set");
|
|
139
|
+
let [finish1, setFinish1] = useState(tours[0].finish || "not set");
|
|
140
|
+
let [finish2, setFinish2] = useState(tours[1].finish || "not set");
|
|
141
|
+
let [location1, setLocation1] = useState(tours[0].location || strapiBranchName);
|
|
142
|
+
let [location2, setLocation2] = useState(tours[1].location || strapiBranchName);
|
|
143
|
+
let [excerpt1, setExcerpt1] = useState(tours[0].excerpt || "not set");
|
|
144
|
+
let [excerpt2, setExcerpt2] = useState(tours[1].excerpt || "not set");
|
|
145
|
+
let [minimum1, setMinimum1] = useState(tours[0].minimum || 0);
|
|
146
|
+
let [minimum2, setMinimum2] = useState(tours[1].minimum || 0);
|
|
147
|
+
let [price1, setPrice1] = useState(tours[0].price || 0);
|
|
148
|
+
let [price2, setPrice2] = useState(tours[1].price || 0);
|
|
149
|
+
let [peeks1, setPeeks1] = useState(tours[0].peek || "not set");
|
|
150
|
+
let [peeks2, setPeeks2] = useState(tours[1].peek || "not set");
|
|
151
|
+
let [fitness1, setFitness1] = useState(tours[0].fitness || "fitness");
|
|
152
|
+
let [fitness2, setFitness2] = useState(tours[1].fitness || "fitness");
|
|
153
|
+
|
|
154
|
+
const updateTour1 = (selectedName: string) => {
|
|
155
|
+
const selectedTour = tours.find((tour) => tour.name === selectedName);
|
|
156
|
+
if (!selectedTour) return;
|
|
157
|
+
|
|
158
|
+
setTour1(selectedTour.name);
|
|
159
|
+
setLink1(selectedTour.slug || "not set");
|
|
160
|
+
setSport1(selectedTour.sport || "not set");
|
|
161
|
+
setDuration1(selectedTour.duration || 0);
|
|
162
|
+
setTimeframe1(selectedTour.timeframe || "not set");
|
|
163
|
+
setStart1(selectedTour.start || "not set");
|
|
164
|
+
setFinish1(selectedTour.finish || "not set");
|
|
165
|
+
setLocation1(selectedTour.location || strapiBranchName);
|
|
166
|
+
setExcerpt1(selectedTour.excerpt || "not set");
|
|
167
|
+
setMinimum1(selectedTour.minimum || 0);
|
|
168
|
+
setPrice1(selectedTour.price || 0);
|
|
169
|
+
setPeeks1(selectedTour.peek || "not set");
|
|
170
|
+
setFitness1(selectedTour.fitness || "fitness");
|
|
171
|
+
};
|
|
172
|
+
|
|
173
|
+
const updateTour2 = (selectedName: string) => {
|
|
174
|
+
const selectedTour = tours.find((tour) => tour.name === selectedName);
|
|
175
|
+
if (!selectedTour) return;
|
|
176
|
+
|
|
177
|
+
setTour2(selectedTour.name);
|
|
178
|
+
setLink2(selectedTour.slug || "not set");
|
|
179
|
+
setSport2(selectedTour.sport || "not set");
|
|
180
|
+
setDuration2(selectedTour.duration || 0);
|
|
181
|
+
setTimeframe2(selectedTour.timeframe || "not set");
|
|
182
|
+
setStart2(selectedTour.start || "not set");
|
|
183
|
+
setFinish2(selectedTour.finish || "not set");
|
|
184
|
+
setLocation2(selectedTour.location || strapiBranchName);
|
|
185
|
+
setExcerpt2(selectedTour.excerpt || "not set");
|
|
186
|
+
setMinimum2(selectedTour.minimum || 0);
|
|
187
|
+
setPrice2(selectedTour.price || 0);
|
|
188
|
+
setPeeks2(selectedTour.peek || "not set");
|
|
189
|
+
setFitness2(selectedTour.fitness || "fitness");
|
|
190
|
+
};
|
|
155
191
|
|
|
156
192
|
return (
|
|
157
193
|
<>
|
|
158
194
|
<div className='comparesheet'>
|
|
159
|
-
<div className='
|
|
195
|
+
<div className='comparesheet_names'>
|
|
160
196
|
<div className="comparesheet__transparent">Compare</div>
|
|
161
197
|
<h3 className='kilimanjaro comparesheet_freeze'>
|
|
162
198
|
Tour or<br />
|
|
@@ -174,14 +210,15 @@ export const PaddleCompare = ({ tours, strapiBranchName, peek_base }: PaddleComp
|
|
|
174
210
|
|
|
175
211
|
<CompareDetails
|
|
176
212
|
key={id1}
|
|
177
|
-
|
|
213
|
+
name={tour1}
|
|
214
|
+
onTourChange={updateTour1}
|
|
178
215
|
link={link1}
|
|
179
216
|
sport={sport1}
|
|
180
217
|
duration={duration1}
|
|
181
218
|
timeframe={timeframe1}
|
|
182
219
|
start={start1}
|
|
183
220
|
finish={finish1}
|
|
184
|
-
location={
|
|
221
|
+
location={location1}
|
|
185
222
|
excerpt={excerpt1}
|
|
186
223
|
minimum={minimum1}
|
|
187
224
|
price={price1}
|
|
@@ -195,14 +232,15 @@ export const PaddleCompare = ({ tours, strapiBranchName, peek_base }: PaddleComp
|
|
|
195
232
|
/>
|
|
196
233
|
<CompareDetails
|
|
197
234
|
key={id2}
|
|
198
|
-
|
|
235
|
+
name={tour2}
|
|
236
|
+
onTourChange={updateTour2}
|
|
199
237
|
link={link2}
|
|
200
238
|
sport={sport2}
|
|
201
239
|
duration={duration2}
|
|
202
240
|
timeframe={timeframe2}
|
|
203
241
|
start={start2}
|
|
204
242
|
finish={finish2}
|
|
205
|
-
location={
|
|
243
|
+
location={location2}
|
|
206
244
|
excerpt={excerpt2}
|
|
207
245
|
minimum={minimum2}
|
|
208
246
|
price={price2}
|
package/src/paddle-ticket.tsx
CHANGED