@colisweb/rescript-toolkit 3.7.2 → 3.7.3

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.
Binary file
package/locale/fr.json CHANGED
@@ -44,6 +44,11 @@
44
44
  "defaultMessage": "Jeudi",
45
45
  "message": "Jeudi"
46
46
  },
47
+ {
48
+ "id": "_435887be",
49
+ "defaultMessage": "Seulement",
50
+ "message": "Seulement"
51
+ },
47
52
  {
48
53
  "id": "_471931e7",
49
54
  "defaultMessage": "Le champ est requis.",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@colisweb/rescript-toolkit",
3
- "version": "3.7.2",
3
+ "version": "3.7.3",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "clean": "rescript clean",
@@ -1,4 +1,3 @@
1
-
2
1
  open Toolkit__Ui
3
2
 
4
3
  @module("@root/src/ui/Toolkit__Ui_Checkbox.resi?raw")
@@ -42,6 +41,12 @@ let make = () => {
42
41
  <h2> {"Checked"->React.string} </h2>
43
42
  <Checkbox checked=true name="test" value="test"> {"children"->React.string} </Checkbox>
44
43
  </div>
44
+ <div>
45
+ <h2> {"IntermediaryChecked"->React.string} </h2>
46
+ <Checkbox checked=true intermediaryChecked=true name="test" value="test">
47
+ {"children"->React.string}
48
+ </Checkbox>
49
+ </div>
45
50
  <div>
46
51
  <Checkbox checked=true name="test" value="test" size=#xs className="mb-4">
47
52
  {"xs"->React.string}
@@ -87,5 +87,26 @@ let make = () => {
87
87
  onChange={Js.log}
88
88
  />
89
89
  </div>
90
+ <div>
91
+ <h3 className="mb-2"> {"Select only button"->React.string} </h3>
92
+ <p className="mb-1">
93
+ {"Select only button is displayed when the displaySelectOnlyOption prop is at true"->React.string}
94
+ </p>
95
+ <Toolkit__Ui_MultiSelect
96
+ searchPlaceholder="Filter"
97
+ buttonClassName={"w-80"}
98
+ dropdownClassName="max-h-[300px] w-80 overflow-auto"
99
+ displaySelectOnlyOption=true
100
+ options={Array.makeBy(10, (i): Toolkit__Ui.MultiSelect.item => {
101
+ {
102
+ itemLabel: <p> {`label ${i->Int.toString}`->React.string} </p>,
103
+ label: `label ${i->Int.toString}`,
104
+ value: `label ${i->Int.toString}`,
105
+ }
106
+ })}
107
+ placeholder={<span> {"Select me"->React.string} </span>}
108
+ onChange={Js.log}
109
+ />
110
+ </div>
90
111
  </div>
91
112
  }
@@ -9,6 +9,7 @@ let make = (
9
9
  ~name=?,
10
10
  ~checked=?,
11
11
  ~defaultChecked=?,
12
+ ~intermediaryChecked=false,
12
13
  ~className="",
13
14
  ~size: size=#sm,
14
15
  ~checkboxClassName="",
@@ -70,15 +71,25 @@ let make = (
70
71
  checkboxClassName,
71
72
  isChecked ? checkedCheckboxClassName : "",
72
73
  ])}>
73
- <ReactIcons.FaCheck
74
- className="transform transition-all ease-in-out"
75
- size={switch size {
76
- | #xs => 14
77
- | #sm => 16
78
- | #md => 18
79
- | #lg => 24
80
- }}
81
- />
74
+ {intermediaryChecked
75
+ ? <ReactIcons.FaMinus
76
+ className="transform transition-all ease-in-out"
77
+ size={switch size {
78
+ | #xs => 14
79
+ | #sm => 16
80
+ | #md => 18
81
+ | #lg => 24
82
+ }}
83
+ />
84
+ : <ReactIcons.FaCheck
85
+ className="transform transition-all ease-in-out"
86
+ size={switch size {
87
+ | #xs => 14
88
+ | #sm => 16
89
+ | #md => 18
90
+ | #lg => 24
91
+ }}
92
+ />}
82
93
  </span>
83
94
  {children->Option.mapWithDefault(React.null, children => hideLabel ? React.null : children)}
84
95
  </label>
@@ -9,6 +9,7 @@ let make: (
9
9
  ~name: string=?,
10
10
  ~checked: bool=?,
11
11
  ~defaultChecked: bool=?,
12
+ ~intermediaryChecked: bool=?,
12
13
  ~className: string=?,
13
14
  ~size: size=?,
14
15
  ~checkboxClassName: string=?,
@@ -1,3 +1,5 @@
1
+ open ReactIntl
2
+
1
3
  type item = {
2
4
  itemLabel?: React.element,
3
5
  label: string,
@@ -19,6 +21,7 @@ let make = (
19
21
  ~onChange: array<item> => unit,
20
22
  ~disabled: bool=?,
21
23
  ~onClose: unit => unit=?,
24
+ ~displaySelectOnlyOption=false,
22
25
  ) => {
23
26
  let (selectedOptions, setSelectedOptions) = React.useState(() => defaultValue)
24
27
  let previousDefaultValue = Toolkit__Hooks.usePrevious(defaultValue)
@@ -60,9 +63,9 @@ let make = (
60
63
  position=#bottom
61
64
  label={switch selectedOptions {
62
65
  | [] =>
63
- <p className="flex flex-row gap-2 w-full items-center">
66
+ <p className="flex flex-row gap-2 w-full items-center relative">
64
67
  <span className="ml-1"> {placeholder} </span>
65
- <span className="absolute inset-y-0 right-0 flex items-center px-2">
68
+ <span className="absolute inset-y-0 right-0 flex items-center">
66
69
  <ReactIcons.FaAngleDown />
67
70
  </span>
68
71
  </p>
@@ -91,6 +94,7 @@ let make = (
91
94
  })
92
95
  }
93
96
  }}
97
+ value={search}
94
98
  onChange={event => {
95
99
  let target = event->ReactEvent.Form.currentTarget
96
100
  // normalize nfd -> replace by re remove split by commponents the accent letters and deletes the accent component only, leaving the un-accented letter
@@ -120,13 +124,13 @@ let make = (
120
124
  <div
121
125
  key={`multiselectoption-${label}-${value}`}
122
126
  className={cx([
123
- "flex flex-row items-center gap-2 pt-3 text-left",
127
+ "group flex flex-row items-center gap-2 pt-3 text-left relative",
124
128
  i > 0 ? "mt-3" : "",
125
129
  itemClassName,
126
130
  ])}>
127
131
  <Toolkit__Ui_Checkbox
128
132
  value
129
- className="w-full flex-shrink-0"
133
+ className="w-full flex-shrink-0 relative"
130
134
  checked={selectedOptions->Array.some(item =>
131
135
  item.label == label && item.value == value
132
136
  )}
@@ -152,6 +156,24 @@ let make = (
152
156
  }}>
153
157
  {item.itemLabel->Option.getWithDefault(label->React.string)}
154
158
  </Toolkit__Ui_Checkbox>
159
+ {displaySelectOnlyOption
160
+ ? <div className="group-hover:block hidden absolute right-0">
161
+ <Toolkit__Ui_Button
162
+ onClick={_ => {
163
+ setSelectedOptions(_ => {
164
+ let value = [item]
165
+
166
+ onChange(value)
167
+ value
168
+ })
169
+ }}
170
+ color=#neutralLight
171
+ size=#sm
172
+ className="hover:underline hover:!bg-neutral-200 hover:!border-neutral-200 hover:!text-primary-700">
173
+ <FormattedMessage defaultMessage="Seulement" />
174
+ </Toolkit__Ui_Button>
175
+ </div>
176
+ : React.null}
155
177
  </div>
156
178
  })
157
179
  ->React.array}
@@ -19,4 +19,5 @@ let make: (
19
19
  ~onChange: array<item> => unit,
20
20
  ~disabled: bool=?,
21
21
  ~onClose: unit => unit=?,
22
+ ~displaySelectOnlyOption:bool=?
22
23
  ) => React.element
@@ -6045,3 +6045,33 @@ module FaRegTrashAlt = {
6045
6045
  external make: (~size: int=?, ~color: string=?, ~className: string=?) => React.element =
6046
6046
  "FaRegTrashAlt"
6047
6047
  }
6048
+
6049
+ module FaMinus = {
6050
+ @module("react-icons/fa") @react.component
6051
+ external make: (~size: int=?, ~color: string=?, ~className: string=?) => React.element = "FaMinus"
6052
+ }
6053
+
6054
+ module FaBolt = {
6055
+ @module("react-icons/fa") @react.component
6056
+ external make: (~size: int=?, ~color: string=?, ~className: string=?) => React.element = "FaBolt"
6057
+ }
6058
+
6059
+ module FaLeaf = {
6060
+ @module("react-icons/fa") @react.component
6061
+ external make: (~size: int=?, ~color: string=?, ~className: string=?) => React.element = "FaLeaf"
6062
+ }
6063
+ module FaBicycle = {
6064
+ @module("react-icons/fa") @react.component
6065
+ external make: (~size: int=?, ~color: string=?, ~className: string=?) => React.element =
6066
+ "FaBicycle"
6067
+ }
6068
+
6069
+ module FaBoxes = {
6070
+ @module("react-icons/fa") @react.component
6071
+ external make: (~size: int=?, ~color: string=?, ~className: string=?) => React.element = "FaBoxes"
6072
+ }
6073
+ module FaListAlt = {
6074
+ @module("react-icons/fa") @react.component
6075
+ external make: (~size: int=?, ~color: string=?, ~className: string=?) => React.element =
6076
+ "FaListAlt"
6077
+ }