@iamproperty/components 3.0.0 → 3.2.0

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 (161) hide show
  1. package/README.md +141 -16
  2. package/assets/.DS_Store +0 -0
  3. package/assets/css/core.min.css +1 -1
  4. package/assets/css/core.min.css.map +1 -1
  5. package/assets/css/email.min.css +1 -1
  6. package/assets/css/email.min.css.map +1 -1
  7. package/assets/css/error.min.css +1 -1
  8. package/assets/css/error.min.css.map +1 -1
  9. package/assets/css/style.min.css +1 -1
  10. package/assets/css/style.min.css.map +1 -1
  11. package/assets/favicons/manifest.json +31 -31
  12. package/assets/js/main.js +57 -57
  13. package/assets/js/modules/accordion.js +32 -32
  14. package/assets/js/modules/alert.js +56 -56
  15. package/assets/js/modules/carousel.js +101 -101
  16. package/assets/js/modules/chart.js +218 -218
  17. package/assets/js/modules/drawer.js +15 -15
  18. package/assets/js/modules/file-upload.js +48 -0
  19. package/assets/js/modules/form.js +168 -159
  20. package/assets/js/modules/helpers.js +119 -119
  21. package/assets/js/modules/modal.js +89 -89
  22. package/assets/js/modules/nav.js +28 -28
  23. package/assets/js/modules/orderablelist.js +122 -0
  24. package/assets/js/modules/table.js +585 -585
  25. package/assets/js/modules/testimonial.js +82 -82
  26. package/assets/js/modules/youtubevideo.js +145 -145
  27. package/assets/js/scripts.bundle.js +256 -242
  28. package/assets/js/scripts.bundle.js.map +1 -1
  29. package/assets/js/scripts.bundle.min.js +2 -2
  30. package/assets/js/scripts.bundle.min.js.map +1 -1
  31. package/assets/sass/_components.scss +14 -14
  32. package/assets/sass/_corefiles.scss +40 -40
  33. package/assets/sass/_fonts.scss +16 -16
  34. package/assets/sass/_forms.scss +9 -9
  35. package/assets/sass/_func.scss +12 -12
  36. package/assets/sass/_functions/functions.scss +141 -141
  37. package/assets/sass/_functions/mixins.scss +170 -170
  38. package/assets/sass/_functions/utilities.scss +143 -250
  39. package/assets/sass/_functions/variables.scss +467 -467
  40. package/assets/sass/_print.scss +61 -61
  41. package/assets/sass/_tests/colours.spec.scss +44 -44
  42. package/assets/sass/_tests/func.spec.scss +232 -232
  43. package/assets/sass/_tests/mixins.spec.scss +194 -194
  44. package/assets/sass/_tests/sass.spec.js +9 -9
  45. package/assets/sass/_tests/typography.spec.scss +35 -35
  46. package/assets/sass/components/accordion.scss +197 -197
  47. package/assets/sass/components/alert.scss +98 -98
  48. package/assets/sass/components/cardDeck.scss +107 -107
  49. package/assets/sass/components/carousel.scss +234 -234
  50. package/assets/sass/components/charts.scss +569 -569
  51. package/assets/sass/components/drawer.scss +46 -46
  52. package/assets/sass/components/header.scss +63 -63
  53. package/assets/sass/components/modal.scss +136 -136
  54. package/assets/sass/components/nav.scss +960 -918
  55. package/assets/sass/components/property-searchbar.scss +143 -143
  56. package/assets/sass/components/snapshot.scss +70 -70
  57. package/assets/sass/components/stepper.scss +164 -164
  58. package/assets/sass/components/tabs.scss +87 -87
  59. package/assets/sass/components/testimonial.scss +132 -132
  60. package/assets/sass/components/timeline.scss +95 -95
  61. package/assets/sass/core.scss +6 -6
  62. package/assets/sass/elements/buttons.scss +251 -209
  63. package/assets/sass/elements/card.scss +289 -177
  64. package/assets/sass/elements/container.scss +236 -225
  65. package/assets/sass/elements/forms.scss +262 -194
  66. package/assets/sass/elements/links.scss +97 -96
  67. package/assets/sass/elements/lists.scss +159 -112
  68. package/assets/sass/elements/panel.scss +161 -161
  69. package/assets/sass/elements/tables.scss +290 -290
  70. package/assets/sass/elements/tooltips.scss +84 -84
  71. package/assets/sass/elements/type.scss +136 -136
  72. package/assets/sass/email.scss +65 -65
  73. package/assets/sass/error.scss +4 -4
  74. package/assets/sass/foundations/brand.scss +76 -72
  75. package/assets/sass/foundations/circles.scss +74 -74
  76. package/assets/sass/foundations/icons.scss +80 -72
  77. package/assets/sass/foundations/media.scss +50 -50
  78. package/assets/sass/foundations/reboot.scss +130 -130
  79. package/assets/sass/foundations/root.scss +125 -106
  80. package/assets/sass/main.scss +7 -7
  81. package/assets/svg/icons.svg +598 -598
  82. package/assets/svg/logo.svg +49 -43
  83. package/assets/ts/main.js +56 -56
  84. package/assets/ts/main.ts +68 -68
  85. package/assets/ts/modules/accordion.js +32 -32
  86. package/assets/ts/modules/accordion.ts +43 -43
  87. package/dist/components.es.js +393 -379
  88. package/dist/components.umd.js +16 -16
  89. package/dist/style.css +1 -1
  90. package/package.json +96 -108
  91. package/src/.DS_Store +0 -0
  92. package/src/components/Accordion/Accordion.screenshot.vue +57 -57
  93. package/src/components/Accordion/Accordion.spec.js +63 -63
  94. package/src/components/Accordion/Accordion.vue +22 -22
  95. package/src/components/Accordion/AccordionItem.vue +52 -52
  96. package/src/components/Accordion/README.md +34 -34
  97. package/src/components/Alert/Alert.spec.js +49 -49
  98. package/src/components/Alert/Alert.vue +39 -39
  99. package/src/components/Alert/README.md +28 -28
  100. package/src/components/Banner/Banner.spec.js +28 -28
  101. package/src/components/Banner/Banner.vue +38 -38
  102. package/src/components/Banner/README.md +23 -23
  103. package/src/components/CardDeck/CardDeck.spec.js +99 -99
  104. package/src/components/CardDeck/CardDeck.vue +77 -77
  105. package/src/components/CardDeck/README.md +24 -24
  106. package/src/components/Carousel/Carousel.spec.js +45 -45
  107. package/src/components/Carousel/Carousel.vue +85 -85
  108. package/src/components/Carousel/README.md +19 -19
  109. package/src/components/Chart/Chart.spec.js +201 -201
  110. package/src/components/Chart/Chart.vue +88 -88
  111. package/src/components/Chart/README.md +17 -17
  112. package/src/components/Drawer/Drawer.vue +53 -53
  113. package/src/components/Drawer/README.md +22 -22
  114. package/src/components/Header/Header.spec.js +33 -33
  115. package/src/components/Header/Header.vue +38 -38
  116. package/src/components/Header/README.md +27 -27
  117. package/src/components/Modal/Modal.spec.js +22 -22
  118. package/src/components/Modal/Modal.vue +43 -43
  119. package/src/components/Modal/README.md +19 -19
  120. package/src/components/Nav/Nav.spec.js +35 -35
  121. package/src/components/Nav/Nav.vue +215 -215
  122. package/src/components/Nav/README.md +22 -22
  123. package/src/components/NoteFeed/NoteFeed.vue +79 -79
  124. package/src/components/NoteFeed/README.md +16 -16
  125. package/src/components/PropertySearchbar/PropertySearchbar.vue +204 -204
  126. package/src/components/PropertySearchbar/README.md +25 -25
  127. package/src/components/Snapshot/README.md +20 -20
  128. package/src/components/Snapshot/Snapshot.vue +32 -32
  129. package/src/components/Stepper/README.md +32 -32
  130. package/src/components/Stepper/Step.vue +28 -28
  131. package/src/components/Stepper/Stepper.spec.js +99 -99
  132. package/src/components/Stepper/Stepper.vue +33 -33
  133. package/src/components/Tabs/README.md +27 -27
  134. package/src/components/Tabs/Tab.vue +32 -32
  135. package/src/components/Tabs/Tabs.vue +77 -77
  136. package/src/components/Testimonial/README.md +25 -25
  137. package/src/components/Testimonial/Testimonial.spec.js +57 -57
  138. package/src/components/Testimonial/Testimonial.vue +60 -60
  139. package/src/components/Timeline/README.md +18 -18
  140. package/src/components/Timeline/Timeline.spec.js +17 -17
  141. package/src/components/Timeline/Timeline.vue +24 -24
  142. package/src/elements/Card/Card.vue +122 -113
  143. package/src/elements/Card/README.md +24 -24
  144. package/src/elements/FileUploads/FileUploads.vue +48 -48
  145. package/src/elements/FileUploads/README.md +24 -24
  146. package/src/elements/Input/Input.vue +272 -268
  147. package/src/elements/Input/README.md +19 -19
  148. package/src/elements/Table/README.md +62 -62
  149. package/src/elements/Table/Table.spec.js +90 -90
  150. package/src/elements/Table/Table.vue +129 -129
  151. package/src/foundations/Icon/Icon.spec.js +24 -24
  152. package/src/foundations/Icon/Icon.vue +24 -24
  153. package/src/foundations/Icon/README.md +11 -11
  154. package/src/foundations/Logo/Logo.spec.js +56 -56
  155. package/src/foundations/Logo/Logo.vue +39 -39
  156. package/src/foundations/Logo/README.md +20 -20
  157. package/src/foundations/YoutubeVideo/README.md +11 -11
  158. package/src/foundations/YoutubeVideo/YoutubeVideo.vue +24 -24
  159. package/src/helpers/strings.js +12 -12
  160. package/src/index.js +27 -27
  161. package/src/vue-shim.d.ts +6 -6
