@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,55 +1,46 @@
1
1
  <template>
2
- <component
3
- :is="rootElement"
4
- id="imddb-header"
5
- data-turbolinks-permanent
6
- class="navbar navbar-expand-lg imddb-header"
7
- :offset="100"
8
- :z-index="1020"
9
- :on-unpin="closeFollowUsPopover"
10
- :class="{ 'headroom--frozen': !collapseNavbar }"
11
- :style="{ position: position }"
2
+ <component
3
+ :is="rootElement"
4
+ id="imddb-header"
5
+ data-turbolinks-permanent
6
+ class="navbar navbar-expand-lg imddb-header"
7
+ :offset="100"
8
+ :z-index="1020"
9
+ :on-unpin="closeFollowUsPopover"
10
+ :class="{ 'headroom--frozen': !collapseNavbar }"
11
+ :style="{ position: position }"
12
+ >
13
+ <!-- @slot Redefines brand -->
14
+ <slot name="brand">
15
+ <a :href="homeUrl" class="navbar-brand imddb-header__brand">
16
+ <img
17
+ alt="ICIJ logo"
18
+ class="me-3"
19
+ height="25"
20
+ src="../assets/images/icij@2x.png"
21
+ />
22
+ {{ project }}
23
+ </a>
24
+ </slot>
25
+ <button
26
+ class="navbar-toggler"
27
+ type="button"
28
+ aria-label="Toggle navigation"
29
+ @click="toggleNavbar"
12
30
  >
13
- <!-- @slot Redefines brand -->
14
- <slot name="brand">
15
- <a :href="homeUrl" class="navbar-brand imddb-header__brand ">
16
- <img alt="ICIJ logo" class="me-3" height="25" src="../assets/images/icij@2x.png"/>
17
- {{ project }}
18
- </a>
19
- </slot>
20
- <button class="navbar-toggler" type="button" aria-label="Toggle navigation" @click="toggleNavbar">
21
- <span class="navbar-toggler-icon" />
22
- </button>
23
- <div class="navbar-collapse" :class="{ collapse: collapseNavbar }">
24
- <div class="imddb-header__site-switch me-auto">
25
- <!-- @slot Redefines the main navbar block (containing the dropdown) -->
26
- <slot name="navbar">
27
- <ul class="navbar-nav">
28
- <b-nav-item-dropdown @show="hidePopover">
29
- <template v-slot:button-content>
30
- {{ title }}
31
- </template>
32
- <b-dropdown-item
33
- v-for="(item, $index) in dropdownItems"
34
- v-bind="{ active: !!item.active }"
35
- :key="$index"
36
- :href="item.href"
37
- >
38
- {{ item.label }}
39
- </b-dropdown-item>
40
- </b-nav-item-dropdown>
41
- </ul>
42
- </slot>
43
- </div>
44
- <ul class="navbar-nav">
45
- <li v-if="hasLanguagesDropdown" class="nav-item">
31
+ <span class="navbar-toggler-icon" />
32
+ </button>
33
+ <div class="navbar-collapse" :class="{ collapse: collapseNavbar }">
34
+ <div class="imddb-header__site-switch me-auto">
35
+ <!-- @slot Redefines the main navbar block (containing the dropdown) -->
36
+ <slot name="navbar">
37
+ <ul class="navbar-nav">
46
38
  <b-nav-item-dropdown @show="hidePopover">
47
39
  <template v-slot:button-content>
48
- <fa icon="globe" />
49
- {{ currentLanguage }}
40
+ {{ title }}
50
41
  </template>
51
42
  <b-dropdown-item
52
- v-for="(item, $index) in languages"
43
+ v-for="(item, $index) in dropdownItems"
53
44
  v-bind="{ active: !!item.active }"
54
45
  :key="$index"
55
46
  :href="item.href"
@@ -57,37 +48,62 @@
57
48
  {{ item.label }}
58
49
  </b-dropdown-item>
59
50
  </b-nav-item-dropdown>
