@icij/murmur-next 4.0.0 → 4.0.3

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 (334) hide show
  1. package/README.md +15 -19
  2. package/dist/lib/components/AccordionStep.vue.d.ts +79 -0
  3. package/dist/lib/components/AccordionWrapper.vue.d.ts +33 -0
  4. package/dist/lib/components/ActiveTextTruncate.vue.d.ts +101 -0
  5. package/dist/lib/components/AdvancedLinkForm.vue.d.ts +168 -0
  6. package/dist/lib/components/Brand.vue.d.ts +55 -0
  7. package/dist/lib/components/BrandExpansion.vue.d.ts +105 -0
  8. package/dist/lib/components/ConfirmButton.vue.d.ts +158 -0
  9. package/dist/lib/components/ContentPlaceholder.vue.d.ts +44 -0
  10. package/dist/lib/components/CustomPagination.vue.d.ts +130 -0
  11. package/dist/lib/components/DigitsInput.vue.d.ts +66 -0
  12. package/dist/lib/components/DonateForm.vue.d.ts +46 -0
  13. package/dist/lib/components/EmbedForm.vue.d.ts +121 -0
  14. package/dist/lib/components/EmbeddableFooter.vue.d.ts +103 -0
  15. package/dist/lib/components/FollowUsPopover.vue.d.ts +16 -0
  16. package/dist/lib/components/GenericFooter.vue.d.ts +47 -0
  17. package/dist/lib/components/GenericHeader.vue.d.ts +928 -0
  18. package/dist/lib/components/HapticCopy.vue.d.ts +156 -0
  19. package/dist/lib/components/ImddbHeader.vue.d.ts +960 -0
  20. package/dist/lib/components/OrdinalLegend.vue.d.ts +87 -0
  21. package/dist/lib/components/RangePicker.vue.d.ts +196 -0
  22. package/dist/lib/components/ResponsiveIframe.vue.d.ts +45 -0
  23. package/dist/lib/components/ScaleLegend.vue.d.ts +101 -0
  24. package/dist/lib/components/SecretInput.vue.d.ts +99 -0
  25. package/dist/lib/components/SelectableDropdown.vue.d.ts +210 -0
  26. package/dist/lib/components/SharingOptions.vue.d.ts +153 -0
  27. package/dist/lib/components/SharingOptionsLink.vue.d.ts +200 -0
  28. package/dist/lib/components/SignUpForm.vue.d.ts +141 -0
  29. package/dist/lib/components/SlideUpDown.vue.d.ts +74 -0
  30. package/dist/lib/components/TexturedDeck.vue.d.ts +89 -0
  31. package/dist/lib/components/TinyPagination.vue.d.ts +188 -0
  32. package/dist/lib/composables/chart.d.ts +48 -0
  33. package/dist/lib/composables/resizeObserver.d.ts +22 -0
  34. package/dist/lib/composables/sendEmail.d.ts +6 -0
  35. package/dist/lib/config.d.ts +19 -0
  36. package/dist/lib/config.default.d.ts +34 -0
  37. package/dist/lib/datavisualisations/BarChart.vue.d.ts +234 -0
  38. package/dist/lib/datavisualisations/ColumnChart.vue.d.ts +404 -0
  39. package/dist/lib/datavisualisations/LineChart.vue.d.ts +200 -0
  40. package/dist/lib/datavisualisations/StackedBarChart.vue.d.ts +342 -0
  41. package/dist/lib/datavisualisations/StackedColumnChart.vue.d.ts +412 -0
  42. package/dist/lib/enums.d.ts +32 -0
  43. package/dist/lib/i18n.d.ts +4 -0
  44. package/dist/lib/keys.d.ts +2 -0
  45. package/dist/lib/main.d.ts +52 -0
  46. package/dist/lib/maps/ChoroplethMap.vue.d.ts +460 -0
  47. package/dist/lib/maps/ChoroplethMapAnnotation.vue.d.ts +188 -0
  48. package/dist/lib/maps/SymbolMap.vue.d.ts +276 -0
  49. package/dist/lib/murmur.css +1 -0
  50. package/dist/lib/murmur.js +44661 -0
  51. package/dist/lib/murmur.js.map +1 -0
  52. package/dist/lib/murmur.umd.cjs +837 -0
  53. package/dist/lib/murmur.umd.cjs.map +1 -0
  54. package/dist/lib/types.d.ts +44 -0
  55. package/dist/lib/utils/animation.d.ts +8 -0
  56. package/dist/lib/utils/assets.d.ts +2 -0
  57. package/dist/lib/utils/clipboard.d.ts +2 -0
  58. package/dist/lib/utils/iframe-resizer.d.ts +10 -0
  59. package/dist/lib/utils/placeholder.d.ts +12 -0
  60. package/dist/lib/utils/placeholderTypes.d.ts +18 -0
  61. package/dist/lib/utils/strings.d.ts +1 -0
  62. package/lib/components/AccordionStep.vue +53 -42
  63. package/lib/components/AccordionWrapper.vue +25 -24
  64. package/lib/components/ActiveTextTruncate.vue +44 -22
  65. package/lib/components/AdvancedLinkForm.vue +96 -46
  66. package/lib/components/Brand.vue +30 -23
  67. package/lib/components/BrandExpansion.vue +12 -3
  68. package/lib/components/ConfirmButton.vue +30 -26
  69. package/lib/components/ContentPlaceholder.vue +11 -7
  70. package/lib/components/CustomPagination.vue +50 -32
  71. package/lib/components/DigitsInput.vue +64 -60
  72. package/lib/components/DonateForm.vue +112 -83
  73. package/lib/components/EmbedForm.vue +37 -21
  74. package/lib/components/EmbeddableFooter.vue +14 -10
  75. package/lib/components/FollowUsPopover.vue +42 -40
  76. package/lib/components/GenericFooter.vue +98 -23
  77. package/lib/components/GenericHeader.vue +66 -29
  78. package/lib/components/HapticCopy.vue +41 -29
  79. package/lib/components/ImddbHeader.vue +113 -92
  80. package/lib/components/OrdinalLegend.vue +43 -20
  81. package/lib/components/RangePicker.vue +63 -42
  82. package/lib/components/ResponsiveIframe.vue +9 -2
  83. package/lib/components/ScaleLegend.vue +56 -18
  84. package/lib/components/SecretInput.vue +7 -8
  85. package/lib/components/SelectableDropdown.vue +119 -74
  86. package/lib/components/SharingOptions.vue +93 -36
  87. package/lib/components/SharingOptionsLink.vue +11 -5
  88. package/lib/components/SignUpForm.vue +44 -23
  89. package/lib/components/SlideUpDown.vue +7 -2
  90. package/lib/components/TexturedDeck.vue +24 -14
  91. package/lib/components/TinyPagination.vue +35 -22
  92. package/lib/composables/chart.ts +174 -157
  93. package/lib/composables/resizeObserver.ts +29 -29
  94. package/lib/composables/sendEmail.ts +53 -42
  95. package/lib/config.default.ts +17 -10
  96. package/lib/config.ts +34 -27
  97. package/lib/datavisualisations/BarChart.vue +48 -42
  98. package/lib/datavisualisations/ColumnChart.vue +133 -89
  99. package/lib/datavisualisations/LineChart.vue +79 -57
  100. package/lib/datavisualisations/StackedBarChart.vue +116 -68
  101. package/lib/datavisualisations/StackedColumnChart.vue +196 -115
  102. package/lib/enums.ts +25 -15
  103. package/lib/i18n.ts +3 -3
  104. package/lib/keys.ts +2 -2
  105. package/lib/main.ts +14 -10
  106. package/lib/maps/ChoroplethMap.vue +299 -160
  107. package/lib/maps/ChoroplethMapAnnotation.vue +29 -18
  108. package/lib/maps/SymbolMap.vue +194 -123
  109. package/lib/shims-bootstrap-vue.d.ts +1 -1
  110. package/lib/shims-vue.d.ts +3 -3
  111. package/lib/styles/functions.scss +10 -6
  112. package/lib/styles/lib.scss +2 -4
  113. package/lib/styles/mixins.scss +8 -8
  114. package/lib/styles/utilities.scss +1 -1
  115. package/lib/styles/variables.scss +24 -18
  116. package/lib/types.ts +26 -10
  117. package/lib/utils/animation.ts +4 -4
  118. package/lib/utils/assets.ts +31 -28
  119. package/lib/utils/clipboard.ts +16 -10
  120. package/lib/utils/iframe-resizer.ts +18 -13
  121. package/lib/utils/placeholder.ts +54 -23
  122. package/lib/utils/placeholderTypes.ts +3 -3
  123. package/package.json +21 -2
  124. package/.github/workflows/deploy-github-pages.yaml +0 -50
  125. package/.storybook/app.scss +0 -14
  126. package/.storybook/doc_variables.scss +0 -20
  127. package/.storybook/main.ts +0 -35
  128. package/.storybook/preview-head.html +0 -2
  129. package/.storybook/preview.ts +0 -32
  130. package/deploy.js +0 -15
  131. package/docs/components/ApiTable.vue +0 -171
  132. package/docs/components/App.vue +0 -146
  133. package/docs/components/CollapsibleBlock.vue +0 -122
  134. package/docs/components/DocsHeader.vue +0 -68
  135. package/docs/components/DocsMenu.vue +0 -201
  136. package/docs/components/DocsMenuSection.vue +0 -109
  137. package/docs/components/EditLink.vue +0 -49
  138. package/docs/components/OutboundLink.vue +0 -13
  139. package/docs/components/PalettePresenter.vue +0 -96
  140. package/docs/components/RepositoryLink.vue +0 -28
  141. package/docs/components/SampleCard.vue +0 -119
  142. package/docs/main.js +0 -42
  143. package/docs/pages/components/accordion/doc.md +0 -96
  144. package/docs/pages/components/active-text-truncate/doc.md +0 -44
  145. package/docs/pages/components/advanced-link-form/doc.md +0 -105
  146. package/docs/pages/components/brand/doc.md +0 -30
  147. package/docs/pages/components/brand-expansion/doc.md +0 -70
  148. package/docs/pages/components/confirm-button/doc.md +0 -91
  149. package/docs/pages/components/content-placeholder/doc.md +0 -16
  150. package/docs/pages/components/custom-pagination/doc.md +0 -61
  151. package/docs/pages/components/digits-input/doc.md +0 -28
  152. package/docs/pages/components/donate-form/doc.md +0 -20
  153. package/docs/pages/components/embed-form/doc.md +0 -22
  154. package/docs/pages/components/embeddable-footer/doc.md +0 -60
  155. package/docs/pages/components/follow-us-popover/doc.md +0 -5
  156. package/docs/pages/components/generic-footer/doc.md +0 -21
  157. package/docs/pages/components/generic-header/doc.md +0 -24
  158. package/docs/pages/components/haptic-copy/doc.md +0 -27
  159. package/docs/pages/components/imddb-header/doc.md +0 -23
  160. package/docs/pages/components/ordinal-legend/doc.md +0 -44
  161. package/docs/pages/components/range-picker/doc.md +0 -86
  162. package/docs/pages/components/responsive-iframe/doc.md +0 -13
  163. package/docs/pages/components/scale-legend/doc.md +0 -65
  164. package/docs/pages/components/secret-input/doc.md +0 -12
  165. package/docs/pages/components/selectable-dropdown/doc.md +0 -156
  166. package/docs/pages/components/sharing-options/doc.md +0 -13
  167. package/docs/pages/components/sharing-options-link/doc.md +0 -36
  168. package/docs/pages/components/sign-up-form/doc.md +0 -13
  169. package/docs/pages/components/slide-up-down/doc.md +0 -28
  170. package/docs/pages/components/textured-deck/doc.md +0 -78
  171. package/docs/pages/components/tiny-pagination/doc.md +0 -92
  172. package/docs/pages/datavisualisation/bars/doc.md +0 -110
  173. package/docs/pages/datavisualisation/columns/doc.md +0 -165
  174. package/docs/pages/datavisualisation/lines/doc.md +0 -139
  175. package/docs/pages/datavisualisation/stacked-bar/doc.md +0 -160
  176. package/docs/pages/datavisualisation/stacked-column/doc.md +0 -191
  177. package/docs/pages/getting-started/about-icij/doc.md +0 -13
  178. package/docs/pages/getting-started/custom-bootstrap/doc.md +0 -36
  179. package/docs/pages/getting-started/installation-guide/doc.md +0 -59
  180. package/docs/pages/getting-started/internationalization/doc.md +0 -74
  181. package/docs/pages/maps/choropleth-map/doc.md +0 -420
  182. package/docs/pages/maps/choropleth-map-annotation/doc.md +0 -373
  183. package/docs/pages/maps/symbol-map/doc.md +0 -203
  184. package/docs/pages/structure/breakpoints/doc.md +0 -3
  185. package/docs/pages/structure/grid/doc.md +0 -3
  186. package/docs/pages/utilities/assets/doc.md +0 -138
  187. package/docs/pages/utilities/config/doc.md +0 -52
  188. package/docs/pages/utilities/iframes/doc.md +0 -3
  189. package/docs/pages/visual/colors/doc.md +0 -31
  190. package/docs/pages/visual/iconography/doc.md +0 -56
  191. package/docs/pages/visual/states/doc.md +0 -77
  192. package/docs/pages/visual/themes/doc.md +0 -3
  193. package/docs/pages/visual/typography/doc.md +0 -71
  194. package/docs/routes.js +0 -25
  195. package/docs/store/index.js +0 -21
  196. package/docs/styles/app.scss +0 -36
  197. package/docs/styles/variables.scss +0 -20
  198. package/loaders/highlight-loader.js +0 -13
  199. package/loaders/markdown-loader.js +0 -91
  200. package/loaders/metadata-loader.js +0 -18
  201. package/loaders/sass-extract-loader.js +0 -14
  202. package/loaders/vue-docgen-loader.js +0 -14
  203. package/plugins/MdPluginTypes.ts +0 -10
  204. package/plugins/docs.ts +0 -50
  205. package/plugins/front-matter.ts +0 -36
  206. package/plugins/highlight.ts +0 -27
  207. package/plugins/markdown-it/api-table.ts +0 -25
  208. package/plugins/markdown-it/sample-card.ts +0 -31
  209. package/plugins/plugin-delete.ts +0 -47
  210. package/plugins/plugin-docgen.ts +0 -23
  211. package/plugins/sass-vars.ts +0 -25
  212. package/plugins/vue-docgen.ts +0 -29
  213. package/public/android-chrome-192x192.png +0 -0
  214. package/public/android-chrome-512x512.png +0 -0
  215. package/public/apple-touch-icon.png +0 -0
  216. package/public/assets/img/arrow-bottom.svg +0 -3
  217. package/public/assets/img/texture-brick-black.jpg +0 -0
  218. package/public/assets/img/texture-brick.jpg +0 -0
  219. package/public/assets/img/texture-carbon-black.jpg +0 -0
  220. package/public/assets/img/texture-carbon.jpg +0 -0
  221. package/public/assets/img/texture-crack-black.jpg +0 -0
  222. package/public/assets/img/texture-crack.jpg +0 -0
  223. package/public/assets/img/texture-rock-black.jpg +0 -0
  224. package/public/assets/img/texture-rock.jpg +0 -0
  225. package/public/assets/img/texture-sand-black.jpg +0 -0
  226. package/public/assets/img/texture-sand.jpg +0 -0
  227. package/public/assets/img/texture-silk-black.jpg +0 -0
  228. package/public/assets/img/texture-silk.jpg +0 -0
  229. package/public/assets/topojson/france-departments.json +0 -1
  230. package/public/assets/topojson/paris-arrondissements.json +0 -1
  231. package/public/assets/topojson/world-countries-sans-antarctica.json +0 -1
  232. package/public/favicon-16x16.png +0 -0
  233. package/public/favicon-32x32.png +0 -0
  234. package/public/favicon.ico +0 -0
  235. package/public/site.webmanifest +0 -1
  236. package/stories/assets/code-brackets.svg +0 -1
  237. package/stories/assets/colors.svg +0 -1
  238. package/stories/assets/comments.svg +0 -1
  239. package/stories/assets/direction.svg +0 -1
  240. package/stories/assets/flow.svg +0 -1
  241. package/stories/assets/plugin.svg +0 -1
  242. package/stories/assets/repo.svg +0 -1
  243. package/stories/assets/stackalt.svg +0 -1
  244. package/stories/getting-started/about-icij.mdx +0 -14
  245. package/stories/getting-started/custom-bootstrap.mdx +0 -23
  246. package/stories/getting-started/installation-guide.mdx +0 -62
  247. package/stories/getting-started/internationalization.mdx +0 -63
  248. package/stories/murmur/components/AccordionStep.stories.ts +0 -33
  249. package/stories/murmur/components/AccordionWrapper.stories.ts +0 -69
  250. package/stories/murmur/components/ActiveTextTruncate.stories.ts +0 -32
  251. package/stories/murmur/components/AdvancedLinkForm.stories.ts +0 -77
  252. package/stories/murmur/components/Brand.stories.ts +0 -30
  253. package/stories/murmur/components/BrandExpansion.stories.ts +0 -41
  254. package/stories/murmur/components/ConfirmButton.stories.ts +0 -40
  255. package/stories/murmur/components/ContentPlaceholder.stories.ts +0 -41
  256. package/stories/murmur/components/CustomPagination.stories.ts +0 -42
  257. package/stories/murmur/components/DigitsInput.stories.ts +0 -29
  258. package/stories/murmur/components/DonateForm.stories.ts +0 -29
  259. package/stories/murmur/components/EmbedForm.stories.ts +0 -35
  260. package/stories/murmur/components/EmbeddableFooter.stories.ts +0 -59
  261. package/stories/murmur/components/FollowUsPopover.stories.ts +0 -24
  262. package/stories/murmur/components/GenericFooter.stories.ts +0 -27
  263. package/stories/murmur/components/GenericHeader.stories.ts +0 -27
  264. package/stories/murmur/components/HapticCopy.stories.ts +0 -40
  265. package/stories/murmur/components/ImddbHeader.stories.ts +0 -27
  266. package/stories/murmur/components/OrdinalLegend.stories.ts +0 -49
  267. package/stories/murmur/components/RangePicker.stories.ts +0 -98
  268. package/stories/murmur/components/ResponsiveIframe.stories.ts +0 -24
  269. package/stories/murmur/components/ScaleLegend.stories.ts +0 -65
  270. package/stories/murmur/components/SecretInput.stories.ts +0 -60
  271. package/stories/murmur/components/SelectableDropdown.stories.ts +0 -143
  272. package/stories/murmur/components/SharingOptions.stories.ts +0 -32
  273. package/stories/murmur/components/SharingOptionsLink.stories.ts +0 -53
  274. package/stories/murmur/components/SignUpForm.stories.ts +0 -51
  275. package/stories/murmur/components/SlideUpDown.stories.ts +0 -32
  276. package/stories/murmur/components/TexturedDeck.stories.ts +0 -83
  277. package/stories/murmur/components/TinyPagination.stories.ts +0 -65
  278. package/stories/murmur/datavisualisations/BarChart.stories.ts +0 -54
  279. package/stories/murmur/datavisualisations/ColumnChart.stories.ts +0 -88
  280. package/stories/murmur/datavisualisations/LineChart.stories.ts +0 -139
  281. package/stories/murmur/datavisualisations/StackedBarChart.stories.ts +0 -199
  282. package/stories/murmur/datavisualisations/StackedColumnChart.stories.ts +0 -136
  283. package/stories/murmur/decorators.ts +0 -108
  284. package/stories/murmur/maps/ChoroplethMap.stories.ts +0 -440
  285. package/stories/murmur/maps/ChoroplethMapAnnotation.stories.ts +0 -26
  286. package/stories/murmur/maps/SymbolMap.stories.ts +0 -24
  287. package/stories/murmur/utils.ts +0 -7
  288. package/tests/unit/components/AccordionStep.spec.ts +0 -157
  289. package/tests/unit/components/AccordionWrapper.spec.ts +0 -57
  290. package/tests/unit/components/ActiveTextTruncate.spec.js +0 -30
  291. package/tests/unit/components/AdvancedLinkForm.spec.js +0 -124
  292. package/tests/unit/components/Brand.spec.js +0 -50
  293. package/tests/unit/components/ContentPlaceholder.spec.js +0 -29
  294. package/tests/unit/components/CustomPagination.spec.js +0 -72
  295. package/tests/unit/components/DigitsInput.spec.ts +0 -157
  296. package/tests/unit/components/DonateForm.spec.js +0 -149
  297. package/tests/unit/components/EmbedForm.spec.js +0 -108
  298. package/tests/unit/components/EmbeddableFooter.spec.js +0 -11
  299. package/tests/unit/components/Fa.spec.js +0 -18
  300. package/tests/unit/components/FollowUsPopover.spec.js +0 -29
  301. package/tests/unit/components/GenericFooter.spec.js +0 -29
  302. package/tests/unit/components/GenericHeader.spec.js +0 -104
  303. package/tests/unit/components/HapticCopy.spec.js +0 -123
  304. package/tests/unit/components/ImddbHeader.spec.js +0 -96
  305. package/tests/unit/components/OrdinalLegend.spec.js +0 -120
  306. package/tests/unit/components/RangePicker.spec.ts +0 -87
  307. package/tests/unit/components/ResponsiveIframe.spec.js +0 -20
  308. package/tests/unit/components/ScaleLegend.spec.js +0 -139
  309. package/tests/unit/components/SecretInput.spec.js +0 -81
  310. package/tests/unit/components/SelectableDropdown.spec.js +0 -160
  311. package/tests/unit/components/SharingOptions.spec.js +0 -125
  312. package/tests/unit/components/SharingOptionsLink.spec.js +0 -184
  313. package/tests/unit/components/SignUpForm.spec.js +0 -145
  314. package/tests/unit/components/SlideUpDown.spec.js +0 -59
  315. package/tests/unit/components/TinyPagination.spec.js +0 -46
  316. package/tests/unit/config.spec.js +0 -136
  317. package/tests/unit/datavisualisations/BarChart.spec.js +0 -63
  318. package/tests/unit/datavisualisations/ColumnChart.spec.js +0 -344
  319. package/tests/unit/datavisualisations/LineChart.spec.js +0 -155
  320. package/tests/unit/datavisualisations/StackedBarChart.spec.js +0 -294
  321. package/tests/unit/datavisualisations/StackedColumnChart.spec.js +0 -443
  322. package/tests/unit/i18n.spec.ts +0 -19
  323. package/tests/unit/main.spec.js +0 -82
  324. package/tests/unit/maps/ChoroplethMap.spec.js +0 -214
  325. package/tests/unit/maps/ChoroplethMapAnnotation.spec.ts +0 -186
  326. package/tests/unit/maps/SymbolMap.spec.js +0 -92
  327. package/tests/unit/require.spec.js +0 -22
  328. package/tests/unit/setup.js +0 -13
  329. package/tests/unit/utils/assets.spec.js +0 -61
  330. package/tests/unit/utils/clipboard.spec.js +0 -18
  331. package/tests/unit/utils/iframe-resizer.spec.js +0 -71
  332. package/tsconfig.json +0 -35
  333. package/vite.config.ts +0 -79
  334. package/vitest.config.ts +0 -19
