@cnamts/synapse 1.0.11 → 1.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. package/dist/{DateFilter-QEfKOz0P.js → DateFilter-_EFzsvvM.js} +1 -1
  2. package/dist/{NumberFilter-C0h7gVzp.js → NumberFilter-CUxEbKJh.js} +1 -1
  3. package/dist/{PeriodFilter-8dVrKjju.js → PeriodFilter-D5ueqtKy.js} +1 -1
  4. package/dist/{SelectFilter-BI3QGbqb.js → SelectFilter-BciBNydy.js} +1 -1
  5. package/dist/{TextFilter-UOp1hcPp.js → TextFilter-DMN_WAQB.js} +1 -1
  6. package/dist/components/Amelipro/AmeliproAccordion/AmeliproAccordion.d.ts +7 -3
  7. package/dist/components/Amelipro/AmeliproAccordion/AmeliproAccordionTemplate/AmeliproAccordionTemplate.d.ts +1 -1
  8. package/dist/components/Amelipro/AmeliproAccordionList/AmeliproAccordionList.d.ts +2 -0
  9. package/dist/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResult.d.ts +7 -3
  10. package/dist/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResultTemplate/AmeliproAccordionResultTemplate.d.ts +1 -1
  11. package/dist/components/Amelipro/AmeliproAutoCompleteField/AmeliproAutoCompleteField.d.ts +50 -68
  12. package/dist/components/Amelipro/AmeliproCard/AmeliproCard.d.ts +1 -1
  13. package/dist/components/Amelipro/AmeliproIcon/AmeliproIcon.d.ts +1 -1
  14. package/dist/components/Amelipro/AmeliproIconBtn/AmeliproIconBtn.d.ts +5 -5
  15. package/dist/components/Amelipro/AmeliproMultipleFoldingCard/AmeliproMultipleFoldingCard.d.ts +1 -1
  16. package/dist/components/Amelipro/AmeliproNumberedCard/AmeliproNumberedCard.d.ts +1 -1
  17. package/dist/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressCityRow/AmeliproPostalAddressCityRow.d.ts +24 -32
  18. package/dist/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressField.d.ts +36 -48
  19. package/dist/components/Amelipro/AmeliproSelect/AmeliproSelect.d.ts +50 -68
  20. package/dist/components/Amelipro/AmeliproTable/AmeliproTable.d.ts +4 -0
  21. package/dist/components/Amelipro/AmeliproTable/types.d.ts +11 -0
  22. package/dist/components/Amelipro/AmeliproTabs/AmeliproTabs.d.ts +50 -68
  23. package/dist/components/Amelipro/AmeliproTextArea/AmeliproTextArea.d.ts +0 -4
  24. package/dist/components/Amelipro/AmeliproTextField/AmeliproTextField.d.ts +12 -16
  25. package/dist/components/Captcha/Captcha.d.ts +68 -0
  26. package/dist/components/Captcha/CaptchaAlert.d.ts +13 -0
  27. package/dist/components/Captcha/CaptchaBase.d.ts +55 -0
  28. package/dist/components/Captcha/CaptchaBtn.d.ts +12 -0
  29. package/dist/components/Captcha/CaptchaForm.d.ts +16 -0
  30. package/dist/components/Captcha/CaptchaImg.d.ts +12 -0
  31. package/dist/components/Captcha/CaptchaInformation.d.ts +20 -0
  32. package/dist/components/Captcha/captchaApi.d.ts +41 -0
  33. package/dist/components/Captcha/icons/volumeUp.d.ts +2 -0
  34. package/dist/components/Captcha/locales.d.ts +35 -0
  35. package/dist/components/Captcha/types.d.ts +2 -0
  36. package/dist/components/ChipList/ChipList.d.ts +2 -2
  37. package/dist/components/CookiesSelection/CookiesInformation/CookiesInformation.d.ts +14 -14
  38. package/dist/components/Customs/Selects/SySelect/SySelect.d.ts +5 -5
  39. package/dist/components/Customs/SyForm/SyForm.d.ts +6 -3
  40. package/dist/components/Customs/SyTextField/SyTextField.d.ts +12 -16
  41. package/dist/components/DatePicker/CalendarMode/DatePicker.d.ts +96 -68
  42. package/dist/components/DatePicker/ComplexDatePicker/ComplexDatePicker.d.ts +63 -38
  43. package/dist/components/DatePicker/DateTextInput/DateTextInput.d.ts +23 -27
  44. package/dist/components/DatePicker/composables/useDatePickerViewMode.d.ts +2 -1
  45. package/dist/components/DatePicker/tests/setup.d.ts +816 -520
  46. package/dist/components/HeaderToolbar/HeaderToolbar.d.ts +10 -10
  47. package/dist/components/NirField/NirField.d.ts +31 -34
  48. package/dist/components/NirField/locales.d.ts +1 -3
  49. package/dist/components/PasswordField/PasswordField.d.ts +2 -0
  50. package/dist/components/PeriodField/PeriodField.d.ts +192 -128
  51. package/dist/components/PhoneField/PhoneField.d.ts +13 -17
  52. package/dist/components/SearchListField/SearchListField.d.ts +5 -5
  53. package/dist/components/SyTextArea/SyTextArea.d.ts +0 -4
  54. package/dist/components/Tables/SyServerTable/SyServerTable.d.ts +5 -8
  55. package/dist/components/Tables/SyTable/SyTable.d.ts +5 -8
  56. package/dist/components/Tables/common/SyTablePagination.d.ts +5 -5
  57. package/dist/components/Tables/common/types.d.ts +4 -0
  58. package/dist/components/Tables/common/usePagination.d.ts +3 -4
  59. package/dist/components/Tables/common/useTableCheckbox.d.ts +10 -6
  60. package/dist/components/index.d.ts +1 -0
  61. package/dist/composables/validation/useFormValidation.d.ts +10 -0
  62. package/dist/composables/validation/useValidatable.d.ts +10 -2
  63. package/dist/design-system-v3.js +126 -125
  64. package/dist/design-system-v3.umd.cjs +265 -265
  65. package/dist/main-DISHlqcd.js +34217 -0
  66. package/dist/style.css +1 -1
  67. package/package.json +1 -1
  68. package/src/assets/overrides/_forms.scss +2 -0
  69. package/src/components/Amelipro/AmeliproAccordion/AmeliproAccordion.stories.ts +7 -4
  70. package/src/components/Amelipro/AmeliproAccordion/AmeliproAccordion.vue +2 -0
  71. package/src/components/Amelipro/AmeliproAccordionFrieze/AmeliproAccordionFrieze.vue +1 -0
  72. package/src/components/Amelipro/AmeliproAccordionFrieze/__tests__/__snapshots__/AmeliproAccordionFrieze.spec.ts.snap +574 -112
  73. package/src/components/Amelipro/AmeliproAccordionList/AmeliproAccordionList.stories.ts +5 -2
  74. package/src/components/Amelipro/AmeliproAccordionList/AmeliproAccordionList.vue +2 -1
  75. package/src/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResult.stories.ts +6 -3
  76. package/src/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResult.vue +2 -0
  77. package/src/components/Amelipro/AmeliproAccordionResultList/AmeliproAccordionResultList.stories.ts +5 -2
  78. package/src/components/Amelipro/AmeliproAccordionResultList/AmeliproAccordionResultList.vue +2 -1
  79. package/src/components/Amelipro/AmeliproCheckbox/__tests__/AmeliproCheckbox.spec.ts +175 -0
  80. package/src/components/Amelipro/AmeliproCheckbox/__tests__/__snapshots__/AmeliproCheckbox.spec.ts.snap +88 -0
  81. package/src/components/Amelipro/AmeliproCheckboxGroup/__tests__/AmeliproCheckboxGroup.spec.ts +423 -0
  82. package/src/components/Amelipro/AmeliproCheckboxGroup/{tests → __tests__}/__snapshots__/AmeliproCheckboxGroup.spec.ts.snap +112 -78
  83. package/src/components/Amelipro/AmeliproChips/__tests__/AmeliproChips.spec.ts +92 -0
  84. package/src/components/Amelipro/AmeliproChips/__tests__/__snapshots__/AmeliproChips.spec.ts.snap +81 -0
  85. package/src/components/Amelipro/AmeliproDialog/__tests__/AmeliproDialog.spec.ts +257 -0
  86. package/src/components/Amelipro/AmeliproDialog/__tests__/__snapshots__/AmeliproDialog.spec.ts.snap +61 -0
  87. package/src/components/Amelipro/AmeliproDisclosure/__tests__/AmeliproDisclosure.spec.ts +79 -0
  88. package/src/components/Amelipro/AmeliproDisclosure/__tests__/__snapshots__/AmeliproDisclosure.spec.ts.snap +89 -0
  89. package/src/components/Amelipro/AmeliproFooter/AmeliproFooter.vue +6 -7
  90. package/src/components/Amelipro/AmeliproFooter/__tests__/AmeliproFooter.spec.ts +787 -0
  91. package/src/components/Amelipro/AmeliproFooter/__tests__/__snapshots__/AmeliproFooter.spec.ts.snap +318 -0
  92. package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBrandSection/__tests__/AmeliproHeaderBrandSection.spec.ts +167 -0
  93. package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBrandSection/__tests__/__snapshots__/AmeliproHeaderBrandSection.spec.ts.snap +100 -0
  94. package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/__tests__/AmeliproHeaderBar.spec.ts +312 -0
  95. package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/__tests__/__snapshots__/AmeliproHeaderBar.spec.ts.snap +98 -0
  96. package/src/components/Amelipro/AmeliproHeader/__tests__/AmeliproHeader.spec.ts +361 -0
  97. package/src/components/Amelipro/AmeliproHeader/__tests__/__snapshots__/AmeliproHeader.spec.ts.snap +22 -0
  98. package/src/components/Amelipro/AmeliproMenu/__tests__/AmeliproMenu.spec.ts +168 -0
  99. package/src/components/Amelipro/AmeliproMenu/__tests__/__snapshots__/AmeliproMenu.spec.ts.snap +295 -0
  100. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/AmeliproDropdownMenuBtn/__tests__/AmeliproDropdownMenuBtn.spec.ts +128 -0
  101. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/AmeliproDropdownMenuBtn/__tests__/__snapshots__/AmeliproDropdownMenuBtn.spec.ts.snap +67 -0
  102. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/__tests__/AmeliproDropdownMenu.spec.ts +266 -0
  103. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/__tests__/__snapshots__/AmeliproDropdownMenu.spec.ts.snap +134 -0
  104. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproMessagingMenuBtn/__tests__/AmeliproMessagingMenuBtn.spec.ts +72 -0
  105. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproMessagingMenuBtn/__tests__/__snapshots__/AmeliproMessagingMenuBtn.spec.ts.snap +71 -0
  106. package/src/components/Amelipro/AmeliproPageLayout/tests/__snapshots__/AmeliproPageLayout.spec.ts.snap +12 -0
  107. package/src/components/Amelipro/AmeliproTable/AmeliproTable.stories.ts +81 -9
  108. package/src/components/Amelipro/AmeliproTable/AmeliproTable.vue +139 -61
  109. package/src/components/Amelipro/AmeliproTable/__tests__/AmeliproTable.spec.ts +10 -0
  110. package/src/components/Amelipro/AmeliproTable/__tests__/__snapshots__/AmeliproTable.spec.ts.snap +361 -187
  111. package/src/components/Amelipro/AmeliproTable/types.d.ts +11 -0
  112. package/src/components/Captcha/Captcha.mdx +72 -0
  113. package/src/components/Captcha/Captcha.stories.ts +276 -0
  114. package/src/components/Captcha/Captcha.vue +325 -0
  115. package/src/components/Captcha/CaptchaAlert.vue +60 -0
  116. package/src/components/Captcha/CaptchaBase.vue +219 -0
  117. package/src/components/Captcha/CaptchaBtn.vue +35 -0
  118. package/src/components/Captcha/CaptchaForm.vue +58 -0
  119. package/src/components/Captcha/CaptchaImg.vue +41 -0
  120. package/src/components/Captcha/CaptchaInformation.vue +64 -0
  121. package/src/components/Captcha/captchaApi.ts +111 -0
  122. package/src/components/Captcha/icons/volumeUp.vue +11 -0
  123. package/src/components/Captcha/locales.ts +35 -0
  124. package/src/components/Captcha/readme.md +5 -0
  125. package/src/components/Captcha/tests/Captcha.spec.ts +298 -0
  126. package/src/components/Captcha/tests/__snapshots__/Captcha.spec.ts.snap +716 -0
  127. package/src/components/Captcha/types.ts +2 -0
  128. package/src/components/Customs/Selects/SySelect/SySelect.vue +2 -2
  129. package/src/components/Customs/SyCheckbox/SyCheckbox.vue +4 -0
  130. package/src/components/Customs/SyForm/SyForm.stories.ts +133 -23
  131. package/src/components/Customs/SyForm/SyForm.vue +17 -1
  132. package/src/components/Customs/SyTextField/SyTextField.vue +29 -7
  133. package/src/components/DatePicker/CalendarMode/DatePicker.vue +32 -9
  134. package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.vue +154 -18
  135. package/src/components/DatePicker/ComplexDatePicker/tests/ComplexDatePicker.spec.ts +2 -2
  136. package/src/components/DatePicker/DateTextInput/DateTextInput.vue +35 -4
  137. package/src/components/DatePicker/composables/tests/useDatePickerViewMode.spec.ts +107 -72
  138. package/src/components/DatePicker/composables/tests/useMonthButtonCustomization.spec.ts +6 -6
  139. package/src/components/DatePicker/composables/useDatePickerViewMode.ts +57 -7
  140. package/src/components/DatePicker/composables/useMonthButtonCustomization.ts +14 -14
  141. package/src/components/DatePicker/tests/navigation.regression.spec.ts +74 -0
  142. package/src/components/DatePicker/tests/navigation.simple.spec.ts +137 -0
  143. package/src/components/NirField/NirField.stories.ts +85 -2
  144. package/src/components/NirField/NirField.vue +55 -18
  145. package/src/components/NirField/locales.ts +1 -3
  146. package/src/components/PasswordField/PasswordField.vue +39 -7
  147. package/src/components/PhoneField/PhoneField.vue +43 -10
  148. package/src/components/RangeField/tests/RangeField.spec.ts +0 -3
  149. package/src/components/Tables/SyServerTable/SyServerTable.mdx +15 -0
  150. package/src/components/Tables/SyServerTable/SyServerTable.stories.ts +309 -0
  151. package/src/components/Tables/SyServerTable/SyServerTable.vue +18 -3
  152. package/src/components/Tables/SyServerTable/tests/SyServerTable.spec.ts +67 -0
  153. package/src/components/Tables/SyTable/SyTable.mdx +15 -0
  154. package/src/components/Tables/SyTable/SyTable.stories.ts +228 -0
  155. package/src/components/Tables/SyTable/SyTable.vue +18 -3
  156. package/src/components/Tables/SyTable/tests/SyTable.spec.ts +63 -0
  157. package/src/components/Tables/common/SyTablePagination.vue +10 -8
  158. package/src/components/Tables/common/types.ts +4 -0
  159. package/src/components/Tables/common/usePagination.ts +11 -20
  160. package/src/components/Tables/common/useTableCheckbox.ts +23 -11
  161. package/src/components/index.ts +1 -0
  162. package/src/composables/validation/AvecVosComposants.mdx.old +1 -1
  163. package/src/composables/validation/FormValidation.stories.ts.old +5 -5
  164. package/src/composables/validation/useFormValidation.ts +46 -8
  165. package/src/composables/validation/useValidatable.ts +19 -8
  166. package/src/stories/Accessibilite/Introduction.mdx +1 -1
  167. package/src/stories/Demarrer/EnrichirLeDesignSystem.mdx +43 -0
  168. package/src/stories/Demarrer/EnrichirLeDesignSystem.stories.ts +239 -0
  169. package/src/stories/Demarrer/SignalerUneAnomalie.mdx +39 -0
  170. package/src/stories/Demarrer/SignalerUneAnomalie.stories.ts +261 -0
  171. package/dist/main-DyEOPqqn.js +0 -33329
  172. package/src/components/Amelipro/AmeliproCheckbox/tests/AmeliproCheckbox.spec.ts +0 -19
  173. package/src/components/Amelipro/AmeliproCheckbox/tests/__snapshots__/AmeliproCheckbox.spec.ts.snap +0 -40
  174. package/src/components/Amelipro/AmeliproCheckboxGroup/tests/AmeliproCheckboxGroup.spec.ts +0 -46
  175. package/src/components/Amelipro/AmeliproChips/tests/AmeliproChips.spec.ts +0 -16
  176. package/src/components/Amelipro/AmeliproChips/tests/__snapshots__/AmeliproChips.spec.ts.snap +0 -97
  177. package/src/components/Amelipro/AmeliproDialog/tests/AmeliproDialog.spec.ts +0 -24
  178. package/src/components/Amelipro/AmeliproDialog/tests/__snapshots__/AmeliproDialog.spec.ts.snap +0 -134
  179. package/src/components/Amelipro/AmeliproDisclosure/tests/AmeliproDisclosure.spec.ts +0 -19
  180. package/src/components/Amelipro/AmeliproDisclosure/tests/__snapshots__/AmeliproDisclosure.spec.ts.snap +0 -104
  181. package/src/components/Amelipro/AmeliproFooter/tests/AmeliproFooter.spec.ts +0 -15
  182. package/src/components/Amelipro/AmeliproFooter/tests/__snapshots__/AmeliproFooter.spec.ts.snap +0 -432
  183. package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBrandSection/tests/AmeliproHeaderBrandSection.spec.ts +0 -15
  184. package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBrandSection/tests/__snapshots__/AmeliproHeaderBrandSection.spec.ts.snap +0 -131
  185. package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/tests/AmeliproHeaderBar.spec.ts +0 -15
  186. package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/tests/__snapshots__/AmeliproHeaderBar.spec.ts.snap +0 -172
  187. package/src/components/Amelipro/AmeliproHeader/tests/AmeliproHeader.spec.ts +0 -159
  188. package/src/components/Amelipro/AmeliproHeader/tests/__snapshots__/AmeliproHeader.spec.ts.snap +0 -841
  189. package/src/components/Amelipro/AmeliproMenu/tests/AmeliproMenu.spec.ts +0 -85
  190. package/src/components/Amelipro/AmeliproMenu/tests/__snapshots__/AmeliproMenu.spec.ts.snap +0 -537
  191. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/AmeliproDropdownMenuBtn/tests/AmeliproDropdownMenuBtn.spec.ts +0 -16
  192. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/AmeliproDropdownMenuBtn/tests/__snapshots__/AmeliproDropdownMenuBtn.spec.ts.snap +0 -56
  193. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/tests/AmeliproDropdownMenu.spec.ts +0 -28
  194. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/tests/__snapshots__/AmeliproDropdownMenu.spec.ts.snap +0 -300
  195. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproMessagingMenuBtn/tests/AmeliproMessagingMenuBtn.spec.ts +0 -16
  196. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproMessagingMenuBtn/tests/__snapshots__/AmeliproMessagingMenuBtn.spec.ts.snap +0 -89
  197. package/src/components/BackBtn/tests/__snapshots__/BackBtn.spec.ts.snap +0 -45
  198. package/src/components/RangeField/tests/__snapshots__/RangeField.spec.ts.snap +0 -1270
  199. package/src/stories/Demarrer/CreerUneIssue.mdx +0 -67
  200. package/src/stories/Demarrer/components.stories.ts +0 -25