@@ -1,63 +1,63 @@
1
- import { mount } from '@vue/test-utils'
2
- import Accordion from './Accordion.vue'
3
- import AccordionItem from './AccordionItem.vue'
4
-
5
- describe('Accordion component', () => {
6
- it('renders two details', () => {
7
-
8
- const test = mount(Accordion, {
9
- propsData: {
10
- },
11
- global: {
12
- stubs: {
13
- 'AccordionItem': AccordionItem
14
- }
15
- },
16
- slots: {
17
- default: `<AccordionItem title="How long does the auction last?" open>
18
- <p>Curabitur aliquet quam id dui posuere blandit. Vivamus suscipit tortor eget felis porttitor volutpat. Proin eget tortor risus. Proin eget tortor risus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Proin eget tortor risus. Vivamus suscipit tortor eget felis porttitor volutpat. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus.</p><p>Nulla porttitor accumsan tincidunt. Cras ultricies ligula sed magna dictum porta. Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Vivamus suscipit tortor eget felis porttitor volutpat. Vivamus suscipit tortor eget felis porttitor volutpat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec velit neque, auctor sit amet aliquam vel, ullamcorper sit amet ligula. Vivamus suscipit tortor eget felis porttitor volutpat.</p><p>Donec rutrum congue leo eget malesuada. Pellentesque in ipsum id orci porta dapibus. Curabitur arcu erat, accumsan id imperdiet et, porttitor at sem. Nulla quis lorem ut libero malesuada feugiat. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Pellentesque in ipsum id orci porta dapibus. Pellentesque in ipsum id orci porta dapibus.</p>
19
- </AccordionItem>
20
- <AccordionItem title="Curabitur aliquet quam id dui posuere blandit. Vivamus suscipit tortor eget felis porttitor volutpat?">
21
- <p>Curabitur aliquet quam id dui posuere blandit. Vivamus suscipit tortor eget felis porttitor volutpat. Proin eget tortor risus. Proin eget tortor risus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Proin eget tortor risus. Vivamus suscipit tortor eget felis porttitor volutpat. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus.</p><p>Nulla porttitor accumsan tincidunt. Cras ultricies ligula sed magna dictum porta. Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Vivamus suscipit tortor eget felis porttitor volutpat. Vivamus suscipit tortor eget felis porttitor volutpat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec velit neque, auctor sit amet aliquam vel, ullamcorper sit amet ligula. Vivamus suscipit tortor eget felis porttitor volutpat.</p><p>Donec rutrum congue leo eget malesuada. Pellentesque in ipsum id orci porta dapibus. Curabitur arcu erat, accumsan id imperdiet et, porttitor at sem. Nulla quis lorem ut libero malesuada feugiat. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Pellentesque in ipsum id orci porta dapibus. Pellentesque in ipsum id orci porta dapibus.</p>
22
- </AccordionItem>`
23
- }
24
- })
25
-
26
- expect(test.findAll('details').length).toBe(2)
27
- })
28
-
29
-
30
- it('closes the other items when one opens', async () => {
31
- const test = mount(Accordion, {
32
- propsData: {
33
-
34
- },
35
- global: {
36
- stubs: {
37
- 'AccordionItem': AccordionItem
38
- }
39
- },
40
- slots: {
41
- default: `<AccordionItem title="How long does the auction last?" open>
42
- <p>Curabitur aliquet quam id dui posuere blandit. Vivamus suscipit tortor eget felis porttitor volutpat. Proin eget tortor risus. Proin eget tortor risus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Proin eget tortor risus. Vivamus suscipit tortor eget felis porttitor volutpat. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus.</p><p>Nulla porttitor accumsan tincidunt. Cras ultricies ligula sed magna dictum porta. Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Vivamus suscipit tortor eget felis porttitor volutpat. Vivamus suscipit tortor eget felis porttitor volutpat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec velit neque, auctor sit amet aliquam vel, ullamcorper sit amet ligula. Vivamus suscipit tortor eget felis porttitor volutpat.</p><p>Donec rutrum congue leo eget malesuada. Pellentesque in ipsum id orci porta dapibus. Curabitur arcu erat, accumsan id imperdiet et, porttitor at sem. Nulla quis lorem ut libero malesuada feugiat. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Pellentesque in ipsum id orci porta dapibus. Pellentesque in ipsum id orci porta dapibus.</p>
43
- </AccordionItem>
44
- <AccordionItem title="Curabitur aliquet quam id dui posuere blandit. Vivamus suscipit tortor eget felis porttitor volutpat?">
45
- <p>Curabitur aliquet quam id dui posuere blandit. Vivamus suscipit tortor eget felis porttitor volutpat. Proin eget tortor risus. Proin eget tortor risus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Proin eget tortor risus. Vivamus suscipit tortor eget felis porttitor volutpat. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus.</p><p>Nulla porttitor accumsan tincidunt. Cras ultricies ligula sed magna dictum porta. Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Vivamus suscipit tortor eget felis porttitor volutpat. Vivamus suscipit tortor eget felis porttitor volutpat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec velit neque, auctor sit amet aliquam vel, ullamcorper sit amet ligula. Vivamus suscipit tortor eget felis porttitor volutpat.</p><p>Donec rutrum congue leo eget malesuada. Pellentesque in ipsum id orci porta dapibus. Curabitur arcu erat, accumsan id imperdiet et, porttitor at sem. Nulla quis lorem ut libero malesuada feugiat. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Pellentesque in ipsum id orci porta dapibus. Pellentesque in ipsum id orci porta dapibus.</p>
46
- </AccordionItem>`
47
- }
48
- })
49
-
50
- const details = test.findAll('details')
51
-
52
- const firstDetail = details.at(0)
53
- const secondDetail = details.at(1)
54
- const detailButton = secondDetail?.find('summary');
55
-
56
- expect(firstDetail.attributes('open')).toBe('')
57
-
58
- await detailButton.trigger('click')
59
-
60
- expect(firstDetail.attributes('open')).toBe(undefined)
61
- })
62
-
63
- })
1
+ import { mount } from '@vue/test-utils'
2
+ import Accordion from './Accordion.vue'
3
+ import AccordionItem from './AccordionItem.vue'
4
+
5
+ describe('Accordion component', () => {
6
+ it('renders two details', () => {
7
+
8
+ const test = mount(Accordion, {
9
+ propsData: {
10
+ },
11
+ global: {
12
+ stubs: {
13
+ 'AccordionItem': AccordionItem
14
+ }
15
+ },
16
+ slots: {
17
+ default: `<AccordionItem title="How long does the auction last?" open>
18
+ <p>Curabitur aliquet quam id dui posuere blandit. Vivamus suscipit tortor eget felis porttitor volutpat. Proin eget tortor risus. Proin eget tortor risus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Proin eget tortor risus. Vivamus suscipit tortor eget felis porttitor volutpat. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus.</p><p>Nulla porttitor accumsan tincidunt. Cras ultricies ligula sed magna dictum porta. Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Vivamus suscipit tortor eget felis porttitor volutpat. Vivamus suscipit tortor eget felis porttitor volutpat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec velit neque, auctor sit amet aliquam vel, ullamcorper sit amet ligula. Vivamus suscipit tortor eget felis porttitor volutpat.</p><p>Donec rutrum congue leo eget malesuada. Pellentesque in ipsum id orci porta dapibus. Curabitur arcu erat, accumsan id imperdiet et, porttitor at sem. Nulla quis lorem ut libero malesuada feugiat. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Pellentesque in ipsum id orci porta dapibus. Pellentesque in ipsum id orci porta dapibus.</p>
19
+ </AccordionItem>
20
+ <AccordionItem title="Curabitur aliquet quam id dui posuere blandit. Vivamus suscipit tortor eget felis porttitor volutpat?">
21
+ <p>Curabitur aliquet quam id dui posuere blandit. Vivamus suscipit tortor eget felis porttitor volutpat. Proin eget tortor risus. Proin eget tortor risus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Proin eget tortor risus. Vivamus suscipit tortor eget felis porttitor volutpat. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus.</p><p>Nulla porttitor accumsan tincidunt. Cras ultricies ligula sed magna dictum porta. Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Vivamus suscipit tortor eget felis porttitor volutpat. Vivamus suscipit tortor eget felis porttitor volutpat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec velit neque, auctor sit amet aliquam vel, ullamcorper sit amet ligula. Vivamus suscipit tortor eget felis porttitor volutpat.</p><p>Donec rutrum congue leo eget malesuada. Pellentesque in ipsum id orci porta dapibus. Curabitur arcu erat, accumsan id imperdiet et, porttitor at sem. Nulla quis lorem ut libero malesuada feugiat. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Pellentesque in ipsum id orci porta dapibus. Pellentesque in ipsum id orci porta dapibus.</p>
22
+ </AccordionItem>`
23
+ }
24
+ })
25
+
26
+ expect(test.findAll('details').length).toBe(2)
27
+ })
28
+
29
+
30
+ it('closes the other items when one opens', async () => {
31
+ const test = mount(Accordion, {
32
+ propsData: {
33
+
34
+ },
35
+ global: {
36
+ stubs: {
37
+ 'AccordionItem': AccordionItem
38
+ }
39
+ },
40
+ slots: {
41
+ default: `<AccordionItem title="How long does the auction last?" open>
42
+ <p>Curabitur aliquet quam id dui posuere blandit. Vivamus suscipit tortor eget felis porttitor volutpat. Proin eget tortor risus. Proin eget tortor risus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Proin eget tortor risus. Vivamus suscipit tortor eget felis porttitor volutpat. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus.</p><p>Nulla porttitor accumsan tincidunt. Cras ultricies ligula sed magna dictum porta. Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Vivamus suscipit tortor eget felis porttitor volutpat. Vivamus suscipit tortor eget felis porttitor volutpat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec velit neque, auctor sit amet aliquam vel, ullamcorper sit amet ligula. Vivamus suscipit tortor eget felis porttitor volutpat.</p><p>Donec rutrum congue leo eget malesuada. Pellentesque in ipsum id orci porta dapibus. Curabitur arcu erat, accumsan id imperdiet et, porttitor at sem. Nulla quis lorem ut libero malesuada feugiat. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Pellentesque in ipsum id orci porta dapibus. Pellentesque in ipsum id orci porta dapibus.</p>
43
+ </AccordionItem>
44
+ <AccordionItem title="Curabitur aliquet quam id dui posuere blandit. Vivamus suscipit tortor eget felis porttitor volutpat?">
45
+ <p>Curabitur aliquet quam id dui posuere blandit. Vivamus suscipit tortor eget felis porttitor volutpat. Proin eget tortor risus. Proin eget tortor risus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Proin eget tortor risus. Vivamus suscipit tortor eget felis porttitor volutpat. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus.</p><p>Nulla porttitor accumsan tincidunt. Cras ultricies ligula sed magna dictum porta. Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Vivamus suscipit tortor eget felis porttitor volutpat. Vivamus suscipit tortor eget felis porttitor volutpat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec velit neque, auctor sit amet aliquam vel, ullamcorper sit amet ligula. Vivamus suscipit tortor eget felis porttitor volutpat.</p><p>Donec rutrum congue leo eget malesuada. Pellentesque in ipsum id orci porta dapibus. Curabitur arcu erat, accumsan id imperdiet et, porttitor at sem. Nulla quis lorem ut libero malesuada feugiat. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Pellentesque in ipsum id orci porta dapibus. Pellentesque in ipsum id orci porta dapibus.</p>
46
+ </AccordionItem>`
47
+ }
48
+ })
49
+
50
+ const details = test.findAll('details')
51
+
52
+ const firstDetail = details.at(0)
53
+ const secondDetail = details.at(1)
54
+ const detailButton = secondDetail?.find('summary');
55
+
56
+ expect(firstDetail.attributes('open')).toBe('')
57
+
58
+ await detailButton.trigger('click')
59
+
60
+ expect(firstDetail.attributes('open')).toBe(undefined)
61
+ })
62
+
63
+ })
@@ -1,22 +1,22 @@
1
- <template>
2
- <div class="container accordion" ref="wrapper">
3
- <slot></slot>
4
- </div>
5
- </template>
6
-
7
- <style lang="scss">
8
- @import "../../../assets/sass/components/accordion.scss";
9
- </style>
10
-
11
- <script>
12
- import accordion from '../../../assets/ts/modules/accordion.ts'
13
-
14
- export default {
15
- name: 'Accordion',
16
- props: {
17
- },
18
- mounted(){
19
- accordion(this.$refs.wrapper);
20
- }
21
- }
22
- </script>
1
+ <template>
2
+ <div class="container accordion" ref="wrapper">
3
+ <slot></slot>
4
+ </div>
5
+ </template>
6
+
7
+ <style lang="scss">
8
+ @import "../../../assets/sass/components/accordion.scss";
9
+ </style>
10
+
11
+ <script>
12
+ import accordion from '../../../assets/js/modules/accordion.js'
13
+
14
+ export default {
15
+ name: 'Accordion',
16
+ props: {
17
+ },
18
+ mounted(){
19
+ accordion(this.$refs.wrapper);
20
+ }
21
+ }
22
+ </script>
@@ -1,52 +1,52 @@
1
- <template>
2
-
3
- <details class="accordion-item" :id="createID(title)">
4
- <summary :class="`${titlecolour?`bg-${titlecolour}`:''}`" v-on:click="show = true"><span class="accordion-header accordion-button h4">{{title}}<span v-if="badge" :class="`badge bg-${badgecolour}`">{{badge}}</span></span></summary>
5
- <div class="accordion-body" v-if="show">
6
- <slot></slot>
7
- </div>
8
- </details>
9
- </template>
10
-
11
- <script>
12
- import { safeID } from '../../helpers/strings.js'
13
-
14
- export default {
15
- name: 'AccordionItem',
16
- props: {
17
- title: {
18
- type: String,
19
- required: true
20
- },
21
- titlecolour: {
22
- type: String,
23
- required: false
24
- },
25
- badge: {
26
- type: [Number, String],
27
- required: false
28
- },
29
- badgecolour: {
30
- type: String,
31
- required: false,
32
- default: 'light'
33
- },
34
- lazy: {
35
- type: Boolean,
36
- required: false
37
- }
38
- },
39
- computed: {
40
- createID () {
41
- return (summary) => {
42
- return `${safeID(summary)}`
43
- }
44
- }
45
- },
46
- data() {
47
- return {
48
- show: this.lazy ? false : true
49
- }
50
- }
51
- }
52
- </script>
1
+ <template>
2
+
3
+ <details class="accordion-item" :id="createID(title)">
4
+ <summary :class="`${titlecolour?`bg-${titlecolour}`:''}`" v-on:click="show = true"><span class="accordion-header accordion-button h4">{{title}}<span v-if="badge" :class="`badge bg-${badgecolour}`">{{badge}}</span></span></summary>
5
+ <div class="accordion-body" v-if="show">
6
+ <slot></slot>
7
+ </div>
8
+ </details>
9
+ </template>
10
+
11
+ <script>
12
+ import { safeID } from '../../helpers/strings.js'
13
+
14
+ export default {
15
+ name: 'AccordionItem',
16
+ props: {
17
+ title: {
18
+ type: String,
19
+ required: true
20
+ },
21
+ titlecolour: {
22
+ type: String,
23
+ required: false
24
+ },
25
+ badge: {
26
+ type: [Number, String],
27
+ required: false
28
+ },
29
+ badgecolour: {
30
+ type: String,
31
+ required: false,
32
+ default: 'light'
33
+ },
34
+ lazy: {
35
+ type: Boolean,
36
+ required: false
37
+ }
38
+ },
39
+ computed: {
40
+ createID () {
41
+ return (summary) => {
42
+ return `${safeID(summary)}`
43
+ }
44
+ }
45
+ },
46
+ data() {
47
+ return {
48
+ show: this.lazy ? false : true
49
+ }
50
+ }
51
+ }
52
+ </script>
@@ -1,35 +1,35 @@
1
- ### Usage
2
-
3
- ```
4
- <Accordion>
5
- <AccordionItem title="Question 1">
6
- <p>Accordion item content</p>
7
- </AccordionItem>
8
- <AccordionItem title="Question 2">
9
- <p>Accordion item content</p>
10
- </AccordionItem>
11
- </Accordion>
12
- ```
13
-
14
- ### Class modifiers
15
-
16
- - Adding a class of **.accordion--keep-open** to the accordion will stop the items from closing when another one is opened.
17
- - Adding a class of **.accordion--straight** to the accordion will remove the slight indentation of the accordion.
18
-
19
-
20
- ### Accordion item Properties
21
-
22
- | Option | Type | Default Value | Description |
23
- | ------ | ---- | ------------- | ----------- |
24
- | title | String | - | A question or statement |
25
- | titlecolour | String | - | Apply a colour the the accordion item title |
26
- | badge | String | - | Add a highlighted badge/tag to the accordion item title |
27
- | badgecolour | String | light | Apply a colour the badge |
28
- | lazy | Boolean | - | If set the content of the tab will not loaded intially and will be loaded after the user has clicked on the accordion link. |
29
-
30
-
31
- ### Accordion item Slots
32
-
33
- | Option | Default Value | Description |
34
- | ------ | ------------- | ----------- |
1
+ ### Usage
2
+
3
+ ```
4
+ <Accordion>
5
+ <AccordionItem title="Question 1">
6
+ <p>Accordion item content</p>
7
+ </AccordionItem>
8
+ <AccordionItem title="Question 2">
9
+ <p>Accordion item content</p>
10
+ </AccordionItem>
11
+ </Accordion>
12
+ ```
13
+
14
+ ### Class modifiers
15
+
16
+ - Adding a class of **.accordion--keep-open** to the accordion will stop the items from closing when another one is opened.
17
+ - Adding a class of **.accordion--straight** to the accordion will remove the slight indentation of the accordion.
18
+
19
+
20
+ ### Accordion item Properties
21
+
22
+ | Option | Type | Default Value | Description |
23
+ | ------ | ---- | ------------- | ----------- |
24
+ | title | String | - | A question or statement |
25
+ | titlecolour | String | - | Apply a colour the the accordion item title |
26
+ | badge | String | - | Add a highlighted badge/tag to the accordion item title |
27
+ | badgecolour | String | light | Apply a colour the badge |
28
+ | lazy | Boolean | - | If set the content of the tab will not loaded intially and will be loaded after the user has clicked on the accordion link. |
29
+
30
+
31
+ ### Accordion item Slots
32
+
33
+ | Option | Default Value | Description |
34
+ | ------ | ------------- | ----------- |
35
35
  | default | - | This is the content of the accordion item |
