@universityofmaryland/web-elements-library 1.6.17 → 1.7.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 (195) hide show
  1. package/README.md +1 -1
  2. package/dist/atomic/animations/brand/card-stack.js +2 -3
  3. package/dist/atomic/animations/brand/card-stack.js.map +1 -1
  4. package/dist/atomic/animations/brand/chevron-flow.d.ts +1 -7
  5. package/dist/atomic/animations/brand/chevron-flow.d.ts.map +1 -1
  6. package/dist/atomic/animations/brand/chevron-flow.js +82 -159
  7. package/dist/atomic/animations/brand/chevron-flow.js.map +1 -1
  8. package/dist/atomic/animations/brand/chevron-scroll.d.ts +1 -4
  9. package/dist/atomic/animations/brand/chevron-scroll.d.ts.map +1 -1
  10. package/dist/atomic/animations/brand/chevron-scroll.js +89 -143
  11. package/dist/atomic/animations/brand/chevron-scroll.js.map +1 -1
  12. package/dist/atomic/assets/image/caption.d.ts +9 -0
  13. package/dist/atomic/assets/image/caption.d.ts.map +1 -0
  14. package/dist/atomic/assets/image/caption.js +166 -0
  15. package/dist/atomic/assets/image/caption.js.map +1 -0
  16. package/dist/atomic/assets/image/gif.d.ts.map +1 -1
  17. package/dist/atomic/assets/image/gif.js +6 -1
  18. package/dist/atomic/assets/image/gif.js.map +1 -1
  19. package/dist/atomic/assets/image/index.d.ts +1 -0
  20. package/dist/atomic/assets/image/index.d.ts.map +1 -1
  21. package/dist/atomic/assets/image/index.js +2 -0
  22. package/dist/atomic/assets/image/index.js.map +1 -1
  23. package/dist/atomic/assets/video/toggle.d.ts.map +1 -1
  24. package/dist/atomic/assets/video/toggle.js +9 -2
  25. package/dist/atomic/assets/video/toggle.js.map +1 -1
  26. package/dist/atomic/buttons/fullscreen.d.ts +1 -0
  27. package/dist/atomic/buttons/fullscreen.d.ts.map +1 -1
  28. package/dist/atomic/buttons/fullscreen.js +35 -3
  29. package/dist/atomic/buttons/fullscreen.js.map +1 -1
  30. package/dist/atomic/layout/overlay/modal.d.ts +1 -10
  31. package/dist/atomic/layout/overlay/modal.d.ts.map +1 -1
  32. package/dist/atomic/layout/overlay/modal.js +28 -44
  33. package/dist/atomic/layout/overlay/modal.js.map +1 -1
  34. package/dist/atomic/layout/person/columns.js +2 -3
  35. package/dist/atomic/layout/person/columns.js.map +1 -1
  36. package/dist/atomic/text-lockup/date.d.ts +1 -4
  37. package/dist/atomic/text-lockup/date.d.ts.map +1 -1
  38. package/dist/atomic/text-lockup/date.js +42 -75
  39. package/dist/atomic/text-lockup/date.js.map +1 -1
  40. package/dist/composite/accordion/item.d.ts +3 -16
  41. package/dist/composite/accordion/item.d.ts.map +1 -1
  42. package/dist/composite/accordion/item.js +152 -245
  43. package/dist/composite/accordion/item.js.map +1 -1
  44. package/dist/composite/card/block.js +2 -3
  45. package/dist/composite/card/block.js.map +1 -1
  46. package/dist/composite/card/event-time.js +2 -3
  47. package/dist/composite/card/event-time.js.map +1 -1
  48. package/dist/composite/card/list.js +2 -3
  49. package/dist/composite/card/list.js.map +1 -1
  50. package/dist/composite/card/overlay/color.js +3 -3
  51. package/dist/composite/card/overlay/icon.js +3 -3
  52. package/dist/composite/card/overlay/image.d.ts.map +1 -1
  53. package/dist/composite/card/overlay/image.js +9 -12
  54. package/dist/composite/card/overlay/image.js.map +1 -1
  55. package/dist/composite/card/video/block.js +4 -3
  56. package/dist/composite/card/video/block.js.map +1 -1
  57. package/dist/composite/carousel/cards/index.d.ts +1 -8
  58. package/dist/composite/carousel/cards/index.d.ts.map +1 -1
  59. package/dist/composite/carousel/cards/index.js +163 -282
  60. package/dist/composite/carousel/cards/index.js.map +1 -1
  61. package/dist/composite/carousel/default/index.d.ts +9 -15
  62. package/dist/composite/carousel/default/index.d.ts.map +1 -1
  63. package/dist/composite/carousel/default/index.js +78 -129
  64. package/dist/composite/carousel/default/index.js.map +1 -1
  65. package/dist/composite/carousel/elements/equal-width-items.d.ts +37 -0
  66. package/dist/composite/carousel/elements/equal-width-items.d.ts.map +1 -0
  67. package/dist/composite/carousel/elements/{blocks.js → equal-width-items.js} +157 -227
  68. package/dist/composite/carousel/elements/equal-width-items.js.map +1 -0
  69. package/dist/composite/carousel/elements/full-screen.d.ts +3 -2
  70. package/dist/composite/carousel/elements/full-screen.d.ts.map +1 -1
  71. package/dist/composite/carousel/elements/full-screen.js +34 -41
  72. package/dist/composite/carousel/elements/full-screen.js.map +1 -1
  73. package/dist/composite/carousel/elements/image.d.ts +15 -2
  74. package/dist/composite/carousel/elements/image.d.ts.map +1 -1
  75. package/dist/composite/carousel/elements/image.js +176 -151
  76. package/dist/composite/carousel/elements/image.js.map +1 -1
  77. package/dist/composite/carousel/elements/index.d.ts +4 -1
  78. package/dist/composite/carousel/elements/index.d.ts.map +1 -1
  79. package/dist/composite/carousel/elements/indicator-wrapper.d.ts +13 -0
  80. package/dist/composite/carousel/elements/indicator-wrapper.d.ts.map +1 -0
  81. package/dist/composite/carousel/elements/indicator-wrapper.js +67 -0
  82. package/dist/composite/carousel/elements/indicator-wrapper.js.map +1 -0
  83. package/dist/composite/carousel/elements/nav-button.d.ts +82 -0
  84. package/dist/composite/carousel/elements/nav-button.d.ts.map +1 -0
  85. package/dist/composite/carousel/elements/nav-button.js +164 -0
  86. package/dist/composite/carousel/elements/nav-button.js.map +1 -0
  87. package/dist/composite/carousel/elements/overlay.d.ts +3 -2
  88. package/dist/composite/carousel/elements/overlay.d.ts.map +1 -1
  89. package/dist/composite/carousel/elements/overlay.js +85 -55
  90. package/dist/composite/carousel/elements/overlay.js.map +1 -1
  91. package/dist/composite/carousel/image/multiple.d.ts +2 -7
  92. package/dist/composite/carousel/image/multiple.d.ts.map +1 -1
  93. package/dist/composite/carousel/image/multiple.js +85 -150
  94. package/dist/composite/carousel/image/multiple.js.map +1 -1
  95. package/dist/composite/carousel/image/standard.d.ts +2 -7
  96. package/dist/composite/carousel/image/standard.d.ts.map +1 -1
  97. package/dist/composite/carousel/image/standard.js +148 -262
  98. package/dist/composite/carousel/image/standard.js.map +1 -1
  99. package/dist/composite/carousel/thumbnail/index.d.ts +1 -8
  100. package/dist/composite/carousel/thumbnail/index.d.ts.map +1 -1
  101. package/dist/composite/carousel/thumbnail/index.js +72 -113
  102. package/dist/composite/carousel/thumbnail/index.js.map +1 -1
  103. package/dist/composite/carousel/wide/container.d.ts +21 -20
  104. package/dist/composite/carousel/wide/container.d.ts.map +1 -1
  105. package/dist/composite/carousel/wide/container.js +37 -12
  106. package/dist/composite/carousel/wide/container.js.map +1 -1
  107. package/dist/composite/carousel/wide/controls.d.ts +5 -10
  108. package/dist/composite/carousel/wide/controls.d.ts.map +1 -1
  109. package/dist/composite/carousel/wide/controls.js +24 -94
  110. package/dist/composite/carousel/wide/controls.js.map +1 -1
  111. package/dist/composite/carousel/wide/frames.d.ts +18 -10
  112. package/dist/composite/carousel/wide/frames.d.ts.map +1 -1
  113. package/dist/composite/carousel/wide/frames.js +60 -78
  114. package/dist/composite/carousel/wide/frames.js.map +1 -1
  115. package/dist/composite/carousel/wide/index.d.ts.map +1 -1
  116. package/dist/composite/carousel/wide/index.js +11 -19
  117. package/dist/composite/carousel/wide/index.js.map +1 -1
  118. package/dist/composite/hero/custom/expand.js +3 -4
  119. package/dist/composite/hero/custom/expand.js.map +1 -1
  120. package/dist/composite/hero/custom/grid.js +2 -3
  121. package/dist/composite/hero/custom/grid.js.map +1 -1
  122. package/dist/composite/hero/custom/video-arrow.js +4 -3
  123. package/dist/composite/hero/custom/video-arrow.js.map +1 -1
  124. package/dist/composite/hero/logo.js +3 -3
  125. package/dist/composite/hero/minimal.js +3 -3
  126. package/dist/composite/hero/overlay.js +5 -4
  127. package/dist/composite/hero/overlay.js.map +1 -1
  128. package/dist/composite/hero/stacked.js +3 -3
  129. package/dist/composite/hero/standard.js +4 -3
  130. package/dist/composite/hero/standard.js.map +1 -1
  131. package/dist/composite/layout/box/logo.d.ts +1 -4
  132. package/dist/composite/layout/box/logo.d.ts.map +1 -1
  133. package/dist/composite/layout/box/logo.js +55 -103
  134. package/dist/composite/layout/box/logo.js.map +1 -1
  135. package/dist/composite/layout/image/expand.d.ts +1 -4
  136. package/dist/composite/layout/image/expand.d.ts.map +1 -1
  137. package/dist/composite/layout/image/expand.js +136 -243
  138. package/dist/composite/layout/image/expand.js.map +1 -1
  139. package/dist/composite/layout/scroll-top/index.d.ts +1 -7
  140. package/dist/composite/layout/scroll-top/index.d.ts.map +1 -1
  141. package/dist/composite/layout/scroll-top/index.js +65 -77
  142. package/dist/composite/layout/scroll-top/index.js.map +1 -1
  143. package/dist/composite/layout/sticky-columns/index.d.ts +2 -2
  144. package/dist/composite/layout/sticky-columns/index.d.ts.map +1 -1
  145. package/dist/composite/layout/sticky-columns/index.js +42 -70
  146. package/dist/composite/layout/sticky-columns/index.js.map +1 -1
  147. package/dist/composite/media/elements/gif.js +3 -3
  148. package/dist/composite/media/inline/caption.d.ts +4 -2
  149. package/dist/composite/media/inline/caption.d.ts.map +1 -1
  150. package/dist/composite/media/inline/caption.js +56 -67
  151. package/dist/composite/media/inline/caption.js.map +1 -1
  152. package/dist/composite/media/inline/index.d.ts +9 -8
  153. package/dist/composite/media/inline/index.d.ts.map +1 -1
  154. package/dist/composite/media/inline/standard.d.ts +1 -4
  155. package/dist/composite/media/inline/standard.d.ts.map +1 -1
  156. package/dist/composite/media/inline/standard.js +16 -24
  157. package/dist/composite/media/inline/standard.js.map +1 -1
  158. package/dist/composite/media/inline/wrapped.d.ts +4 -2
  159. package/dist/composite/media/inline/wrapped.d.ts.map +1 -1
  160. package/dist/composite/media/inline/wrapped.js +80 -83
  161. package/dist/composite/media/inline/wrapped.js.map +1 -1
  162. package/dist/composite/navigation/utility/alert.js +3 -4
  163. package/dist/composite/navigation/utility/alert.js.map +1 -1
  164. package/dist/composite/pathway/_common.js +4 -3
  165. package/dist/composite/pathway/_common.js.map +1 -1
  166. package/dist/composite/pathway/hero.js +3 -3
  167. package/dist/composite/person/bio/full.js +3 -3
  168. package/dist/composite/person/bio/small.js +2 -3
  169. package/dist/composite/person/bio/small.js.map +1 -1
  170. package/dist/composite/person/block.js +2 -3
  171. package/dist/composite/person/block.js.map +1 -1
  172. package/dist/composite/person/hero.js +3 -3
  173. package/dist/composite/person/list.js +2 -3
  174. package/dist/composite/person/list.js.map +1 -1
  175. package/dist/composite/person/tabular.js +2 -3
  176. package/dist/composite/person/tabular.js.map +1 -1
  177. package/dist/composite/slider/events.d.ts +6 -12
  178. package/dist/composite/slider/events.d.ts.map +1 -1
  179. package/dist/composite/slider/events.js +304 -428
  180. package/dist/composite/slider/events.js.map +1 -1
  181. package/dist/layout/image.d.ts +5 -10
  182. package/dist/layout/image.d.ts.map +1 -1
  183. package/dist/layout/image.js +27 -88
  184. package/dist/layout/image.js.map +1 -1
  185. package/dist/layout/index.d.ts +1 -1
  186. package/dist/layout/index.d.ts.map +1 -1
  187. package/dist/layout.js +2 -2
  188. package/package.json +6 -6
  189. package/dist/composite/carousel/elements/blocks.d.ts +0 -42
  190. package/dist/composite/carousel/elements/blocks.d.ts.map +0 -1
  191. package/dist/composite/carousel/elements/blocks.js.map +0 -1
  192. package/dist/composite/carousel/wide/_elementModel.d.ts +0 -18
  193. package/dist/composite/carousel/wide/_elementModel.d.ts.map +0 -1
  194. package/dist/composite/carousel/wide/_elementModel.js +0 -29
  195. package/dist/composite/carousel/wide/_elementModel.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"overlay.js","sources":["../../../../source/composite/carousel/elements/overlay.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-token-library';\nimport * as carouselElements from '../elements';\nimport { Image as LayoutImage } from 'layout';\n\nconst ELEMENT_CAROUSEL_OVERLAY_COINTAINER = 'carousel-overlay-container';\n\n// prettier-ignore\nconst OverlayImageContainerStyles = `\n .${ELEMENT_CAROUSEL_OVERLAY_COINTAINER} {\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: ${token.color.gray.dark};\n }\n\n .${ELEMENT_CAROUSEL_OVERLAY_COINTAINER} img {\n object-fit: contain;\n max-height: 100%;\n }\n`;\n\n// prettier-ignore\nconst STYLES_CAROUSEL_OVERLAY_ELEMENT = `\n ${LayoutImage.Styles}\n ${OverlayImageContainerStyles}\n`;\n\nconst CreateOverlaySlide = ({ images }: { images: HTMLImageElement[] }) =>\n images.map((image) => {\n const slide = document.createElement('div');\n const imageContainer = document.createElement('div');\n const imageBlock = LayoutImage.CreateElement({\n image,\n showCaption: true,\n });\n\n imageContainer.classList.add(ELEMENT_CAROUSEL_OVERLAY_COINTAINER);\n imageContainer.appendChild(imageBlock);\n\n slide.appendChild(imageContainer);\n\n return slide;\n });\n\nexport const createCompositeCarouselOverlay = ({ images }: { images: HTMLImageElement[] }) =>\n (() => {\n let styles = STYLES_CAROUSEL_OVERLAY_ELEMENT;\n\n const setFullScreen = (index: number) => {\n let canMove = true;\n\n const checkKeyEvents = (event: KeyboardEvent) => {\n if (!canMove) return;\n canMove = false;\n if (event.key == 'ArrowLeft') overlayCarousel.events.EventSlideLeft();\n if (event.key == 'ArrowRight') overlayCarousel.events.EventSlideRight();\n\n setTimeout(() => {\n canMove = true;\n }, 700);\n };\n\n overlayCarousel.events.EventMoveTo(index);\n setTimeout(() => fixedFullScreen.events.show(), 100);\n\n setTimeout(() => {\n overlayCarousel.events.EventResize();\n }, 100);\n\n isFullScreenEvents = window.addEventListener('keyup', checkKeyEvents);\n };\n\n const overlaySlides = CreateOverlaySlide({ images });\n\n const overlayCarousel = carouselElements.image({\n slides: overlaySlides,\n maxHeight: (window.innerHeight / 10) * 8,\n });\n\n styles += overlayCarousel.styles;\n\n const fixedFullScreen = carouselElements.fullScreen({\n content: overlayCarousel.element,\n callback: () => {\n if (isFullScreenEvents)\n window.removeEventListener('keyup', isFullScreenEvents);\n },\n });\n\n styles += fixedFullScreen.styles;\n\n let isFullScreenEvents: any = null;\n\n return {\n element: fixedFullScreen.element,\n styles,\n events: {\n setFullScreen,\n },\n };\n })();\n"],"names":["LayoutImage","carouselElements.image","carouselElements.fullScreen"],"mappings":";;;;;;;AAIA,MAAM,sCAAsC;AAG5C,MAAM,8BAA8B;AAAA,KAC/B,mCAAmC;AAAA;AAAA;AAAA;AAAA,wBAIhB,MAAM,MAAM,KAAK,IAAI;AAAA;AAAA;AAAA,KAGxC,mCAAmC;AAAA;AAAA;AAAA;AAAA;AAOxC,MAAM,kCAAkC;AAAA,IACpCA,YAAY,MAAM;AAAA,IAClB,2BAA2B;AAAA;AAG/B,MAAM,qBAAqB,CAAC,EAAE,OAAA,MAC5B,OAAO,IAAI,CAAC,UAAU;AACpB,QAAM,QAAQ,SAAS,cAAc,KAAK;AAC1C,QAAM,iBAAiB,SAAS,cAAc,KAAK;AACnD,QAAM,aAAaA,YAAY,cAAc;AAAA,IAC3C;AAAA,IACA,aAAa;AAAA,EAAA,CACd;AAED,iBAAe,UAAU,IAAI,mCAAmC;AAChE,iBAAe,YAAY,UAAU;AAErC,QAAM,YAAY,cAAc;AAEhC,SAAO;AACT,CAAC;AAEI,MAAM,iCAAiC,CAAC,EAAE,OAAA,OAC9C,MAAM;AACL,MAAI,SAAS;AAEb,QAAM,gBAAgB,CAAC,UAAkB;AACvC,QAAI,UAAU;AAEd,UAAM,iBAAiB,CAAC,UAAyB;AAC/C,UAAI,CAAC,QAAS;AACd,gBAAU;AACV,UAAI,MAAM,OAAO,YAAa,iBAAgB,OAAO,eAAA;AACrD,UAAI,MAAM,OAAO,aAAc,iBAAgB,OAAO,gBAAA;AAEtD,iBAAW,MAAM;AACf,kBAAU;AAAA,MACZ,GAAG,GAAG;AAAA,IACR;AAEA,oBAAgB,OAAO,YAAY,KAAK;AACxC,eAAW,MAAM,gBAAgB,OAAO,KAAA,GAAQ,GAAG;AAEnD,eAAW,MAAM;AACf,sBAAgB,OAAO,YAAA;AAAA,IACzB,GAAG,GAAG;AAEN,yBAAqB,OAAO,iBAAiB,SAAS,cAAc;AAAA,EACtE;AAEA,QAAM,gBAAgB,mBAAmB,EAAE,QAAQ;AAEnD,QAAM,kBAAkBC,6BAAuB;AAAA,IAC7C,QAAQ;AAAA,IACR,WAAY,OAAO,cAAc,KAAM;AAAA,EAAA,CACxC;AAED,YAAU,gBAAgB;AAE1B,QAAM,kBAAkBC,kCAA4B;AAAA,IAClD,SAAS,gBAAgB;AAAA,IACzB,UAAU,MAAM;AACd,UAAI;AACF,eAAO,oBAAoB,SAAS,kBAAkB;AAAA,IAC1D;AAAA,EAAA,CACD;AAED,YAAU,gBAAgB;AAE1B,MAAI,qBAA0B;AAE9B,SAAO;AAAA,IACL,SAAS,gBAAgB;AAAA,IACzB;AAAA,IACA,QAAQ;AAAA,MACN;AAAA,IAAA;AAAA,EACF;AAEJ,GAAA;"}
