Skip to content

Commit f4cfee3

Browse files
authored
Merge pull request #304 from dnum-mi/develop
RC8
2 parents b706130 + ad9c715 commit f4cfee3

File tree

118 files changed

+1026
-1086
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

118 files changed

+1026
-1086
lines changed

.storybook/preview.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import '../src/main.css'
88

99
import './theme.css'
1010

11-
import VIcon from '../src/icons.js'
11+
import {OhVueIcon as VIcon} from 'oh-vue-icons'
1212

1313
export const parameters = {
1414
actions: { argTypesRegex: "^on[A-Z].*" },

cypress/plugins/index.js

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,6 @@
1212
// For component testing 1/2
1313
const { startDevServer } = require('@cypress/vite-dev-server')
1414

15-
module.exports = (on, config) => {
16-
on('dev-server:start', options =>
17-
startDevServer({
18-
options,
19-
}),
20-
)
21-
22-
return config
23-
}
2415
module.exports = (on, config) => {
2516
// on('file:preprocessor', webpack({
2617
// webpackOptions: require('@vue/cli-service/webpack.config'),

package-lock.json

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

package.json

Lines changed: 46 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,37 @@
1414
"types": "./types",
1515
"license": "MIT",
1616
"main": "./dist/vue-dsfr.umd.js",
17-
"module": "./dist/vue-dsfr.esm.js",
17+
"module": "./dist/vue-dsfr.mjs",
18+
"exports": {
19+
".": {
20+
"require": "./dist/vue-dsfr.umd.js",
21+
"import": "./dist/vue-dsfr.mjs"
22+
},
23+
"./dist/vue-dsfr.css": {
24+
"require": "./dist/vue-dsfr.css",
25+
"import": "./dist/vue-dsfr.css"
26+
},
27+
"./dist/vue-dsfr-fonts.css": {
28+
"require": "./dist/vue-dsfr-fonts.css",
29+
"import": "./dist/vue-dsfr-fonts.css"
30+
},
31+
"./dist/vue-dsfr-fonts-essentials.css": {
32+
"require": "./dist/vue-dsfr-fonts-essentials.css",
33+
"import": "./dist/vue-dsfr-fonts-essentials.css"
34+
},
35+
"./styles": {
36+
"require": "./dist/vue-dsfr.css",
37+
"import": "./dist/vue-dsfr.css"
38+
},
39+
"./fonts": {
40+
"require": "./dist/vue-dsfr-fonts.css",
41+
"import": "./dist/vue-dsfr-fonts.css"
42+
},
43+
"./fonts-essentials": {
44+
"require": "./dist/vue-dsfr-fonts-essentials.css",
45+
"import": "./dist/vue-dsfr-fonts-essentials.css"
46+
}
47+
},
1848
"publishConfig": {
1949
"@laruiss:registry": "https://registry.npmjs.com",
2050
"access": "public"
@@ -30,7 +60,7 @@
3060
"build": "run-p build:css build:js",
3161
"postbuild": "copyfiles types/composable.d.ts dist/composable.d.ts",
3262
"build:css": "node build-css.mjs",
33-
"build:js": "cross-env NODE_ENV=production rollup --config rollup.config.js",
63+
"build:js": "cross-env NODE_ENV=production rollup -c",
3464
"demo-app": "vite",
3565
"vitest": "vitest",
3666
"coverage": "vitest run --coverage",
@@ -59,7 +89,7 @@
5989
"vue": "^3.2.31"
6090
},
6191
"devDependencies": {
62-
"@babel/core": "^7.17.5",
92+
"@babel/core": "^7.17.8",
6393
"@babel/eslint-parser": "^7.17.0",
6494
"@babel/plugin-syntax-jsx": "^7.16.7",
6595
"@babel/preset-env": "^7.16.11",
@@ -82,15 +112,15 @@
82112
"@storybook/core-common": "^6.4.19",
83113
"@storybook/manager-webpack5": "^6.4.19",
84114
"@storybook/vue3": "^6.4.19",
85-
"@testing-library/jest-dom": "^5.16.2",
115+
"@testing-library/jest-dom": "^5.16.3",
86116
"@testing-library/user-event": "^13.5.0",
87117
"@testing-library/vue": "^6.5.1",
88118
"@types/jest": "^27.4.1",
89119
"@types/jsdom": "^16.2.14",
90-
"@types/node": "^17.0.21",
120+
"@types/node": "^17.0.23",
91121
"@types/vue": "^2.0.0",
92-
"@typescript-eslint/eslint-plugin": "^5.15.0",
93-
"@typescript-eslint/parser": "^5.15.0",
122+
"@typescript-eslint/eslint-plugin": "^5.16.0",
123+
"@typescript-eslint/parser": "^5.16.0",
94124
"@vitejs/plugin-vue": "^2.2.4",
95125
"@vitejs/plugin-vue-jsx": "^1.3.8",
96126
"@vue/compiler-sfc": "^3.2.31",
@@ -116,17 +146,17 @@
116146
"eslint-plugin-storybook": "^0.5.7",
117147
"eslint-plugin-vue": "^8.5.0",
118148
"globby": "^13.1.1",
119-
"inquirer": "^8.2.1",
149+
"inquirer": "^8.2.2",
120150
"jsdom": "^19.0.0",
121-
"lint-staged": "^12.3.6",
151+
"lint-staged": "^12.3.7",
122152
"mkdirp": "^1.0.4",
123153
"npm-run-all": "^4.1.5",
124154
"postcss": "^8.4.12",
125155
"postcss-csso": "^6.0.0",
126156
"postcss-flexbugs-fixes": "^5.0.2",
127-
"postcss-import": "^14.0.2",
157+
"postcss-import": "^14.1.0",
128158
"postcss-nested": "^5.0.6",
129-
"postcss-preset-env": "^7.4.2",
159+
"postcss-preset-env": "^7.4.3",
130160
"postcss-url": "^10.1.3",
131161
"rimraf": "^3.0.2",
132162
"rollup-plugin-css-only": "^3.1.0",
@@ -137,19 +167,20 @@
137167
"rollup-plugin-vue": "^6.0.0",
138168
"semantic-release": "^19.0.2",
139169
"start-server-and-test": "^1.14.0",
140-
"storybook-builder-vite": "^0.1.20",
170+
"storybook-builder-vite": "^0.1.21",
141171
"tsd-jsdoc": "^2.5.0",
142-
"typescript": "^4.6.2",
172+
"typescript": "^4.6.3",
143173
"vite": "^2.8.6",
144-
"vitest": "^0.6.3",
174+
"vitest": "^0.7.11",
145175
"vue-loader": "^17.0.0",
146176
"vue-router": "^4.0.14",
147177
"vue-router-mock": "^0.1.7",
148-
"vue-tsc": "^0.32.1",
178+
"vue-tsc": "^0.33.9",
149179
"vue-typegen": "^0.2.0",
150180
"yorkie": "^2.0.0"
151181
},
152182
"peerDependencies": {
183+
"oh-vue-icons": "^1.0.0-rc2",
153184
"vue-router": "^4.0.14"
154185
},
155186
"optionalDependencies": {

rollup.config.js

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { defineConfig } from 'rollup'
12
import vue from 'rollup-plugin-vue'
23

34
import { nodeResolve } from '@rollup/plugin-node-resolve'
@@ -23,15 +24,16 @@ const postcssPlugins = [
2324
'focus-visible-pseudo-class': false,
2425
},
2526
}),
26-
csso,
27+
csso(),
2728
]
2829

