@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
@@ -1,53 +1,53 @@
1
- <template>
2
- <div ref="wrapper">
3
- <input type="checkbox" name="showDrawer" id="showDrawer" class="d-none">
4
- <div class="drawer__btn pb-0">
5
- <div class="container text-end pb-0">
6
- <label for="showDrawer" class="btn btn-secondary me-0">{{label}}</label>
7
- </div>
8
- </div>
9
- <div class="drawer" id="drawer" ref="drawer">
10
- <div class="container text-end pb-0">
11
- <label for="showDrawer" class="btn btn-tertiary mb-0 me-0 py-1 px-2"><span class="visually-hidden">Close</span>&#x2715;</label>
12
- </div>
13
- <slot></slot>
14
- </div>
15
- <hr id="drawer-end" />
16
- </div>
17
- </template>
18
-
19
-
20
- <style lang="scss">
21
- @import "../../../assets/sass/components/drawer.scss";
22
- </style>
23
-
24
- <script>
25
- import drawer from '../../../assets/js/modules/drawer.js'
26
-
27
- export default {
28
- name: 'Header',
29
- props: {
30
- label: {
31
- type: String,
32
- required: true
33
- }
34
- },
35
- mounted(){
36
-
37
- this.$nextTick(function () {
38
-
39
- let element = this.$refs.wrapper;
40
-
41
- const fragment = document.createDocumentFragment();
42
- Array.from(element.childNodes).forEach(child => fragment.appendChild(child));
43
- element.parentNode.insertBefore(fragment, element);
44
- element.parentNode.removeChild(element);
45
-
46
- this.$nextTick(function () {
47
-
48
- drawer(this.$refs.drawer);
49
- })
50
- })
51
- },
52
- }
53
- </script>
1
+ <template>
2
+ <div ref="wrapper">
3
+ <input type="checkbox" name="showDrawer" id="showDrawer" class="d-none">
4
+ <div class="drawer__btn pb-0">
5
+ <div class="container text-end pb-0">
6
+ <label for="showDrawer" class="btn btn-secondary me-0">{{label}}</label>
7
+ </div>
8
+ </div>
9
+ <div class="drawer" id="drawer" ref="drawer">
10
+ <div class="container text-end pb-0">
11
+ <label for="showDrawer" class="btn btn-tertiary mb-0 me-0 py-1 px-2"><span class="visually-hidden">Close</span>&#x2715;</label>
12
+ </div>
13
+ <slot></slot>
14
+ </div>
15
+ <hr id="drawer-end" />
16
+ </div>
17
+ </template>
18
+
19
+
20
+ <style lang="scss">
21
+ @import "../../../assets/sass/components/drawer.scss";
22
+ </style>
23
+
24
+ <script>
25
+ import drawer from '../../../assets/ts/modules/drawer'
26
+
27
+ export default {
28
+ name: 'Header',
29
+ props: {
30
+ label: {
31
+ type: String,
32
+ required: true
33
+ }
34
+ },
35
+ mounted(){
36
+
37
+ this.$nextTick(function () {
38
+
39
+ let element = this.$refs.wrapper;
40
+
41
+ const fragment = document.createDocumentFragment();
42
+ Array.from(element.childNodes).forEach(child => fragment.appendChild(child));
43
+ element.parentNode.insertBefore(fragment, element);
44
+ element.parentNode.removeChild(element);
45
+
46
+ this.$nextTick(function () {
47
+
48
+ drawer(this.$refs.drawer);
49
+ })
50
+ })
51
+ },
52
+ }
53
+ </script>
@@ -1,23 +1,23 @@
1
- ### Usage
2
-
3
- ```
4
- <Drawer label="Open drawer">
5
- <div class="container">
6
- <h2>Drawer contentent</h2>
7
- </div>
8
- </Drawer>
9
- ```
10
-
11
- ### Properties
12
-
13
- | Option | Type | Default Value | Description |
14
- | ------ | ---- | ------------- | ----------- |
15
- | label | String | - | Required text for the button |
16
-
17
-
18
-
19
- ### Slots
20
-
21
- | Option | Default Value | Description |
22
- | ------ | ------------- | ----------- |
1
+ ### Usage
2
+
3
+ ```
4
+ <Drawer label="Open drawer">
5
+ <div class="container">
6
+ <h2>Drawer contentent</h2>
7
+ </div>
8
+ </Drawer>
9
+ ```
10
+
11
+ ### Properties
12
+
13
+ | Option | Type | Default Value | Description |
14
+ | ------ | ---- | ------------- | ----------- |
15
+ | label | String | - | Required text for the button |
16
+
17
+
18
+
19
+ ### Slots
20
+
21
+ | Option | Default Value | Description |
22
+ | ------ | ------------- | ----------- |
23
23
  | default | - | Will display within the drawer |
