@iamproperty/components 3.4.5 → 3.4.6
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.
- package/assets/css/components/accordion.css +1 -0
- package/assets/css/components/accordion.css.map +1 -0
- package/assets/css/components/alert.css +1 -0
- package/assets/css/components/alert.css.map +1 -0
- package/assets/css/components/buttons.css +1 -0
- package/assets/css/components/buttons.css.map +1 -0
- package/assets/css/components/card.css +1 -0
- package/assets/css/components/card.css.map +1 -0
- package/assets/css/components/cardDeck.css +1 -0
- package/assets/css/components/cardDeck.css.map +1 -0
- package/assets/css/components/carousel.css +1 -0
- package/assets/css/components/carousel.css.map +1 -0
- package/assets/css/components/charts.css +1 -0
- package/assets/css/components/charts.css.map +1 -0
- package/assets/css/components/container.css +1 -0
- package/assets/css/components/container.css.map +1 -0
- package/assets/css/components/forms.css +1 -0
- package/assets/css/components/forms.css.map +1 -0
- package/assets/css/components/header.css +1 -0
- package/assets/css/components/header.css.map +1 -0
- package/assets/css/components/links.css +1 -0
- package/assets/css/components/links.css.map +1 -0
- package/assets/css/components/lists.css +1 -0
- package/assets/css/components/lists.css.map +1 -0
- package/assets/css/components/modal.css +1 -0
- package/assets/css/components/modal.css.map +1 -0
- package/assets/css/components/nav.css +1 -0
- package/assets/css/components/nav.css.map +1 -0
- package/assets/css/components/panel.css +1 -0
- package/assets/css/components/panel.css.map +1 -0
- package/assets/css/components/property-searchbar.css +1 -0
- package/assets/css/components/property-searchbar.css.map +1 -0
- package/assets/css/components/snapshot.css +1 -0
- package/assets/css/components/snapshot.css.map +1 -0
- package/assets/css/components/stepper.css +1 -0
- package/assets/css/components/stepper.css.map +1 -0
- package/assets/css/components/tables.css +1 -0
- package/assets/css/components/tables.css.map +1 -0
- package/assets/css/components/tabs.css +1 -0
- package/assets/css/components/tabs.css.map +1 -0
- package/assets/css/components/testimonial.css +1 -0
- package/assets/css/components/testimonial.css.map +1 -0
- package/assets/css/components/timeline.css +1 -0
- package/assets/css/components/timeline.css.map +1 -0
- package/assets/css/components/tooltips.css +1 -0
- package/assets/css/components/tooltips.css.map +1 -0
- package/assets/css/core.min.css +1 -1
- package/assets/css/core.min.css.map +1 -1
- package/assets/css/style.min.css +1 -1
- package/assets/css/style.min.css.map +1 -1
- package/assets/fonts/qanelas-bold-webfont.woff +0 -0
- package/assets/fonts/qanelas-bold-webfont.woff2 +0 -0
- package/assets/js/bundle.js +61 -0
- package/assets/js/components/accordion/accordion.component.js +27 -0
- package/assets/js/components/accordion/accordion.component.min.js +14 -0
- package/assets/js/components/accordion/accordion.component.min.js.map +1 -0
- package/assets/js/components/header/header.component.js +45 -0
- package/assets/js/components/header/header.component.min.js +30 -0
- package/assets/js/components/header/header.component.min.js.map +1 -0
- package/assets/js/components/tabs/tabs.component.js +28 -0
- package/assets/js/dynamic.js +85 -0
- package/assets/js/dynamic.min.js +56 -0
- package/assets/js/dynamic.min.js.map +1 -0
- package/assets/js/{main.js → flat-components.js} +15 -11
- package/assets/js/modules/accordion.js +11 -14
- package/assets/js/modules/helpers.js +9 -4
- package/assets/js/modules/tabs.js +91 -0
- package/assets/js/scripts.bundle.js +92 -980
- package/assets/js/scripts.bundle.js.map +1 -1
- package/assets/js/scripts.bundle.min.js +3 -4
- package/assets/js/scripts.bundle.min.js.map +1 -1
- package/assets/sass/_fonts.scss +4 -4
- package/assets/sass/_func.scss +1 -0
- package/assets/sass/_functions/functions.scss +6 -0
- package/assets/sass/_functions/mixins.scss +9 -9
- package/assets/sass/_functions/variables.scss +96 -68
- package/assets/sass/_tests/mixins.spec.scss +1 -1
- package/assets/sass/_tests/typography.spec.scss +2 -2
- package/assets/sass/components/accordion.scss +9 -6
- package/assets/sass/components/card.scss +7 -0
- package/assets/sass/components/container.scss +6 -6
- package/assets/sass/components/forms.scss +2 -0
- package/assets/sass/components/header.scss +34 -11
- package/assets/sass/components/links.scss +3 -2
- package/assets/sass/components/panel.scss +3 -4
- package/assets/sass/components/snapshot.scss +1 -1
- package/assets/sass/components/tabs.scss +52 -36
- package/assets/sass/components/timeline.scss +2 -2
- package/assets/sass/foundations/reboot.scss +2 -2
- package/assets/sass/foundations/root.scss +12 -5
- package/assets/sass/foundations/type.scss +90 -66
- package/assets/ts/README.md +12 -0
- package/assets/ts/bundle.ts +76 -0
- package/assets/ts/components/accordion/README.md +17 -0
- package/assets/ts/components/accordion/accordion.component.ts +36 -0
- package/assets/ts/components/header/README.md +26 -0
- package/assets/ts/components/header/header.component.ts +53 -0
- package/assets/ts/components/tabs/README.md +18 -0
- package/assets/ts/components/tabs/tabs.component.ts +34 -0
- package/assets/ts/dynamic.ts +105 -0
- package/assets/ts/{main.ts → flat-components.ts} +15 -11
- package/assets/ts/html.d.ts +4 -0
- package/assets/ts/modules/accordion.ts +15 -21
- package/assets/ts/modules/helpers.ts +12 -4
- package/assets/ts/modules/tabs.ts +129 -0
- package/dist/components.es.js +879 -844
- package/dist/components.umd.js +65 -21
- package/dist/style.css +1 -1
- package/package.json +14 -8
- package/src/components/Accordion/Accordion.spec.js +1 -1
- package/src/components/Accordion/Accordion.vue +7 -5
- package/src/components/Accordion/AccordionItem.vue +3 -6
- package/src/components/Accordion/README.md +0 -2
- package/src/components/Header/Header.spec.js +5 -4
- package/src/components/Header/Header.vue +14 -20
- package/src/components/Snapshot/Snapshot.vue +1 -1
- package/src/components/Tabs/README.md +0 -2
- package/src/components/Tabs/Tab.vue +3 -2
- package/src/components/Tabs/Tabs.vue +8 -64
- package/assets/fonts/qanelassoft-extrabold-webfont.woff +0 -0
- package/assets/fonts/qanelassoft-extrabold-webfont.woff2 +0 -0
|
@@ -22,7 +22,7 @@ html {
|
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
@if $mobileOnly != "true" {
|
|
25
|
-
@media (min-width: #{em(
|
|
25
|
+
@media (min-width: #{em(1280)}) {
|
|
26
26
|
font-size: 100%;
|
|
27
27
|
}
|
|
28
28
|
|
|
@@ -48,7 +48,7 @@ body {
|
|
|
48
48
|
font-family: 'qanelasmedium', arial, sans-serif;
|
|
49
49
|
@include var(color,--colour-body);
|
|
50
50
|
width: 100%;
|
|
51
|
-
line-height: 1.
|
|
51
|
+
line-height: 1.2;
|
|
52
52
|
height: 100%;
|
|
53
53
|
//overflow-y: scroll;
|
|
54
54
|
//overflow-x: hidden;
|
|
@@ -10,6 +10,13 @@
|
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
// Add in media query based updates to the global vars like updating the heading 1 font size
|
|
13
|
+
@include media-breakpoint-up(sm) {
|
|
14
|
+
|
|
15
|
+
@each $var, $value in $varsSM {
|
|
16
|
+
#{$var}: #{$value};
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
13
20
|
@include media-breakpoint-up(md) {
|
|
14
21
|
|
|
15
22
|
@each $var, $value in $varsMD {
|
|
@@ -43,7 +50,7 @@
|
|
|
43
50
|
}
|
|
44
51
|
|
|
45
52
|
body .text-primary {
|
|
46
|
-
color:
|
|
53
|
+
color: #{$colour-inverted}!important;
|
|
47
54
|
}
|
|
48
55
|
|
|
49
56
|
body .bg-white {
|
|
@@ -93,7 +100,7 @@
|
|
|
93
100
|
|
|
94
101
|
@include invert-colours();
|
|
95
102
|
}
|
|
96
|
-
color:
|
|
103
|
+
color: #{$colour-inverted};
|
|
97
104
|
}
|
|
98
105
|
|
|
99
106
|
// Only update the the colour of the underline on dark backgrounds except the primary as the secondary colour looks good on it
|
|
@@ -102,7 +109,7 @@
|
|
|
102
109
|
.bg-black:not(.prevent-invert),
|
|
103
110
|
.invert-colours {
|
|
104
111
|
|
|
105
|
-
--colour-underline:
|
|
112
|
+
--colour-underline: #{$colour-inverted};
|
|
106
113
|
}
|
|
107
114
|
}
|
|
108
115
|
|
|
@@ -116,8 +123,8 @@
|
|
|
116
123
|
|
|
117
124
|
@include invert-colours();
|
|
118
125
|
}
|
|
119
|
-
color:
|
|
120
|
-
--colour-underline:
|
|
126
|
+
color: #{$colour-inverted};
|
|
127
|
+
--colour-underline: #{$colour-inverted};
|
|
121
128
|
}
|
|
122
129
|
|
|
123
130
|
[class*="bg-"].bg-md-transparent {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
@use "sass:map";
|
|
1
2
|
@use "../_func.scss" as *;
|
|
2
3
|
|
|
3
4
|
/* Duplicated from bootstrap reboot so that the type file will compile */
|
|
@@ -10,105 +11,123 @@ small {
|
|
|
10
11
|
@include font-size($small-font-size);
|
|
11
12
|
}
|
|
12
13
|
|
|
13
|
-
|
|
14
14
|
@import "../../../node_modules/bootstrap/scss/_type.scss";
|
|
15
15
|
|
|
16
16
|
// #region headings
|
|
17
17
|
%heading {
|
|
18
|
-
|
|
19
|
-
@include var(font-weight,--heading-weight);
|
|
20
|
-
@include var(font-family, --font-heading);
|
|
21
|
-
@include var(color,--colour-heading);
|
|
22
|
-
color: var(--colour-heading,var(--colour-primary));
|
|
23
|
-
display: block;
|
|
24
|
-
text-indent: -0.04em;
|
|
25
|
-
letter-spacing: -0.01em;
|
|
26
|
-
|
|
18
|
+
// From bootstrap reboot
|
|
27
19
|
margin-top: 0; // 1
|
|
28
20
|
margin-bottom: $headings-margin-bottom;
|
|
21
|
+
font-family: $headings-font-family;
|
|
29
22
|
font-style: $headings-font-style;
|
|
23
|
+
font-weight: $headings-font-weight;
|
|
30
24
|
line-height: $headings-line-height;
|
|
25
|
+
color: $headings-color;
|
|
26
|
+
// END:Bootstap reboot
|
|
27
|
+
clear: both;
|
|
28
|
+
display: block;
|
|
29
|
+
padding-bottom: 2rem;
|
|
31
30
|
}
|
|
32
31
|
|
|
33
|
-
.h1 {
|
|
34
|
-
|
|
32
|
+
@include is('h1, .h1, h2, .h2, h3, .h3, h4, .h4, h5, .h5, h6, .h6,.display-1,.display-2, .display-3, .display-4'){
|
|
33
|
+
|
|
34
|
+
@extend %heading;
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
.
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
:is(.h1, h1) {
|
|
38
|
+
font-size: rem(map-get($heading-sizes,"h1_fs"));
|
|
39
|
+
line-height: rem(map-get($heading-sizes,"h1_lh"));
|
|
40
|
+
padding-bottom: rem(map-get($heading-sizes,"h1_pb"));
|
|
40
41
|
|
|
41
|
-
|
|
42
|
-
@include font-size($h3-font-size);
|
|
43
|
-
}
|
|
42
|
+
@include media-breakpoint-up(sm) {
|
|
44
43
|
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
font-size: rem(map-get($heading-sizes,"h1_fs_sm"));
|
|
45
|
+
line-height: rem(map-get($heading-sizes,"h1_lh_sm"));
|
|
46
|
+
padding-bottom: rem(map-get($heading-sizes,"h1_pb_sm"));
|
|
47
|
+
}
|
|
47
48
|
}
|
|
48
49
|
|
|
49
|
-
.
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
:is(h2, .h2) {
|
|
51
|
+
font-size: rem(map-get($heading-sizes,"h2_fs"));
|
|
52
|
+
line-height: rem(map-get($heading-sizes,"h2_lh"));
|
|
53
|
+
padding-bottom: rem(map-get($heading-sizes,"h1_pb"));
|
|
52
54
|
|
|
53
|
-
|
|
54
|
-
@include font-size($h6-font-size);
|
|
55
|
-
}
|
|
55
|
+
@include media-breakpoint-up(sm) {
|
|
56
56
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
57
|
+
font-size: rem(map-get($heading-sizes,"h2_fs_sm"));
|
|
58
|
+
line-height: rem(map-get($heading-sizes,"h2_lh_sm"));
|
|
59
|
+
padding-bottom: rem(map-get($heading-sizes,"h2_pb_sm"));
|
|
60
|
+
}
|
|
60
61
|
}
|
|
61
62
|
|
|
62
|
-
|
|
63
|
+
:is(h3, .h3) {
|
|
64
|
+
font-size: rem(map-get($heading-sizes,"h3_fs"));
|
|
65
|
+
line-height: rem(map-get($heading-sizes,"h3_lh"));
|
|
66
|
+
padding-bottom: rem(map-get($heading-sizes,"h3_pb"));
|
|
67
|
+
max-width: var(--content-max-width);
|
|
68
|
+
|
|
69
|
+
@include media-breakpoint-up(sm) {
|
|
63
70
|
|
|
64
|
-
|
|
71
|
+
font-size: rem(map-get($heading-sizes,"h3_fs_sm"));
|
|
72
|
+
line-height: rem(map-get($heading-sizes,"h3_lh_sm"));
|
|
73
|
+
padding-bottom: rem(map-get($heading-sizes,"h3_pb_sm"));
|
|
74
|
+
}
|
|
65
75
|
}
|
|
66
76
|
|
|
77
|
+
:is(.h4, h4, .h5, h5, .h6, h6) {
|
|
78
|
+
font-size: rem(map-get($heading-sizes,"h4_fs"));
|
|
79
|
+
line-height: rem(map-get($heading-sizes,"h4_lh"));
|
|
80
|
+
padding-bottom: rem(map-get($heading-sizes,"h4_pb"));
|
|
81
|
+
max-width: var(--content-max-width);
|
|
82
|
+
|
|
83
|
+
/* The values for mobile and tablet are exactly the same, but if that changes this block needs to be re-instated
|
|
84
|
+
@include media-breakpoint-up(sm) {
|
|
85
|
+
|
|
86
|
+
font-size: rem(map-get($heading-sizes,"h4_fs_sm"));
|
|
87
|
+
line-height: rem(map-get($heading-sizes,"h4_lh_sm"));
|
|
88
|
+
padding-bottom: rem(map-get($heading-sizes,"h4_pb_sm"));
|
|
89
|
+
}
|
|
90
|
+
*/
|
|
91
|
+
}
|
|
67
92
|
// #endregion
|
|
68
93
|
|
|
69
94
|
p {
|
|
95
|
+
font-size: rem(map-get($heading-sizes,"body_fs"));
|
|
96
|
+
line-height: rem(map-get($heading-sizes,"body_lh"));
|
|
97
|
+
padding-bottom: rem(map-get($heading-sizes,"body_end_pb"));
|
|
70
98
|
max-width: var(--content-max-width);
|
|
99
|
+
margin-bottom: 0;
|
|
71
100
|
}
|
|
72
101
|
|
|
73
|
-
p
|
|
74
|
-
|
|
102
|
+
p:has(+ p) {
|
|
103
|
+
padding-bottom: rem(map-get($heading-sizes,"body_pb"));
|
|
75
104
|
}
|
|
76
105
|
|
|
77
|
-
.strapline
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
106
|
+
@include is('.lead, .strapline'){
|
|
107
|
+
font-size: rem(map-get($heading-sizes,"lead_fs"));
|
|
108
|
+
line-height: rem(map-get($heading-sizes,"lead_lh"));
|
|
109
|
+
padding-bottom: rem(map-get($heading-sizes,"lead_pb"));
|
|
110
|
+
max-width: var(--content-max-width);
|
|
82
111
|
font-weight: 700;
|
|
83
|
-
margin-bottom: clamp(1rem,0.5em,0.5em);
|
|
84
|
-
//text-shadow: ;
|
|
85
|
-
|
|
86
|
-
h1 + &,
|
|
87
|
-
.h1 + & {
|
|
88
|
-
margin-top: -0.5rem;
|
|
89
|
-
margin-bottom: 2rem;
|
|
90
|
-
}
|
|
91
112
|
}
|
|
92
113
|
|
|
93
|
-
.
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
margin-bottom: 3rem;
|
|
99
|
-
@include var(color,--colour-heading);
|
|
114
|
+
.small {
|
|
115
|
+
font-size: rem(map-get($heading-sizes,"small_fs"));
|
|
116
|
+
line-height: rem(map-get($heading-sizes,"small_lh"));
|
|
117
|
+
padding-bottom: rem(map-get($heading-sizes,"small_pb"));
|
|
118
|
+
max-width: var(--content-max-width);
|
|
100
119
|
}
|
|
101
120
|
|
|
102
121
|
blockquote {
|
|
103
122
|
|
|
104
123
|
quotes: "“" "”" "‘" "’";
|
|
105
|
-
|
|
124
|
+
padding-bottom: rem(48);
|
|
125
|
+
overflow: hidden;
|
|
106
126
|
|
|
107
127
|
p {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
margin-bottom: 1rem;
|
|
128
|
+
font-size: rem(24);
|
|
129
|
+
line-height: rem(32);
|
|
130
|
+
padding-bottom: 0;
|
|
112
131
|
}
|
|
113
132
|
|
|
114
133
|
& p:first-child:before {
|
|
@@ -119,19 +138,24 @@ blockquote {
|
|
|
119
138
|
}
|
|
120
139
|
|
|
121
140
|
cite {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
141
|
+
font-size: rem(18);
|
|
142
|
+
line-height: rem(32);
|
|
143
|
+
padding-bottom: 0;
|
|
125
144
|
font-weight: bold;
|
|
145
|
+
font-style: normal;
|
|
126
146
|
}
|
|
127
147
|
}
|
|
128
148
|
|
|
129
149
|
.stat {
|
|
130
|
-
font-size: rem(
|
|
131
|
-
|
|
150
|
+
font-size: rem(64);
|
|
151
|
+
line-height: rem(72);
|
|
152
|
+
font-weight: bold;
|
|
153
|
+
color: $headings-color;
|
|
154
|
+
display: block;
|
|
155
|
+
|
|
132
156
|
text-decoration: underline;
|
|
133
|
-
text-underline-offset:
|
|
157
|
+
text-underline-offset: 0.75rem;
|
|
134
158
|
text-decoration-color: var(--colour-secondary);
|
|
135
|
-
text-decoration-thickness:
|
|
136
|
-
margin-bottom:
|
|
159
|
+
text-decoration-thickness: rem(4);
|
|
160
|
+
margin-bottom: rem(64);
|
|
137
161
|
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Typescript files
|
|
2
|
+
|
|
3
|
+
## Compilation
|
|
4
|
+
|
|
5
|
+
- **assets/ts/modules/{module}.ts** compiles to **assets/js/modules/{module}.js**
|
|
6
|
+
- **assets/ts/components/{component}.ts** compiles to **assets/js/components/{component}.component.js**
|
|
7
|
+
- **assets/ts/{filename}.ts** compiles to **assets/js/{filename}.js**
|
|
8
|
+
|
|
9
|
+
## Rollup
|
|
10
|
+
|
|
11
|
+
- **assets/js/components/{component}.component.js** adds the @imports from the assets/js/modules folder and creates a combined file of **assets/js/components/{component}.component.min.js**
|
|
12
|
+
- **assets/js/bundle.js** adds the @imports from the assets/js/modules and assets/js/components folders to create a combined file of **assets/js/components/scripts.bundle.min.js**
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
// Modules
|
|
3
|
+
import * as helpers from '../js/modules/helpers'
|
|
4
|
+
import nav from '../js/modules/nav'
|
|
5
|
+
import table from '../js/modules/table'
|
|
6
|
+
//import accordion from './modules/accordion'
|
|
7
|
+
import testimonial from '../js/modules/testimonial'
|
|
8
|
+
import carousel from '../js/modules/carousel'
|
|
9
|
+
import form from '../js/modules/form'
|
|
10
|
+
import youtubeVideo from '../js/modules/youtubevideo'
|
|
11
|
+
import modal from '../js/modules/modal'
|
|
12
|
+
import iamHeader from './components/header/header.component'
|
|
13
|
+
import iamAccordion from './components/accordion/accordion.component'
|
|
14
|
+
import iamTabs from './components/tabs/tabs.component'
|
|
15
|
+
|
|
16
|
+
// Attach classes to dom elements
|
|
17
|
+
document.addEventListener("DOMContentLoaded", function() {
|
|
18
|
+
|
|
19
|
+
// Global stuff
|
|
20
|
+
helpers.addBodyClasses(document.body);
|
|
21
|
+
helpers.addGlobalEvents(document.body);
|
|
22
|
+
helpers.checkElements(document.body);
|
|
23
|
+
|
|
24
|
+
if (!window.customElements.get(`iam-header`))
|
|
25
|
+
window.customElements.define(`iam-header`, iamHeader);
|
|
26
|
+
|
|
27
|
+
if (!window.customElements.get(`iam-accordion`))
|
|
28
|
+
window.customElements.define(`iam-accordion`, iamAccordion);
|
|
29
|
+
|
|
30
|
+
if (!window.customElements.get(`iam-tabs`))
|
|
31
|
+
window.customElements.define(`iam-tabs`, iamTabs);
|
|
32
|
+
|
|
33
|
+
// ANav
|
|
34
|
+
Array.from(document.querySelectorAll('.nav')).forEach((arrayElement) => {
|
|
35
|
+
nav(arrayElement);
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
// Advanced tables
|
|
39
|
+
Array.from(document.querySelectorAll('.table__wrapper')).forEach((arrayElement) => {
|
|
40
|
+
table(arrayElement);
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
// Testimonial
|
|
46
|
+
Array.from(document.querySelectorAll('.testimonial')).forEach((arrayElement) => {
|
|
47
|
+
testimonial(arrayElement);
|
|
48
|
+
});
|
|
49
|
+
// Carousel
|
|
50
|
+
Array.from(document.querySelectorAll('.carousel')).forEach((arrayElement) => {
|
|
51
|
+
carousel(arrayElement);
|
|
52
|
+
});
|
|
53
|
+
// Form
|
|
54
|
+
Array.from(document.querySelectorAll('form')).forEach((arrayElement) => {
|
|
55
|
+
form(arrayElement);
|
|
56
|
+
});
|
|
57
|
+
// Modal
|
|
58
|
+
Array.from(document.querySelectorAll('.modal')).forEach((arrayElement) => {
|
|
59
|
+
modal(arrayElement);
|
|
60
|
+
});
|
|
61
|
+
// YouTube videos
|
|
62
|
+
Array.from(document.querySelectorAll('.youtube-embed')).forEach((arrayElement) => {
|
|
63
|
+
new youtubeVideo(arrayElement);
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
window.addEventListener('hashchange', function() {
|
|
68
|
+
|
|
69
|
+
const hash = location.hash.replace('#','');
|
|
70
|
+
const label = document.querySelector(`label[for="${hash}"]`);
|
|
71
|
+
|
|
72
|
+
if (label instanceof HTMLElement)
|
|
73
|
+
label.click();
|
|
74
|
+
|
|
75
|
+
}, false);
|
|
76
|
+
});
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
```
|
|
2
|
+
<iam-accordion class="container">
|
|
3
|
+
<details id="question1" class="accordion-item">
|
|
4
|
+
<summary class="accordion-header accordion-button h4">Question 1</summary>
|
|
5
|
+
<p>Answer </p>
|
|
6
|
+
</details>
|
|
7
|
+
<details class="accordion-item">
|
|
8
|
+
<summary class="accordion-header accordion-button h4">Question 2</summary>
|
|
9
|
+
<p>Answer </p>
|
|
10
|
+
</details>
|
|
11
|
+
</iam-accordion>
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
### Class modifiers
|
|
15
|
+
|
|
16
|
+
- Adding a class of **.accordion--keep-open** to the accordion will stop the items from closing when another one is opened.
|
|
17
|
+
- Adding a class of **.accordion--straight** to the accordion will remove the slight indentation of the accordion.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import accordion from "../../modules/accordion";
|
|
3
|
+
|
|
4
|
+
const assetLocation = document.body.hasAttribute('data-assets-location') ? document.body.getAttribute('data-assets-location') : '/assets'
|
|
5
|
+
|
|
6
|
+
class iamAccordion extends HTMLElement {
|
|
7
|
+
|
|
8
|
+
constructor(){
|
|
9
|
+
super();
|
|
10
|
+
this.attachShadow({ mode: 'open'});
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
const template = document.createElement('template');
|
|
14
|
+
template.innerHTML = `
|
|
15
|
+
<style>
|
|
16
|
+
@import "${assetLocation}/css/core.min.css";
|
|
17
|
+
@import "${assetLocation}/css/components/accordion.css";
|
|
18
|
+
${this.hasAttribute('css') ? `@import "${this.getAttribute('css')}";` : ``}
|
|
19
|
+
</style>
|
|
20
|
+
<div class="accordion">
|
|
21
|
+
<slot></slot>
|
|
22
|
+
</div>
|
|
23
|
+
`;
|
|
24
|
+
this.shadowRoot.appendChild(template.content.cloneNode(true));
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
connectedCallback() {
|
|
28
|
+
|
|
29
|
+
accordion(this);
|
|
30
|
+
|
|
31
|
+
// Load in the component CSS into the root so we can style the content of the component
|
|
32
|
+
this.insertAdjacentHTML("beforebegin", `<link rel="stylesheet" href="${assetLocation}/css/components/accordion.css">`)
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export default iamAccordion;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
### Usage
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
<iam-header class="bg-secondary" image="/shutterstock_1229155495.webp">
|
|
5
|
+
<ul class="breadcrumb" slot="breadcrumb">
|
|
6
|
+
<li><a href="/">Home</a></li>
|
|
7
|
+
<li><a href="/top">Top level</a></li>
|
|
8
|
+
</ul>
|
|
9
|
+
<h1>Page title</h1>
|
|
10
|
+
<p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.</p>
|
|
11
|
+
</iam-header>
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
### Properties
|
|
15
|
+
|
|
16
|
+
| Option | Type | Default Value | Description |
|
|
17
|
+
| ------ | ---- | ------------- | ----------- |
|
|
18
|
+
| image | String | - | Optional image url to display in the background |
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
### Slots
|
|
22
|
+
|
|
23
|
+
| Option | Default Value | Description |
|
|
24
|
+
| ------ | ------------- | ----------- |
|
|
25
|
+
| default | - | Will display underneath the heading inside of the white box |
|
|
26
|
+
| breadcrumb | - | An optional space to add a breadcrumb trail list. |
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
class iamHeader extends HTMLElement {
|
|
3
|
+
|
|
4
|
+
constructor(){
|
|
5
|
+
super();
|
|
6
|
+
this.attachShadow({ mode: 'open'});
|
|
7
|
+
|
|
8
|
+
const assetLocation = document.body.hasAttribute('data-assets-location') ? document.body.getAttribute('data-assets-location') : '/assets';
|
|
9
|
+
const loadCSS = `@import "${assetLocation}/css/components/header.css";`;
|
|
10
|
+
|
|
11
|
+
const template = document.createElement('template');
|
|
12
|
+
template.innerHTML = `
|
|
13
|
+
<style>
|
|
14
|
+
@import "${assetLocation}/css/core.min.css";
|
|
15
|
+
${loadCSS}
|
|
16
|
+
${this.hasAttribute('css') ? `@import "${this.getAttribute('css')}";` : ``}
|
|
17
|
+
:host {
|
|
18
|
+
max-width:100%!important;
|
|
19
|
+
padding:0!important;
|
|
20
|
+
}
|
|
21
|
+
</style>
|
|
22
|
+
<div class="header-banner">
|
|
23
|
+
<div class="container" part="container">
|
|
24
|
+
<slot name="breadcrumb"></slot>
|
|
25
|
+
<div class="header-banner__inner">
|
|
26
|
+
<slot></slot>
|
|
27
|
+
</div>
|
|
28
|
+
</div>
|
|
29
|
+
<picture>
|
|
30
|
+
<!-- Actual image only loaded on desktops -->
|
|
31
|
+
<source srcset="" media="(min-width: 62em)">
|
|
32
|
+
<!-- Placeholder image -->
|
|
33
|
+
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="" lazy="" />
|
|
34
|
+
</picture>
|
|
35
|
+
</div>
|
|
36
|
+
`;
|
|
37
|
+
this.shadowRoot.appendChild(template.content.cloneNode(true));
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
connectedCallback() {
|
|
41
|
+
|
|
42
|
+
const picture = this.shadowRoot.querySelector('picture');
|
|
43
|
+
const source = this.shadowRoot.querySelector('picture source');
|
|
44
|
+
|
|
45
|
+
if(this.hasAttribute('image'))
|
|
46
|
+
source.setAttribute('srcset', this.getAttribute('image'));
|
|
47
|
+
else
|
|
48
|
+
picture.remove();
|
|
49
|
+
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export default iamHeader;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
```
|
|
2
|
+
<iam-tabs class="container">
|
|
3
|
+
<details>
|
|
4
|
+
<summary>Question 1</summary>
|
|
5
|
+
<p>Answer </p>
|
|
6
|
+
</details>
|
|
7
|
+
<details>
|
|
8
|
+
<summary>Question 2</summary>
|
|
9
|
+
<p>Answer</p>
|
|
10
|
+
</details>
|
|
11
|
+
</iam-tabs>
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
### Tab Properties
|
|
15
|
+
|
|
16
|
+
| Option | Type | Default Value | Description |
|
|
17
|
+
| ------ | ---- | ------------- | ----------- |
|
|
18
|
+
| title | String | - | Used for the heading of the component |
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import tabs from "../../modules/tabs";
|
|
3
|
+
|
|
4
|
+
class iamTabs extends HTMLElement {
|
|
5
|
+
|
|
6
|
+
constructor(){
|
|
7
|
+
super();
|
|
8
|
+
this.attachShadow({ mode: 'open'});
|
|
9
|
+
|
|
10
|
+
const assetLocation = document.body.hasAttribute('data-assets-location') ? document.body.getAttribute('data-assets-location') : '/assets';
|
|
11
|
+
const loadCSS = `@import "${assetLocation}/css/components/tabs.css";`;
|
|
12
|
+
const template = document.createElement('template');
|
|
13
|
+
template.innerHTML = `
|
|
14
|
+
<style>
|
|
15
|
+
@import "${assetLocation}/css/core.min.css";
|
|
16
|
+
${loadCSS}
|
|
17
|
+
|
|
18
|
+
${this.hasAttribute('css') ? `@import "${this.getAttribute('css')}";` : ``}
|
|
19
|
+
</style>
|
|
20
|
+
<div class="tabs">
|
|
21
|
+
<div class="tabs__links"></div>
|
|
22
|
+
<slot></slot>
|
|
23
|
+
</div>
|
|
24
|
+
`;
|
|
25
|
+
this.shadowRoot.appendChild(template.content.cloneNode(true));
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
connectedCallback() {
|
|
29
|
+
|
|
30
|
+
tabs(this);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export default iamTabs;
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
// Modules
|
|
3
|
+
import * as helpers from '../js/modules/helpers'
|
|
4
|
+
import nav from '../js/modules/nav'
|
|
5
|
+
import table from '../js/modules/table'
|
|
6
|
+
//import accordion from './modules/accordion'
|
|
7
|
+
import testimonial from '../js/modules/testimonial'
|
|
8
|
+
import carousel from '../js/modules/carousel'
|
|
9
|
+
import form from '../js/modules/form'
|
|
10
|
+
import youtubeVideo from '../js/modules/youtubevideo'
|
|
11
|
+
import modal from '../js/modules/modal'
|
|
12
|
+
|
|
13
|
+
const components = ['accordion','header','tabs'];
|
|
14
|
+
const prefix = "iam"
|
|
15
|
+
const options = {
|
|
16
|
+
rootMargin: '50px',
|
|
17
|
+
threshold: 0.1
|
|
18
|
+
}
|
|
19
|
+
const componentExt = ".component.js";
|
|
20
|
+
|
|
21
|
+
// Load components - Each component will load once the first of its type has been loaded
|
|
22
|
+
components.forEach((component) => {
|
|
23
|
+
|
|
24
|
+
if(document.getElementsByTagName(`${prefix}-${component}`).length === 0)
|
|
25
|
+
return;
|
|
26
|
+
|
|
27
|
+
let callback = (entries:any) => {
|
|
28
|
+
entries.forEach((entry:any) => {
|
|
29
|
+
|
|
30
|
+
if(entry.intersectionRatio > 0){
|
|
31
|
+
|
|
32
|
+
import(`./components/${component}/${component}${componentExt}`).then(module => {
|
|
33
|
+
if (!window.customElements.get(`${prefix}-${component}`))
|
|
34
|
+
window.customElements.define(`${prefix}-${component}`, module.default);
|
|
35
|
+
}).catch((err) => {
|
|
36
|
+
console.log(err.message);
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
intObserver.unobserve(entry.target);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
const intObserver = new IntersectionObserver(callback, options);
|
|
45
|
+
intObserver.observe(document.getElementsByTagName(`${prefix}-${component}`)[0]);
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
// Attach classes to dom elements
|
|
50
|
+
document.addEventListener("DOMContentLoaded", function() {
|
|
51
|
+
|
|
52
|
+
// Global stuff
|
|
53
|
+
helpers.addBodyClasses(document.body);
|
|
54
|
+
helpers.addGlobalEvents(document.body);
|
|
55
|
+
helpers.checkElements(document.body);
|
|
56
|
+
|
|
57
|
+
// ANav
|
|
58
|
+
Array.from(document.querySelectorAll('.nav')).forEach((arrayElement) => {
|
|
59
|
+
nav(arrayElement);
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
// Advanced tables
|
|
63
|
+
Array.from(document.querySelectorAll('.table__wrapper')).forEach((arrayElement) => {
|
|
64
|
+
table(arrayElement);
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
// Accordions
|
|
68
|
+
/*
|
|
69
|
+
Array.from(document.querySelectorAll('.accordion')).forEach((arrayElement) => {
|
|
70
|
+
accordion(arrayElement);
|
|
71
|
+
});
|
|
72
|
+
*/
|
|
73
|
+
|
|
74
|
+
// Testimonial
|
|
75
|
+
Array.from(document.querySelectorAll('.testimonial')).forEach((arrayElement) => {
|
|
76
|
+
testimonial(arrayElement);
|
|
77
|
+
});
|
|
78
|
+
// Carousel
|
|
79
|
+
Array.from(document.querySelectorAll('.carousel')).forEach((arrayElement) => {
|
|
80
|
+
carousel(arrayElement);
|
|
81
|
+
});
|
|
82
|
+
// Form
|
|
83
|
+
Array.from(document.querySelectorAll('form')).forEach((arrayElement) => {
|
|
84
|
+
form(arrayElement);
|
|
85
|
+
});
|
|
86
|
+
// Modal
|
|
87
|
+
Array.from(document.querySelectorAll('.modal')).forEach((arrayElement) => {
|
|
88
|
+
modal(arrayElement);
|
|
89
|
+
});
|
|
90
|
+
// YouTube videos
|
|
91
|
+
Array.from(document.querySelectorAll('.youtube-embed')).forEach((arrayElement) => {
|
|
92
|
+
new youtubeVideo(arrayElement);
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
window.addEventListener('hashchange', function() {
|
|
97
|
+
|
|
98
|
+
const hash = location.hash.replace('#','');
|
|
99
|
+
const label = document.querySelector(`label[for="${hash}"]`);
|
|
100
|
+
|
|
101
|
+
if (label instanceof HTMLElement)
|
|
102
|
+
label.click();
|
|
103
|
+
|
|
104
|
+
}, false);
|
|
105
|
+
});
|