@iamproperty/components 2.7.9 → 3.0.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 (172) hide show
  1. package/README.md +16 -137
  2. package/assets/css/core.min.css +1 -1
  3. package/assets/css/core.min.css.map +1 -1
  4. package/assets/css/email.min.css +1 -1
  5. package/assets/css/email.min.css.map +1 -1
  6. package/assets/css/error.min.css +1 -1
  7. package/assets/css/error.min.css.map +1 -1
  8. package/assets/css/style.min.css +1 -1
  9. package/assets/css/style.min.css.map +1 -1
  10. package/assets/favicons/manifest.json +32 -0
  11. package/assets/js/main.js +57 -78
  12. package/assets/js/modules/accordion.js +32 -36
  13. package/assets/js/modules/alert.js +56 -56
  14. package/assets/js/modules/carousel.js +101 -101
  15. package/assets/js/modules/chart.js +218 -217
  16. package/assets/js/modules/drawer.js +15 -15
  17. package/assets/js/modules/form.js +158 -158
  18. package/assets/js/modules/helpers.js +119 -119
  19. package/assets/js/modules/modal.js +89 -89
  20. package/assets/js/modules/nav.js +28 -27
  21. package/assets/js/modules/table.js +585 -585
  22. package/assets/js/modules/testimonial.js +82 -82
  23. package/assets/js/modules/youtubevideo.js +145 -145
  24. package/assets/js/scripts.bundle.js +174 -102
  25. package/assets/js/scripts.bundle.js.map +1 -1
  26. package/assets/js/scripts.bundle.min.js +2 -2
  27. package/assets/js/scripts.bundle.min.js.map +1 -1
  28. package/assets/sass/_components.scss +14 -14
  29. package/assets/sass/_corefiles.scss +40 -40
  30. package/assets/sass/_fonts.scss +16 -16
  31. package/assets/sass/_forms.scss +9 -9
  32. package/assets/sass/_func.scss +12 -10
  33. package/assets/sass/_functions/functions.scss +141 -141
  34. package/assets/sass/_functions/mixins.scss +170 -170
  35. package/assets/sass/_functions/utilities.scss +250 -250
  36. package/assets/sass/_functions/variables.scss +467 -462
  37. package/assets/sass/_print.scss +61 -61
  38. package/assets/sass/_tests/colours.spec.scss +45 -0
  39. package/assets/sass/_tests/func.spec.scss +233 -0
  40. package/assets/sass/_tests/mixins.spec.scss +194 -0
  41. package/assets/sass/_tests/sass.spec.js +9 -0
  42. package/assets/sass/_tests/typography.spec.scss +36 -0
  43. package/assets/sass/components/accordion.scss +197 -197
  44. package/assets/sass/components/alert.scss +98 -98
  45. package/assets/sass/components/cardDeck.scss +107 -107
  46. package/assets/sass/components/carousel.scss +234 -234
  47. package/assets/sass/components/charts.scss +569 -569
  48. package/assets/sass/components/drawer.scss +46 -46
  49. package/assets/sass/components/header.scss +63 -63
  50. package/assets/sass/components/modal.scss +136 -136
  51. package/assets/sass/components/nav.scss +919 -820
  52. package/assets/sass/components/property-searchbar.scss +143 -143
  53. package/assets/sass/components/snapshot.scss +70 -70
  54. package/assets/sass/components/stepper.scss +164 -164
  55. package/assets/sass/components/tabs.scss +87 -87
  56. package/assets/sass/components/testimonial.scss +132 -132
  57. package/assets/sass/components/timeline.scss +95 -95
  58. package/assets/sass/core.scss +6 -6
  59. package/assets/sass/elements/buttons.scss +209 -209
  60. package/assets/sass/elements/card.scss +177 -177
  61. package/assets/sass/elements/container.scss +225 -225
  62. package/assets/sass/elements/forms.scss +194 -194
  63. package/assets/sass/elements/links.scss +96 -96
  64. package/assets/sass/elements/lists.scss +112 -112
  65. package/assets/sass/elements/panel.scss +161 -161
  66. package/assets/sass/elements/tables.scss +290 -290
  67. package/assets/sass/elements/tooltips.scss +84 -84
  68. package/assets/sass/elements/type.scss +136 -136
  69. package/assets/sass/email.scss +65 -65
  70. package/assets/sass/error.scss +4 -4
  71. package/assets/sass/foundations/brand.scss +72 -72
  72. package/assets/sass/foundations/circles.scss +74 -74
  73. package/assets/sass/foundations/icons.scss +72 -72
  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 +106 -104
  77. package/assets/sass/main.scss +7 -7
  78. package/assets/svg/icons.svg +598 -588
  79. package/assets/svg/logo.svg +42 -42
  80. package/assets/ts/main.js +57 -0
  81. package/assets/ts/main.js.map +1 -0
  82. package/assets/ts/main.ts +68 -0
  83. package/assets/ts/modules/accordion.js +33 -0
  84. package/assets/ts/modules/accordion.js.map +1 -0
  85. package/assets/ts/modules/accordion.ts +43 -0
  86. package/dist/components.es.js +2504 -0
  87. package/dist/components.umd.js +56 -3760
  88. package/dist/style.css +1 -0
  89. package/package.json +108 -103
  90. package/src/components/Accordion/Accordion.screenshot.vue +57 -0
  91. package/src/components/Accordion/Accordion.spec.js +63 -0
  92. package/src/components/Accordion/Accordion.vue +22 -22
  93. package/src/components/Accordion/AccordionItem.vue +52 -52
  94. package/src/components/Accordion/README.md +34 -34
  95. package/src/components/Accordion/__screenshots__/win32/laptop/Accordion.png +0 -0
  96. package/src/components/Accordion/__screenshots__/win32/mobile/Accordion.png +0 -0
  97. package/src/components/Accordion/__screenshots__/win32/tablet/Accordion.png +0 -0
  98. package/src/components/Alert/Alert.spec.js +49 -0
  99. package/src/components/Alert/Alert.vue +39 -39
  100. package/src/components/Alert/README.md +28 -28
  101. package/src/components/Banner/Banner.spec.js +28 -0
  102. package/src/components/Banner/Banner.vue +38 -38
  103. package/src/components/Banner/README.md +23 -23
  104. package/src/components/CardDeck/CardDeck.spec.js +99 -0
  105. package/src/components/CardDeck/CardDeck.vue +77 -77
  106. package/src/components/CardDeck/README.md +24 -24
  107. package/src/components/Carousel/Carousel.spec.js +45 -0
  108. package/src/components/Carousel/Carousel.vue +85 -85
  109. package/src/components/Carousel/README.md +19 -19
  110. package/src/components/Chart/Chart.spec.js +201 -0
  111. package/src/components/Chart/Chart.vue +88 -88
  112. package/src/components/Chart/README.md +17 -17
  113. package/src/components/Drawer/Drawer.vue +53 -53
  114. package/src/components/Drawer/README.md +22 -22
  115. package/src/components/Header/Header.spec.js +33 -0
  116. package/src/components/Header/Header.vue +38 -38
  117. package/src/components/Header/README.md +27 -27
  118. package/src/components/Modal/Modal.spec.js +22 -0
  119. package/src/components/Modal/Modal.vue +43 -43
  120. package/src/components/Modal/README.md +19 -19
  121. package/src/components/Nav/Nav.spec.js +35 -0
  122. package/src/components/Nav/Nav.vue +215 -189
  123. package/src/components/Nav/README.md +22 -22
  124. package/src/components/NoteFeed/NoteFeed.vue +79 -79
  125. package/src/components/NoteFeed/README.md +16 -16
  126. package/src/components/PropertySearchbar/PropertySearchbar.vue +204 -204
  127. package/src/components/PropertySearchbar/README.md +25 -25
  128. package/src/components/Snapshot/README.md +20 -20
  129. package/src/components/Snapshot/Snapshot.vue +32 -32
  130. package/src/components/Stepper/README.md +32 -32
  131. package/src/components/Stepper/Step.vue +28 -28
  132. package/src/components/Stepper/Stepper.spec.js +99 -0
  133. package/src/components/Stepper/Stepper.vue +33 -33
  134. package/src/components/Tabs/README.md +27 -27
  135. package/src/components/Tabs/Tab.vue +32 -26
  136. package/src/components/Tabs/Tabs.vue +77 -75
  137. package/src/components/Testimonial/README.md +25 -25
  138. package/src/components/Testimonial/Testimonial.spec.js +57 -0
  139. package/src/components/Testimonial/Testimonial.vue +60 -60
  140. package/src/components/Timeline/README.md +18 -18
  141. package/src/components/Timeline/Timeline.spec.js +17 -0
  142. package/src/components/Timeline/Timeline.vue +24 -24
  143. package/src/elements/Card/Card.vue +113 -113
  144. package/src/elements/Card/README.md +24 -24
  145. package/src/elements/FileUploads/FileUploads.vue +48 -48
  146. package/src/elements/FileUploads/README.md +24 -24
  147. package/src/elements/Input/Input.vue +268 -268
  148. package/src/elements/Input/README.md +19 -19
  149. package/src/elements/Table/README.md +62 -62
  150. package/src/elements/Table/Table.spec.js +90 -0
  151. package/src/elements/Table/Table.vue +129 -129
  152. package/src/foundations/Icon/Icon.spec.js +24 -0
  153. package/src/foundations/Icon/Icon.vue +24 -24
  154. package/src/foundations/Icon/README.md +11 -11
  155. package/src/foundations/Logo/Logo.spec.js +56 -0
  156. package/src/foundations/Logo/Logo.vue +39 -39
  157. package/src/foundations/Logo/README.md +20 -20
  158. package/src/foundations/YoutubeVideo/README.md +11 -11
  159. package/src/foundations/YoutubeVideo/YoutubeVideo.vue +24 -24
  160. package/src/helpers/strings.js +12 -12
  161. package/src/index.js +27 -27
  162. package/src/vue-shim.d.ts +6 -0
  163. package/assets/.DS_Store +0 -0
  164. package/dist/components.common.js +0 -3749
  165. package/dist/components.common.js.map +0 -1
  166. package/dist/components.css +0 -2
  167. package/dist/components.css.map +0 -1
  168. package/dist/components.umd.js.map +0 -1
  169. package/dist/components.umd.min.js +0 -2
  170. package/dist/components.umd.min.js.map +0 -1
  171. package/dist/demo.html +0 -1
  172. package/src/.DS_Store +0 -0
