@iamproperty/components 3.1.0 → 3.4.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (179) hide show
  1. package/README.md +141 -16
  2. package/assets/css/core.min.css +1 -1
  3. package/assets/css/core.min.css.map +1 -1
  4. package/assets/css/style.min.css +1 -1
  5. package/assets/css/style.min.css.map +1 -1
  6. package/assets/favicons/manifest.json +31 -31
  7. package/assets/js/main.js +57 -57
  8. package/assets/js/modules/accordion.js +33 -32
  9. package/assets/js/modules/alert.js +41 -57
  10. package/assets/js/modules/carousel.js +76 -102
  11. package/assets/js/modules/chart.js +151 -218
  12. package/assets/js/modules/drawer.js +10 -16
  13. package/assets/js/modules/file-upload.js +33 -48
  14. package/assets/js/modules/form.js +122 -168
  15. package/assets/js/modules/helpers.js +90 -119
  16. package/assets/js/modules/modal.js +69 -90
  17. package/assets/js/modules/nav.js +18 -28
  18. package/assets/js/modules/orderablelist.js +91 -122
  19. package/assets/js/modules/table.js +451 -585
  20. package/assets/js/modules/testimonial.js +64 -83
  21. package/assets/js/modules/youtubevideo.js +114 -145
  22. package/assets/js/scripts.bundle.js +895 -955
  23. package/assets/js/scripts.bundle.js.map +1 -1
  24. package/assets/js/scripts.bundle.min.js +3 -3
  25. package/assets/js/scripts.bundle.min.js.map +1 -1
  26. package/assets/sass/_components.scss +14 -14
  27. package/assets/sass/_corefiles.scss +40 -40
  28. package/assets/sass/_fonts.scss +16 -16
  29. package/assets/sass/_forms.scss +10 -10
  30. package/assets/sass/_func.scss +12 -12
  31. package/assets/sass/_functions/functions.scss +141 -141
  32. package/assets/sass/_functions/mixins.scss +170 -170
  33. package/assets/sass/_functions/utilities.scss +143 -143
  34. package/assets/sass/_functions/variables.scss +467 -467
  35. package/assets/sass/_print.scss +61 -61
  36. package/assets/sass/_tests/{sass.spec.js → colours.spec.js} +9 -9
  37. package/assets/sass/_tests/colours.spec.scss +44 -44
  38. package/assets/sass/_tests/func.spec.js +9 -0
  39. package/assets/sass/_tests/func.spec.scss +232 -232
  40. package/assets/sass/_tests/mixins.spec.js +9 -0
  41. package/assets/sass/_tests/mixins.spec.scss +194 -194
  42. package/assets/sass/_tests/typography.spec.js +9 -0
  43. package/assets/sass/_tests/typography.spec.scss +35 -35
  44. package/assets/sass/components/accordion.scss +197 -197
  45. package/assets/sass/components/alert.scss +98 -98
  46. package/assets/sass/{elements → components}/buttons.scss +251 -251
  47. package/assets/sass/{elements → components}/card.scss +288 -288
  48. package/assets/sass/components/cardDeck.scss +107 -107
  49. package/assets/sass/components/carousel.scss +234 -234
  50. package/assets/sass/components/charts.scss +569 -569
  51. package/assets/sass/{elements → components}/container.scss +236 -236
  52. package/assets/sass/components/drawer.scss +46 -46
  53. package/assets/sass/{elements → components}/forms.scss +261 -261
  54. package/assets/sass/components/header.scss +63 -63
  55. package/assets/sass/{elements → components}/links.scss +97 -97
  56. package/assets/sass/{elements → components}/lists.scss +159 -159
  57. package/assets/sass/components/modal.scss +136 -136
  58. package/assets/sass/components/nav.scss +960 -960
  59. package/assets/sass/{elements → components}/panel.scss +161 -161
  60. package/assets/sass/components/property-searchbar.scss +143 -143
  61. package/assets/sass/components/snapshot.scss +70 -70
  62. package/assets/sass/components/stepper.scss +164 -164
  63. package/assets/sass/{elements → components}/tables.scss +290 -290
  64. package/assets/sass/components/tabs.scss +87 -87
  65. package/assets/sass/components/testimonial.scss +132 -132
  66. package/assets/sass/components/timeline.scss +95 -95
  67. package/assets/sass/{elements → components}/tooltips.scss +84 -84
  68. package/assets/sass/core.scss +6 -6
  69. package/assets/sass/email.scss +65 -65
  70. package/assets/sass/error.scss +4 -4
  71. package/assets/sass/foundations/brand.scss +76 -72
  72. package/assets/sass/foundations/circles.scss +74 -74
  73. package/assets/sass/foundations/icons.scss +80 -80
  74. package/assets/sass/foundations/media.scss +50 -50
  75. package/assets/sass/foundations/reboot.scss +130 -130
  76. package/assets/sass/foundations/root.scss +125 -125
  77. package/assets/sass/{elements → foundations}/type.scss +136 -136
  78. package/assets/sass/main.scss +7 -7
  79. package/assets/svg/icons.svg +598 -598
  80. package/assets/svg/logo.svg +49 -43
  81. package/assets/ts/main.ts +68 -68
  82. package/assets/ts/modules/accordion.ts +44 -43
  83. package/assets/ts/modules/alert.ts +58 -0
  84. package/assets/ts/modules/carousel.ts +103 -0
  85. package/assets/ts/modules/chart.ts +219 -0
  86. package/assets/ts/modules/drawer.ts +17 -0
  87. package/assets/ts/modules/file-upload.ts +49 -0
  88. package/assets/ts/modules/form.ts +169 -0
  89. package/assets/ts/modules/helpers.ts +120 -0
  90. package/assets/ts/modules/modal.ts +91 -0
  91. package/assets/ts/modules/nav.ts +29 -0
  92. package/assets/ts/modules/orderablelist.ts +123 -0
  93. package/assets/ts/modules/table.ts +586 -0
  94. package/assets/ts/modules/testimonial.ts +84 -0
  95. package/assets/ts/modules/youtubevideo.ts +146 -0
  96. package/dist/components.es.js +493 -509
  97. package/dist/components.umd.js +15 -15
  98. package/package.json +109 -108
  99. package/src/components/Accordion/Accordion.spec.js +63 -63
  100. package/src/components/Accordion/Accordion.vue +22 -22
  101. package/src/components/Accordion/AccordionItem.vue +52 -52
  102. package/src/components/Accordion/README.md +34 -34
  103. package/src/components/Alert/Alert.spec.js +49 -49
  104. package/src/components/Alert/Alert.vue +39 -39
  105. package/src/components/Alert/README.md +28 -28
  106. package/src/components/Banner/Banner.spec.js +28 -28
  107. package/src/components/Banner/Banner.vue +38 -38
  108. package/src/components/Banner/README.md +23 -23
  109. package/src/{elements → components}/Card/Card.vue +122 -122
  110. package/src/{elements/FileUploads → components/Card}/README.md +24 -24
  111. package/src/components/CardDeck/CardDeck.spec.js +99 -99
  112. package/src/components/CardDeck/CardDeck.vue +77 -77
  113. package/src/components/CardDeck/README.md +24 -24
  114. package/src/components/Carousel/Carousel.spec.js +45 -45
  115. package/src/components/Carousel/Carousel.vue +85 -85
  116. package/src/components/Carousel/README.md +19 -19
  117. package/src/components/Chart/Chart.spec.js +201 -201
  118. package/src/components/Chart/Chart.vue +88 -88
  119. package/src/components/Chart/README.md +17 -17
  120. package/src/components/Drawer/Drawer.vue +53 -53
  121. package/src/components/Drawer/README.md +22 -22
  122. package/src/{elements → components}/FileUploads/FileUploads.vue +48 -48
  123. package/src/{elements/Card → components/FileUploads}/README.md +24 -24
  124. package/src/components/Header/Header.spec.js +33 -33
  125. package/src/components/Header/Header.vue +38 -38
  126. package/src/components/Header/README.md +27 -27
  127. package/src/{elements → components}/Input/Input.vue +272 -272
  128. package/src/{elements → components}/Input/README.md +19 -19
  129. package/src/components/Modal/Modal.spec.js +22 -22
  130. package/src/components/Modal/Modal.vue +43 -43
  131. package/src/components/Modal/README.md +19 -19
  132. package/src/components/Nav/Nav.spec.js +35 -35
  133. package/src/components/Nav/Nav.vue +215 -215
  134. package/src/components/Nav/README.md +22 -22
  135. package/src/components/NoteFeed/NoteFeed.vue +79 -79
  136. package/src/components/NoteFeed/README.md +16 -16
  137. package/src/components/PropertySearchbar/PropertySearchbar.vue +204 -204
  138. package/src/components/PropertySearchbar/README.md +25 -25
  139. package/src/components/Snapshot/README.md +20 -20
  140. package/src/components/Snapshot/Snapshot.vue +32 -32
  141. package/src/components/Stepper/README.md +32 -32
  142. package/src/components/Stepper/Step.vue +28 -28
  143. package/src/components/Stepper/Stepper.spec.js +99 -99
  144. package/src/components/Stepper/Stepper.vue +33 -33
  145. package/src/{elements → components}/Table/README.md +62 -62
  146. package/src/{elements → components}/Table/Table.spec.js +90 -90
  147. package/src/{elements → components}/Table/Table.vue +129 -129
  148. package/src/components/Tabs/README.md +27 -27
  149. package/src/components/Tabs/Tab.vue +32 -32
  150. package/src/components/Tabs/Tabs.vue +77 -77
  151. package/src/components/Testimonial/README.md +25 -25
  152. package/src/components/Testimonial/Testimonial.spec.js +57 -57
  153. package/src/components/Testimonial/Testimonial.vue +60 -60
  154. package/src/components/Timeline/README.md +18 -18
  155. package/src/components/Timeline/Timeline.spec.js +17 -17
  156. package/src/components/Timeline/Timeline.vue +24 -24
  157. package/src/foundations/Icon/Icon.spec.js +24 -24
  158. package/src/foundations/Icon/Icon.vue +24 -24
  159. package/src/foundations/Icon/README.md +11 -11
  160. package/src/foundations/Logo/Logo.spec.js +56 -56
  161. package/src/foundations/Logo/Logo.vue +39 -39
  162. package/src/foundations/Logo/README.md +20 -20
  163. package/src/foundations/YoutubeVideo/README.md +11 -11
  164. package/src/foundations/YoutubeVideo/YoutubeVideo.vue +24 -24
  165. package/src/helpers/strings.js +12 -12
  166. package/src/index.js +27 -27
  167. package/src/vue-shim.d.ts +6 -6
  168. package/assets/css/email.min.css +0 -1
  169. package/assets/css/email.min.css.map +0 -1
  170. package/assets/css/error.min.css +0 -1
  171. package/assets/css/error.min.css.map +0 -1
  172. package/assets/ts/main.js +0 -57
  173. package/assets/ts/main.js.map +0 -1
  174. package/assets/ts/modules/accordion.js +0 -33
  175. package/assets/ts/modules/accordion.js.map +0 -1
  176. package/src/components/Accordion/Accordion.screenshot.vue +0 -57
  177. package/src/components/Accordion/__screenshots__/win32/laptop/Accordion.png +0 -0
  178. package/src/components/Accordion/__screenshots__/win32/mobile/Accordion.png +0 -0
  179. package/src/components/Accordion/__screenshots__/win32/tablet/Accordion.png +0 -0
