Skip to content

Commit acd5732

Browse files
committed
2 parents 467aaa8 + 8b12295 commit acd5732

File tree

5 files changed

+55
-12
lines changed

5 files changed

+55
-12
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@codegouvfr/react-dsfr",
3-
"version": "0.75.3",
3+
"version": "0.75.5",
44
"description": "French State Design System React integration library",
55
"repository": {
66
"type": "git",

src/Header/Header.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ export const Header = memo(
144144

145145
const { Link } = getLink();
146146

147-
const quickAccessNode = (
147+
const getQuickAccessNode = (suffix: string | null = null) => (
148148
<ul className={fr.cx("fr-btns-group")}>
149149
{quickAccessItems.map((quickAccessItem, i) => (
150150
<li key={i}>
@@ -157,7 +157,7 @@ export const Header = memo(
157157
<HeaderQuickAccessItem
158158
id={`${id}-quick-access-item-${generateValidHtmlId({
159159
"fallback": "",
160-
"text": quickAccessItem.text
160+
"text": `${quickAccessItem.text}${suffix ? `-${suffix}` : ""}`
161161
})}-${i}`}
162162
quickAccessItem={quickAccessItem}
163163
/>
@@ -312,7 +312,7 @@ export const Header = memo(
312312
classes.toolsLinks
313313
)}
314314
>
315-
{quickAccessNode}
315+
{getQuickAccessNode()}
316316
</div>
317317
)}
318318

@@ -401,7 +401,7 @@ export const Header = memo(
401401
classes.menuLinks
402402
)}
403403
>
404-
{quickAccessNode}
404+
{getQuickAccessNode("mobile")}
405405
</div>
406406
{navigation !== undefined &&
407407
(navigation instanceof Array ? (

src/Input.tsx

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ export const Input = memo(
7474
hintText,
7575
hideLabel,
7676
disabled = false,
77-
iconId: iconId_props,
77+
iconId,
7878
classes = {},
7979
style,
8080
state = "default",
@@ -161,10 +161,6 @@ export const Input = memo(
161161
/>
162162
);
163163

164-
const iconId =
165-
iconId_props ??
166-
(nativeInputProps?.type === "date" ? "ri-calendar-line" : undefined);
167-
168164
return iconId === undefined ? (
169165
nativeInputOrTextArea
170166
) : (

src/SelectNext.tsx

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,24 @@ export type SelectProps<Options extends SelectProps.Option[]> = {
3434
value?: Options[number]["value"];
3535
onChange?: (
3636
e: Omit<ChangeEvent<HTMLSelectElement>, "target" | "currentTarget"> & {
37-
target: Omit<ChangeEvent<HTMLSelectElement>, "value"> & {
37+
target: Omit<EventTarget & HTMLSelectElement, "value" | "selectedOptions"> & {
3838
value: Options[number]["value"];
39+
selectedOptions: HTMLCollectionOf<
40+
Omit<HTMLOptionElement, "value"> & {
41+
value: Options[number]["value"];
42+
}
43+
>;
3944
};
40-
currentTarget: Omit<ChangeEvent<HTMLSelectElement>, "value"> & {
45+
currentTarget: Omit<
46+
EventTarget & HTMLSelectElement,
47+
"value" | "selectedOptions"
48+
> & {
4149
value: Options[number]["value"];
50+
selectedOptions: HTMLCollectionOf<
51+
Omit<HTMLOptionElement, "value"> & {
52+
value: Options[number]["value"];
53+
}
54+
>;
4255
};
4356
}
4457
) => void;

test/types/Select.tsx

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,3 +262,37 @@ import { assert, type Equals } from "tsafe";
262262
}}
263263
/>;
264264
}
265+
266+
{
267+
const dogOrCatOptions = [
268+
{
269+
value: "dog",
270+
label: "Dog"
271+
},
272+
{
273+
value: "cat",
274+
label: "Cat"
275+
}
276+
] as const;
277+
278+
type DogOrCat = typeof dogOrCatOptions[number]["value"];
279+
type SelectTarget = Omit<EventTarget & HTMLSelectElement, "value" | "selectedOptions"> & {
280+
value: DogOrCat;
281+
selectedOptions: HTMLCollectionOf<Omit<HTMLOptionElement, "value"> & { value: DogOrCat }>;
282+
};
283+
<Select
284+
label="Dog or cat person?"
285+
options={[...dogOrCatOptions]}
286+
placeholder="Select an option"
287+
nativeSelectProps={{
288+
"onChange": event => {
289+
assert<Equals<typeof event["currentTarget"], SelectTarget>>();
290+
assert<Equals<typeof event["target"], SelectTarget>>();
291+
const selectedValues = Array.from(event.target.selectedOptions).map(
292+
option => option.value
293+
);
294+
assert<Equals<typeof selectedValues, DogOrCat[]>>;
295+
}
296+
}}
297+
/>;
298+
}

0 commit comments

Comments
 (0)