@colisweb/rescript-toolkit 4.26.1 → 4.26.2

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.26.1",
3
+ "version": "4.26.2",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "clean": "rescript clean",
@@ -40,7 +40,7 @@
40
40
  "case": "1.6.3",
41
41
  "click-outside-hook": "1.1.0",
42
42
  "copy-to-clipboard": "3.3.3",
43
- "date-fns": "2.30.0",
43
+ "date-fns": "3.2.0",
44
44
  "decco": "1.6.0",
45
45
  "dedent": "0.7.0",
46
46
  "lenses-ppx": "6.1.10",
@@ -358,6 +358,10 @@ module UnitMeasure = {
358
358
  let errorPrefix = "Time with unit"
359
359
  })
360
360
 
361
+ module S = Make({
362
+ include Config
363
+ let wrapValue = Config.wrapValue(#s)
364
+ })
361
365
  module Min = Make({
362
366
  include Config
363
367
  let wrapValue = Config.wrapValue(#min)
@@ -93,6 +93,13 @@ module Make = (Config: IntlConfig) => {
93
93
  @react.component
94
94
  let make = (~children) => {
95
95
  let intl = useIntl()
96
+ let locale = useCurrentLocale()
97
+
98
+ React.useLayoutEffect1(() => {
99
+ DateFns.setDefaultOptions({locale: locale->getDateFnsLocale})
100
+ None
101
+ }, [locale])
102
+
96
103
  <RawIntlProvider value=intl> children </RawIntlProvider>
97
104
  }
98
105
  }
@@ -115,11 +115,9 @@ let make = (~initialStart=?, ~selectedDay=?, ~children: state => React.element)
115
115
  () => {
116
116
  let defaultTimeslot: Toolkit__Decoders.DatetimeTimeSlot.t = {
117
117
  let today = Js.Date.make()
118
- let timeSlotStart = isSm ? DateFns.startOfWeek(today, {weekStartsOn: 1}) : today
118
+ let timeSlotStart = isSm ? DateFns.startOfWeek(today) : today
119
119
 
120
- let timeSlotEnd = isSm
121
- ? DateFns.endOfWeek(today, {weekStartsOn: 1})
122
- : today->DateFns.addDays(2)
120
+ let timeSlotEnd = isSm ? DateFns.endOfWeek(today) : today->DateFns.addDays(2)
123
121
  {
124
122
  start: timeSlotStart,
125
123
  end_: timeSlotEnd,
@@ -119,8 +119,7 @@ let make = (
119
119
 
120
120
  // we build the default displayed period around the selectedDay
121
121
  let defaultPeriod: period = {
122
- let periodStart =
123
- periodLength === 7 ? DateFns.startOfWeek(selectedDay, {weekStartsOn: 1}) : selectedDay
122
+ let periodStart = periodLength === 7 ? DateFns.startOfWeek(selectedDay) : selectedDay
124
123
 
125
124
  let periodEnd = periodStart->DateFns.addDays(periodLength - 1)
126
125
 
@@ -68,24 +68,33 @@ module Weight = {
68
68
  module Time = {
69
69
  include Unit({
70
70
  @deriving(jsConverter)
71
- type unitEnum = [#min | #h]
71
+ type unitEnum = [#min | #h | #s]
72
72
  })
73
73
 
74
- type t = [#min(float) | #h(float)]
74
+ type t = [#min(float) | #h(float) | #s(float)]
75
75
 
76
76
  let wrapValue = (unit, value) => {
77
77
  switch unit {
78
78
  | #min => #min(value)
79
79
  | #h => #h(value)
80
+ | #s => #s(value)
80
81
  }
81
82
  }
82
83
 
83
84
  let toValue = value =>
84
85
  switch value {
86
+ | #s(v)
85
87
  | #min(v)
86
88
  | #h(v) => v
87
89
  }
88
90
 
91
+ let toString = value =>
92
+ switch value {
93
+ | #min(v) => v->Float.toString ++ " min"
94
+ | #h(v) => v->Float.toString ++ " h"
95
+ | #s(v) => v->Float.toString ++ " s"
96
+ }
97
+
89
98
  let display = (value, ~digits as _=2, ()) => {
90
99
  let _initialDate = Js.Date.make()
91
100
 
@@ -101,23 +110,28 @@ module Time = {
101
110
  DateFns.intervalToDuration(
102
111
  ~interval={start: _initialDate, end_: _initialDate->DateFns.addHours(v)},
103
112
  )
113
+ | #s(v) =>
114
+ DateFns.intervalToDuration(
115
+ ~interval={start: _initialDate, end_: _initialDate->DateFns.addSeconds(v)},
116
+ )
104
117
  }
105
118
 
106
- switch (duration.hours, duration.minutes) {
107
- | (Some(h), Some(min)) if min->Int.toString->String.length === 1 =>
108
- `${h->Int.toString} : 0${min->Int.toString}`
109
- | (Some(h), Some(min)) => `${h->Int.toString} : ${min->Int.toString}`
110
- | (Some(h), _) => `${h->Int.toString} h`
111
- | (_, Some(min)) => `${min->Int.toString} min`
112
- | _ => ""
119
+ switch (
120
+ duration.years,
121
+ duration.months,
122
+ duration.days,
123
+ duration.hours,
124
+ duration.minutes,
125
+ duration.seconds,
126
+ ) {
127
+ | (None, None, None, Some(h), Some(min), None) =>
128
+ let min = min->Int.toString
129
+ `${h->Int.toString} : ${min->String.length === 1 ? "0" ++ min : min}`
130
+ | (None, None, None, Some(h), None, None) => `${h->Int.toString} h`
131
+ | (None, None, None, None, Some(min), None) => `${min->Int.toString} min`
132
+ | _ => DateFns.formatDuration(duration)
113
133
  }
114
134
  }
115
-
116
- let toString = value =>
117
- switch value {
118
- | #min(v) => v->Float.toString ++ " min"
119
- | #h(v) => v->Float.toString ++ " h"
120
- }
121
135
  }
122
136
 
123
137
  module Dimension = {
@@ -1,5 +1,3 @@
1
- type startOfWeekOptions = {weekStartsOn: int}
2
-
3
1
  type intervalObject = {
4
2
  start: Js.Date.t,
5
3
  @as("end")
@@ -15,27 +13,29 @@ type durationObject = {
15
13
  seconds: option<int>,
16
14
  }
17
15
 
16
+ type dateFnsLocale
17
+ @module("date-fns/locale")
18
+ external frLocale: dateFnsLocale = "fr"
19
+ @module("date-fns/locale")
20
+ external enLocale: dateFnsLocale = "enUS"
21
+
22
+ type options = {locale: dateFnsLocale}
23
+
24
+ @module("date-fns") external setDefaultOptions: options => unit = "setDefaultOptions"
25
+
18
26
  // intervals
19
27
 
20
28
  @module("date-fns")
21
29
  external intervalToDuration: (~interval: intervalObject) => durationObject = "intervalToDuration"
22
30
 
23
- type dateFnsLocale
24
- @module("date-fns/locale/fr")
25
- external frLocale: dateFnsLocale = "default"
26
- @module("date-fns/locale/en-US")
27
- external enLocale: dateFnsLocale = "default"
28
-
29
- type formatDistanceToNowOptions = {locale: dateFnsLocale}
30
31
  @module("date-fns")
31
- external distanceInWordsToNow: (Js.Date.t, formatDistanceToNowOptions) => string =
32
- "formatDistanceToNow"
32
+ external distanceInWordsToNow: Js.Date.t => string = "formatDistanceToNow"
33
33
 
34
34
  @module("date-fns/differenceInMinutes")
35
- external differenceInMinutes: (Js.Date.t, Js.Date.t) => float = "default"
35
+ external differenceInMinutes: (Js.Date.t, Js.Date.t) => float = "differenceInMinutes"
36
36
 
37
37
  @module("date-fns/differenceInDays")
38
- external differenceInDays: (Js.Date.t, Js.Date.t) => int = "default"
38
+ external differenceInDays: (Js.Date.t, Js.Date.t) => int = "differenceInDays"
39
39
 
40
40
  @module("date-fns")
41
41
  external areIntervalsOverlapping: (intervalObject, intervalObject, Js.t<'a>) => bool =
@@ -56,15 +56,18 @@ external parseISO: string => Js.Date.t = "parseISO"
56
56
 
57
57
  @module("date-fns") external formatWithPattern: (Js.Date.t, string) => string = "format"
58
58
 
59
- type formatWithPatternOptions = {
60
- locale?: dateFnsLocale,
61
- weekStartsOn?: int,
62
- firstWeekContainsDate?: int,
63
- }
59
+ type formatWithPatternOptions = {firstWeekContainsDate?: int}
60
+
64
61
  @module("date-fns")
65
62
  external formatWithPatternWithOptions: (Js.Date.t, string, formatWithPatternOptions) => string =
66
63
  "format"
67
64
 
65
+ @module("date-fns")
66
+ external lightFormat: (Js.Date.t, string) => string = "lightFormat"
67
+
68
+ @module("date-fns")
69
+ external formatDuration: durationObject => string = "formatDuration"
70
+
68
71
  // set
69
72
 
70
73
  @module("date-fns")
@@ -90,9 +93,9 @@ external startOfDay: Js.Date.t => Js.Date.t = "startOfDay"
90
93
  @module("date-fns")
91
94
  external endOfDay: Js.Date.t => Js.Date.t = "endOfDay"
92
95
  @module("date-fns")
93
- external startOfWeek: (Js.Date.t, startOfWeekOptions) => Js.Date.t = "startOfWeek"
96
+ external startOfWeek: Js.Date.t => Js.Date.t = "startOfWeek"
94
97
  @module("date-fns")
95
- external endOfWeek: (Js.Date.t, startOfWeekOptions) => Js.Date.t = "endOfWeek"
98
+ external endOfWeek: Js.Date.t => Js.Date.t = "endOfWeek"
96
99
  @module("date-fns")
97
100
  external addWeeks: (Js.Date.t, float) => Js.Date.t = "addWeeks"
98
101
  @module("date-fns")
@@ -137,7 +140,7 @@ external isFirstDayOfMonth: Js.Date.t => bool = "isFirstDayOfMonth"
137
140
  // other
138
141
 
139
142
  @module("date-fns")
140
- external getWeekNumber: (Js.Date.t, startOfWeekOptions) => int = "getWeek"
143
+ external getWeekNumber: Js.Date.t => int = "getWeek"
141
144
 
142
145
  @module("date-fns")
143
146
  external getTime: Js.Date.t => float = "getTime"
@@ -179,6 +182,3 @@ external isSunday: Js.Date.t => bool = "isSunday"
179
182
 
180
183
  @module("date-fns")
181
184
  external minutesToHours: int => int = "minutesToHours"
182
-
183
- @module("date-fns")
184
- external lightFormat: (Js.Date.t, string) => string = "lightFormat"
@@ -317,8 +317,8 @@ module RangeDayPickerInput = {
317
317
  to: now->DateFns.endOfDay,
318
318
  }
319
319
  let currentWeekRange: range = {
320
- from: now->DateFns.startOfWeek({weekStartsOn: 1}),
321
- to: now->DateFns.endOfWeek({weekStartsOn: 1}),
320
+ from: now->DateFns.startOfWeek,
321
+ to: now->DateFns.endOfWeek,
322
322
  }
323
323
  let currentMonthRange: range = {
324
324
  from: now->DateFns.startOfMonth,
@@ -497,7 +497,7 @@ module RangeDayPickerInput = {
497
497
  <p className="ml-4">
498
498
  <ReactIntl.FormattedMessage
499
499
  defaultMessage="Semaine {number}"
500
- values={"number": DateFns.getWeekNumber(Js.Date.make(), {weekStartsOn: 1})}
500
+ values={"number": DateFns.getWeekNumber(Js.Date.make())}
501
501
  />
502
502
  </p>
503
503
  </div>