60
- </li>
61
- <li class="nav-item">
62
- <a href="https://www.icij.org/leak/" target="_blank" class="nav-link">
63
- {{ t('imddb-header.navbar.leak') }}
64
- </a>
65
- </li>
66
- <li class="nav-item me-lg-3">
67
- <slot name="donate-link">
68
- <a target="_blank" :href="donateUrl" class="nav-link">
69
- {{ t('imddb-header.navbar.support') }}
70
- </a>
71
- </slot>
72
- </li>
73
- <li class="nav-item">
74
- <button id="follow-icij" class="btn btn-primary btn-block fw-bold" @mouseenter="showFollowUsPopover=true">
75
- {{ t('imddb-header.navbar.follow') }}
76
- </button>
77
- <b-popover
78
- v-model="showFollowUsPopover"
79
- target="follow-icij"
80
- ref="followUsPopover"
81
- placement="bottom-start"
82
- click
83
-
84
- >
85
- <follow-us-popover @update:close="closeFollowUsPopover" @keydown.esc="closeFollowUsPopover" />
86
- </b-popover>
87
- </li>
88
- </ul>
51
+ </ul>
52
+ </slot>
89
53
  </div>
90
- </component>
54
+ <ul class="navbar-nav">
55
+ <li v-if="hasLanguagesDropdown" class="nav-item">
56
+ <b-nav-item-dropdown @show="hidePopover">
57
+ <template v-slot:button-content>
58
+ <fa icon="globe" />
59
+ {{ currentLanguage }}
60
+ </template>
61
+ <b-dropdown-item
62
+ v-for="(item, $index) in languages"
63
+ v-bind="{ active: !!item.active }"
64
+ :key="$index"
65
+ :href="item.href"
66
+ >
67
+ {{ item.label }}
68
+ </b-dropdown-item>
69
+ </b-nav-item-dropdown>
70
+ </li>
71
+ <li class="nav-item">
72
+ <a href="https://www.icij.org/leak/" target="_blank" class="nav-link">
73
+ {{ t('imddb-header.navbar.leak') }}
74
+ </a>
75
+ </li>
76
+ <li class="nav-item me-lg-3">
77
+ <slot name="donate-link">
78
+ <a target="_blank" :href="donateUrl" class="nav-link">
79
+ {{ t('imddb-header.navbar.support') }}
80
+ </a>
81
+ </slot>
82
+ </li>
83
+ <li class="nav-item">
84
+ <button
85
+ id="follow-icij"
86
+ class="btn btn-primary btn-block fw-bold"
87
+ @mouseenter="showFollowUsPopover = true"
88
+ >
89
+ {{ t('imddb-header.navbar.follow') }}
90
+ </button>
91
+ <b-popover
92
+ v-model="showFollowUsPopover"
93
+ target="follow-icij"
94
+ ref="followUsPopover"
95
+ placement="bottom-start"
96
+ click
97
+ >
98
+ <follow-us-popover
99
+ @update:close="closeFollowUsPopover"
100
+ @keydown.esc="closeFollowUsPopover"
101
+ />
102
+ </b-popover>
103
+ </li>
104
+ </ul>
105
+ </div>
106
+ </component>
91
107
  </template>
92
108
 
93
109
  <script lang="ts">
@@ -109,8 +125,12 @@ import {
109
125
  onBeforeMount
110
126
  } from 'vue'
111
127
  import { useI18n } from 'vue-i18n'
112
- import { BDropdownItem, BModal, BNavItemDropdown, BPopover } from 'bootstrap-vue-next'
113
-
128
+ import {
129
+ BDropdownItem,
130
+ BModal,
131
+ BNavItemDropdown,
132
+ BPopover
133
+ } from 'bootstrap-vue-next'
114
134
 
115
135
  type CssPosition = 'absolute' | 'relative' | 'fixed' | 'static'
116
136
  type ImddHeaderItem = { label: string; href: string; active: boolean }
@@ -183,39 +203,41 @@ export default defineComponent({
183
203
  default: () => config.get('app.donate-url')
184
204
  }
185
205
  },
