@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.
- package/README.md +1 -1
- package/dist/atomic/animations/brand/card-stack.js +2 -3
- package/dist/atomic/animations/brand/card-stack.js.map +1 -1
- package/dist/atomic/animations/brand/chevron-flow.d.ts +1 -7
- package/dist/atomic/animations/brand/chevron-flow.d.ts.map +1 -1
- package/dist/atomic/animations/brand/chevron-flow.js +82 -159
- package/dist/atomic/animations/brand/chevron-flow.js.map +1 -1
- package/dist/atomic/animations/brand/chevron-scroll.d.ts +1 -4
- package/dist/atomic/animations/brand/chevron-scroll.d.ts.map +1 -1
- package/dist/atomic/animations/brand/chevron-scroll.js +89 -143
- package/dist/atomic/animations/brand/chevron-scroll.js.map +1 -1
- package/dist/atomic/assets/image/caption.d.ts +9 -0
- package/dist/atomic/assets/image/caption.d.ts.map +1 -0
- package/dist/atomic/assets/image/caption.js +166 -0
- package/dist/atomic/assets/image/caption.js.map +1 -0
- package/dist/atomic/assets/image/gif.d.ts.map +1 -1
- package/dist/atomic/assets/image/gif.js +6 -1
- package/dist/atomic/assets/image/gif.js.map +1 -1
- package/dist/atomic/assets/image/index.d.ts +1 -0
- package/dist/atomic/assets/image/index.d.ts.map +1 -1
- package/dist/atomic/assets/image/index.js +2 -0
- package/dist/atomic/assets/image/index.js.map +1 -1
- package/dist/atomic/assets/video/toggle.d.ts.map +1 -1
- package/dist/atomic/assets/video/toggle.js +9 -2
- package/dist/atomic/assets/video/toggle.js.map +1 -1
- package/dist/atomic/buttons/fullscreen.d.ts +1 -0
- package/dist/atomic/buttons/fullscreen.d.ts.map +1 -1
- package/dist/atomic/buttons/fullscreen.js +35 -3
- package/dist/atomic/buttons/fullscreen.js.map +1 -1
- package/dist/atomic/layout/overlay/modal.d.ts +1 -10
- package/dist/atomic/layout/overlay/modal.d.ts.map +1 -1
- package/dist/atomic/layout/overlay/modal.js +28 -44
- package/dist/atomic/layout/overlay/modal.js.map +1 -1
- package/dist/atomic/layout/person/columns.js +2 -3
- package/dist/atomic/layout/person/columns.js.map +1 -1
- package/dist/atomic/text-lockup/date.d.ts +1 -4
- package/dist/atomic/text-lockup/date.d.ts.map +1 -1
- package/dist/atomic/text-lockup/date.js +42 -75
- package/dist/atomic/text-lockup/date.js.map +1 -1
- package/dist/composite/accordion/item.d.ts +3 -16
- package/dist/composite/accordion/item.d.ts.map +1 -1
- package/dist/composite/accordion/item.js +152 -245
- package/dist/composite/accordion/item.js.map +1 -1
- package/dist/composite/card/block.js +2 -3
- package/dist/composite/card/block.js.map +1 -1
- package/dist/composite/card/event-time.js +2 -3
- package/dist/composite/card/event-time.js.map +1 -1
- package/dist/composite/card/list.js +2 -3
- package/dist/composite/card/list.js.map +1 -1
- package/dist/composite/card/overlay/color.js +3 -3
- package/dist/composite/card/overlay/icon.js +3 -3
- package/dist/composite/card/overlay/image.d.ts.map +1 -1
- package/dist/composite/card/overlay/image.js +9 -12
- package/dist/composite/card/overlay/image.js.map +1 -1
- package/dist/composite/card/video/block.js +4 -3
- package/dist/composite/card/video/block.js.map +1 -1
- package/dist/composite/carousel/cards/index.d.ts +1 -8
- package/dist/composite/carousel/cards/index.d.ts.map +1 -1
- package/dist/composite/carousel/cards/index.js +163 -282
- package/dist/composite/carousel/cards/index.js.map +1 -1
- package/dist/composite/carousel/default/index.d.ts +9 -15
- package/dist/composite/carousel/default/index.d.ts.map +1 -1
- package/dist/composite/carousel/default/index.js +78 -129
- package/dist/composite/carousel/default/index.js.map +1 -1
- package/dist/composite/carousel/elements/equal-width-items.d.ts +37 -0
- package/dist/composite/carousel/elements/equal-width-items.d.ts.map +1 -0
- package/dist/composite/carousel/elements/{blocks.js → equal-width-items.js} +157 -227
- package/dist/composite/carousel/elements/equal-width-items.js.map +1 -0
- package/dist/composite/carousel/elements/full-screen.d.ts +3 -2
- package/dist/composite/carousel/elements/full-screen.d.ts.map +1 -1
- package/dist/composite/carousel/elements/full-screen.js +34 -41
- package/dist/composite/carousel/elements/full-screen.js.map +1 -1
- package/dist/composite/carousel/elements/image.d.ts +15 -2
- package/dist/composite/carousel/elements/image.d.ts.map +1 -1
- package/dist/composite/carousel/elements/image.js +176 -151
- package/dist/composite/carousel/elements/image.js.map +1 -1
- package/dist/composite/carousel/elements/index.d.ts +4 -1
- package/dist/composite/carousel/elements/index.d.ts.map +1 -1
- package/dist/composite/carousel/elements/indicator-wrapper.d.ts +13 -0
- package/dist/composite/carousel/elements/indicator-wrapper.d.ts.map +1 -0
- package/dist/composite/carousel/elements/indicator-wrapper.js +67 -0
- package/dist/composite/carousel/elements/indicator-wrapper.js.map +1 -0
- package/dist/composite/carousel/elements/nav-button.d.ts +82 -0
- package/dist/composite/carousel/elements/nav-button.d.ts.map +1 -0
- package/dist/composite/carousel/elements/nav-button.js +164 -0
- package/dist/composite/carousel/elements/nav-button.js.map +1 -0
- package/dist/composite/carousel/elements/overlay.d.ts +3 -2
- package/dist/composite/carousel/elements/overlay.d.ts.map +1 -1
- package/dist/composite/carousel/elements/overlay.js +85 -55
- package/dist/composite/carousel/elements/overlay.js.map +1 -1
- package/dist/composite/carousel/image/multiple.d.ts +2 -7
- package/dist/composite/carousel/image/multiple.d.ts.map +1 -1
- package/dist/composite/carousel/image/multiple.js +85 -150
- package/dist/composite/carousel/image/multiple.js.map +1 -1
- package/dist/composite/carousel/image/standard.d.ts +2 -7
- package/dist/composite/carousel/image/standard.d.ts.map +1 -1
- package/dist/composite/carousel/image/standard.js +148 -262
- package/dist/composite/carousel/image/standard.js.map +1 -1
- package/dist/composite/carousel/thumbnail/index.d.ts +1 -8
- package/dist/composite/carousel/thumbnail/index.d.ts.map +1 -1
- package/dist/composite/carousel/thumbnail/index.js +72 -113
- package/dist/composite/carousel/thumbnail/index.js.map +1 -1
- package/dist/composite/carousel/wide/container.d.ts +21 -20
- package/dist/composite/carousel/wide/container.d.ts.map +1 -1
- package/dist/composite/carousel/wide/container.js +37 -12
- package/dist/composite/carousel/wide/container.js.map +1 -1
- package/dist/composite/carousel/wide/controls.d.ts +5 -10
- package/dist/composite/carousel/wide/controls.d.ts.map +1 -1
- package/dist/composite/carousel/wide/controls.js +24 -94
- package/dist/composite/carousel/wide/controls.js.map +1 -1
- package/dist/composite/carousel/wide/frames.d.ts +18 -10
- package/dist/composite/carousel/wide/frames.d.ts.map +1 -1
- package/dist/composite/carousel/wide/frames.js +60 -78
- package/dist/composite/carousel/wide/frames.js.map +1 -1
- package/dist/composite/carousel/wide/index.d.ts.map +1 -1
- package/dist/composite/carousel/wide/index.js +11 -19
- package/dist/composite/carousel/wide/index.js.map +1 -1
- package/dist/composite/hero/custom/expand.js +3 -4
- package/dist/composite/hero/custom/expand.js.map +1 -1
- package/dist/composite/hero/custom/grid.js +2 -3
- package/dist/composite/hero/custom/grid.js.map +1 -1
- package/dist/composite/hero/custom/video-arrow.js +4 -3
- package/dist/composite/hero/custom/video-arrow.js.map +1 -1
- package/dist/composite/hero/logo.js +3 -3
- package/dist/composite/hero/minimal.js +3 -3
- package/dist/composite/hero/overlay.js +5 -4
- package/dist/composite/hero/overlay.js.map +1 -1
- package/dist/composite/hero/stacked.js +3 -3
- package/dist/composite/hero/standard.js +4 -3
- package/dist/composite/hero/standard.js.map +1 -1
- package/dist/composite/layout/box/logo.d.ts +1 -4
- package/dist/composite/layout/box/logo.d.ts.map +1 -1
- package/dist/composite/layout/box/logo.js +55 -103
- package/dist/composite/layout/box/logo.js.map +1 -1
- package/dist/composite/layout/image/expand.d.ts +1 -4
- package/dist/composite/layout/image/expand.d.ts.map +1 -1
- package/dist/composite/layout/image/expand.js +136 -243
- package/dist/composite/layout/image/expand.js.map +1 -1
- package/dist/composite/layout/scroll-top/index.d.ts +1 -7
- package/dist/composite/layout/scroll-top/index.d.ts.map +1 -1
- package/dist/composite/layout/scroll-top/index.js +65 -77
- package/dist/composite/layout/scroll-top/index.js.map +1 -1
- package/dist/composite/layout/sticky-columns/index.d.ts +2 -2
- package/dist/composite/layout/sticky-columns/index.d.ts.map +1 -1
- package/dist/composite/layout/sticky-columns/index.js +42 -70
- package/dist/composite/layout/sticky-columns/index.js.map +1 -1
- package/dist/composite/media/elements/gif.js +3 -3
- package/dist/composite/media/inline/caption.d.ts +4 -2
- package/dist/composite/media/inline/caption.d.ts.map +1 -1
- package/dist/composite/media/inline/caption.js +56 -67
- package/dist/composite/media/inline/caption.js.map +1 -1
- package/dist/composite/media/inline/index.d.ts +9 -8
- package/dist/composite/media/inline/index.d.ts.map +1 -1
- package/dist/composite/media/inline/standard.d.ts +1 -4
- package/dist/composite/media/inline/standard.d.ts.map +1 -1
- package/dist/composite/media/inline/standard.js +16 -24
- package/dist/composite/media/inline/standard.js.map +1 -1
- package/dist/composite/media/inline/wrapped.d.ts +4 -2
- package/dist/composite/media/inline/wrapped.d.ts.map +1 -1
- package/dist/composite/media/inline/wrapped.js +80 -83
- package/dist/composite/media/inline/wrapped.js.map +1 -1
- package/dist/composite/navigation/utility/alert.js +3 -4
- package/dist/composite/navigation/utility/alert.js.map +1 -1
- package/dist/composite/pathway/_common.js +4 -3
- package/dist/composite/pathway/_common.js.map +1 -1
- package/dist/composite/pathway/hero.js +3 -3
- package/dist/composite/person/bio/full.js +3 -3
- package/dist/composite/person/bio/small.js +2 -3
- package/dist/composite/person/bio/small.js.map +1 -1
- package/dist/composite/person/block.js +2 -3
- package/dist/composite/person/block.js.map +1 -1
- package/dist/composite/person/hero.js +3 -3
- package/dist/composite/person/list.js +2 -3
- package/dist/composite/person/list.js.map +1 -1
- package/dist/composite/person/tabular.js +2 -3
- package/dist/composite/person/tabular.js.map +1 -1
- package/dist/composite/slider/events.d.ts +6 -12
- package/dist/composite/slider/events.d.ts.map +1 -1
- package/dist/composite/slider/events.js +304 -428
- package/dist/composite/slider/events.js.map +1 -1
- package/dist/layout/image.d.ts +5 -10
- package/dist/layout/image.d.ts.map +1 -1
- package/dist/layout/image.js +27 -88
- package/dist/layout/image.js.map +1 -1
- package/dist/layout/index.d.ts +1 -1
- package/dist/layout/index.d.ts.map +1 -1
- package/dist/layout.js +2 -2
- package/package.json +6 -6
- package/dist/composite/carousel/elements/blocks.d.ts +0 -42
- package/dist/composite/carousel/elements/blocks.d.ts.map +0 -1
- package/dist/composite/carousel/elements/blocks.js.map +0 -1
- package/dist/composite/carousel/wide/_elementModel.d.ts +0 -18
- package/dist/composite/carousel/wide/_elementModel.d.ts.map +0 -1
- package/dist/composite/carousel/wide/_elementModel.js +0 -29
- package/dist/composite/carousel/wide/_elementModel.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expand.js","sources":["../../../../source/composite/layout/image/expand.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-token-library';\nimport * as layout from '@universityofmaryland/web-styles-library/layout';\nimport { jssToCSS } from '@universityofmaryland/web-utilities-library/styles';\nimport { parsePixelValue } from '@universityofmaryland/web-utilities-library/styles';\nimport {\n isScreenZoomed,\n isPreferredReducedMotion,\n} from '@universityofmaryland/web-utilities-library/accessibility';\n\ntype TypeLayoutImageExpandProps = {\n content: HTMLElement;\n image: HTMLImageElement;\n};\n\nconst { spacing } = token;\n\nconst ELEMENT_NAME = 'umd-layout-image-expand';\nconst ELEMENT_EXPLAND_DECLARATION = 'layout-image-expand-declaration';\nconst ELEMENT_EXPAND_CONTAINER = 'layout-image-expand-container';\n\nconst ELEMENT_EXPAND_IMAGE_CONTAINER = 'layout-image-expand-image-container';\nconst ELEMENT_EXPAND_IMAGE_POSITION = 'layout-image-expand-image-position';\nconst ELEMENT_EXPAND_IMAGE_SIZE = 'layout-image-expand-image-size';\nconst ELEMENT_EXPAND_IMAGE_OVERLAY = 'layout-image-expand-image-overlay';\n\nconst ELEMENT_EXPAND_TEXT_CONTAINER = 'layout-image-expand-text-container';\nconst ELEMENT_EXPAND_TEXT_LOCK = 'layout-image-expand-text-lock';\nconst ELEMENT_EXPAND_TEXT_ANIMATION = 'layout-image-expand-text-animation';\n\n// prettier-ignore\nconst TextLock = `\n ${jssToCSS({\n styleObj: {\n [`.${ELEMENT_EXPAND_TEXT_LOCK}`]: layout.space.horizontal.larger,\n },\n })}\n\n .${ELEMENT_EXPAND_TEXT_LOCK} {\n display: flex;\n height: 100%;\n }\n`;\n\n// prettier-ignore\nconst TextContainer = `\n .${ELEMENT_EXPAND_TEXT_CONTAINER} {\n position: relative;\n padding-top: ${token.spacing.max};\n padding-bottom: ${token.spacing.max};\n height: 100%;\n z-index: 9999;\n }\n`;\n\n// prettier-ignore\nconst TextAnimation = `\n .${ELEMENT_EXPAND_TEXT_ANIMATION} {\n width: 100vw;\n }\n\n @media (prefers-reduced-motion: no-preference) {\n @supports (animation-timeline: scroll()) {\n .${ELEMENT_EXPAND_TEXT_ANIMATION} {\n position: absolute;\n top: 0;\n height: 80vh;\n transform: translateY(80vh);\n }\n }\n }\n\n @media (${token.media.queries.tablet.min}) {\n @media (prefers-reduced-motion: no-preference) {\n @supports (animation-timeline: scroll()) {\n .${ELEMENT_EXPAND_TEXT_ANIMATION} {\n transform: translateY(100vh);\n }\n }\n }\n }\n`;\n\n// prettier-ignore\nconst ImageOverlayContainer = `\n @keyframes img-overlay {\n from { opacity: 0; }\n to { opacity: 1; }\n }\n\n .${ELEMENT_EXPAND_IMAGE_OVERLAY} {\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n background: rgba(0,0,0,0.65);\n opacity: 1;\n }\n\n @media (prefers-reduced-motion: no-preference) {\n @supports (animation-timeline: scroll()) {\n .${ELEMENT_EXPAND_IMAGE_OVERLAY} {\n opacity: 1;\n animation: img-overlay forwards;\n animation-timeline: view();\n animation-range-start: 70vh;\n animation-range-end: 100vh;\n }\n }\n }\n`;\n\n// prettier-ignore\nconst ImageSizeContainer = `\n @keyframes img-size {\n to { width: 100%; height: 100vh; }\n }\n\n .${ELEMENT_EXPAND_IMAGE_SIZE} {\n overflow: hidden;\n position: relative;\n }\n\n @media (prefers-reduced-motion: no-preference) {\n @supports (animation-timeline: scroll()) {\n .${ELEMENT_EXPAND_IMAGE_SIZE} {\n width: ${token.spacing.maxWidth.smallest};\n height: 70vh;\n animation: img-size ease-in-out forwards;\n animation-timeline: view();\n animation-range-start: cover;\n animation-range-end: 200vh;\n }\n }\n }\n\n @supports not (animation-timeline: scroll()) {\n .${ELEMENT_EXPAND_IMAGE_SIZE} {\n height: 100%;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .${ELEMENT_EXPAND_IMAGE_SIZE} {\n height: 100%;\n }\n }\n`;\n\n// prettier-ignore\nconst ImagePosition = `\n .${ELEMENT_EXPAND_IMAGE_POSITION} {\n width: 100%;\n margin: 0 auto;\n }\n\n @media (prefers-reduced-motion: no-preference) {\n @supports (animation-timeline: scroll()) {\n .${ELEMENT_EXPAND_IMAGE_POSITION} {\n display: flex;\n justify-content: center;\n position: sticky;\n top: 0; \n animation: img-position ease-in-out forwards;\n animation-timeline: view();\n animation-range-start: cover;\n animation-range-end: 200vh;\n }\n }\n }\n\n @supports not (animation-timeline: scroll()) {\n .${ELEMENT_EXPAND_IMAGE_POSITION} {\n height: 100%;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .${ELEMENT_EXPAND_IMAGE_POSITION} {\n height: 100%;\n }\n }\n`;\n\n// prettier-ignore\nconst ImageContainer = `\n .${ELEMENT_EXPAND_IMAGE_CONTAINER} {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n }\n\n @media (prefers-reduced-motion: no-preference) {\n @supports (animation-timeline: scroll()) {\n .${ELEMENT_EXPAND_IMAGE_CONTAINER} {\n position: relative;\n }\n }\n }\n`;\n\n// prettier-ignore\nconst Container = `\n .${ELEMENT_EXPAND_CONTAINER} {\n height: 100%;\n width: 100%;\n position: relative;\n }\n`;\n\n// prettier-ignore\nconst STYLES_LAYOUT_IMAGE_EXPAND = `\n .${ELEMENT_EXPLAND_DECLARATION} {\n container: ${ELEMENT_NAME} / inline-size;\n overflow: clip;\n }\n\n @media (prefers-reduced-motion: no-preference) {\n @supports (animation-timeline: scroll()) {\n .${ELEMENT_EXPLAND_DECLARATION} {\n height: 180vh;\n }\n }\n }\n\n @media (${token.media.queries.tablet.min}) {\n @media (prefers-reduced-motion: no-preference) {\n @supports (animation-timeline: scroll()) {\n .${ELEMENT_EXPLAND_DECLARATION} {\n height: 200vh;\n }\n }\n }\n }\n\n .${ELEMENT_EXPLAND_DECLARATION} img {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n\n ${Container}\n ${ImageContainer}\n ${ImageSizeContainer}\n ${ImagePosition}\n ${ImageOverlayContainer}\n ${TextAnimation}\n ${TextContainer}\n ${TextLock}\n`;\n\nconst CreateImageContainer = ({ image }: TypeLayoutImageExpandProps) => {\n const imageContainer = document.createElement('div');\n const imagePosition = document.createElement('div');\n const imageSize = document.createElement('div');\n const imageOverlay = document.createElement('div');\n\n imageOverlay.classList.add(ELEMENT_EXPAND_IMAGE_OVERLAY);\n\n imageSize.classList.add(ELEMENT_EXPAND_IMAGE_SIZE);\n imageSize.appendChild(image);\n imageSize.appendChild(imageOverlay);\n\n imagePosition.classList.add(ELEMENT_EXPAND_IMAGE_POSITION);\n imagePosition.appendChild(imageSize);\n\n imageContainer.appendChild(imagePosition);\n imageContainer.classList.add(ELEMENT_EXPAND_IMAGE_CONTAINER);\n\n return imageContainer;\n};\n\nconst CreateTextContainer = ({ content }: TypeLayoutImageExpandProps) => {\n const textAnimation = document.createElement('div');\n const textContainer = document.createElement('div');\n const textLock = document.createElement('div');\n\n textLock.classList.add(ELEMENT_EXPAND_TEXT_LOCK);\n textLock.appendChild(content);\n\n textContainer.appendChild(textLock);\n textContainer.classList.add(ELEMENT_EXPAND_TEXT_CONTAINER);\n\n textAnimation.classList.add(ELEMENT_EXPAND_TEXT_ANIMATION);\n textAnimation.appendChild(textContainer);\n\n return textAnimation;\n};\n\nconst CreateImageExpandElement = (props: TypeLayoutImageExpandProps) => {\n const declaration = document.createElement('div');\n const container = document.createElement('div');\n const imageContainer = CreateImageContainer(props);\n const textContainer = CreateTextContainer(props);\n const sizeImageForText = () => {\n const textContainerHeight =\n textContainer.clientHeight +\n parsePixelValue(spacing['2xl']) * 2;\n const imageContainerHeight = container.clientHeight;\n\n if (textContainerHeight > imageContainerHeight) {\n container.style.minHeight = `${textContainerHeight}px`;\n }\n };\n\n if (isScreenZoomed() && !isPreferredReducedMotion()) {\n textContainer.style.height = '90vh';\n textContainer.style.transform = 'translateY(0)';\n }\n\n if (!CSS.supports('animation-timeline', 'view()')) {\n setTimeout(() => {\n sizeImageForText();\n }, 1000);\n window.addEventListener('resize', () => sizeImageForText());\n }\n\n container.appendChild(imageContainer);\n container.appendChild(textContainer);\n container.classList.add(ELEMENT_EXPAND_CONTAINER);\n\n declaration.appendChild(container);\n declaration.classList.add(ELEMENT_EXPLAND_DECLARATION);\n\n return { element: declaration, styles: STYLES_LAYOUT_IMAGE_EXPAND };\n};\n\nexport const createCompositeLayoutImageExpand = CreateImageExpandElement;\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"expand.js","sources":["../../../../source/composite/layout/image/expand.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-token-library';\nimport * as layout from '@universityofmaryland/web-styles-library/layout';\nimport { ElementBuilder } from '@universityofmaryland/web-builder-library';\nimport {\n parsePixelValue,\n withViewTimelineAnimation,\n} from '@universityofmaryland/web-utilities-library/styles';\nimport {\n isScreenZoomed,\n isPreferredReducedMotion,\n} from '@universityofmaryland/web-utilities-library/accessibility';\n\ntype TypeLayoutImageExpandProps = {\n content: HTMLElement;\n image: HTMLImageElement;\n};\n\nconst KEYFRAMES = `\n @keyframes img-overlay {\n from { opacity: 0; }\n to { opacity: 1; }\n }\n\n @keyframes img-size {\n to { width: 100%; height: 100vh; }\n }\n`;\n\nconst CreateImageContainer = ({ image }: TypeLayoutImageExpandProps) => {\n const imageOverlay = new ElementBuilder()\n .withClassName('layout-image-expand-image-overlay')\n .withStyles({\n element: {\n position: 'absolute',\n top: 0,\n left: 0,\n height: '100%',\n width: '100%',\n background: 'rgba(0,0,0,0.65)',\n opacity: 1,\n ...withViewTimelineAnimation({\n animation: 'img-overlay forwards',\n animationTimeline: 'view()',\n animationRangeStart: '70vh',\n animationRangeEnd: '100vh',\n }),\n },\n })\n .build();\n\n const imageSize = new ElementBuilder()\n .withClassName('layout-image-expand-image-size')\n .withStyles({\n element: {\n overflow: 'hidden',\n position: 'relative',\n ...withViewTimelineAnimation({\n width: token.spacing.maxWidth.smallest,\n height: '70vh',\n animation: 'img-size ease-in-out forwards',\n animationTimeline: 'view()',\n animationRangeStart: 'cover',\n animationRangeEnd: '200vh',\n }),\n '@supports not (animation-timeline: scroll())': {\n height: '100%',\n },\n '@media (prefers-reduced-motion: reduce)': {\n height: '100%',\n },\n '& img': {\n display: 'block',\n width: '100%',\n height: '100%',\n objectFit: 'cover',\n },\n },\n })\n .withChildren(image, imageOverlay)\n .build();\n\n const imagePosition = new ElementBuilder()\n .withClassName('layout-image-expand-image-position')\n .withStyles({\n element: {\n width: '100%',\n margin: '0 auto',\n ...withViewTimelineAnimation({\n display: 'flex',\n justifyContent: 'center',\n position: 'sticky',\n top: 0,\n animation: 'img-position ease-in-out forwards',\n animationTimeline: 'view()',\n animationRangeStart: 'cover',\n animationRangeEnd: '200vh',\n }),\n '@supports not (animation-timeline: scroll())': {\n height: '100%',\n },\n '@media (prefers-reduced-motion: reduce)': {\n height: '100%',\n },\n },\n })\n .withChild(imageSize)\n .build();\n\n return new ElementBuilder()\n .withClassName('layout-image-expand-image-container')\n .withStyles({\n element: {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n ...withViewTimelineAnimation({\n position: 'relative',\n }),\n },\n })\n .withChild(imagePosition)\n .build();\n};\n\nconst CreateTextContainer = ({ content }: TypeLayoutImageExpandProps) => {\n const textLock = new ElementBuilder()\n .withClassName('layout-image-expand-text-lock')\n .withStyles({\n element: {\n ...layout.space.horizontal.larger,\n display: 'flex',\n height: '100%',\n },\n })\n .withChild(content)\n .build();\n\n const textContainer = new ElementBuilder()\n .withClassName('layout-image-expand-text-container')\n .withStyles({\n element: {\n position: 'relative',\n paddingTop: token.spacing.max,\n paddingBottom: token.spacing.max,\n height: '100%',\n zIndex: 9999,\n },\n })\n .withChild(textLock)\n .build();\n\n return new ElementBuilder()\n .withClassName('layout-image-expand-text-animation')\n .withStyles({\n element: {\n width: '100vw',\n ...withViewTimelineAnimation({\n position: 'absolute',\n top: 0,\n height: '80vh',\n transform: 'translateY(80vh)',\n }),\n [`@media (${token.media.queries.tablet.min})`]: {\n ...withViewTimelineAnimation({\n transform: 'translateY(100vh)',\n }),\n },\n },\n })\n .withChild(textContainer)\n .build();\n};\n\nconst CreateImageExpandElement = (props: TypeLayoutImageExpandProps) => {\n const imageContainerModel = CreateImageContainer(props);\n const textContainerModel = CreateTextContainer(props);\n let containerElement!: HTMLElement;\n\n const sizeImageForText = () => {\n const textContainerHeight =\n textContainerModel.element.clientHeight +\n parsePixelValue(token.spacing['2xl']) * 2;\n const imageContainerHeight = containerElement.clientHeight;\n\n if (textContainerHeight > imageContainerHeight) {\n containerElement.style.minHeight = `${textContainerHeight}px`;\n }\n };\n\n const containerModel = new ElementBuilder()\n .withClassName('layout-image-expand-container')\n .withStyles({\n element: {\n height: '100%',\n width: '100%',\n position: 'relative',\n },\n })\n .ref((element) => {\n containerElement = element;\n })\n .withChildren(imageContainerModel, textContainerModel)\n .build();\n\n const declarationModel = new ElementBuilder()\n .withClassName('layout-image-expand-declaration')\n .withStyles({\n element: {\n containerType: 'inline-size',\n overflow: 'clip',\n ...withViewTimelineAnimation({ height: '180vh' }),\n [`@media (${token.media.queries.tablet.min})`]: {\n ...withViewTimelineAnimation({ height: '200vh' }),\n },\n },\n })\n .withChild(containerModel)\n .build();\n\n declarationModel.styles += KEYFRAMES;\n\n if (isScreenZoomed() && !isPreferredReducedMotion()) {\n textContainerModel.element.style.height = '90vh';\n textContainerModel.element.style.transform = 'translateY(0)';\n }\n\n if (!CSS.supports('animation-timeline', 'view()')) {\n setTimeout(() => {\n sizeImageForText();\n }, 1000);\n window.addEventListener('resize', () => sizeImageForText());\n }\n\n return declarationModel;\n};\n\nexport const createCompositeLayoutImageExpand = CreateImageExpandElement;\n"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,6 @@
|
|
|
1
1
|
type TypeScrollTopProps = {
|
|
2
2
|
isFixed?: boolean;
|
|
3
3
|
};
|
|
4
|
-
export declare const createCompositeLayoutScrollTop: (props: TypeScrollTopProps) =>
|
|
5
|
-
element: HTMLDivElement;
|
|
6
|
-
styles: string;
|
|
7
|
-
events: {
|
|
8
|
-
load: () => void;
|
|
9
|
-
};
|
|
10
|
-
};
|
|
4
|
+
export declare const createCompositeLayoutScrollTop: (props: TypeScrollTopProps) => import('../../../../builder/dist/index.d.ts').ElementModel<HTMLElement>;
|
|
11
5
|
export {};
|
|
12
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../source/composite/layout/scroll-top/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../source/composite/layout/scroll-top/index.ts"],"names":[],"mappings":"AAKA,KAAK,kBAAkB,GAAG;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAqIF,eAAO,MAAM,8BAA8B,UAnIJ,kBAAkB,kFAmIW,CAAC"}
|
|
@@ -1,52 +1,60 @@
|
|
|
1
1
|
import * as token from "@universityofmaryland/web-token-library";
|
|
2
|
+
import { ElementBuilder } from "@universityofmaryland/web-builder-library";
|
|
2
3
|
import { debounce } from "@universityofmaryland/web-utilities-library/performance";
|
|
3
4
|
import { arrow_up } from "@universityofmaryland/web-icons-library/arrows";
|
|
4
|
-
const ELEMENT_NAME = "umd-element-scroll-top";
|
|
5
|
-
const ELEMENT_SCROLL_TOP_DECLARATION = "scroll-top-declarion";
|
|
6
|
-
const ELEMENT_SCROLL_TOP_CONTAINER = "scroll-top-container";
|
|
7
|
-
const STYLES_SCROLL_TOP_ELEMENT = `
|
|
8
|
-
.${ELEMENT_SCROLL_TOP_DECLARATION} {
|
|
9
|
-
container: ${ELEMENT_NAME} / inline-size;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
.${ELEMENT_SCROLL_TOP_CONTAINER} {
|
|
13
|
-
background-color: ${token.color.black};
|
|
14
|
-
width: 100%;
|
|
15
|
-
height: 100%;
|
|
16
|
-
min-height: 40px;
|
|
17
|
-
display: flex;
|
|
18
|
-
justify-content: center;
|
|
19
|
-
align-items: center;
|
|
20
|
-
border: 1px solid ${token.color.gold};
|
|
21
|
-
cursor: pointer;
|
|
22
|
-
transition: transform 250ms ease-in-out;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
.${ELEMENT_SCROLL_TOP_CONTAINER} svg {
|
|
26
|
-
display: block;
|
|
27
|
-
width: 14px;
|
|
28
|
-
height: 14px;
|
|
29
|
-
}
|
|
30
|
-
`;
|
|
31
5
|
const CreateScrollTopElement = (props) => (() => {
|
|
6
|
+
const DEFAULT_STARTING_POSITION = `translateX(100vh)`;
|
|
32
7
|
const { isFixed = false } = props;
|
|
33
|
-
const declaration = document.createElement("div");
|
|
34
|
-
const container = document.createElement("button");
|
|
35
|
-
const text = document.createElement("span");
|
|
36
|
-
const defaultStartingPosition = `translateX(100vh)`;
|
|
37
|
-
const getSpacing = () => window.innerWidth > 768 ? 40 : 8;
|
|
38
8
|
let startingPosition = null;
|
|
39
9
|
let isShowing = false;
|
|
10
|
+
const textBuilder = new ElementBuilder("span").withClassName("sr-only").withHTML("Scroll To Top");
|
|
11
|
+
const containerBuilder = new ElementBuilder("button").withClassName("scroll-top-container").withHTML(arrow_up).withChild(textBuilder).withStyles({
|
|
12
|
+
element: {
|
|
13
|
+
backgroundColor: token.color.black,
|
|
14
|
+
width: "100%",
|
|
15
|
+
height: "100%",
|
|
16
|
+
minHeight: "40px",
|
|
17
|
+
display: "flex",
|
|
18
|
+
justifyContent: "center",
|
|
19
|
+
alignItems: "center",
|
|
20
|
+
border: `1px solid ${token.color.gold}`,
|
|
21
|
+
cursor: "pointer",
|
|
22
|
+
transition: "transform 250ms ease-in-out",
|
|
23
|
+
"& svg": {
|
|
24
|
+
display: "block",
|
|
25
|
+
width: "14px",
|
|
26
|
+
height: "14px"
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}).on("click", () => {
|
|
30
|
+
window.scrollTo({ top: 0, left: 0, behavior: "smooth" });
|
|
31
|
+
});
|
|
32
|
+
const declarationBuilder = new ElementBuilder().withClassName("scroll-top-declarion").withChild(containerBuilder).withStyles({
|
|
33
|
+
element: {
|
|
34
|
+
container: "umd-element-scroll-top / inline-size",
|
|
35
|
+
width: "100%",
|
|
36
|
+
height: "100%",
|
|
37
|
+
...isFixed && {
|
|
38
|
+
width: "40px",
|
|
39
|
+
height: "40px",
|
|
40
|
+
position: "absolute",
|
|
41
|
+
inset: "0",
|
|
42
|
+
margin: "auto"
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
const container = containerBuilder.getElement();
|
|
47
|
+
const declaration = declarationBuilder.getElement();
|
|
40
48
|
const eventResize = () => {
|
|
41
49
|
startingPosition = declaration.getBoundingClientRect().right;
|
|
50
|
+
if (isFixed && !isShowing) {
|
|
51
|
+
setHiddenPosition();
|
|
52
|
+
}
|
|
42
53
|
};
|
|
43
54
|
const eventScroll = () => {
|
|
44
|
-
const windowHeight = window.innerHeight;
|
|
45
55
|
const pagePosition = window.scrollY;
|
|
46
|
-
const isPastFirstView = pagePosition >
|
|
47
|
-
|
|
48
|
-
const showWindow = isPastFirstView && !isNearBottom;
|
|
49
|
-
if (showWindow) {
|
|
56
|
+
const isPastFirstView = pagePosition > 0;
|
|
57
|
+
if (isPastFirstView) {
|
|
50
58
|
setVisiblePosition();
|
|
51
59
|
} else {
|
|
52
60
|
setHiddenPosition();
|
|
@@ -59,58 +67,38 @@ const CreateScrollTopElement = (props) => (() => {
|
|
|
59
67
|
}
|
|
60
68
|
};
|
|
61
69
|
const setHiddenPosition = () => {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
const spacing = getSpacing();
|
|
66
|
-
const translateAmount = window.innerWidth - startingPosition;
|
|
67
|
-
const position = translateAmount + spacing + container.offsetWidth;
|
|
68
|
-
container.style.transform = `translateX(${position}px)`;
|
|
69
|
-
} else {
|
|
70
|
-
container.style.transform = defaultStartingPosition;
|
|
70
|
+
const getSpacing = () => {
|
|
71
|
+
if (window.innerWidth > 768) {
|
|
72
|
+
return 40;
|
|
71
73
|
}
|
|
74
|
+
return 8;
|
|
75
|
+
};
|
|
76
|
+
isShowing = false;
|
|
77
|
+
if (startingPosition) {
|
|
78
|
+
const spacing = getSpacing();
|
|
79
|
+
const translateAmount = window.innerWidth - startingPosition;
|
|
80
|
+
const position = translateAmount + spacing + container.offsetWidth;
|
|
81
|
+
container.style.transform = `translateX(${position}px)`;
|
|
82
|
+
} else {
|
|
83
|
+
container.style.transform = DEFAULT_STARTING_POSITION;
|
|
72
84
|
}
|
|
73
85
|
};
|
|
74
86
|
const load = () => {
|
|
75
87
|
startingPosition = declaration.getBoundingClientRect().right;
|
|
76
88
|
container.style.transition = "none";
|
|
77
|
-
|
|
89
|
+
if (isFixed) {
|
|
90
|
+
eventScroll();
|
|
91
|
+
}
|
|
78
92
|
setTimeout(() => {
|
|
79
93
|
container.style.transition = "transform 250ms ease-in-out";
|
|
80
94
|
}, 100);
|
|
81
95
|
};
|
|
82
|
-
text.classList.add("sr-only");
|
|
83
|
-
text.innerHTML = "Scroll To Top";
|
|
84
|
-
container.classList.add(ELEMENT_SCROLL_TOP_CONTAINER);
|
|
85
|
-
container.addEventListener("click", () => {
|
|
86
|
-
window.scrollTo({
|
|
87
|
-
top: 0,
|
|
88
|
-
left: 0,
|
|
89
|
-
behavior: "smooth"
|
|
90
|
-
});
|
|
91
|
-
});
|
|
92
|
-
container.innerHTML = arrow_up;
|
|
93
|
-
container.appendChild(text);
|
|
94
|
-
declaration.appendChild(container);
|
|
95
|
-
declaration.classList.add(ELEMENT_SCROLL_TOP_DECLARATION);
|
|
96
96
|
if (isFixed) {
|
|
97
|
-
container.style.transform =
|
|
98
|
-
window.addEventListener(
|
|
99
|
-
|
|
100
|
-
debounce(() => eventScroll(), 10)
|
|
101
|
-
);
|
|
102
|
-
window.addEventListener(
|
|
103
|
-
"resize",
|
|
104
|
-
debounce(() => eventResize(), 20)
|
|
105
|
-
);
|
|
97
|
+
container.style.transform = DEFAULT_STARTING_POSITION;
|
|
98
|
+
window.addEventListener("scroll", debounce(eventScroll, 10));
|
|
99
|
+
window.addEventListener("resize", debounce(eventResize, 20));
|
|
106
100
|
}
|
|
107
|
-
return {
|
|
108
|
-
element: declaration,
|
|
109
|
-
styles: STYLES_SCROLL_TOP_ELEMENT,
|
|
110
|
-
events: {
|
|
111
|
-
load
|
|
112
|
-
}
|
|
113
|
-
};
|
|
101
|
+
return declarationBuilder.withEvents({ load }).build();
|
|
114
102
|
})();
|
|
115
103
|
const createCompositeLayoutScrollTop = CreateScrollTopElement;
|
|
116
104
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../source/composite/layout/scroll-top/index.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-token-library';\nimport { debounce } from '@universityofmaryland/web-utilities-library/performance';\nimport { arrow_up as iconArrowUp } from '@universityofmaryland/web-icons-library/arrows';\n\ntype TypeScrollTopProps = {\n isFixed?: boolean;\n};\n\nconst
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../source/composite/layout/scroll-top/index.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-token-library';\nimport { ElementBuilder } from '@universityofmaryland/web-builder-library';\nimport { debounce } from '@universityofmaryland/web-utilities-library/performance';\nimport { arrow_up as iconArrowUp } from '@universityofmaryland/web-icons-library/arrows';\n\ntype TypeScrollTopProps = {\n isFixed?: boolean;\n};\n\nconst CreateScrollTopElement = (props: TypeScrollTopProps) =>\n (() => {\n const DEFAULT_STARTING_POSITION = `translateX(100vh)`;\n const { isFixed = false } = props;\n\n let startingPosition: null | number = null;\n let isShowing = false;\n\n const textBuilder = new ElementBuilder('span')\n .withClassName('sr-only')\n .withHTML('Scroll To Top');\n\n const containerBuilder = new ElementBuilder('button')\n .withClassName('scroll-top-container')\n .withHTML(iconArrowUp)\n .withChild(textBuilder)\n .withStyles({\n element: {\n backgroundColor: token.color.black,\n width: '100%',\n height: '100%',\n minHeight: '40px',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n border: `1px solid ${token.color.gold}`,\n cursor: 'pointer',\n transition: 'transform 250ms ease-in-out',\n '& svg': {\n display: 'block',\n width: '14px',\n height: '14px',\n },\n },\n })\n .on('click', () => {\n window.scrollTo({ top: 0, left: 0, behavior: 'smooth' });\n });\n\n const declarationBuilder = new ElementBuilder()\n .withClassName('scroll-top-declarion')\n .withChild(containerBuilder)\n .withStyles({\n element: {\n container: 'umd-element-scroll-top / inline-size',\n width: '100%',\n height: '100%',\n ...(isFixed && {\n width: '40px',\n height: '40px',\n position: 'absolute',\n inset: '0',\n margin: 'auto',\n }),\n },\n });\n\n const container = containerBuilder.getElement() as HTMLButtonElement;\n const declaration = declarationBuilder.getElement() as HTMLDivElement;\n\n const eventResize = () => {\n startingPosition = declaration.getBoundingClientRect().right;\n\n if (isFixed && !isShowing) {\n setHiddenPosition();\n }\n };\n\n const eventScroll = () => {\n const pagePosition = window.scrollY;\n const isPastFirstView = pagePosition > 0;\n\n if (isPastFirstView) {\n setVisiblePosition();\n } else {\n setHiddenPosition();\n }\n };\n\n const setVisiblePosition = () => {\n if (!isShowing) {\n container.style.transform = 'translateX(0)';\n isShowing = true;\n }\n };\n\n const setHiddenPosition = () => {\n const getSpacing = () => {\n if (window.innerWidth > 768) {\n return 40;\n }\n\n return 8;\n };\n\n isShowing = false;\n\n if (startingPosition) {\n const spacing = getSpacing();\n const translateAmount = window.innerWidth - startingPosition;\n const position = translateAmount + spacing + container.offsetWidth;\n\n container.style.transform = `translateX(${position}px)`;\n } else {\n container.style.transform = DEFAULT_STARTING_POSITION;\n }\n };\n\n const load = () => {\n startingPosition = declaration.getBoundingClientRect().right;\n container.style.transition = 'none';\n\n if (isFixed) {\n eventScroll();\n }\n\n setTimeout(() => {\n container.style.transition = 'transform 250ms ease-in-out';\n }, 100);\n };\n\n if (isFixed) {\n container.style.transform = DEFAULT_STARTING_POSITION;\n\n window.addEventListener('scroll', debounce(eventScroll, 10));\n window.addEventListener('resize', debounce(eventResize, 20));\n }\n\n return declarationBuilder.withEvents({ load }).build();\n })();\n\nexport const createCompositeLayoutScrollTop = CreateScrollTopElement;\n"],"names":["iconArrowUp"],"mappings":"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"}
|
|
@@ -4,8 +4,8 @@ type TypeStickyProps = {
|
|
|
4
4
|
isStickyLast?: boolean | null;
|
|
5
5
|
topPosition?: string | null;
|
|
6
6
|
};
|
|
7
|
-
export declare const createCompositeLayoutStickyColumns: (
|
|
8
|
-
element:
|
|
7
|
+
export declare const createCompositeLayoutStickyColumns: (props: TypeStickyProps) => {
|
|
8
|
+
element: HTMLElement;
|
|
9
9
|
styles: string;
|
|
10
10
|
events: {
|
|
11
11
|
setPosition: ({ value }: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../source/composite/layout/sticky-columns/index.ts"],"names":[],"mappings":"AAIA,KAAK,eAAe,GAAG;IACrB,YAAY,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAClC,YAAY,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAClC,YAAY,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../source/composite/layout/sticky-columns/index.ts"],"names":[],"mappings":"AAIA,KAAK,eAAe,GAAG;IACrB,YAAY,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAClC,YAAY,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAClC,YAAY,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,CAAC;AA+EF,eAAO,MAAM,kCAAkC,UA7EJ,eAAe;;;;iCAIxB;YAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;SAAE;;CAyEkB,CAAC"}
|
|
@@ -1,84 +1,56 @@
|
|
|
1
1
|
import * as token from "@universityofmaryland/web-token-library";
|
|
2
2
|
import * as layout from "@universityofmaryland/web-styles-library/layout";
|
|
3
|
-
import {
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
const ELEMENT_STICKY_CONTAINER_WRAPPER = "sticky-columns-container-wrapper";
|
|
8
|
-
const ELEMENT_STICKY_COLUMN = "sticky-column";
|
|
9
|
-
const ELEMENT_STATIC_COLUMN = "static-column";
|
|
10
|
-
const OVERWRITE_STICKY_LAST_STICKY = `.${ELEMENT_STICKY_CONTAINER}[${ATTRIBUTE_STICKY_LAST}] .${ELEMENT_STICKY_COLUMN}`;
|
|
11
|
-
const OverwriteStickyLast = `
|
|
12
|
-
@media (min-width: ${token.media.breakpoints.highDef.min}) {
|
|
13
|
-
${OVERWRITE_STICKY_LAST_STICKY} {
|
|
14
|
-
order: 2;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
`;
|
|
18
|
-
const ColumnSticky = `
|
|
19
|
-
@media (min-width: ${token.media.breakpoints.highDef.min}) {
|
|
20
|
-
.${ELEMENT_STICKY_COLUMN} {
|
|
21
|
-
position: sticky;
|
|
22
|
-
top: 32px;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
`;
|
|
26
|
-
const STYLES_STICKY_COLUMNS_ELEMENT = `
|
|
27
|
-
.${ELEMENT_STICKY_CONTAINER} {
|
|
28
|
-
container: ${ELEMENT_NAME} / inline-size;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
${jssToCSS({
|
|
32
|
-
styleObj: {
|
|
33
|
-
[`.${ELEMENT_STICKY_CONTAINER_WRAPPER}`]: layout.grid.gap.two
|
|
34
|
-
}
|
|
35
|
-
})}
|
|
36
|
-
|
|
37
|
-
.${ELEMENT_STICKY_CONTAINER_WRAPPER} {
|
|
38
|
-
align-items: start;
|
|
39
|
-
grid-template-columns: 1fr;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
@media (min-width: ${token.media.breakpoints.highDef.min}) {
|
|
43
|
-
.${ELEMENT_STICKY_CONTAINER_WRAPPER} {
|
|
44
|
-
grid-template-columns: 1fr 1fr;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
${ColumnSticky}
|
|
49
|
-
${OverwriteStickyLast}
|
|
50
|
-
`;
|
|
51
|
-
const CreateStickyColumnsElement = (element) => {
|
|
52
|
-
const { stickyColumn, staticColumn, isStickyLast, topPosition } = element;
|
|
53
|
-
const container = document.createElement("div");
|
|
54
|
-
const wrapper = document.createElement("div");
|
|
55
|
-
const stickyElement = document.createElement("div");
|
|
3
|
+
import { ElementBuilder } from "@universityofmaryland/web-builder-library";
|
|
4
|
+
const CreateStickyColumnsElement = (props) => {
|
|
5
|
+
const { stickyColumn, staticColumn, isStickyLast, topPosition } = props;
|
|
6
|
+
let stickyColumnElement = null;
|
|
56
7
|
const setPosition = ({ value }) => {
|
|
8
|
+
if (!stickyColumnElement) return;
|
|
57
9
|
if (value) {
|
|
58
|
-
|
|
10
|
+
stickyColumnElement.style.top = value;
|
|
59
11
|
} else {
|
|
60
|
-
|
|
12
|
+
stickyColumnElement.style.removeProperty("top");
|
|
61
13
|
}
|
|
62
14
|
};
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
15
|
+
const createStickyColumn = () => {
|
|
16
|
+
if (!stickyColumn) return null;
|
|
17
|
+
return new ElementBuilder().withClassName("sticky-column").withStyles({
|
|
18
|
+
element: {
|
|
19
|
+
[`@media (${token.media.queries.highDef.min})`]: {
|
|
20
|
+
position: "sticky",
|
|
21
|
+
top: "32px",
|
|
22
|
+
...isStickyLast && { order: 2 }
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}).withChild(stickyColumn).ref((element) => {
|
|
26
|
+
stickyColumnElement = element;
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
const createStaticColumn = () => {
|
|
30
|
+
if (!staticColumn) return null;
|
|
31
|
+
return new ElementBuilder(staticColumn).withClassName("static-column");
|
|
32
|
+
};
|
|
33
|
+
const children = [createStickyColumn(), createStaticColumn()].filter((child) => child !== null);
|
|
34
|
+
const wrapperModel = new ElementBuilder().withClassName("sticky-columns-container-wrapper").styled(layout.grid.gap.two).withStyles({
|
|
35
|
+
element: {
|
|
36
|
+
alignItems: "start",
|
|
37
|
+
gridTemplateColumns: "1fr",
|
|
38
|
+
[`@media (${token.media.queries.highDef.min})`]: {
|
|
39
|
+
gridTemplateColumns: "1fr 1fr"
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}).withChildren(...children).build();
|
|
43
|
+
const containerModel = new ElementBuilder().withClassName("sticky-columns-container").withStyles({
|
|
44
|
+
element: {
|
|
45
|
+
containerType: "inline-size"
|
|
46
|
+
}
|
|
47
|
+
}).withChild(wrapperModel).build();
|
|
76
48
|
if (topPosition) {
|
|
77
49
|
setPosition({ value: topPosition });
|
|
78
50
|
}
|
|
79
51
|
return {
|
|
80
|
-
element:
|
|
81
|
-
styles:
|
|
52
|
+
element: containerModel.element,
|
|
53
|
+
styles: containerModel.styles,
|
|
82
54
|
events: {
|
|
83
55
|
setPosition
|
|
84
56
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../source/composite/layout/sticky-columns/index.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-token-library';\nimport * as layout from '@universityofmaryland/web-styles-library/layout';\nimport {
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../source/composite/layout/sticky-columns/index.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-token-library';\nimport * as layout from '@universityofmaryland/web-styles-library/layout';\nimport { ElementBuilder } from '@universityofmaryland/web-builder-library';\n\ntype TypeStickyProps = {\n stickyColumn?: HTMLElement | null;\n staticColumn?: HTMLElement | null;\n isStickyLast?: boolean | null;\n topPosition?: string | null;\n};\n\nconst CreateStickyColumnsElement = (props: TypeStickyProps) => {\n const { stickyColumn, staticColumn, isStickyLast, topPosition } = props;\n let stickyColumnElement: HTMLElement | null = null;\n\n const setPosition = ({ value }: { value: string | null }) => {\n if (!stickyColumnElement) return;\n if (value) {\n stickyColumnElement.style.top = value;\n } else {\n stickyColumnElement.style.removeProperty('top');\n }\n };\n\n const createStickyColumn = () => {\n if (!stickyColumn) return null;\n return new ElementBuilder()\n .withClassName('sticky-column')\n .withStyles({\n element: {\n [`@media (${token.media.queries.highDef.min})`]: {\n position: 'sticky',\n top: '32px',\n ...(isStickyLast && { order: 2 }),\n },\n },\n })\n .withChild(stickyColumn)\n .ref((element) => {\n stickyColumnElement = element;\n });\n };\n\n const createStaticColumn = () => {\n if (!staticColumn) return null;\n return new ElementBuilder(staticColumn).withClassName('static-column');\n };\n\n const children = [createStickyColumn(), createStaticColumn()].filter((child) => child !== null);\n\n const wrapperModel = new ElementBuilder()\n .withClassName('sticky-columns-container-wrapper')\n .styled(layout.grid.gap.two)\n .withStyles({\n element: {\n alignItems: 'start',\n gridTemplateColumns: '1fr',\n [`@media (${token.media.queries.highDef.min})`]: {\n gridTemplateColumns: '1fr 1fr',\n },\n },\n })\n .withChildren(...children)\n .build();\n\n const containerModel = new ElementBuilder()\n .withClassName('sticky-columns-container')\n .withStyles({\n element: {\n containerType: 'inline-size',\n },\n })\n .withChild(wrapperModel)\n .build();\n\n if (topPosition) {\n setPosition({ value: topPosition });\n }\n\n return {\n element: containerModel.element,\n styles: containerModel.styles,\n events: {\n setPosition,\n },\n };\n};\n\nexport const createCompositeLayoutStickyColumns = CreateStickyColumnsElement;\n"],"names":[],"mappings":";;;AAWA,MAAM,6BAA6B,CAAC,UAA2B;AAC7D,QAAM,EAAE,cAAc,cAAc,cAAc,gBAAgB;AAClE,MAAI,sBAA0C;AAE9C,QAAM,cAAc,CAAC,EAAE,YAAsC;AAC3D,QAAI,CAAC,oBAAqB;AAC1B,QAAI,OAAO;AACT,0BAAoB,MAAM,MAAM;AAAA,IAClC,OAAO;AACL,0BAAoB,MAAM,eAAe,KAAK;AAAA,IAChD;AAAA,EACF;AAEA,QAAM,qBAAqB,MAAM;AAC/B,QAAI,CAAC,aAAc,QAAO;AAC1B,WAAO,IAAI,eAAA,EACR,cAAc,eAAe,EAC7B,WAAW;AAAA,MACV,SAAS;AAAA,QACP,CAAC,WAAW,MAAM,MAAM,QAAQ,QAAQ,GAAG,GAAG,GAAG;AAAA,UAC/C,UAAU;AAAA,UACV,KAAK;AAAA,UACL,GAAI,gBAAgB,EAAE,OAAO,EAAA;AAAA,QAAE;AAAA,MACjC;AAAA,IACF,CACD,EACA,UAAU,YAAY,EACtB,IAAI,CAAC,YAAY;AAChB,4BAAsB;AAAA,IACxB,CAAC;AAAA,EACL;AAEA,QAAM,qBAAqB,MAAM;AAC/B,QAAI,CAAC,aAAc,QAAO;AAC1B,WAAO,IAAI,eAAe,YAAY,EAAE,cAAc,eAAe;AAAA,EACvE;AAEA,QAAM,WAAW,CAAC,mBAAA,GAAsB,mBAAA,CAAoB,EAAE,OAAO,CAAC,UAAU,UAAU,IAAI;AAE9F,QAAM,eAAe,IAAI,iBACtB,cAAc,kCAAkC,EAChD,OAAO,OAAO,KAAK,IAAI,GAAG,EAC1B,WAAW;AAAA,IACV,SAAS;AAAA,MACP,YAAY;AAAA,MACZ,qBAAqB;AAAA,MACrB,CAAC,WAAW,MAAM,MAAM,QAAQ,QAAQ,GAAG,GAAG,GAAG;AAAA,QAC/C,qBAAqB;AAAA,MAAA;AAAA,IACvB;AAAA,EACF,CACD,EACA,aAAa,GAAG,QAAQ,EACxB,MAAA;AAEH,QAAM,iBAAiB,IAAI,eAAA,EACxB,cAAc,0BAA0B,EACxC,WAAW;AAAA,IACV,SAAS;AAAA,MACP,eAAe;AAAA,IAAA;AAAA,EACjB,CACD,EACA,UAAU,YAAY,EACtB,MAAA;AAEH,MAAI,aAAa;AACf,gBAAY,EAAE,OAAO,aAAa;AAAA,EACpC;AAEA,SAAO;AAAA,IACL,SAAS,eAAe;AAAA,IACxB,QAAQ,eAAe;AAAA,IACvB,QAAQ;AAAA,MACN;AAAA,IAAA;AAAA,EACF;AAEJ;AAEO,MAAM,qCAAqC;"}
|
|
@@ -12,7 +12,7 @@ import "@universityofmaryland/web-icons-library/files";
|
|
|
12
12
|
import "@universityofmaryland/web-icons-library/brand";
|
|
13
13
|
import "@universityofmaryland/web-icons-library/arrows";
|
|
14
14
|
import "@universityofmaryland/web-utilities-library/performance";
|
|
15
|
-
import "
|
|
15
|
+
import "@universityofmaryland/web-utilities-library/styles";
|
|
16
16
|
import "../../../atomic/animations/brand/card-stack.js";
|
|
17
17
|
import { createImageBackground } from "../../../atomic/assets/image/background.js";
|
|
18
18
|
import "@universityofmaryland/web-styles-library";
|
|
@@ -21,10 +21,10 @@ import "@universityofmaryland/web-icons-library/location";
|
|
|
21
21
|
import "@universityofmaryland/web-icons-library/calendar";
|
|
22
22
|
import "@universityofmaryland/web-utilities-library/theme";
|
|
23
23
|
import "../../../atomic/layout/block/stacked.js";
|
|
24
|
-
import "../../../atomic/layout/overlay/modal.js";
|
|
25
24
|
import "../../../atomic/layout/person/columns.js";
|
|
26
25
|
import "@universityofmaryland/web-icons-library/social";
|
|
27
|
-
import "
|
|
26
|
+
import "@universityofmaryland/web-utilities-library/string";
|
|
27
|
+
import "@universityofmaryland/web-utilities-library/animation";
|
|
28
28
|
import "../../../atomic/text-lockup/small.js";
|
|
29
29
|
const CreateGifElement = ({ image }) => {
|
|
30
30
|
const container = document.createElement("div");
|
|
@@ -4,10 +4,12 @@ export type TypeMediaInlineRequirements = {
|
|
|
4
4
|
isThemeDark?: boolean;
|
|
5
5
|
};
|
|
6
6
|
export declare const createCompositeMediaInlineCaption: (props: TypeMediaInlineRequirements) => {
|
|
7
|
-
element: HTMLDivElement;
|
|
8
7
|
events: {
|
|
9
|
-
load: () =>
|
|
8
|
+
load: () => null | undefined;
|
|
10
9
|
};
|
|
10
|
+
element: HTMLElement;
|
|
11
11
|
styles: string;
|
|
12
|
+
update?: (props: Partial<import('../../../../builder/dist/index.d.ts').BuilderOptions>) => void;
|
|
13
|
+
destroy?: () => void;
|
|
12
14
|
};
|
|
13
15
|
//# sourceMappingURL=caption.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"caption.d.ts","sourceRoot":"","sources":["../../../../source/composite/media/inline/caption.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"caption.d.ts","sourceRoot":"","sources":["../../../../source/composite/media/inline/caption.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,2BAA2B,GAAG;IACxC,KAAK,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAChC,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC7B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AA8GF,eAAO,MAAM,iCAAiC,UA5GP,2BAA2B;;;;;;;;CA4GK,CAAC"}
|