@iamproperty/components 3.4.6 → 3.5.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 (304) hide show
  1. package/assets/bootstrap/LICENSE +22 -0
  2. package/assets/bootstrap/README.md +246 -0
  3. package/assets/bootstrap/js/src/alert.js +87 -0
  4. package/assets/bootstrap/js/src/base-component.js +85 -0
  5. package/assets/bootstrap/js/src/button.js +72 -0
  6. package/assets/bootstrap/js/src/carousel.js +475 -0
  7. package/assets/bootstrap/js/src/collapse.js +302 -0
  8. package/assets/bootstrap/js/src/dom/data.js +55 -0
  9. package/assets/bootstrap/js/src/dom/event-handler.js +320 -0
  10. package/assets/bootstrap/js/src/dom/manipulator.js +71 -0
  11. package/assets/bootstrap/js/src/dom/selector-engine.js +83 -0
  12. package/assets/bootstrap/js/src/dropdown.js +454 -0
  13. package/assets/bootstrap/js/src/modal.js +377 -0
  14. package/assets/bootstrap/js/src/offcanvas.js +283 -0
  15. package/assets/bootstrap/js/src/popover.js +97 -0
  16. package/assets/bootstrap/js/src/scrollspy.js +294 -0
  17. package/assets/bootstrap/js/src/tab.js +305 -0
  18. package/assets/bootstrap/js/src/toast.js +225 -0
  19. package/assets/bootstrap/js/src/tooltip.js +633 -0
  20. package/assets/bootstrap/js/src/util/backdrop.js +149 -0
  21. package/assets/bootstrap/js/src/util/component-functions.js +34 -0
  22. package/assets/bootstrap/js/src/util/config.js +66 -0
  23. package/assets/bootstrap/js/src/util/focustrap.js +115 -0
  24. package/assets/bootstrap/js/src/util/index.js +336 -0
  25. package/assets/bootstrap/js/src/util/sanitizer.js +118 -0
  26. package/assets/bootstrap/js/src/util/scrollbar.js +114 -0
  27. package/assets/bootstrap/js/src/util/swipe.js +146 -0
  28. package/assets/bootstrap/js/src/util/template-factory.js +160 -0
  29. package/assets/bootstrap/package.json +181 -0
  30. package/assets/bootstrap/scss/_accordion.scss +149 -0
  31. package/assets/bootstrap/scss/_alert.scss +71 -0
  32. package/assets/bootstrap/scss/_badge.scss +38 -0
  33. package/assets/bootstrap/scss/_breadcrumb.scss +40 -0
  34. package/assets/bootstrap/scss/_button-group.scss +142 -0
  35. package/assets/bootstrap/scss/_buttons.scss +207 -0
  36. package/assets/bootstrap/scss/_card.scss +234 -0
  37. package/assets/bootstrap/scss/_carousel.scss +226 -0
  38. package/assets/bootstrap/scss/_close.scss +40 -0
  39. package/assets/bootstrap/scss/_containers.scss +41 -0
  40. package/assets/bootstrap/scss/_dropdown.scss +249 -0
  41. package/assets/bootstrap/scss/_forms.scss +9 -0
  42. package/assets/bootstrap/scss/_functions.scss +302 -0
  43. package/assets/bootstrap/scss/_grid.scss +33 -0
  44. package/assets/bootstrap/scss/_helpers.scss +10 -0
  45. package/assets/bootstrap/scss/_images.scss +42 -0
  46. package/assets/bootstrap/scss/_list-group.scss +192 -0
  47. package/assets/bootstrap/scss/_maps.scss +54 -0
  48. package/assets/bootstrap/scss/_mixins.scss +43 -0
  49. package/assets/bootstrap/scss/_modal.scss +237 -0
  50. package/assets/bootstrap/scss/_nav.scss +172 -0
  51. package/assets/bootstrap/scss/_navbar.scss +278 -0
  52. package/assets/bootstrap/scss/_offcanvas.scss +144 -0
  53. package/assets/bootstrap/scss/_pagination.scss +109 -0
  54. package/assets/bootstrap/scss/_placeholders.scss +51 -0
  55. package/assets/bootstrap/scss/_popover.scss +196 -0
  56. package/assets/bootstrap/scss/_progress.scss +59 -0
  57. package/assets/bootstrap/scss/_reboot.scss +610 -0
  58. package/assets/bootstrap/scss/_root.scss +73 -0
  59. package/assets/bootstrap/scss/_spinners.scss +85 -0
  60. package/assets/bootstrap/scss/_tables.scss +164 -0
  61. package/assets/bootstrap/scss/_toasts.scss +73 -0
  62. package/assets/bootstrap/scss/_tooltip.scss +120 -0
  63. package/assets/bootstrap/scss/_transitions.scss +27 -0
  64. package/assets/bootstrap/scss/_type.scss +106 -0
  65. package/assets/bootstrap/scss/_utilities.scss +647 -0
  66. package/assets/bootstrap/scss/_variables.scss +1634 -0
  67. package/assets/bootstrap/scss/bootstrap-grid.scss +64 -0
  68. package/assets/bootstrap/scss/bootstrap-reboot.scss +9 -0
  69. package/assets/bootstrap/scss/bootstrap-utilities.scss +18 -0
  70. package/assets/bootstrap/scss/bootstrap.scss +51 -0
  71. package/assets/bootstrap/scss/forms/_floating-labels.scss +75 -0
  72. package/assets/bootstrap/scss/forms/_form-check.scss +175 -0
  73. package/assets/bootstrap/scss/forms/_form-control.scss +194 -0
  74. package/assets/bootstrap/scss/forms/_form-range.scss +91 -0
  75. package/assets/bootstrap/scss/forms/_form-select.scss +71 -0
  76. package/assets/bootstrap/scss/forms/_form-text.scss +11 -0
  77. package/assets/bootstrap/scss/forms/_input-group.scss +132 -0
  78. package/assets/bootstrap/scss/forms/_labels.scss +36 -0
  79. package/assets/bootstrap/scss/forms/_validation.scss +12 -0
  80. package/assets/bootstrap/scss/helpers/_clearfix.scss +3 -0
  81. package/assets/bootstrap/scss/helpers/_color-bg.scss +10 -0
  82. package/assets/bootstrap/scss/helpers/_colored-links.scss +12 -0
  83. package/assets/bootstrap/scss/helpers/_position.scss +36 -0
  84. package/assets/bootstrap/scss/helpers/_ratio.scss +26 -0
  85. package/assets/bootstrap/scss/helpers/_stacks.scss +15 -0
  86. package/assets/bootstrap/scss/helpers/_stretched-link.scss +15 -0
  87. package/assets/bootstrap/scss/helpers/_text-truncation.scss +7 -0
  88. package/assets/bootstrap/scss/helpers/_visually-hidden.scss +8 -0
  89. package/assets/bootstrap/scss/helpers/_vr.scss +8 -0
  90. package/assets/bootstrap/scss/mixins/_alert.scss +15 -0
  91. package/assets/bootstrap/scss/mixins/_backdrop.scss +14 -0
  92. package/assets/bootstrap/scss/mixins/_banner.scss +9 -0
  93. package/assets/bootstrap/scss/mixins/_border-radius.scss +78 -0
  94. package/assets/bootstrap/scss/mixins/_box-shadow.scss +18 -0
  95. package/assets/bootstrap/scss/mixins/_breakpoints.scss +127 -0
  96. package/assets/bootstrap/scss/mixins/_buttons.scss +70 -0
  97. package/assets/bootstrap/scss/mixins/_caret.scss +64 -0
  98. package/assets/bootstrap/scss/mixins/_clearfix.scss +9 -0
  99. package/assets/bootstrap/scss/mixins/_color-scheme.scss +7 -0
  100. package/assets/bootstrap/scss/mixins/_container.scss +11 -0
  101. package/assets/bootstrap/scss/mixins/_deprecate.scss +10 -0
  102. package/assets/bootstrap/scss/mixins/_forms.scss +152 -0
  103. package/assets/bootstrap/scss/mixins/_gradients.scss +47 -0
  104. package/assets/bootstrap/scss/mixins/_grid.scss +151 -0
  105. package/assets/bootstrap/scss/mixins/_image.scss +16 -0
  106. package/assets/bootstrap/scss/mixins/_list-group.scss +24 -0
  107. package/assets/bootstrap/scss/mixins/_lists.scss +7 -0
  108. package/assets/bootstrap/scss/mixins/_pagination.scss +10 -0
  109. package/assets/bootstrap/scss/mixins/_reset-text.scss +17 -0
  110. package/assets/bootstrap/scss/mixins/_resize.scss +6 -0
  111. package/assets/bootstrap/scss/mixins/_table-variants.scss +24 -0
  112. package/assets/bootstrap/scss/mixins/_text-truncate.scss +8 -0
  113. package/assets/bootstrap/scss/mixins/_transition.scss +26 -0
  114. package/assets/bootstrap/scss/mixins/_utilities.scss +97 -0
  115. package/assets/bootstrap/scss/mixins/_visually-hidden.scss +29 -0
  116. package/assets/bootstrap/scss/utilities/_api.scss +47 -0
  117. package/assets/bootstrap/scss/vendor/_rfs.scss +354 -0
  118. package/assets/css/components/accordion.css +1 -1
  119. package/assets/css/components/accordion.css.map +1 -1
  120. package/assets/css/components/admin-panel.css +1 -0
  121. package/assets/css/components/admin-panel.css.map +1 -0
  122. package/assets/css/components/alert.css +1 -1
  123. package/assets/css/components/alert.css.map +1 -1
  124. package/assets/css/components/applied-filters.css +1 -0
  125. package/assets/css/components/applied-filters.css.map +1 -0
  126. package/assets/css/components/card.css +1 -1
  127. package/assets/css/components/card.css.map +1 -1
  128. package/assets/css/components/carousel.css +1 -1
  129. package/assets/css/components/carousel.css.map +1 -1
  130. package/assets/css/components/charts.css +1 -1
  131. package/assets/css/components/charts.css.map +1 -1
  132. package/assets/css/components/container.css +1 -1
  133. package/assets/css/components/container.css.map +1 -1
  134. package/assets/css/components/dialog.css +1 -0
  135. package/assets/css/components/dialog.css.map +1 -0
  136. package/assets/css/components/forms.css +1 -1
  137. package/assets/css/components/forms.css.map +1 -1
  138. package/assets/css/components/header.css +1 -1
  139. package/assets/css/components/header.css.map +1 -1
  140. package/assets/css/components/lists.css +1 -1
  141. package/assets/css/components/lists.css.map +1 -1
  142. package/assets/css/components/nav.css +1 -1
  143. package/assets/css/components/nav.css.map +1 -1
  144. package/assets/css/components/pagination.css +1 -0
  145. package/assets/css/components/pagination.css.map +1 -0
  146. package/assets/css/components/property-searchbar.css +1 -1
  147. package/assets/css/components/property-searchbar.css.map +1 -1
  148. package/assets/css/components/stepper.css +1 -1
  149. package/assets/css/components/stepper.css.map +1 -1
  150. package/assets/css/components/table.css +1 -0
  151. package/assets/css/components/table.css.map +1 -0
  152. package/assets/css/components/tabs.css +1 -1
  153. package/assets/css/components/tabs.css.map +1 -1
  154. package/assets/css/components/tooltips.css +1 -1
  155. package/assets/css/components/tooltips.css.map +1 -1
  156. package/assets/css/core.min.css +1 -1
  157. package/assets/css/core.min.css.map +1 -1
  158. package/assets/css/style.min.css +1 -1
  159. package/assets/css/style.min.css.map +1 -1
  160. package/assets/js/bundle.js +18 -11
  161. package/assets/js/components/accordion/accordion.component.js +6 -0
  162. package/assets/js/components/accordion/accordion.component.min.js +3 -3
  163. package/assets/js/components/accordion/accordion.component.min.js.map +1 -1
  164. package/assets/js/components/applied-filters/applied-filters.component.js +26 -0
  165. package/assets/js/components/card/card.component.js +91 -0
  166. package/assets/js/components/card/card.component.min.js +21 -0
  167. package/assets/js/components/card/card.component.min.js.map +1 -0
  168. package/assets/js/components/filterlist/filterlist.component.js +49 -0
  169. package/assets/js/components/filterlist/filterlist.component.min.js +23 -0
  170. package/assets/js/components/filterlist/filterlist.component.min.js.map +1 -0
  171. package/assets/js/components/header/header.component.js +6 -0
  172. package/assets/js/components/header/header.component.min.js +5 -5
  173. package/assets/js/components/header/header.component.min.js.map +1 -1
  174. package/assets/js/components/pagination/pagination.component.js +34 -0
  175. package/assets/js/components/table/table.component.js +108 -0
  176. package/assets/js/components/table/table.component.min.js +24 -0
  177. package/assets/js/components/table/table.component.min.js.map +1 -0
  178. package/assets/js/components/tabs/tabs.component.js +6 -0
  179. package/assets/js/components/tabs/tabs.component.min.js +17 -0
  180. package/assets/js/components/tabs/tabs.component.min.js.map +1 -0
  181. package/assets/js/dynamic.js +7 -18
  182. package/assets/js/dynamic.min.js +2 -53
  183. package/assets/js/dynamic.min.js.map +1 -1
  184. package/assets/js/flat-components.js +27 -9
  185. package/assets/js/modules/applied-filters.js +100 -0
  186. package/assets/js/modules/data-layer.js +45 -0
  187. package/assets/js/modules/filterlist.js +32 -0
  188. package/assets/js/modules/helpers.js +102 -49
  189. package/assets/js/modules/pagination.js +33 -0
  190. package/assets/js/modules/table.js +506 -420
  191. package/assets/js/modules/tabs.js +6 -0
  192. package/assets/js/modules/youtubevideo.js +53 -61
  193. package/assets/js/scripts.bundle.js +77 -62
  194. package/assets/js/scripts.bundle.js.map +1 -1
  195. package/assets/js/scripts.bundle.min.js +2 -2
  196. package/assets/js/scripts.bundle.min.js.map +1 -1
  197. package/assets/js/tests/filterlist.spec.js +22 -0
  198. package/assets/js/tests/pagination.spec.js +15 -0
  199. package/assets/js/tests/table.spec.js +149 -0
  200. package/assets/sass/_components.scss +1 -2
  201. package/assets/sass/_corefiles.scss +20 -19
  202. package/assets/sass/_forms.scss +7 -7
  203. package/assets/sass/_functions/functions.scss +1 -1
  204. package/assets/sass/_functions/mixins.scss +19 -21
  205. package/assets/sass/_functions/utilities.scss +67 -9
  206. package/assets/sass/_functions/variables.scss +109 -55
  207. package/assets/sass/_tests/colours.spec.scss +8 -22
  208. package/assets/sass/components/accordion.scss +13 -0
  209. package/assets/sass/components/admin-panel.scss +106 -0
  210. package/assets/sass/components/alert.scss +22 -0
  211. package/assets/sass/components/applied-filters.scss +65 -0
  212. package/assets/sass/components/card.scss +177 -233
  213. package/assets/sass/components/carousel.scss +72 -0
  214. package/assets/sass/components/charts.scss +41 -1
  215. package/assets/sass/components/container.scss +8 -3
  216. package/assets/sass/components/dialog.scss +208 -0
  217. package/assets/sass/components/forms.scss +37 -5
  218. package/assets/sass/components/lists.scss +29 -0
  219. package/assets/sass/components/nav.scss +6 -2
  220. package/assets/sass/components/pagination.scss +140 -0
  221. package/assets/sass/components/stepper.scss +3 -3
  222. package/assets/sass/components/table.scss +423 -0
  223. package/assets/sass/components/tabs.scss +20 -7
  224. package/assets/sass/components/tooltips.scss +1 -1
  225. package/assets/sass/foundations/buttons.scss +366 -0
  226. package/assets/sass/foundations/icons.scss +1 -1
  227. package/assets/sass/foundations/links.scss +125 -0
  228. package/assets/sass/foundations/media.scss +1 -1
  229. package/assets/sass/foundations/reboot.scss +21 -17
  230. package/assets/sass/foundations/root.scss +9 -29
  231. package/assets/sass/foundations/type.scss +1 -1
  232. package/assets/svg/illustrations/table.svg +165 -0
  233. package/assets/ts/bundle.ts +23 -12
  234. package/assets/ts/components/accordion/accordion.component.ts +7 -0
  235. package/assets/ts/components/applied-filters/README.md +5 -0
  236. package/assets/ts/components/applied-filters/applied-filters.component.ts +33 -0
  237. package/assets/ts/components/card/README.md +22 -0
  238. package/assets/ts/components/card/card.component.ts +117 -0
  239. package/assets/ts/components/filterlist/README.md +17 -0
  240. package/assets/ts/components/filterlist/filterlist.component.ts +60 -0
  241. package/assets/ts/components/header/header.component.ts +8 -0
  242. package/assets/ts/components/pagination/README.md +11 -0
  243. package/assets/ts/components/pagination/pagination.component.ts +45 -0
  244. package/assets/ts/components/table/README.md +23 -0
  245. package/assets/ts/components/table/table.component.ts +133 -0
  246. package/assets/ts/components/tabs/tabs.component.ts +7 -0
  247. package/assets/ts/dynamic.ts +12 -19
  248. package/assets/ts/flat-components.ts +37 -9
  249. package/assets/ts/modules/applied-filters.ts +146 -0
  250. package/assets/ts/modules/data-layer.ts +58 -0
  251. package/assets/ts/modules/filterlist.ts +46 -0
  252. package/assets/ts/modules/helpers.ts +129 -58
  253. package/assets/ts/modules/pagination.ts +44 -0
  254. package/assets/ts/modules/table.ts +598 -433
  255. package/assets/ts/modules/tabs.ts +8 -1
  256. package/assets/ts/modules/youtubevideo.ts +58 -63
  257. package/assets/ts/tests/filterlist.spec.ts +29 -0
  258. package/assets/ts/tests/pagination.spec.ts +21 -0
  259. package/assets/ts/tests/table.spec.ts +194 -0
  260. package/dist/components.es.js +1267 -1295
  261. package/dist/components.umd.js +70 -65
  262. package/dist/style.css +1 -1
  263. package/package.json +8 -5
  264. package/src/components/AppliedFilters/AppliedFilters.vue +20 -0
  265. package/src/components/AppliedFilters/README.md +5 -0
  266. package/src/components/Card/Card.vue +11 -112
  267. package/src/components/Card/README.md +16 -18
  268. package/src/components/Carousel/Carousel.vue +49 -10
  269. package/src/components/Chart/Chart.vue +46 -4
  270. package/src/components/Filterlist/Filterlist.vue +20 -0
  271. package/src/components/Filterlist/README.md +17 -0
  272. package/src/components/Pagination/Pagination.vue +30 -0
  273. package/src/components/Pagination/README.md +11 -0
  274. package/src/components/Table/README.md +29 -44
  275. package/src/components/Table/Table.spec.js +5 -37
  276. package/src/components/Table/Table.vue +16 -91
  277. package/src/foundations/YoutubeVideo/YoutubeVideo.vue +1 -1
  278. package/src/index.js +3 -2
  279. package/assets/css/components/buttons.css +0 -1
  280. package/assets/css/components/buttons.css.map +0 -1
  281. package/assets/css/components/cardDeck.css +0 -1
  282. package/assets/css/components/cardDeck.css.map +0 -1
  283. package/assets/css/components/links.css +0 -1
  284. package/assets/css/components/links.css.map +0 -1
  285. package/assets/css/components/modal.css +0 -1
  286. package/assets/css/components/modal.css.map +0 -1
  287. package/assets/css/components/panel.css +0 -1
  288. package/assets/css/components/panel.css.map +0 -1
  289. package/assets/css/components/tables.css +0 -1
  290. package/assets/css/components/tables.css.map +0 -1
  291. package/assets/js/modules/modal.js +0 -69
  292. package/assets/sass/components/buttons.scss +0 -252
  293. package/assets/sass/components/cardDeck.scss +0 -108
  294. package/assets/sass/components/links.scss +0 -99
  295. package/assets/sass/components/modal.scss +0 -136
  296. package/assets/sass/components/panel.scss +0 -161
  297. package/assets/sass/components/tables.scss +0 -291
  298. package/assets/ts/modules/modal.ts +0 -91
  299. package/src/components/CardDeck/CardDeck.spec.js +0 -99
  300. package/src/components/CardDeck/CardDeck.vue +0 -77
  301. package/src/components/CardDeck/README.md +0 -25
  302. package/src/components/Modal/Modal.spec.js +0 -22
  303. package/src/components/Modal/Modal.vue +0 -43
  304. package/src/components/Modal/README.md +0 -20