@@ -1,21 +1,21 @@
1
- ### Usage
2
-
3
- ```
4
- <Snapshot :items="items"></Snapshot>
5
- ```
6
-
7
- ### Properties
8
-
9
- | Option | Type | Default Value | Description |
10
- | ------ | ---- | ------------- | ----------- |
11
- | items | Array | - | Table row data passed |
12
- | - item.title | String | - | Title of the snapshot figure |
13
- | - item.bg | String | - | Theme colour to highlight the importance of the figure i.e. danger to indicate a high priority. |
14
- | - item.number | String | - | The actual figure, recommended to be a single number but could be more i.e. 10 days.
15
-
16
-
17
- ### Slots
18
-
19
- | Option | Default Value | Description |
20
- | ------ | ------------- | ----------- |
1
+ ### Usage
2
+
3
+ ```
4
+ <Snapshot :items="items"></Snapshot>
5
+ ```
6
+
7
+ ### Properties
8
+
9
+ | Option | Type | Default Value | Description |
10
+ | ------ | ---- | ------------- | ----------- |
11
+ | items | Array | - | Table row data passed |
12
+ | - item.title | String | - | Title of the snapshot figure |
13
+ | - item.bg | String | - | Theme colour to highlight the importance of the figure i.e. danger to indicate a high priority. |
14
+ | - item.number | String | - | The actual figure, recommended to be a single number but could be more i.e. 10 days.
15
+
16
+
17
+ ### Slots
18
+
19
+ | Option | Default Value | Description |
20
+ | ------ | ------------- | ----------- |
21
21
  | default | - | Will display before the snapshot items |
