Skip to content

Commit 7310253

Browse files
authored
Merge pull request #524 from dnum-mi/develop
Develop
2 parents 0652d4e + 51d23a6 commit 7310253

File tree

8 files changed

+2845
-6523
lines changed

8 files changed

+2845
-6523
lines changed

package-lock.json

Lines changed: 2760 additions & 6491 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -85,29 +85,29 @@
8585
"@rollup/plugin-replace": "^5.0.2",
8686
"@rollup/plugin-url": "^8.0.1",
8787
"@rushstack/eslint-patch": "^1.2.0",
88-
"@storybook/addon-actions": "^7.0.0-rc.8",
89-
"@storybook/addon-docs": "^7.0.0-rc.8",
90-
"@storybook/addon-essentials": "^7.0.0-rc.7",
91-
"@storybook/addon-interactions": "^7.0.0-rc.8",
92-
"@storybook/addon-links": "^7.0.0-rc.7",
88+
"@storybook/addon-actions": "^7.0.0-rc.10",
89+
"@storybook/addon-docs": "^7.0.0-rc.10",
90+
"@storybook/addon-essentials": "^7.0.0-rc.10",
91+
"@storybook/addon-interactions": "^7.0.0-rc.10",
92+
"@storybook/addon-links": "^7.0.0-rc.10",
9393
"@storybook/addon-postcss": "^2.0.0",
94-
"@storybook/addon-styling": "^0.3.2-next.0",
95-
"@storybook/client-api": "^7.0.0-rc.8",
96-
"@storybook/client-logger": "^7.0.0-rc.8",
97-
"@storybook/core-common": "^7.0.0-rc.8",
94+
"@storybook/addon-styling": "^0.3.2",
95+
"@storybook/client-api": "^7.0.0-rc.10",
96+
"@storybook/client-logger": "^7.0.0-rc.10",
97+
"@storybook/core-common": "^7.0.0-rc.10",
9898
"@storybook/jest": "^0.0.10",
9999
"@storybook/testing-library": "^0.0.13",
100-
"@storybook/vue3": "^7.0.0-rc.8",
101-
"@storybook/vue3-vite": "^7.0.0-rc.8",
100+
"@storybook/vue3": "^7.0.0-rc.10",
101+
"@storybook/vue3-vite": "^7.0.0-rc.10",
102102
"@testing-library/jest-dom": "^5.16.5",
103103
"@testing-library/user-event": "^14.4.3",
104104
"@testing-library/vue": "^7.0.0",
105105
"@types/jest": "^29.5.0",
106106
"@types/jsdom": "^21.1.1",
107-
"@types/node": "^18.15.10",
107+
"@types/node": "^18.15.11",
108108
"@types/vue": "^2.0.0",
109-
"@typescript-eslint/eslint-plugin": "^5.56.0",
110-
"@typescript-eslint/parser": "^5.56.0",
109+
"@typescript-eslint/eslint-plugin": "^5.57.0",
110+
"@typescript-eslint/parser": "^5.57.0",
111111
"@vitejs/plugin-vue": "^4.1.0",
112112
"@vitejs/plugin-vue-jsx": "^3.0.1",
113113
"@vue/compiler-sfc": "^3.2.47",
@@ -122,10 +122,10 @@
122122
"copyfiles": "^2.4.1",
123123
"core-js": "^3.29.1",
124124
"cross-env": "^7.0.3",
125-
"cypress": "^12.8.1",
125+
"cypress": "^12.9.0",
126126
"cypress-plugin-tab": "^1.0.5",
127-
"eslint": "^8.36.0",
128-
"eslint-plugin-cypress": "^2.12.1",
127+
"eslint": "^8.37.0",
128+
"eslint-plugin-cypress": "^2.13.2",
129129
"eslint-plugin-import": "^2.27.5",
130130
"eslint-plugin-node": "^11.1.0",
131131
"eslint-plugin-promise": "^6.1.1",
@@ -143,7 +143,7 @@
143143
"postcss-flexbugs-fixes": "^5.0.2",
144144
"postcss-import": "^15.1.0",
145145
"postcss-nested": "^6.0.1",
146-
"postcss-preset-env": "^8.1.0",
146+
"postcss-preset-env": "^8.2.0",
147147
"postcss-url": "^10.1.3",
148148
"react": "^18.2.0",
149149
"react-dom": "^18.2.0",
@@ -157,11 +157,11 @@
157157
"rollup-plugin-vue": "^6.0.0",
158158
"semantic-release": "^20.1.3",
159159
"start-server-and-test": "^2.0.0",
160-
"storybook": "^7.0.0-rc.8",
160+
"storybook": "^7.0.0-rc.10",
161161
"tsd-jsdoc": "^2.5.0",
162162
"typescript": "^5.0.2",
163163
"vite": "~4.1.0",
164-
"vitest": "^0.29.7",
164+
"vitest": "^0.29.8",
165165
"vue-loader": "^17.0.1",
166166
"vue-router": "^4.1.6",
167167
"vue-router-mock": "^0.2.0",