@@ -1,108 +1,108 @@
1
- @use "../_func" as *;
2
-
3
- // #region Card Deck
4
- .card-deck.container:not([data-card-type="simple"]) {
5
-
6
- padding-bottom: 3rem;
7
-
8
- > .row:first-child {
9
- padding-top: 0.5rem;
10
- }
11
-
12
- &[class*="bg-"] {
13
- padding-bottom: 5rem;
14
- }
15
- }
16
- // #endregion
17
-
18
- // #region Fake container query that transforms the card into a vertical card
19
- @mixin vertical-card(){
20
- .card-header__wrapper {
21
- position: absolute;
22
- top: 0;
23
- left: 0;
24
- width: 45.8%;
25
- height: 100%;
26
- padding: 0;
27
- }
28
- .card-header__wrapper ~ .card-body,
29
- .card-header__wrapper ~ .card-footer {
30
- padding-left: calc(45.8% + #{$card-spacer-x + $card-spacer-x});
31
- }
32
- }
33
-
34
- @media screen and (min-width: 36em) and (max-width: 61.99em) {
35
-
36
- .card-deck .row-cols-sm-1 {
37
- @include vertical-card();
38
- }
39
- }
40
-
41
- @include media-breakpoint-up(md) {
42
-
43
- .card-deck:not(.card-deck--featured) .row-cols-md-1 {
44
-
45
- @include vertical-card();
46
- }
47
- }
48
- // #endregion
49
-
50
- // #region Featured Card deck
51
- .card-deck--featured {
52
-
53
- > .row > .col:nth-child(4) ~ .col {
54
- display: none;
55
- }
56
-
57
- > .row > .col:not(:first-child) .card-header__wrapper {
58
- display: none;
59
- }
60
-
61
- .row-cols-sm-1 > .col:not(:first-child) .card-header__wrapper ~ .card-body {
62
- padding-left: 1.5rem;
63
- }
64
-
65
- .card-footer {
66
- display: none;
67
- }
68
-
69
- @include media-breakpoint-up(md) {
70
-
71
- > .row {
72
- display: grid;
73
- grid-template-columns: 1fr 1fr 41.66666667%;
74
- grid-template-rows: auto auto auto;
75
- gap: var(--gutter-y) var(--gutter-x);
76
- grid-template-areas:
77
- "featured featured card2"
78
- "featured featured card3"
79
- "featured featured card4";
80
- margin-top:0;
81
- }
82
- > .row > .col:first-child {
83
- grid-area: featured;
84
- }
85
- > .row > .col:not(:first-child) {
86
- min-height: 0;
87
- }
88
-
89
- > .row > .col:nth-child(2) {
90
- grid-area: card2;
91
- }
92
-
93
- > .row > .col:nth-child(3) {
94
- grid-area: card3;
95
- }
96
-
97
- > .row > .col:nth-child(4) {
98
- grid-area: card4;
99
- }
100
-
101
- > .row > .col {
102
- width: 100%;
103
- margin-top:0;
104
- }
105
-
106
- }
107
- }
1
+ @use "../_func" as *;
2
+
3
+ // #region Card Deck
4
+ .card-deck.container:not([data-card-type="simple"]) {
5
+
6
+ padding-bottom: 3rem;
7
+
8
+ > .row:first-child {
9
+ padding-top: 0.5rem;
10
+ }
11
+
12
+ &[class*="bg-"] {
13
+ padding-bottom: 5rem;
14
+ }
15
+ }
16
+ // #endregion
17
+
18
+ // #region Fake container query that transforms the card into a vertical card
19
+ @mixin vertical-card(){
20
+ .card-header__wrapper {
21
+ position: absolute;
22
+ top: 0;
23
+ left: 0;
24
+ width: 45.8%;
25
+ height: 100%;
26
+ padding: 0;
27
+ }
28
+ .card-header__wrapper ~ .card-body,
29
+ .card-header__wrapper ~ .card-footer {
30
+ padding-left: calc(45.8% + #{$card-spacer-x + $card-spacer-x});
31
+ }
32
+ }
33
+
34
+ @media screen and (min-width: 36em) and (max-width: 61.99em) {
35
+
36
+ .card-deck .row-cols-sm-1 {
37
+ @include vertical-card();
38
+ }
39
+ }
40
+
41
+ @include media-breakpoint-up(md) {
42
+
43
+ .card-deck:not(.card-deck--featured) .row-cols-md-1 {
44
+
45
+ @include vertical-card();
46
+ }
47
+ }
48
+ // #endregion
49
+
50
+ // #region Featured Card deck
51
+ .card-deck--featured {
52
+
53
+ > .row > .col:nth-child(4) ~ .col {
54
+ display: none;
55
+ }
56
+
57
+ > .row > .col:not(:first-child) .card-header__wrapper {
58
+ display: none;
59
+ }
60
+
61
+ .row-cols-sm-1 > .col:not(:first-child) .card-header__wrapper ~ .card-body {
62
+ padding-left: 1.5rem;
63
+ }
64
+
65
+ .card-footer {
66
+ display: none;
67
+ }
68
+
69
+ @include media-breakpoint-up(md) {
70
+
71
+ > .row {
72
+ display: grid;
73
+ grid-template-columns: 1fr 1fr 41.66666667%;
74
+ grid-template-rows: auto auto auto;
75
+ gap: var(--gutter-y) var(--gutter-x);
76
+ grid-template-areas:
77
+ "featured featured card2"
78
+ "featured featured card3"
79
+ "featured featured card4";
80
+ margin-top:0;
81
+ }
82
+ > .row > .col:first-child {
83
+ grid-area: featured;
84
+ }
85
+ > .row > .col:not(:first-child) {
86
+ min-height: 0;
87
+ }
88
+
89
+ > .row > .col:nth-child(2) {
90
+ grid-area: card2;
91
+ }
92
+
93
+ > .row > .col:nth-child(3) {
94
+ grid-area: card3;
95
+ }
96
+
97
+ > .row > .col:nth-child(4) {
98
+ grid-area: card4;
99
+ }
100
+
101
+ > .row > .col {
102
+ width: 100%;
103
+ margin-top:0;
104
+ }
105
+
106
+ }
107
+ }
108
108
  // #endregion
@@ -1,235 +1,235 @@
1
- @use "../_func" as *;
2
-
3
- // #region default carousel
4
- .carousel {
5
- padding-bottom: 3rem;
6
-
7
- .carousel__wrapper {
8
-
9
- position: relative;
10
- }
11
-
12
- .carousel__inner {
13
-
14
- --gutter-x: #{$grid-gutter-width};
15
- overflow: auto;
16
- scroll-snap-type: x mandatory;
17
- margin-right: calc(var(--gutter-x) * -.5);
18
- margin-left: calc(var(--gutter-x) * -.5);
19
-
20
- > .row {
21
- flex-wrap: nowrap;
22
- margin: 0;
23
-
24
- > .col {
25
- padding-top: rem(36);
26
- padding-bottom: rem(24);
27
- scroll-snap-align: start;
28
- scroll-padding: calc(var(--gutter-x) * -1);
29
- }
30
- }
31
- }
32
-
33
- .carousel__item > *:last-child {
34
- margin-bottom: 0;
35
- padding-bottom: 0;
36
- }
37
- }
38
- // #endregion
39
-
40
- // #region Remove the scrollbar
41
- body.js-enabled .carousel__inner {
42
- // FireFox
43
- scrollbar-width: none;
44
- // IE10+
45
- -ms-overflow-style: none;
46
- }
47
-
48
- body.js-enabled .carousel__inner::-webkit-scrollbar {
49
- // Chrome, Safari, Edge
50
- display: none;
51
- }
52
- // #endregion
53
-
54
- // #region carousel controls/pips
55
- .carousel:not(.hide-controls) {
56
- padding-bottom: 4.5rem!important;
57
- }
58
-
59
- .carousel.hide-controls .carousel__controls {
60
- display: none;
61
- }
62
-
63
- .carousel .carousel__controls {
64
- position: absolute;
65
- text-align: center;
66
- width: auto;
67
- left: 0;
68
- width: calc(100% + 2rem);
69
- margin-left: -1rem;
70
- margin-right: -1rem;
71
- bottom: -3rem;
72
-
73
- a {
74
- width: 1rem;
75
- height: 1rem;
76
- min-height: 1rem;
77
- border-radius: 50%;
78
- text-indent: -50rem;
79
- overflow: hidden;
80
- background: currentColor;
81
- padding: 0;
82
- margin: 0 0.5rem 0.5rem 0.5rem;
83
-
84
- &:before {
85
- display: none;
86
- }
87
- }
88
-
89
- a:first-child:last-child {
90
- display: none;
91
- }
92
- }
93
-
94
- .carousel .carousel__controls > a:nth-child(10) ~ a {
95
-
96
- display: none;
97
- }
98
- // #endregion
99
-
100
- // #region Carousel buttons
101
- .carousel.hide-btns .carousel__wrapper > .btn {
102
- display: none;
103
- }
104
-
105
- .carousel:not(.hide-btns) .carousel__inner {
106
-
107
- margin-left: rem(28);
108
- margin-right: rem(28);
109
- }
110
-
111
- .carousel .carousel__wrapper > .btn {
112
- position: absolute;
113
- top: 50%;
114
- left: -1.25rem;
115
- transform: translate(0,-50%);
116
-
117
- &.btn-next {
118
- left: auto;
119
- right: -1.25rem;
120
- }
121
-
122
- @include media-breakpoint-up(md) {
123
-
124
- margin-left: -1rem;
125
- margin-right: -1rem;
126
- }
127
- }
128
-
129
-
130
- // #endregion
131
-
132
- .carousel .carousel__inner > .row > .col:first-child {
133
- margin-left: 0!important;
134
- }
135
-
136
- @include media-breakpoint-up(sm) {
137
-
138
- .carousel .carousel__controls > a:nth-child(10) ~ a {
139
-
140
- display: inline-block;
141
- }
142
-
143
- .carousel .carousel__inner > .row[class*="row-cols-sm-"] > .col{
144
- scroll-snap-align: unset;
145
- }
146
-
147
- .carousel .carousel__inner > .row-cols-sm-2 > .col:nth-child(odd),
148
- .carousel .carousel__inner > .row-cols-sm-3 > .col:nth-child(3n+1),
149
- .carousel .carousel__inner > .row-cols-sm-4 > .col:nth-child(4n+1),
150
- .carousel .carousel__inner > .row-cols-sm-5 > .col:nth-child(5n+1),
151
- .carousel .carousel__inner > .row-cols-sm-6 > .col:nth-child(6n+1) {
152
- scroll-snap-align: start;
153
-
154
- body:not(.js-enabled) & {
155
- margin-left: 4rem;
156
- }
157
- }
158
-
159
- .carousel .carousel__controls.cols-sm-2 > a:not(:nth-child(odd)),
160
- .carousel .carousel__controls.cols-sm-3 > a:not(:nth-child(3n+1)),
161
- .carousel .carousel__controls.cols-sm-4 > a:not(:nth-child(4n+1)),
162
- .carousel .carousel__controls.cols-sm-5 > a:not(:nth-child(5n+1)),
163
- .carousel .carousel__controls.cols-sm-6 > a:not(:nth-child(6n+1)) {
164
- display: none;
165
- }
166
-
167
- // Make sure that we dont just have one pip showing
168
- .carousel .carousel__controls.cols-sm-2 > a:first-child:nth-last-child(2),
169
- .carousel .carousel__controls.cols-sm-3 > :is(a:first-child:nth-last-child(2), a:first-child:nth-last-child(3)),
170
- .carousel .carousel__controls.cols-sm-4 > :is(a:first-child:nth-last-child(2), a:first-child:nth-last-child(3), a:first-child:nth-last-child(4)),
171
- .carousel .carousel__controls.cols-sm-5 > :is(a:first-child:nth-last-child(2),a:first-child:nth-last-child(3),a:first-child:nth-last-child(4),a:first-child:nth-last-child(5)),
172
- .carousel .carousel__controls.cols-sm-6 > :is(a:first-child:nth-last-child(2),a:first-child:nth-last-child(3),a:first-child:nth-last-child(4),a:first-child:nth-last-child(5),a:first-child:nth-last-child(6)) {
173
- display: none;
174
- }
175
-
176
- // Hide buttons if not needed
177
- .carousel.hide-sm-btns .carousel__wrapper > .btn {
178
- display: none;
179
- }
180
-
181
- .carousel.hide-sm-btns .carousel__inner {
182
-
183
- margin-left: 0;
184
- margin-right: 0;
185
- }
186
- }
187
-
188
- @include media-breakpoint-up(md) {
189
-
190
- .carousel .carousel__inner > .row[class*="row-cols-md-"] > .col{
191
- scroll-snap-align: unset;
192
- margin-left: 0;
193
- }
194
-
195
- .carousel .carousel__inner > .row-cols-md-2 > .col:nth-child(odd),
196
- .carousel .carousel__inner > .row-cols-md-3 > .col:nth-child(3n+1),
197
- .carousel .carousel__inner > .row-cols-md-4 > .col:nth-child(4n+1),
198
- .carousel .carousel__inner > .row-cols-md-5 > .col:nth-child(5n+1),
199
- .carousel .carousel__inner > .row-cols-md-6 > .col:nth-child(6n+1) {
200
- scroll-snap-align: start;
201
-
202
- body:not(.js-enabled) & {
203
-
204
- margin-left: calc(50vw);
205
- }
206
- }
207
-
208
- .carousel .carousel__controls.cols-md-2 > a:not(:nth-child(odd)),
209
- .carousel .carousel__controls.cols-md-3 > a:not(:nth-child(3n+1)),
210
- .carousel .carousel__controls.cols-md-4 > a:not(:nth-child(4n+1)),
211
- .carousel .carousel__controls.cols-md-5 > a:not(:nth-child(5n+1)),
212
- .carousel .carousel__controls.cols-md-6 > a:not(:nth-child(6n+1)) {
213
- display: none;
214
- }
215
-
216
- // Make sure that we dont just have one pip showing
217
- .carousel .carousel__controls.cols-md-2 > a:first-child:nth-last-child(2),
218
- .carousel .carousel__controls.cols-md-3 > :is(a:first-child:nth-last-child(2), a:first-child:nth-last-child(3)),
219
- .carousel .carousel__controls.cols-md-4 > :is(a:first-child:nth-last-child(2), a:first-child:nth-last-child(3), a:first-child:nth-last-child(4)),
220
- .carousel .carousel__controls.cols-md-5 > :is(a:first-child:nth-last-child(2),a:first-child:nth-last-child(3),a:first-child:nth-last-child(4),a:first-child:nth-last-child(5)),
221
- .carousel .carousel__controls.cols-md-6 > :is(a:first-child:nth-last-child(2),a:first-child:nth-last-child(3),a:first-child:nth-last-child(4),a:first-child:nth-last-child(5),a:first-child:nth-last-child(6)) {
222
- display: none;
223
- }
224
-
225
- // Hide buttons when not needed
226
- .carousel.hide-md-btns .carousel__wrapper > .btn {
227
- display: none;
228
- }
229
-
230
- .carousel.hide-md-btns .carousel__inner {
231
-
232
- margin-left: 0;
233
- margin-right: 0;
234
- }
1
+ @use "../_func" as *;
2
+
3
+ // #region default carousel
4
+ .carousel {
5
+ padding-bottom: 3rem;
6
+
7
+ .carousel__wrapper {
8
+
9
+ position: relative;
10
+ }
11
+
12
+ .carousel__inner {
13
+
14
+ --gutter-x: #{$grid-gutter-width};
15
+ overflow: auto;
16
+ scroll-snap-type: x mandatory;
17
+ margin-right: calc(var(--gutter-x) * -.5);
18
+ margin-left: calc(var(--gutter-x) * -.5);
19
+
20
+ > .row {
21
+ flex-wrap: nowrap;
22
+ margin: 0;
23
+
24
+ > .col {
25
+ padding-top: rem(36);
26
+ padding-bottom: rem(24);
27
+ scroll-snap-align: start;
28
+ scroll-padding: calc(var(--gutter-x) * -1);
29
+ }
30
+ }
31
+ }
32
+
33
+ .carousel__item > *:last-child {
34
+ margin-bottom: 0;
35
+ padding-bottom: 0;
36
+ }
37
+ }
38
+ // #endregion
39
+
40
+ // #region Remove the scrollbar
41
+ body.js-enabled .carousel__inner {
42
+ // FireFox
43
+ scrollbar-width: none;
44
+ // IE10+
45
+ -ms-overflow-style: none;
46
+ }
47
+
48
+ body.js-enabled .carousel__inner::-webkit-scrollbar {
49
+ // Chrome, Safari, Edge
50
+ display: none;
51
+ }
52
+ // #endregion
53
+
54
+ // #region carousel controls/pips
55
+ .carousel:not(.hide-controls) {
56
+ padding-bottom: 4.5rem!important;
57
+ }
58
+
59
+ .carousel.hide-controls .carousel__controls {
60
+ display: none;
61
+ }
62
+
63
+ .carousel .carousel__controls {
64
+ position: absolute;
65
+ text-align: center;
66
+ width: auto;
67
+ left: 0;
68
+ width: calc(100% + 2rem);
69
+ margin-left: -1rem;
70
+ margin-right: -1rem;
71
+ bottom: -3rem;
72
+
73
+ a {
74
+ width: 1rem;
75
+ height: 1rem;
76
+ min-height: 1rem;
77
+ border-radius: 50%;
78
+ text-indent: -50rem;
79
+ overflow: hidden;
80
+ background: currentColor;
81
+ padding: 0;
82
+ margin: 0 0.5rem 0.5rem 0.5rem;
83
+
84
+ &:before {
85
+ display: none;
86
+ }
87
+ }
88
+
89
+ a:first-child:last-child {
90
+ display: none;
91
+ }
92
+ }
93
+
94
+ .carousel .carousel__controls > a:nth-child(10) ~ a {
95
+
96
+ display: none;
97
+ }
98
+ // #endregion
99
+
100
+ // #region Carousel buttons
101
+ .carousel.hide-btns .carousel__wrapper > .btn {
102
+ display: none;
103
+ }
104
+
105
+ .carousel:not(.hide-btns) .carousel__inner {
106
+
107
+ margin-left: rem(28);
108
+ margin-right: rem(28);
109
+ }
110
+
111
+ .carousel .carousel__wrapper > .btn {
112
+ position: absolute;
113
+ top: 50%;
114
+ left: -1.25rem;
115
+ transform: translate(0,-50%);
116
+
117
+ &.btn-next {
118
+ left: auto;
119
+ right: -1.25rem;
120
+ }
121
+
122
+ @include media-breakpoint-up(md) {
123
+
124
+ margin-left: -1rem;
125
+ margin-right: -1rem;
126
+ }
127
+ }
128
+
129
+
130
+ // #endregion
131
+
132
+ .carousel .carousel__inner > .row > .col:first-child {
133
+ margin-left: 0!important;
134
+ }
135
+
136
+ @include media-breakpoint-up(sm) {
137
+
138
+ .carousel .carousel__controls > a:nth-child(10) ~ a {
139
+
140
+ display: inline-block;
141
+ }
142
+
143
+ .carousel .carousel__inner > .row[class*="row-cols-sm-"] > .col{
144
+ scroll-snap-align: unset;
145
+ }
146
+
147
+ .carousel .carousel__inner > .row-cols-sm-2 > .col:nth-child(odd),
148
+ .carousel .carousel__inner > .row-cols-sm-3 > .col:nth-child(3n+1),
149
+ .carousel .carousel__inner > .row-cols-sm-4 > .col:nth-child(4n+1),
150
+ .carousel .carousel__inner > .row-cols-sm-5 > .col:nth-child(5n+1),
151
+ .carousel .carousel__inner > .row-cols-sm-6 > .col:nth-child(6n+1) {
152
+ scroll-snap-align: start;
153
+
154
+ body:not(.js-enabled) & {
155
+ margin-left: 4rem;
156
+ }
157
+ }
158
+
159
+ .carousel .carousel__controls.cols-sm-2 > a:not(:nth-child(odd)),
160
+ .carousel .carousel__controls.cols-sm-3 > a:not(:nth-child(3n+1)),
161
+ .carousel .carousel__controls.cols-sm-4 > a:not(:nth-child(4n+1)),
162
+ .carousel .carousel__controls.cols-sm-5 > a:not(:nth-child(5n+1)),
163
+ .carousel .carousel__controls.cols-sm-6 > a:not(:nth-child(6n+1)) {
164
+ display: none;
165
+ }
166
+
167
+ // Make sure that we dont just have one pip showing
168
+ .carousel .carousel__controls.cols-sm-2 > a:first-child:nth-last-child(2),
169
+ .carousel .carousel__controls.cols-sm-3 > :is(a:first-child:nth-last-child(2), a:first-child:nth-last-child(3)),
170
+ .carousel .carousel__controls.cols-sm-4 > :is(a:first-child:nth-last-child(2), a:first-child:nth-last-child(3), a:first-child:nth-last-child(4)),
171
+ .carousel .carousel__controls.cols-sm-5 > :is(a:first-child:nth-last-child(2),a:first-child:nth-last-child(3),a:first-child:nth-last-child(4),a:first-child:nth-last-child(5)),
172
+ .carousel .carousel__controls.cols-sm-6 > :is(a:first-child:nth-last-child(2),a:first-child:nth-last-child(3),a:first-child:nth-last-child(4),a:first-child:nth-last-child(5),a:first-child:nth-last-child(6)) {
173
+ display: none;
174
+ }
175
+
176
+ // Hide buttons if not needed
177
+ .carousel.hide-sm-btns .carousel__wrapper > .btn {
178
+ display: none;
179
+ }
180
+
181
+ .carousel.hide-sm-btns .carousel__inner {
182
+
183
+ margin-left: 0;
184
+ margin-right: 0;
185
+ }
186
+ }
187
+
188
+ @include media-breakpoint-up(md) {
189
+
190
+ .carousel .carousel__inner > .row[class*="row-cols-md-"] > .col{
191
+ scroll-snap-align: unset;
192
+ margin-left: 0;
193
+ }
194
+
195
+ .carousel .carousel__inner > .row-cols-md-2 > .col:nth-child(odd),
196
+ .carousel .carousel__inner > .row-cols-md-3 > .col:nth-child(3n+1),
197
+ .carousel .carousel__inner > .row-cols-md-4 > .col:nth-child(4n+1),
198
+ .carousel .carousel__inner > .row-cols-md-5 > .col:nth-child(5n+1),
199
+ .carousel .carousel__inner > .row-cols-md-6 > .col:nth-child(6n+1) {
200
+ scroll-snap-align: start;
201
+
202
+ body:not(.js-enabled) & {
203
+
204
+ margin-left: calc(50vw);
205
+ }
206
+ }
207
+
208
+ .carousel .carousel__controls.cols-md-2 > a:not(:nth-child(odd)),
209
+ .carousel .carousel__controls.cols-md-3 > a:not(:nth-child(3n+1)),
210
+ .carousel .carousel__controls.cols-md-4 > a:not(:nth-child(4n+1)),
211
+ .carousel .carousel__controls.cols-md-5 > a:not(:nth-child(5n+1)),
212
+ .carousel .carousel__controls.cols-md-6 > a:not(:nth-child(6n+1)) {
213
+ display: none;
214
+ }
215
+
216
+ // Make sure that we dont just have one pip showing
217
+ .carousel .carousel__controls.cols-md-2 > a:first-child:nth-last-child(2),
218
+ .carousel .carousel__controls.cols-md-3 > :is(a:first-child:nth-last-child(2), a:first-child:nth-last-child(3)),
219
+ .carousel .carousel__controls.cols-md-4 > :is(a:first-child:nth-last-child(2), a:first-child:nth-last-child(3), a:first-child:nth-last-child(4)),
220
+ .carousel .carousel__controls.cols-md-5 > :is(a:first-child:nth-last-child(2),a:first-child:nth-last-child(3),a:first-child:nth-last-child(4),a:first-child:nth-last-child(5)),
221
+ .carousel .carousel__controls.cols-md-6 > :is(a:first-child:nth-last-child(2),a:first-child:nth-last-child(3),a:first-child:nth-last-child(4),a:first-child:nth-last-child(5),a:first-child:nth-last-child(6)) {
222
+ display: none;
223
+ }
224
+
225
+ // Hide buttons when not needed
226
+ .carousel.hide-md-btns .carousel__wrapper > .btn {
227
+ display: none;
228
+ }
229
+
230
+ .carousel.hide-md-btns .carousel__inner {
231
+
232
+ margin-left: 0;
233
+ margin-right: 0;
234
+ }
235
235
  }