@iamproperty/components 3.1.0 → 3.4.4

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 (179) hide show
  1. package/README.md +141 -16
  2. package/assets/css/core.min.css +1 -1
  3. package/assets/css/core.min.css.map +1 -1
  4. package/assets/css/style.min.css +1 -1
  5. package/assets/css/style.min.css.map +1 -1
  6. package/assets/favicons/manifest.json +31 -31
  7. package/assets/js/main.js +57 -57
  8. package/assets/js/modules/accordion.js +33 -32
  9. package/assets/js/modules/alert.js +41 -57
  10. package/assets/js/modules/carousel.js +76 -102
  11. package/assets/js/modules/chart.js +151 -218
  12. package/assets/js/modules/drawer.js +10 -16
  13. package/assets/js/modules/file-upload.js +33 -48
  14. package/assets/js/modules/form.js +122 -168
  15. package/assets/js/modules/helpers.js +90 -119
  16. package/assets/js/modules/modal.js +69 -90
  17. package/assets/js/modules/nav.js +18 -28
  18. package/assets/js/modules/orderablelist.js +91 -122
  19. package/assets/js/modules/table.js +451 -585
  20. package/assets/js/modules/testimonial.js +64 -83
  21. package/assets/js/modules/youtubevideo.js +114 -145
  22. package/assets/js/scripts.bundle.js +895 -955
  23. package/assets/js/scripts.bundle.js.map +1 -1
  24. package/assets/js/scripts.bundle.min.js +3 -3
  25. package/assets/js/scripts.bundle.min.js.map +1 -1
  26. package/assets/sass/_components.scss +14 -14
  27. package/assets/sass/_corefiles.scss +40 -40
  28. package/assets/sass/_fonts.scss +16 -16
  29. package/assets/sass/_forms.scss +10 -10
  30. package/assets/sass/_func.scss +12 -12
  31. package/assets/sass/_functions/functions.scss +141 -141
  32. package/assets/sass/_functions/mixins.scss +170 -170
  33. package/assets/sass/_functions/utilities.scss +143 -143
  34. package/assets/sass/_functions/variables.scss +467 -467
  35. package/assets/sass/_print.scss +61 -61
  36. package/assets/sass/_tests/{sass.spec.js → colours.spec.js} +9 -9
  37. package/assets/sass/_tests/colours.spec.scss +44 -44
  38. package/assets/sass/_tests/func.spec.js +9 -0
  39. package/assets/sass/_tests/func.spec.scss +232 -232
  40. package/assets/sass/_tests/mixins.spec.js +9 -0
  41. package/assets/sass/_tests/mixins.spec.scss +194 -194
  42. package/assets/sass/_tests/typography.spec.js +9 -0
  43. package/assets/sass/_tests/typography.spec.scss +35 -35
  44. package/assets/sass/components/accordion.scss +197 -197
  45. package/assets/sass/components/alert.scss +98 -98
  46. package/assets/sass/{elements → components}/buttons.scss +251 -251
  47. package/assets/sass/{elements → components}/card.scss +288 -288
  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/{elements → components}/container.scss +236 -236
  52. package/assets/sass/components/drawer.scss +46 -46
  53. package/assets/sass/{elements → components}/forms.scss +261 -261
  54. package/assets/sass/components/header.scss +63 -63
  55. package/assets/sass/{elements → components}/links.scss +97 -97
  56. package/assets/sass/{elements → components}/lists.scss +159 -159
  57. package/assets/sass/components/modal.scss +136 -136
  58. package/assets/sass/components/nav.scss +960 -960
  59. package/assets/sass/{elements → components}/panel.scss +161 -161
  60. package/assets/sass/components/property-searchbar.scss +143 -143
  61. package/assets/sass/components/snapshot.scss +70 -70
  62. package/assets/sass/components/stepper.scss +164 -164
  63. package/assets/sass/{elements → components}/tables.scss +290 -290
  64. package/assets/sass/components/tabs.scss +87 -87
  65. package/assets/sass/components/testimonial.scss +132 -132
  66. package/assets/sass/components/timeline.scss +95 -95
  67. package/assets/sass/{elements → components}/tooltips.scss +84 -84
  68. package/assets/sass/core.scss +6 -6
  69. package/assets/sass/email.scss +65 -65
  70. package/assets/sass/error.scss +4 -4
  71. package/assets/sass/foundations/brand.scss +76 -72
  72. package/assets/sass/foundations/circles.scss +74 -74
  73. package/assets/sass/foundations/icons.scss +80 -80
  74. package/assets/sass/foundations/media.scss +50 -50
  75. package/assets/sass/foundations/reboot.scss +130 -130
  76. package/assets/sass/foundations/root.scss +125 -125
  77. package/assets/sass/{elements → foundations}/type.scss +136 -136
  78. package/assets/sass/main.scss +7 -7
  79. package/assets/svg/icons.svg +598 -598
  80. package/assets/svg/logo.svg +49 -43
  81. package/assets/ts/main.ts +68 -68
  82. package/assets/ts/modules/accordion.ts +44 -43
  83. package/assets/ts/modules/alert.ts +58 -0
  84. package/assets/ts/modules/carousel.ts +103 -0
  85. package/assets/ts/modules/chart.ts +219 -0
  86. package/assets/ts/modules/drawer.ts +17 -0
  87. package/assets/ts/modules/file-upload.ts +49 -0
  88. package/assets/ts/modules/form.ts +169 -0
  89. package/assets/ts/modules/helpers.ts +120 -0
  90. package/assets/ts/modules/modal.ts +91 -0
  91. package/assets/ts/modules/nav.ts +29 -0
  92. package/assets/ts/modules/orderablelist.ts +123 -0
  93. package/assets/ts/modules/table.ts +586 -0
  94. package/assets/ts/modules/testimonial.ts +84 -0
  95. package/assets/ts/modules/youtubevideo.ts +146 -0
  96. package/dist/components.es.js +493 -509
  97. package/dist/components.umd.js +15 -15
  98. package/package.json +109 -108
  99. package/src/components/Accordion/Accordion.spec.js +63 -63
  100. package/src/components/Accordion/Accordion.vue +22 -22
  101. package/src/components/Accordion/AccordionItem.vue +52 -52
  102. package/src/components/Accordion/README.md +34 -34
  103. package/src/components/Alert/Alert.spec.js +49 -49
  104. package/src/components/Alert/Alert.vue +39 -39
  105. package/src/components/Alert/README.md +28 -28
  106. package/src/components/Banner/Banner.spec.js +28 -28
  107. package/src/components/Banner/Banner.vue +38 -38
  108. package/src/components/Banner/README.md +23 -23
  109. package/src/{elements → components}/Card/Card.vue +122 -122
  110. package/src/{elements/FileUploads → components/Card}/README.md +24 -24
  111. package/src/components/CardDeck/CardDeck.spec.js +99 -99
  112. package/src/components/CardDeck/CardDeck.vue +77 -77
  113. package/src/components/CardDeck/README.md +24 -24
  114. package/src/components/Carousel/Carousel.spec.js +45 -45
  115. package/src/components/Carousel/Carousel.vue +85 -85
  116. package/src/components/Carousel/README.md +19 -19
  117. package/src/components/Chart/Chart.spec.js +201 -201
  118. package/src/components/Chart/Chart.vue +88 -88
  119. package/src/components/Chart/README.md +17 -17
  120. package/src/components/Drawer/Drawer.vue +53 -53
  121. package/src/components/Drawer/README.md +22 -22
  122. package/src/{elements → components}/FileUploads/FileUploads.vue +48 -48
  123. package/src/{elements/Card → components/FileUploads}/README.md +24 -24
  124. package/src/components/Header/Header.spec.js +33 -33
  125. package/src/components/Header/Header.vue +38 -38
  126. package/src/components/Header/README.md +27 -27
  127. package/src/{elements → components}/Input/Input.vue +272 -272
  128. package/src/{elements → components}/Input/README.md +19 -19
  129. package/src/components/Modal/Modal.spec.js +22 -22
  130. package/src/components/Modal/Modal.vue +43 -43
  131. package/src/components/Modal/README.md +19 -19
  132. package/src/components/Nav/Nav.spec.js +35 -35
  133. package/src/components/Nav/Nav.vue +215 -215
  134. package/src/components/Nav/README.md +22 -22
  135. package/src/components/NoteFeed/NoteFeed.vue +79 -79
  136. package/src/components/NoteFeed/README.md +16 -16
  137. package/src/components/PropertySearchbar/PropertySearchbar.vue +204 -204
  138. package/src/components/PropertySearchbar/README.md +25 -25
  139. package/src/components/Snapshot/README.md +20 -20
  140. package/src/components/Snapshot/Snapshot.vue +32 -32
  141. package/src/components/Stepper/README.md +32 -32
  142. package/src/components/Stepper/Step.vue +28 -28
  143. package/src/components/Stepper/Stepper.spec.js +99 -99
  144. package/src/components/Stepper/Stepper.vue +33 -33
  145. package/src/{elements → components}/Table/README.md +62 -62
  146. package/src/{elements → components}/Table/Table.spec.js +90 -90
  147. package/src/{elements → components}/Table/Table.vue +129 -129
  148. package/src/components/Tabs/README.md +27 -27
  149. package/src/components/Tabs/Tab.vue +32 -32
  150. package/src/components/Tabs/Tabs.vue +77 -77
  151. package/src/components/Testimonial/README.md +25 -25
  152. package/src/components/Testimonial/Testimonial.spec.js +57 -57
  153. package/src/components/Testimonial/Testimonial.vue +60 -60
  154. package/src/components/Timeline/README.md +18 -18
  155. package/src/components/Timeline/Timeline.spec.js +17 -17
  156. package/src/components/Timeline/Timeline.vue +24 -24
  157. package/src/foundations/Icon/Icon.spec.js +24 -24
  158. package/src/foundations/Icon/Icon.vue +24 -24
  159. package/src/foundations/Icon/README.md +11 -11
  160. package/src/foundations/Logo/Logo.spec.js +56 -56
  161. package/src/foundations/Logo/Logo.vue +39 -39
  162. package/src/foundations/Logo/README.md +20 -20
  163. package/src/foundations/YoutubeVideo/README.md +11 -11
  164. package/src/foundations/YoutubeVideo/YoutubeVideo.vue +24 -24
  165. package/src/helpers/strings.js +12 -12
  166. package/src/index.js +27 -27
  167. package/src/vue-shim.d.ts +6 -6
  168. package/assets/css/email.min.css +0 -1
  169. package/assets/css/email.min.css.map +0 -1
  170. package/assets/css/error.min.css +0 -1
  171. package/assets/css/error.min.css.map +0 -1
  172. package/assets/ts/main.js +0 -57
  173. package/assets/ts/main.js.map +0 -1
  174. package/assets/ts/modules/accordion.js +0 -33
  175. package/assets/ts/modules/accordion.js.map +0 -1
  176. package/src/components/Accordion/Accordion.screenshot.vue +0 -57
  177. package/src/components/Accordion/__screenshots__/win32/laptop/Accordion.png +0 -0
  178. package/src/components/Accordion/__screenshots__/win32/mobile/Accordion.png +0 -0
  179. package/src/components/Accordion/__screenshots__/win32/tablet/Accordion.png +0 -0