@@ -1,49 +1,49 @@
1
- import { mount } from '@vue/test-utils'
2
- import Alert from './Alert.vue'
3
-
4
- describe('Alert component', () => {
5
- it('renders correctly', () => {
6
-
7
- const test = mount(Alert, {
8
- propsData: {
9
- },
10
- slots: {
11
- default: `<p>Content</p>`
12
- }
13
- })
14
-
15
- expect(test.html()).toContain('bg-primary')
16
- expect(test.html()).toContain('<p>Content</p>')
17
- })
18
-
19
- it('renders correct background', () => {
20
-
21
- const test = mount(Alert, {
22
- propsData: {
23
- colour: 'info'
24
- },
25
- slots: {
26
- default: `<p>Content</p>`
27
- }
28
- })
29
-
30
- expect(test.html()).toContain('bg-info')
31
- expect(test.html()).toContain('<p>Content</p>')
32
- })
33
-
34
- it('renders a close button', () => {
35
-
36
- const test = mount(Alert, {
37
- propsData: {
38
- dismissible: 'true'
39
- },
40
- slots: {
41
- default: `<p>Content</p>`
42
- }
43
- })
44
-
45
- expect(test.html()).toContain('<button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"alert\" aria-label=\"Close\"></button>')
46
- })
47
-
48
-
49
- })
1
+ import { mount } from '@vue/test-utils'
2
+ import Alert from './Alert.vue'
3
+
4
+ describe('Alert component', () => {
5
+ it('renders correctly', () => {
6
+
7
+ const test = mount(Alert, {
8
+ propsData: {
9
+ },
10
+ slots: {
11
+ default: `<p>Content</p>`
12
+ }
13
+ })
14
+
15
+ expect(test.html()).toContain('bg-primary')
16
+ expect(test.html()).toContain('<p>Content</p>')
17
+ })
18
+
19
+ it('renders correct background', () => {
20
+
21
+ const test = mount(Alert, {
22
+ propsData: {
23
+ colour: 'info'
24
+ },
25
+ slots: {
26
+ default: `<p>Content</p>`
27
+ }
28
+ })
29
+
30
+ expect(test.html()).toContain('bg-info')
31
+ expect(test.html()).toContain('<p>Content</p>')
32
+ })
33
+
34
+ it('renders a close button', () => {
35
+
36
+ const test = mount(Alert, {
37
+ propsData: {
38
+ dismissible: 'true'
39
+ },
40
+ slots: {
41
+ default: `<p>Content</p>`
42
+ }
43
+ })
44
+
45
+ expect(test.html()).toContain('<button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"alert\" aria-label=\"Close\"></button>')
46
+ })
47
+
48
+
49
+ })
@@ -1,39 +1,39 @@
1
- <template>
2
- <div :class="`container alert pb-0 ${dismissible?'alert--dismissible fade show':''}`" ref="wrapper" :data-timeout="timeout" :style="(timeout?`--animation-length: ${timeout}ms`:'')">
3
- <div :class="`alert__inner bg-${colour}`" role="alert">
4
- <button v-if="dismissible" type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
5
- <slot></slot>
6
- </div>
7
- </div>
8
- </template>
9
-
10
- <style lang="scss">
11
- @import "../../../assets/sass/components/alert.scss";
12
- </style>
13
-
14
- <script>
15
- import alert from '../../../assets/js/modules/alert.js'
16
-
17
- export default {
18
- name: 'Alert',
19
- props: {
20
- dismissible: {
21
- type: [String,Boolean],
22
- required: false,
23
- default: false
24
- },
25
- colour: {
26
- type: String,
27
- required: false,
28
- default: 'primary'
29
- },
30
- timeout: {
31
- type: [String,Number],
32
- required: false
33
- }
34
- },
35
- mounted(){
36
- alert(this.$refs.wrapper);
37
- }
38
- }
39
- </script>
1
+ <template>
2
+ <div :class="`container alert pb-0 ${dismissible?'alert--dismissible fade show':''}`" ref="wrapper" :data-timeout="timeout" :style="(timeout?`--animation-length: ${timeout}ms`:'')">
3
+ <div :class="`alert__inner bg-${colour}`" role="alert">
4
+ <button v-if="dismissible" type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
5
+ <slot></slot>
6
+ </div>
7
+ </div>
8
+ </template>
9
+
10
+ <style lang="scss">
11
+ @import "../../../assets/sass/components/alert.scss";
12
+ </style>
13
+
14
+ <script>
15
+ import alert from '../../../assets/js/modules/alert.js'
16
+
17
+ export default {
18
+ name: 'Alert',
19
+ props: {
20
+ dismissible: {
21
+ type: [String,Boolean],
22
+ required: false,
23
+ default: false
24
+ },
25
+ colour: {
26
+ type: String,
27
+ required: false,
28
+ default: 'primary'
29
+ },
30
+ timeout: {
31
+ type: [String,Number],
32
+ required: false
33
+ }
34
+ },
35
+ mounted(){
36
+ alert(this.$refs.wrapper);
37
+ }
38
+ }
39
+ </script>
@@ -1,29 +1,29 @@
1
- ### Usage
2
-
3
- ```
4
- <Alert class="alert--fixed" colour="info" dismissible timeout="6000">
5
- <h2 class="h6">Self dismissing alert</h2>
6
- <p>Curabitur aliquet quam id dui posuere blandit. Vivamus suscipit tortor eget felis porttitor volutpat. Proin eget tortor risus. Proin eget tortor risus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Proin eget tortor risus. Vivamus suscipit tortor eget felis porttitor volutpat. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus.</p>
7
- </Alert>
8
- ```
9
-
10
- ### Class and data modifiers
11
-
12
- - Adding a class of **.alert--fixed** stick the alert box to the bottom of the page.
13
- - Adding a class of **.alert--dismissible** will add the correct padding for the having a btn to the right.
14
-
15
-
16
- ### Properties
17
-
18
- | Option | Type | Default Value | Description |
19
- | ------ | ---- | ------------- | ----------- |
20
- | dismissible | Boolean | - | Adds a close button which will remove the alert box after clicking it. |
21
- | colour | String | primary | Apply a background colour the alert box, any of the theme colours can be used. |
22
- | timeout | String or Number | - | Sets a timeout to remove the alert box. |
23
-
24
-
25
- ### Slots
26
-
27
- | Option | Default Value | Description |
28
- | ------ | ------------- | ----------- |
1
+ ### Usage
2
+
3
+ ```
4
+ <Alert class="alert--fixed" colour="info" dismissible timeout="6000">
5
+ <h2 class="h6">Self dismissing alert</h2>
6
+ <p>Curabitur aliquet quam id dui posuere blandit. Vivamus suscipit tortor eget felis porttitor volutpat. Proin eget tortor risus. Proin eget tortor risus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Proin eget tortor risus. Vivamus suscipit tortor eget felis porttitor volutpat. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus.</p>
7
+ </Alert>
8
+ ```
9
+
10
+ ### Class and data modifiers
11
+
12
+ - Adding a class of **.alert--fixed** stick the alert box to the bottom of the page.
13
+ - Adding a class of **.alert--dismissible** will add the correct padding for the having a btn to the right.
14
+
15
+
16
+ ### Properties
17
+
18
+ | Option | Type | Default Value | Description |
19
+ | ------ | ---- | ------------- | ----------- |
20
+ | dismissible | Boolean | - | Adds a close button which will remove the alert box after clicking it. |
21
+ | colour | String | primary | Apply a background colour the alert box, any of the theme colours can be used. |
22
+ | timeout | String or Number | - | Sets a timeout to remove the alert box. |
23
+
24
+
25
+ ### Slots
26
+
27
+ | Option | Default Value | Description |
28
+ | ------ | ------------- | ----------- |
29
29
  | default | - | This is the content of the alert box |