2930
const baseOutput = {
3031
globals: {
3132
vue: 'vue',
33+
'oh-vue-icons': 'OhVueIcon',
34+
'oh-vue-icons/icons': 'oh-vue-icons/icons',
35+
'oh-vue-icons/icons/ri/index.js': 'oh-vue-icons/icons/ri/index.js',
3236
'vue-router': 'vue-router',
33-
'oh-vue-icons/dist/v3/icon.es': 'VIcon',
34-
'oh-vue-icons/icons': 'icons',
3537
'focus-trap': 'focus-trap',
3638
'focus-trap-vue': 'focus-trap-vue',
3739
},
@@ -42,8 +44,9 @@ const baseConfig = {
4244
external: [
4345
'vue',
4446
'vue-router',
45-
'oh-vue-icons/dist/v3/icon.es',
47+
'oh-vue-icons',
4648
'oh-vue-icons/icons',
49+
'oh-vue-icons/icons/ri/index.js',
4750
'focus-trap',
4851
'focus-trap-vue',
4952
],
@@ -62,13 +65,13 @@ const baseConfig = {
6265
],
6366
}
6467

65-
export default [
68+
export default defineConfig([
6669
// ESM build to be used with webpack/rollup.
6770
{
6871
...baseConfig,
6972
output: {
7073
format: 'esm',
71-
file: 'dist/vue-dsfr.esm.js',
74+
file: 'dist/vue-dsfr.mjs',
7275
globals: baseOutput.globals,
7376
name: 'VueDsfr',
7477
},
@@ -113,4 +116,4 @@ export default [
113116
name: 'VueDsfr',
114117
},
115118
},
116-
]
119+
])

src/components/DsfrAccordion/DsfrAccordion.e2e.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { mount } from '@cypress/vue'
22
import DsfrAccordion from './DsfrAccordion.vue'
33
import DsfrAccordionsGroup from './DsfrAccordionsGroup.vue'
4-
import VIcon from '../../icons.js'
4+
import { OhVueIcon as VIcon } from 'oh-vue-icons'
55

66
import '../../main.css'
77

src/components/DsfrAccordion/DsfrAccordion.spec.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
import { fireEvent, render } from '@testing-library/vue'
2-
import VIcon from '../../icons.js'
2+
import { OhVueIcon as VIcon } from 'oh-vue-icons'
33
// import '@gouvfr/dsfr/dist/core/core.module.js'
44

55
import DsfrAccordion from './DsfrAccordion.vue'
66

7-
87
describe('DsfrAccordion', () => {
98
it('should render a simple accordion', async () => {
109
const title = 'Intitulé de l’accordéon'

src/components/DsfrAccordion/DsfrAccordion.stories.js

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,21 @@ export default {
99
control: 'boolean',
1010
description: 'Permet de voir le composant dans les deux **thèmes** : **clair** (`false`, défaut) et **sombre** (`true`).\n\n*N.B. : Ne fait pas partie du composant.*',
1111
},
12+
id: {
13+
control: 'text',
14+
description: '(optionnel) Valeur de l’attribut `id` de l’accordéon. Par défaut, un id pseudo-aléatoire sera donné.',
15+
},
1216
title: {
1317
control: 'text',
1418
description: 'Intitulé de l’accordéon',
1519
},
20+
expand: {
21+
description: 'Événement déclenché au clic sur le titre de l’accordéon et qui renvoie l’`id` de l’accordéon correspondant.',
22+
},
23+
expandedId: {
24+
control: 'text',
25+
description: 'Id de l’accordéon déplié',
26+
},
1627
},
1728
}
1829

@@ -122,3 +133,50 @@ AccordeonDansUnAccordeon.args = {
122133
title: 'Un titre d’accordéon',
123134
titleSub: 'Accordéon dans l’accordéon',
124135
}
136+
137+
export const AccordeonTitreCustom = (args) => ({
138+
components: {
139+
DsfrAccordion,
140+
DsfrAccordionsGroup
141+
},
142+
143+
data () {
144+
return {
145+
...args,
146+
title1: args.title1,
147+
title2: args.title2,
148+
expandedId: undefined,
149+
}
150+
},
151+
152+
template: `
153+
<DsfrAccordionsGroup>
154+
<li>
155+
<DsfrAccordion
156+
:expanded-id="expandedId"
157+
@expand="expandedId = $event"
158+
>
159+
<template #title><h1>{{title1}}</h1></template>
160+
</DsfrAccordion>
161+
</li>
162+
<li>
163+
<DsfrAccordion
164+
:title="title2"
165+
:expanded-id="expandedId"
166+
@expand="expandedId = $event"
167+
>
168+
</DsfrAccordion>
169+
</li>
170+
</DsfrAccordionsGroup>
171+
`,
172+
173+
mounted () {
174+
document.body.parentElement.setAttribute('data-fr-theme', this.dark ? 'dark' : 'light')
175+
},
176+
177+
})
178+
AccordeonTitreCustom.args = {
179+
dark: false,
180+
title1: 'Un titre d’accordéon customisé',
181+
title2: 'Un autre titre d’accordéon'
182+
}

src/components/DsfrAccordion/DsfrAccordion.vue

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ export default defineComponent({
2424
default: 'Sans intitulé',
2525
},
2626
},
27-
2827
emits: ['expand'],
2928
3029
computed: {
@@ -51,20 +50,24 @@ export default defineComponent({
5150
:aria-controls="id"
5251
@click="toggleExpanded()"
5352
>
54-
<span>{{ title }}</span>
53+
<!-- @slot Slot pour le contenu personnalisé du titre de l’accordéon. Une props du même nom est utilisable pour du texte simple sans mise en forme. -->
54+
<slot name="title">
55+
<span>{{ title }}</span>
56+
</slot>
5557
</button>
5658
</h3>
5759
<div
5860
:id="id"
5961
class="fr-collapse"
6062
:class="{ 'fr-collapse--expanded': expanded }"
6163
>
64+
<!-- @slot Slot par défaut pour le contenu de l’accordéon: sera dans `<div class="fr-collapse">` -->
6265
<slot />
6366
</div>
6467
</section>
6568
</template>
6669

67-
<style src="@gouvfr/dsfr/dist/component/accordion/accordion.main.css" />
70+
<style src="@gouvfr/dsfr/dist/component/accordion/accordion.main.min.css" />
6871

6972
<style scoped>
7073
.fr-collapse--expanded {

0 commit comments

Comments
 (0)