@iamproperty/components 2.7.9 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (172) hide show
  1. package/README.md +16 -137
  2. package/assets/css/core.min.css +1 -1
  3. package/assets/css/core.min.css.map +1 -1
  4. package/assets/css/email.min.css +1 -1
  5. package/assets/css/email.min.css.map +1 -1
  6. package/assets/css/error.min.css +1 -1
  7. package/assets/css/error.min.css.map +1 -1
  8. package/assets/css/style.min.css +1 -1
  9. package/assets/css/style.min.css.map +1 -1
  10. package/assets/favicons/manifest.json +32 -0
  11. package/assets/js/main.js +57 -78
  12. package/assets/js/modules/accordion.js +32 -36
  13. package/assets/js/modules/alert.js +56 -56
  14. package/assets/js/modules/carousel.js +101 -101
  15. package/assets/js/modules/chart.js +218 -217
  16. package/assets/js/modules/drawer.js +15 -15
  17. package/assets/js/modules/form.js +158 -158
  18. package/assets/js/modules/helpers.js +119 -119
  19. package/assets/js/modules/modal.js +89 -89
  20. package/assets/js/modules/nav.js +28 -27
  21. package/assets/js/modules/table.js +585 -585
  22. package/assets/js/modules/testimonial.js +82 -82
  23. package/assets/js/modules/youtubevideo.js +145 -145
  24. package/assets/js/scripts.bundle.js +174 -102
  25. package/assets/js/scripts.bundle.js.map +1 -1
  26. package/assets/js/scripts.bundle.min.js +2 -2
  27. package/assets/js/scripts.bundle.min.js.map +1 -1
  28. package/assets/sass/_components.scss +14 -14
  29. package/assets/sass/_corefiles.scss +40 -40
  30. package/assets/sass/_fonts.scss +16 -16
  31. package/assets/sass/_forms.scss +9 -9
  32. package/assets/sass/_func.scss +12 -10
  33. package/assets/sass/_functions/functions.scss +141 -141
  34. package/assets/sass/_functions/mixins.scss +170 -170
  35. package/assets/sass/_functions/utilities.scss +250 -250
  36. package/assets/sass/_functions/variables.scss +467 -462
  37. package/assets/sass/_print.scss +61 -61
  38. package/assets/sass/_tests/colours.spec.scss +45 -0
  39. package/assets/sass/_tests/func.spec.scss +233 -0
  40. package/assets/sass/_tests/mixins.spec.scss +194 -0
  41. package/assets/sass/_tests/sass.spec.js +9 -0
  42. package/assets/sass/_tests/typography.spec.scss +36 -0
  43. package/assets/sass/components/accordion.scss +197 -197
  44. package/assets/sass/components/alert.scss +98 -98
  45. package/assets/sass/components/cardDeck.scss +107 -107
  46. package/assets/sass/components/carousel.scss +234 -234
  47. package/assets/sass/components/charts.scss +569 -569
  48. package/assets/sass/components/drawer.scss +46 -46
  49. package/assets/sass/components/header.scss +63 -63
  50. package/assets/sass/components/modal.scss +136 -136
  51. package/assets/sass/components/nav.scss +919 -820
  52. package/assets/sass/components/property-searchbar.scss +143 -143
  53. package/assets/sass/components/snapshot.scss +70 -70
  54. package/assets/sass/components/stepper.scss +164 -164
  55. package/assets/sass/components/tabs.scss +87 -87
  56. package/assets/sass/components/testimonial.scss +132 -132
  57. package/assets/sass/components/timeline.scss +95 -95
  58. package/assets/sass/core.scss +6 -6
  59. package/assets/sass/elements/buttons.scss +209 -209
  60. package/assets/sass/elements/card.scss +177 -177
  61. package/assets/sass/elements/container.scss +225 -225
  62. package/assets/sass/elements/forms.scss +194 -194
  63. package/assets/sass/elements/links.scss +96 -96
  64. package/assets/sass/elements/lists.scss +112 -112
  65. package/assets/sass/elements/panel.scss +161 -161
  66. package/assets/sass/elements/tables.scss +290 -290
  67. package/assets/sass/elements/tooltips.scss +84 -84
  68. package/assets/sass/elements/type.scss +136 -136
  69. package/assets/sass/email.scss +65 -65
  70. package/assets/sass/error.scss +4 -4
  71. package/assets/sass/foundations/brand.scss +72 -72
  72. package/assets/sass/foundations/circles.scss +74 -74
  73. package/assets/sass/foundations/icons.scss +72 -72
  74. package/assets/sass/foundations/media.scss +50 -50
  75. package/assets/sass/foundations/reboot.scss +130 -130
  76. package/assets/sass/foundations/root.scss +106 -104
  77. package/assets/sass/main.scss +7 -7
  78. package/assets/svg/icons.svg +598 -588
  79. package/assets/svg/logo.svg +42 -42
  80. package/assets/ts/main.js +57 -0
  81. package/assets/ts/main.js.map +1 -0
  82. package/assets/ts/main.ts +68 -0
  83. package/assets/ts/modules/accordion.js +33 -0
  84. package/assets/ts/modules/accordion.js.map +1 -0
  85. package/assets/ts/modules/accordion.ts +43 -0
  86. package/dist/components.es.js +2504 -0
  87. package/dist/components.umd.js +56 -3760
  88. package/dist/style.css +1 -0
  89. package/package.json +108 -103
  90. package/src/components/Accordion/Accordion.screenshot.vue +57 -0
  91. package/src/components/Accordion/Accordion.spec.js +63 -0
  92. package/src/components/Accordion/Accordion.vue +22 -22
  93. package/src/components/Accordion/AccordionItem.vue +52 -52
  94. package/src/components/Accordion/README.md +34 -34
  95. package/src/components/Accordion/__screenshots__/win32/laptop/Accordion.png +0 -0
  96. package/src/components/Accordion/__screenshots__/win32/mobile/Accordion.png +0 -0
  97. package/src/components/Accordion/__screenshots__/win32/tablet/Accordion.png +0 -0
  98. package/src/components/Alert/Alert.spec.js +49 -0
  99. package/src/components/Alert/Alert.vue +39 -39
  100. package/src/components/Alert/README.md +28 -28
  101. package/src/components/Banner/Banner.spec.js +28 -0
  102. package/src/components/Banner/Banner.vue +38 -38
  103. package/src/components/Banner/README.md +23 -23
  104. package/src/components/CardDeck/CardDeck.spec.js +99 -0
  105. package/src/components/CardDeck/CardDeck.vue +77 -77
  106. package/src/components/CardDeck/README.md +24 -24
  107. package/src/components/Carousel/Carousel.spec.js +45 -0
  108. package/src/components/Carousel/Carousel.vue +85 -85
  109. package/src/components/Carousel/README.md +19 -19
  110. package/src/components/Chart/Chart.spec.js +201 -0
  111. package/src/components/Chart/Chart.vue +88 -88
  112. package/src/components/Chart/README.md +17 -17
  113. package/src/components/Drawer/Drawer.vue +53 -53
  114. package/src/components/Drawer/README.md +22 -22
  115. package/src/components/Header/Header.spec.js +33 -0
  116. package/src/components/Header/Header.vue +38 -38
  117. package/src/components/Header/README.md +27 -27
  118. package/src/components/Modal/Modal.spec.js +22 -0
  119. package/src/components/Modal/Modal.vue +43 -43
  120. package/src/components/Modal/README.md +19 -19
  121. package/src/components/Nav/Nav.spec.js +35 -0
  122. package/src/components/Nav/Nav.vue +215 -189
  123. package/src/components/Nav/README.md +22 -22
  124. package/src/components/NoteFeed/NoteFeed.vue +79 -79
  125. package/src/components/NoteFeed/README.md +16 -16
  126. package/src/components/PropertySearchbar/PropertySearchbar.vue +204 -204
  127. package/src/components/PropertySearchbar/README.md +25 -25
  128. package/src/components/Snapshot/README.md +20 -20
  129. package/src/components/Snapshot/Snapshot.vue +32 -32
  130. package/src/components/Stepper/README.md +32 -32
  131. package/src/components/Stepper/Step.vue +28 -28
  132. package/src/components/Stepper/Stepper.spec.js +99 -0
  133. package/src/components/Stepper/Stepper.vue +33 -33
  134. package/src/components/Tabs/README.md +27 -27
  135. package/src/components/Tabs/Tab.vue +32 -26
  136. package/src/components/Tabs/Tabs.vue +77 -75
  137. package/src/components/Testimonial/README.md +25 -25
  138. package/src/components/Testimonial/Testimonial.spec.js +57 -0
  139. package/src/components/Testimonial/Testimonial.vue +60 -60
  140. package/src/components/Timeline/README.md +18 -18
  141. package/src/components/Timeline/Timeline.spec.js +17 -0
  142. package/src/components/Timeline/Timeline.vue +24 -24
  143. package/src/elements/Card/Card.vue +113 -113
  144. package/src/elements/Card/README.md +24 -24
  145. package/src/elements/FileUploads/FileUploads.vue +48 -48
  146. package/src/elements/FileUploads/README.md +24 -24
  147. package/src/elements/Input/Input.vue +268 -268
  148. package/src/elements/Input/README.md +19 -19
  149. package/src/elements/Table/README.md +62 -62
  150. package/src/elements/Table/Table.spec.js +90 -0
  151. package/src/elements/Table/Table.vue +129 -129
  152. package/src/foundations/Icon/Icon.spec.js +24 -0
  153. package/src/foundations/Icon/Icon.vue +24 -24
  154. package/src/foundations/Icon/README.md +11 -11
  155. package/src/foundations/Logo/Logo.spec.js +56 -0
  156. package/src/foundations/Logo/Logo.vue +39 -39
  157. package/src/foundations/Logo/README.md +20 -20
  158. package/src/foundations/YoutubeVideo/README.md +11 -11
  159. package/src/foundations/YoutubeVideo/YoutubeVideo.vue +24 -24
  160. package/src/helpers/strings.js +12 -12
  161. package/src/index.js +27 -27
  162. package/src/vue-shim.d.ts +6 -0
  163. package/assets/.DS_Store +0 -0
  164. package/dist/components.common.js +0 -3749
  165. package/dist/components.common.js.map +0 -1
  166. package/dist/components.css +0 -2
  167. package/dist/components.css.map +0 -1
  168. package/dist/components.umd.js.map +0 -1
  169. package/dist/components.umd.min.js +0 -2
  170. package/dist/components.umd.min.js.map +0 -1
  171. package/dist/demo.html +0 -1
  172. package/src/.DS_Store +0 -0
@@ -1,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(--bs-gutter-y) var(--bs-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
- --bs-gutter-x: #{$grid-gutter-width};
15
- overflow: auto;
16
- scroll-snap-type: x mandatory;
17
- margin-right: calc(var(--bs-gutter-x) * -.5);
18
- margin-left: calc(var(--bs-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(--bs-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;
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;
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
  }