@@ -1,32 +1,32 @@
1
- <template>
2
- <div class="container snapshot" ref="wrapper">
3
- <slot></slot>
4
- <div class="row">
5
- <div class="col" v-for="(value,index) in items" :key="index">
6
-
7
- <a :href="value.link" v-if="value.link">View {{value.title}}</a>
8
- <div :class="`snapshot__item ${value.bg ? 'bg-'+value.bg : ''}`">
9
- <span class="h6 snapshot__title">{{value.title}}</span>
10
- <span class="stat">{{value.number}}</span>
11
- </div>
12
- </div>
13
- </div>
14
- </div>
15
- </template>
16
-
17
- <style lang="scss">
18
- @import "../../../assets/sass/components/snapshot.scss";
19
- </style>
20
-
21
- <script>
22
-
23
- export default {
24
- name: 'Snapshot',
25
- props: {
26
- items: {
27
- type: Array,
28
- required: true
29
- },
30
- }
31
- }
32
- </script>
1
+ <template>
2
+ <div class="container snapshot" ref="wrapper">
3
+ <slot></slot>
4
+ <div class="row">
5
+ <div class="col" v-for="(value,index) in items" :key="index">
6
+
7
+ <a :href="value.link" v-if="value.link">View {{value.title}}</a>
8
+ <div :class="`snapshot__item ${value.bg ? 'bg-'+value.bg : ''}`">
9
+ <span class="h6 snapshot__title">{{value.title}}</span>
10
+ <span class="stat">{{value.number}}</span>
11
+ </div>
12
+ </div>
13
+ </div>
14
+ </div>
15
+ </template>
16
+
17
+ <style lang="scss">
18
+ @import "../../../assets/sass/components/snapshot.scss";
19
+ </style>
20
+
21
+ <script>
22
+
23
+ export default {
24
+ name: 'Snapshot',
25
+ props: {
26
+ items: {
27
+ type: Array,
28
+ required: true
29
+ },
30
+ }
31
+ }
32
+ </script>
@@ -1,33 +1,33 @@
1
- ### Usage
2
-
3
- ```
4
- <Stepper class="visualtest">
5
- <Step status="warning">Warning status</Step>
6
- <Step url="/step" status="danger">Danger status</Step>
7
- <Step url="/step" status="success">Success status</Step>
8
- <Step href="/step" current>Current step</Step>
9
- <Step href="/step">Future step</Step>
10
- </Stepper>
11
- ```
12
-
13
- ### Properties
14
-
15
- | Option | Type | Default Value | Description |
16
- | ------ | ---- | ------------- | ----------- |
17
- | label | String | - | Optional label to title the component |
18
- | endlabel | String | Complete | End label to signify the end of the process |
19
-
20
-
21
- ### Step Properties
22
-
23
- | Option | Type | Default Value | Description |
24
- | ------ | ---- | ------------- | ----------- |
25
- | url | String | - | Add a url to take the user back to or ahead to said step, if a url is not passed the link is disabled. |
26
- | status | String | - | Each step can have a status to highlight to the user whether the step was completed correctly. |
27
- | current | String | - | Indicate whether this is the current step |
28
-
29
- ### Slots
30
-
31
- | Option | Default Value | Description |
32
- | ------ | ------------- | ----------- |
1
+ ### Usage
2
+
3
+ ```
4
+ <Stepper class="visualtest">
5
+ <Step status="warning">Warning status</Step>
6
+ <Step url="/step" status="danger">Danger status</Step>
7
+ <Step url="/step" status="success">Success status</Step>
8
+ <Step href="/step" current>Current step</Step>
9
+ <Step href="/step">Future step</Step>
10
+ </Stepper>
11
+ ```
12
+
13
+ ### Properties
14
+
15
+ | Option | Type | Default Value | Description |
16
+ | ------ | ---- | ------------- | ----------- |
17
+ | label | String | - | Optional label to title the component |
18
+ | endlabel | String | Complete | End label to signify the end of the process |
19
+
20
+
21
+ ### Step Properties
22
+
23
+ | Option | Type | Default Value | Description |
24
+ | ------ | ---- | ------------- | ----------- |
25
+ | url | String | - | Add a url to take the user back to or ahead to said step, if a url is not passed the link is disabled. |
26
+ | status | String | - | Each step can have a status to highlight to the user whether the step was completed correctly. |
27
+ | current | String | - | Indicate whether this is the current step |
28
+
29
+ ### Slots
30
+
31
+ | Option | Default Value | Description |
32
+ | ------ | ------------- | ----------- |
33
33
  | default | - | Container for step components |
