Skip to content

Commit b308ac1

Browse files
committed
fix: 🏷️ améliore le typage
1 parent bfa152d commit b308ac1

File tree

6 files changed

+25
-17
lines changed

6 files changed

+25
-17
lines changed

src/components/DsfrHeader/DsfrHeader.vue

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,12 @@ const props = withDefaults(defineProps<DsfrHeaderProps>(), {
3737
})
3838
3939
const emit = defineEmits<{
40-
(e: 'update:modelValue', payload: string): void
41-
(e: 'search', payload: string): void
42-
(e: 'languageSelect', payload: DsfrLanguageSelectorElement): void
40+
/** Émis lors du changement de la valeur de recherche */
41+
'update:modelValue': [payload: string | number | undefined]
42+
/** Émis lors de la validation de la recherche */
43+
search: [payload: string]
44+
/** Émis lors de la sélection d'une langue */
45+
languageSelect: [payload: DsfrLanguageSelectorElement]
4346
}>()
4447
4548
const slots = defineSlots<{
@@ -240,10 +243,10 @@ provide(registerNavigationLinkKey, () => {
240243
<DsfrSearchBar
241244
:id="searchbarId"
242245
:label="searchLabel"
243-
:model-value="modelValue"
246+
:model-value="String(modelValue || '')"
244247
:placeholder="placeholder"
245248
style="justify-content: flex-end"
246-
@update:model-value="emit('update:modelValue', $event)"
249+
@update:model-value="emit('update:modelValue', $event!)"
247250
@search="emit('search', $event)"
248251
/>
249252
</div>
@@ -308,7 +311,7 @@ provide(registerNavigationLinkKey, () => {
308311
>
309312
<DsfrSearchBar
310313
:searchbar-id="searchbarId"
311-
:model-value="modelValue"
314+
:model-value="String(modelValue || '')"
312315
:placeholder="placeholder"
313316
@update:model-value="emit('update:modelValue', $event)"
314317
@search="emit('search', $event)"

src/components/DsfrModal/DsfrModal.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ defineSlots<{
3333
* Slot pour le pied-de-page de la modale.
3434
* Sera dans `<div class="fr-modal__footer">`
3535
*/
36-
footer: () => any
36+
footer?: () => any
3737
}>()
3838
3939
const closeIfEscape = ($event: KeyboardEvent) => {

src/components/DsfrRange/DsfrRange.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ defineSlots<{
3131
/** Pour remplacer l’astérisque par autre chose pour un champ requis */
3232
'required-tip': (props: Record<string, never>) => any
3333
/** Pour les messages d’erreur ou de succès */
34-
messages: (props: Record<string, never>) => any
34+
messages?: (props: Record<string, never>) => any
3535
}>()
3636
const input = ref<HTMLInputElement>()
3737
const output = ref<HTMLSpanElement>()

src/components/DsfrTag/DsfrTag.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ const iconProps = computed(() => typeof props.icon === 'string'
4848
}"
4949
:aria-pressed="selectable ? selected : undefined"
5050
v-bind="{ ...linkProps, ...$attrs }"
51-
@click="!disabled && $emit('select', [value, selected])"
51+
@click="!disabled && selectable && $emit('select', [value, selected || false])"
5252
>
5353
<VIcon
5454
v-if="props.icon && !dsfrIcon"

src/components/DsfrTag/DsfrTags.types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ export type DsfrTagProps<T = string> = {
1010
iconOnly?: boolean
1111
} & ({
1212
selectable: true
13-
selected: boolean
13+
selected: boolean | undefined
1414
value: T
1515
} | {
1616
selectable?: false

src/components/DsfrTag/DsfrTags.vue

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ function onSelect ([value, selected]: [string, boolean]) {
1818
return
1919
}
2020
if (selected) {
21-
const newValue = new Set([...props.modelValue])
21+
const newValue = new Set(props.modelValue)
2222
newValue.delete(value)
2323
emit('update:modelValue', [...newValue])
2424
return
@@ -31,15 +31,20 @@ function onSelect ([value, selected]: [string, boolean]) {
3131
<template>
3232
<ul class="fr-tags-group">
3333
<li
34-
v-for="({ icon, label, ...tagProps }, i) in tags"
34+
v-for="(tag, i) in tags"
3535
:key="i"
3636
>
3737
<DsfrTag
38-
v-bind="tagProps"
39-
:icon="icon"
40-
:label="label"
41-
:selectable="tagProps.selectable"
42-
:selected="tagProps.selectable ? modelValue?.includes(tagProps.value as string) : undefined"
38+
:label="tag.label"
39+
:link="tag.link"
40+
:tag-name="tag.tagName"
41+
:icon="tag.icon"
42+
:disabled="tag.disabled"
43+
:small="tag.small"
44+
:icon-only="tag.iconOnly"
45+
:selectable="tag.selectable"
46+
:selected="tag.selectable ? modelValue?.includes(tag.value as string) : undefined"
47+
:value="tag.selectable ? tag.value : undefined"
4348
@select="onSelect($event as [string, boolean])"
4449
/>
4550
</li>

0 commit comments

Comments
 (0)