package/package.json CHANGED
@@ -1,108 +1,109 @@
1
- {
2
- "name": "@iamproperty/components",
3
- "description": "Component library for iamproperty",
4
- "author": {
5
- "name": "iamproperty"
6
- },
7
- "private": false,
8
- "version": "3.1.0",
9
- "scripts": {
10
- "dev": "npm run copy && vite --host",
11
- "build": "npm run compile && vue-tsc --noEmit && vite build --mode lib",
12
- "prepack": "npm run build",
13
- "build:docs": "npm run copy && vue-tsc --noEmit && vite build",
14
- "preview": "vite preview --host",
15
- "compile:sass": "sass assets/sass/main.scss assets/css/style.min.css --style=compressed && sass assets/sass/core.scss assets/css/core.min.css --style=compressed",
16
- "compile:ts": "node node_modules/typescript/bin/tsc --project tscompileconfig.json",
17
- "compile:js": "rollup --environment BUNDLE:true --config rollup.config.js --sourcemap && terser --compress passes=2 --mangle --comments \"/^!/\" --source-map \"content=assets/js/scripts.bundle.js.map,includeSources,url=scripts.bundle.min.js.map\" --output assets/js/scripts.bundle.min.js assets/js/scripts.bundle.js",
18
- "compile": "npm run compile:sass && npm run compile:ts && npm run compile:js",
19
- "copy:svg": "copyfiles -u 2 assets/svg/**/* public/svg && copyfiles -u 2 assets/svg/icons.svg public/svg && copyfiles -u 2 assets/svg/logo.svg public/svg",
20
- "copy:img": "copyfiles -u 2 assets/img/**/* public/img",
21
- "copy:fonts": "copyfiles -u 2 assets/fonts/**/* public/fonts",
22
- "copy:icons": "copyfiles -u 2 assets/favicons/**/* public/",
23
- "copy": "npm run copy:svg && npm run copy:img && npm run copy:fonts && npm run copy:icons",
24
- "audit": "node local_modules/audit.js",
25
- "gen:email": "sass assets/sass/email.scss assets/css/email.min.css --style=compressed && node local_modules/email-css.js",
26
- "gen:error": "sass assets/sass/error.scss assets/css/error.min.css --style=compressed && node local_modules/error-css.js",
27
- "test:unit": "jest src",
28
- "test:scss": "jest assets/sass/_tests",
29
- "visual:components": "viteshot",
30
- "visual:docs": "jest tests",
31
- "visual:approve": "jest tests --updateSnapshot",
32
- "pull-request": "npm run test:unit && npm run test:scss && npm run visual:approve && npm run compile && npm run audit",
33
- "deploy:fonts": "copyfiles -u 2 assets/fonts/**/* dist/assets/fonts",
34
- "deploy:svg": "copyfiles -u 2 assets/svg/icons.svg dist/svg && copyfiles -u 2 assets/svg/logo.svg dist/svg",
35
- "deploy:404": "node local_modules/create404.js"
36
- },
37
- "dependencies": {
38
- "@babel/preset-typescript": "^7.18.6",
39
- "@fullhuman/postcss-purgecss": "^4.1.3",
40
- "bootstrap": "^5.2.0",
41
- "copyfiles": "^2.4.1",
42
- "cross-env": "^7.0.3",
43
- "expect-puppeteer": "^6.1.1",
44
- "jest-environment-jsdom": "^28.1.3",
45
- "jest-image-snapshot": "^5.1.0",
46
- "jest-puppeteer": "^6.1.1",
47
- "jest-serializer-vue": "^2.0.2",
48
- "path": "^0.12.7",
49
- "playwright": "^1.25.0",
50
- "postcss": "^8.4.16",
51
- "postcss-css-variables": "^0.18.0",
52
- "puppeteer": "^10.4.0",
53
- "sass-true": "^6.1.0",
54
- "tslib": "^2.4.0",
55
- "url": "^0.11.0",
56
- "viteshot": "^0.3.1",
57
- "vue": "^3.2.37",
58
- "vue-router": "^4.1.3"
59
- },
60
- "devDependencies": {
61
- "@babel/cli": "^7.18.10",
62
- "@babel/core": "^7.18.10",
63
- "@babel/plugin-transform-runtime": "^7.18.10",
64
- "@babel/preset-env": "^7.18.10",
65
- "@rollup/plugin-babel": "^5.3.1",
66
- "@rollup/plugin-commonjs": "^22.0.2",
67
- "@rollup/plugin-node-resolve": "^13.3.0",
68
- "@rollup/plugin-replace": "^4.0.0",
69
- "@rollup/plugin-typescript": "^8.3.4",
70
- "@types/jest": "^28.1.7",
71
- "@vitejs/plugin-vue": "^3.0.0",
72
- "@vue/test-utils": "^2.0.0-rc.18",
73
- "@vue/vue3-jest": "^28.1.0",
74
- "babel-jest": "^28.1.3",
75
- "jest": "^28.1.3",
76
- "sass": "^1.54.3",
77
- "terser": "^5.14.2",
78
- "ts-jest": "^28.0.8",
79
- "typescript": "^4.6.4",
80
- "vite": "^3.0.0",
81
- "vite-plugin-md": "^0.20.2",
82
- "vite-plugin-svg": "^0.7.0",
83
- "vue-jest": "^5.0.0-alpha.10",
84
- "vue-tsc": "^0.38.4"
85
- },
86
- "main": "./dist/components.umd.js",
87
- "module": "./dist/components.es.js",
88
- "files": [
89
- "dist/components.umd.js",
90
- "dist/components.es.js",
91
- "dist/style.css",
92
- "assets/*",
93
- "src/*"
94
- ],
95
- "exports": {
96
- ".": {
97
- "import": "./dist/components.js",
98
- "require": "./dist/components.umd.cjs"
99
- }
100
- },
101
- "license": "UNLICENSED",
102
- "registry-url": "https://registry.npmjs.com",
103
- "repository": {
104
- "type": "git",
105
- "url": "git://github.com/iamproperty/iamproperty-vue-component-library.git"
106
- },
107
- "localURL": "http://192.168.0.62:5173"
108
- }
1
+ {
2
+ "name": "@iamproperty/components",
3
+ "description": "Component library for iamproperty",
4
+ "author": {
5
+ "name": "iamproperty"
6
+ },
7
+ "private": false,
8
+ "version": "3.4.4",
9
+ "scripts": {
10
+ "dev": "npm run copy && vite --host",
11
+ "build": "npm run compile && vue-tsc --noEmit && vite build --mode lib",
12
+ "prepack": "npm run build",
13
+ "build:docs": "npm run copy && vue-tsc --noEmit && vite build",
14
+ "preview": "vite preview --host",
15
+ "compile:sass": "sass assets/sass/main.scss assets/css/style.min.css --style=compressed && sass assets/sass/core.scss assets/css/core.min.css --style=compressed",
16
+ "compile:ts": "node node_modules/typescript/bin/tsc --project tscompileconfig.json && fix-esm-import-path assets/js",
17
+ "compile:js": "rollup --environment BUNDLE:true --config rollup.config.js --sourcemap && terser --compress passes=2 --mangle --comments \"/^!/\" --source-map \"content=assets/js/scripts.bundle.js.map,includeSources,url=scripts.bundle.min.js.map\" --output assets/js/scripts.bundle.min.js assets/js/scripts.bundle.js",
18
+ "compile": "npm run compile:sass && npm run compile:ts && npm run compile:js",
19
+ "copy:svg": "copyfiles -u 2 assets/svg/**/* public/svg && copyfiles -u 2 assets/svg/icons.svg public/svg && copyfiles -u 2 assets/svg/logo.svg public/svg",
20
+ "copy:img": "copyfiles -u 2 assets/img/**/* public/img",
21
+ "copy:fonts": "copyfiles -u 2 assets/fonts/**/* public/fonts",
22
+ "copy:icons": "copyfiles -u 2 assets/favicons/**/* public/",
23
+ "copy": "npm run copy:svg && npm run copy:img && npm run copy:fonts && npm run copy:icons",
24
+ "audit": "node local_modules/audit.js",
25
+ "gen:email": "sass assets/sass/email.scss assets/css/email.min.css --style=compressed && node local_modules/email-css.js",
26
+ "gen:error": "sass assets/sass/error.scss assets/css/error.min.css --style=compressed && node local_modules/error-css.js",
27
+ "test:unit": "jest src",
28
+ "test:scss": "jest assets/sass/_tests",
29
+ "test": "npm run test:unit && npm run test:scss",
30
+ "visual:docs": "jest tests",
31
+ "visual:approve": "jest tests --updateSnapshot",
32
+ "pull-request": "npm run test:unit && npm run test:scss && npm run visual:approve && npm run compile && npm run audit",
33
+ "deploy:fonts": "copyfiles -u 2 assets/fonts/**/* dist/assets/fonts",
34
+ "deploy:svg": "copyfiles -u 2 assets/svg/icons.svg dist/svg && copyfiles -u 2 assets/svg/logo.svg dist/svg",
35
+ "deploy:404": "node local_modules/create404.js"
36
+ },
37
+ "dependencies": {
38
+ "bootstrap": "^5.2.0"
39
+ },
40
+ "devDependencies": {
41
+ "@babel/cli": "^7.21.0",
42
+ "@babel/core": "^7.21.3",
43
+ "@babel/plugin-transform-runtime": "^7.21.0",
44
+ "@babel/preset-env": "^7.20.2",
45
+ "@babel/preset-typescript": "^7.21.0",
46
+ "@esbuild/linux-x64": "^0.17.17",
47
+ "@fullhuman/postcss-purgecss": "^5.0.0",
48
+ "@rollup/plugin-babel": "^6.0.3",
49
+ "@rollup/plugin-commonjs": "^24.0.1",
50
+ "@rollup/plugin-node-resolve": "^15.0.1",
51
+ "@rollup/plugin-replace": "^5.0.2",
52
+ "@rollup/plugin-typescript": "^11.0.0",
53
+ "@types/jest": "^29.5.0",
54
+ "@vitejs/plugin-vue": "^4.1.0",
55
+ "@vue/test-utils": "^2.3.2",
56
+ "@vue/vue3-jest": "^29.2.3",
57
+ "babel-jest": "^29.5.0",
58
+ "copyfiles": "^2.4.1",
59
+ "cross-env": "^7.0.3",
60
+ "expect-puppeteer": "^8.0.5",
61
+ "fix-esm-import-path": "^1.3.1",
62
+ "jest": "^29.5.0",
63
+ "jest-environment-jsdom": "^29.5.0",
64
+ "jest-environment-node-single-context": "^29.0.0",
65
+ "jest-image-snapshot": "^6.1.0",
66
+ "jest-puppeteer": "^8.0.6",
67
+ "jest-serializer-vue": "^3.1.0",
68
+ "path": "^0.12.7",
69
+ "postcss": "^8.4.21",
70
+ "postcss-css-variables": "^0.18.0",
71
+ "puppeteer": "^19.7.5",
72
+ "sass": "^1.60.0",
73
+ "sass-true": "^7.0.0",
74
+ "terser": "^5.16.6",
75
+ "ts-jest": "^29.0.5",
76
+ "ts-node-dev": "^2.0.0",
77
+ "tslib": "^2.5.0",
78
+ "typescript": "^5.0.2",
79
+ "url": "^0.11.0",
80
+ "vite": "^4.2.1",
81
+ "vite-plugin-vue-markdown": "^0.22.4",
82
+ "vue": "^3.2.47",
83
+ "vue-jest": "^3.0.7",
84
+ "vue-router": "^4.1.6",
85
+ "vue-tsc": "^1.2.0"
86
+ },
87
+ "main": "./dist/components.umd.js",
88
+ "module": "./dist/components.es.js",
89
+ "files": [
90
+ "dist/components.umd.js",
91
+ "dist/components.es.js",
92
+ "dist/style.css",
93
+ "assets/*",
94
+ "src/*"
95
+ ],
96
+ "exports": {
97
+ ".": {
98
+ "import": "./dist/components.js",
99
+ "require": "./dist/components.umd.cjs"
100
+ }
101
+ },
102
+ "license": "UNLICENSED",
103
+ "registry-url": "https://registry.npmjs.com",
104
+ "repository": {
105
+ "type": "git",
106
+ "url": "git://github.com/iamproperty/iamproperty.github.io.git"
107
+ },
108
+ "localURL": "http://192.168.0.69:5173"
109
+ }
@@ -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/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
+ <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'
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 |