import { SyTextField } from '@/components'
import { computed, ref } from 'vue'
import {
VDivider,
VExpansionPanel,
VExpansionPanels,
VExpansionPanelText,
VExpansionPanelTitle,
} from 'vuetify/components'
import type { StoryObj } from '@storybook/vue3-vite'
import SyTable from '@/components/Tables/SyTable/SyTable.vue'
export default {
components: { SyTable },
title: 'Guide Du Dev/Équivalence des composants/Amelipro',
}
export const AmeliproComponents: StoryObj = {
render: () => {
return {
components: {
VExpansionPanels,
VExpansionPanel,
VExpansionPanelTitle,
VExpansionPanelText,
VDivider,
SyTextField,
SyTable,
},
setup() {
const searchTerm = ref('')
const baseUrl = import.meta.env.DEV
? 'http://localhost:6006/?path=/docs/'
: 'https://cnam-design-system.netlify.app/?path=/docs/'
type ComponentType =
| 'composants vuetify'
| 'structure'
| 'layout'
| 'navigation'
| 'boutons'
| 'formulaires'
| 'formulaires selects'
| 'tableaux'
| 'données'
| 'feedback'
| 'filtres'
| 'templates'
const getComponentUrl = (item: { name: string, type: ComponentType }) => {
const normalizedType = item.type.trim().toLowerCase()
const prefix = normalizedType.includes('templates') ? '' : 'composants-'
const typePath = normalizedType.replace(/\s+/g, '-')
const namePath = item.name.trim().toLowerCase()
const suffix = item.name.includes('--') ? '' : '--docs'
return `${baseUrl}${prefix}${typePath}-${namePath}${suffix}`
}
const systemLabel = (component: { name: string }) => {
if (component.name.startsWith('V')) {
return 'Vuetify'
}
return 'Synapse'
}
const apComponents = [
{
title: 'AmeliproCheckbox',
synapse: {
name: 'SyCheckbox',
url: getComponentUrl({ name: 'SyCheckbox', type: 'formulaires' }),
},
amelipro: {
name: 'AmeliproCheckbox',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-checkbox',
},
props: [
{ name: 'checkbox', reason: 'Doublon avec label et name' },
{ name: 'isSwitch', reason: 'Création d’un composant Switch dédié' },
{ name: 'append', reason: 'Faisable côté projet' },
{ name: 'errorDefault', reason: 'Géré par la validation' },
{ name: 'labelLeft', reason: 'Faisable côté projet' },
{ name: 'requiredErrorMessage', reason: 'Géré par la validation' },
],
}, {
title: 'AmeliproCheckboxGroup',
synapse: {
name: 'SyCheckboxGroup',
url: getComponentUrl({ name: 'SyCheckboxGroup', type: 'formulaires' }),
},
amelipro: {
name: 'AmeliproCheckboxGroup',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-checkbox-group',
},
}, {
title: 'AmeliproBadge',
synapse: {
name: 'ChipList',
url: getComponentUrl({ name: 'ChipList', type: 'données' }),
},
amelipro: {
name: 'AmeliproBadge',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-badge',
},
}, {
title: 'AmeliproBtn',
synapse: {
name: 'VBtn',
url: getComponentUrl({ name: 'VBtn', type: 'composants vuetify' }),
},
amelipro: {
name: 'AmeliproBtn',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-btn',
},
props: [
{ name: 'uniqueId', reason: 'Géré par Vuetify' },
{ name: 'badge', reason: 'Géré par Vuetify' },
{ name: 'badgeBgColor', reason: 'Géré par Vuetify' },
{ name: 'badgeColor', reason: 'Géré par Vuetify' },
{ name: 'bordered', reason: 'Géré par Vuetify' },
{ name: 'classes', reason: 'Géré par Vuetify' },
{ name: 'color', reason: 'Utiliser les couleurs du DS' },
{ name: 'disabled', reason: 'Géré par Vuetify' },
{ name: 'hoverColor', reason: 'Utiliser les couleurs du DS' },
{ name: 'hoverUnderline', reason: 'Utiliser les couleurs du DS' },
{ name: 'iconBgColor', reason: 'Utiliser les couleurs du DS' },
{ name: 'iconBordered', reason: 'Géré par Vuetify' },
{ name: 'iconColor', reason: 'Utiliser les couleurs du DS' },
{ name: 'iconFocusColor', reason: 'Utiliser les couleurs du DS' },
{ name: 'iconHoverColor', reason: 'Utiliser les couleurs du DS' },
{ name: 'iconLeft', reason: 'Géré par Vuetify' },
{ name: 'iconName', reason: 'Géré par Vuetify' },
{ name: 'infoBlock', reason: 'Géré par Vuetify' },
{ name: 'minHeight', reason: 'Géré par Vuetify' },
{ name: 'size', reason: 'Géré par Vuetify' },
{ name: 'target', reason: 'Géré par Vuetify' },
{ name: 'text', reason: 'Géré par Vuetify' },
{ name: 'textColor', reason: 'Utiliser les couleurs du DS' },
{ name: 'textFocusColor', reason: 'Utiliser les couleurs du DS' },
{ name: 'textHoverColor', reason: 'Utiliser les couleurs du DS' },
{ name: 'type', reason: 'Géré par Vuetify' },
{ name: 'underline', reason: 'Géré par Vuetify' },
],
},
{
title: 'AmeliproCallback',
synapse: {
name: 'NotificationBar',
url: getComponentUrl({ name: 'NotificationBar', type: 'feedback' }),
},
amelipro: {
name: 'AmeliproCallback',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-callback',
},
},
{
title: 'AmeliproCard',
synapse: {
name: 'VCard',
url: getComponentUrl({ name: 'VCard', type: 'composants vuetify' }),
},
amelipro: {
name: 'AmeliproCard',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-card',
},
props: [
{ name: 'cardTitle', reason: 'Géré par Vuetify' },
{ name: 'uniqueId', reason: 'Géré par Vuetify' },
{ name: 'borderColor', reason: 'Géré par Vuetify' },
{ name: 'bordered', reason: 'Géré par Vuetify' },
{ name: 'cardColor', reason: 'Géré par Vuetify' },
{ name: 'classes', reason: 'Géré par Vuetify' },
{ name: 'contentClasses', reason: 'Géré par Vuetify' },
{ name: 'divider', reason: 'Géré par Vuetify' },
{ name: 'headerRightWidth', reason: 'Géré par Vuetify' },
{ name: 'noCardHeader', reason: 'Géré par Vuetify' },
{ name: 'rightPart', reason: 'Géré par Vuetify' },
{ name: 'rightPartClasses', reason: 'Géré par Vuetify' },
{ name: 'rightPartWidth', reason: 'Géré par Vuetify' },
{ name: 'titleColor', reason: 'Géré par Vuetify' },
{ name: 'titleLevel', reason: 'Géré par Vuetify' },
],
}, {
title: 'AmeliproContentLayout',
synapse: {
name: 'PageContainer',
url: getComponentUrl({ name: 'PageContainer', type: 'layout' }),
},
amelipro: {
name: 'AmeliproContentLayout',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-content-layout',
},
}, {
title: 'AmeliproDialog',
synapse: {
name: 'DialogBox',
url: getComponentUrl({ name: 'DialogBox', type: 'feedback' }),
},
amelipro: {
name: 'AmeliproDialog',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-dialog',
},
props: [
{ name: 'uniqueId', reason: 'Déjà géré par Synapse' },
{ name: 'attach', reason: 'Géré par Vuetify' },
{ name: 'eager', reason: 'Géré par Vuetify' },
{ name: 'fullscreen', reason: 'Géré par Vuetify' },
{ name: 'hiddenCancelBtn', reason: 'Déjà géré par Synapse' },
{ name: 'labelledby', reason: 'Déjà géré par Synapse' },
{ name: 'mainContentMaxHeight', reason: 'Géré par Vuetify' },
{ name: 'mainContentMinHeight', reason: 'Géré par Vuetify' },
{ name: 'noClickOutside', reason: 'Géré par Vuetify' },
{ name: 'noFooter', reason: 'Non utilisé' },
],
}, {
title: 'AmeliproErrorTemplate',
synapse: {
name: 'ErrorPage',
url: getComponentUrl({ name: 'ErrorPage', type: 'templates' }),
},
amelipro: {
name: 'AmeliproErrorTemplate',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-error-template',
},
},
{
title: 'AmeliproFilePreview',
synapse: {
name: 'FilePreview',
url: getComponentUrl({ name: 'FilePreview', type: 'données' }),
},
amelipro: {
name: 'AmeliproFilePreview',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-file-preview',
},
},
{
title: 'AmeliproFooter',
synapse: {
name: 'FooterBar',
url: getComponentUrl({ name: 'FooterBar', type: 'structure' }),
},
amelipro: {
name: 'AmeliproFooter',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-footer',
},
}, {
title: 'AmeliproHeader',
synapse: {
name: 'HeaderBar',
url: getComponentUrl({ name: 'HeaderBar', type: 'structure' }),
},
amelipro: {
name: 'AmeliproHeader',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-header',
},
}, {
title: 'AmeliproHeaderBar',
synapse: {
name: 'HeaderBar',
url: getComponentUrl({ name: 'HeaderBar', type: 'structure' }),
},
amelipro: {
name: 'AmeliproHeaderBar',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-header-bar',
},
}, {
title: 'AmeliproHeaderBrandSection',
synapse: {
name: 'HeaderBar',
url: getComponentUrl({ name: 'HeaderBar', type: 'structure' }),
},
amelipro: {
name: 'AmeliproHeaderBrandSection',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-header-brand-section',
},
}, {
title: 'AmeliproIcon',
synapse: {
name: 'SyIcon',
url: getComponentUrl({ name: 'SyIcon', type: 'données' }),
},
amelipro: {
name: 'AmeliproIcon',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-icon',
},
}, {
title: 'AmeliproIconBtn',
synapse: {
name: 'SyIconButton',
url: getComponentUrl({ name: 'SyIconButton', type: 'boutons' }),
},
amelipro: {
name: 'AmeliproIconBtn',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-icon-btn',
},
props: [
{ name: 'iconBgColor', reason: 'Couleur du DS' },
{ name: 'iconHoverBgColor', reason: 'Couleur du DS' },
{ name: 'iconHoverColor', reason: 'Couleur du DS' },
{ name: 'uniqueId', reason: 'Géré coté projet' },
{ name: 'xLarge', reason: 'Géré par la props size' },
{ name: 'badge', reason: 'Géré par Vuetify' },
{ name: 'badgeBgColor', reason: 'Géré par Vuetify' },
{ name: 'badgeColor', reason: 'Géré par Vuetify' },
{ name: 'bordered', reason: 'Implémentation ultérieure à étudier' },
{ name: 'btnTitle', reason: 'Géré par la props label' },
{ name: 'href', reason: 'Implémentation ultérieure à étudier' },
{ name: 'iconBorderColor', reason: 'Couleur du DS' },
{ name: 'iconFocusBgColor', reason: 'Couleur du DS' },
{ name: 'iconFocusBorderColor', reason: 'Couleur du DS' },
{ name: 'iconFocusColor', reason: 'Couleur du DS' },
{ name: 'iconHoverBorderColor', reason: 'Implémentation ultérieure à étudier' },
{ name: 'large', reason: 'Géré par la props size' },
{ name: 'medium', reason: 'Géré par la props size' },
{ name: 'small', reason: 'Géré par la props size' },
{ name: 'to', reason: 'Implémentation ultérieure à étudier' },
],
},
{
title: 'AmeliproLogoAm',
synapse: {
name: 'HeaderBar',
url: getComponentUrl({ name: 'HeaderBar', type: 'structure' }),
},
amelipro: {
name: 'AmeliproLogoAm',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-logo-am',
},
},
{
title: 'AmeliproMenu',
synapse: {
name: 'VNavigationDrawer',
url: getComponentUrl({ name: 'VNavigationDrawer', type: 'composants vuetify' }),
},
amelipro: {
name: 'AmeliproMenu',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-menu',
},
},
{
title: 'AmeliproMessage',
synapse: {
name: 'NotificationBar',
url: getComponentUrl({ name: 'NotificationBar', type: 'feedback' }),
},
amelipro: {
name: 'AmeliproMessage',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-message',
},
props: [
{ name: 'alignStart', reason: 'Non utilisé' },
{ name: 'borderLeftMessage', reason: 'Géré par la props variant' },
{ name: 'borderLeftMessageTitle', reason: 'Non utilisé' },
{ name: 'color', reason: 'Géré par la props variant' },
{ name: 'dark', reason: 'Non utilisé' },
{ name: 'icon', reason: 'Géré par la props variant' },
{ name: 'iconBgColor', reason: 'Géré par la props variant' },
{ name: 'iconColor', reason: 'Géré par la props variant' },
{ name: 'maxWidth', reason: 'Non utilisé' },
{ name: 'noIcon', reason: 'Non utilisé' },
{ name: 'text', reason: 'Géré avec le slot default' },
{ name: 'textColor', reason: 'Géré par la props variant' },
{ name: 'type', reason: 'Géré par la props variant' },
{ name: 'width', reason: 'Non utilisé' },
],
},
{
title: 'AmeliproStatus',
synapse: {
name: 'ChipList',
url: getComponentUrl({ name: 'ChipList', type: 'données' }),
},
amelipro: {
name: 'AmeliproStatus',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-status',
},
},
{
title: 'AmeliproTooltips',
synapse: {
name: 'VTooltip',
url: getComponentUrl({ name: 'VTooltip', type: 'composants vuetify' }),
},
amelipro: {
name: 'AmeliproTooltips',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-tooltips',
},
props: [
{ name: 'tooltipText', reason: 'Géré par Vuetify' },
{ name: 'uniqueId', reason: 'Géré par Vuetify' },
{ name: 'btnLabel', reason: 'N’utilise pas le bouton' },
{ name: 'classes', reason: 'Géré par le projet' },
{ name: 'iconBgColor', reason: 'Géré par le SyIcon' },
{ name: 'iconColor', reason: 'Géré par le SyIcon' },
{ name: 'iconHoverBgColor', reason: 'Géré par le SyIcon' },
{ name: 'iconHoverColor', reason: 'Géré par le SyIcon' },
{ name: 'iconName', reason: 'Géré par le SyIcon' },
{ name: 'tooltipBg', reason: 'Couleur du DS' },
{ name: 'tooltipTextColor', reason: 'Couleur du DS' },
],
},
{
title: 'AmeliproTransmission',
synapse: {
name: 'VCard',
url: getComponentUrl({ name: 'VCard', type: 'composants vuetify' }),
},
amelipro: {
name: 'AmeliproTransmission',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-transmission',
},
},
{
title: 'StructureMenu',
usedComponents: [
{
name: 'DialogBox',
type: 'feedback',
},
{
name: 'NotificationBar',
type: 'feedback',
},
{
name: 'VSwitch',
type: 'composants vuetify',
},
{
name: 'VTooltip',
type: 'composants vuetify',
},
],
amelipro: {
name: 'StructureMenu',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/structure-menu',
},
},
{
title: 'StructureBtn',
synapse: {
name: 'VBtn',
url: getComponentUrl({ name: 'VBtn', type: 'composants vuetify' }),
},
amelipro: {
name: 'StructureBtn',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/structure-btn',
},
},
{
title: 'StructureItem',
synapse: {
name: 'SelectBtnField',
url: getComponentUrl({ name: 'SelectBtnField', type: 'formulaires selects' }),
},
amelipro: {
name: 'StructureItem',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/structure-item',
},
},
{
title: 'StructureList',
usedComponents: [
{
name: 'SyRadioGroup',
type: 'formulaires',
},
{
name: 'VBtn',
type: 'composants vuetify',
},
],
amelipro: {
name: 'StructureList',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/structure-list',
},
},
{
title: 'StructureTabs',
synapse: {
name: 'SyTabs',
url: getComponentUrl({ name: 'SyTabs', type: 'navigation' }),
},
amelipro: {
name: 'StructureTabs',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/structure-tabs',
},
},
{
title: 'UserMenu',
synapse: {
name: 'UserMenuBtn',
url: getComponentUrl({ name: 'UserMenuBtn', type: 'boutons' }),
},
amelipro: {
name: 'UserMenu',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/user-menu',
},
},
{
title: 'ServiceMenu',
synapse: {
name: 'VNavigationDrawer',
url: getComponentUrl({ name: 'VNavigationDrawer', type: 'composants vuetify' }),
},
amelipro: {
name: 'ServiceMenu',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/service-menu',
},
},
{
title: 'AmeliproAutoCompleteField',
synapse: {
name: 'SyAutoComplete',
url: getComponentUrl({ name: 'SyAutoComplete', type: 'formulaires selects' }),
},
amelipro: {
name: 'AmeliproAutoCompleteField',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-auto-complete-field',
},
}, {
title: 'AmeliproBreadcrumb',
synapse: {
name: 'VBreadcrumbs',
url: getComponentUrl({ name: 'VBreadcrumbs', type: 'composants vuetify' }),
},
amelipro: {
name: 'AmeliproBreadcrumb',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-breadcrumb',
},
}, {
title: 'AmeliproChips',
synapse: {
name: 'ChipList',
url: getComponentUrl({ name: 'ChipList', type: 'données' }),
},
amelipro: {
name: 'AmeliproChips',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-chips',
},
props: [
{ name: 'Text', reason: 'Géré par Items' },
{ name: 'uniqueId', reason: 'Géré par Items' },
],
},
{
title: 'AmeliproDisclosure',
synapse: {
name: 'Accordion',
url: getComponentUrl({ name: 'Accordion', type: 'données' }),
},
amelipro: {
name: 'AmeliproDisclosure',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-disclosure',
},
},
{
title: 'AmeliproIllustratedDataTile',
synapse: {
name: 'VCard',
url: getComponentUrl({ name: 'VCard', type: 'composants vuetify' }),
},
amelipro: {
name: 'AmeliproIllustratedDataTile',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-illustrated-data-tile',
},
},
{
title: 'AmeliproIllustratedRadioGroup',
synapse: {
name: 'SyRadioGroup',
url: getComponentUrl({ name: 'SyRadioGroup', type: 'formulaires' }),
},
amelipro: {
name: 'AmeliproIllustratedRadioGroup',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-illustrated-radio-group',
},
},
{
title: 'AmeliproMailTile',
usedComponents: [{
name: 'VCard',
type: 'composants vuetify',
}, {
name: 'VBtn',
type: 'composants vuetify',
},
],
amelipro: {
name: 'AmeliproMailTile',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-mail-tile',
},
},
{
title: 'AmeliproMultipleFoldingCard',
synapse: {
name: 'Accordion',
url: getComponentUrl({ name: 'Accordion--with-custom-content', type: 'données' }),
},
amelipro: {
name: 'AmeliproMultipleFoldingCard',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-multiple-folding-card',
},
},
{
title: 'AmeliproNumberedCard',
usedComponents: [
{
name: 'VCard',
type: 'composants vuetify',
},
],
amelipro: {
name: 'AmeliproNumberedCard',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-numbered-card',
},
},
{
title: 'AmeliproOnboarding',
synapse: {
name: 'DialogBox',
url: getComponentUrl({ name: 'DialogBox', type: 'feedback' }),
},
amelipro: {
name: 'AmeliproOnboarding',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-onboarding',
},
},
{
title: 'AmeliproPageLayout',
synapse: {
name: 'PageContainer',
url: getComponentUrl({ name: 'PageContainer', type: 'layout' }),
},
amelipro: {
name: 'AmeliproPageLayout',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-page-layout',
},
},
{
title: 'AmeliproPagination',
synapse: {
name: 'SyPagination',
url: getComponentUrl({ name: 'SyPagination', type: 'navigation' }),
},
amelipro: {
name: 'AmeliproPagination',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-pagination',
},
}, {
title: 'AmeliproPaginationBtn',
synapse: {
name: 'SyPagination',
url: getComponentUrl({ name: 'SyPagination', type: 'navigation' }),
},
amelipro: {
name: 'AmeliproPaginationBtn',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-pagination-btn',
},
},
{
title: 'AmeliproPatientBanner',
synapse: {
name: 'VCard',
url: getComponentUrl({ name: 'VCard', type: 'composants vuetify' }),
},
amelipro: {
name: 'AmeliproPatientBanner',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-patient-banner',
},
},
{
title: 'AmeliproRadioGroup',
synapse: {
name: 'SyRadioGroup',
url: getComponentUrl({ name: 'SyRadioGroup', type: 'formulaires' }),
},
amelipro: {
name: 'AmeliproRadioGroup',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-radio-group',
},
props: [
{ name: 'fullHorizontal', reason: 'utiliser le composant selectBtnField pour horizontal' },
{ name: 'hiddenLabel', reason: 'Cacher le label n\'est pas une bonne pratique' },
{ name: 'horizontal', reason: 'utiliser le composant selectBtnField pour horizontal' },
{ name: 'horizontalLabel', reason: 'utiliser le composant selectBtnField pour horizontal' },
{ name: 'pills', reason: 'composant existant dans synapse selectBtnField' },
{ name: 'requiredErrorMessage', reason: 'Geré par le systeme de validation Synapse' },
],
},
{
title: 'AmeliproSelect',
synapse: {
name: 'SySelect',
url: getComponentUrl({ name: 'SySelect', type: 'formulaires selects' }),
},
amelipro: {
name: 'AmeliproSelect',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-select',
},
props: [
{ name: 'fullWidthErrorMessage', reason: 'Geré par la validation' },
{ name: 'globalMaxWidth', reason: 'Géré par la props width' },
{ name: 'globalMinWidth', reason: 'Géré par la props width' },
{ name: 'globalWidth', reason: 'Géré par la props width' },
{ name: 'hideErrorMessage', reason: 'Geré par la validation' },
{ name: 'horizontal', reason: 'Peut etre intégré sur demande' },
{ name: 'inputMaxWidth', reason: 'Géré par la props width' },
{ name: 'inputMinWidth', reason: 'Géré par la props width' },
{ name: 'labelMaxWidth', reason: 'Peut être fait par le développeur du projet' },
{ name: 'labelMinWidth', reason: 'Peut être fait par le développeur du projet' },
{ name: 'placeholder', reason: 'Non obligatoire' },
{ name: 'rules', reason: 'Geré par la validation' },
],
},
{
title: 'AmeliproStateTile',
synapse: {
name: 'VCard',
url: getComponentUrl({ name: 'VCard', type: 'composants vuetify' }),
},
amelipro: {
name: 'AmeliproStateTile',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-state-tile',
},
},
{
title: 'AmeliproStepper',
synapse: {
name: 'VStepper',
url: getComponentUrl({ name: 'VStepper', type: 'composants vuetify' }),
},
amelipro: {
name: 'AmeliproStepper',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-stepper',
},
},
{
title: 'AmeliproTabs',
synapse: {
name: 'SyTabs',
url: getComponentUrl({ name: 'SyTabs', type: 'navigation' }),
},
amelipro: {
name: 'AmeliproTabs',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-tabs',
},
props: [
{ name: 'ariaLabel', reason: 'Géré par le composant' },
{ name: 'ariaLabelledby', reason: 'Non utilisé' },
{ name: 'btnGroupClasses', reason: 'Non utilisé' },
{ name: 'id', reason: 'Non utilisé' },
{ name: 'noTabDefaultStyle', reason: 'Deux composants totalement différents' },
{ name: 'pills', reason: 'Deux composants totalement différents' },
],
}, {
title: 'AmeliproTextArea',
synapse: {
name: 'SyTextArea',
url: getComponentUrl({ name: 'SyTextArea', type: 'formulaires' }),
},
amelipro: {
name: 'AmeliproTextArea',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-text-area',
},
props: [
{ name: 'globalMaxWidth', reason: 'Géré par Vuetify' },
{ name: 'globalMinWidth', reason: 'Géré par Vuetify' },
{ name: 'horizontal', reason: 'Géré par le projet' },
{ name: 'inputMaxWidth', reason: 'Géré par Vuetify' },
{ name: 'inputMinWidth', reason: 'Géré par Vuetify' },
{ name: 'labelMaxWidth', reason: 'Géré par Vuetify' },
{ name: 'labelMinWidth', reason: 'Géré par Vuetify' },
{ name: 'classes', reason: 'Non utilisé' },
],
}, {
title: 'AmeliproTextField',
synapse: {
name: 'SyTextField',
url: getComponentUrl({ name: 'SyTextField', type: 'formulaires' }),
},
amelipro: {
name: 'AmeliproTextField',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-text-field',
},
props: [
{ name: 'classes', reason: 'Non utilisé' },
{ name: 'disabledDateForSafari', reason: 'Non utilisé' },
{ name: 'fullWidthErrorMsg', reason: 'Géré par la validation' },
{ name: 'globalMaxWidth', reason: 'Non utilisé' },
{ name: 'globalMinWidth', reason: 'Non utilisé' },
{ name: 'globalWidth', reason: 'Non utilisé' },
{ name: 'hideErrorMessage', reason: 'Géré par la validation' },
{ name: 'horizontal', reason: 'Non utilisé' },
{ name: 'labelMaxWidth', reason: 'Non utilisé' },
{ name: 'labelMinWidth', reason: 'Non utilisé' },
{ name: 'maxDate', reason: 'Non utilisé' },
{ name: 'maxNumber', reason: 'Non utilisé' },
{ name: 'minDate', reason: 'Non utilisé' },
{ name: 'minNumber', reason: 'Non utilisé' },
{ name: 'modelValue', reason: 'Non utilisé' },
{ name: 'rules', reason: 'Géré par la validation' },
{ name: 'type', reason: 'Non utilisé' },
{ name: 'validateOn', reason: 'Géré par la validation' },
],
},
{
title: 'AmeliproTileBtn',
synapse: {
name: 'VCard',
url: getComponentUrl({ name: 'VCard', type: 'composants vuetify' }),
},
amelipro: {
name: 'AmeliproTileBtn',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-tile-btn',
},
},
{
title: 'UserInformationSummary',
synapse: {
name: 'PageContainer',
url: getComponentUrl({ name: 'PageContainer--with-header-and-footer', type: 'layout' }),
},
amelipro: {
name: 'UserInformationSummary',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/user-information-summary',
},
},
{
title: 'AmeliproCustomSelector',
synapse: {
name: 'SelectBtnField',
url: getComponentUrl({ name: 'SelectBtnField--multiple', type: 'formulaires selects' }),
},
amelipro: {
name: 'AmeliproCustomSelector',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-custom-selector',
},
props: [
{ name: 'labelDescription', reason: 'Géré par Items' },
{ name: 'labelMarginBottom', reason: 'Géré par Items' },
{ name: 'uniqueId', reason: 'Géré par Items' },
],
},
{
title: 'AmeliproAccordion',
synapse: {
name: 'Accordion',
url: getComponentUrl({ name: 'Accordion', type: 'données' }),
},
amelipro: {
name: 'AmeliproAccordion',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-accordion',
},
},
{
title: 'AmeliproCaptcha',
synapse: {
name: 'Captcha',
url: getComponentUrl({ name: 'Captcha', type: 'formulaires' }),
},
amelipro: {
name: 'AmeliproCaptcha',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-captcha',
},
},
{
title: 'AmeliproUpload',
synapse: {
name: 'FileUpload',
url: getComponentUrl({ name: 'FileUpload', type: 'formulaires' }),
},
amelipro: {
name: 'AmeliproUpload',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-upload',
},
},
{
title: 'AmeliproTable',
synapse: {
name: 'SyTable',
url: getComponentUrl({ name: 'Sytable', type: 'tableaux' }),
},
amelipro: {
name: 'AmeliproTable',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-table',
},
},
{
title: 'AmeliproPostalAddressField',
usedComponents: [
{
name: 'SyTextField',
type: 'formulaires',
},
{
name: 'SySelect',
type: 'formulaires selects',
},
],
amelipro: {
name: 'AmeliproPostalAddressField',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-postal-address-field',
},
},
{
title: 'AmeliproAccordionGroup',
synapse: {
name: 'Accordion',
url: getComponentUrl({ name: 'Accordion', type: 'données' }),
},
amelipro: {
name: 'AmeliproAccordionGroup',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-accordion-group',
},
props: [
{ name: 'defaultItemOpened', reason: 'Géré par le v-model' },
{ name: 'groupBorderColor', reason: 'Géré par vuetifyOptions' },
{ name: 'groupBordered', reason: 'Géré par vuetifyOptions' },
{ name: 'groupColor', reason: 'Géré par vuetifyOptions' },
{ name: 'groupTitleLevel', reason: 'Géré par vuetifyOptions' },
{ name: 'groupTitleUppercase', reason: 'Géré par vuetifyOptions' },
{ name: 'headerRightWidth', reason: 'Géré par vuetifyOptions' },
{ name: 'hideSeparator', reason: 'Géré par vuetifyOptions' },
],
},
{
title: 'AmeliproCarousel',
synapse: {
name: 'VCarousel',
url: getComponentUrl({ name: 'VCarousel', type: 'composants vuetify' }),
},
amelipro: {
name: 'AmeliproCarousel',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-carousel',
},
},
{
title: 'AmeliproAccordionResult',
synapse: {
name: 'Accordion',
url: getComponentUrl({ name: 'Accordion', type: 'données' }),
},
amelipro: {
name: 'AmeliproAccordionResult',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-accordion-result',
},
},
{
title: 'AmeliproAccordionFrieze',
synapse: {
name: 'VSlideGroup',
url: getComponentUrl({ name: 'VSlideGroup', type: 'composants vuetify' }),
},
amelipro: {
name: 'AmeliproAccordionFrieze',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-accordion-frieze',
},
},
{
title: 'AmeliproAccordionList',
synapse: {
name: 'SyTable',
url: getComponentUrl({ name: 'sytable--expandable-rows', type: 'tableaux' }),
},
amelipro: {
name: 'AmeliproAccordionList',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-accordion-list',
},
},
{
title: 'AmeliproAccordionResultList',
synapse: {
name: 'SyTable',
url: getComponentUrl({ name: 'sytable--expandable-rows', type: 'tableaux' }),
},
amelipro: {
name: 'AmeliproAccordionResultList',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-accordion-result-list',
},
},
{
title: 'AmeliproClickableTile',
synapse: {
name: 'VCard',
url: getComponentUrl({ name: 'VCard', type: 'composants vuetify' }),
},
amelipro: {
name: 'AmeliproClickableTile',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-clickable-tile',
},
},
{
title: 'AmeliproMessagingLayout',
synapse: {
name: 'VNavigationDrawer',
url: getComponentUrl({ name: 'VNavigationDrawer', type: 'composants vuetify' }),
},
amelipro: {
name: 'AmeliproMessagingLayout',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-messaging-layout',
},
},
{
title: 'AmeliproPatientLogin',
usedComponents: [{
name: 'VCard',
type: 'composants vuetify',
}, {
name: 'VBtn',
type: 'composants vuetify',
}, {
name: 'SyTextField',
type: 'formulaires ',
}, {
name: 'NirField',
type: 'formulaires ',
},
{
name: 'SyIcon',
type: 'données',
}, {
name: 'SySelect',
type: 'formulaires selects',
}],
amelipro: {
name: 'AmeliproPatientLogin',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-patient-login',
},
},
{
title: 'AmeliproPatientLogged',
usedComponents: [{
name: 'VCard',
type: 'composants vuetify',
}, {
name: 'VBtn',
type: 'composants vuetify',
}, {
name: 'VTooltip',
type: 'composants vuetify',
}, {
name: 'CopyBtn',
type: 'boutons',
}, {
name: 'SySelect',
type: 'formulaires selects',
}],
amelipro: {
name: 'AmeliproPatientLogged',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-patient-logged',
},
},
{
title: 'AmeliproCopyBtn',
synapse: {
name: 'CopyBtn',
url: getComponentUrl({ name: 'CopyBtn', type: 'boutons' }),
},
amelipro: {
name: 'AmeliproCopyBtn',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-copy-btn',
},
},
{
title: 'AmeliproFirstLogin',
synapse: {
name: 'DialogBox',
url: getComponentUrl({ name: 'DialogBox', type: 'feedback' }),
},
amelipro: {
name: 'AmeliproFirstLogin',
url: 'https://p2-design-system-dev.app.ge-4.digital.ramage/composants/amelipro-first-login',
},
},
]
const filteredComponents = computed(() => {
const term = searchTerm.value.trim().toLowerCase()
return apComponents
.filter(component =>
!term
|| component.title.toLowerCase().includes(term),
)
.sort((a, b) =>
a.title.localeCompare(b.title, 'fr', { sensitivity: 'base' }),
)
})
const headers = ref([
{
title: 'Props',
key: 'name',
},
{
title: 'Raison',
key: 'reason',
},
])
return { filteredComponents, apComponents, searchTerm, getComponentUrl, systemLabel, headers }
},
template: `
{{ component.text }}
Pour reproduire son comportement, utilisez les composants du Design System suivants :
et implémentez la logique métier directement dans votre projet.
Le composant
{{ component.amelipro.name }}
est remplacé par
{{ component.synapse.name }}.
Documentation du composant {{ systemLabel(component.synapse) }} {{ component.synapse?.name }}