@@ -1,46 +0,0 @@
1
- import { mount } from '@vue/test-utils'
2
- import TinyPagination from '@/components/TinyPagination.vue'
3
-
4
- describe('TinyPagination.vue', () => {
5
- it('is a Vue instance', () => {
6
- const wrapper = mount(TinyPagination)
7
- expect(wrapper.vm).toBeTruthy()
8
- })
9
-
10
- it('renders the pagination component', () => {
11
- const wrapper = mount(TinyPagination)
12
- expect(wrapper.find('.tiny-pagination').exists()).toEqual(true)
13
- })
14
-
15
- it('expects totalRows, perPage, value as props', () => {
16
- const propsData = { totalRows: 200, perPage: 20, modelValue: 2 }
17
- const wrapper = mount(TinyPagination, { propsData })
18
- expect(wrapper.vm.totalRows).toBe(200)
19
- expect(wrapper.vm.perPage).toBe(20)
20
- expect(wrapper.vm.modelValue).toBe(2)
21
- })
22
-
23
- it('calculates numberOfPages based on the totalRows and perPage prop values', () => {
24
- const propsData = { totalRows: 200, perPage: 20 }
25
- const wrapper = mount(TinyPagination, { propsData })
26
- expect(wrapper.vm.numberOfPages).toBe(10)
27
- })
28
-
29
- it('emits an event on form submit with the currentPageInput', async () => {
30
- const propsData = { totalRows: 200, perPage: 20, }
31
- const wrapper = mount(TinyPagination, { propsData })
32
- wrapper.vm.currentPageInput = 3
33
- await wrapper.vm.applyPageForm()
34
- await wrapper.vm.$nextTick()
35
- expect(wrapper.emitted("update:modelValue")[0]).toContain(3)
36
- })
37
-
38
- it('does not emit an event if the currentPageInput is invalid', async () => {
39
- const propsData = { totalRows: 200, perPage: 20 }
40
- const wrapper = mount(TinyPagination, { propsData })
41
- wrapper.vm.currentPageInput = "azrazzer"
42
- await wrapper.vm.applyPageForm()
43
- await wrapper.vm.$nextTick()
44
- expect(wrapper.emitted()).toEqual({})
45
- })
46
- })
@@ -1,136 +0,0 @@
1
- import { config } from '@vue/test-utils';
2
-
3
- import { default as murmurConfig, Config } from '@/config'
4
- import Murmur from '@/main'
5
- import { getCurrentInstance, h} from "vue";
6
- import { mount } from "@vue/test-utils";
7
- import {beforeAll} from "vitest";
8
- describe('config.ts', () => {
9
- beforeAll(()=>{
10
- config.global.plugins = []
11
- })
12
- it('should be an instance of `Config`', () => {
13
- expect(murmurConfig).toBeInstanceOf(Config)
14
- })
15
-
16
- it('should define a scope named `foo`', () => {
17
- murmurConfig.set('foo.bar', 'uwu')
18
- expect(murmurConfig.scope('foo')).toBeInstanceOf(Config)
19
- expect(murmurConfig.scope('foo').get('bar')).toBe('uwu')
20
- })
21
-
22
- it('should define two scopes named `foo` and `bar`', () => {
23
- murmurConfig.set('foo.bar', 'uwu')
24
- murmurConfig.set('bar.foo', 'owo')
25
- expect(murmurConfig.scope('foo').get('bar')).toBe('uwu')
26
- expect(murmurConfig.scope('bar').get('foo')).toBe('owo')
27
- expect(murmurConfig.scopes.foo).toBeDefined()
28
- expect(murmurConfig.scopes.bar).toBeDefined()
29
- })
30
-
31
- it('should define two values named `foo` and `bar`', () => {
32
- murmurConfig.set('foo', 'uwu')
33
- murmurConfig.set('bar', 'owo')
34
- expect(murmurConfig.values.foo).toBeDefined()
35
- expect(murmurConfig.values.bar).toBeDefined()
36
- })
37
-
38
- it('should merge the given object with the murmurConfig', () => {
39
- murmurConfig.set('foo', 'erased')
40
- murmurConfig.merge({ 'foo': 'foo', 'bar': 'bar' })
41
- expect(murmurConfig.get('foo')).toBe('foo')
42
- expect(murmurConfig.get('bar')).toBe('bar')
43
- })
44
-
45
- it('should merge all the boolean values', () => {
46
- murmurConfig.merge({ 'foo': true, 'bar': false })
47
- expect(murmurConfig.get('foo')).toBe(true)
48
- expect(murmurConfig.get('bar')).toBe(false)
49
- murmurConfig.merge({ 'foo': false, 'bar': true })
50
- expect(murmurConfig.get('foo')).toBe(false)
51
- expect(murmurConfig.get('bar')).toBe(true)
52
- })
53
-
54
- it('should merge the given object and its scopes with the murmurConfig', () => {
55
- murmurConfig.merge({ 'foo.bar': 'foobar' })
56
- expect(murmurConfig.scope('foo').get('bar')).toBe('foobar')
57
- murmurConfig.merge({ 'bar.foo': 'barfoo' })
58
- expect(murmurConfig.scope('bar').get('foo')).toBe('barfoo')
59
- })
60
-
61
- it('should merge the given object with the murmurConfig with a new key', () => {
62
- expect(murmurConfig.get('help')).toBeUndefined()
63
- murmurConfig.merge({ 'help': 'link' })
64
- expect(murmurConfig.get('help')).toBe('link')
65
- })
66
-
67
- it('should give the value of a given key as true', () => {
68
- murmurConfig.set('activated', 1)
69
- expect(murmurConfig.is('activated')).toBeTruthy()
70
- murmurConfig.set('activated', '1')
71
- expect(murmurConfig.is('activated')).toBeTruthy()
72
- murmurConfig.set('activated', 'true')
73
- expect(murmurConfig.is('activated')).toBeTruthy()
74
- murmurConfig.set('activated', true)
75
- expect(murmurConfig.is('activated')).toBeTruthy()
76
- murmurConfig.set('activated', 'foo')
77
- expect(murmurConfig.is('activated')).toBeTruthy()
78
- murmurConfig.set('activated', 'bar')
79
- expect(murmurConfig.is('activated')).toBeTruthy()
80
- })
81
-
82
- it('should give the value of a given key as false', () => {
83
- murmurConfig.set('activated', 0)
84
- expect(murmurConfig.is('activated')).toBeFalsy()
85
- murmurConfig.set('activated', '0')
86
- expect(murmurConfig.is('activated')).toBeFalsy()
87
- murmurConfig.set('activated', 'false')
88
- expect(murmurConfig.is('activated')).toBeFalsy()
89
- murmurConfig.set('activated', false)
90
- expect(murmurConfig.is('activated')).toBeFalsy()
91
- })
92
-
93
- it('should give the value of a given key as false (when it\'s true)', () => {
94
- murmurConfig.set('activated', 0)
95
- expect(murmurConfig.isnt('activated')).toBeTruthy()
96
- murmurConfig.set('activated', '0')
97
- expect(murmurConfig.isnt('activated')).toBeTruthy()
98
- murmurConfig.set('activated', 'false')
99
- expect(murmurConfig.isnt('activated')).toBeTruthy()
100
- murmurConfig.set('activated', false)
101
- expect(murmurConfig.isnt('activated')).toBeTruthy()
102
- })
103
-
104
-
105
- it('should create a reactive property', async () => {
106
- const component = {
107
- setup(){
108
- const app = getCurrentInstance();
109
- return ()=> h('div', app.appContext.config.globalProperties.$config.get('reactiveProp', 'bar'))
110
- }
111
- }
112
-
113
- const wrapper = mount(component,{global: {plugins: [Murmur]} })
114
- expect(wrapper.text()).toBe('bar')
115
- wrapper.vm.$config.set('reactiveProp', 'baz')
116
- await wrapper.vm.$nextTick()
117
- expect(wrapper.text()).toBe('baz')
118
- })
119
-
120
-
121
- it('should create a nested reactive property from inside the component', async () => {
122
- //configVTU.global.plugins.push(Murmur);
123
- const component = {
124
- setup(){
125
- const app = getCurrentInstance();
126
- return ()=>h('div', app.appContext.config.globalProperties.$config.get('nested.reactiveProp', 'bar'))
127
- }
128
- }
129
-
130
- const wrapper = mount(component, {global: {plugins: [Murmur]} })
131
- expect(wrapper.text()).toBe('bar')
132
- wrapper.vm.$config.set('nested.reactiveProp', 'baz')
133
- await wrapper.vm.$nextTick()
134
- expect(wrapper.text()).toBe('baz')
135
- })
136
- })
@@ -1,63 +0,0 @@
1
- import * as d3 from 'd3'
2
- import { mount,flushPromises} from '@vue/test-utils'
3
- import BarChart from "@/datavisualisations/BarChart.vue";
4
-
5
- vi.mock('d3', async () => {
6
- return {
7
- ...await vi.importActual('d3'),
8
- }
9
- })
10
-
11
- // Mock HTML element offset so the size of the chart can be calculated
12
- // dynamicly using JSDOM and tests
13
- Object.defineProperties(window.HTMLElement.prototype, {
14
- offsetWidth: {
15
- get () { return parseFloat(this.style.width) || 0 }
16
- },
17
- offsetHeight: {
18
- get () { return parseFloat(this.style.height) || 0 }
19
- }
20
- })
21
-
22
- describe('BarChart.vue', () => {
23
-
24
- describe('a five columns chart with 1 highlight and no y axis', () => {
25
-
26
- let wrapper
27
-
28
- beforeEach(async () => {
29
-
30
- const propsData = {
31
- data: [
32
- {
33
- "label": "Warned about local complications",
34
- "value": 52
35
- },
36
- {
37
- "label": "Not warned",
38
- "value": 42,
39
- "highlight": true
40
- },
41
- {
42
- "label": "Warned thoroughly",
43
- "value": 1
44
- },
45
- {
46
- "label": "Other",
47
- "value": 6
48
- }
49
- ]
50
- }
51
-
52
- wrapper = mount(BarChart, {propsData})
53
-
54
- wrapper.vm.$el.style.width = '500px'
55
- await wrapper.vm.$nextTick()
56
- })
57
-
58
- it('is a Vue instance', () => {
59
- expect(wrapper.vm).toBeTruthy()
60
- })
61
-
62
- })
63
- })
@@ -1,344 +0,0 @@
1
- import * as d3 from 'd3'
2
- import { mount,flushPromises} from '@vue/test-utils'
3
- import ColumnChart from '@/datavisualisations/ColumnChart.vue'
4
-
5
- vi.mock('d3', async () => {
6
- return {
7
- ...await vi.importActual('d3'),
8
- }
9
- })
10
-
11
- // Mock HTML element offset so the size of the chart can be calculated
12
- // dynamicly using JSDOM and tests
13
- Object.defineProperties(window.HTMLElement.prototype, {
14
- offsetWidth: {
15
- get () { return parseFloat(this.style.width) || 0 }
16
- },
17
- offsetHeight: {
18
- get () { return parseFloat(this.style.height) || 0 }
19
- }
20
- })
21
-
22
- describe('ColumnChart.vue', () => {
23
-
24
- describe('a five columns chart with 1 highlight and no y axis', () => {
25
-
26
- let wrapper
27
-
28
- beforeEach(async () => {
29
-
30
- const propsData = {
31
- data: [
32
- { date: 2000, value: 0 },
33
- { date: 2001, value: 1 },
34
- { date: 2002, value: 2 },
35
- { date: 2003, value: 3, highlight: true },
36
- { date: 2004, value: 4 }
37
- ],
38
- noYAxis: true
39
- }
40
-
41
- wrapper = mount(ColumnChart, { propsData })
42
-
43
- wrapper.vm.$el.style.width = '500px'
44
- await wrapper.vm.$nextTick()
45
- })
46
-
47
- it('is a Vue instance', () => {
48
- expect(wrapper.vm).toBeTruthy()
49
- })
50
-
51
- it('creates five x-axis ticks', () => {
52
- expect(wrapper.findAll('.column-chart__axis--x .tick')).toHaveLength(5)
53
- })
54
-
55
- it('creates no y-axis but a x-axis', () => {
56
- expect(wrapper.find('.column-chart__axis--y').exists()).toBeFalsy()
57
- expect(wrapper.find('.column-chart__axis--x').exists()).toBeTruthy()
58
- })
59
-
60
- it('creates x-axis ticks with the right years ', () => {
61
- const ticks = wrapper.findAll('.column-chart__axis--x .tick')
62
- expect(ticks.at(0).text()).toBe('2000')
63
- expect(ticks.at(1).text()).toBe('2001')
64
- expect(ticks.at(2).text()).toBe('2002')
65
- expect(ticks.at(3).text()).toBe('2003')
66
- expect(ticks.at(4).text()).toBe('2004')
67
- })
68
-
69
- it('creates five columns', () => {
70
- expect(wrapper.findAll('.column-chart__columns__item__bar')).toHaveLength(5)
71
- })
72
-
73
- it('creates the first column with minimum height', () => {
74
- const column = wrapper.findAll('.column-chart__columns__item__bar').at(0)
75
- const height = parseFloat(column.attributes('height'))
76
- expect(height).toBe(0)
77
- })
78
-
79
- it('creates the third column with medium height', () => {
80
- const column = wrapper.findAll('.column-chart__columns__item__bar').at(2)
81
- const height = parseFloat(column.attributes('height'))
82
- expect(height).toBe(wrapper.vm.padded.height / 2)
83
- })
84
-
85
- it('creates the last column with maximum height', () => {
86
- const column = wrapper.findAll('.column-chart__columns__item__bar').at(4)
87
- const height = parseFloat(column.attributes('height'))
88
- expect(height).toBe(wrapper.vm.padded.height)
89
- })
90
-
91
- it('should highlight only the fourth column', () => {
92
- const columns = wrapper.findAll('.column-chart__columns__item')
93
- expect(columns.at(0).classes('column-chart__columns__item--highlight')).toBeFalsy()
94
- expect(columns.at(1).classes('column-chart__columns__item--highlight')).toBeFalsy()
95
- expect(columns.at(2).classes('column-chart__columns__item--highlight')).toBeFalsy()
96
- expect(columns.at(3).classes('column-chart__columns__item--highlight')).toBeTruthy()
97
- expect(columns.at(4).classes('column-chart__columns__item--highlight')).toBeFalsy()
98
- })
99
- })
100
-
101
- describe('a two columns chart with no highlights using remote JSON', () => {
102
-
103
- let wrapper
104
-
105
- beforeAll(async () => {
106
- d3.json = vi.fn().mockResolvedValue([
107
- { date: 2019, value: 50 },
108
- { date: 2020, value: 100 }
109
- ])
110
- })
111
-
112
- beforeEach(async () => {
113
- const propsData = { data: 'http://localhost/data.json' }
114
- wrapper = mount(ColumnChart, { propsData })
115
- wrapper.vm.$el.style.width = '500px'
116
- await wrapper.vm.$nextTick()
117
- await flushPromises()
118
- })
119
-
120
- it('is a Vue instance', () => {
121
- expect(wrapper.vm).toBeTruthy()
122
- })
123
-
124
- it('creates two x-axis ticks', () => {
125
- expect(wrapper.findAll('.column-chart__axis--x .tick')).toHaveLength(2)
126
- })
127
-
128
- it('creates x-axis ticks with the right years ', () => {
129
- const ticks = wrapper.findAll('.column-chart__axis--x .tick')
130
- expect(ticks.at(0).text()).toBe('2019')
131
- expect(ticks.at(1).text()).toBe('2020')
132
- })
133
-
134
- it('creates two columns', () => {
135
- expect(wrapper.findAll('.column-chart__columns__item__bar')).toHaveLength(2)
136
- })
137
-
138
- it('creates the first column with medium height', () => {
139
- const column = wrapper.findAll('.column-chart__columns__item__bar').at(0)
140
- const height = parseFloat(column.attributes('height'))
141
- expect(height).toBe(wrapper.vm.padded.height / 2)
142
- })
143
-
144
- it('creates the second column with maximum height', () => {
145
- const column = wrapper.findAll('.column-chart__columns__item__bar').at(1)
146
- const height = parseFloat(column.attributes('height'))
147
- expect(height).toBe(wrapper.vm.padded.height)
148
- })
149
-
150
- it('should have no highlighted column', () => {
151
- const columns = wrapper.findAll('.column-chart__columns__item')
152
- expect(columns.at(0).classes('column-chart__columns__item--highlight')).toBeFalsy()
153
- expect(columns.at(1).classes('column-chart__columns__item--highlight')).toBeFalsy()
154
- })
155
- })
156
-
157
- describe('a 10 columns chart with two highlights using remote CSV and no tooltips', () => {
158
-
159
- let wrapper
160
-
161
- beforeAll(() => {
162
- d3.csv = vi.fn().mockReturnValue([
163
- { date: 2000, indicator: 0, highlight: false },
164
- { date: 2001, indicator: 10, highlight: false },
165
- { date: 2002, indicator: 20, highlight: false },
166
- { date: 2003, indicator: 30, highlight: false },
167
- { date: 2004, indicator: 40, highlight: false },
168
- { date: 2005, indicator: 50, highlight: true },
169
- { date: 2006, indicator: 60, highlight: false },
170
- { date: 2007, indicator: 70, highlight: true },
171
- { date: 2008, indicator: 80, highlight: false },
172
- { date: 2009, indicator: 90, highlight: false }
173
- ])
174
- })
175
-
176
- beforeEach(async () => {
177
- const propsData = {
178
- data: 'http://localhost/data.csv',
179
- dataUrlType: 'csv',
180
- seriesName: 'indicator',
181
- noTooltips: true
182
- }
183
- wrapper = mount(ColumnChart, { propsData })
184
- wrapper.vm.$el.style.width = '500px'
185
- await wrapper.vm.$nextTick()
186
- })
187
-
188
- it('is a Vue instance', () => {
189
- expect(wrapper.vm).toBeTruthy()
190
- })
191
-
192
- it('creates ten x-axis ticks', () => {
193
- expect(wrapper.findAll('.column-chart__axis--x .tick')).toHaveLength(10)
194
- })
195
-
196
- it('creates x-axis ticks with the right years ', () => {
197
- const ticks = wrapper.findAll('.column-chart__axis--x .tick')
198
- expect(ticks.at(0).text()).toBe('2000')
199
- expect(ticks.at(1).text()).toBe('2001')
200
- expect(ticks.at(2).text()).toBe('2002')
201
- expect(ticks.at(3).text()).toBe('2003')
202
- expect(ticks.at(4).text()).toBe('2004')
203
- expect(ticks.at(5).text()).toBe('2005')
204
- expect(ticks.at(6).text()).toBe('2006')
205
- expect(ticks.at(7).text()).toBe('2007')
206
- expect(ticks.at(8).text()).toBe('2008')
207
- expect(ticks.at(9).text()).toBe('2009')
208
- })
209
-
210
- it('creates ten columns', () => {
211
- expect(wrapper.findAll('.column-chart__columns__item__bar')).toHaveLength(10)
212
- })
213
-
214
- it('creates the first column with medium height', () => {
215
- const column = wrapper.findAll('.column-chart__columns__item__bar').at(0)
216
- const height = parseFloat(column.attributes('height'))
217
- expect(height).toBe(0)
218
- })
219
-
220
- it('creates the last column with maximum height', () => {
221
- const column = wrapper.findAll('.column-chart__columns__item__bar').at(9)
222
- const height = parseFloat(column.attributes('height'))
223
- expect(height).toBe(wrapper.vm.padded.height)
224
- })
225
-
226
- it('should have two highlighted columns', () => {
227
- const columns = wrapper.findAll('.column-chart__columns__item')
228
- expect(columns.at(0).classes('column-chart__columns__item--highlight')).toBeFalsy()
229
- expect(columns.at(1).classes('column-chart__columns__item--highlight')).toBeFalsy()
230
- expect(columns.at(2).classes('column-chart__columns__item--highlight')).toBeFalsy()
231
- expect(columns.at(3).classes('column-chart__columns__item--highlight')).toBeFalsy()
232
- expect(columns.at(4).classes('column-chart__columns__item--highlight')).toBeFalsy()
233
- expect(columns.at(5).classes('column-chart__columns__item--highlight')).toBeTruthy()
234
- expect(columns.at(6).classes('column-chart__columns__item--highlight')).toBeFalsy()
235
- expect(columns.at(7).classes('column-chart__columns__item--highlight')).toBeTruthy()
236
- expect(columns.at(8).classes('column-chart__columns__item--highlight')).toBeFalsy()
237
- expect(columns.at(9).classes('column-chart__columns__item--highlight')).toBeFalsy()
238
- })
239
-
240
- it('should have 0 tooltips', () => {
241
- const tooltips = wrapper.findAll('.column-chart__tooltips__item')
242
- expect(tooltips).toHaveLength(0)
243
- })
244
- })
245
-
246
- describe('a three columns chart with no highlights using remote JSON', () => {
247
- let wrapper
248
-
249
- beforeAll(() => {
250
- // eslint-disable-next-line no-import-assign
251
- d3.json = vi.fn().mockResolvedValue([
252
- { date: 2019, value: 30 },
253
- { date: 2020, value: 60 },
254
- { date: 2021, value: 90 }
255
- ])
256
- })
257
-
258
- beforeEach(async () => {
259
- const propsData = { data: 'http://localhost/data.json', noXAxis: true }
260
- wrapper = mount(ColumnChart, { propsData })
261
- wrapper.vm.$el.style.width = '500px'
262
- await wrapper.vm.$nextTick()
263
- })
264
-
265
-
266
- it('creates no x-axis but a y-axis', () => {
267
- expect(wrapper.find('.column-chart__axis--x').exists()).toBeFalsy()
268
- expect(wrapper.find('.column-chart__axis--y').exists()).toBeTruthy()
269
- })
270
-
271
- it('should have a max value to 100 set with a property', async () => {
272
- const propsData = { data: 'http://localhost/data.json', maxValue: 100 }
273
- wrapper = mount(ColumnChart, { propsData })
274
- wrapper.vm.$el.style.width = '500px'
275
- await new Promise((resolve) => setTimeout(resolve))
276
- await wrapper.vm.$nextTick()
277
-
278
- const column = wrapper.findAll('.column-chart__columns__item__bar').at(2)
279
- const height = parseFloat(column.attributes('height'))
280
- expect(height).toBe(wrapper.vm.padded.height * 0.9)
281
- })
282
-
283
- it('should have a max value to 180 set with a property', async () => {
284
- const propsData = { data: 'http://localhost/data.json', maxValue: 180 }
285
- wrapper = mount(ColumnChart, { propsData })
286
- wrapper.vm.$el.style.width = '500px'
287
- await new Promise((resolve) => setTimeout(resolve))
288
- await wrapper.vm.$nextTick()
289
-
290
- const column = wrapper.findAll('.column-chart__columns__item__bar').at(2)
291
- const height = parseFloat(column.attributes('height'))
292
- expect(height).toBe(wrapper.vm.padded.height / 2)
293
- })
294
-
295
- it('should have 3 tooltips, none visible', () => {
296
- const tooltips = wrapper.findAll('.column-chart__tooltips__item')
297
- expect(tooltips).toHaveLength(3)
298
- const visibleTooltips = wrapper.findAll('.column-chart__tooltips__item__wrapper')
299
- expect(visibleTooltips).toHaveLength(0)
300
- })
301
-
302
- it('should have one tooltip visible after the mouse overs a column', async () => {
303
- await wrapper.findAll('.column-chart__columns__item').at(0).trigger('mouseover') // TODO fix me
304
- await wrapper.vm.$nextTick()
305
- const visibleTooltips = wrapper.findAll('.column-chart__tooltips__item__wrapper')
306
- expect(visibleTooltips).toHaveLength(1)
307
- })
308
-
309
- it('should hide the tooltip after the mouse leaves a column', async () => {
310
- const firstColumn = wrapper.findAll('.column-chart__columns__item').at(0)
311
-
312
- await firstColumn.trigger('mouseover')
313
- await wrapper.vm.$nextTick()
314
- expect(wrapper.findAll('.column-chart__tooltips__item__wrapper')).toHaveLength(1)
315
-
316
- await firstColumn.trigger('mouseleave')
317
- await wrapper.vm.$nextTick()
318
- expect(wrapper.findAll('.column-chart__tooltips__item__wrapper')).toHaveLength(0)
319
- })
320
-
321
- it('should position the first tooltip next to the first bar', () => {
322
- const { element: firstTooltip } = wrapper.findAll('.column-chart__tooltips__item').at(0)
323
- const x = wrapper.vm.bars[0].x + wrapper.vm.bars[0].width / 2 + wrapper.vm.margin.left
324
- const y = wrapper.vm.bars[0].y + wrapper.vm.margin.top
325
- expect(firstTooltip.style.left).toBe(`${x}px`)
326
- expect(firstTooltip.style.top).toBe(`${y}px`)
327
- })
328
-
329
- it('should position the third tooltip before to the third bar', () => {
330
- const { element: thirdTooltip } = wrapper.findAll('.column-chart__tooltips__item').at(2)
331
- const x = wrapper.vm.bars[2].x + wrapper.vm.bars[2].width / 2 + wrapper.vm.margin.left
332
- const y = wrapper.vm.bars[2].y + wrapper.vm.margin.top
333
- expect(thirdTooltip.style.left).toBe(`${x}px`)
334
- expect(thirdTooltip.style.top).toBe(`${y}px`)
335
- })
336
-
337
- it('should emit a "select" event when clicking on an item', async () => {
338
- await wrapper.findAll('.column-chart__columns__item__bar').at(0).trigger('click')
339
-
340
- expect(wrapper.emitted().select).toBeTruthy()
341
- expect(wrapper.emitted().select[0][0]).toBe(wrapper.vm.bars[0].datum)
342
- })
343
- })
344
- })