Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
674c203
feat(portal-config): hover effects primitive and button hover color i…
BatLeDev Jul 7, 2026
90e9403
feat(portal-config): portal defaults for hover effects and text links…
BatLeDev Jul 7, 2026
a18e9fe
feat(page-element): hover effects overrides on cards, box, topics and…
BatLeDev Jul 7, 2026
116955d
feat(portal): hover config resolution utility
BatLeDev Jul 7, 2026
e3326ae
feat(portal): hover effects styles and composable
BatLeDev Jul 7, 2026
02bf715
feat(page-element): apply configured hover effects on catalog cards
BatLeDev Jul 7, 2026
c479107
feat(page-element): apply hover effects on box, topics and linked titles
BatLeDev Jul 7, 2026
54a342f
feat(portal): hover color on navigation, menu and footer buttons
BatLeDev Jul 7, 2026
db163be
feat(portal): configurable text links underline and color
BatLeDev Jul 7, 2026
a378cbf
fix(portal): fall back to raw theme color when text variant is absent…
BatLeDev Jul 7, 2026
24446f3
feat(ui): text links style preview in portal configuration
BatLeDev Jul 7, 2026
fb6e035
fix(ui): resolve hover auto-imports for shared portal components in m…
BatLeDev Jul 7, 2026
38d16f8
test(portal): e2e coverage for hover effects and links style
BatLeDev Jul 7, 2026
3ff6622
fix(portal): wire contact button hover color and correct topics hover…
BatLeDev Jul 7, 2026
bffb832
fix(ui): declare hover helpers locally so template auto-imports resol…
BatLeDev Jul 7, 2026
263ada4
fix(ui): include portal/app/utils in the manager image build
BatLeDev Jul 8, 2026
cefdfa5
fix(ui): load hover styles in the manager so config previews render l…
BatLeDev Jul 8, 2026
53b56cb
fix(portal-config): rename nav config section to 'Rendu des boutons d…
BatLeDev Jul 8, 2026
cc82b01
fix(portal-config): keep hover effects and hover color on one line
BatLeDev Jul 8, 2026
38c6224
fix(portal): fall back to portal default hover color on buttons
BatLeDev Jul 8, 2026
cb8657e
feat(portal-config): grow hover effect, button hover effects, links u…
BatLeDev Jul 8, 2026
51af6d2
feat(page-element): title line grow option, drop hover underline from…
BatLeDev Jul 8, 2026
9f37bea
feat(portal): hover resolution and Vuetify props helpers for hover v2
BatLeDev Jul 8, 2026
b0d1cf6
feat(portal): hover composables returning dynamic Vuetify props
BatLeDev Jul 8, 2026
aeeaa8d
feat(page-element): catalog cards hover via v-hover and dynamic props
BatLeDev Jul 8, 2026
475fff6
feat(page-element): box hover via v-hover and dynamic props
BatLeDev Jul 8, 2026
f7dada3
feat(page-element): topics chips hover via v-hover and dynamic props
BatLeDev Jul 8, 2026
a8cfe84
feat(page-element): title line grows on link hover
BatLeDev Jul 9, 2026
46d7901
feat(portal): navigation buttons hover effects via v-hover
BatLeDev Jul 9, 2026
0ef7501
feat(portal): links hover-grow underline mode and underline color
BatLeDev Jul 9, 2026
2a2b13a
feat(ui): reflect links hover-grow mode in the config preview
BatLeDev Jul 9, 2026
64c6418
fix(ui): match portal underline color semantics in links preview
BatLeDev Jul 9, 2026
10fb1fe
refactor(portal): drop hover.scss in favor of Vuetify-native hover props
BatLeDev Jul 9, 2026
54fdfa6
refactor(ui): stop loading portal hover styles in the manager
BatLeDev Jul 9, 2026
809b2d3
fix(portal): hover elevate uses a valid Vuetify 4 elevation level
BatLeDev Jul 9, 2026
50ac3f8
fix(ui): align button hover elevation with portal
BatLeDev Jul 9, 2026
4376450
test(portal): adapt hover e2e to Vuetify-native rendering
BatLeDev Jul 9, 2026
9750aca
fix(page-element): box border hover without stored border and title b…
BatLeDev Jul 9, 2026
7673888
fix(ui): reduced motion parity in links preview
BatLeDev Jul 9, 2026
fbd3a3c
fix(ui): drop dangling portal assets copy from the manager image build
BatLeDev Jul 9, 2026
b2ca7ed
Merge remote-tracking branch 'origin/master' into feat-hover-links-style
BatLeDev Jul 9, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ ADD /api/src/ui-config.ts api/src/ui-config.ts
ADD /ui ui
ADD /shared/markdown shared/markdown
ADD /portal/app/components portal/app/components
ADD /portal/app/utils portal/app/utils
ADD /portal/app/composables/agent portal/app/composables/agent
COPY --from=types /app/ui/src/components/vjsf ui/src/components/vjsf
RUN npm -w ui run build
Expand Down
5 changes: 5 additions & 0 deletions api/types/common-application-card/schema.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ export default {
{ cols: { md: 6 }, key: 'actionsStyle' },
{ cols: { md: 6 }, key: 'elevation' },
{ cols: { md: 6 }, key: 'rounded' },
{ cols: { md: 6 }, key: 'hover' },
{ cols: { md: 6 }, key: 'titleLinesCount' },
{ cols: { md: 6 }, key: 'openInFullPage' },
{ cols: { md: 6 }, key: 'showSummary' },
Expand Down Expand Up @@ -57,6 +58,10 @@ export default {
title: 'Arrondi de la carte',
layout: { cols: { md: 4 } }
},
hover: {
$ref: 'https://github.com/data-fair/portals/common-defs#/$defs/hoverConfig',
title: 'Effets au survol de la carte'
},
titleLinesCount: {
type: 'number',
title: 'Nombre de lignes pour le titre',
Expand Down
5 changes: 5 additions & 0 deletions api/types/common-dataset-card/schema.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ export default {
'actionsStyle',
'elevation',
'rounded',
'hover',
'titleLinesCount',
'showSummary',
'showDepartment'
Expand Down Expand Up @@ -58,6 +59,10 @@ export default {
title: 'Arrondi de la carte',
layout: { cols: { md: 6 } }
},
hover: {
$ref: 'https://github.com/data-fair/portals/common-defs#/$defs/hoverConfig',
title: 'Effets au survol de la carte'
},
titleLinesCount: {
type: 'number',
title: 'Nombre de lignes pour le titre',
Expand Down
78 changes: 78 additions & 0 deletions api/types/common-defs/schema.js
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,53 @@ export default {
]
},

hoverConfig: {
type: 'object',
title: 'Hover effects',
'x-i18n-title': { fr: 'Effets au survol' },
properties: {
effects: {
type: 'array',
title: 'Effects',
'x-i18n-title': { fr: 'Effets' },
description: 'If nothing is selected here nor in the portal defaults, the standard darken effect is applied. An explicitly emptied selection disables any effect.',
'x-i18n-description': { fr: "Si rien n'est sélectionné ici ni dans le style par défaut du portail, l'assombrissement standard est appliqué. Une sélection explicitement vidée désactive tout effet." },
uniqueItems: true,
layout: {
switch: [
{ if: "parent.data?.effects?.some(e => ['background', 'border', 'titleColor'].includes(e))", cols: { md: 8 } }
]
},
items: {
type: 'string',
oneOf: [
{ const: 'darken', title: 'Darken', 'x-i18n-title': { fr: 'Assombrissement' } },
{ const: 'elevate', title: 'Elevate', 'x-i18n-title': { fr: 'Élévation' } },
{ const: 'background', title: 'Background color', 'x-i18n-title': { fr: 'Colorer le fond' } },
{ const: 'border', title: 'Border color', 'x-i18n-title': { fr: 'Colorer le bord' } },
{ const: 'titleColor', title: 'Title color', 'x-i18n-title': { fr: 'Colorer le titre' } },
{ const: 'titleUnderline', title: 'Underline title', 'x-i18n-title': { fr: 'Souligner le titre' } },
{ const: 'imageZoom', title: 'Image zoom', 'x-i18n-title': { fr: "Zoom de l'image" } },
{ const: 'grow', title: 'Grow slightly', 'x-i18n-title': { fr: 'Grossir légèrement' } }
]
}
},
color: {
$ref: '#/$defs/color',
title: 'Hover color',
'x-i18n-title': { fr: 'Couleur de survol' },
layout: {
if: "parent.data?.effects?.some(e => ['background', 'border', 'titleColor'].includes(e))",
slots: {
item: { name: 'color-select-item' },
selection: { name: 'color-select-selection' }
},
cols: { md: 4 }
}
}
}
},

icon: {
type: 'object',
title: 'Icon configuration',
Expand Down Expand Up @@ -245,6 +292,37 @@ export default {
$ref: 'https://github.com/data-fair/portals/common-defs#/$defs/variant',
layout: { cols: { md: 4 } }
},
hoverEffects: {
type: 'array',
title: 'Hover effects',
'x-i18n-title': { fr: 'Effets au survol' },
description: 'If nothing is selected, the standard darken effect is applied, plus the hover color if defined. An explicit selection replaces this behavior.',
'x-i18n-description': { fr: "Sans sélection, l'assombrissement standard s'applique, complété par la couleur de survol si elle est définie. Une sélection explicite remplace ce comportement." },
uniqueItems: true,
layout: { cols: { md: 8 } },
items: {
type: 'string',
oneOf: [
{ const: 'darken', title: 'Darken', 'x-i18n-title': { fr: 'Assombrissement' } },
{ const: 'elevate', title: 'Elevate', 'x-i18n-title': { fr: 'Élévation' } },
{ const: 'color', title: 'Color', 'x-i18n-title': { fr: 'Coloration (selon la variante)' } },
{ const: 'grow', title: 'Grow slightly', 'x-i18n-title': { fr: 'Grossir légèrement' } }
]
}
},
hoverColor: {
$ref: '#/$defs/color',
title: 'Hover color',
'x-i18n-title': { fr: 'Couleur au survol' },
layout: {
if: "!parent.data?.hoverEffects || parent.data?.hoverEffects?.includes('color')",
slots: {
item: { name: 'color-select-item' },
selection: { name: 'color-select-selection' }
},
cols: { md: 4 }
}
},
showIcon: {
type: 'boolean',
title: "Afficher l'icône",
Expand Down
5 changes: 5 additions & 0 deletions api/types/common-event-card/schema.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ export default {
children: [
{ cols: { md: 6 }, key: 'elevation' },
{ cols: { md: 6 }, key: 'rounded' },
{ cols: { md: 6 }, key: 'hover' },
{ cols: { md: 6 }, key: 'titleLinesCount' },
{ cols: { md: 6 }, key: 'showDescription' }
]
Expand All @@ -37,6 +38,10 @@ export default {
},
layout: { cols: { md: 6 } }
},
hover: {
$ref: 'https://github.com/data-fair/portals/common-defs#/$defs/hoverConfig',
title: 'Effets au survol de la carte'
},
titleLinesCount: {
type: 'number',
title: 'Nombre de lignes pour le titre',
Expand Down
5 changes: 5 additions & 0 deletions api/types/common-news-card/schema.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ export default {
children: [
{ cols: { md: 6 }, key: 'elevation' },
{ cols: { md: 6 }, key: 'rounded' },
{ cols: { md: 6 }, key: 'hover' },
{ cols: { md: 6 }, key: 'titleLinesCount' },
{ cols: { md: 6 }, key: 'showDescription' }
]
Expand All @@ -37,6 +38,10 @@ export default {
},
layout: { cols: { md: 6 } }
},
hover: {
$ref: 'https://github.com/data-fair/portals/common-defs#/$defs/hoverConfig',
title: 'Effets au survol de la carte'
},
titleLinesCount: {
type: 'number',
title: 'Nombre de lignes pour le titre',
Expand Down
5 changes: 5 additions & 0 deletions api/types/common-reuse-card/schema.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ export default {
children: [
{ cols: { md: 6 }, key: 'elevation' },
{ cols: { md: 6 }, key: 'rounded' },
{ cols: { md: 6 }, key: 'hover' },
{ cols: { md: 6 }, key: 'titleLinesCount' },
{ cols: { md: 6 }, key: 'showSummary' },
{ cols: { md: 6 }, key: 'showAuthor' }
Expand All @@ -38,6 +39,10 @@ export default {
},
layout: { cols: { md: 6 } }
},
hover: {
$ref: 'https://github.com/data-fair/portals/common-defs#/$defs/hoverConfig',
title: 'Effets au survol de la carte'
},
titleLinesCount: {
type: 'number',
title: 'Nombre de lignes pour le titre',
Expand Down
37 changes: 37 additions & 0 deletions api/types/page-element-basics/schema.js
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,14 @@ export default {
},
props: { background: true }
}
},
growOnHover: {
type: 'boolean',
title: 'Grow on hover',
'x-i18n-title': { fr: 'Grandit au survol' },
description: 'Only applies when the title has a link.',
'x-i18n-description': { fr: "S'applique uniquement lorsque le titre porte un lien." },
layout: { if: "parent.data?.position === 'bottom-small'" }
}
}
},
Expand All @@ -96,6 +104,35 @@ export default {
title: 'Configuration du lien',
layout: { comp: 'card' }
},
hover: {
type: 'object',
title: 'Effets au survol du lien',
layout: { comp: 'card', if: "parent.data?.link && parent.data?.link?.type !== 'none'" },
properties: {
effects: {
type: 'array',
title: 'Effets',
uniqueItems: true,
items: {
type: 'string',
oneOf: [
{ const: 'titleColor', title: 'Colorer au survol' }
]
}
},
color: {
$ref: 'https://github.com/data-fair/portals/common-defs#/$defs/color',
title: 'Couleur de survol',
layout: {
if: "parent.data?.effects?.includes('titleColor')",
slots: {
item: { name: 'color-select-item' },
selection: { name: 'color-select-selection' }
}
}
}
}
},
anchor: {
type: 'object',
title: 'Anchor & table of contents',
Expand Down
32 changes: 32 additions & 0 deletions api/types/page-element-functional/schema.js
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,38 @@ export default {
elevation: { $ref: 'https://github.com/data-fair/portals/common-defs#/$defs/elevation' },
density: { $ref: 'https://github.com/data-fair/portals/common-defs#/$defs/density' },
rounded: { $ref: 'https://github.com/data-fair/portals/common-defs#/$defs/rounded' },
hover: {
type: 'object',
title: 'Effets au survol',
properties: {
effects: {
type: 'array',
title: 'Effets',
description: 'Appliqués quand les thématiques sont cliquables. Vide : hérite du style par défaut du portail.',
uniqueItems: true,
items: {
type: 'string',
oneOf: [
{ const: 'darken', title: 'Assombrissement' },
{ const: 'elevate', title: 'Élévation' },
{ const: 'background', title: 'Couleur de fond' },
{ const: 'border', title: 'Colorer le bord' }
]
}
},
color: {
$ref: 'https://github.com/data-fair/portals/common-defs#/$defs/color',
title: 'Couleur de survol',
layout: {
if: "parent.data?.effects?.some(e => ['background', 'border'].includes(e))",
slots: {
item: { name: 'color-select-item' },
selection: { name: 'color-select-selection' }
}
}
}
}
},
variant: {
$ref: 'https://github.com/data-fair/portals/common-defs#/$defs/variant',
layout: { if: 'parent.data?.redirectPage && (!Array.isArray(parent.data?.mode) || parent.data?.mode.length <= 1)' }
Expand Down
5 changes: 5 additions & 0 deletions api/types/page-element-layout/schema.js
Original file line number Diff line number Diff line change
Expand Up @@ -247,6 +247,11 @@ export default {
type: 'boolean',
default: true
},
hover: {
$ref: 'https://github.com/data-fair/portals/common-defs#/$defs/hoverConfig',
title: 'Effets au survol',
layout: { comp: 'card' }
},
thumbnail: {
type: 'object',
title: "Configuration de l'image",
Expand Down
6 changes: 5 additions & 1 deletion api/types/portal-config-footer/schema.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ export default {
comp: 'card',
title: 'Liens importants',
subtitle: 'Les liens importants sont affichés sous forme de boutons, ce qui les rend plus visibles que de simples liens.',
children: ['importantLinks']
children: ['importantLinks', 'importantLinksConfig']
},
{ comp: 'card', title: 'Liste de logos', children: ['extraLogos'] }
]
Expand Down Expand Up @@ -322,6 +322,10 @@ export default {
},
items: { $ref: 'https://github.com/data-fair/portals/common-links#/$defs/linkItem' },
default: []
},
importantLinksConfig: {
$ref: 'https://github.com/data-fair/portals/common-defs#/$defs/buttonConfig',
title: 'Rendu des liens importants'
}
}
}
Loading
Loading