@@ -0,0 +1,30 @@
1
+ <template>
2
+ <iam-pagination>
3
+ </iam-pagination>
4
+ </template>
5
+
6
+ <script>
7
+ import iamPagination from '../../../assets/ts/components/pagination/pagination.component'
8
+ import { ucfirst, unsnake } from '../../helpers/strings'
9
+
10
+ export default {
11
+ name: 'Pagination',
12
+ props: {
13
+
14
+ },
15
+ computed: {
16
+
17
+ },
18
+ created(){
19
+
20
+ this.$nextTick(function () {
21
+
22
+ if (!window.customElements.get('iam-pagination'))
23
+ window.customElements.define('iam-pagination', iamPagination);
24
+ })
25
+ },
26
+ updated(){
27
+
28
+ }
29
+ }
30
+ </script>
@@ -0,0 +1,11 @@
1
+ ```
2
+ <Pagination data-total="12"></Pagination>
3
+ ```
4
+
5
+ **Properties**
6
+
7
+ | Option | Type | Default Value | Description |
8
+ | ------ | ---- | ------------- | ----------- |
9
+ | data-total | int | 0 | The total amount is needed to work out how many pagination buttons are needed |
10
+ | data-page | int | 1 | Override the current page value |
11
+ | data-show | int | 15 | Update how many items can be shown per page |
@@ -1,62 +1,47 @@
1
- ### Usage
2
-
3
1
  ```
4
2
  <Table :fields="fields" :items="items"></Table>
5
3
  ```