src/components/DsfrNavigation/DsfrNavigationMenuLink.spec.js

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,10 @@ const router = createRouter({
1515
})
1616

1717
describe('DsfrNavigationMenuLink', () => {
18-
it('should render a navigation menu link (internal)', async () => {
18+
it('should render a navigation menu link (internal) with icon', async () => {
1919
const to = '/'
2020
const text = 'Texte du lien'
21+
const icon = 'ri-home-2-line'
2122

2223
const { getByTestId } = render(DsfrNavigationMenuLink, {
2324
global: {
@@ -29,13 +30,37 @@ describe('DsfrNavigationMenuLink', () => {
2930
props: {
3031
to,
3132
text,
33+
icon,
3234
},
3335
})
3436

3537
await router.isReady()
3638

3739
const link = getByTestId('nav-router-link')
38-
expect(link.innerHTML).toBe(text)
40+
expect(link.innerHTML).toBe('<svg class="ov-icon" style="font-size: 1.2em;" aria-hidden="true" width="0" height="0" viewBox="0 0 0 0" fill="currentColor"></svg> ' + text)
41+
expect(link).toHaveAttribute('href', to)
42+
})
43+
it('should render a navigation menu link (internal) without icon', async () => {
44+
const to = '/'
45+
const text = 'Texte du lien'
46+
47+
const { getByTestId } = render(DsfrNavigationMenuLink, {
48+
global: {
49+
plugins: [router],
50+
components: {
51+
VIcon,
52+
},
53+
},
54+
props: {
55+
to,
56+
text,
57+
},
58+
})
59+
60+
await router.isReady()
61+
62+
const link = getByTestId('nav-router-link')
63+
expect(link.innerHTML).toBe('<!--v-if--> ' + text)
3964
expect(link).toHaveAttribute('href', to)
4065
})
4166
})

src/components/DsfrNavigation/DsfrNavigationMenuLink.stories.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@ import DsfrNavigation from './DsfrNavigation.vue'
33

44
import { setup } from '@storybook/vue3'
55

6+
import { addIcons } from 'oh-vue-icons'
7+
import { RiHome2Line } from 'oh-vue-icons/icons/ri/index.js'
8+
9+
addIcons(RiHome2Line)
10+
611
const RouterLink = {
712
name: 'RouterLink',
813
props: {
@@ -33,6 +38,10 @@ export default {
3338
control: 'text',
3439
description: '(Optionnel) Valeur de l’attribut `id` de la balise `<a>` du lien de navigation. Aura une valeur pseudo-aléatoire par défaut',
3540
},
41+
icon: {
42+
control: 'text',
43+
description: '(Optionnel) **Nom de l’icône** (tel que sur le site [RemixIcon](https://remixicon.com), exemple: `"ri-search-line"`) à afficher à côté du texte du bouton.\n\n Par défaut, l’icône est à gauche',
44+
},
3645
'toggle-id': {
3746
description: 'Événement émis lors du click sur le lien, avec en argument l’id de l’élément cliqué',
3847
},
@@ -54,14 +63,15 @@ export const NavigationLienMenu = (args) => ({
5463
<DsfrNavigationMenuLink
5564
:to="to"
5665
:text="text"
66+
:icon="icon"
5767
@click.prevent.stop=""
5868
/>
5969
</DsfrNavigation>
6070
`,
6171

62-
6372
})
6473
NavigationLienMenu.args = {
6574
to: '#test-navigation-menu-link',
6675
text: 'Lien de menu',
76+
icon: 'ri-home-2-line',
6777
}

src/components/DsfrNavigation/DsfrNavigationMenuLink.vue

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11
<script>
22
import { defineComponent } from 'vue'
3+
import { OhVueIcon as VIcon } from 'oh-vue-icons'
34
import { getRandomId } from '../../utils/random-utils.js'
45
56
export default defineComponent({
67
name: 'DsfrNavigationMenuLink',
78
9+
components: {
10+
VIcon,
11+
},
12+
813
props: {
914
id: {
1015
type: String,
@@ -18,6 +23,11 @@ export default defineComponent({
1823
type: String,
1924
required: true,
2025
},
26+
icon: {
27+
type: String,
28+
required: false,
29+
default: undefined,
30+
},
2131
},
2232
2333
emits: ['toggle-id'],
@@ -47,6 +57,10 @@ export default defineComponent({
4757
:to="to"
4858
@click="$emit('toggle-id', id)"
4959
>
60+
<VIcon
61+
v-if="icon"
62+
:name="icon"
63+
/>
5064
{{ text }}
5165
</RouterLink>
5266
</template>

src/components/DsfrTable/DsfrTableCell.stories.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
1+
import { setup } from '@storybook/vue3'
2+
import DsfrTag from '../DsfrTag/DsfrTag.vue'
13
import DsfrTable from './DsfrTable.vue'
24
import DsfrTableHeaders from './DsfrTableHeaders.vue'
35
import DsfrTableCell from './DsfrTableCell.vue'
46

7+
setup(app => {
8+
app.component('DsfrTag', DsfrTag) // Composant utilisé dans les stories CelluleDeTableauAvecComposant et CelluleDeTableauComplexe
9+
})
10+
511
export default {
612
component: DsfrTableCell,
713
title: 'Composants/Tableau/Cellule de tableau - DsfrTableCell',
@@ -16,7 +22,7 @@ export default {
1622
description: 'Contenu du champ. Peut être une string ou bien un objet',
1723
},
1824
onClickCell: {
19-
action: 'Clicked on cell',
25+
action: 'Clic sur l’étiquette !',
2026
description: 'Fonction pour montrer le clic sur une cellule (Ici seulement pour "Cellule de tableau complexe")',
2127
},
2228
},
@@ -70,7 +76,6 @@ export const CelluleDeTableauSimple = (args) => ({
7076
</DsfrTable>
7177
`,
7278

73-
7479
})
7580
CelluleDeTableauSimple.args = {
7681
title,

src/components/DsfrTable/DsfrTableCell.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ export default defineComponent({
1919
isObject () {
2020
return typeof this.field === 'object' && this.field !== null
2121
},
22-
isComponent () {
22+
component () {
2323
return (this.isObject && this.field.component) ? this.field.component : false
2424
},
2525
isString () {
@@ -32,8 +32,8 @@ export default defineComponent({
3232
<template>
3333
<td v-bind="cellAttrs">
3434
<component
35-
:is="isComponent"
36-
v-if="isComponent"
35+
:is="component"
36+
v-if="component"
3737
v-bind="field"
3838
>
3939
{{ field.text }}

src/stories/docs/02-guide.stories.mdx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ import {
130130
} from '@gouvminint/vue-dsfr' // Imports nommés de la bibliothèque
131131

132132
import '@gouvfr/dsfr/dist/dsfr.min.css' // Import des styles du DSFR
133-
import '@gouvminint/vue-dsfr/styles' // Import des styles propre à la bibliothèque VueDSFR
133+
import '@gouvminint/vue-dsfr/styles' // Import des styles propres à la bibliothèque VueDSFR
134134

135135
const app = createApp(App)
136136
.component('DsfrHeader', DsfrHeader) // Enregistrement global du composant DsfrHeader
@@ -160,7 +160,7 @@ Dans le point d’entrée de votre application Vue (souvent `main.js` ou `main.t
160160

161161
```javascript
162162
import '@gouvfr/dsfr/dist/core/core.main.min.css' // Le CSS minimal du DSFR
163-
import '@gouvfr/dsfr/dist/component/component.main.min.css' // Styles de tous les composants
163+
import '@gouvfr/dsfr/dist/component/component.main.min.css' // Styles de tous les composants du DSFR
164164
import '@gouvfr/dsfr/dist/utility/utility.main.min.css' // Classes utilitaires : les composants de VueDsfr en ont besoin
165165
import '@gouvminint/vue-dsfr/styles' // Les styles propres aux composants de VueDsfr
166166

@@ -176,11 +176,10 @@ Dans `nuxt.config.js` :
176176
export default defineNuxtConfig({
177177
css: [
178178
'@gouvfr/dsfr/dist/core/core.main.min.css', // Le CSS du DSFR
179+
'@gouvfr/dsfr/dist/component/component.main.min.css' // Styles de tous les composants du DSFR
179180
'@gouvfr/dsfr/dist/utility/utility.main.min.css' // Classes utilitaires : les composants de VueDsfr en ont besoin
180181
'@gouvminint/vue-dsfr/styles', // Les styles propres aux composants de VueDsfr
181182

182-
'@gouvfr/dsfr/dist/component/componant.main.min.css' // Styles des liens
183-
'@gouvfr/dsfr/dist/component/form/form.min.css' // Facultatif : Si l’application utilise des éléments de formulaire
184183
'@gouvfr/dsfr/dist/scheme/scheme.min.css' // Facultatif : Si les thèmes sont utilisés (thème sombre, thème en bernes)
185184
'@gouvfr/dsfr/dist/utility/icons/icons.min.css', // Facultatif : Si des icônes sont utilisées avec les classes "fr-icon-..."
186185
],

0 commit comments

Comments
 (0)