1
+ {"version":3,"file":"overlay.js","sources":["../../../../source/composite/carousel/elements/overlay.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-token-library';\nimport { ElementBuilder } from '@universityofmaryland/web-builder-library';\nimport { combineStyles } from '@universityofmaryland/web-utilities-library/styles';\nimport * as carouselElements from '../elements';\nimport { createLayoutImageContainer } from 'layout';\n\nconst CreateOverlaySlide = ({\n images,\n isToggleCaption,\n}: {\n images: HTMLImageElement[];\n isToggleCaption: boolean;\n}) =>\n images.map((image) => {\n const imageBlock = createLayoutImageContainer({ image, showCaption: true, isToggleCaption });\n\n const imageContainerModel = new ElementBuilder()\n .withClassName('carousel-overlay-container')\n .withStyles({\n element: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: token.color.gray.dark,\n\n '& > *': {\n width: '100%',\n height: '100%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n },\n\n '& img': {\n objectFit: 'contain',\n maxHeight: '100%',\n maxWidth: '100%',\n },\n },\n })\n .withChild(imageBlock)\n .build();\n\n return imageContainerModel;\n });\n\nexport const createCompositeCarouselOverlay = ({\n images,\n isToggleCaption = true,\n}: {\n images: HTMLImageElement[];\n isToggleCaption?: boolean;\n}) =>\n (() => {\n let isFullScreenEvents: any = null;\n\n const setFullScreen = (index: number) => {\n let canMove = true;\n\n overlayCarousel.events.EventMoveTo(index);\n\n setTimeout(() => fixedFullScreen.events.show(), 100);\n\n setTimeout(() => {\n overlayCarousel.events.EventResize();\n }, 100);\n\n isFullScreenEvents = window.addEventListener(\n 'keyup',\n (event: KeyboardEvent) => {\n if (!canMove) return;\n\n canMove = false;\n if (event.key === 'ArrowLeft') {\n overlayCarousel.events.EventSlideLeft();\n } else if (event.key === 'ArrowRight') {\n overlayCarousel.events.EventSlideRight();\n }\n\n setTimeout(() => {\n canMove = true;\n }, 700);\n },\n );\n };\n\n const overlaySlideModels = CreateOverlaySlide({ images, isToggleCaption });\n const overlaySlides = overlaySlideModels.map((model) => model.element);\n const firstSlide = overlaySlideModels[0];\n const slideStyles = firstSlide ? firstSlide.styles : '';\n\n const overlayCarousel = carouselElements.image({\n slides: overlaySlides,\n maxHeight: (window.innerHeight / 10) * 8,\n });\n\n const fixedFullScreen = carouselElements.fullScreen({\n content: overlayCarousel.element,\n callback: () => {\n if (isFullScreenEvents) {\n window.removeEventListener('keyup', isFullScreenEvents);\n }\n },\n });\n\n return {\n element: fixedFullScreen.element,\n styles: combineStyles(\n slideStyles,\n overlayCarousel.styles,\n fixedFullScreen.styles,\n ),\n events: {\n setFullScreen,\n },\n };\n })();\n"],"names":["carouselElements.image","carouselElements.fullScreen"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,MAAM,qBAAqB,CAAC;AAAA,EAC1B;AAAA,EACA;AACF,MAIE,OAAO,IAAI,CAAC,UAAU;AACpB,QAAM,aAAa,2BAA2B,EAAE,OAAO,aAAa,MAAM,iBAAiB;AAE3F,QAAM,sBAAsB,IAAI,eAAA,EAC7B,cAAc,4BAA4B,EAC1C,WAAW;AAAA,IACV,SAAS;AAAA,MACP,UAAU;AAAA,MACV,KAAK;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,iBAAiB,MAAM,MAAM,KAAK;AAAA,MAElC,SAAS;AAAA,QACP,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,gBAAgB;AAAA,QAChB,YAAY;AAAA,MAAA;AAAA,MAGd,SAAS;AAAA,QACP,WAAW;AAAA,QACX,WAAW;AAAA,QACX,UAAU;AAAA,MAAA;AAAA,IACZ;AAAA,EACF,CACD,EACA,UAAU,UAAU,EACpB,MAAA;AAEH,SAAO;AACT,CAAC;AAEI,MAAM,iCAAiC,CAAC;AAAA,EAC7C;AAAA,EACA,kBAAkB;AACpB,OAIG,MAAM;AAGL,QAAM,gBAAgB,CAAC,UAAkB;AACvC,QAAI,UAAU;AAEd,oBAAgB,OAAO,YAAY,KAAK;AAExC,eAAW,MAAM,gBAAgB,OAAO,KAAA,GAAQ,GAAG;AAEnD,eAAW,MAAM;AACf,sBAAgB,OAAO,YAAA;AAAA,IACzB,GAAG,GAAG;AAEe,WAAO;AAAA,MAC1B;AAAA,MACA,CAAC,UAAyB;AACxB,YAAI,CAAC,QAAS;AAEd,kBAAU;AACV,YAAI,MAAM,QAAQ,aAAa;AAC7B,0BAAgB,OAAO,eAAA;AAAA,QACzB,WAAW,MAAM,QAAQ,cAAc;AACrC,0BAAgB,OAAO,gBAAA;AAAA,QACzB;AAEA,mBAAW,MAAM;AACf,oBAAU;AAAA,QACZ,GAAG,GAAG;AAAA,MACR;AAAA,IAAA;AAAA,EAEJ;AAEA,QAAM,qBAAqB,mBAAmB,EAAE,QAAQ,iBAAiB;AACzE,QAAM,gBAAgB,mBAAmB,IAAI,CAAC,UAAU,MAAM,OAAO;AACrE,QAAM,aAAa,mBAAmB,CAAC;AACvC,QAAM,cAAc,aAAa,WAAW,SAAS;AAErD,QAAM,kBAAkBA,6BAAuB;AAAA,IAC7C,QAAQ;AAAA,IACR,WAAY,OAAO,cAAc,KAAM;AAAA,EAAA,CACxC;AAED,QAAM,kBAAkBC,kCAA4B;AAAA,IAClD,SAAS,gBAAgB;AAAA,EAM3B,CAAC;AAED,SAAO;AAAA,IACL,SAAS,gBAAgB;AAAA,IACzB,QAAQ;AAAA,MACN;AAAA,MACA,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,IAAA;AAAA,IAElB,QAAQ;AAAA,MACN;AAAA,IAAA;AAAA,EACF;AAEJ,GAAA;"}
@@ -2,13 +2,8 @@ type TypeCarouselMultipleProps = {
2
2
  images: HTMLImageElement[];
3
3
  isThemeDark?: boolean;
4
4
  isFullScreenOption?: boolean;
5
+ isToggleCaption?: boolean;
5
6
  };
6
- export declare const createCompositeCarouselImageMultiple: (props: TypeCarouselMultipleProps) => {
7
- styles: string;
8
- events: {
9
- SetEventReize: () => void;
10
- };
11
- element: HTMLDivElement;
12
- };
7
+ export declare const createCompositeCarouselImageMultiple: (props: TypeCarouselMultipleProps) => import('../../../../builder/dist/index.d.ts').ElementModel<HTMLElement>;
13
8
  export {};
14
9
  //# sourceMappingURL=multiple.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"multiple.d.ts","sourceRoot":"","sources":["../../../../source/composite/carousel/image/multiple.ts"],"names":[],"mappings":"AAMA,KAAK,yBAAyB,GAAG;IAC/B,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC;AA2GF,eAAO,MAAM,oCAAoC,GAAI,OAAO,yBAAyB;;;;;;CA8F/E,CAAC"}
1
+ {"version":3,"file":"multiple.d.ts","sourceRoot":"","sources":["../../../../source/composite/carousel/image/multiple.ts"],"names":[],"mappings":"AAOA,KAAK,yBAAyB,GAAG;IAC/B,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAIF,eAAO,MAAM,oCAAoC,GAAI,OAAO,yBAAyB,kFA8H/E,CAAC"}
@@ -1,22 +1,20 @@
1
1
  import * as token from "@universityofmaryland/web-token-library";
2
- import * as elementStyles from "@universityofmaryland/web-styles-library/element";
3
- import { createCompositeCarouselBlocks } from "../elements/blocks.js";
4
- import "../elements/full-screen.js";
5
- import { createCompositeCarouselOverlay } from "../elements/overlay.js";
6
- import "../elements/image.js";
7
- import "@universityofmaryland/web-builder-library";
2
+ import { ElementBuilder } from "@universityofmaryland/web-builder-library";
3
+ import { combineStyles } from "@universityofmaryland/web-utilities-library/styles";
4
+ import { createCompositeCarouselBlocks } from "../elements/equal-width-items.js";
5
+ import { buttonColorsOnWhite } from "../elements/nav-button.js";
6
+ import "@universityofmaryland/web-icons-library/controls";
7
+ import "@universityofmaryland/web-styles-library/element";
8
8
  import "@universityofmaryland/web-styles-library/layout";
9
9
  import "@universityofmaryland/web-styles-library/animation";
10
10
  import "@universityofmaryland/web-styles-library/typography";
11
11
  import "@universityofmaryland/web-utilities-library/media";
12
12
  import "@universityofmaryland/web-utilities-library/dom";
13
- import "@universityofmaryland/web-icons-library/controls";
14
13
  import "@universityofmaryland/web-icons-library/communication";
15
14
  import "@universityofmaryland/web-icons-library/files";
16
15
  import "@universityofmaryland/web-icons-library/brand";
17
16
  import "@universityofmaryland/web-icons-library/arrows";
18
17
  import "@universityofmaryland/web-utilities-library/performance";
19
- import "../../../atomic/animations/brand/chevron-scroll.js";
20
18
  import "../../../atomic/animations/brand/card-stack.js";
21
19
  import "@universityofmaryland/web-styles-library";
22
20
  import "@universityofmaryland/web-utilities-library/accessibility";
@@ -25,174 +23,111 @@ import "@universityofmaryland/web-icons-library/location";
25
23
  import "@universityofmaryland/web-icons-library/calendar";
26
24
  import "@universityofmaryland/web-utilities-library/theme";
27
25
  import "../../../atomic/layout/block/stacked.js";
28
- import "../../../atomic/layout/overlay/modal.js";
29
26
  import "../../../atomic/layout/person/columns.js";
30
27
  import "@universityofmaryland/web-icons-library/social";
31
- import "../../../atomic/text-lockup/date.js";
28
+ import "@universityofmaryland/web-utilities-library/string";
29
+ import "@universityofmaryland/web-utilities-library/animation";
32
30
  import "../../../atomic/text-lockup/small.js";
33
- import { layoutImage } from "../../../layout/image.js";
34
- const fullScreenClassName = elementStyles.action.button.fullScreen.className;
35
- const ATTRIBUTE_THEME = "data-theme";
36
- const THEME_DARK = "dark";
37
- const IS_THEME_DARK = `[${ATTRIBUTE_THEME}="${THEME_DARK}"]`;
38
- const ELEMENT_NAME = "umd-carousel-image-standard";
39
- const ELEMENT_CAROUSEL_MULTIPLE_DECLARATION = "carousel-image-multiple-declaration";
40
- const ELEMENT_CAROUSEL_MULTIPLE_CONTAINER = "carousel-image-multiple-container";
41
- const ELEMENT_CAROUSEL_SLIDER_BUTTON = "carousel-multiple-button";
42
- const OVERWRITE_LAYOUT_IMAGE = `.${ELEMENT_CAROUSEL_MULTIPLE_DECLARATION} .${layoutImage.Elements.container}`;
43
- const OVERWRITE_ANIMATION_CAROUSEL_BUTTON = `.${ELEMENT_CAROUSEL_MULTIPLE_DECLARATION} .${createCompositeCarouselBlocks.Elements.button}`;
44
- const OVERWRITE_FULL_SCREEN_BUTTON = `.${ELEMENT_CAROUSEL_MULTIPLE_DECLARATION} .${fullScreenClassName}`;
45
- const OVERWRITE_THEME_DARK_CONTAINER = `.${ELEMENT_CAROUSEL_MULTIPLE_CONTAINER}${IS_THEME_DARK}`;
46
- const OVERWRITE_THEME_DARK_BUTTON = `.${ELEMENT_CAROUSEL_MULTIPLE_CONTAINER}${IS_THEME_DARK} .${ELEMENT_CAROUSEL_SLIDER_BUTTON}`;
47
- const OverwriteThemeDark = `
48
- ${OVERWRITE_THEME_DARK_CONTAINER} {
49
- background-color: ${token.color.black};
50
- }
51
-
52
- ${OVERWRITE_THEME_DARK_BUTTON} {
53
- background-color: ${token.color.black};
54
- }
55
-
56
- ${OVERWRITE_THEME_DARK_BUTTON} > svg {
57
- fill: ${token.color.white};
58
- }
59
- `;
60
- const OverwriteFullScreenOption = `
61
- ${OVERWRITE_FULL_SCREEN_BUTTON} {
62
- visibility: hidden;
63
- opacity: 0;
64
- transition: visibility 0s, opacity 0.5s linear;
65
- }
66
-
67
- ${OVERWRITE_FULL_SCREEN_BUTTON}:focus {
68
- visibility: visible;
69
- opacity: 1;
70
- }
71
-
72
- ${OVERWRITE_LAYOUT_IMAGE}:focus-within .${fullScreenClassName},
73
- ${OVERWRITE_LAYOUT_IMAGE}:hover .${fullScreenClassName} {
74
- visibility: visible;
75
- opacity: 1;
76
- }
77
- `;
78
- const OverwriteImageStyles = `
79
- ${OVERWRITE_LAYOUT_IMAGE} img {
80
- width: 100%;
81
- height: 100%;
82
- object-fit: cover;
83
- }
84
- `;
85
- const OverwriteCarouselStyles = `
86
- ${OVERWRITE_ANIMATION_CAROUSEL_BUTTON} {
87
- top: 50%;
88
- transform: translateY(-50%);
89
- background-color: ${token.color.white};
90
- }
91
-
92
- ${OVERWRITE_ANIMATION_CAROUSEL_BUTTON} svg {
93
- fill: ${token.color.black};
94
- };
95
-
96
- ${OVERWRITE_ANIMATION_CAROUSEL_BUTTON}:last-of-type {
97
- left: 0;
98
- }
99
-
100
- ${OVERWRITE_ANIMATION_CAROUSEL_BUTTON}:first-of-type {
101
- right: 0;
102
- }
103
- `;
104
- const STYLES_CAROUSEL_IMAGE_MULTIPLE_ELEMENT = `
105
- .${ELEMENT_CAROUSEL_MULTIPLE_DECLARATION} {
106
- container: ${ELEMENT_NAME} / inline-size;
107
- }
108
-
109
- .${ELEMENT_CAROUSEL_MULTIPLE_CONTAINER} {
110
- overflow: hidden;
111
- }
112
-
113
-
114
- ${createCompositeCarouselBlocks.Styles}
115
- ${layoutImage.Styles}
116
- ${OverwriteImageStyles}
117
- ${OverwriteCarouselStyles}
118
- ${OverwriteFullScreenOption}
119
- ${OverwriteThemeDark}
120
- `;
31
+ import { createCompositeCarouselOverlay } from "../elements/overlay.js";
32
+ import "@universityofmaryland/web-utilities-library/events";
33
+ import { createLayoutImageContainer } from "../../../layout/image.js";
34
+ const fullScreenClassName = fullscreen.className;
121
35
  const createCompositeCarouselImageMultiple = (props) => (() => {
122
- const { images, isThemeDark, isFullScreenOption } = props;
123
- const elementDeclaration = document.createElement("div");
124
- const elementContainer = document.createElement("div");
125
- const clonedImages = images.map(
126
- (image) => image.cloneNode(true)
127
- );
128
- let styles = STYLES_CAROUSEL_IMAGE_MULTIPLE_ELEMENT;
129
- const overlayCarousel = createCompositeCarouselOverlay({
130
- images
131
- });
132
- styles += overlayCarousel.styles;
133
- const slide = document.createElement("div");
134
- const blocks = clonedImages.map((image, index$1) => {
135
- const block = layoutImage.CreateElement({
136
- image,
137
- showCaption: true
138
- });
36
+ const { images, isThemeDark, isFullScreenOption = false, isToggleCaption = true } = props;
37
+ const clonedImages = images.map((image) => image.cloneNode(true));
38
+ const slide = new ElementBuilder().build().element;
39
+ const overlayCarousel = createCompositeCarouselOverlay({ images, isToggleCaption });
40
+ let buttonStyles = "";
41
+ let blockStyles = "";
42
+ let containerClass = "";
43
+ const blockModels = clonedImages.map((image, index$1) => {
44
+ const block = createLayoutImageContainer({ image, showCaption: true, isToggleCaption });
45
+ containerClass = block.element.className;
139
46
  if (isFullScreenOption) {
140
47
  const button = fullscreen.create({
141
48
  callback: overlayCarousel.events.setFullScreen,
142
49
  index: index$1
143
50
  });
144
- block.appendChild(button.element);
145
- styles += button.styles;
51
+ block.element.appendChild(button.element);
52
+ buttonStyles += button.styles;
146
53
  }
147
- return block;
54
+ blockStyles += block.styles;
55
+ return block.element;
148
56
  });
149
57
  const carousel = createCompositeCarouselBlocks.CreateElement({
150
- blocks,
58
+ blocks: blockModels,
151
59
  slide,
152
- overwriteDisplayLogic: {
153
- mobileBreakpoint: 600,
154
- tabletBreakpoint: 900,
155
- desktopBreakpoint: 1400,
156
- desktopCount: 3,
157
- maxCount: 4,
158
- showHint: false,
159
- fullScreenCallback: overlayCarousel.events.setFullScreen
60
+ mobileBreakpoint: token.media.breakpointValues.medium.max,
61
+ tabletBreakpoint: token.media.breakpointValues.desktop.min,
62
+ desktopBreakpoint: token.media.breakpointValues.highDef.max,
63
+ desktopCount: 3,
64
+ maxCount: 4,
65
+ showHint: false,
66
+ fullScreenCallback: overlayCarousel.events.setFullScreen,
67
+ button: {
68
+ ...buttonColorsOnWhite(isThemeDark)
160
69
  }
161
70
  });
162
- elementContainer.appendChild(carousel.element);
163
- elementContainer.classList.add(ELEMENT_CAROUSEL_MULTIPLE_CONTAINER);
164
- if (isThemeDark) elementContainer.setAttribute(ATTRIBUTE_THEME, THEME_DARK);
165
- elementDeclaration.classList.add(ELEMENT_CAROUSEL_MULTIPLE_DECLARATION);
166
- elementDeclaration.appendChild(elementContainer);
71
+ const containerModel = new ElementBuilder().withClassName("carousel-image-multiple-container").withStyles({
72
+ element: {
73
+ overflow: "hidden",
74
+ ...isThemeDark && { backgroundColor: token.color.black }
75
+ }
76
+ }).withChild(carousel).build();
77
+ const declarationModel = new ElementBuilder().withClassName("carousel-image-multiple-declaration").withStyles({
78
+ element: {
79
+ containerType: "inline-size",
80
+ [`& .${containerClass} img`]: { objectFit: "cover" }
81
+ }
82
+ }).withStylesIf(isFullScreenOption, {
83
+ element: {
84
+ // Only hide/reveal the Full Screen button on devices that actually
85
+ // hover. On touch (hover: none) the button stays visible by default —
86
+ // and, crucially, no `:hover` rule exists on this container, so iOS
87
+ // Safari does not swallow the first tap as a hover. A hover-reveal on
88
+ // the container would make iOS treat the first tap on the caption
89
+ // toggle (a child of this container) as a hover instead of a click.
90
+ "@media (hover: hover)": {
91
+ [`& .${fullScreenClassName}`]: {
92
+ visibility: "hidden",
93
+ opacity: 0,
94
+ transition: "visibility 0s, opacity 0.5s linear",
95
+ "&:focus": { visibility: "visible", opacity: 1 }
96
+ },
97
+ [`& .${containerClass}:focus-within .${fullScreenClassName}`]: {
98
+ visibility: "visible",
99
+ opacity: 1
100
+ },
101
+ [`& .${containerClass}:hover .${fullScreenClassName}`]: {
102
+ visibility: "visible",
103
+ opacity: 1
104
+ }
105
+ }
106
+ }
107
+ }).withChild(containerModel).withEvents({ SetEventReize: carousel.events.resize }).build();
108
+ declarationModel.styles = combineStyles(
109
+ declarationModel.styles,
110
+ blockStyles,
111
+ overlayCarousel.styles,
112
+ buttonStyles
113
+ );
167
114
  images[images.length - 1].addEventListener("load", () => {
168
115
  carousel.events.load();
169
116
  setTimeout(() => {
170
117
  const maxHeight = clonedImages.reduce(
171
- (acc, image) => image.offsetHeight > acc ? image.offsetHeight : acc,
118
+ (accumulator, image) => Math.max(image.offsetHeight, accumulator),
172
119
  300
173
120
  );
174
121
  slide.style.minHeight = `${maxHeight}px`;
175
122
  }, 100);
176
123
  });
177
- const responseOptions = {
178
- styles,
179
- events: {
180
- SetEventReize: carousel.events.resize
181
- }
182
- };
183
124
  if (isFullScreenOption) {
184
- const element = document.createElement("div");
185
- element.appendChild(overlayCarousel.element);
186
- element.appendChild(elementDeclaration);
187
- return {
188
- element,
189
- ...responseOptions
190
- };
125
+ const wrapperModel = new ElementBuilder().withChild(declarationModel).withModifier((element) => {
126
+ element.insertAdjacentElement("afterbegin", overlayCarousel.element);
127
+ }).withEvents({ SetEventReize: carousel.events.resize }).build();
128
+ return wrapperModel;
191
129
  }
192
- return {
193
- element: elementDeclaration,
194
- ...responseOptions
195
- };
130
+ return declarationModel;
196
131
  })();
197
132
  export {
198
133
  createCompositeCarouselImageMultiple
@@ -1 +1 @@
1
- {"version":3,"file":"multiple.js","sources":["../../../../source/composite/carousel/image/multiple.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-token-library';\nimport * as elementStyles from '@universityofmaryland/web-styles-library/element';\nimport * as carouselElements from '../elements';\nimport { buttons } from 'atomic';\nimport { Image as LayoutImage } from 'layout';\n\ntype TypeCarouselMultipleProps = {\n images: HTMLImageElement[];\n isThemeDark?: boolean;\n isFullScreenOption?: boolean;\n};\n\nconst fullScreenClassName = elementStyles.action.button.fullScreen.className;\n\nconst ATTRIBUTE_THEME = 'data-theme';\nconst THEME_DARK = 'dark';\n\nconst IS_THEME_DARK = `[${ATTRIBUTE_THEME}=\"${THEME_DARK}\"]`;\n\nconst ELEMENT_NAME = 'umd-carousel-image-standard';\nconst ELEMENT_CAROUSEL_MULTIPLE_DECLARATION =\n 'carousel-image-multiple-declaration';\nconst ELEMENT_CAROUSEL_MULTIPLE_CONTAINER = 'carousel-image-multiple-container';\nconst ELEMENT_CAROUSEL_SLIDER_BUTTON = 'carousel-multiple-button';\n\nconst OVERWRITE_LAYOUT_IMAGE = `.${ELEMENT_CAROUSEL_MULTIPLE_DECLARATION} .${LayoutImage.Elements.container}`;\n\nconst OVERWRITE_ANIMATION_CAROUSEL_BUTTON = `.${ELEMENT_CAROUSEL_MULTIPLE_DECLARATION} .${carouselElements.blocks.Elements.button}`;\nconst OVERWRITE_FULL_SCREEN_BUTTON = `.${ELEMENT_CAROUSEL_MULTIPLE_DECLARATION} .${fullScreenClassName}`;\n\nconst OVERWRITE_THEME_DARK_CONTAINER = `.${ELEMENT_CAROUSEL_MULTIPLE_CONTAINER}${IS_THEME_DARK}`;\nconst OVERWRITE_THEME_DARK_BUTTON = `.${ELEMENT_CAROUSEL_MULTIPLE_CONTAINER}${IS_THEME_DARK} .${ELEMENT_CAROUSEL_SLIDER_BUTTON}`;\n\n// prettier-ignore\nconst OverwriteThemeDark = `\n ${OVERWRITE_THEME_DARK_CONTAINER} {\n background-color: ${token.color.black};\n }\n\n ${OVERWRITE_THEME_DARK_BUTTON} {\n background-color: ${token.color.black};\n }\n\n ${OVERWRITE_THEME_DARK_BUTTON} > svg {\n fill: ${token.color.white};\n }\n`;\n\n// prettier-ignore\nconst OverwriteFullScreenOption = `\n ${OVERWRITE_FULL_SCREEN_BUTTON} {\n visibility: hidden;\n opacity: 0;\n transition: visibility 0s, opacity 0.5s linear;\n }\n\n ${OVERWRITE_FULL_SCREEN_BUTTON}:focus {\n visibility: visible;\n opacity: 1;\n }\n\n ${OVERWRITE_LAYOUT_IMAGE}:focus-within .${fullScreenClassName},\n ${OVERWRITE_LAYOUT_IMAGE}:hover .${fullScreenClassName} {\n visibility: visible;\n opacity: 1;\n }\n`\n\n// prettier-ignore\nconst OverwriteImageStyles = `\n ${OVERWRITE_LAYOUT_IMAGE} img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n`\n\n// prettier-ignore\nconst OverwriteCarouselStyles = `\n ${OVERWRITE_ANIMATION_CAROUSEL_BUTTON} {\n top: 50%;\n transform: translateY(-50%);\n background-color: ${token.color.white};\n }\n\n ${OVERWRITE_ANIMATION_CAROUSEL_BUTTON} svg {\n fill: ${token.color.black};\n };\n\n ${OVERWRITE_ANIMATION_CAROUSEL_BUTTON}:last-of-type {\n left: 0;\n }\n\n ${OVERWRITE_ANIMATION_CAROUSEL_BUTTON}:first-of-type {\n right: 0;\n }\n`;\n\n// prettier-ignore\nconst STYLES_CAROUSEL_IMAGE_MULTIPLE_ELEMENT = `\n .${ELEMENT_CAROUSEL_MULTIPLE_DECLARATION} {\n container: ${ELEMENT_NAME} / inline-size;\n }\n\n .${ELEMENT_CAROUSEL_MULTIPLE_CONTAINER} {\n overflow: hidden;\n }\n\n\n ${carouselElements.blocks.Styles}\n ${LayoutImage.Styles}\n ${OverwriteImageStyles}\n ${OverwriteCarouselStyles}\n ${OverwriteFullScreenOption}\n ${OverwriteThemeDark}\n`;\n\nexport const createCompositeCarouselImageMultiple = (props: TypeCarouselMultipleProps) =>\n (() => {\n const { images, isThemeDark, isFullScreenOption } = props;\n const elementDeclaration = document.createElement('div');\n const elementContainer = document.createElement('div');\n const clonedImages = images.map((image) =>\n image.cloneNode(true),\n ) as HTMLImageElement[];\n let styles = STYLES_CAROUSEL_IMAGE_MULTIPLE_ELEMENT;\n\n const overlayCarousel = carouselElements.overlay({\n images,\n });\n\n styles += overlayCarousel.styles;\n\n const slide = document.createElement('div');\n const blocks = clonedImages.map((image, index) => {\n const block = LayoutImage.CreateElement({\n image,\n showCaption: true,\n });\n\n if (isFullScreenOption) {\n const button = buttons.fullscreen.create({\n callback: overlayCarousel.events.setFullScreen,\n index,\n });\n\n block.appendChild(button.element);\n styles += button.styles;\n }\n\n return block;\n });\n\n const carousel = carouselElements.blocks.CreateElement({\n blocks,\n slide,\n overwriteDisplayLogic: {\n mobileBreakpoint: 600,\n tabletBreakpoint: 900,\n desktopBreakpoint: 1400,\n desktopCount: 3,\n maxCount: 4,\n showHint: false,\n fullScreenCallback: overlayCarousel.events.setFullScreen,\n },\n });\n\n elementContainer.appendChild(carousel.element);\n elementContainer.classList.add(ELEMENT_CAROUSEL_MULTIPLE_CONTAINER);\n if (isThemeDark) elementContainer.setAttribute(ATTRIBUTE_THEME, THEME_DARK);\n\n elementDeclaration.classList.add(ELEMENT_CAROUSEL_MULTIPLE_DECLARATION);\n elementDeclaration.appendChild(elementContainer);\n\n images[images.length - 1].addEventListener('load', () => {\n carousel.events.load();\n\n setTimeout(() => {\n const maxHeight = clonedImages.reduce(\n (acc, image) => (image.offsetHeight > acc ? image.offsetHeight : acc),\n 300,\n );\n\n slide.style.minHeight = `${maxHeight}px`;\n }, 100);\n });\n\n const responseOptions = {\n styles,\n events: {\n SetEventReize: carousel.events.resize,\n },\n };\n\n if (isFullScreenOption) {\n const element = document.createElement('div');\n\n element.appendChild(overlayCarousel.element);\n\n element.appendChild(elementDeclaration);\n\n return {\n element,\n ...responseOptions,\n };\n }\n\n return {\n element: elementDeclaration,\n ...responseOptions,\n };\n })();\n"],"names":["LayoutImage","carouselElements.blocks","carouselElements.overlay","index","buttons.fullscreen"],"mappings":"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"}
1
+ {"version":3,"file":"multiple.js","sources":["../../../../source/composite/carousel/image/multiple.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-token-library';\nimport { ElementBuilder } from '@universityofmaryland/web-builder-library';\nimport { combineStyles } from '@universityofmaryland/web-utilities-library/styles';\nimport * as carouselElements from '../elements';\nimport { buttons } from 'atomic';\nimport { createLayoutImageContainer } from 'layout';\n\ntype TypeCarouselMultipleProps = {\n images: HTMLImageElement[];\n isThemeDark?: boolean;\n isFullScreenOption?: boolean;\n isToggleCaption?: boolean;\n};\n\nconst fullScreenClassName = buttons.fullscreen.className;\n\nexport const createCompositeCarouselImageMultiple = (props: TypeCarouselMultipleProps) =>\n (() => {\n const { images, isThemeDark, isFullScreenOption = false, isToggleCaption = true } = props;\n const clonedImages = images.map((image) => image.cloneNode(true)) as HTMLImageElement[];\n const slide = new ElementBuilder().build().element;\n const overlayCarousel = carouselElements.overlay({ images, isToggleCaption });\n\n let buttonStyles = '';\n let blockStyles = '';\n let containerClass = '';\n\n const blockModels = clonedImages.map((image, index) => {\n const block = createLayoutImageContainer({ image, showCaption: true, isToggleCaption });\n containerClass = block.element.className;\n\n if (isFullScreenOption) {\n const button = buttons.fullscreen.create({\n callback: overlayCarousel.events.setFullScreen,\n index,\n });\n\n block.element.appendChild(button.element);\n buttonStyles += button.styles;\n }\n\n blockStyles += block.styles;\n return block.element;\n });\n\n const carousel = carouselElements.blocks.CreateElement({\n blocks: blockModels,\n slide,\n mobileBreakpoint: token.media.breakpointValues.medium.max,\n tabletBreakpoint: token.media.breakpointValues.desktop.min,\n desktopBreakpoint: token.media.breakpointValues.highDef.max,\n desktopCount: 3,\n maxCount: 4,\n showHint: false,\n fullScreenCallback: overlayCarousel.events.setFullScreen,\n button: {\n ...carouselElements.buttonColorsOnWhite(isThemeDark),\n },\n });\n\n const containerModel = new ElementBuilder()\n .withClassName('carousel-image-multiple-container')\n .withStyles({\n element: {\n overflow: 'hidden',\n ...(isThemeDark && { backgroundColor: token.color.black }),\n },\n })\n .withChild(carousel)\n .build();\n\n const declarationModel = new ElementBuilder()\n .withClassName('carousel-image-multiple-declaration')\n .withStyles({\n element: {\n containerType: 'inline-size',\n [`& .${containerClass} img`]: { objectFit: 'cover' },\n },\n })\n .withStylesIf(isFullScreenOption, {\n element: {\n // Only hide/reveal the Full Screen button on devices that actually\n // hover. On touch (hover: none) the button stays visible by default —\n // and, crucially, no `:hover` rule exists on this container, so iOS\n // Safari does not swallow the first tap as a hover. A hover-reveal on\n // the container would make iOS treat the first tap on the caption\n // toggle (a child of this container) as a hover instead of a click.\n '@media (hover: hover)': {\n [`& .${fullScreenClassName}`]: {\n visibility: 'hidden',\n opacity: 0,\n transition: 'visibility 0s, opacity 0.5s linear',\n '&:focus': { visibility: 'visible', opacity: 1 },\n },\n [`& .${containerClass}:focus-within .${fullScreenClassName}`]: {\n visibility: 'visible',\n opacity: 1,\n },\n [`& .${containerClass}:hover .${fullScreenClassName}`]: {\n visibility: 'visible',\n opacity: 1,\n },\n },\n },\n })\n .withChild(containerModel)\n .withEvents({ SetEventReize: carousel.events.resize })\n .build();\n\n declarationModel.styles = combineStyles(\n declarationModel.styles,\n blockStyles,\n overlayCarousel.styles,\n buttonStyles,\n );\n\n images[images.length - 1].addEventListener('load', () => {\n carousel.events.load();\n\n setTimeout(() => {\n const maxHeight = clonedImages.reduce(\n (accumulator, image) => Math.max(image.offsetHeight, accumulator),\n 300,\n );\n\n slide.style.minHeight = `${maxHeight}px`;\n }, 100);\n });\n\n if (isFullScreenOption) {\n const wrapperModel = new ElementBuilder()\n .withChild(declarationModel)\n .withModifier((element) => {\n element.insertAdjacentElement('afterbegin', overlayCarousel.element);\n })\n .withEvents({ SetEventReize: carousel.events.resize })\n .build();\n\n return wrapperModel;\n }\n\n return declarationModel;\n })();\n"],"names":["buttons.fullscreen","carouselElements.overlay","index","carouselElements.blocks","carouselElements.buttonColorsOnWhite"],"mappings":"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"}
@@ -8,13 +8,8 @@ type TypeSlideContent = {
8
8
  };
9
9
  type TypeCarouselImageStandardProps = TypeSlideContent & TypeFullScreen & {
10
10
  isThemeDark?: boolean;
11
+ isToggleCaption?: boolean;
11
12
  };
12
- export declare const createCompositeCarouselImageStandard: (props: TypeCarouselImageStandardProps) => {
13
- styles: string;
14
- events: {
15
- SetEventReize: () => void;
16
- };
17
- element: HTMLDivElement;
18
- };
13
+ export declare const createCompositeCarouselImageStandard: (props: TypeCarouselImageStandardProps) => import('../../../../builder/dist/index.d.ts').ElementModel<HTMLElement>;
19
14
  export {};
20
15
  //# sourceMappingURL=standard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"standard.d.ts","sourceRoot":"","sources":["../../../../source/composite/carousel/image/standard.ts"],"names":[],"mappings":"AAcA,KAAK,cAAc,GAAG;IACpB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC;AAMF,KAAK,gBAAgB,GAAG;IACtB,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,SAAS,CAAC,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IACjC,KAAK,CAAC,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;CAC9B,CAAC;AAYF,KAAK,8BAA8B,GAAG,gBAAgB,GACpD,cAAc,GAAG;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAqLJ,eAAO,MAAM,oCAAoC,GAC/C,OAAO,8BAA8B;;;;;;CA0KjC,CAAC"}
1
+ {"version":3,"file":"standard.d.ts","sourceRoot":"","sources":["../../../../source/composite/carousel/image/standard.ts"],"names":[],"mappings":"AAWA,KAAK,cAAc,GAAG;IACpB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC;AAMF,KAAK,gBAAgB,GAAG;IACtB,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,SAAS,CAAC,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IACjC,KAAK,CAAC,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;CAC9B,CAAC;AAYF,KAAK,8BAA8B,GAAG,gBAAgB,GACpD,cAAc,GAAG;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAIJ,eAAO,MAAM,oCAAoC,GAC/C,OAAO,8BAA8B,kFA8PjC,CAAC"}