6
4
 
7
- ### Properties
5
+ **Properties**
8
6
 
9
7
  | Option | Type | Default Value | Description |
10
8
  | ------ | ---- | ------------- | ----------- |
11
9
  | items | Array | - | Table row data passed |
12
- | fields | Array | - | Table header titles |
13
- | sort | string | - | Choose from ascending or descending |
14
- | sortBy | string | - | Needs to match a column name and will trigger sorting via that column on page load |
15
- | show | number | - | Limits the number of results shown and will create pagination controls. |
16
- | page | number | - | Starting page for the pagination. |
17
- | reorder | bool | - | Create an order column and allow for the table rows to be reordered |
18
- | headingclass | string | - | Add a class to the table row within the thead, used to add a background or change test colour. |
10
+ | fields | Array | - | Table header titles |
11
+ | data-show | int | 15 | Update how many rows can be shown per page |
12
+ | data-filterby | string (form ID) | | Give an optional form ID to connect a form to the table and make it act like a filtering system |
13
+
19
14
 
20
- ### Class modifiers
15
+ **Class modifiers**
21
16
 
22
- - **.table-fullwidth** - Prevents the table from stacking on mobile
23
- - **.table-striped** - Add zebra-striping to the table
24
- - **.table-hover** - Enable a hover state on table rows within a &lt;tbody&gt;
17
+ - Adding a class of **.table--cta** to the table component will fix the last column of the table in place (While on tablet or desktop).
18
+ - Adding a class of **.table--export** to the table component will create a button at the bottom of the table to export its contents out as a CSV file.
19
+ - Adding a class of **.table--fullwidth** to the table component will prevent it from becoming a stacked view on mobile.
20
+ - Adding a class of **.table--mh-small**,**.table--mh-medium** or **.table--mh-large** to the table component will give the table container a max height and the ability to scroll.
25
21
 
26
- ### Make columns filterable or sortable
22
+ **Example of items and fields**
27
23
 
28
- To give a column some extra functionality extra values need to be set in the data.
24
+ **fields**
29
25
 
30
26
  ```
31
- fields: [
32
- {
33
- key: 'name',
34
- filterable: true,
35
- sortable: true
36
- },
37
- { key: 'address' }
27
+ [
28
+ {
29
+ key: 'col_1',
30
+ key: 'col_2',
31
+ key: 'col_3',
32
+ key: 'col_4',
33
+ }
38
34
  ]
39
35
  ```
36
+ **items**
40
37
 
41
- ### Custom JavaScript Events
42
-
43
- A custom event can be hooked into when the table gets updated by one of it filters.
44
-
45
- ```
46
- this.$el.addEventListener('filtered', function (e) {
47
-
48
- console.log('Table filtered')
49
- }, false);
50
-
51
- // Sorted
52
- this.$el.addEventListener('sorted', function (e) {
53
-
54
- console.log('Table sorted')
55
- }, false);
56
-
57
- // Re-ordered via drag and drop
58
- this.$el.addEventListener('reordered', function (e) {
59
-
60
- console.log('Table re-ordered')
61
- }, false);
62
38
  ```