186
- setup(props){
187
- const { t }= useI18n()
188
- const followUsPopover = ref<ComponentPublicInstance<typeof BPopover>|null>(null)
206
+ setup(props) {
207
+ const { t } = useI18n()
208
+ const followUsPopover = ref<ComponentPublicInstance<
209
+ typeof BPopover
210
+ > | null>(null)
189
211
  const showFollowUsPopover = ref(false)
190
212
  const collapseNavbar = ref(true)
191
213
  const languages = ref<ImddHeaderItem[]>([])
192
- const root = ref<ComponentPublicInstance|null>(null)
193
- const rootElement = computed((): string=> {
214
+ const root = ref<ComponentPublicInstance | null>(null)
215
+ const rootElement = computed((): string => {
194
216
  return props.noHeadroom ? 'div' : 'headroom'
195
217
  })
196
- const hasLanguagesDropdown = computed((): boolean=> {
218
+ const hasLanguagesDropdown = computed((): boolean => {
197
219
  return !!languages.value?.length
198
220
  })
199
- const currentLanguage = computed((): string=> {
221
+ const currentLanguage = computed((): string => {
200
222
  return get(find(languages.value, { active: true }), 'label', 'Language')
201
223
  })
202
- onBeforeMount(()=>{
224
+ onBeforeMount(() => {
203
225
  library.add(faGlobe)
204
226
  })
205
- onMounted(()=>{
227
+ onMounted(() => {
206
228
  languages.value = config.get('imddb-header.languages.items')
207
229
  })
208
230
  function closeFollowUsPopover() {
209
- if(followUsPopover.value?.hide){
231
+ if (followUsPopover.value?.hide) {
210
232
  followUsPopover.value?.hide(new Event('forceHide'))
211
233
  }
212
- showFollowUsPopover.value=false
234
+ showFollowUsPopover.value = false
213
235
  }
214
- function hidePopover(){
236
+ function hidePopover() {
215
237
  root.value?.$emit('bv::hide::popover')
216
238
  closeFollowUsPopover()
217
239
  }
218
- function hideDropdown(){
240
+ function hideDropdown() {
219
241
  root.value?.$emit('bv::hide::dropdown')
220
242
  }
221
243
  function toggleNavbar(): void {
@@ -255,7 +277,6 @@ export default defineComponent({
255
277
  display: flex;
256
278
  padding: 0px;
257
279
 
258
-
259
280
  .popover {
260
281
  width: 100%;
261
282
  }
@@ -33,34 +33,40 @@ export default defineComponent({
33
33
  default: null
34
34
  }
35
35
  },
36
- emits:['update','update:highlight'],
37
- setup(props,{emit}){
38
- const markerBoundingClientRect = computed((): DOMRect | undefined=> {
39
- const svg = d3.select('body').append('svg').attr('width', 2046).attr('height', 2046)
36
+ emits: ['update', 'update:highlight'],
37
+ setup(props, { emit }) {
38
+ const markerBoundingClientRect = computed((): DOMRect | undefined => {
39
+ const svg = d3
40
+ .select('body')
41
+ .append('svg')
42
+ .attr('width', 2046)
43
+ .attr('height', 2046)
40
44
  const marker = svg.append('path').attr('d', markerPathFunction())
41
45
  const rect: DOMRect | undefined = marker.node()?.getBoundingClientRect()
42
46
  svg.remove()
43
47
  return rect
44
48
  })
45
49
 
46
- const markerViewbox = computed(()=> {
47
- const { width, height } = markerBoundingClientRect.value ?? { width: 0, height: 0 }
48
- return `0 0 ${width} ${height}`
50
+ const markerViewbox = computed(() => {
51
+ const { width, height } = markerBoundingClientRect.value ?? {
52
+ width: 0,
53
+ height: 0
54
+ }
55
+ return `0 0 ${width} ${height}`
49
56
  })
50
- const classList = computed(()=> {
57
+ const classList = computed(() => {
51
58
  return {
52
59
  'ordinal-legend--horizontal': props.horizontal,
53
60
  'ordinal-legend--has-highlight': props.highlight !== null,
54
61
  'ordinal-legend--has-value': props.value !== null
55
62
  }
56
63
  })
57
- const dataWithIds = computed(()=> {
58
- return props.data.map((d: any): { [key: string]: string } => {
59
- const id = uniqueId()
60
- return { [props.categoryObjectsPath]: id, ...d }
61
- })
62
- }
63
- )
64
+ const dataWithIds = computed(() => {
65
+ return props.data.map((d: any): { [key: string]: string } => {
66
+ const id = uniqueId()
67
+ return { [props.categoryObjectsPath]: id, ...d }
68
+ })
69
+ })
64
70
  function itemClassList(d: { [key: string]: string }) {
65
71
  const id = d[props.categoryObjectsPath]
66
72
  return {
@@ -70,7 +76,9 @@ export default defineComponent({
70
76
  }
71
77
  }
72
78
  function markerPathFunction(d?: Datum): string {
73
- return isFunction(props.markerPath) && d ? props.markerPath(d) : props.markerPath
79
+ return isFunction(props.markerPath) && d
80
+ ? props.markerPath(d)
81
+ : props.markerPath
74
82
  }
75
83
  function update(d: Datum) {
76
84
  /**
@@ -102,12 +110,25 @@ export default defineComponent({
102
110
 
103
111
  <template>
104
112
  <ul class="ordinal-legend list-unstyled" :class="classList">
105
- <li v-for="d in data" :key="d[categoryObjectsPath]" class="ordinal-legend__item" :class="itemClassList(d)">
106
- <a @click="update(d)" @mouseover="updateHighlight(d)" @mouseleave="updateHighlight()">
113
+ <li
114
+ v-for="d in data"
115
+ :key="d[categoryObjectsPath]"
116
+ class="ordinal-legend__item"
117
+ :class="itemClassList(d)"
118
+ >
119
+ <a
120
+ @click="update(d)"
121
+ @mouseover="updateHighlight(d)"
122
+ @mouseleave="updateHighlight()"
123
+ >
107
124
  <span class="ordinal-legend__item__marker me-1">
108
125
  <slot name="marker" :marker="{ path: d.path, color: d.color }">
109
126
  <svg :viewBox="markerViewbox">
110
- <path :d="markerPathFunction(d)" :fill="d.color" class="ordinal-legend__item__marker__path" />
127
+ <path
128
+ :d="markerPathFunction(d)"
129
+ :fill="d.color"
130
+ class="ordinal-legend__item__marker__path"
131
+ />
111
132
  </svg>
112
133
  </slot>
113
134
  </span>
@@ -127,7 +148,9 @@ export default defineComponent({
127
148
  .ordinal-legend {
128
149
  $muted-item-opacity: 0.2;
129
150
  $muted-item-filter: grayscale(30%) brightness(10%);
130
- $muted-item-transition: opacity 0.2s, filter 0.2s;
151
+ $muted-item-transition:
152
+ opacity 0.2s,
153
+ filter 0.2s;
131
154
 
132
155
  font-size: $font-size-sm;
133
156
 
@@ -1,5 +1,15 @@
1
1
  <script lang="ts">
2
- import {defineComponent, VNode, DirectiveBinding, PropType, ref, watch, computed, onBeforeMount, toRef} from 'vue'
2
+ import {
3
+ defineComponent,
4
+ VNode,
5
+ DirectiveBinding,
6
+ PropType,
7
+ ref,
8
+ watch,
9
+ computed,
10
+ onBeforeMount,
11
+ toRef
12
+ } from 'vue'
3
13
  import { faGripLinesVertical } from '@fortawesome/free-solid-svg-icons/faGripLinesVertical'
4
14
  import { clamp, get, has, invoke, round } from 'lodash'
5
15
 
@@ -17,14 +27,19 @@ export default defineComponent({
17
27
  },
18
28
  directives: {
19
29
  draggable: {
20
-
21
30
  mounted(el: HTMLElement, binding: DirectiveBinding, vnode: VNode): void {
22
31
  let startX: number, initialClientX: number
23
32
  const relative = binding.modifiers?.relative ?? false
24
33
 
25
34
  // Emit an event to the parent component
26
- function emitEvent({ name, data = null }: { name: string; data?: any }) {
27
- vnode.el.dispatchEvent(new CustomEvent(name,{detail: data}))
35
+ function emitEvent({
36
+ name,
37
+ data = null
38
+ }: {
39
+ name: string
40
+ data?: any
41
+ }) {
42
+ vnode.el.dispatchEvent(new CustomEvent(name, { detail: data }))
28
43
  //const handlers = get(vnode, 'data.on') ?? get(vnode, 'componentOptions.listeners')
29
44
  /*if (has(handlers, name)) {
30
45
  invoke(handlers, `${name}.fns`, data)
@@ -33,7 +48,10 @@ export default defineComponent({
33
48
 
34
49
  // Handle the dragging of the element
35
50
  function move(event: MouseEvent | TouchEvent) {
36
- const clientX = event instanceof MouseEvent ? event.clientX : event.touches[0].clientX
51
+ const clientX =
52
+ event instanceof MouseEvent
53
+ ? event.clientX
54
+ : event.touches[0].clientX
37
55
  const offset = relative ? el.offsetWidth : 0
38
56
  const maxX = binding.instance?.rangeWidth() - offset
39
57
  const data = clamp(startX + clientX - initialClientX, 0, maxX)
@@ -81,7 +99,7 @@ export default defineComponent({
81
99
  * indicating the start and end of the range.
82
100
  */
83
101
  range: {
84
- type: Array as unknown as PropType<[number,number]>,
102
+ type: Array as unknown as PropType<[number, number]>,
85
103
  required: true
86
104
  },
87
105
  /**
@@ -89,14 +107,14 @@ export default defineComponent({
89
107
  */
90
108
  hover: {
91
109
  type: Boolean as PropType<boolean>,
92
- default:false
110
+ default: false
93
111
  },
94
112
  /**
95
113
  * Offset from the left side of the component
96
114
  * where the dragging for the start value begins.
97
115
  */
98
116
  startOffset: {
99
- type: [Number,String] as PropType<number|string>,
117
+ type: [Number, String] as PropType<number | string>,
100
118
  default: 0
101
119
  },
102
120
  /**
@@ -104,7 +122,7 @@ export default defineComponent({
104
122
  * the dragging for the end value ends.
105
123
  */
106
124
  endOffset: {
107
- type: [Number,String] as PropType<number|string>,
125
+ type: [Number, String] as PropType<number | string>,
108
126
  default: 0
109
127
  },
110
128
  /**
@@ -147,19 +165,19 @@ export default defineComponent({
147
165
  default: false
148
166
  }
149
167
  },
150
- emits:['update:range'],
151
- setup(props, {emit}){
152
- onBeforeMount(()=>{
168
+ emits: ['update:range'],
169
+ setup(props, { emit }) {
170
+ onBeforeMount(() => {
153
171
  library.add(faGripLinesVertical)
154
172
  })
155
- const rangePickerBounds = ref<HTMLElement|null>(null)
173
+ const rangePickerBounds = ref<HTMLElement | null>(null)
156
174
  const start = toRef(props.range[0] ?? 0)
157
- const end = toRef(props.range[1] ?? 0)
158
- const moving = ref( false)
159
- const resizing = ref( false)
175
+ const end = toRef(props.range[1] ?? 0)
176
+ const moving = ref(false)
177
+ const resizing = ref(false)
160
178
  const disabled = computed(() => {
161
- return props.range.length < 2
162
- })
179
+ return props.range.length < 2
180
+ })
163
181
  const overlayStyle = computed((): { left: string; right: string } => {
164
182
  return {
165
183
  left: `${start.value * 100}%`,
@@ -167,17 +185,17 @@ export default defineComponent({
167
185
  }
168
186
  })
169
187
  const boundsStyle = computed((): { left: string; right: string } => {
170
- return {
171
- left: startOffsetWithUnit.value,
172
- right: endOffsetWithUnit.value
173
- }
174
- })
188
+ return {
189
+ left: startOffsetWithUnit.value,
190
+ right: endOffsetWithUnit.value
191
+ }
192
+ })
175
193
 
176
194
  const startOffsetWithUnit = computed((): string => {
177
195
  return valueWithUnit(props.startOffset)
178
196
  })
179
197
  const endOffsetWithUnit = computed((): string => {
180
- return valueWithUnit(props.endOffset)
198
+ return valueWithUnit(props.endOffset)
181
199
  })
182
200
 
183
201
  const startBoundStyle = computed((): { left: string } => {
@@ -185,21 +203,20 @@ export default defineComponent({
185
203
  })
186
204
 
187
205
  const endBoundStyle = computed((): { left: string } => {
188
- return { left: `${end.value * 100}%` }
206
+ return { left: `${end.value * 100}%` }
189
207
  })
190
208
  const classList = computed((): { [key: string]: boolean } => {
191
- return {
192
- [`range-picker--${props.variant}`]: !!props.variant,
193
- 'range-picker--hover': props.hover,
194
- 'range-picker--disabled': disabled.value,
195
- 'range-picker--rounded': props.rounded,
196
- 'range-picker--resizing': resizing.value,
197
- 'range-picker--moving': moving.value
198
- }
199
- }
200
- )
209
+ return {
210
+ [`range-picker--${props.variant}`]: !!props.variant,
211
+ 'range-picker--hover': props.hover,
212
+ 'range-picker--disabled': disabled.value,
213
+ 'range-picker--rounded': props.rounded,
214
+ 'range-picker--resizing': resizing.value,
215
+ 'range-picker--moving': moving.value
216
+ }
217
+ })
201
218
 
202
- function toggleMoving(value){
219
+ function toggleMoving(value) {
203
220
  moving.value = value ?? !moving.value
204
221
  }
205
222
  function toggleResizing(value) {
@@ -211,8 +228,7 @@ export default defineComponent({
211
228
  function rangeWidth(): number {
212
229
  return rangePickerBounds.value?.getBoundingClientRect().width ?? 0
213
230
  }
214
- function dragStartBound({detail: dx}) {
215
-
231
+ function dragStartBound({ detail: dx }) {
216
232
  const newValue = snapValue(dx / rangeWidth())
217
233
  // Ensure start value doesn't get too close to end value
218
234
  if (newValue < end.value - props.minDistance) {
@@ -225,7 +241,7 @@ export default defineComponent({
225
241
  emit('update:range', [start.value, end.value])
226
242
  }
227
243
  }
228
- function dragEndBound({detail: dx}) {
244
+ function dragEndBound({ detail: dx }) {
229
245
  const newValue = snapValue(dx / rangeWidth())
230
246
  // Ensure end value doesn't get too close to start value
231
247
  if (newValue > start.value + props.minDistance) {
@@ -238,7 +254,7 @@ export default defineComponent({
238
254
  emit('update:range', [start.value, end.value])
239
255
  }
240
256
  }
241
- function dragBounds({detail:dx}) {
257
+ function dragBounds({ detail: dx }) {
242
258
  const diff = snapValue(end.value - start.value)
243
259
  const newValue = snapValue(dx / rangeWidth())
244
260
  start.value = round(newValue, props.precision)
@@ -279,7 +295,12 @@ export default defineComponent({
279
295
  <div class="range-picker__wrapper">
280
296
  <slot />
281
297
  </div>
282
- <div v-show="!disabled" ref="rangePickerBounds" class="range-picker__bounds" :style="boundsStyle">
298
+ <div
299
+ v-show="!disabled"
300
+ ref="rangePickerBounds"
301
+ class="range-picker__bounds"
302
+ :style="boundsStyle"
303
+ >
283
304
  <div
284
305
  v-draggable.relative
285
306
  class="range-picker__bounds__overlay"
@@ -346,7 +367,7 @@ export default defineComponent({
346
367
  }
347
368
 
348
369
  &--moving &__wrapper,
349
- &--resizing &__wrapper{
370
+ &--resizing &__wrapper {
350
371
  &,
351
372
  * {
352
373
  pointer-events: none;
@@ -10,7 +10,10 @@ import { injectAssets } from '@/utils/assets'
10
10
 
11
11
  let iframeUniqueIdCounter = 0
12
12
  type StartsWithIcijIframe = `icij-iframe-${string}`
13
- type ResponsiveIframeData = { iframeId: StartsWithIcijIframe; pymParent: null | Parent }
13
+ type ResponsiveIframeData = {
14
+ iframeId: StartsWithIcijIframe
15
+ pymParent: null | Parent
16
+ }
14
17
 
15
18
  /**
16
19
  * ResponsiveIframe
@@ -42,7 +45,11 @@ export default defineComponent({
42
45
  async mounted(): Promise<void> {
43
46
  await injectAssets('https://pym.nprapps.org/pym.v1.min.js')
44
47
  //@ts-ignore
45
- this.pymParent = new window.pym.Parent(this.iframeId, this.url, this.options)
48
+ this.pymParent = new window.pym.Parent(
49
+ this.iframeId,
50
+ this.url,
51
+ this.options
52
+ )
46
53
  }
47
54
  })
48
55
  </script>