@@ -1,28 +1,28 @@
1
- import { shallowMount } from '@vue/test-utils'
2
- import Header from './Banner.vue'
3
-
4
- describe('Banner component', () => {
5
-
6
- const test = shallowMount(Header, {
7
- propsData: {
8
- title: 'Banner title',
9
- image: '/img/src/img.png'
10
- },
11
- slots: {
12
- default: '<p>Hello</p>'
13
- }
14
- })
15
-
16
- it('renders the banner title', () => {
17
- expect(test.html()).toContain('<h2>Banner title</h2>')
18
- })
19
-
20
- it('renders the banner content', () => {
21
- expect(test.html()).toContain('<p>Hello</p>')
22
- })
23
-
24
-
25
- it('renders the image', () => {
26
- expect(test.html()).toContain('<img src="/img/src/img.png" alt="" class="h-100 w-100 object-cover">')
27
- })
28
- })
1
+ import { shallowMount } from '@vue/test-utils'
2
+ import Header from './Banner.vue'
3
+
4
+ describe('Banner component', () => {
5
+
6
+ const test = shallowMount(Header, {
7
+ propsData: {
8
+ title: 'Banner title',
9
+ image: '/img/src/img.png'
10
+ },
11
+ slots: {
12
+ default: '<p>Hello</p>'
13
+ }
14
+ })
15
+
16
+ it('renders the banner title', () => {
17
+ expect(test.html()).toContain('<h2>Banner title</h2>')
18
+ })
19
+
20
+ it('renders the banner content', () => {
21
+ expect(test.html()).toContain('<p>Hello</p>')
22
+ })
23
+
24
+
25
+ it('renders the image', () => {
26
+ expect(test.html()).toContain('<img src="/img/src/img.png" alt="" class="h-100 w-100 object-cover">')
27
+ })
28
+ })