39
+ [
40
+ {
41
+ col_1: 'Row content 1',
42
+ col_2: 'Row content 2',
43
+ col_3: 'Row content 3',
44
+ col_4: 'Row content 4',
45
+ }
46
+ ]
47
+ ```
@@ -6,10 +6,10 @@ describe('Table component', () => {
6
6
  const test = mount(Table, {
7
7
  propsData: {
8
8
  fields: [
9
- { key: 'name', filterable: true, sortable: true },
10
- { key: 'job', filterable: true, sortable: true },
9
+ { key: 'name' },
10
+ { key: 'job' },
11
11
  { key: 'address' },
12
- { key: 'emergency_contact', filterable: true, sortable: true },
12
+ { key: 'emergency_contact' },
13
13
  { key: 'actions' }
14
14
  ],
15
15
  items: [
@@ -40,11 +40,6 @@ describe('Table component', () => {
40
40
  })
41
41
 
42
42
  // On load
43
- it('renders a div with the class of table wrapper', () => {
44
-
45
- expect(test.classes()).toContain('table__wrapper')
46
- })
47
-
48
43
  it('renders a thead', () => {
49
44
 
50
45
  expect(test.find('thead').exists()).toBe(true)
@@ -55,36 +50,9 @@ describe('Table component', () => {
55
50
  expect(test.find('tbody').exists()).toBe(true)
56
51
  })
57
52
 
58
- it('renders a filters form when needed', () => {
59
-
60
- expect(test.find('.table__filters').exists()).toBe(true)
61
- })
62
-
63
- it('renders a pagination form when needed', () => {
64
-
65
- expect(test.find('.table__pagination').exists()).toBe(true)
66
- })
67
-
68
- // Events
69
- it('can be sorted by name', async () => {
70
-
71
- const firstCol = test.find('[data-sortable]')
72
- expect(firstCol.html()).toContain('Name')
73
-
74
- await firstCol.trigger('click')
75
-
76
- let firstRowCol = test.find('tbody tr:first-child [data-label="Name"]')
77
- expect(firstRowCol.html()).toContain('Andrew')
78
- })
79
-
80
- it('can be filtered by name', async () => {
81
-
82
- const searchField = test.find('[type="search"]')
83
-
84
- await searchField.setValue('Andrew')
85
- await searchField.trigger('change')
53
+ it('renders a table heading', () => {
86
54
 
87
- expect(test.findAll('tbody tr').length).toBe(1)
55
+ expect(test.find('thead th').exists()).toBe(true)
88
56
  })
89
57
 
90
58
  })
@@ -1,74 +1,35 @@
1
1
  <template>
2
- <div class="table__wrapper" ref="wrapper" :data-sortby="sortby" :data-sort="sort" :data-show="show" :data-page="page" :data-reorder="reorder">
3
- <table>
4
- <thead v-if="fields">
5
- <tr :class="headingclass">
6
- <th v-for="(field) in fields" :key="field.key" :data-sortable="field.sortable" :data-filterable="field.filterable">{{ cellHeading(field.key) }}</th>
2
+ <iam-table >
3
+ <table v-if="fields">
4
+ <thead>
5
+ <tr>
6
+ <th v-for="(field) in fields" :key="field.key">{{ cellHeading(field.key) }}</th>
7
7
  </tr>
8
8
  </thead>
9
9
  <tbody v-if="items">
10
10
  <tr v-for="(value,index) in items" :key="index" :data-row-id="value['rowid']">
11
- <td :key="cellIndex" v-for="(cellValue,cellIndex) in Object.fromEntries(Object.entries(value).filter(([key]) => key !== 'rowid'))" v-html="cellValue" :data-label="cellHeading(cellIndex)" :data-numeric="numericValue(cellValue)"></td>
11
+ <td :key="cellIndex" v-for="(cellValue,cellIndex) in Object.fromEntries(Object.entries(value).filter(([key]) => key !== 'rowid'))" v-html="cellValue"></td>
12
12
  </tr>
13
13
  </tbody>
14
14
  </table>
15
- <slot></slot>
16
- </div>
15
+ <slot v-else></slot>
16
+ </iam-table>
17
17
  </template>
18
18
 
19
19
  <script>
20
+ import iamTable from '../../../assets/ts/components/table/table.component'
20
21
  import { ucfirst, unsnake } from '../../helpers/strings'
21
- import table from '../../../assets/ts/modules/table'
22
-
23
- let numericValue = function(value) {
24
-
25
- if(typeof(value) != "string")
26
- return value;
27
-
28
- value = value.replace('£','')
29
- value = value.replace('%','')
30
-
31
- if (Number.isNaN(Number.parseFloat(value))) {
32
- return 0;
33
- }
34
-
35
- return Number.parseFloat(value)
36
- }
37
22
 
38
23
  export default {
39
24
  name: 'Table',
40
25
  props: {
41
- reorder: {
42
- type: Boolean,
43
- required: false
44
- },
45
- page: {
46
- type: Number,
47
- required: false
48
- },
49
- show: {
50
- type: Number,
51
- required: false
52
- },
53
- sortby: {
54
- type: String,
55
- required: false
56
- },
57
- sort: {
58
- type: String,
59
- required: false
60
- },
61
- headingclass: {
62
- type: String,
63
- required: false
64
- },
65
26
  items: {
66
27
  type: Array,
67
- required: true
28
+ required: false
68
29
  },
69
30
  fields: {
70
31
  type: Array,
71
- required: true
32
+ required: false
72
33
  }
73
34
  },
74
35
  computed: {
@@ -76,54 +37,18 @@ export default {
76
37
  return (heading) => {
77
38
  return `${ucfirst(unsnake(heading))}`
78
39
  }
79
- },
80
- numericValue () {
81
- return (value) => {
82
-
83
- value = numericValue(value);
84
- return value;
85
- }
86
40
  }
87
41
  },
88
- mounted(){
42
+ created(){
89
43
 
90
44
  this.$nextTick(function () {
91
-
92
- table(this.$refs.wrapper);
93
-
94
- // Listen for the event.
95
- this.$el.addEventListener('sorted', function (e) {
96
-
97
- console.log('Table sorted')
98
- }, false);
99
-
100
- this.$el.addEventListener('filtered', function (e) {
101
-
102
- console.log('Table filtered')
103
- }, false);
104
-
45
+
46
+ if (!window.customElements.get('iam-table'))
47
+ window.customElements.define('iam-table', iamTable);
105
48
  })
106
49
  },
107
50
  updated(){
108
- this.$nextTick(function () {
109
-
110
- // If the data gets updated we may need to recreate the tbody as it get detached when sorted in the table.js
111
- let tbody = this.$refs.wrapper.querySelector('tbody');
112
-
113
- let tbodyHTML = '';
114
- this.items.forEach((row, index) => {
115
-
116
- let rowID = row['rowid'] ? row['rowid'] : '';
117
- row = Object.fromEntries(Object.entries(row).filter(([key]) => key !== 'rowid'));
118
-
119
- tbodyHTML += `<tr data-row-id="${rowID}">${ Object.keys(row).map(col => `<td data-label="${ucfirst(unsnake(col))}" data-numeric="${numericValue(row[col])}">${row[col]}</td>` ).join("") }</tr>`;
120
- });
121
- tbody.innerHTML = tbodyHTML;
122
-
123
- // Tell the framework that the table has been filtered so that it can re-sort it etc
124
- const updatedEvent = new Event('filtered');
125
- this.$refs.wrapper.dispatchEvent(updatedEvent);
126
- })
51
+
127
52
  }
128
53
  }
129
54
  </script>
@@ -10,7 +10,7 @@
10
10
  import youtubeVideo from '../../../assets/ts/modules/youtubevideo'
11
11
 
12
12
  export default {
13
- name: 'YoutuveVideo',
13
+ name: 'YoutubeVideo',
14
14
  props: {
15
15
  video: {
16
16
  type: String,
package/src/index.js CHANGED
@@ -10,13 +10,11 @@ export { default as Accordion } from './components/Accordion/Accordion.vue'
10
10
  export { default as AccordionItem } from './components/Accordion/AccordionItem.vue'
11
11
  export { default as Banner } from './components/Banner/Banner.vue'
12
12
  export { default as Card } from './components/Card/Card.vue'
13
- export { default as CardDeck } from './components/CardDeck/CardDeck.vue'
14
13
  export { default as Carousel } from './components/Carousel/Carousel.vue'
15
14
  export { default as Header } from './components/Header/Header.vue'
16
15
  export { default as Testimonial } from './components/Testimonial/Testimonial.vue'
17
16
  export { default as PropertySearchbar } from './components/PropertySearchbar/PropertySearchbar.vue'
18
17
  export { default as Nav } from './components/Nav/Nav.vue'
19
- export { default as Modal } from './components/Modal/Modal.vue'
20
18
 
21
19
  export { default as Stepper } from './components/Stepper/Stepper.vue'
22
20
  export { default as Step } from './components/Stepper/Step.vue'
@@ -24,3 +22,6 @@ export { default as Tabs } from './components/Tabs/Tabs.vue'
24
22
  export { default as Tab } from './components/Tabs/Tab.vue'
25
23
  export { default as Alert } from './components/Alert/Alert.vue'
26
24
  export { default as NoteFeed } from './components/NoteFeed/NoteFeed.vue'
25
+
26
+ export { default as AppliedFilters } from './components/AppliedFilters/AppliedFilters.vue'
27
+ export { default as Filterlist } from './components/Filterlist/Filterlist.vue'
@@ -1 +0,0 @@
1
- .btn{display:inline-block;font-weight:600;text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;background:var(--btn-bg);border:2px solid var(--btn-bg);color:var(--btn-text);font-family:var(--font-heading);font-size:1rem;line-height:1.25;padding:0.75em 1.75em;border-radius:1.25rem;margin-bottom:1.5rem;margin-right:1rem;transition:all .5s,color .5s;height:auto}a:hover .btn,a:focus .btn,.btn:hover,.btn:focus{outline:0;text-decoration:none;border-radius:1.25rem;background:rgba(0,0,0,0);border-color:var(--btn-bg) !important;color:var(--btn-hover-text)}a:active .btn,a.active .btn,.btn:active,.btn.active{border-radius:1.25rem;transition:0s;background:rgba(0,0,0,0);border-color:var(--btn-text);color:var(--btn-hover-text)}a:disabled .btn,.btn:disabled{pointer-events:none;opacity:.5}.btn.btn-secondary{--btn-bg: var(--colour-secondary)}.btn.btn-tertiary,.btn.btn-tag:not(.btn-primary):not(.btn-secondary){background:var(--btn-tertiary-bg);border-color:var(--btn-hover-text) !important;color:var(--btn-tertiary-hover-text)}.btn.btn-tertiary:not(:hover):not(:focus),.btn.btn-tag:not(.btn-primary):not(.btn-secondary):not(:hover):not(:focus){background:rgba(0,0,0,0);color:var(--colour-link);border-color:var(--btn-hover-text)}.btn.btn-tag.btn-primary{--btn-bg: var(--colour-warning)}.btn.btn-admin:not(:hover):not(:focus){background:var(--colour-admin);border-color:var(--colour-admin) !important}input:checked+.btn:not(:hover):not(:focus),details[open]>summary.btn:first-child{transition:0s;background:var(--btn-tertiary-bg);border-color:var(--btn-hover-text);color:var(--btn-tertiary-hover-text)}input:checked+.btn-tertiary:not(:hover):not(:focus):not(:active),input:checked+.btn-tag:not(.btn-primary):not(.btn-secondary):not(:hover):not(:focus):not(:active){background:var(--colour-selected);border-color:var(--colour-selected) !important;color:var(--colour-primary)}.btn-sm,.btn-group-sm>.btn{padding:0.375em 0.75em}.btn-tag{padding:0.375em 0.75em;margin-bottom:.5rem;margin-right:.5rem}.btn-next,.btn-prev{--marker-bg: var(--colour-secondary);text-indent:100%;white-space:nowrap;overflow:hidden;background:var(--marker-bg);border-radius:100%;width:2.25rem;height:2.25rem;text-indent:-300rem;overflow:hidden;border:none;position:relative;margin:0 0.5rem;padding:0}@media screen and (min-width: 62em){.btn-next,.btn-prev{width:3rem;height:3rem}}.btn-next:disabled,.btn-prev:disabled{opacity:.8;pointer-events:none}.btn-next:after,.btn-prev:after{content:"";position:absolute;right:0;top:0;height:100%;width:100%;background:currentColor;mask-image:var(--icon-arrow);mask-size:50%;mask-repeat:no-repeat;mask-position:50% 60%;-webkit-mask-image:var(--icon-arrow);-webkit-mask-size:50%;-webkit-mask-repeat:no-repeat;-webkit-mask-position:55% 50%;transform:rotate(0deg)}.btn-next:hover,.btn-next:focus,.btn-prev:hover,.btn-prev:focus{background:var(--colour-warning);color:var(--colour-hover);border-radius:100%}.btn-next:active,.btn-prev:active{border-radius:100%}.btn-prev:after{transform:rotate(180deg)}.btn-group{flex-wrap:wrap}.btn-group>.btn{margin-right:0;padding:.75rem}.btn-group>.btn:last-of-type{border-top-right-radius:1.25rem !important;border-bottom-right-radius:1.25rem !important}.btn-group>*:not(.btn){width:100%}.btn-group--admin{position:relative}.btn-group--admin:before{content:"";width:calc(100% - 2px);height:3rem;background-color:var(--colour-admin) !important;position:absolute;top:0;left:0;z-index:0;border-radius:.5rem !important}.btn-group--admin>.btn:not(:hover):not(:focus){border-radius:.5rem !important;background:var(--colour-admin);border-color:var(--colour-admin) !important}.btn-group--admin>.btn:is(:hover,:focus){border-radius:.5rem !important;background:var(--colour-selected);border-color:var(--colour-admin) !important;color:var(--colour-primary)}.btn-group--admin>input:checked+.btn-tertiary:not(:hover):not(:focus):not(:active){border-color:var(--colour-admin) !important}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto}.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:1rem}.btn-group>:not(.btn-check:first-child)+.btn,.btn-group>.btn-group:not(:first-child){margin-left:-1px}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn,.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:1.125rem;padding-left:1.125rem}.dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:1.125rem;padding-left:1.125rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn~.btn,.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}/*# sourceMappingURL=buttons.css.map */
@@ -1 +0,0 @@
1
- {"version":3,"sourceRoot":"","sources":["../../sass/components/buttons.scss","../../sass/_functions/mixins.scss","../../../node_modules/bootstrap/scss/_button-group.scss","../../../node_modules/bootstrap/scss/mixins/_border-radius.scss"],"names":[],"mappings":"AAEA,KAEE,qBACA,gBACA,kBACA,qBACA,sBACA,eACA,iBACA,yBACA,+BACA,sBACA,gCACA,eACA,iBACA,sBACA,sBACA,qBACA,kBACA,6BACA,YAEA,gDAIE,UACA,qBACA,sBACA,yBACA,sCACA,4BAGF,oDAKE,sBACA,cACA,yBACA,6BACA,4BAOF,8BAEE,oBACA,WAGF,mBAEE,kCAGF,qEAGE,kCACA,8CACA,qCAEA,qHAEE,yBACA,yBACA,mCAIJ,yBACE,gCAGF,uCACE,+BACA,4CAIJ,iFAGE,cACA,kCACA,mCACA,qCAOF,mKAEE,kCACA,+CACA,4BAKF,2BAEE,uBAGF,SAEE,uBACA,oBACA,mBAKF,oBAEE,qCACA,iBACA,mBACA,gBACA,4BACA,mBACA,cACA,eAOA,oBACA,gBACA,YACA,kBACA,gBACA,UC3IE,oCDsHJ,oBAaI,WACA,aASF,sCACE,WACA,oBAGF,gCACE,WACA,kBACA,QACA,MACA,YACA,WACA,wBACA,6BACA,cACA,sBACA,sBACA,qCACA,sBACA,8BACA,8BACA,uBAGF,gEAGE,iCACA,0BACA,mBAGF,kCACE,mBAKF,gBAEE,yBAMJ,WAEE,eAEA,gBACE,eACA,eAGF,6BAEE,2CACA,8CAGF,uBACE,WAIJ,kBAEE,kBAEA,yBACE,WACA,uBACA,YACA,gDACA,kBACA,MACA,OACA,UACA,+BAGF,+CACE,+BACA,+BAEA,4CAGF,yCACE,+BACA,kCAEA,4CACA,4BAGF,mFACE,4CEpPJ,+BAEE,kBACA,oBACA,sBAEA,yCACE,kBACA,cAKF,kXAME,UAKJ,aACE,aACA,eACA,2BAEA,0BACE,WAIJ,WChBI,mBDoBF,qFAEE,iBAIF,qJCVE,0BACA,6BDmBF,6GCNE,yBACA,4BDwBJ,uBACE,uBACA,sBAEA,2GAGE,cAGF,0CACE,eAIJ,yEACE,uBACA,sBAGF,yEACE,qBACA,oBAoBF,oBACE,sBACA,uBACA,uBAEA,wDAEE,WAGF,4FAEE,gBAIF,qHC1FE,6BACA,4BD8FF,oFC7GE,yBACA","file":"buttons.css"}
@@ -1 +0,0 @@
1
- .card-deck.container:not([data-card-type=simple]){padding-bottom:3rem}.card-deck.container:not([data-card-type=simple])>.row:first-child{padding-top:.5rem}.card-deck.container:not([data-card-type=simple])[class*=bg-]{padding-bottom:5rem}@media screen and (min-width: 36em)and (max-width: 61.99em){.card-deck .row-cols-sm-1 .card-header__wrapper{position:absolute;top:0;left:0;width:45.8%;height:100%;padding:0}.card-deck .row-cols-sm-1 .card-header__wrapper~.card-body,.card-deck .row-cols-sm-1 .card-header__wrapper~.card-footer{padding-left:calc(45.8% + 2.5rem)}}@media screen and (min-width: 62em){.card-deck:not(.card-deck--featured) .row-cols-md-1 .card-header__wrapper{position:absolute;top:0;left:0;width:45.8%;height:100%;padding:0}.card-deck:not(.card-deck--featured) .row-cols-md-1 .card-header__wrapper~.card-body,.card-deck:not(.card-deck--featured) .row-cols-md-1 .card-header__wrapper~.card-footer{padding-left:calc(45.8% + 2.5rem)}}.card-deck--featured>.row>.col:nth-child(4)~.col{display:none}.card-deck--featured>.row>.col:not(:first-child) .card-header__wrapper{display:none}.card-deck--featured .row-cols-sm-1>.col:not(:first-child) .card-header__wrapper~.card-body{padding-left:1.5rem}.card-deck--featured .card-footer{display:none}@media screen and (min-width: 62em){.card-deck--featured>.row{display:grid;grid-template-columns:1fr 1fr 41.66666667%;grid-template-rows:auto auto auto;gap:var(--gutter-y) var(--gutter-x);grid-template-areas:"featured featured card2" "featured featured card3" "featured featured card4";margin-top:0}.card-deck--featured>.row>.col:first-child{grid-area:featured}.card-deck--featured>.row>.col:not(:first-child){min-height:0}.card-deck--featured>.row>.col:nth-child(2){grid-area:card2}.card-deck--featured>.row>.col:nth-child(3){grid-area:card3}.card-deck--featured>.row>.col:nth-child(4){grid-area:card4}.card-deck--featured>.row>.col{width:100%;margin-top:0}}/*# sourceMappingURL=cardDeck.css.map */
@@ -1 +0,0 @@
1
- {"version":3,"sourceRoot":"","sources":["../../sass/components/cardDeck.scss","../../sass/_functions/mixins.scss"],"names":[],"mappings":"AAGA,kDAEE,oBAEA,mEACE,kBAGF,8DACE,oBAqBJ,4DAdE,gDACE,kBACA,MACA,OACA,YACA,YACA,UAEF,wHAEE,mCCvBA,oCDaF,0EACE,kBACA,MACA,OACA,YACA,YACA,UAEF,4KAEE,mCAuBF,iDACE,aAGF,uEACE,aAGF,4FACE,oBAGF,kCACE,aC3DA,oCDgEA,0BACE,aACA,2CACA,kCACA,oCACA,oBACE,8EAGF,aAEF,2CACE,mBAEF,iDACE,aAGF,4CACE,gBAGF,4CACE,gBAGF,4CACE,gBAGF,+BACE,WACA","file":"cardDeck.css"}
@@ -1 +0,0 @@
1
- a,.link{color:var(--colour-link);display:inline-block;min-height:1.75em;margin-bottom:1rem;position:relative;text-decoration:none;background:none;border:none}a:not(.text-decoration-none):not(.btn):before,.link:not(.text-decoration-none):not(.btn):before{content:"";position:absolute;left:50%;bottom:0;width:100%;height:2px;background-color:var(--colour-underline);-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);-webkit-transition:.3s ease-in;transition:.3s ease-in}a:not(.text-decoration-none):not(.btn):hover:before,.card:hover a:before,details[open] a:not(.text-decoration-none):not(.btn):before,.link:not(.text-decoration-none):not(.btn):hover:before,.card:hover .link:before,details[open] .link:not(.text-decoration-none):not(.btn):before{width:0%}a:is(:hover,:focus,.focus),.card:hover a,.card:focus a,.link:is(:hover,:focus,.focus),.card:hover .link,.card:focus .link{color:var(--colour-hover)}a:active,a.active,.card:active a,.link:active,.link.active,.card:active .link{color:var(--colour-active)}a[target=_blank]:not(.card):after,a.card[target=_blank] .btn:after,.link[target=_blank]:not(.card):after,.link.card[target=_blank] .btn:after{content:"";height:1em;width:1em;margin-left:.5em;margin-right:-0.2em;display:inline-block;vertical-align:baseline;margin-bottom:-0.15em;mask-image:var(--icon-blank);mask-size:100% 100%;mask-repeat:no-repeat;mask-position:0 0;-webkit-mask-image:var(--icon-blank);-webkit-mask-size:100% 100%;-webkit-mask-repeat:no-repeat;-webkit-mask-position:0 0;background-color:currentColor}p a,ul a,ol a,dd a,.body a,table:not(.table--email) td a{min-height:none;display:inline;margin-bottom:0;text-decoration:underline;text-underline-offset:.2em;text-decoration-thickness:2px;text-decoration-color:var(--colour-underline)}p a:hover,p a:focus,p a:active,ul a:hover,ul a:focus,ul a:active,ol a:hover,ol a:focus,ol a:active,dd a:hover,dd a:focus,dd a:active,.body a:hover,.body a:focus,.body a:active,table:not(.table--email) td a:hover,table:not(.table--email) td a:focus,table:not(.table--email) td a:active{text-decoration:none}p a:before,ul a:before,ol a:before,dd a:before,.body a:before,table:not(.table--email) td a:before{display:none}p a[target=_blank]:after,ul a[target=_blank]:after,ol a[target=_blank]:after,dd a[target=_blank]:after,.body a[target=_blank]:after,table:not(.table--email) td a[target=_blank]:after{margin-left:.25em;margin-right:.2em}/*# sourceMappingURL=links.css.map */
@@ -1 +0,0 @@
1
- {"version":3,"sourceRoot":"","sources":["../../sass/components/links.scss","../../sass/_functions/mixins.scss"],"names":[],"mappings":"AAEA,QCqCI,yBDlCF,qBACA,kBACA,mBACA,kBACA,qBACA,gBACA,YAEA,gGACE,WACA,kBACA,SACA,SACA,WACA,WCoBA,yCDlBA,mCACA,+BACA,2BACA,+BACA,uBAGF,sRAGE,SAGF,0HCKE,0BDCF,8ECDE,2BDOF,8IAGE,WACA,WACA,UACA,iBACA,oBACA,qBACA,wBACA,sBAEA,6BACA,oBACA,sBACA,kBAEA,qCACA,4BACA,8BACA,0BACA,8BAKF,yDACE,gBACA,eACA,gBACA,0BACA,2BACA,8BACA,8CAEA,6RAIE,qBAGF,mGAEE,aAGF,uLACE,kBACA","file":"links.css"}
@@ -1 +0,0 @@
1
- .modal{display:none}.modal:target{display:block;position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.25);z-index:var(--index-overlay);border:none;overscroll-behavior:contain}.modal:target>a:first-child{position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;cursor:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 512 512'%3e%3cg transform='rotate(45 256 256)'%3e%3crect id='r' x='16' y='216' width='480' height='80' rx='14'/%3e%3cuse href='%23r' transform='rotate(90 256 256)'/%3e%3c/g%3e%3c/svg%3e") 8 8,pointer}.modal:target>button{display:none}@media screen and (min-width: 62em){.modal:target>button{display:block;position:absolute;z-index:var(--index-focus);top:50%;transform:translate(0, -50%);overflow:hidden;text-indent:300%;width:2rem;height:2rem}.modal:target>button.btn:not(:hover):not(:focus){background-color:#fff}.modal:target>button.modal__dock--left{right:calc(50% + 25.625rem + 1rem)}.modal:target>button.modal__dock--left:after{transform:rotate(-180deg)}.modal:target>button.modal__dock--right{left:calc(50% + 25.625rem + 1rem)}}.modal:target.modal--left button.modal__dock--left{display:none}.modal:target.modal--left button.modal__dock--right{left:calc(40rem + 2rem)}.modal:target.modal--right button.modal__dock--right{display:none}.modal:target.modal--right button.modal__dock--left{right:calc(40rem + 2rem)}.modal__outer{position:absolute;top:50%;left:50%;width:90%;max-width:51.25rem;height:fit-content;max-height:90%;overflow:visible;transform:translate(-50%, -50%)}.modal__outer>.btn:first-child{position:absolute;top:0;right:0;margin-top:-0.75rem;margin-right:-0.75rem;z-index:var(--index-focus)}.modal__outer>.btn:first-child:not(:hover):not(:focus):not(:active){background:#fff}@media screen and (min-width: 62em){.modal--left .modal__outer{left:1rem;transform:translate(0, -50%);max-width:40rem}.modal--right .modal__outer{left:auto;right:1rem;transform:translate(0, -50%);max-width:40rem}}.modal__inner{background:#fff;overscroll-behavior:contain;height:fit-content;max-height:90vh;overflow:auto}.modal__inner>*:first-child{padding:1rem}@media screen and (min-width: 36em){.modal__inner>*:first-child{padding:2rem}}/*# sourceMappingURL=modal.css.map */
@@ -1 +0,0 @@
1
- {"version":3,"sourceRoot":"","sources":["../../sass/components/modal.scss","../../sass/_functions/mixins.scss"],"names":[],"mappings":"AAGA,OACE,aAGF,cACE,cACA,eACA,MACA,OACA,WACA,YACA,2BACA,6BACA,YACA,4BAEA,4BAEE,kBACA,MACA,OACA,WACA,YACA,UACA,qTAGF,qBACE,aCzBA,oCDwBF,qBAII,cACA,kBACA,2BACA,QACA,6BACA,gBACA,iBACA,WACA,YAEA,iDACE,sBAGF,uCACE,mCAEA,6CACE,0BAGJ,wCACE,mCAMN,mDACE,aAGF,oDACE,wBAGF,qDACE,aAGF,oDACE,yBAKJ,cAEE,kBACA,QACA,SACA,UACA,mBACA,mBACA,eACA,iBACA,gCAEA,+BACE,kBACA,MACA,QACA,oBACA,sBACA,2BAEA,oEACE,gBC/FF,oCDmGA,2BACE,UACA,6BACA,gBAGF,4BACE,UACA,WACA,6BACA,iBAKN,cACE,gBACA,4BACA,mBACA,gBACA,cAEA,4BAEE,aC3HA,oCDyHF,4BAKI","file":"modal.css"}
@@ -1 +0,0 @@
1
- .admin-panel{--panel-gutter: 1rem;--panel-tab-colour: #fafafa;background:var(--body-bg);padding:0 var(--panel-gutter) 0 var(--panel-gutter);border:1px solid var(--colour-border-light);border-top:3px solid var(--colour-secondary);margin-bottom:2rem}.admin-panel.bg-secondary{background-color:rgba(180,230,165,.3) !important}@media screen and (prefers-color-scheme: dark){.admin-panel{--panel-tab-colour: transparent}}@media screen and (min-width: 62em){.admin-panel{--panel-gutter: 1.5rem}}.admin-panel:empty{display:none}.admin-panel>*:not(.note-feed):first-child{margin-top:var(--panel-gutter)}.admin-panel>*:last-child:not(details){margin-bottom:var(--panel-gutter)}.admin-panel>:is(h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6):first-child{border-bottom:2px solid var(--colour-border-light);font-size:var(--fs-4);line-height:1;letter-spacing:1;padding:var(--panel-gutter) var(--panel-gutter) var(--panel-gutter) var(--panel-gutter);margin:0 calc(var(--panel-gutter)*-1) var(--panel-gutter) calc(var(--panel-gutter)*-1);display:block}.admin-panel>.table__wrapper,.admin-panel>.note-feed>.table__wrapper,.admin-panel>.tabs>details>.table__wrapper{margin:0 calc(var(--panel-gutter)*-1) var(--panel-gutter) calc(var(--panel-gutter)*-1);padding:0 var(--panel-gutter) 0 var(--panel-gutter);min-width:calc(100% + var(--panel-gutter) + var(--panel-gutter))}.admin-panel>.table__wrapper table,.admin-panel>.note-feed>.table__wrapper table,.admin-panel>.tabs>details>.table__wrapper table{margin:0 calc(var(--panel-gutter)*-1) var(--panel-gutter) calc(var(--panel-gutter)*-1);min-width:calc(100% + var(--panel-gutter) + var(--panel-gutter));padding-right:0}.admin-panel>.table__wrapper tr :is(th,td),.admin-panel>.note-feed>.table__wrapper tr :is(th,td),.admin-panel>.tabs>details>.table__wrapper tr :is(th,td){padding-left:var(--panel-gutter);padding-right:var(--panel-gutter)}.admin-panel>.table__wrapper:first-child,.admin-panel>.note-feed>.table__wrapper:first-child,.admin-panel>.tabs>details>.table__wrapper:first-child{margin-top:0}.admin-panel>.table__wrapper:first-child thead tr:first-child,.admin-panel>.note-feed>.table__wrapper:first-child thead tr:first-child,.admin-panel>.tabs>details>.table__wrapper:first-child thead tr:first-child{border-top:none}.admin-panel>.table__wrapper:last-child,.admin-panel>.note-feed>.table__wrapper:last-child,.admin-panel>.tabs>details>.table__wrapper:last-child{margin-bottom:0}.admin-panel>.table__wrapper:last-child tbody tr:last-child,.admin-panel>.note-feed>.table__wrapper:last-child tbody tr:last-child,.admin-panel>.tabs>details>.table__wrapper:last-child tbody tr:last-child{border-bottom:none}.admin-panel :is(h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6,.admin-panel__links,.tabs__links)+:is(.table__wrapper,table,.note-feed){margin-top:calc(var(--panel-gutter)*-1)}.admin-panel :is(h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6,.admin-panel__links,.tabs__links)+:is(.table__wrapper,table,.note-feed) tr:first-child{border-top:none}[class*=col] .admin-panel:first-child:last-child{min-height:calc(100% - 2rem)}.admin-panel .admin-panel__links{margin-top:-3px !important;margin-left:calc(var(--panel-gutter)*-1);margin-right:calc(var(--panel-gutter)*-1);display:flex;flex-direction:column;background-color:var(--body-bg);border-bottom:2px solid var(--colour-border-light);margin-bottom:var(--panel-gutter)}@media screen and (min-width: 36em){.admin-panel .admin-panel__links{flex-direction:row;border-top:1px solid var(--colour-border-light)}}.admin-panel .admin-panel__links :is(a,label){padding:var(--panel-gutter);margin:0;width:100%;background:var(--panel-tab-colour);border-top:1px solid var(--colour-border-light);border-left:3px solid var(--panel-tab-border, #fafafa)}.admin-panel .admin-panel__links :is(a,label):before{display:none}@media screen and (min-width: 36em){.admin-panel .admin-panel__links :is(a,label){margin-right:0 !important;border-top:3px solid var(--panel-tab-border, #fafafa)}.admin-panel .admin-panel__links :is(a,label):first-child{border-left:none !important}.admin-panel .admin-panel__links :is(a,label):not(:first-child){border-left:1px solid var(--colour-border-light) !important}}.admin-panel .admin-panel__links .current{--is-current: 1;--panel-tab-colour: var(--body-bg);--panel-tab-border: var(--colour-secondary);pointer-events:none}/*# sourceMappingURL=panel.css.map */
@@ -1 +0,0 @@
1
- {"version":3,"sourceRoot":"","sources":["../../sass/components/panel.scss","../../sass/_functions/mixins.scss"],"names":[],"mappings":"AAEA,aACE,qBACA,4BACA,0BAiBA,oDACA,4CACA,6CACA,mBAlBA,0BAEE,iDAGF,+CAVF,aAYI,iCCRA,oCDJJ,aAiBI,wBAQF,mBACE,aAGF,2CACE,+BAGF,uCACE,kCAGF,wEACE,mDACA,sBACA,cACA,iBACA,wFACA,uFACA,cAGF,gHAIE,uFACA,oDACA,iEAEA,kIAEE,uFACA,iEACA,gBAKA,0JACE,iCACA,kCAIJ,oJACE,aAEA,mNAEE,gBAIJ,iJACE,gBAEA,6MAEE,mBAMN,mIACE,wCAEA,kJAEE,gBAKN,iDAEE,6BAGF,iCAEE,2BACA,yCACA,0CACA,aACA,sBACA,gCACA,mDACA,kCC9GE,oCDqGJ,iCAaI,mBACA,iDAGF,8CACE,4BACA,SACA,WACA,mCACA,gDACA,uDAEA,qDACE,aC/HF,oCDsHF,8CAcI,0BAWA,sDATA,0DACE,4BAGF,gEAEE,6DAON,0CAEE,gBACA,mCACA,4CACA","file":"panel.css"}
@@ -1 +0,0 @@
1
- table{--border-width: 2px;--inner-border-width: 1px;width:100%;font-size:1rem;border:none;margin-bottom:2rem;overflow:auto}td,th{padding:1rem 2rem 1rem 0;font-weight:normal;text-align:left;vertical-align:top;border:none;font-size:1rem;line-height:1.5rem;color:var(--colour-body)}td:first-child,th:first-child{padding-left:0.5rem}th{font-weight:bold;color:var(--colour-heading)}tr{border-bottom:var(--inner-border-width) solid currentColor;border-color:var(--colour-border)}tr:last-child{border-bottom:var(--border-width) solid currentColor;border-color:var(--colour-border)}thead tr:first-child{border-top:var(--border-width) solid currentColor;border-color:var(--colour-border)}thead th{font-size:1rem;line-height:1.5rem;padding-bottom:1.5rem;font-weight:bold;vertical-align:bottom}@media screen and (min-width: 36em){thead th{font-size:1.125rem;white-space:nowrap}}tbody:first-child tr:first-child{border-top:var(--border-width) solid currentColor;border-color:var(--colour-border)}.table__wrapper.border-0 table,table.border-0{--border-width: 0px;--inner-border-width: 0px}.table__wrapper{display:block;width:calc(100% + 1rem);padding-right:1rem;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;margin-bottom:2rem}.table__wrapper table{margin-bottom:0;display:table;overflow:hidden}@media screen and (max-width: 36em){.table__wrapper:not(.table-fullwidth):not(.client-table){overflow:hidden}.table__wrapper:not(.table-fullwidth):not(.client-table) thead{display:none}.table__wrapper:not(.table-fullwidth):not(.client-table) tbody{display:block;border-top:2px solid currentColor;border-color:var(--colour-border)}.table__wrapper:not(.table-fullwidth):not(.client-table) tr{display:block;position:relative;padding-top:1rem;padding-bottom:1rem}.table__wrapper:not(.table-fullwidth):not(.client-table) td,.table__wrapper:not(.table-fullwidth):not(.client-table) th{display:block;padding-right:0;padding-top:0;padding-left:0.5rem}.table__wrapper:not(.table-fullwidth):not(.client-table) td[data-label]:before,.table__wrapper:not(.table-fullwidth):not(.client-table) th[data-label]:before{content:attr(data-label);color:var(--colour-heading);padding:0;margin-bottom:0;display:block;font-weight:bold;margin:0}.table__wrapper:not(.table-fullwidth):not(.client-table).table-minify tr:not(:hover) td:not(:first-child){display:none}}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.1)}.bg-light .table-striped tbody tr:nth-of-type(odd){background-color:var(--colour-white)}.table-hover tbody tr:hover,.table-hover tbody tr:focus{background-color:rgba(0,0,0,.2)}[data-sortable]{cursor:pointer;position:relative;user-select:none;padding-right:3.5rem}[data-sortable]:hover{color:var(--colour-hover)}[data-sortable]:after{content:"";position:absolute;top:0;right:0;width:3.5rem;height:4rem;display:block;mask-image:var(--icon-sort);mask-size:.6rem .8rem;mask-repeat:no-repeat;mask-position:calc(100% - 1.5rem) calc(50% - .25rem);-webkit-mask-image:var(--icon-sort);-webkit-mask-size:.6rem .8rem;-webkit-mask-repeat:no-repeat;-webkit-mask-position:calc(100% - 1.5rem) calc(50% - .25rem);background-color:currentColor}[data-sortable][aria-sort=ascending]:after{--icon-sort: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='101' height='101' preserveAspectRatio='none'%3E%3Cpath d='M51 1l25 23 24 22H1l25-22z'/%3E%3Cpath opacity='.3' d='M51 101l25-23 24-22H1l25 22z'/%3E%3C/svg%3E")}[data-sortable][aria-sort=descending]:after{--icon-sort: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='101' height='101' preserveAspectRatio='none'%3E%3Cpath opacity='.3' d='M51 1l25 23 24 22H1l25-22z'/%3E%3Cpath d='M51 101l25-23 24-22H1l25 22z'/%3E%3C/svg%3E")}.table__pagination select{max-width:15rem}.table__pagination .showing-input-field{min-width:4.5rem}.table__pagination .page-number{min-width:7rem}.table-order-reset{cursor:pointer;position:relative;width:1rem;overflow:hidden;text-indent:-200%}.table-order-reset:hover{color:var(--colour-hover)}.table-order-reset:after{content:"#";position:absolute;left:.5rem;top:1rem;text-indent:0}[data-reorder] tr[draggable]{cursor:move}[data-reorder] tr[draggable]:hover,[data-reorder] tr[draggable]:focus{background-color:rgba(0,0,0,.2)}[data-reorder] tr[draggable].tr--dragging{background:var(--colour-muted)}[data-reorder] tr[draggable].tr--dropable{background-color:rgba(0,0,0,.2)}.note-feed td:last-child{min-width:20rem}/*# sourceMappingURL=tables.css.map */
@@ -1 +0,0 @@
1
- {"version":3,"sourceRoot":"","sources":["../../sass/components/tables.scss","../../sass/_functions/mixins.scss"],"names":[],"mappings":"AAGA,MACE,oBACA,0BACA,WACA,eACA,YACA,mBACA,cAGF,MACE,yBACA,mBACA,gBACA,mBACA,YACA,eACA,mBACA,yBAEA,8BACE,oBAIJ,GACE,iBCUE,4BDNJ,GACE,2DCKE,kCDFF,cACE,qDCCA,kCDKF,qBACE,kDCNA,kCDUF,SACE,eACA,mBACA,sBAQA,iBACA,sBCvDA,oCD2CF,SAOI,mBACA,oBASJ,iCACE,kDC5BA,kCDiCJ,8CAGE,oBACA,0BAMF,gBACE,cACA,wBACA,mBACA,gBACA,iCACA,4CACA,mBAEA,sBACE,gBACA,cACA,gBAMJ,oCACE,yDAEE,gBAEA,+DACE,aAGF,+DACE,cACA,kCCxEF,kCD4EA,4DACE,cACA,kBACA,iBACA,oBAGF,wHAEE,cACA,gBACA,cACA,oBAEA,8JACE,yBACA,4BACA,UACA,gBACA,cACA,iBACA,SAKF,0GACE,cASR,yCAEE,gCAEA,mDCpHE,qCD6HF,wDAEE,gCAOJ,gBAEE,eACA,kBACA,iBACA,qBAEA,sBACE,0BAGJ,sBAEE,WACA,kBACA,MACA,QACA,aACA,YACA,cACA,4BACA,sBACA,sBACA,qDAEA,oCACA,8BACA,8BACA,6DACA,8BAGF,2CACE,mQAGF,4CACE,mQAKF,0BACE,gBAEF,wCACE,iBAEF,gCACE,eAKF,mBAEE,eACA,kBACA,WAMA,gBACA,kBALA,yBACE,0BAMF,yBACE,YACA,kBACA,WACA,SACA,cAIJ,6BAEE,YAEA,sEAEE,gCAGF,0CACE,+BAGF,0CAEE,gCASF,yBACE","file":"tables.css"}
@@ -1,69 +0,0 @@
1
- // @ts-nocheck
2
- const modal = (element) => {
3
- const links = element.querySelectorAll('.modal__outer a, .modal__outer button');
4
- const firstLink = links[0];
5
- const lastLink = links[links.length - 1];
6
- const modalID = element.getAttribute('id');
7
- const closeModal = function () {
8
- const button = document.querySelector('[href="' + window.location.hash + '"]');
9
- button.focus();
10
- window.location.hash = "close";
11
- history.replaceState("", document.title, window.location.pathname + window.location.search);
12
- // If there is more than one video lets make sure there is only one playing at a time.
13
- if (typeof window.player != "undefined" && typeof window.player.pauseVideo == "function")
14
- window.player.pauseVideo();
15
- };
16
- // Trap the tab focus inside
17
- element.addEventListener('keydown', function (e) {
18
- if (e.key === "Tab" && e.shiftKey && document.activeElement == firstLink) {
19
- e.preventDefault();
20
- lastLink.focus();
21
- }
22
- else if (e.key === "Tab" && !e.shiftKey && document.activeElement == lastLink) {
23
- e.preventDefault();
24
- firstLink.focus();
25
- }
26
- });
27
- // ESC will close the open modal
28
- document.addEventListener("keydown", function (e) {
29
- if (e.key === "Escape" && document.querySelector('.modal:target'))
30
- closeModal();
31
- });
32
- element.addEventListener('click', function (e) {
33
- for (var target = e.target; target && target != this; target = target.parentNode) {
34
- // Close links will close the model by default but we want to remove the hash link also
35
- if (target.matches('[href="#close"]')) {
36
- e.preventDefault();
37
- closeModal();
38
- break;
39
- }
40
- // Dock the modal to the right or left to make the content behind readable
41
- else if (target.matches('.modal__dock--right')) {
42
- e.preventDefault();
43
- if (!element.classList.contains('modal--left'))
44
- element.classList.add('modal--right');
45
- element.classList.remove('modal--left');
46
- break;
47
- }
48
- else if (target.matches('.modal__dock--left')) {
49
- e.preventDefault();
50
- if (!element.classList.contains('modal--right'))
51
- element.classList.add('modal--left');
52
- element.classList.remove('modal--right');
53
- break;
54
- }
55
- }
56
- });
57
- function locationHashChanged() {
58
- if (location.hash === '#' + modalID) {
59
- console.log("Modal is now open");
60
- const videoButton = document.querySelector('.modal:target .modal__inner > .youtube-embed:first-child:last-child a');
61
- console.log(videoButton);
62
- if (videoButton) {
63
- videoButton.click();
64
- }
65
- }
66
- }
67
- window.onhashchange = locationHashChanged;
68
- };
69
- export default modal;