@@ -1,28 +1,28 @@
1
- <template>
2
- <li>
3
- <a :href="url" :class="`${status?'bg-'+status:''}${typeof current != 'undefined'?'current':''}`" :aria-current="typeof current != 'undefined'?true:false">
4
- <span><slot></slot></span>
5
- <em class="visually-hidden" v-if="status"> - status: {{status}}</em>
6
- </a>
7
- </li>
8
- </template>
9
-
10
- <script>
11
- export default {
12
- name: 'Stepper',
13
- props: {
14
- url: {
15
- type: String,
16
- required: false
17
- },
18
- status: {
19
- type: String,
20
- required: false
21
- },
22
- current: {
23
- type: String,
24
- required: false
25
- }
26
- }
27
- }
28
- </script>
1
+ <template>
2
+ <li>
3
+ <a :href="url" :class="`${status?'bg-'+status:''}${typeof current != 'undefined'?'current':''}`" :aria-current="typeof current != 'undefined'?true:false">
4
+ <span><slot></slot></span>
5
+ <em class="visually-hidden" v-if="status"> - status: {{status}}</em>
6
+ </a>
7
+ </li>
8
+ </template>
9
+
10
+ <script>
11
+ export default {
12
+ name: 'Stepper',
13
+ props: {
14
+ url: {
15
+ type: String,
16
+ required: false
17
+ },
18
+ status: {
19
+ type: String,
20
+ required: false
21
+ },
22
+ current: {
23
+ type: String,
24
+ required: false
25
+ }
26
+ }
27
+ }
28
+ </script>
@@ -0,0 +1,99 @@
1
+ import { mount } from '@vue/test-utils'
2
+ import Stepper from './Stepper.vue'
3
+ import Step from './Step.vue'
4
+
5
+ describe('Stepper component', () => {
6
+ it('renders 4 steps', () => {
7
+
8
+ const test = mount(Stepper, {
9
+ propsData: {
10
+ 'label': 'Start',
11
+ 'endlabel': 'End'
12
+ },
13
+ global: {
14
+ stubs: {
15
+ 'Step': Step
16
+ }
17
+ },
18
+ slots: {
19
+ default: `<Step status="success">Customer due diligence</Step>
20
+ <Step url="/step" status="success">Legal Preperation</Step>
21
+ <Step url="/step" current>Financial Preparation</Step>
22
+ <Step url="/step">Surveys</Step>`
23
+ }
24
+ })
25
+
26
+ expect(test.findAll('a').length).toBe(4)
27
+ })
28
+
29
+ it('renders a label when set', () => {
30
+
31
+ const test = mount(Stepper, {
32
+ propsData: {
33
+ 'label': 'Start',
34
+ 'endlabel': 'End'
35
+ },
36
+ global: {
37
+ stubs: {
38
+ 'Step': Step
39
+ }
40
+ },
41
+ slots: {
42
+ default: `<Step status="success">Customer due diligence</Step>
43
+ <Step url="/step" status="success">Legal Preperation</Step>
44
+ <Step url="/step" current>Financial Preparation</Step>
45
+ <Step url="/step">Surveys</Step>`
46
+ }
47
+ })
48
+
49
+ expect(test.find('.stepper__start').html()).toContain('Start')
50
+ })
51
+
52
+ it('renders an end label when set', () => {
53
+
54
+ const test = mount(Stepper, {
55
+ propsData: {
56
+ 'label': 'Start',
57
+ 'endlabel': 'End'
58
+ },
59
+ global: {
60
+ stubs: {
61
+ 'Step': Step
62
+ }
63
+ },
64
+ slots: {
65
+ default: `<Step status="success">Customer due diligence</Step>
66
+ <Step url="/step" status="success">Legal Preperation</Step>
67
+ <Step url="/step" current>Financial Preparation</Step>
68
+ <Step url="/step">Surveys</Step>`
69
+ }
70
+ })
71
+
72
+ expect(test.find('.stepper__end').html()).toContain('End')
73
+ })
74
+
75
+
76
+ it('sets status on steps', () => {
77
+
78
+ const test = mount(Stepper, {
79
+ propsData: {
80
+ 'label': 'Start',
81
+ 'endlabel': 'End'
82
+ },
83
+ global: {
84
+ stubs: {
85
+ 'Step': Step
86
+ }
87
+ },
88
+ slots: {
89
+ default: `<Step status="success">Customer due diligence</Step>
90
+ <Step url="/step" status="success">Legal Preperation</Step>
91
+ <Step url="/step" current>Financial Preparation</Step>
92
+ <Step url="/step">Surveys</Step>`
93
+ }
94
+ })
95
+
96
+ expect(test.find('.bg-success').exists()).toBe(true)
97
+ expect(test.find('.current').exists()).toBe(true)
98
+ })
99
+ })
@@ -1,33 +1,33 @@
1
- <template>
2
- <div class="container">
3
- <nav class="stepper" :aria-label="label?label:'Progress'">
4
- <span class="h6 stepper__start" v-if="label">{{label}}</span>
5
- <ol class="list-unstyled">
6
- <slot><!-- Use for titles etc --></slot>
7
- </ol>
8
- <span class="h6 stepper__end">{{endlabel}}</span>
9
- </nav>
10
- </div>
11
- </template>
12
-
13
-
14
- <style lang="scss">
15
- @import "../../../assets/sass/components/stepper.scss";
16
- </style>
17
-
18
- <script>
19
- export default {
20
- name: 'Stepper',
21
- props: {
22
- label: {
23
- type: String,
24
- required: false
25
- },
26
- endlabel: {
27
- type: String,
28
- required: false,
29
- default: "Complete"
30
- }
31
- }
32
- }
33
- </script>
1
+ <template>
2
+ <div class="container">
3
+ <nav class="stepper" :aria-label="label?label:'Progress'">
4
+ <span class="h6 stepper__start" v-if="label">{{label}}</span>
5
+ <ol class="list-unstyled">
6
+ <slot><!-- Use for titles etc --></slot>
7
+ </ol>
8
+ <span class="h6 stepper__end">{{endlabel}}</span>
9
+ </nav>
10
+ </div>
11
+ </template>
12
+
13
+
14
+ <style lang="scss">
15
+ @import "../../../assets/sass/components/stepper.scss";
16
+ </style>
17
+
18
+ <script>
19
+ export default {
20
+ name: 'Stepper',
21
+ props: {
22
+ label: {
23
+ type: String,
24
+ required: false
25
+ },
26
+ endlabel: {
27
+ type: String,
28
+ required: false,
29
+ default: "Complete"
30
+ }
31
+ }
32
+ }
33
+ </script>
@@ -1,28 +1,28 @@
1
- ### Usage
2
-
3
- ```
4
- <Tabs class="visualtest">
5
- <Tab title="Tab content 1">
6
- <h2>Tab content 1</h2>
7
- </Tab>
8
- <Tab title="Tab content 2">
9
- <h2>Tab content 2</h2>
10
- </Tab>
11
- <Tab title="Tab content 3">
12
- <h2>Tab content 3</h2>
13
- </Tab>
14
- </Tabs>
15
- ```
16
-
17
- ### Tab Properties
18
-
19
- | Option | Type | Default Value | Description |
20
- | ------ | ---- | ------------- | ----------- |
21
- | title | String | - | Used for the heading of the component |
22
- | lazy | Boolean | - | If set the content of the tab will not loaded intially and will be loaded after the user has clicked on the tab link. |
23
-
24
- ### Slots
25
-
26
- | Option | Default Value | Description |
27
- | ------ | ------------- | ----------- |
1
+ ### Usage
2
+
3
+ ```
4
+ <Tabs class="visualtest">
5
+ <Tab title="Tab content 1">
6
+ <h2>Tab content 1</h2>
7
+ </Tab>
8
+ <Tab title="Tab content 2">
9
+ <h2>Tab content 2</h2>
10
+ </Tab>
11
+ <Tab title="Tab content 3">
12
+ <h2>Tab content 3</h2>
13
+ </Tab>
14
+ </Tabs>
15
+ ```
16
+
17
+ ### Tab Properties
18
+
19
+ | Option | Type | Default Value | Description |
20
+ | ------ | ---- | ------------- | ----------- |
21
+ | title | String | - | Used for the heading of the component |
22
+ | lazy | Boolean | - | If set the content of the tab will not loaded intially and will be loaded after the user has clicked on the tab link. |
23
+
24
+ ### Slots
25
+
26
+ | Option | Default Value | Description |
27
+ | ------ | ------------- | ----------- |
28
28
  | default | - | Can be populated with Tab components |