@@ -1,48 +1,48 @@
1
- <template>
2
- <div class="multiple-file-uploads mb-4">
3
-
4
- <div class="row">
5
- <div :class="`${inputcolclass ? inputcolclass : 'col-12 col-sm-4'}`">
6
- <Input type="file" :id="id" :name="`${id}[]`" label="Add new file" labelclass="d-none" class="form-control-inline col" required :data-filesize="maxfilesize"></Input>
7
- </div>
8
- <div class="col-12 col-md me-auto">
9
- <slot></slot>
10
- </div>
11
- <div class="col mw-fit-content">
12
- <button type="button" class="btn btn-tertiary me-0" data-delete>Delete</button>
13
- </div>
14
- </div>
15
-
16
- <button type="button" class="btn btn-secondary me-0" data-add :data-maxfiles="maxfiles">+ Add file</button>
17
-
18
- </div>
19
- </template>
20
-
21
- <script>
22
- import Input from '../../elements/Input/Input.vue'
23
-
24
- export default {
25
- components: {
26
- Input
27
- },
28
- name: 'FileUploads',
29
- props: {
30
- id: {
31
- type: String,
32
- required: true
33
- },
34
- inputcolclass: {
35
- type: String,
36
- required: false
37
- },
38
- maxfilesize: {
39
- type: Number,
40
- required: false
41
- },
42
- maxfiles: {
43
- type: Number,
44
- required: false
45
- }
46
- }
47
- }
48
- </script>
1
+ <template>
2
+ <div class="multiple-file-uploads mb-4">
3
+
4
+ <div class="row">
5
+ <div :class="`${inputcolclass ? inputcolclass : 'col-12 col-sm-4'}`">
6
+ <Input type="file" :id="id" :name="`${id}[]`" label="Add new file" labelclass="d-none" class="form-control-inline col" required :data-filesize="maxfilesize"></Input>
7
+ </div>
8
+ <div class="col-12 col-md me-auto">
9
+ <slot></slot>
10
+ </div>
11
+ <div class="col mw-fit-content">
12
+ <button type="button" class="btn btn-tertiary me-0" data-delete>Delete</button>
13
+ </div>
14
+ </div>
15
+
16
+ <button type="button" class="btn btn-secondary me-0" data-add :data-maxfiles="maxfiles">+ Add file</button>
17
+
18
+ </div>
19
+ </template>
20
+
21
+ <script>
22
+ import Input from '../../components/Input/Input.vue'
23
+
24
+ export default {
25
+ components: {
26
+ Input
27
+ },
28
+ name: 'FileUploads',
29
+ props: {
30
+ id: {
31
+ type: String,
32
+ required: true
33
+ },
34
+ inputcolclass: {
35
+ type: String,
36
+ required: false
37
+ },
38
+ maxfilesize: {
39
+ type: Number,
40
+ required: false
41
+ },
42
+ maxfiles: {
43
+ type: Number,
44
+ required: false
45
+ }
46
+ }
47
+ }
48
+ </script>
@@ -1,24 +1,24 @@
1
- ### Usage
2
-
3
- ```
4
- <Card :title="value.title" :content="value.content" :link="value.link"></Card>
5
- ```
6
-
7
- ### Properties
8
-
9
- | Option | Type | Default Value | Description |
10
- | ------ | ---- | ------------- | ----------- |
11
- | title | String | - | Used for the card heading |
12
- | titleclass | String | h2 | Update the class of the title from being a h2 |
13
- | subtitle | String | - | Optional sub heading |
14
- | content | HTML | - | Card content |
15
- | link | String | - | Card link |
16
- | type | String | - | Change the type of card (simple,quick)|
17
- | btntype | String | secondary | Change the type of button at the bottom of the card (primary,secondary,tertairy, link) |
18
- | ctatext | String | Find out more | Update the cta text within the button at the bottom of the card |
19
- | details | Object | - | Build up the card content with pre-defined bits of data |
20
- | - detail.tags | Array of strings | - | Add tags above the card header |
21
- | - detail.guideprice | String | - | Property guide price |
22
- | - detail.auctiontime | String | - | Auction time left |
23
- | - detail.readtime | String | - | How long it will take to read |
24
- | - detail.status | String | - | Display a status badge at the top of the card |
1
+ ### Usage
2
+
3
+ ```
4
+ <Card :title="value.title" :content="value.content" :link="value.link"></Card>
5
+ ```
6
+
7
+ ### Properties
8
+
9
+ | Option | Type | Default Value | Description |
10
+ | ------ | ---- | ------------- | ----------- |
11
+ | title | String | - | Used for the card heading |
12
+ | titleclass | String | h2 | Update the class of the title from being a h2 |
13
+ | subtitle | String | - | Optional sub heading |
14
+ | content | HTML | - | Card content |
15
+ | link | String | - | Card link |
16
+ | type | String | - | Change the type of card (simple,quick)|
17
+ | btntype | String | secondary | Change the type of button at the bottom of the card (primary,secondary,tertairy, link) |
18
+ | ctatext | String | Find out more | Update the cta text within the button at the bottom of the card |
19
+ | details | Object | - | Build up the card content with pre-defined bits of data |
20
+ | - detail.tags | Array of strings | - | Add tags above the card header |
21
+ | - detail.guideprice | String | - | Property guide price |
22
+ | - detail.auctiontime | String | - | Auction time left |
23
+ | - detail.readtime | String | - | How long it will take to read |
24
+ | - detail.status | String | - | Display a status badge at the top of the card |
@@ -1,33 +1,33 @@
1
- import { shallowMount } from '@vue/test-utils'
2
- import Header from './Header.vue'
3
-
4
- describe('Header component', () => {
5
-
6
- const test = shallowMount(Header, {
7
- propsData: {
8
- title: 'Page title',
9
- image: '/img/src/img.png'
10
- },
11
- slots: {
12
- default: '<p>Hello</p>',
13
- breadcrumb: '<ul class="breadcrumb"></ul>'
14
- }
15
- })
16
-
17
- it('renders the page title', () => {
18
- expect(test.html()).toContain('<h1>Page title</h1>')
19
- })
20
-
21
- it('renders the page description', () => {
22
- expect(test.html()).toContain('<p>Hello</p>')
23
- })
24
-
25
- it('renders the breadcrumb trail', () => {
26
- expect(test.html()).toContain('<ul class="breadcrumb"></ul>')
27
- })
28
-
29
- it('renders the image', () => {
30
- expect(test.html()).toContain('<source srcset="/img/src/img.png" media="(min-width: 62em)">')
31
- expect(test.html()).toContain('<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="">')
32
- })
33
- })
1
+ import { shallowMount } from '@vue/test-utils'
2
+ import Header from './Header.vue'
3
+
4
+ describe('Header component', () => {
5
+
6
+ const test = shallowMount(Header, {
7
+ propsData: {
8
+ title: 'Page title',
9
+ image: '/img/src/img.png'
10
+ },
11
+ slots: {
12
+ default: '<p>Hello</p>',
13
+ breadcrumb: '<ul class="breadcrumb"></ul>'
14
+ }
15
+ })
16
+
17
+ it('renders the page title', () => {
18
+ expect(test.html()).toContain('<h1>Page title</h1>')
19
+ })
20
+
21
+ it('renders the page description', () => {
22
+ expect(test.html()).toContain('<p>Hello</p>')
23
+ })
24
+
25
+ it('renders the breadcrumb trail', () => {
26
+ expect(test.html()).toContain('<ul class="breadcrumb"></ul>')
27
+ })
28
+
29
+ it('renders the image', () => {
30
+ expect(test.html()).toContain('<source srcset="/img/src/img.png" media="(min-width: 62em)">')
31
+ expect(test.html()).toContain('<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="">')
32
+ })
33
+ })
@@ -1,38 +1,38 @@
1
- <template>
2
- <header class="header-banner">
3
- <div class="container">
4
- <!-- Space for a breadcrumb trail -->
5
- <slot name="breadcrumb"></slot>
6
- <div class="header-banner__inner">
7
- <h1 v-html="title"></h1>
8
- <slot></slot>
9
- </div>
10
- </div>
11
- <picture v-if="image">
12
- <!-- Actual image only loaded on desktops -->
13
- <source :srcset="image" media="(min-width: 62em)">
14
- <!-- Placeholder image -->
15
- <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="" />
16
- </picture>
17
- </header>
18
- </template>
19
-
20
- <style lang="scss">
21
- @import "../../../assets/sass/components/header.scss";
22
- </style>
23
-
24
- <script>
25
- export default {
26
- name: 'Header',
27
- props: {
28
- title: {
29
- type: String,
30
- required: true
31
- },
32
- image: {
33
- type: String,
34
- required: false
35
- }
36
- }
37
- }
38
- </script>
1
+ <template>
2
+ <header class="header-banner">
3
+ <div class="container">
4
+ <!-- Space for a breadcrumb trail -->
5
+ <slot name="breadcrumb"></slot>
6
+ <div class="header-banner__inner">
7
+ <h1 v-html="title"></h1>
8
+ <slot></slot>
9
+ </div>
10
+ </div>
11
+ <picture v-if="image">
12
+ <!-- Actual image only loaded on desktops -->
13
+ <source :srcset="image" media="(min-width: 62em)">
14
+ <!-- Placeholder image -->
15
+ <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="" />
16
+ </picture>
17
+ </header>
18
+ </template>
19
+
20
+ <style lang="scss">
21
+ @import "../../../assets/sass/components/header.scss";
22
+ </style>
23
+
24
+ <script>
25
+ export default {
26
+ name: 'Header',
27
+ props: {
28
+ title: {
29
+ type: String,
30
+ required: true
31
+ },
32
+ image: {
33
+ type: String,
34
+ required: false
35
+ }
36
+ }
37
+ }
38
+ </script>
@@ -1,28 +1,28 @@
1
- ### Usage
2
-
3
- ```
4
- <Header title="Page title" :image="require('../../assets/code.jpeg')">
5
- <template v-slot:breadcrumb>
6
- <ul class="breadcrumb">
7
- <li><a href="/">Home</a></li>
8
- <li><a href="/top">Top level</a></li>
9
- </ul>
10
- </template>
11
- <p>Page description</p>
12
- </Header>
13
- ```
14
-
15
- ### Properties
16
-
17
- | Option | Type | Default Value | Description |
18
- | ------ | ---- | ------------- | ----------- |
19
- | title | String | - | Required |
20
- | image | String | - | Optional image url to display in the background |
21
-
22
-
23
- ### Slots
24
-
25
- | Option | Default Value | Description |
26
- | ------ | ------------- | ----------- |
27
- | default | - | Will display underneath the heading inside of the white box |
1
+ ### Usage
2
+
3
+ ```
4
+ <Header title="Page title" :image="require('../../assets/code.jpeg')">
5
+ <template v-slot:breadcrumb>
6
+ <ul class="breadcrumb">
7
+ <li><a href="/">Home</a></li>
8
+ <li><a href="/top">Top level</a></li>
9
+ </ul>
10
+ </template>
11
+ <p>Page description</p>
12
+ </Header>
13
+ ```
14
+
15
+ ### Properties
16
+
17
+ | Option | Type | Default Value | Description |
18
+ | ------ | ---- | ------------- | ----------- |
19
+ | title | String | - | Required |
20
+ | image | String | - | Optional image url to display in the background |
21
+
22
+
23
+ ### Slots
24
+
25
+ | Option | Default Value | Description |
26
+ | ------ | ------------- | ----------- |
27
+ | default | - | Will display underneath the heading inside of the white box |
28
28
  | breadcrumb | - | An optional space to add a breadcrumb trail list. |