@@ -0,0 +1,361 @@
1
+ import { VueWrapper, mount, shallowMount } from '@vue/test-utils'
2
+ import { beforeEach, describe, expect, it, vi } from 'vitest'
3
+ import AmeliproHeader from '../AmeliproHeader.vue'
4
+ import AmeliproHeaderBar from '../AmeliproHeaderBar/AmeliproHeaderBar.vue'
5
+ import type { AmeliproHeaderInfos } from '../types'
6
+ import type { AmeliproMenuItem } from '@/components/Amelipro/AmeliproMenu/types'
7
+ import type { ComponentProps } from 'vue-component-type-helpers'
8
+ import { DisplayTestComponent } from '@tests/helpers/utils'
9
+ import type { ExpectedPropOptions } from '@tests/types'
10
+ import type { IServiceMenuInfos } from '@/components/Amelipro/ServiceMenu/types'
11
+ import type { PropType } from 'vue'
12
+ import type { RouteLocationRaw } from 'vue-router'
13
+ import type { StructureMenuInfosForHeader } from '@/components/Amelipro/StructureMenu/types'
14
+ import TestHelper from '@tests/helpers/TestHelper'
15
+ import type { UserInformationSummaryInfos } from '@/components/Amelipro/UserInformationSummary/types'
16
+ import UserMenu from '@/components/Amelipro/UserMenu/UserMenu.vue'
17
+ import type { UserMenuInfos } from '@/components/Amelipro/UserMenu/types'
18
+
19
+ // TODO: corriger le warning "[Vue warn]: Unable to locate target #service-menu-infos-unique-id-service-menu at <VOverlay ref=Ref< undefined > id="v-menu-10" class="v-menu" ... > "
20
+
21
+ const expectedPropOptions: ExpectedPropOptions<typeof AmeliproHeader> = {
22
+ ameliproHeaderInfos: {
23
+ type: Object as PropType<AmeliproHeaderInfos>,
24
+ default: undefined,
25
+ },
26
+ backBtnHref: {
27
+ type: String,
28
+ default: undefined,
29
+ },
30
+ backBtnLabel: {
31
+ type: String,
32
+ default: 'Retour',
33
+ },
34
+ backBtnTo: {
35
+ type: [Array, Object, String] as PropType<RouteLocationRaw>,
36
+ default: undefined,
37
+ },
38
+ backoffice: {
39
+ type: Boolean,
40
+ default: false,
41
+ },
42
+ headerTitle: {
43
+ type: String,
44
+ default: undefined,
45
+ },
46
+ homeHref: {
47
+ type: String,
48
+ default: undefined,
49
+ },
50
+ homeLink: {
51
+ type: [Array, Object, String] as PropType<RouteLocationRaw>,
52
+ default: undefined,
53
+ },
54
+ noRightPart: {
55
+ type: Boolean,
56
+ default: false,
57
+ },
58
+ noSubPart: {
59
+ type: Boolean,
60
+ default: false,
61
+ },
62
+ serviceHomeHref: {
63
+ type: String,
64
+ default: undefined,
65
+ },
66
+ serviceHomeTo: {
67
+ type: [Array, Object, String] as PropType<RouteLocationRaw>,
68
+ default: undefined,
69
+ },
70
+ serviceName: {
71
+ type: String,
72
+ default: undefined,
73
+ },
74
+ serviceSubTitle: {
75
+ type: String,
76
+ default: undefined,
77
+ },
78
+ subMenu: {
79
+ type: Boolean,
80
+ default: false,
81
+ },
82
+ subMenuItems: {
83
+ type: Array as PropType<AmeliproMenuItem[]>,
84
+ default: () => [],
85
+ },
86
+ uniqueId: {
87
+ type: String,
88
+ default: undefined,
89
+ },
90
+ unlogged: {
91
+ type: Boolean,
92
+ default: false,
93
+ },
94
+ }
95
+
96
+ const serviceMenuInfosData = (): IServiceMenuInfos => ({
97
+ icon: 'service-menu-infos-icon',
98
+ messageToDisplay: 'Service menu infos message to display',
99
+ servicesContact: [],
100
+ servicesPatient: [],
101
+ servicesPs: [],
102
+ uniqueId: 'service-menu-infos-unique-id',
103
+ })
104
+
105
+ const structureMenuInfosData = (): StructureMenuInfosForHeader => ({
106
+ structuresTabs: [],
107
+ uniqueId: 'structure-menu-infos-unique-id',
108
+ userAdeli: 'structure-menu-infos-user-adeli',
109
+ userName: 'structure-menu-infos-user-name',
110
+ userProfession: 'structure-menu-infos-user-profession',
111
+ userRpps: 'structure-menu-infos-user-rpps',
112
+ })
113
+
114
+ const userInformationSummaryInfosData = (): UserInformationSummaryInfos => ({
115
+ adresseLigne2: '01630 SAINT GENIS POUILLY',
116
+ categorieSpecialite: 'Médecin Radiologue',
117
+ nomCabinet: 'Cabinet : 110 R GERMAINE TILLION',
118
+ userName: 'SAN SOPHIE LE BERQUIER',
119
+ })
120
+
121
+ const userMenuInfosData = (): UserMenuInfos => ({
122
+ userMenuDetailsInfos: {
123
+ adeli: '011006277',
124
+ email: 'sophieberquier@cpam.fr',
125
+ userName: 'SAN SOPHIE LE BERQUIER',
126
+ },
127
+ })
128
+
129
+ const ameliproHeaderInfosData = (): AmeliproHeaderInfos => ({
130
+ backoffice: true,
131
+ headerTitle: 'Amelipro header infos header title',
132
+ homeHref: '/amelipro-header-infos/home-href',
133
+ homeLink: '/amelipro-header-infos/home-link',
134
+ serviceMenuInfos: serviceMenuInfosData(),
135
+ signatureInfos: {
136
+ clickFn: vi.fn(),
137
+ href: '/amelipro-header-infos/signature-href',
138
+ to: '/amelipro-header-infos/signature-to',
139
+ },
140
+ structureMenuInfos: structureMenuInfosData(),
141
+ userInformationSummaryInfos: userInformationSummaryInfosData(),
142
+ userMenuInfos: userMenuInfosData(),
143
+ })
144
+
145
+ // Values pour les props "required"
146
+ const requiredPropValues = (): ComponentProps<typeof AmeliproHeader> => ({})
147
+
148
+ // Valeurs pour les props "modified"
149
+ const modifiedPropValues = (): ComponentProps<typeof AmeliproHeader> => ({
150
+ ameliproHeaderInfos: ameliproHeaderInfosData(),
151
+ backBtnHref: '#modified-back-btn-href',
152
+ backBtnLabel: 'Modified back btn label',
153
+ backBtnTo: '/modified-back-btn-to',
154
+ backoffice: true,
155
+ headerTitle: 'Modified header title',
156
+ homeHref: '#modified-home-href',
157
+ homeLink: '/modified-home-link',
158
+ noRightPart: true,
159
+ noSubPart: true,
160
+ serviceHomeHref: '#modified-service-home-href',
161
+ serviceHomeTo: '/modified-service-home-to',
162
+ serviceName: 'Modified service name',
163
+ serviceSubTitle: 'Modified service sub title',
164
+ subMenu: true,
165
+ subMenuItems: [
166
+ {
167
+ id: 'modified-sub-menu-items-id-1',
168
+ name: 'Modified sub menu items 1',
169
+ },
170
+ ],
171
+ uniqueId: 'modified-unique-id',
172
+ unlogged: true,
173
+
174
+ })
175
+
176
+ const testHelper = new TestHelper(AmeliproHeader)
177
+ testHelper.setExpectedPropOptions(expectedPropOptions)
178
+ .setRequiredPropValues(requiredPropValues)
179
+ .setModifiedPropValues(modifiedPropValues)
180
+
181
+ const displayWrapper = mount(DisplayTestComponent)
182
+
183
+ describe('AmeliproHeader', () => {
184
+ describe('Snapshots', () => {
185
+ testHelper.snapshots()
186
+ })
187
+
188
+ describe('Properties', () => {
189
+ testHelper.properties()
190
+ })
191
+
192
+ describe('Setting props should update props of inner components', () => {
193
+ let vueWrapper: VueWrapper<InstanceType<typeof AmeliproHeader>>
194
+
195
+ describe('AmeliproHeaderBar', () => {
196
+ beforeEach(() => {
197
+ vueWrapper = shallowMount(AmeliproHeader, { props: requiredPropValues() })
198
+ })
199
+
200
+ it('prop uniqueId sets prop uniqueId', async () => {
201
+ expect(vueWrapper.findComponent(AmeliproHeaderBar).props('uniqueId')).toBe(testHelper.default('uniqueId'))
202
+
203
+ const { uniqueId } = modifiedPropValues()
204
+ await vueWrapper.setProps({ uniqueId })
205
+ expect(vueWrapper.findComponent(AmeliproHeaderBar).props('uniqueId')).toBe(testHelper.modified('uniqueId'))
206
+ })
207
+
208
+ it('prop homeHref & ameliproHeaderInfos.homeHref sets prop homeHref', async () => {
209
+ expect(vueWrapper.findComponent(AmeliproHeaderBar).props('homeHref')).toBe(testHelper.default('homeHref'))
210
+
211
+ const { homeHref, ameliproHeaderInfos } = modifiedPropValues()
212
+ await vueWrapper.setProps({ homeHref })
213
+ expect(vueWrapper.findComponent(AmeliproHeaderBar).props('homeHref')).toBe(testHelper.modified('homeHref'))
214
+
215
+ await vueWrapper.setProps({ ameliproHeaderInfos })
216
+ expect(vueWrapper.findComponent(AmeliproHeaderBar).props('homeHref')).toBe('/amelipro-header-infos/home-href')
217
+ })
218
+
219
+ it('prop homeLink & ameliproHeaderInfos.homeLink sets prop homeLink', async () => {
220
+ expect(vueWrapper.findComponent(AmeliproHeaderBar).props('homeLink')).toBe(testHelper.default('homeLink'))
221
+
222
+ const { homeLink, ameliproHeaderInfos } = modifiedPropValues()
223
+ await vueWrapper.setProps({ homeLink })
224
+ expect(vueWrapper.findComponent(AmeliproHeaderBar).props('homeLink')).toBe(testHelper.modified('homeLink'))
225
+
226
+ await vueWrapper.setProps({ ameliproHeaderInfos })
227
+ expect(vueWrapper.findComponent(AmeliproHeaderBar).props('homeLink')).toBe('/amelipro-header-infos/home-link')
228
+ })
229
+
230
+ it('display width sets prop innerWidth', async () => {
231
+ displayWrapper.vm.setWidth(1)
232
+ await vueWrapper.vm.$nextTick()
233
+ expect(vueWrapper.findComponent(AmeliproHeaderBar).props('innerWidth')).toBe('100%')
234
+
235
+ displayWrapper.vm.setWidth(1072)
236
+ await vueWrapper.vm.$nextTick()
237
+ expect(vueWrapper.findComponent(AmeliproHeaderBar).props('innerWidth')).toBe('980px')
238
+
239
+ displayWrapper.vm.setWidth(1240)
240
+ await vueWrapper.vm.$nextTick()
241
+ expect(vueWrapper.findComponent(AmeliproHeaderBar).props('innerWidth')).toBe('1144px')
242
+ })
243
+
244
+ it('prop serviceSubTitle sets prop serviceSubTitle', async () => {
245
+ expect(vueWrapper.findComponent(AmeliproHeaderBar).props('serviceSubTitle')).toBe(testHelper.default('serviceSubTitle'))
246
+
247
+ const { serviceSubTitle } = modifiedPropValues()
248
+ await vueWrapper.setProps({ serviceSubTitle })
249
+ expect(vueWrapper.findComponent(AmeliproHeaderBar).props('serviceSubTitle')).toBe(testHelper.modified('serviceSubTitle'))
250
+ })
251
+
252
+ it('prop headerTitle & ameliproHeaderInfos.headerTitle sets prop serviceTitle', async () => {
253
+ expect(vueWrapper.findComponent(AmeliproHeaderBar).props('serviceTitle')).toBe(testHelper.default('headerTitle'))
254
+
255
+ const { headerTitle, ameliproHeaderInfos } = modifiedPropValues()
256
+ await vueWrapper.setProps({ headerTitle })
257
+ expect(vueWrapper.findComponent(AmeliproHeaderBar).props('serviceTitle')).toBe(testHelper.modified('headerTitle'))
258
+
259
+ await vueWrapper.setProps({ ameliproHeaderInfos })
260
+ expect(vueWrapper.findComponent(AmeliproHeaderBar).props('serviceTitle')).toBe('Amelipro header infos header title')
261
+ })
262
+
263
+ it('prop headerTitle & ameliproHeaderInfos.headerTitle sets prop themeAmelipro', async () => {
264
+ expect(vueWrapper.findComponent(AmeliproHeaderBar).props('themeAmelipro')).toBe(true)
265
+
266
+ const { headerTitle, ameliproHeaderInfos } = modifiedPropValues()
267
+ await vueWrapper.setProps({ headerTitle })
268
+ expect(vueWrapper.findComponent(AmeliproHeaderBar).props('themeAmelipro')).toBe(false)
269
+
270
+ await vueWrapper.setProps({ ameliproHeaderInfos })
271
+ expect(vueWrapper.findComponent(AmeliproHeaderBar).props('themeAmelipro')).toBe(false)
272
+ })
273
+ })
274
+ })
275
+
276
+ describe('Events', () => {
277
+ let vueWrapper: VueWrapper<InstanceType<typeof AmeliproHeader>>
278
+ const buttonFinder = () => vueWrapper.find('.navigation-bar-left-btn')
279
+
280
+ beforeEach(() => {
281
+ vueWrapper = mount(AmeliproHeader, { props: requiredPropValues() })
282
+ })
283
+
284
+ it('test backBtnEvent', async () => {
285
+ expect(vueWrapper.emitted('back-btn-click')).toStrictEqual(undefined)
286
+ await buttonFinder().trigger('click')
287
+ expect(vueWrapper.emitted('back-btn-click')).toStrictEqual([[]])
288
+ })
289
+ })
290
+
291
+ // describe('Slots', () => {
292
+ // describe.todo('#default #rightPart AmeliproIconBtn')
293
+ // describe.todo('#default #rightPart AmeliproIconBtn #prepend')
294
+ // describe.todo('#default #rightPart nav')
295
+ // describe.todo('#default #rightPart nav infos')
296
+ // describe.todo('#default #rightPart nav infos #userInformationSummary UserInformationSummary')
297
+ // describe.todo('#default #rightPart nav list')
298
+ // describe.todo('#default #rightPart nav list item')
299
+ // describe.todo('#default #rightPart nav list item #userMenu')
300
+ // describe.todo('#default #rightPart nav list item #userMenu UserMenu')
301
+ // describe.todo('#default #rightPart nav list item #userMenu UserMenu #complementaryInfo')
302
+ // describe.todo('#default #rightPart nav list item #userMenu UserMenu #complementaryInfo')
303
+ // })
304
+
305
+ describe('Computed', () => {
306
+ let vueWrapper: VueWrapper<InstanceType<typeof AmeliproHeader>>
307
+ let slotWrapper: VueWrapper<InstanceType<typeof AmeliproHeader>>
308
+
309
+ beforeEach(() => {
310
+ vueWrapper = mount(AmeliproHeader, { props: requiredPropValues() })
311
+ slotWrapper = mount(AmeliproHeader, {
312
+ props: requiredPropValues(),
313
+ slots: {
314
+ notificationMenu: '<span id="notif-slot">Test notification slot</span>',
315
+ serviceMenu: '<span id="service-slot">Test service slot</span>',
316
+ structureMenu: '<span id="structure-slot">Test structure menu slot</span>',
317
+ userMenu: '<span id="usermenu-slot">Test user menu slot</span>',
318
+ },
319
+ stubs: { AmeliproHeaderBar },
320
+ })
321
+ })
322
+
323
+ it('Tests innerWidth', async () => {
324
+ displayWrapper.vm.setWidth(1072)
325
+ await vueWrapper.vm.$nextTick()
326
+ expect(vueWrapper.find('.header-bar-content__container').attributes('style')).toStrictEqual('width: 980px; max-width: 980px;')
327
+ displayWrapper.vm.setWidth(1071)
328
+ await vueWrapper.vm.$nextTick()
329
+ expect(vueWrapper.find('.header-bar-content__container').attributes('style')).toStrictEqual('width: 100%; max-width: 100%;')
330
+ displayWrapper.vm.setWidth(1240)
331
+ await vueWrapper.vm.$nextTick()
332
+ expect(vueWrapper.find('.header-bar-content__container').attributes('style')).toStrictEqual('width: 1144px; max-width: 1144px;')
333
+ displayWrapper.vm.setWidth(1072)
334
+ })
335
+
336
+ it('Tests hasUserMenu', async () => {
337
+ // Default slot content
338
+ expect(vueWrapper.findComponent(UserMenu).exists()).toBeFalsy()
339
+
340
+ const { ameliproHeaderInfos } = modifiedPropValues()
341
+ await vueWrapper.setProps({ ameliproHeaderInfos })
342
+ expect(vueWrapper.findComponent(UserMenu).exists()).toBeTruthy()
343
+
344
+ // Custom slot content
345
+ expect(slotWrapper.find('#usermenu-slot').exists()).toBeTruthy()
346
+ })
347
+
348
+ it('Tests hasStructureMenu', () => {
349
+ expect(slotWrapper.find('#structure-slot').exists()).toBeTruthy()
350
+ })
351
+
352
+ it('Tests hasServiceMenu', () => {
353
+ expect(slotWrapper.find('#service-slot').exists()).toBeTruthy()
354
+ })
355
+
356
+ it('Tests hasNotificationMenu', () => {
357
+ expect(vueWrapper.find('#notif-slot').exists()).toBeFalsy()
358
+ expect(slotWrapper.find('#notif-slot').exists()).toBeTruthy()
359
+ })
360
+ })
361
+ })
@@ -0,0 +1,22 @@
1
+ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
+
3
+ exports[`AmeliproHeader > Snapshots > renders the component with all properties filled in 1`] = `
4
+ <amelipro-header-bar-stub
5
+ homehref="/amelipro-header-infos/home-href"
6
+ homelink="/amelipro-header-infos/home-link"
7
+ innerwidth="100%"
8
+ servicesubtitle="Modified service sub title"
9
+ servicetitle="Amelipro header infos header title"
10
+ style="z-index: 1;"
11
+ themeamelipro="false"
12
+ uniqueid="modified-unique-id"
13
+ ></amelipro-header-bar-stub>
14
+ `;
15
+
16
+ exports[`AmeliproHeader > Snapshots > renders the component with only required properties filled in 1`] = `
17
+ <amelipro-header-bar-stub
18
+ innerwidth="100%"
19
+ style="z-index: 1;"
20
+ themeamelipro="true"
21
+ ></amelipro-header-bar-stub>
22
+ `;
@@ -0,0 +1,168 @@
1
+ import { VueWrapper, mount, shallowMount } from '@vue/test-utils'
2
+ import { beforeEach, describe, expect, it } from 'vitest'
3
+ import AmeliproMenu from '../AmeliproMenu.vue'
4
+ import type { AmeliproMenuItem } from '../types'
5
+ import type { ComponentProps } from 'vue-component-type-helpers'
6
+ import type { ExpectedPropOptions } from '@tests/types'
7
+ import type { PropType } from 'vue'
8
+ import type { RouteLocationRaw } from 'vue-router'
9
+ import TestHelper from '@tests/helpers/TestHelper'
10
+ import { attachToApp } from '@tests/helpers/utils'
11
+
12
+ const expectedPropOptions: ExpectedPropOptions<typeof AmeliproMenu> = {
13
+ homeHref: {
14
+ type: String,
15
+ default: undefined,
16
+ },
17
+ homeTo: {
18
+ type: [Array, Object, String] as PropType<RouteLocationRaw>,
19
+ default: undefined,
20
+ },
21
+ items: {
22
+ type: Array as PropType<AmeliproMenuItem[]>,
23
+ default: () => [],
24
+ },
25
+ menuHeader: {
26
+ type: String,
27
+ default: 'Titre du service',
28
+ },
29
+ uniqueId: {
30
+ type: String,
31
+ required: true,
32
+ },
33
+ }
34
+
35
+ const requiredPropValues = (): ComponentProps<typeof AmeliproMenu> => ({ uniqueId: 'required-unique-id' })
36
+
37
+ const modifiedPropValues = (): ComponentProps<typeof AmeliproMenu> => ({
38
+ homeHref: 'modified-home-href',
39
+ homeTo: 'modified-home-to',
40
+ items: [
41
+ {
42
+ actif: false,
43
+ children: [
44
+ {
45
+ actif: false,
46
+ children: [
47
+ {
48
+ id: 'modified-subsubmenu-1-1-1',
49
+ name: 'Modified SubSubMenu 1.1.1',
50
+ to: '/modified/test',
51
+ },
52
+ ],
53
+ id: 'modified-submenu-1-1',
54
+ name: 'Modified SubMenu 1.1',
55
+ },
56
+ ],
57
+ id: 'modified-menu-1',
58
+ name: 'Modified Menu 1',
59
+ },
60
+ ],
61
+ menuHeader: 'Modified menu header',
62
+ uniqueId: 'modified-unique-id',
63
+ })
64
+
65
+ const testHelper = new TestHelper(AmeliproMenu)
66
+ testHelper
67
+ .setExpectedPropOptions(expectedPropOptions)
68
+ .setRequiredPropValues(requiredPropValues)
69
+ .setModifiedPropValues(modifiedPropValues)
70
+ .setMountOptions({
71
+ global: {
72
+ stubs: {
73
+ VNavigationDrawer: { template: '<div><slot /></div>' },
74
+ VDivider: true,
75
+ },
76
+ },
77
+ })
78
+
79
+ describe('AmeliproMenu', () => {
80
+ describe('Snapshots', () => {
81
+ testHelper.snapshots()
82
+ })
83
+
84
+ describe('Properties', () => {
85
+ testHelper.properties()
86
+ })
87
+
88
+ describe('Setting props should update attributes of inner tags', () => {
89
+ let wrapper: VueWrapper<InstanceType<typeof AmeliproMenu>>
90
+
91
+ beforeEach(() => {
92
+ wrapper = shallowMount(AmeliproMenu, {
93
+ autoAttach: attachToApp(),
94
+ global: {
95
+ stubs: {
96
+ VNavigationDrawer: true,
97
+ VDivider: true,
98
+ },
99
+ },
100
+ props: requiredPropValues(),
101
+ })
102
+ })
103
+
104
+ it('prop uniqueId sets attribute id on root container', async () => {
105
+ expect(wrapper.find('.amelipro-menu').attributes('id')).toBe(`${testHelper.default('uniqueId')}-container`)
106
+ const { uniqueId } = modifiedPropValues()
107
+ await wrapper.setProps({ uniqueId })
108
+ expect(wrapper.find('.amelipro-menu').attributes('id')).toBe(`${testHelper.modified('uniqueId')}-container`)
109
+ })
110
+ })
111
+
112
+ describe('Public functions', () => {
113
+ let wrapper: VueWrapper<InstanceType<typeof AmeliproMenu>>
114
+
115
+ describe('test setFocus', () => {
116
+ beforeEach(() => {
117
+ wrapper = mount(AmeliproMenu, {
118
+ autoAttach: attachToApp(),
119
+ global: {
120
+ stubs: {
121
+ VNavigationDrawer: { template: '<div><slot /></div>' },
122
+ VDivider: true,
123
+ },
124
+ },
125
+ props: modifiedPropValues(),
126
+ })
127
+ })
128
+
129
+ it('setFocus on close button', async () => {
130
+ await wrapper.find('.amelipro-menu__btn--open').trigger('click')
131
+ expect(wrapper.find(`#${testHelper.modified('uniqueId')}-close-menu-btn`).exists()).toBe(true)
132
+ await wrapper.find(`#${testHelper.modified('uniqueId')}-close-menu-btn`).trigger('keydown', { key: 'Tab', shiftKey: true })
133
+ expect(wrapper.find(`#${testHelper.modified('uniqueId')}-return-home-menu-btn`).exists()).toBe(true)
134
+ })
135
+
136
+ it('setFocus on home button', async () => {
137
+ await wrapper.find('.amelipro-menu__btn--open').trigger('click')
138
+ expect(wrapper.find(`#${testHelper.modified('uniqueId')}-return-home-menu-btn`).exists()).toBe(true)
139
+ await wrapper.find(`#${testHelper.modified('uniqueId')}-return-home-menu-btn`).trigger('keydown', { key: 'Tab' })
140
+ expect(wrapper.find(`#${testHelper.modified('uniqueId')}-close-menu-btn`).exists()).toBe(true)
141
+ })
142
+ })
143
+ })
144
+
145
+ describe('Events', () => {
146
+ let wrapper: VueWrapper<InstanceType<typeof AmeliproMenu>>
147
+
148
+ beforeEach(() => {
149
+ wrapper = mount(AmeliproMenu, {
150
+ autoAttach: true,
151
+ global: {
152
+ stubs: {
153
+ VNavigationDrawer: true,
154
+ VDivider: true,
155
+ },
156
+ },
157
+ props: modifiedPropValues(),
158
+ })
159
+ })
160
+
161
+ it('Escape key emits escape event', async () => {
162
+ await wrapper.find('.amelipro-menu__btn--open').trigger('click')
163
+ expect(wrapper.emitted('escape')).toBeUndefined()
164
+ await window.dispatchEvent(new KeyboardEvent('keydown', { code: 'Escape' }))
165
+ expect(wrapper.emitted('escape')).toStrictEqual([[]])
166
+ })
167
+ })
168
+ })