@@ -1,26 +1,32 @@
1
- <template>
2
- <div class="tab" v-if="show">
3
- <slot></slot>
4
- </div>
5
- </template>
6
-
7
- <script>
8
- export default {
9
- name: 'Tab',
10
- props: {
11
- title: {
12
- type: String,
13
- required: true
14
- },
15
- lazy: {
16
- type: Boolean,
17
- required: false
18
- }
19
- },
20
- data() {
21
- return {
22
- show: this.lazy ? false : true
23
- }
24
- }
25
- }
26
- </script>
1
+ <template>
2
+ <div class="tab" v-if="show">
3
+ <slot></slot>
4
+ </div>
5
+ </template>
6
+
7
+ <script>
8
+ export default {
9
+ name: 'Tab',
10
+ props: {
11
+ title: {
12
+ type: String,
13
+ required: true
14
+ },
15
+ lazy: {
16
+ type: Boolean,
17
+ required: false
18
+ }
19
+ },
20
+ data() {
21
+ return {
22
+ show: this.lazy ? false : true
23
+ }
24
+ },
25
+ watch: {
26
+
27
+ show(newVal, oldVal) {
28
+ console.log(newVal)
29
+ }
30
+ }
31
+ }
32
+ </script>
@@ -1,75 +1,77 @@
1
- <template>
2
- <div class="container tabs__container" ref="wrapper">
3
-
4
- <input type="radio" class="tab__input" v-for="(value,index) in tabLinks()" :key="index" :name="value.name" :id="value.id" :checked="index == 0? 'checked':''" />
5
-
6
- <div class="tabs__links">
7
- <label v-for="(value,index) in tabLinks()" :key="index" :for="value.id" class="link" v-on:click="openTab(index)">
8
- {{value.tabTitle}}
9
- </label>
10
- </div>
11
- <div class="tabs">
12
- <slot></slot>
13
- </div>
14
- </div>
15
- </template>
16
-
17
- <style lang="scss">
18
- @import "../../../assets/sass/components/tabs.scss";
19
- </style>
20
-
21
- <script>
22
- export default {
23
- name: 'Tabs',
24
- data () {
25
- return {
26
- tabsID: 'tabs_'+Math.random().toString(36).substr(2, 9)
27
- }
28
- },
29
- computed: {
30
- tabLinks (){
31
- return () => {
32
-
33
- const tabLinks = [];
34
- let i = 1;
35
-
36
- for (const [key, value] of Object.entries(this.$slots.default)) {
37
-
38
- // Check if the value in the object is actually a tab and has the correct data
39
- if(value.componentOptions && value.componentOptions.propsData && value.componentOptions.propsData.title){
40
-
41
- let tabTitle = value.componentOptions.propsData.title;
42
-
43
- let tab = {
44
- name: this.tabsID,
45
- id: this.tabsID+"_tab"+i++,
46
- tabTitle: tabTitle
47
- }
48
-
49
- tabLinks.push(tab);
50
- }
51
- }
52
-
53
- return tabLinks;
54
- }
55
- }
56
- },
57
- methods: {
58
- openTab: function (index) {
59
-
60
- let i = 0;
61
- for (const [key, value] of Object.entries(this.$slots.default)) {
62
-
63
- if(value.componentOptions && value.componentOptions.propsData && value.componentOptions.propsData.title){
64
-
65
- if(i == index){
66
- value.componentInstance._data.show = true;
67
- }
68
-
69
- i++;
70
- }
71
- }
72
- }
73
- }
74
- }
75
- </script>
1
+ <template>
2
+ <div class="container tabs__container" ref="wrapper">
3
+
4
+ <input type="radio" class="tab__input" v-for="(value,index) in tabLinks()" :key="index" :data-key="index" :name="value.name" :id="value.id" :checked="(index == 0 ? true:false)" />
5
+
6
+ <div class="tabs__links">
7
+ <label v-for="(value,index) in tabLinks()" :key="index" :for="value.id" class="link" v-on:click="openTab(index)">
8
+ {{value.tabTitle}}
9
+ </label>
10
+ </div>
11
+ <div class="tabs">
12
+ <slot></slot>
13
+ </div>
14
+ </div>
15
+ </template>
16
+
17
+ <style lang="scss">
18
+ @import "../../../assets/sass/components/tabs.scss";
19
+ </style>
20
+
21
+ <script>
22
+ export default {
23
+ name: 'Tabs',
24
+ data () {
25
+ return {
26
+ tabsID: 'tabs_'+Math.random().toString(36).substr(2, 9)
27
+ }
28
+ },
29
+ computed: {
30
+ tabLinks (){
31
+ return () => {
32
+
33
+ const tabLinks = [];
34
+ let i = 1;
35
+
36
+ for (const [key, value] of Object.entries(this.$slots.default())) {
37
+
38
+ // Check if the value in the object is actually a tab and has the correct data
39
+ if(value.props && value.props.title){
40
+
41
+ let tabTitle = value.props.title;
42
+
43
+ let tab = {
44
+ name: this.tabsID,
45
+ id: this.tabsID+"_tab"+i++,
46
+ tabTitle: tabTitle
47
+ }
48
+
49
+ tabLinks.push(tab);
50
+ }
51
+ }
52
+
53
+ return tabLinks;
54
+ }
55
+ }
56
+ },
57
+ methods: {
58
+ openTab: function (index) {
59
+
60
+ let i = 0;
61
+ for (const [key, value] of Object.entries(this.$slots.default())) {
62
+
63
+ if(value.props && value.props.title){
64
+
65
+ if(i == index){
66
+
67
+ console.log(value)
68
+ value.type.data().show = true;
69
+ }
70
+
71
+ i++;
72
+ }
73
+ }
74
+ }
75
+ }
76
+ }
77
+ </script>