@colisweb/rescript-toolkit 4.18.3 → 4.18.5

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@colisweb/rescript-toolkit",
3
- "version": "4.18.3",
3
+ "version": "4.18.5",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "clean": "rescript clean",
@@ -1,4 +1,5 @@
1
1
  open ReactIntl
2
+ open Browser
2
3
 
3
4
  type state = {
4
5
  timeslot: Toolkit__Decoders.DatetimeTimeSlot.t,
@@ -16,6 +17,24 @@ type queryParams = {
16
17
  selectedDay: Toolkit__Decoders.Option.t<Toolkit__Decoders.Date.t>,
17
18
  }
18
19
 
20
+ let updateSearchParams = (state: state) => {
21
+ let search = Location.location->Location.search->Js.String2.sliceToEnd(~from=1)
22
+ let searchParams = URLSearchParams.make(search)
23
+
24
+ searchParams->URLSearchParams.set(
25
+ "start",
26
+ state.timeslot.start->DateFns.formatWithPattern("yyyy-MM-dd"),
27
+ )
28
+ state.selectedDay->Option.forEach(selectedDay => {
29
+ searchParams->URLSearchParams.set(
30
+ "selectedDay",
31
+ selectedDay->DateFns.formatWithPattern("yyyy-MM-dd"),
32
+ )
33
+ })
34
+
35
+ RescriptReactRouter.replace("?" ++ searchParams->URLSearchParams.toString())
36
+ }
37
+
19
38
  @react.component
20
39
  let make = (~initialStart=?, ~selectedDay=?, ~children: state => React.element) => {
21
40
  let {isSm} = Toolkit__Hooks.useMediaQuery()
@@ -57,18 +76,7 @@ let make = (~initialStart=?, ~selectedDay=?, ~children: state => React.element)
57
76
  ),
58
77
  },
59
78
  ({state}) => {
60
- RescriptReactRouter.replace(
61
- Qs.stringifyWithParams(
62
- {
63
- start: Some(state.timeslot.start),
64
- selectedDay: state.selectedDay,
65
- }->queryParams_encode,
66
- {
67
- addQueryPrefix: true,
68
- serializeDate: d => d->DateFns.formatWithPattern("yyyy-MM-dd"),
69
- },
70
- ),
71
- )
79
+ updateSearchParams(state)
72
80
  None
73
81
  },
74
82
  )
@@ -84,18 +92,7 @@ let make = (~initialStart=?, ~selectedDay=?, ~children: state => React.element)
84
92
  ),
85
93
  },
86
94
  ({state}) => {
87
- RescriptReactRouter.replace(
88
- Qs.stringifyWithParams(
89
- {
90
- start: Some(state.timeslot.start),
91
- selectedDay: state.selectedDay,
92
- }->queryParams_encode,
93
- {
94
- addQueryPrefix: true,
95
- serializeDate: d => d->DateFns.formatWithPattern("yyyy-MM-dd"),
96
- },
97
- ),
98
- )
95
+ updateSearchParams(state)
99
96
  None
100
97
  },
101
98
  )
@@ -103,18 +100,7 @@ let make = (~initialStart=?, ~selectedDay=?, ~children: state => React.element)
103
100
  UpdateWithSideEffects(
104
101
  {...state, selectedDay: date},
105
102
  ({state}) => {
106
- RescriptReactRouter.replace(
107
- Qs.stringifyWithParams(
108
- {
109
- start: Some(state.timeslot.start),
110
- selectedDay: state.selectedDay,
111
- }->queryParams_encode,
112
- {
113
- addQueryPrefix: true,
114
- serializeDate: d => d->DateFns.formatWithPattern("yyyy-MM-dd"),
115
- },
116
- ),
117
- )
103
+ updateSearchParams(state)
118
104
  None
119
105
  },
120
106
  )
@@ -105,6 +105,18 @@ module URL = {
105
105
  external setSearchParams: (t, string, string) => unit = "set"
106
106
  }
107
107
 
108
+ module URLSearchParams = {
109
+ type t
110
+
111
+ @new
112
+ external make: string => t = "URLSearchParams"
113
+
114
+ @send
115
+ external set: (t, string, string) => unit = "set"
116
+ @send
117
+ external toString: (t, unit) => string = "toString"
118
+ }
119
+
108
120
  module History = {
109
121
  type t
110
122
 
@@ -78,6 +78,18 @@ module URL: {
78
78
  external setSearchParams: (t, string, string) => unit = "set"
79
79
  }
80
80
 
81
+ module URLSearchParams: {
82
+ type t
83
+
84
+ @new
85
+ external make: string => t = "URLSearchParams"
86
+
87
+ @send
88
+ external set: (t, string, string) => unit = "set"
89
+ @send
90
+ external toString: (t, unit) => string = "toString"
91
+ }
92
+
81
93
  module History: {
82
94
  type t
83
95