sfc-utils 1.4.9 → 1.4.10

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.
@@ -33,6 +33,8 @@ const ImageSlideshow = ({ wcmData, imageList, altList, topperStyle, isLayoutInve
33
33
  case "stacked":
34
34
  case "full-screen":
35
35
  return styles.containerStacked;
36
+ case "small-visual":
37
+ return styles.containerSmallVisual;
36
38
  default:
37
39
  return "";
38
40
  }
@@ -48,6 +50,8 @@ const ImageSlideshow = ({ wcmData, imageList, altList, topperStyle, isLayoutInve
48
50
  return styles.imageWrapperSideBySide;
49
51
  case "side-by-side-portrait":
50
52
  return styles.imageWrapperSideBySidePortrait;
53
+ case "small-visual":
54
+ return styles.imageWrapperSmallVisual;
51
55
  default:
52
56
  return "";
53
57
  }
@@ -27,6 +27,8 @@ const Topper2 = ({ settings, wcmData, mods }) => {
27
27
  case "stacked":
28
28
  case "no-visual":
29
29
  return [topperStyles.headerDekStacked, " mw-lg mt-lg mb-md"];
30
+ case "small-visual":
31
+ return [topperStyles.headerDekStacked, " mw-lg mt-sm mb-md"];
30
32
  case "full-screen":
31
33
  // Check if css ":root" is accessible
32
34
  if (typeof window != "undefined") {
@@ -74,6 +76,7 @@ const Topper2 = ({ settings, wcmData, mods }) => {
74
76
  let defaultStyles = [];
75
77
  switch (Topper_Style) {
76
78
  case "stacked":
79
+ case "small-visual":
77
80
  defaultStyles = [];
78
81
  break;
79
82
  case "no-visual":
@@ -100,6 +103,7 @@ const Topper2 = ({ settings, wcmData, mods }) => {
100
103
  const deckStyleList = () => {
101
104
  switch (Topper_Style) {
102
105
  case "stacked":
106
+ case "small-visual":
103
107
  return ["deck"];
104
108
  case "no-visual":
105
109
  return ["deck left"];
@@ -178,14 +182,13 @@ const Topper2 = ({ settings, wcmData, mods }) => {
178
182
 
179
183
  switch (Topper_Style) {
180
184
  case "stacked":
185
+ case "side-by-side":
186
+ case "small-visual":
181
187
  videoCss = topperStyles.videoStacked;
182
188
  break;
183
189
  case "full-screen":
184
190
  videoCss = topperStyles.videoFullscreen;
185
191
  break;
186
- case "side-by-side":
187
- videoCss = topperStyles.videoStacked;
188
- break;
189
192
  case "side-by-side-portrait":
190
193
  videoCss = `${topperStyles.videoSideBySidePortrait} ${sideBySidePortraitFloatCss()}`;
191
194
  break;
@@ -236,6 +239,16 @@ const Topper2 = ({ settings, wcmData, mods }) => {
236
239
  imageCssList={[imageStyles.cImgFullscreen]}
237
240
  />
238
241
  )
242
+ case "small-visual":
243
+ return (
244
+ <TopperImage
245
+ wcm={Image}
246
+ alt={Image_Alt}
247
+ wcmData={wcmData}
248
+ containerCssList={[imageStyles.cContainerSmallVisual]}
249
+ imageCssList={[imageStyles.cImgSmallVisual]}
250
+ />
251
+ )
239
252
  case "side-by-side":
240
253
  return (
241
254
  <TopperImage
@@ -339,6 +352,29 @@ const Topper2 = ({ settings, wcmData, mods }) => {
339
352
  </>
340
353
  );
341
354
 
355
+ case "small-visual":
356
+ return (
357
+ <>
358
+ <div>
359
+ <figure className={`mw-xl ml-auto mr-auto ${topperStyles.imageSmallVisual}`}>
360
+ {getMediaHTML(isSlideshow(wcmIdList))}
361
+ </figure>
362
+ <div className={headerDekStyleList().join('')}>
363
+ <Heading
364
+ level={1}
365
+ text={Title}
366
+ className={headerStyleList().join(' ')}
367
+ />
368
+ <Heading
369
+ level={2}
370
+ text={Deck}
371
+ className={deckStyleList().join(' ')}
372
+ />
373
+ </div>
374
+ </div>
375
+ </>
376
+ );
377
+
342
378
  case "no-visual":
343
379
  return (
344
380
  <>
@@ -61,6 +61,7 @@ const TopperImage = ({ wcm, alt, ratio, wcmData, containerCssList = [], imageCss
61
61
  // This calculation is not used for the topper impl, but keeping it here just in case
62
62
  // it is needed for the general WCMImage utils migration
63
63
  let photoRatio = "56.25%"; // Default to 16/9
64
+ let photoFraction = 0.5625;
64
65
  let photoViewport = "56.25vw";
65
66
  let fullPath = `https://s.hdnux.com/photos/0/0/0/${wcm}/0/`;
66
67
  if (!ratio) {
@@ -74,11 +75,13 @@ const TopperImage = ({ wcm, alt, ratio, wcmData, containerCssList = [], imageCss
74
75
  // Set ratio of the actual photo like a legit hacker
75
76
  photoRatio = (matchedPhoto.photo.ratio * 100) + "%";
76
77
  photoViewport = (matchedPhoto.photo.ratio * 50) + "vw";
78
+ photoFraction = (parseFloat(matchedPhoto.photo.ratio));
77
79
 
78
80
  // If css :root is available, set the photo ratio
79
81
  if (r) {
80
82
  r.style.setProperty('--img-bottom-padding-ratio', photoRatio);
81
83
  r.style.setProperty('--img-height-viewport', photoViewport);
84
+ r.style.setProperty('--img-bottom-padding-fraction', photoFraction);
82
85
  }
83
86
 
84
87
  fullPath = matchedPhoto.photo.full_path;
@@ -94,6 +97,7 @@ const TopperImage = ({ wcm, alt, ratio, wcmData, containerCssList = [], imageCss
94
97
  if (r) {
95
98
  r.style.setProperty('--img-bottom-padding-ratio', photoRatio);
96
99
  r.style.setProperty('--img-height-viewport', photoViewport);
100
+ r.style.setProperty('--img-bottom-padding-fraction', photoFraction);
97
101
  }
98
102
  }
99
103
 
@@ -112,7 +116,7 @@ const TopperImage = ({ wcm, alt, ratio, wcmData, containerCssList = [], imageCss
112
116
  TopperImage.propTypes = {
113
117
  wcm: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,
114
118
  alt: PropTypes.string.isRequired,
115
- ratio: PropTypes.string, // This prop is currently not being used, might be ok to delete?
119
+ ratio: PropTypes.string,
116
120
  wcmData: PropTypes.object,
117
121
  containerCssList: PropTypes.array,
118
122
  imageCssList: PropTypes.array
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sfc-utils",
3
- "version": "1.4.9",
3
+ "version": "1.4.10",
4
4
  "author": "ewagstaff <evanjwagstaff@gmail.com>",
5
5
  "dependencies": {
6
6
  "archieml": "^0.4.2",
@@ -34,6 +34,11 @@
34
34
  }
35
35
  }
36
36
 
37
+ .container-small-visual {
38
+ width: 150px;
39
+ height: calc(150px*2/3);
40
+ }
41
+
37
42
  .image-wrapper-stacked {
38
43
  position: absolute;
39
44
  width: 100%;
@@ -61,6 +66,12 @@
61
66
  }
62
67
  }
63
68
 
69
+ .image-wrapper-small-visual {
70
+ position: absolute;
71
+ width: 150px;
72
+ height: calc(150px*2/3)
73
+ }
74
+
64
75
  .image-wrapper-side-by-side-portrait {
65
76
  position: absolute;
66
77
  width: calc(90vh*2/3);
@@ -74,6 +74,16 @@
74
74
  }
75
75
  }
76
76
 
77
+ .imageSmallVisual {
78
+ position: relative;
79
+ max-width: 150px;
80
+ margin: @s24 auto 0 auto;
81
+
82
+ @media @mobile {
83
+ margin-left: @s16;
84
+ }
85
+ }
86
+
77
87
  .imageSideBySide {
78
88
  width: 50%;
79
89
  float: left;
@@ -4,6 +4,7 @@
4
4
  :root {
5
5
  --img-bottom-padding-ratio: "56.25%";
6
6
  --img-height-viewport: "56.25vw";
7
+ --img-bottom-padding-fraction: 0.5625;
7
8
  }
8
9
 
9
10
  .c-force-aspect-ratio {
@@ -68,6 +69,11 @@
68
69
  padding-bottom: var(--img-bottom-padding-ratio);
69
70
  }
70
71
 
72
+ .c-container-small-visual {
73
+ height: calc(var(--img-bottom-padding-fraction)*150px);
74
+ width: 150px;
75
+ }
76
+
71
77
  .c-img {
72
78
  display: block;
73
79
  position: relative;
@@ -97,6 +103,12 @@
97
103
  }
98
104
  }
99
105
 
106
+ .c-img-small-visual {
107
+ display: block;
108
+ position: absolute;
109
+ padding: 0;
110
+ }
111
+
100
112
  .c-container-side-by-side {
101
113
  height: 100%;
102
114
  }