@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,13 +1,13 @@
1
1
  <script lang="ts">
2
- import {computed, defineComponent,ref,PropType} from 'vue'
2
+ import { computed, defineComponent, ref, PropType } from 'vue'
3
3
  import { useI18n } from 'vue-i18n'
4
4
 
5
5
  import { Size } from '@/enums'
6
- import {BPagination} from "bootstrap-vue-next";
6
+ import { BPagination } from 'bootstrap-vue-next'
7
7
 
8
8
  export default defineComponent({
9
9
  name: 'CustomPagination',
10
- components: {BPagination},
10
+ components: { BPagination },
11
11
  props: {
12
12
  /**
13
13
  * Total items to be stored in pages
@@ -59,10 +59,10 @@ export default defineComponent({
59
59
  default: null
60
60
  }
61
61
  },
62
- emits:["update:modelValue"],
63
- setup(props, {emit}) {
64
- const {t} = useI18n()
65
- const customPaginationForm = ref<HTMLFormElement|null>(null)
62
+ emits: ['update:modelValue'],
63
+ setup(props, { emit }) {
64
+ const { t } = useI18n()
65
+ const customPaginationForm = ref<HTMLFormElement | null>(null)
66
66
  const currentPageInput = ref('')
67
67
  const invalidNumberError = t('custom-pagination.invalid-number-error')
68
68
  const errors = ref<string[]>([])
@@ -81,7 +81,9 @@ export default defineComponent({
81
81
  })
82
82
 
83
83
  function applyJumpFormPage(): void {
84
- const number = isNaN(parseInt(currentPageInput.value)) ? 0 : parseInt(currentPageInput.value)
84
+ const number = isNaN(parseInt(currentPageInput.value))
85
+ ? 0
86
+ : parseInt(currentPageInput.value)
85
87
  errors.value = []
86
88
  if (number > numberOfPages.value || number < 1) {
87
89
  errors.value.push(invalidNumberError)
@@ -91,7 +93,7 @@ export default defineComponent({
91
93
  }
92
94
  }
93
95
 
94
- function updateModelValue(value: string|number): void {
96
+ function updateModelValue(value: string | number): void {
95
97
  emit('update:modelValue', value)
96
98
  }
97
99
 
@@ -104,31 +106,36 @@ export default defineComponent({
104
106
  paginationClassList,
105
107
  t,
106
108
  applyJumpFormPage,
107
- updateModelValue,
109
+ updateModelValue
108
110
  }
109
111
  }
110
-
111
112
  })
112
113
  </script>
113
114
 
114
115
  <template>
115
116
  <div
116
- class="custom-pagination container-fluid"
117
- :class="{ 'custom-pagination--compact': compact, 'custom-pagination--pills': pills }"
117
+ class="custom-pagination container-fluid"
118
+ :class="{
119
+ 'custom-pagination--compact': compact,
120
+ 'custom-pagination--pills': pills
121
+ }"
118
122
  >
119
- <div class="row justify-content-center align-items-stretch" :class="{ 'no-gutters': compact && !pills }">
123
+ <div
124
+ class="row justify-content-center align-items-stretch"
125
+ :class="{ 'no-gutters': compact && !pills }"
126
+ >
120
127
  <div class="col-auto custom-pagination__pages">
121
128
  <b-pagination
122
- :total-rows="perPage * numberOfPages"
123
- :per-page="perPage"
124
- :model-value="modelValue"
125
- :pills="pills"
126
- :class="paginationClassList"
127
- :size="size"
128
- class="m-0"
129
- first-number
130
- last-number
131
- @update:modelValue="updateModelValue"
129
+ :total-rows="perPage * numberOfPages"
130
+ :per-page="perPage"
131
+ :model-value="modelValue"
132
+ :pills="pills"
133
+ :class="paginationClassList"
134
+ :size="size"
135
+ class="m-0"
136
+ first-number
137
+ last-number
138
+ @update:modelValue="updateModelValue"
132
139
  >
133
140
  <template #prev-text="{ disabled, index, page }">
134
141
  <!-- @slot The 'Go to previous page' button content -->
@@ -140,7 +147,10 @@ export default defineComponent({
140
147
  </template>
141
148
  <template #page="{ active, content, disabled, index, page }">
142
149
  <!-- @slot Page number button content -->
143
- <slot name="page" v-bind="{ active, content, disabled, index, page }" />
150
+ <slot
151
+ name="page"
152
+ v-bind="{ active, content, disabled, index, page }"
153
+ />
144
154
  </template>
145
155
  <template #ellipsis-text>
146
156
  <!-- @slot The '...' indicator content. Overrides the `ellipsis-text` prop -->
@@ -150,14 +160,18 @@ export default defineComponent({
150
160
  </div>
151
161
  <div class="col-auto">
152
162
  <div class="custom-pagination__form">
153
- <form ref="customPaginationForm" class="input-group" @submit.prevent="applyJumpFormPage">
163
+ <form
164
+ ref="customPaginationForm"
165
+ class="input-group"
166
+ @submit.prevent="applyJumpFormPage"
167
+ >
154
168
  <b-input-group :size="size">
155
169
  <input
156
- v-model="currentPageInput"
157
- type="number"
158
- class="form-control"
159
- :placeholder="inputPlaceholder"
160
- aria-label="Jump to page"
170
+ v-model="currentPageInput"
171
+ type="number"
172
+ class="form-control"
173
+ :placeholder="inputPlaceholder"
174
+ aria-label="Jump to page"
161
175
  />
162
176
  <div v-if="!compact" class="input-group-append">
163
177
  <button class="btn btn-secondary btn-sm" type="submit">
@@ -167,7 +181,11 @@ export default defineComponent({
167
181
  </b-input-group>
168
182
  </form>
169
183
  <template v-if="!compact">
170
- <small v-if="errors.length" id="invalid-number-error" class="float-start mt-1 ms-1 text-danger">
184
+ <small
185
+ v-if="errors.length"
186
+ id="invalid-number-error"
187
+ class="float-start mt-1 ms-1 text-danger"
188
+ >
171
189
  {{ errors[0] }}
172
190
  </small>
173
191
  <small v-else class="float-start mt-1 ms-1 text-muted">
@@ -1,6 +1,6 @@
1
1
  <script lang="ts">
2
2
  import { filter } from 'lodash'
3
- import {computed, defineComponent, nextTick, onMounted, ref, watch} from 'vue'
3
+ import { computed, defineComponent, nextTick, onMounted, ref, watch } from 'vue'
4
4
 
5
5
  type DigitsInputData = {
6
6
  mounted: boolean
@@ -12,7 +12,7 @@ type DigitsInputData = {
12
12
  */
13
13
  export default defineComponent({
14
14
  name: 'DigitsInput',
15
- emits: ['update:modelValue','update:values'],
15
+ emits: ['update:modelValue', 'update:values'],
16
16
  props: {
17
17
  /**
18
18
  * Number of digits to display
@@ -36,20 +36,21 @@ export default defineComponent({
36
36
  default: ''
37
37
  }
38
38
  },
39
- setup(props, {emit}) {
40
-
41
- const inputs = ref<HTMLInputElement[]>([]);
39
+ setup(props, { emit }) {
40
+ const inputs = ref<HTMLInputElement[]>([])
42
41
 
43
42
  onMounted(async () => {
44
43
  await nextTick()
45
44
  })
46
45
 
47
- const values = ref(String(props.modelValue).split('').slice(0, props.length))
48
- const joinedValues = computed((): string=> {
46
+ const values = ref(
47
+ String(props.modelValue).split('').slice(0, props.length)
48
+ )
49
+ const joinedValues = computed((): string => {
49
50
  return filter(values.value, (v) => !isNaN(v as any)).join('')
50
51
  })
51
52
 
52
- const nextInput = computed((): HTMLInputElement | null =>{
53
+ const nextInput = computed((): HTMLInputElement | null => {
53
54
  if (joinedValues.value.length === props.length) {
54
55
  return null
55
56
  }
@@ -58,18 +59,18 @@ export default defineComponent({
58
59
  return inputs.value[joinedValues.value.length] || lastInput.value
59
60
  })
60
61
 
61
- const hasNextInput = computed((): boolean=> {
62
+ const hasNextInput = computed((): boolean => {
62
63
  return !!nextInput.value
63
64
  })
64
65
 
65
- const lastInput = computed((): HTMLElement | null=> {
66
- const index = inputs.value.length -1;
66
+ const lastInput = computed((): HTMLElement | null => {
67
+ const index = inputs.value.length - 1
67
68
  return inputs.value[index]
68
69
  })
69
70
 
70
71
  function focusToNextInput() {
71
72
  if (hasNextInput.value) {
72
- nextInput.value?.focus()
73
+ nextInput.value?.focus()
73
74
  }
74
75
  }
75
76
  function focusToPreviousWhenEmpty(d: number) {
@@ -78,51 +79,55 @@ export default defineComponent({
78
79
  }
79
80
  }
80
81
  watch(
81
- () => values,
82
- (values) => {
83
- // Copy and remove values that are not numbers
84
- const formattedValues = values.value.map((value) => String(value).replace(/\D/g, ''));
85
- // Iterate over the values to be sure
86
- // they are not exceeding 10 and should
87
- // be spread to the next inputs
88
- formattedValues.forEach((value, d) => {
89
- // The value must be spread to the next input only
90
- // if it's higher than 9 (more than one digit)
91
- if (value !== null && Number(value) > 9) {
92
- // Split the number into an array of strings
93
- String(value)
94
- .split('')
95
- .forEach((nextValue, n) => {
96
- // Spread the value to the next inputs of the array
97
- formattedValues[d + n] = String(Number(nextValue));
98
- });
99
- }
100
- });
101
- // We update the values data attribute only if they changed
102
- // to avoid an infinite update cycle
103
- if (JSON.stringify(values.value) !== JSON.stringify(formattedValues)) {
104
- values.value = formattedValues.slice(0, props.length)
82
+ () => values,
83
+ (values) => {
84
+ // Copy and remove values that are not numbers
85
+ const formattedValues = values.value.map((value) =>
86
+ String(value).replace(/\D/g, '')
87
+ )
88
+ // Iterate over the values to be sure
89
+ // they are not exceeding 10 and should
90
+ // be spread to the next inputs
91
+ formattedValues.forEach((value, d) => {
92
+ // The value must be spread to the next input only
93
+ // if it's higher than 9 (more than one digit)
94
+ if (value !== null && Number(value) > 9) {
95
+ // Split the number into an array of strings
96
+ String(value)
97
+ .split('')
98
+ .forEach((nextValue, n) => {
99
+ // Spread the value to the next inputs of the array
100
+ formattedValues[d + n] = String(Number(nextValue))
101
+ })
105
102
  }
106
- focusToNextInput();
107
- },
108
- { deep: true }
109
- );
103
+ })
104
+ // We update the values data attribute only if they changed
105
+ // to avoid an infinite update cycle
106
+ if (JSON.stringify(values.value) !== JSON.stringify(formattedValues)) {
107
+ values.value = formattedValues.slice(0, props.length)
108
+ }
109
+ focusToNextInput()
110
+ },
111
+ { deep: true }
112
+ )
110
113
 
111
114
  watch(
112
- () => joinedValues,
113
- () => {
114
- emit('update:modelValue', joinedValues.value)
115
- },
116
- { deep: true }
115
+ () => joinedValues,
116
+ () => {
117
+ emit('update:modelValue', joinedValues.value)
118
+ },
119
+ { deep: true }
117
120
  )
118
121
 
119
122
  watch(
120
- () => props.modelValue,
121
- () => {
122
- const formattedValues = String(props.modelValue).split('').slice(0, props.length);
123
- emit('update:values', formattedValues);
124
- }
125
- );
123
+ () => props.modelValue,
124
+ () => {
125
+ const formattedValues = String(props.modelValue)
126
+ .split('')
127
+ .slice(0, props.length)
128
+ emit('update:values', formattedValues)
129
+ }
130
+ )
126
131
  return {
127
132
  values,
128
133
  joinedValues,
@@ -132,8 +137,7 @@ export default defineComponent({
132
137
  lastInput,
133
138
  focusToPreviousWhenEmpty
134
139
  }
135
- },
136
-
140
+ }
137
141
  })
138
142
  </script>
139
143
 
@@ -141,13 +145,13 @@ export default defineComponent({
141
145
  <div class="digits-input">
142
146
  <div class="d-flex digits-input__container">
143
147
  <input
144
- ref="inputs"
145
- v-for="d in length"
146
- :key="d - 1"
147
- v-model="values[d - 1]"
148
- :class="`digits-input__container__input--${d - 1}`"
149
- class="digits-input__container__input w-0 form-control"
150
- @keyup.delete="focusToPreviousWhenEmpty(d - 1)"
148
+ ref="inputs"
149
+ v-for="d in length"
150
+ :key="d - 1"
151
+ v-model="values[d - 1]"
152
+ :class="`digits-input__container__input--${d - 1}`"
153
+ class="digits-input__container__input w-0 form-control"
154
+ @keyup.delete="focusToPreviousWhenEmpty(d - 1)"
151
155
  />
152
156
  <input type="hidden" :value="joinedValues" :name="name" />
153
157
  </div>