@universityofmaryland/web-elements-library 1.5.3 → 1.5.5
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/_types.d.ts +2 -9
- package/dist/_types.d.ts.map +1 -1
- package/dist/atomic/_types.d.ts +2 -2
- package/dist/atomic/_types.d.ts.map +1 -1
- package/dist/atomic/actions/icon.d.ts +1 -5
- package/dist/atomic/actions/icon.d.ts.map +1 -1
- package/dist/atomic/actions/icon.js +43 -48
- package/dist/atomic/actions/icon.js.map +1 -1
- package/dist/atomic/actions/icon.mjs +43 -48
- package/dist/atomic/actions/icon.mjs.map +1 -1
- package/dist/atomic/actions/text.d.ts +4 -16
- package/dist/atomic/actions/text.d.ts.map +1 -1
- package/dist/atomic/actions/text.js +82 -104
- package/dist/atomic/actions/text.js.map +1 -1
- package/dist/atomic/actions/text.mjs +81 -106
- package/dist/atomic/actions/text.mjs.map +1 -1
- package/dist/atomic/animations/actions/indicator.js +1 -1
- package/dist/atomic/animations/actions/indicator.js.map +1 -1
- package/dist/atomic/animations/actions/indicator.mjs +1 -1
- package/dist/atomic/animations/actions/indicator.mjs.map +1 -1
- package/dist/atomic/animations/brand/card-stack.d.ts +2 -1
- package/dist/atomic/animations/brand/card-stack.d.ts.map +1 -1
- package/dist/atomic/animations/brand/card-stack.js +148 -172
- package/dist/atomic/animations/brand/card-stack.js.map +1 -1
- package/dist/atomic/animations/brand/card-stack.mjs +140 -164
- package/dist/atomic/animations/brand/card-stack.mjs.map +1 -1
- package/dist/atomic/animations/brand/chevron-scroll.js +1 -1
- package/dist/atomic/animations/brand/chevron-scroll.js.map +1 -1
- package/dist/atomic/animations/brand/chevron-scroll.mjs +1 -1
- package/dist/atomic/animations/brand/chevron-scroll.mjs.map +1 -1
- package/dist/atomic/assets/image/background.d.ts +1 -5
- package/dist/atomic/assets/image/background.d.ts.map +1 -1
- package/dist/atomic/assets/image/background.js +40 -40
- package/dist/atomic/assets/image/background.js.map +1 -1
- package/dist/atomic/assets/image/background.mjs +23 -40
- package/dist/atomic/assets/image/background.mjs.map +1 -1
- package/dist/atomic/assets/image/gif.d.ts +1 -5
- package/dist/atomic/assets/image/gif.d.ts.map +1 -1
- package/dist/atomic/assets/image/gif.js +28 -12
- package/dist/atomic/assets/image/gif.js.map +1 -1
- package/dist/atomic/assets/image/gif.mjs +11 -12
- package/dist/atomic/assets/image/gif.mjs.map +1 -1
- package/dist/atomic/assets/image/placeholder.d.ts +1 -5
- package/dist/atomic/assets/image/placeholder.d.ts.map +1 -1
- package/dist/atomic/assets/video/observed-auto-play.d.ts +1 -9
- package/dist/atomic/assets/video/observed-auto-play.d.ts.map +1 -1
- package/dist/atomic/assets/video/observed-auto-play.js +9 -5
- package/dist/atomic/assets/video/observed-auto-play.js.map +1 -1
- package/dist/atomic/assets/video/observed-auto-play.mjs +9 -5
- package/dist/atomic/assets/video/observed-auto-play.mjs.map +1 -1
- package/dist/atomic/assets/video/toggle.d.ts +1 -9
- package/dist/atomic/assets/video/toggle.d.ts.map +1 -1
- package/dist/atomic/assets/video/toggle.js +38 -40
- package/dist/atomic/assets/video/toggle.js.map +1 -1
- package/dist/atomic/assets/video/toggle.mjs +21 -40
- package/dist/atomic/assets/video/toggle.mjs.map +1 -1
- package/dist/atomic/buttons/fullscreen.d.ts +1 -5
- package/dist/atomic/buttons/fullscreen.d.ts.map +1 -1
- package/dist/atomic/buttons/fullscreen.js +21 -15
- package/dist/atomic/buttons/fullscreen.js.map +1 -1
- package/dist/atomic/buttons/fullscreen.mjs +4 -15
- package/dist/atomic/buttons/fullscreen.mjs.map +1 -1
- package/dist/atomic/events/meta.d.ts +1 -5
- package/dist/atomic/events/meta.d.ts.map +1 -1
- package/dist/atomic/events/meta.js +48 -48
- package/dist/atomic/events/meta.js.map +1 -1
- package/dist/atomic/events/meta.mjs +31 -48
- package/dist/atomic/events/meta.mjs.map +1 -1
- package/dist/atomic/events/sign.d.ts +1 -5
- package/dist/atomic/events/sign.d.ts.map +1 -1
- package/dist/atomic/events/sign.js +84 -93
- package/dist/atomic/events/sign.js.map +1 -1
- package/dist/atomic/events/sign.mjs +82 -93
- package/dist/atomic/events/sign.mjs.map +1 -1
- package/dist/atomic/layout/block/stacked.d.ts +7 -19
- package/dist/atomic/layout/block/stacked.d.ts.map +1 -1
- package/dist/atomic/layout/block/stacked.js +14 -20
- package/dist/atomic/layout/block/stacked.js.map +1 -1
- package/dist/atomic/layout/block/stacked.mjs +14 -20
- package/dist/atomic/layout/block/stacked.mjs.map +1 -1
- package/dist/atomic/layout/overlay/modal.js +1 -1
- package/dist/atomic/layout/overlay/modal.js.map +1 -1
- package/dist/atomic/layout/overlay/modal.mjs +1 -1
- package/dist/atomic/layout/overlay/modal.mjs.map +1 -1
- package/dist/atomic/layout/person/columns.d.ts +4 -20
- package/dist/atomic/layout/person/columns.d.ts.map +1 -1
- package/dist/atomic/layout/person/columns.js +56 -66
- package/dist/atomic/layout/person/columns.js.map +1 -1
- package/dist/atomic/layout/person/columns.mjs +56 -66
- package/dist/atomic/layout/person/columns.mjs.map +1 -1
- package/dist/atomic/text/stat.d.ts +2 -3
- package/dist/atomic/text/stat.d.ts.map +1 -1
- package/dist/atomic/text/stat.js +101 -119
- package/dist/atomic/text/stat.js.map +1 -1
- package/dist/atomic/text/stat.mjs +100 -119
- package/dist/atomic/text/stat.mjs.map +1 -1
- package/dist/atomic/text-lockup/contact.d.ts +1 -5
- package/dist/atomic/text-lockup/contact.d.ts.map +1 -1
- package/dist/atomic/text-lockup/contact.js +65 -105
- package/dist/atomic/text-lockup/contact.js.map +1 -1
- package/dist/atomic/text-lockup/contact.mjs +60 -103
- package/dist/atomic/text-lockup/contact.mjs.map +1 -1
- package/dist/atomic/text-lockup/date.d.ts.map +1 -1
- package/dist/atomic/text-lockup/date.js +6 -1
- package/dist/atomic/text-lockup/date.js.map +1 -1
- package/dist/atomic/text-lockup/date.mjs +6 -1
- package/dist/atomic/text-lockup/date.mjs.map +1 -1
- package/dist/atomic/text-lockup/large.d.ts +3 -7
- package/dist/atomic/text-lockup/large.d.ts.map +1 -1
- package/dist/atomic/text-lockup/large.js +62 -71
- package/dist/atomic/text-lockup/large.js.map +1 -1
- package/dist/atomic/text-lockup/large.mjs +59 -71
- package/dist/atomic/text-lockup/large.mjs.map +1 -1
- package/dist/atomic/text-lockup/medium.d.ts +5 -9
- package/dist/atomic/text-lockup/medium.d.ts.map +1 -1
- package/dist/atomic/text-lockup/medium.js +76 -84
- package/dist/atomic/text-lockup/medium.js.map +1 -1
- package/dist/atomic/text-lockup/medium.mjs +70 -82
- package/dist/atomic/text-lockup/medium.mjs.map +1 -1
- package/dist/atomic/text-lockup/person.d.ts +1 -5
- package/dist/atomic/text-lockup/person.d.ts.map +1 -1
- package/dist/atomic/text-lockup/person.js +102 -101
- package/dist/atomic/text-lockup/person.js.map +1 -1
- package/dist/atomic/text-lockup/person.mjs +99 -101
- package/dist/atomic/text-lockup/person.mjs.map +1 -1
- package/dist/atomic/text-lockup/small-scaling.d.ts +1 -5
- package/dist/atomic/text-lockup/small-scaling.d.ts.map +1 -1
- package/dist/atomic/text-lockup/small-scaling.js +64 -39
- package/dist/atomic/text-lockup/small-scaling.js.map +1 -1
- package/dist/atomic/text-lockup/small-scaling.mjs +44 -38
- package/dist/atomic/text-lockup/small-scaling.mjs.map +1 -1
- package/dist/atomic/text-lockup/small.d.ts +11 -25
- package/dist/atomic/text-lockup/small.d.ts.map +1 -1
- package/dist/atomic/text-lockup/small.js +70 -69
- package/dist/atomic/text-lockup/small.js.map +1 -1
- package/dist/atomic/text-lockup/small.mjs +64 -66
- package/dist/atomic/text-lockup/small.mjs.map +1 -1
- package/dist/composite/alert/elements/closeButton.d.ts +7 -0
- package/dist/composite/alert/elements/closeButton.d.ts.map +1 -0
- package/dist/composite/alert/elements/closeButton.js +51 -0
- package/dist/composite/alert/elements/closeButton.js.map +1 -0
- package/dist/composite/alert/elements/closeButton.mjs +34 -0
- package/dist/composite/alert/elements/closeButton.mjs.map +1 -0
- package/dist/composite/alert/elements/text.d.ts +3 -13
- package/dist/composite/alert/elements/text.d.ts.map +1 -1
- package/dist/composite/alert/elements/text.js +60 -81
- package/dist/composite/alert/elements/text.js.map +1 -1
- package/dist/composite/alert/elements/text.mjs +56 -80
- package/dist/composite/alert/elements/text.mjs.map +1 -1
- package/dist/composite/alert/globals.d.ts +4 -0
- package/dist/composite/alert/globals.d.ts.map +1 -0
- package/dist/composite/alert/globals.js +7 -0
- package/dist/composite/alert/globals.js.map +1 -0
- package/dist/composite/alert/globals.mjs +7 -0
- package/dist/composite/alert/globals.mjs.map +1 -0
- package/dist/composite/alert/index.d.ts +2 -2
- package/dist/composite/alert/index.d.ts.map +1 -1
- package/dist/composite/alert/index.js +2 -2
- package/dist/composite/alert/index.mjs +4 -4
- package/dist/composite/alert/page.d.ts +5 -12
- package/dist/composite/alert/page.d.ts.map +1 -1
- package/dist/composite/alert/page.js +44 -113
- package/dist/composite/alert/page.js.map +1 -1
- package/dist/composite/alert/page.mjs +44 -112
- package/dist/composite/alert/page.mjs.map +1 -1
- package/dist/composite/alert/site.d.ts +5 -11
- package/dist/composite/alert/site.d.ts.map +1 -1
- package/dist/composite/alert/site.js +60 -109
- package/dist/composite/alert/site.js.map +1 -1
- package/dist/composite/alert/site.mjs +61 -109
- package/dist/composite/alert/site.mjs.map +1 -1
- package/dist/composite/banner/promo.js +1 -1
- package/dist/composite/banner/promo.js.map +1 -1
- package/dist/composite/banner/promo.mjs +1 -1
- package/dist/composite/banner/promo.mjs.map +1 -1
- package/dist/composite/card/block.d.ts +1 -5
- package/dist/composite/card/block.d.ts.map +1 -1
- package/dist/composite/card/block.js +7 -5
- package/dist/composite/card/block.js.map +1 -1
- package/dist/composite/card/block.mjs +7 -5
- package/dist/composite/card/block.mjs.map +1 -1
- package/dist/composite/card/list.d.ts +1 -5
- package/dist/composite/card/list.d.ts.map +1 -1
- package/dist/composite/card/list.js +52 -64
- package/dist/composite/card/list.js.map +1 -1
- package/dist/composite/card/list.mjs +52 -64
- package/dist/composite/card/list.mjs.map +1 -1
- package/dist/composite/card/overlay/color.d.ts +1 -5
- package/dist/composite/card/overlay/color.d.ts.map +1 -1
- package/dist/composite/card/overlay/color.js +36 -41
- package/dist/composite/card/overlay/color.js.map +1 -1
- package/dist/composite/card/overlay/color.mjs +36 -41
- package/dist/composite/card/overlay/color.mjs.map +1 -1
- package/dist/composite/card/overlay/icon.d.ts +1 -5
- package/dist/composite/card/overlay/icon.d.ts.map +1 -1
- package/dist/composite/card/overlay/icon.js +27 -31
- package/dist/composite/card/overlay/icon.js.map +1 -1
- package/dist/composite/card/overlay/icon.mjs +27 -31
- package/dist/composite/card/overlay/icon.mjs.map +1 -1
- package/dist/composite/card/overlay/image.d.ts +2 -1
- package/dist/composite/card/overlay/image.d.ts.map +1 -1
- package/dist/composite/card/overlay/image.js +74 -93
- package/dist/composite/card/overlay/image.js.map +1 -1
- package/dist/composite/card/overlay/image.mjs +73 -93
- package/dist/composite/card/overlay/image.mjs.map +1 -1
- package/dist/composite/card/video/block.d.ts +1 -9
- package/dist/composite/card/video/block.d.ts.map +1 -1
- package/dist/composite/card/video/block.js +7 -5
- package/dist/composite/card/video/block.js.map +1 -1
- package/dist/composite/card/video/block.mjs +7 -5
- package/dist/composite/card/video/block.mjs.map +1 -1
- package/dist/composite/card/video/short.d.ts +1 -5
- package/dist/composite/card/video/short.d.ts.map +1 -1
- package/dist/composite/card/video/short.js +16 -21
- package/dist/composite/card/video/short.js.map +1 -1
- package/dist/composite/card/video/short.mjs +16 -21
- package/dist/composite/card/video/short.mjs.map +1 -1
- package/dist/composite/carousel/_types.d.ts.map +1 -1
- package/dist/composite/carousel/default/index.js +1 -1
- package/dist/composite/carousel/default/index.js.map +1 -1
- package/dist/composite/carousel/default/index.mjs +1 -1
- package/dist/composite/carousel/default/index.mjs.map +1 -1
- package/dist/composite/carousel/elements/blocks.js +2 -2
- package/dist/composite/carousel/elements/blocks.js.map +1 -1
- package/dist/composite/carousel/elements/blocks.mjs +2 -2
- package/dist/composite/carousel/elements/blocks.mjs.map +1 -1
- package/dist/composite/carousel/elements/full-screen.js +7 -5
- package/dist/composite/carousel/elements/full-screen.js.map +1 -1
- package/dist/composite/carousel/elements/full-screen.mjs +7 -5
- package/dist/composite/carousel/elements/full-screen.mjs.map +1 -1
- package/dist/composite/carousel/elements/image.js +2 -2
- package/dist/composite/carousel/elements/image.js.map +1 -1
- package/dist/composite/carousel/elements/image.mjs +2 -2
- package/dist/composite/carousel/elements/image.mjs.map +1 -1
- package/dist/composite/carousel/elements/overlay.js +2 -2
- package/dist/composite/carousel/elements/overlay.js.map +1 -1
- package/dist/composite/carousel/elements/overlay.mjs +2 -2
- package/dist/composite/carousel/elements/overlay.mjs.map +1 -1
- package/dist/composite/carousel/image/multiple.js +11 -9
- package/dist/composite/carousel/image/multiple.js.map +1 -1
- package/dist/composite/carousel/image/multiple.mjs +11 -9
- package/dist/composite/carousel/image/multiple.mjs.map +1 -1
- package/dist/composite/carousel/image/standard.js +10 -8
- package/dist/composite/carousel/image/standard.js.map +1 -1
- package/dist/composite/carousel/image/standard.mjs +10 -8
- package/dist/composite/carousel/image/standard.mjs.map +1 -1
- package/dist/composite/carousel/thumbnail/index.js +1 -1
- package/dist/composite/carousel/thumbnail/index.js.map +1 -1
- package/dist/composite/carousel/thumbnail/index.mjs +1 -1
- package/dist/composite/carousel/thumbnail/index.mjs.map +1 -1
- package/dist/composite/carousel/wide/_elementModel.d.ts +2 -2
- package/dist/composite/carousel/wide/_elementModel.d.ts.map +1 -1
- package/dist/composite/carousel/wide/_elementModel.js +20 -7
- package/dist/composite/carousel/wide/_elementModel.js.map +1 -1
- package/dist/composite/carousel/wide/_elementModel.mjs +20 -7
- package/dist/composite/carousel/wide/_elementModel.mjs.map +1 -1
- package/dist/composite/carousel/wide/container.d.ts.map +1 -1
- package/dist/composite/carousel/wide/container.js +9 -15
- package/dist/composite/carousel/wide/container.js.map +1 -1
- package/dist/composite/carousel/wide/container.mjs +9 -15
- package/dist/composite/carousel/wide/container.mjs.map +1 -1
- package/dist/composite/carousel/wide/controls.d.ts +1 -5
- package/dist/composite/carousel/wide/controls.d.ts.map +1 -1
- package/dist/composite/carousel/wide/controls.js +55 -56
- package/dist/composite/carousel/wide/controls.js.map +1 -1
- package/dist/composite/carousel/wide/controls.mjs +55 -56
- package/dist/composite/carousel/wide/controls.mjs.map +1 -1
- package/dist/composite/carousel/wide/frames.d.ts.map +1 -1
- package/dist/composite/carousel/wide/frames.js +156 -171
- package/dist/composite/carousel/wide/frames.js.map +1 -1
- package/dist/composite/carousel/wide/frames.mjs +153 -169
- package/dist/composite/carousel/wide/frames.mjs.map +1 -1
- package/dist/composite/carousel/wide/index.d.ts +1 -5
- package/dist/composite/carousel/wide/index.d.ts.map +1 -1
- package/dist/composite/carousel/wide/index.js +23 -17
- package/dist/composite/carousel/wide/index.js.map +1 -1
- package/dist/composite/carousel/wide/index.mjs +23 -17
- package/dist/composite/carousel/wide/index.mjs.map +1 -1
- package/dist/composite/footer/elements/main-section/call-to-action.d.ts +2 -2
- package/dist/composite/footer/elements/main-section/call-to-action.d.ts.map +1 -1
- package/dist/composite/footer/elements/main-section/call-to-action.js +19 -28
- package/dist/composite/footer/elements/main-section/call-to-action.js.map +1 -1
- package/dist/composite/footer/elements/main-section/call-to-action.mjs +18 -28
- package/dist/composite/footer/elements/main-section/call-to-action.mjs.map +1 -1
- package/dist/composite/footer/elements/main-section/campaign.d.ts +2 -2
- package/dist/composite/footer/elements/main-section/campaign.d.ts.map +1 -1
- package/dist/composite/footer/elements/main-section/campaign.js +27 -35
- package/dist/composite/footer/elements/main-section/campaign.js.map +1 -1
- package/dist/composite/footer/elements/main-section/campaign.mjs +27 -35
- package/dist/composite/footer/elements/main-section/campaign.mjs.map +1 -1
- package/dist/composite/footer/elements/main-section/index.d.ts +2 -2
- package/dist/composite/footer/elements/main-section/index.d.ts.map +1 -1
- package/dist/composite/footer/elements/main-section/index.js +38 -50
- package/dist/composite/footer/elements/main-section/index.js.map +1 -1
- package/dist/composite/footer/elements/main-section/index.mjs +38 -50
- package/dist/composite/footer/elements/main-section/index.mjs.map +1 -1
- package/dist/composite/footer/elements/main-section/row-links/index.d.ts +2 -2
- package/dist/composite/footer/elements/main-section/row-links/index.d.ts.map +1 -1
- package/dist/composite/footer/elements/main-section/row-links/index.js +24 -36
- package/dist/composite/footer/elements/main-section/row-links/index.js.map +1 -1
- package/dist/composite/footer/elements/main-section/row-links/index.mjs +24 -36
- package/dist/composite/footer/elements/main-section/row-links/index.mjs.map +1 -1
- package/dist/composite/footer/elements/main-section/row-links/link-columns.d.ts +2 -2
- package/dist/composite/footer/elements/main-section/row-links/link-columns.d.ts.map +1 -1
- package/dist/composite/footer/elements/main-section/row-links/link-columns.js +75 -95
- package/dist/composite/footer/elements/main-section/row-links/link-columns.js.map +1 -1
- package/dist/composite/footer/elements/main-section/row-links/link-columns.mjs +73 -93
- package/dist/composite/footer/elements/main-section/row-links/link-columns.mjs.map +1 -1
- package/dist/composite/footer/elements/main-section/row-logo/contact.d.ts +2 -2
- package/dist/composite/footer/elements/main-section/row-logo/contact.d.ts.map +1 -1
- package/dist/composite/footer/elements/main-section/row-logo/contact.js +88 -98
- package/dist/composite/footer/elements/main-section/row-logo/contact.js.map +1 -1
- package/dist/composite/footer/elements/main-section/row-logo/contact.mjs +88 -98
- package/dist/composite/footer/elements/main-section/row-logo/contact.mjs.map +1 -1
- package/dist/composite/footer/elements/main-section/row-logo/index.d.ts +2 -2
- package/dist/composite/footer/elements/main-section/row-logo/index.d.ts.map +1 -1
- package/dist/composite/footer/elements/main-section/row-logo/index.js +30 -43
- package/dist/composite/footer/elements/main-section/row-logo/index.js.map +1 -1
- package/dist/composite/footer/elements/main-section/row-logo/index.mjs +30 -43
- package/dist/composite/footer/elements/main-section/row-logo/index.mjs.map +1 -1
- package/dist/composite/footer/elements/main-section/row-logo/logo.d.ts +2 -2
- package/dist/composite/footer/elements/main-section/row-logo/logo.d.ts.map +1 -1
- package/dist/composite/footer/elements/main-section/row-logo/logo.js +24 -32
- package/dist/composite/footer/elements/main-section/row-logo/logo.js.map +1 -1
- package/dist/composite/footer/elements/main-section/row-logo/logo.mjs +24 -32
- package/dist/composite/footer/elements/main-section/row-logo/logo.mjs.map +1 -1
- package/dist/composite/footer/elements/main-section/social.d.ts +2 -2
- package/dist/composite/footer/elements/main-section/social.d.ts.map +1 -1
- package/dist/composite/footer/elements/main-section/social.js +74 -97
- package/dist/composite/footer/elements/main-section/social.js.map +1 -1
- package/dist/composite/footer/elements/main-section/social.mjs +74 -97
- package/dist/composite/footer/elements/main-section/social.mjs.map +1 -1
- package/dist/composite/footer/elements/utility-section/index.d.ts +1 -5
- package/dist/composite/footer/elements/utility-section/index.d.ts.map +1 -1
- package/dist/composite/footer/elements/utility-section/index.js +56 -83
- package/dist/composite/footer/elements/utility-section/index.js.map +1 -1
- package/dist/composite/footer/elements/utility-section/index.mjs +56 -83
- package/dist/composite/footer/elements/utility-section/index.mjs.map +1 -1
- package/dist/composite/footer/options.d.ts +1 -4
- package/dist/composite/footer/options.d.ts.map +1 -1
- package/dist/composite/footer/options.js +19 -27
- package/dist/composite/footer/options.js.map +1 -1
- package/dist/composite/footer/options.mjs +19 -27
- package/dist/composite/footer/options.mjs.map +1 -1
- package/dist/composite/hero/_types.d.ts.map +1 -1
- package/dist/composite/hero/custom/expand.d.ts +3 -2
- package/dist/composite/hero/custom/expand.d.ts.map +1 -1
- package/dist/composite/hero/custom/expand.js +151 -192
- package/dist/composite/hero/custom/expand.js.map +1 -1
- package/dist/composite/hero/custom/expand.mjs +145 -187
- package/dist/composite/hero/custom/expand.mjs.map +1 -1
- package/dist/composite/hero/custom/grid.d.ts +1 -5
- package/dist/composite/hero/custom/grid.d.ts.map +1 -1
- package/dist/composite/hero/custom/grid.js +122 -171
- package/dist/composite/hero/custom/grid.js.map +1 -1
- package/dist/composite/hero/custom/grid.mjs +116 -166
- package/dist/composite/hero/custom/grid.mjs.map +1 -1
- package/dist/composite/hero/custom/video-arrow.d.ts +2 -1
- package/dist/composite/hero/custom/video-arrow.d.ts.map +1 -1
- package/dist/composite/hero/custom/video-arrow.js +83 -105
- package/dist/composite/hero/custom/video-arrow.js.map +1 -1
- package/dist/composite/hero/custom/video-arrow.mjs +77 -99
- package/dist/composite/hero/custom/video-arrow.mjs.map +1 -1
- package/dist/composite/hero/logo.d.ts +1 -5
- package/dist/composite/hero/logo.d.ts.map +1 -1
- package/dist/composite/hero/logo.js +71 -89
- package/dist/composite/hero/logo.js.map +1 -1
- package/dist/composite/hero/logo.mjs +68 -87
- package/dist/composite/hero/logo.mjs.map +1 -1
- package/dist/composite/hero/minimal.d.ts +1 -5
- package/dist/composite/hero/minimal.d.ts.map +1 -1
- package/dist/composite/hero/minimal.js +67 -86
- package/dist/composite/hero/minimal.js.map +1 -1
- package/dist/composite/hero/minimal.mjs +63 -83
- package/dist/composite/hero/minimal.mjs.map +1 -1
- package/dist/composite/hero/overlay.d.ts +1 -5
- package/dist/composite/hero/overlay.d.ts.map +1 -1
- package/dist/composite/hero/overlay.js +107 -135
- package/dist/composite/hero/overlay.js.map +1 -1
- package/dist/composite/hero/overlay.mjs +103 -132
- package/dist/composite/hero/overlay.mjs.map +1 -1
- package/dist/composite/hero/stacked.d.ts +1 -5
- package/dist/composite/hero/stacked.d.ts.map +1 -1
- package/dist/composite/hero/stacked.js +114 -137
- package/dist/composite/hero/stacked.js.map +1 -1
- package/dist/composite/hero/stacked.mjs +110 -134
- package/dist/composite/hero/stacked.mjs.map +1 -1
- package/dist/composite/hero/standard.d.ts +1 -5
- package/dist/composite/hero/standard.d.ts.map +1 -1
- package/dist/composite/hero/standard.js +103 -116
- package/dist/composite/hero/standard.js.map +1 -1
- package/dist/composite/hero/standard.mjs +100 -114
- package/dist/composite/hero/standard.mjs.map +1 -1
- package/dist/composite/layout/box/logo.js +1 -1
- package/dist/composite/layout/box/logo.js.map +1 -1
- package/dist/composite/layout/box/logo.mjs +1 -1
- package/dist/composite/layout/box/logo.mjs.map +1 -1
- package/dist/composite/layout/image/expand.js +1 -1
- package/dist/composite/layout/image/expand.js.map +1 -1
- package/dist/composite/layout/image/expand.mjs +1 -1
- package/dist/composite/layout/image/expand.mjs.map +1 -1
- package/dist/composite/layout/scroll-top/index.js +1 -1
- package/dist/composite/layout/scroll-top/index.js.map +1 -1
- package/dist/composite/layout/scroll-top/index.mjs +1 -1
- package/dist/composite/layout/scroll-top/index.mjs.map +1 -1
- package/dist/composite/layout/section-intro/small.d.ts +2 -1
- package/dist/composite/layout/section-intro/small.d.ts.map +1 -1
- package/dist/composite/layout/section-intro/small.js +97 -107
- package/dist/composite/layout/section-intro/small.js.map +1 -1
- package/dist/composite/layout/section-intro/small.mjs +95 -106
- package/dist/composite/layout/section-intro/small.mjs.map +1 -1
- package/dist/composite/layout/section-intro/wide.d.ts +2 -2
- package/dist/composite/layout/section-intro/wide.d.ts.map +1 -1
- package/dist/composite/layout/section-intro/wide.js +40 -53
- package/dist/composite/layout/section-intro/wide.js.map +1 -1
- package/dist/composite/layout/section-intro/wide.mjs +39 -53
- package/dist/composite/layout/section-intro/wide.mjs.map +1 -1
- package/dist/composite/layout/sticky-columns/index.js +1 -1
- package/dist/composite/layout/sticky-columns/index.js.map +1 -1
- package/dist/composite/layout/sticky-columns/index.mjs +1 -1
- package/dist/composite/layout/sticky-columns/index.mjs.map +1 -1
- package/dist/composite/media/elements/caption.js +1 -1
- package/dist/composite/media/elements/caption.js.map +1 -1
- package/dist/composite/media/elements/caption.mjs +1 -1
- package/dist/composite/media/elements/caption.mjs.map +1 -1
- package/dist/composite/media/elements/gif.d.ts +3 -2
- package/dist/composite/media/elements/gif.d.ts.map +1 -1
- package/dist/composite/media/elements/gif.js +25 -27
- package/dist/composite/media/elements/gif.js.map +1 -1
- package/dist/composite/media/elements/gif.mjs +25 -27
- package/dist/composite/media/elements/gif.mjs.map +1 -1
- package/dist/composite/media/inline/caption.js +2 -2
- package/dist/composite/media/inline/caption.js.map +1 -1
- package/dist/composite/media/inline/caption.mjs +2 -2
- package/dist/composite/media/inline/caption.mjs.map +1 -1
- package/dist/composite/media/inline/wrapped.js +2 -2
- package/dist/composite/media/inline/wrapped.js.map +1 -1
- package/dist/composite/media/inline/wrapped.mjs +2 -2
- package/dist/composite/media/inline/wrapped.mjs.map +1 -1
- package/dist/composite/navigation/elements/breadcrumb/index.js +1 -1
- package/dist/composite/navigation/elements/breadcrumb/index.js.map +1 -1
- package/dist/composite/navigation/elements/breadcrumb/index.mjs +1 -1
- package/dist/composite/navigation/elements/breadcrumb/index.mjs.map +1 -1
- package/dist/composite/navigation/elements/drawer/index.js +1 -1
- package/dist/composite/navigation/elements/drawer/index.js.map +1 -1
- package/dist/composite/navigation/elements/drawer/index.mjs +1 -1
- package/dist/composite/navigation/elements/drawer/index.mjs.map +1 -1
- package/dist/composite/navigation/elements/item/index.js +1 -1
- package/dist/composite/navigation/elements/item/index.js.map +1 -1
- package/dist/composite/navigation/elements/item/index.mjs +1 -1
- package/dist/composite/navigation/elements/item/index.mjs.map +1 -1
- package/dist/composite/navigation/elements/menu-button/index.js +1 -1
- package/dist/composite/navigation/elements/menu-button/index.js.map +1 -1
- package/dist/composite/navigation/elements/menu-button/index.mjs +1 -1
- package/dist/composite/navigation/elements/menu-button/index.mjs.map +1 -1
- package/dist/composite/navigation/elements/slider/action.js +1 -1
- package/dist/composite/navigation/elements/slider/action.js.map +1 -1
- package/dist/composite/navigation/elements/slider/action.mjs +1 -1
- package/dist/composite/navigation/elements/slider/action.mjs.map +1 -1
- package/dist/composite/navigation/elements/slider/index.js +1 -1
- package/dist/composite/navigation/elements/slider/index.js.map +1 -1
- package/dist/composite/navigation/elements/slider/index.mjs +1 -1
- package/dist/composite/navigation/elements/slider/index.mjs.map +1 -1
- package/dist/composite/navigation/elements/slider/slide-first.js +1 -1
- package/dist/composite/navigation/elements/slider/slide-first.js.map +1 -1
- package/dist/composite/navigation/elements/slider/slide-first.mjs +1 -1
- package/dist/composite/navigation/elements/slider/slide-first.mjs.map +1 -1
- package/dist/composite/navigation/elements/slider/slides.js +1 -1
- package/dist/composite/navigation/elements/slider/slides.js.map +1 -1
- package/dist/composite/navigation/elements/slider/slides.mjs +1 -1
- package/dist/composite/navigation/elements/slider/slides.mjs.map +1 -1
- package/dist/composite/navigation/header.js +1 -1
- package/dist/composite/navigation/header.js.map +1 -1
- package/dist/composite/navigation/header.mjs +1 -1
- package/dist/composite/navigation/header.mjs.map +1 -1
- package/dist/composite/navigation/utility/alert.js +8 -4
- package/dist/composite/navigation/utility/alert.js.map +1 -1
- package/dist/composite/navigation/utility/alert.mjs +8 -4
- package/dist/composite/navigation/utility/alert.mjs.map +1 -1
- package/dist/composite/navigation/utility/index.d.ts.map +1 -1
- package/dist/composite/navigation/utility/index.js +90 -13
- package/dist/composite/navigation/utility/index.js.map +1 -1
- package/dist/composite/navigation/utility/index.mjs +90 -13
- package/dist/composite/navigation/utility/index.mjs.map +1 -1
- package/dist/composite/navigation/utility/search.js +1 -1
- package/dist/composite/navigation/utility/search.js.map +1 -1
- package/dist/composite/navigation/utility/search.mjs +1 -1
- package/dist/composite/navigation/utility/search.mjs.map +1 -1
- package/dist/composite/pathway/_common.d.ts +4 -20
- package/dist/composite/pathway/_common.d.ts.map +1 -1
- package/dist/composite/pathway/_common.js +62 -64
- package/dist/composite/pathway/_common.js.map +1 -1
- package/dist/composite/pathway/_common.mjs +56 -60
- package/dist/composite/pathway/_common.mjs.map +1 -1
- package/dist/composite/pathway/hero.d.ts +1 -5
- package/dist/composite/pathway/hero.d.ts.map +1 -1
- package/dist/composite/pathway/hero.js +119 -140
- package/dist/composite/pathway/hero.js.map +1 -1
- package/dist/composite/pathway/hero.mjs +113 -135
- package/dist/composite/pathway/hero.mjs.map +1 -1
- package/dist/composite/pathway/highlight.d.ts +1 -5
- package/dist/composite/pathway/highlight.d.ts.map +1 -1
- package/dist/composite/pathway/highlight.js +99 -129
- package/dist/composite/pathway/highlight.js.map +1 -1
- package/dist/composite/pathway/highlight.mjs +98 -129
- package/dist/composite/pathway/highlight.mjs.map +1 -1
- package/dist/composite/pathway/overlay.d.ts +2 -1
- package/dist/composite/pathway/overlay.d.ts.map +1 -1
- package/dist/composite/pathway/overlay.js +125 -153
- package/dist/composite/pathway/overlay.js.map +1 -1
- package/dist/composite/pathway/overlay.mjs +122 -151
- package/dist/composite/pathway/overlay.mjs.map +1 -1
- package/dist/composite/pathway/standard.d.ts +2 -1
- package/dist/composite/pathway/standard.d.ts.map +1 -1
- package/dist/composite/pathway/standard.js +96 -123
- package/dist/composite/pathway/standard.js.map +1 -1
- package/dist/composite/pathway/standard.mjs +95 -123
- package/dist/composite/pathway/standard.mjs.map +1 -1
- package/dist/composite/pathway/sticky.d.ts +1 -5
- package/dist/composite/pathway/sticky.d.ts.map +1 -1
- package/dist/composite/pathway/sticky.js +91 -116
- package/dist/composite/pathway/sticky.js.map +1 -1
- package/dist/composite/pathway/sticky.mjs +88 -114
- package/dist/composite/pathway/sticky.mjs.map +1 -1
- package/dist/composite/person/bio/full.d.ts +2 -5
- package/dist/composite/person/bio/full.d.ts.map +1 -1
- package/dist/composite/person/bio/full.js +53 -57
- package/dist/composite/person/bio/full.js.map +1 -1
- package/dist/composite/person/bio/full.mjs +52 -57
- package/dist/composite/person/bio/full.mjs.map +1 -1
- package/dist/composite/person/bio/small.d.ts +2 -5
- package/dist/composite/person/bio/small.d.ts.map +1 -1
- package/dist/composite/person/bio/small.js +85 -98
- package/dist/composite/person/bio/small.js.map +1 -1
- package/dist/composite/person/bio/small.mjs +84 -98
- package/dist/composite/person/bio/small.mjs.map +1 -1
- package/dist/composite/person/block.d.ts +2 -5
- package/dist/composite/person/block.d.ts.map +1 -1
- package/dist/composite/person/block.js +34 -42
- package/dist/composite/person/block.js.map +1 -1
- package/dist/composite/person/block.mjs +34 -42
- package/dist/composite/person/block.mjs.map +1 -1
- package/dist/composite/person/hero.d.ts +2 -5
- package/dist/composite/person/hero.d.ts.map +1 -1
- package/dist/composite/person/hero.js +160 -220
- package/dist/composite/person/hero.js.map +1 -1
- package/dist/composite/person/hero.mjs +159 -220
- package/dist/composite/person/hero.mjs.map +1 -1
- package/dist/composite/person/list.d.ts +2 -5
- package/dist/composite/person/list.d.ts.map +1 -1
- package/dist/composite/person/list.js +19 -19
- package/dist/composite/person/list.js.map +1 -1
- package/dist/composite/person/list.mjs +19 -19
- package/dist/composite/person/list.mjs.map +1 -1
- package/dist/composite/person/tabular.d.ts +2 -5
- package/dist/composite/person/tabular.d.ts.map +1 -1
- package/dist/composite/person/tabular.js +40 -36
- package/dist/composite/person/tabular.js.map +1 -1
- package/dist/composite/person/tabular.mjs +38 -36
- package/dist/composite/person/tabular.mjs.map +1 -1
- package/dist/composite/quote/elements/action.d.ts +1 -5
- package/dist/composite/quote/elements/action.d.ts.map +1 -1
- package/dist/composite/quote/elements/action.js +13 -17
- package/dist/composite/quote/elements/action.js.map +1 -1
- package/dist/composite/quote/elements/action.mjs +13 -17
- package/dist/composite/quote/elements/action.mjs.map +1 -1
- package/dist/composite/quote/elements/icon.d.ts +1 -5
- package/dist/composite/quote/elements/icon.d.ts.map +1 -1
- package/dist/composite/quote/elements/icon.js +37 -40
- package/dist/composite/quote/elements/icon.js.map +1 -1
- package/dist/composite/quote/elements/icon.mjs +37 -40
- package/dist/composite/quote/elements/icon.mjs.map +1 -1
- package/dist/composite/quote/elements/image.d.ts +1 -5
- package/dist/composite/quote/elements/image.d.ts.map +1 -1
- package/dist/composite/quote/elements/image.js +27 -35
- package/dist/composite/quote/elements/image.js.map +1 -1
- package/dist/composite/quote/elements/image.mjs +27 -35
- package/dist/composite/quote/elements/image.mjs.map +1 -1
- package/dist/composite/quote/elements/quote.d.ts +1 -5
- package/dist/composite/quote/elements/quote.d.ts.map +1 -1
- package/dist/composite/quote/elements/quote.js +37 -48
- package/dist/composite/quote/elements/quote.js.map +1 -1
- package/dist/composite/quote/elements/quote.mjs +35 -46
- package/dist/composite/quote/elements/quote.mjs.map +1 -1
- package/dist/composite/quote/elements/text.d.ts +1 -5
- package/dist/composite/quote/elements/text.d.ts.map +1 -1
- package/dist/composite/quote/elements/text.js +60 -73
- package/dist/composite/quote/elements/text.js.map +1 -1
- package/dist/composite/quote/elements/text.mjs +60 -73
- package/dist/composite/quote/elements/text.mjs.map +1 -1
- package/dist/composite/quote/featured.d.ts +2 -1
- package/dist/composite/quote/featured.d.ts.map +1 -1
- package/dist/composite/quote/featured.js +102 -135
- package/dist/composite/quote/featured.js.map +1 -1
- package/dist/composite/quote/featured.mjs +102 -135
- package/dist/composite/quote/featured.mjs.map +1 -1
- package/dist/composite/quote/helper/animation.d.ts +2 -2
- package/dist/composite/quote/helper/animation.d.ts.map +1 -1
- package/dist/composite/quote/helper/animation.js.map +1 -1
- package/dist/composite/quote/helper/animation.mjs.map +1 -1
- package/dist/composite/quote/inline.d.ts +2 -1
- package/dist/composite/quote/inline.d.ts.map +1 -1
- package/dist/composite/quote/inline.js +29 -45
- package/dist/composite/quote/inline.js.map +1 -1
- package/dist/composite/quote/inline.mjs +29 -45
- package/dist/composite/quote/inline.mjs.map +1 -1
- package/dist/composite/quote/statement.d.ts +1 -5
- package/dist/composite/quote/statement.d.ts.map +1 -1
- package/dist/composite/slider/events.js +1 -1
- package/dist/composite/slider/events.js.map +1 -1
- package/dist/composite/slider/events.mjs +1 -1
- package/dist/composite/slider/events.mjs.map +1 -1
- package/dist/composite/social/sharing.js +1 -1
- package/dist/composite/social/sharing.js.map +1 -1
- package/dist/composite/social/sharing.mjs +1 -1
- package/dist/composite/social/sharing.mjs.map +1 -1
- package/dist/composite/tabs/standard.d.ts.map +1 -1
- package/dist/composite/tabs/standard.js +3 -2
- package/dist/composite/tabs/standard.js.map +1 -1
- package/dist/composite/tabs/standard.mjs +3 -2
- package/dist/composite/tabs/standard.mjs.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -3
- package/dist/index.mjs.map +1 -1
- package/dist/layout/image.js +1 -1
- package/dist/layout/image.js.map +1 -1
- package/dist/layout/image.mjs +1 -1
- package/dist/layout/image.mjs.map +1 -1
- package/package.json +10 -9
- package/dist/model/elements/actions.d.ts +0 -62
- package/dist/model/elements/actions.d.ts.map +0 -1
- package/dist/model/elements/actions.js +0 -71
- package/dist/model/elements/actions.js.map +0 -1
- package/dist/model/elements/actions.mjs +0 -54
- package/dist/model/elements/actions.mjs.map +0 -1
- package/dist/model/elements/assets.d.ts +0 -30
- package/dist/model/elements/assets.d.ts.map +0 -1
- package/dist/model/elements/assets.js +0 -42
- package/dist/model/elements/assets.js.map +0 -1
- package/dist/model/elements/assets.mjs +0 -25
- package/dist/model/elements/assets.mjs.map +0 -1
- package/dist/model/elements/buttons.d.ts +0 -12
- package/dist/model/elements/buttons.d.ts.map +0 -1
- package/dist/model/elements/buttons.js +0 -26
- package/dist/model/elements/buttons.js.map +0 -1
- package/dist/model/elements/buttons.mjs +0 -9
- package/dist/model/elements/buttons.mjs.map +0 -1
- package/dist/model/elements/event.d.ts +0 -22
- package/dist/model/elements/event.d.ts.map +0 -1
- package/dist/model/elements/event.js +0 -30
- package/dist/model/elements/event.js.map +0 -1
- package/dist/model/elements/event.mjs +0 -13
- package/dist/model/elements/event.mjs.map +0 -1
- package/dist/model/elements/headline.d.ts +0 -67
- package/dist/model/elements/headline.d.ts.map +0 -1
- package/dist/model/elements/headline.js +0 -74
- package/dist/model/elements/headline.js.map +0 -1
- package/dist/model/elements/headline.mjs +0 -57
- package/dist/model/elements/headline.mjs.map +0 -1
- package/dist/model/elements/index.d.ts +0 -34
- package/dist/model/elements/index.d.ts.map +0 -1
- package/dist/model/elements/index.js +0 -37
- package/dist/model/elements/index.js.map +0 -1
- package/dist/model/elements/index.mjs +0 -37
- package/dist/model/elements/index.mjs.map +0 -1
- package/dist/model/elements/layout.d.ts +0 -64
- package/dist/model/elements/layout.d.ts.map +0 -1
- package/dist/model/elements/layout.js +0 -68
- package/dist/model/elements/layout.js.map +0 -1
- package/dist/model/elements/layout.mjs +0 -51
- package/dist/model/elements/layout.mjs.map +0 -1
- package/dist/model/elements/rich-text.d.ts +0 -27
- package/dist/model/elements/rich-text.d.ts.map +0 -1
- package/dist/model/elements/rich-text.js +0 -68
- package/dist/model/elements/rich-text.js.map +0 -1
- package/dist/model/elements/rich-text.mjs +0 -51
- package/dist/model/elements/rich-text.mjs.map +0 -1
- package/dist/model/elements/text.d.ts +0 -22
- package/dist/model/elements/text.d.ts.map +0 -1
- package/dist/model/elements/text.js +0 -30
- package/dist/model/elements/text.js.map +0 -1
- package/dist/model/elements/text.mjs +0 -13
- package/dist/model/elements/text.mjs.map +0 -1
- package/dist/model/index.d.ts +0 -2
- package/dist/model/index.d.ts.map +0 -1
- package/dist/model/modifiers/_types.d.ts +0 -41
- package/dist/model/modifiers/_types.d.ts.map +0 -1
- package/dist/model/modifiers/index.d.ts +0 -44
- package/dist/model/modifiers/index.d.ts.map +0 -1
- package/dist/model/modifiers/index.js +0 -136
- package/dist/model/modifiers/index.js.map +0 -1
- package/dist/model/modifiers/index.mjs +0 -136
- package/dist/model/modifiers/index.mjs.map +0 -1
- package/dist/model/modifiers/style.d.ts +0 -19
- package/dist/model/modifiers/style.d.ts.map +0 -1
- package/dist/model/modifiers/style.js +0 -122
- package/dist/model/modifiers/style.js.map +0 -1
- package/dist/model/modifiers/style.mjs +0 -105
- package/dist/model/modifiers/style.mjs.map +0 -1
- package/dist/model.d.ts +0 -2
- package/dist/model.js +0 -5
- package/dist/model.js.map +0 -1
- package/dist/model.mjs +0 -5
- package/dist/model.mjs.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as token from "@universityofmaryland/web-
|
|
1
|
+
import * as token from "@universityofmaryland/web-token-library";
|
|
2
2
|
import * as typography from "@universityofmaryland/web-styles-library/typography";
|
|
3
3
|
import { jssToCSS } from "@universityofmaryland/web-utilities-library/styles";
|
|
4
4
|
import { cloneElementWithoutAttributes } from "@universityofmaryland/web-utilities-library/dom";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slides.mjs","sources":["../../../../../source/composite/navigation/elements/slider/slides.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-styles-library/token';\nimport * as typography from '@universityofmaryland/web-styles-library/typography';\nimport { jssToCSS } from '@universityofmaryland/web-utilities-library/styles';\nimport { cloneElementWithoutAttributes } from '@universityofmaryland/web-utilities-library/dom';\nimport { chevron_down as iconChevronDown } from '@universityofmaryland/web-icons-library/controls';\nimport FirstSlide, { TypeFirstSlideProps, TypeFirstSlide } from './slide-first';\nimport SlideAction, { TypeActionProps } from './action';\n\nexport type TypeSlideProps = TypeActionProps &\n TypeFirstSlideProps & {\n ATTRIBUTE_DATA_SLIDE: string;\n ATTRIBUTE_ACTIVE_SLIDE: string;\n childrenSlides?: HTMLElement | null;\n childrenSlideContent?: HTMLSlotElement[];\n primarySlideLinks?: HTMLElement | null;\n primarySlidesSecondaryLinks?: HTMLElement | null;\n eventSlideRight: () => void;\n };\n\ntype TypeSlideBackContainer = TypeSlideProps & {\n parentRef: string;\n};\n\ntype TypeDrawerChildSlide = TypeSlideProps & {\n slider: HTMLElement;\n};\n\ntype TypeSlideFirstContainer = TypeDrawerChildSlide & TypeFirstSlide;\n\ntype TypeSliderSlideActions = TypeSlideProps & {\n slide: HTMLDivElement;\n};\n\nconst ELEMENT_NAV_SLIDE_CONTAINER = 'nav-slide-container';\nconst ELEMENT_NAV_SLIDE_WRAPPER = 'nav-slide-wrapper';\nconst ELEMENT_NAV_SLIDE_HEADLINE = 'nav-slide-headline';\nconst ELEMENT_NAV_SLIDE_BACK_BUTTON = 'nav-slide-action-back-button';\nconst ELEMENT_NAV_SLIDE_CONTENT = 'nav-slide-action-content';\n\n// prettier-ignore\nconst ContentStyles = `\n * + .${ELEMENT_NAV_SLIDE_CONTENT} {\n margin-top: ${token.spacing.lg};\n }\n`;\n\n// prettier-ignore\nconst BackButtonStyles = `\n .${ELEMENT_NAV_SLIDE_BACK_BUTTON} {\n display: block;\n border-bottom: 1px solid ${token.color.black};\n margin-bottom: ${token.spacing.sm};\n padding-bottom: ${token.spacing.sm};\n }\n\n @media (min-width: 480px) {\n .${ELEMENT_NAV_SLIDE_BACK_BUTTON} {\n margin-bottom: ${token.spacing.md};\n padding-bottom: ${token.spacing.md};\n }\n }\n\n .${ELEMENT_NAV_SLIDE_BACK_BUTTON} button {\n text-transform: uppercase;\n font-weight: 600;\n letter-Spacing: 1px;\n display: flex;\n align-items: center;\n color: ${token.color.black};\n }\n\n .${ELEMENT_NAV_SLIDE_BACK_BUTTON} button:hover,\n .${ELEMENT_NAV_SLIDE_BACK_BUTTON} button:focus {\n text-decoration: underline;\n }\n\n .${ELEMENT_NAV_SLIDE_BACK_BUTTON} button svg {\n fill: ${token.color.red};\n width: 12px;\n height: 12px;\n margin-right: ${token.spacing.min};\n transform: rotate(90deg);\n }\n`;\n\n// prettier-ignore\nconst HeadlineStyles = `\n ${jssToCSS({\n styleObj: {\n [`.${ELEMENT_NAV_SLIDE_HEADLINE}`]: typography.sans.large,\n },\n })}\n\n .${ELEMENT_NAV_SLIDE_HEADLINE} {\n margin-bottom: ${token.spacing.md};\n font-weight: 700;\n color: ${token.color.black};\n }\n`;\n\n// prettier-ignore\nconst STYLES_NAV_SLIDES = `\n ${BackButtonStyles}\n ${HeadlineStyles}\n ${ContentStyles}\n ${SlideAction.Styles}\n ${FirstSlide.Styles}\n`;\n\nconst createSlideBackButton = (props: TypeSlideBackContainer) => {\n const { eventSlideRight, parentRef, setUpcomingSlide } = props;\n\n if (!parentRef) return;\n const backButtonContainer = document.createElement('div');\n const slideBackButton = document.createElement('button');\n\n slideBackButton.innerHTML = `${iconChevronDown} Back`;\n slideBackButton.setAttribute('type', 'button');\n slideBackButton.setAttribute('aria-label', 'Previous level of navigation');\n slideBackButton.addEventListener('click', () => {\n setUpcomingSlide(parentRef);\n eventSlideRight();\n });\n\n backButtonContainer.classList.add(ELEMENT_NAV_SLIDE_BACK_BUTTON);\n backButtonContainer.appendChild(slideBackButton);\n\n return backButtonContainer;\n};\n\nconst createSlideHeadline = ({ link }: { link: HTMLAnchorElement }) => {\n const slideHeadline = document.createElement('p');\n\n slideHeadline.appendChild(cloneElementWithoutAttributes({ element: link }));\n slideHeadline.classList.add(ELEMENT_NAV_SLIDE_HEADLINE);\n\n return slideHeadline;\n};\n\nconst createSlideActions = (props: TypeSliderSlideActions) => {\n const { slide } = props;\n\n const slideActionsContainer = document.createElement('div');\n const clonedSlide = slide.cloneNode(true) as HTMLDivElement;\n const links = Array.from(\n clonedSlide.querySelectorAll('a'),\n ) as HTMLAnchorElement[];\n\n if (links.length > 0) {\n links.forEach((link) =>\n slideActionsContainer.appendChild(\n SlideAction.CreateElement({ ...props, link }),\n ),\n );\n }\n\n return slideActionsContainer;\n};\n\nconst CreateFirstSlide = (props: TypeSlideFirstContainer) => {\n const { slider } = props;\n slider.appendChild(FirstSlide.CreateElement(props));\n};\n\nconst CreateNavSlides = (props: TypeDrawerChildSlide) => {\n const {\n slider,\n setCurrentSlide,\n childrenSlides,\n childrenSlideContent,\n primarySlideLinks,\n primarySlidesSecondaryLinks,\n ATTRIBUTE_PARENT_REF,\n ATTRIBUTE_CHILD_REF,\n ATTRIBUTE_ACTIVE_SLIDE,\n ATTRIBUTE_DATA_SLIDE,\n } = props;\n let isContextMenu = false;\n if (!childrenSlides) {\n CreateFirstSlide({ ...props, isContextMenu });\n return;\n }\n\n const slides = Array.from(\n childrenSlides.querySelectorAll(`[${ATTRIBUTE_PARENT_REF}]`),\n ) as HTMLDivElement[];\n const primaryLinks = primarySlideLinks\n ? Array.from(primarySlideLinks.querySelectorAll('a'))\n : [];\n const secondaryLinks = primarySlidesSecondaryLinks\n ? Array.from(primarySlidesSecondaryLinks.querySelectorAll(':scope > *'))\n : [];\n const childLinks = Array.from(\n childrenSlides.querySelectorAll(`[${ATTRIBUTE_CHILD_REF}]`),\n ) as HTMLAnchorElement[];\n const parentOptions = [\n ...primaryLinks,\n ...secondaryLinks,\n ...childLinks,\n ] as HTMLAnchorElement[];\n\n slides.forEach((slide, i) => {\n const contentRef = slide.getAttribute('content-slot');\n const sliderContainer = document.createElement('div');\n const sliderWrapper = document.createElement('div');\n const isSlideActive = slide.hasAttribute(ATTRIBUTE_ACTIVE_SLIDE);\n const parentRef = slide.getAttribute(ATTRIBUTE_PARENT_REF) as string;\n const parentElement = parentOptions.find(\n (option) => option.getAttribute(ATTRIBUTE_CHILD_REF) === parentRef,\n );\n\n if (!parentElement) {\n console.error(`No parent reference found for ${parentRef}`);\n return;\n }\n\n const slideBackButton = createSlideBackButton({ ...props, parentRef });\n const slideHeadline = createSlideHeadline({ link: parentElement });\n const slideActions = createSlideActions({ ...props, slide });\n\n // Context Menu\n if (isSlideActive) {\n sliderContainer.setAttribute(`${ATTRIBUTE_ACTIVE_SLIDE}`, ``);\n setCurrentSlide({ element: sliderContainer });\n isContextMenu = true;\n }\n\n sliderContainer.setAttribute(`${ATTRIBUTE_DATA_SLIDE}`, '');\n sliderContainer.classList.add(ELEMENT_NAV_SLIDE_CONTAINER);\n sliderContainer.setAttribute(`${ATTRIBUTE_PARENT_REF}`, `${parentRef}`);\n\n if (slideBackButton) sliderWrapper.appendChild(slideBackButton);\n sliderWrapper.appendChild(slideHeadline);\n sliderWrapper.appendChild(slideActions);\n\n sliderWrapper.classList.add(ELEMENT_NAV_SLIDE_WRAPPER);\n sliderContainer.appendChild(sliderWrapper);\n\n if (contentRef) {\n const additionalContent = childrenSlideContent?.find(\n (element) => element.getAttribute('name') === contentRef,\n );\n\n if (additionalContent) {\n const contentContainer = document.createElement('div');\n\n contentContainer.appendChild(additionalContent);\n contentContainer.classList.add(ELEMENT_NAV_SLIDE_CONTENT);\n\n sliderContainer.appendChild(contentContainer);\n }\n }\n\n slider.appendChild(sliderContainer);\n\n if (i === slides.length - 1) {\n setTimeout(() => {\n CreateFirstSlide({ ...props, isContextMenu });\n }, 100);\n }\n });\n};\n\nexport default {\n CreateElement: CreateNavSlides,\n Styles: STYLES_NAV_SLIDES,\n Elements: {\n container: ELEMENT_NAV_SLIDE_CONTAINER,\n wrapper: ELEMENT_NAV_SLIDE_WRAPPER,\n headline: ELEMENT_NAV_SLIDE_HEADLINE,\n },\n};\n"],"names":["FirstSlide","iconChevronDown"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"slides.mjs","sources":["../../../../../source/composite/navigation/elements/slider/slides.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-token-library';\nimport * as typography from '@universityofmaryland/web-styles-library/typography';\nimport { jssToCSS } from '@universityofmaryland/web-utilities-library/styles';\nimport { cloneElementWithoutAttributes } from '@universityofmaryland/web-utilities-library/dom';\nimport { chevron_down as iconChevronDown } from '@universityofmaryland/web-icons-library/controls';\nimport FirstSlide, { TypeFirstSlideProps, TypeFirstSlide } from './slide-first';\nimport SlideAction, { TypeActionProps } from './action';\n\nexport type TypeSlideProps = TypeActionProps &\n TypeFirstSlideProps & {\n ATTRIBUTE_DATA_SLIDE: string;\n ATTRIBUTE_ACTIVE_SLIDE: string;\n childrenSlides?: HTMLElement | null;\n childrenSlideContent?: HTMLSlotElement[];\n primarySlideLinks?: HTMLElement | null;\n primarySlidesSecondaryLinks?: HTMLElement | null;\n eventSlideRight: () => void;\n };\n\ntype TypeSlideBackContainer = TypeSlideProps & {\n parentRef: string;\n};\n\ntype TypeDrawerChildSlide = TypeSlideProps & {\n slider: HTMLElement;\n};\n\ntype TypeSlideFirstContainer = TypeDrawerChildSlide & TypeFirstSlide;\n\ntype TypeSliderSlideActions = TypeSlideProps & {\n slide: HTMLDivElement;\n};\n\nconst ELEMENT_NAV_SLIDE_CONTAINER = 'nav-slide-container';\nconst ELEMENT_NAV_SLIDE_WRAPPER = 'nav-slide-wrapper';\nconst ELEMENT_NAV_SLIDE_HEADLINE = 'nav-slide-headline';\nconst ELEMENT_NAV_SLIDE_BACK_BUTTON = 'nav-slide-action-back-button';\nconst ELEMENT_NAV_SLIDE_CONTENT = 'nav-slide-action-content';\n\n// prettier-ignore\nconst ContentStyles = `\n * + .${ELEMENT_NAV_SLIDE_CONTENT} {\n margin-top: ${token.spacing.lg};\n }\n`;\n\n// prettier-ignore\nconst BackButtonStyles = `\n .${ELEMENT_NAV_SLIDE_BACK_BUTTON} {\n display: block;\n border-bottom: 1px solid ${token.color.black};\n margin-bottom: ${token.spacing.sm};\n padding-bottom: ${token.spacing.sm};\n }\n\n @media (min-width: 480px) {\n .${ELEMENT_NAV_SLIDE_BACK_BUTTON} {\n margin-bottom: ${token.spacing.md};\n padding-bottom: ${token.spacing.md};\n }\n }\n\n .${ELEMENT_NAV_SLIDE_BACK_BUTTON} button {\n text-transform: uppercase;\n font-weight: 600;\n letter-Spacing: 1px;\n display: flex;\n align-items: center;\n color: ${token.color.black};\n }\n\n .${ELEMENT_NAV_SLIDE_BACK_BUTTON} button:hover,\n .${ELEMENT_NAV_SLIDE_BACK_BUTTON} button:focus {\n text-decoration: underline;\n }\n\n .${ELEMENT_NAV_SLIDE_BACK_BUTTON} button svg {\n fill: ${token.color.red};\n width: 12px;\n height: 12px;\n margin-right: ${token.spacing.min};\n transform: rotate(90deg);\n }\n`;\n\n// prettier-ignore\nconst HeadlineStyles = `\n ${jssToCSS({\n styleObj: {\n [`.${ELEMENT_NAV_SLIDE_HEADLINE}`]: typography.sans.large,\n },\n })}\n\n .${ELEMENT_NAV_SLIDE_HEADLINE} {\n margin-bottom: ${token.spacing.md};\n font-weight: 700;\n color: ${token.color.black};\n }\n`;\n\n// prettier-ignore\nconst STYLES_NAV_SLIDES = `\n ${BackButtonStyles}\n ${HeadlineStyles}\n ${ContentStyles}\n ${SlideAction.Styles}\n ${FirstSlide.Styles}\n`;\n\nconst createSlideBackButton = (props: TypeSlideBackContainer) => {\n const { eventSlideRight, parentRef, setUpcomingSlide } = props;\n\n if (!parentRef) return;\n const backButtonContainer = document.createElement('div');\n const slideBackButton = document.createElement('button');\n\n slideBackButton.innerHTML = `${iconChevronDown} Back`;\n slideBackButton.setAttribute('type', 'button');\n slideBackButton.setAttribute('aria-label', 'Previous level of navigation');\n slideBackButton.addEventListener('click', () => {\n setUpcomingSlide(parentRef);\n eventSlideRight();\n });\n\n backButtonContainer.classList.add(ELEMENT_NAV_SLIDE_BACK_BUTTON);\n backButtonContainer.appendChild(slideBackButton);\n\n return backButtonContainer;\n};\n\nconst createSlideHeadline = ({ link }: { link: HTMLAnchorElement }) => {\n const slideHeadline = document.createElement('p');\n\n slideHeadline.appendChild(cloneElementWithoutAttributes({ element: link }));\n slideHeadline.classList.add(ELEMENT_NAV_SLIDE_HEADLINE);\n\n return slideHeadline;\n};\n\nconst createSlideActions = (props: TypeSliderSlideActions) => {\n const { slide } = props;\n\n const slideActionsContainer = document.createElement('div');\n const clonedSlide = slide.cloneNode(true) as HTMLDivElement;\n const links = Array.from(\n clonedSlide.querySelectorAll('a'),\n ) as HTMLAnchorElement[];\n\n if (links.length > 0) {\n links.forEach((link) =>\n slideActionsContainer.appendChild(\n SlideAction.CreateElement({ ...props, link }),\n ),\n );\n }\n\n return slideActionsContainer;\n};\n\nconst CreateFirstSlide = (props: TypeSlideFirstContainer) => {\n const { slider } = props;\n slider.appendChild(FirstSlide.CreateElement(props));\n};\n\nconst CreateNavSlides = (props: TypeDrawerChildSlide) => {\n const {\n slider,\n setCurrentSlide,\n childrenSlides,\n childrenSlideContent,\n primarySlideLinks,\n primarySlidesSecondaryLinks,\n ATTRIBUTE_PARENT_REF,\n ATTRIBUTE_CHILD_REF,\n ATTRIBUTE_ACTIVE_SLIDE,\n ATTRIBUTE_DATA_SLIDE,\n } = props;\n let isContextMenu = false;\n if (!childrenSlides) {\n CreateFirstSlide({ ...props, isContextMenu });\n return;\n }\n\n const slides = Array.from(\n childrenSlides.querySelectorAll(`[${ATTRIBUTE_PARENT_REF}]`),\n ) as HTMLDivElement[];\n const primaryLinks = primarySlideLinks\n ? Array.from(primarySlideLinks.querySelectorAll('a'))\n : [];\n const secondaryLinks = primarySlidesSecondaryLinks\n ? Array.from(primarySlidesSecondaryLinks.querySelectorAll(':scope > *'))\n : [];\n const childLinks = Array.from(\n childrenSlides.querySelectorAll(`[${ATTRIBUTE_CHILD_REF}]`),\n ) as HTMLAnchorElement[];\n const parentOptions = [\n ...primaryLinks,\n ...secondaryLinks,\n ...childLinks,\n ] as HTMLAnchorElement[];\n\n slides.forEach((slide, i) => {\n const contentRef = slide.getAttribute('content-slot');\n const sliderContainer = document.createElement('div');\n const sliderWrapper = document.createElement('div');\n const isSlideActive = slide.hasAttribute(ATTRIBUTE_ACTIVE_SLIDE);\n const parentRef = slide.getAttribute(ATTRIBUTE_PARENT_REF) as string;\n const parentElement = parentOptions.find(\n (option) => option.getAttribute(ATTRIBUTE_CHILD_REF) === parentRef,\n );\n\n if (!parentElement) {\n console.error(`No parent reference found for ${parentRef}`);\n return;\n }\n\n const slideBackButton = createSlideBackButton({ ...props, parentRef });\n const slideHeadline = createSlideHeadline({ link: parentElement });\n const slideActions = createSlideActions({ ...props, slide });\n\n // Context Menu\n if (isSlideActive) {\n sliderContainer.setAttribute(`${ATTRIBUTE_ACTIVE_SLIDE}`, ``);\n setCurrentSlide({ element: sliderContainer });\n isContextMenu = true;\n }\n\n sliderContainer.setAttribute(`${ATTRIBUTE_DATA_SLIDE}`, '');\n sliderContainer.classList.add(ELEMENT_NAV_SLIDE_CONTAINER);\n sliderContainer.setAttribute(`${ATTRIBUTE_PARENT_REF}`, `${parentRef}`);\n\n if (slideBackButton) sliderWrapper.appendChild(slideBackButton);\n sliderWrapper.appendChild(slideHeadline);\n sliderWrapper.appendChild(slideActions);\n\n sliderWrapper.classList.add(ELEMENT_NAV_SLIDE_WRAPPER);\n sliderContainer.appendChild(sliderWrapper);\n\n if (contentRef) {\n const additionalContent = childrenSlideContent?.find(\n (element) => element.getAttribute('name') === contentRef,\n );\n\n if (additionalContent) {\n const contentContainer = document.createElement('div');\n\n contentContainer.appendChild(additionalContent);\n contentContainer.classList.add(ELEMENT_NAV_SLIDE_CONTENT);\n\n sliderContainer.appendChild(contentContainer);\n }\n }\n\n slider.appendChild(sliderContainer);\n\n if (i === slides.length - 1) {\n setTimeout(() => {\n CreateFirstSlide({ ...props, isContextMenu });\n }, 100);\n }\n });\n};\n\nexport default {\n CreateElement: CreateNavSlides,\n Styles: STYLES_NAV_SLIDES,\n Elements: {\n container: ELEMENT_NAV_SLIDE_CONTAINER,\n wrapper: ELEMENT_NAV_SLIDE_WRAPPER,\n headline: ELEMENT_NAV_SLIDE_HEADLINE,\n },\n};\n"],"names":["FirstSlide","iconChevronDown"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
const token = require("@universityofmaryland/web-
|
|
2
|
+
const token = require("@universityofmaryland/web-token-library");
|
|
3
3
|
const typography = require("@universityofmaryland/web-styles-library/typography");
|
|
4
4
|
const styles = require("@universityofmaryland/web-utilities-library/styles");
|
|
5
5
|
const network = require("@universityofmaryland/web-utilities-library/network");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header.js","sources":["../../../source/composite/navigation/header.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-styles-library/token';\nimport * as typography from '@universityofmaryland/web-styles-library/typography';\nimport { jssToCSS } from '@universityofmaryland/web-utilities-library/styles';\nimport { isExternalUrl } from '@universityofmaryland/web-utilities-library/network';\nimport { search as iconSearch } from '@universityofmaryland/web-icons-library/search';\nimport MenuButton from './elements/menu-button';\nimport NavigationItem from './elements/item';\n\ntype TypeLogoRequirments = {\n logo?: HTMLElement | null;\n eventOpen?: () => void;\n};\n\ntype TypeSearchLink = {\n searchUrl: string | null;\n};\n\ntype TypeCtaLink = {\n ctaUrl: string | null;\n ctaText: string | null;\n};\n\ntype TypeNavRow = TypeSearchLink &\n TypeCtaLink & {\n utilityRow?: HTMLElement | null;\n navItems?: HTMLElement[];\n };\n\ntype TypeHeaderRequirements = TypeLogoRequirments & TypeNavRow;\n\nconst ANIMATION_TIME = 500;\n\nconst ATTRIBUTE_STICKY = 'data-sticky';\nconst ATTRIBUTE_CTA = 'data-cta';\n\nconst IS_STICKY = `[${ATTRIBUTE_STICKY}=\"true\"]`;\nconst IS_CTA = `[${ATTRIBUTE_CTA}=\"true\"]`;\n\nconst ELEMENT_HEADER_DECLARATION = 'element-header-declaration';\nconst ELEMENT_HEADER_CONTAINTER = 'element-header-container';\nconst ELEMENT_HEADER_WRAPPER = 'element-header-wrapper';\nconst ELEMENT_HEADER_LOGO_COLUMN = 'element-header-logo-column';\nconst ELEMENT_HEADER_NAVIGATION_COLUMN = 'element-header-navigation-column';\nconst ELEMENT_HEADER_LOGO = 'element-header-logo';\nconst ELEMENT_HEADER_MENU_BUTTON = 'element-header-menu-button';\nconst ELEMENT_HEADER_MENU_CTA = 'element-header-menu-cta';\nconst ELEMENT_HEADER_MENU_SEARCH = 'element-header-menu-search';\nconst ELEMENT_HEADER_NAVIGATION_ROW = 'element-header-navigation-row';\nconst ELEMENT_HEADER_UTILITY_ROW = 'element-header-utility-row';\n\nconst OVERWRITE_STICKY_CONTAINER = `.${ELEMENT_HEADER_CONTAINTER}${IS_STICKY}`;\nconst OVERWRITE_STICKY_LOGO = `${OVERWRITE_STICKY_CONTAINER} .${ELEMENT_HEADER_LOGO}`;\nconst OVERWRITE_CTA_WRAPPER = `.${ELEMENT_HEADER_WRAPPER}${IS_CTA}`;\nconst OVERWRITE_CTA_WRAPPER_NAV_ROW = `${OVERWRITE_CTA_WRAPPER} .${ELEMENT_HEADER_NAVIGATION_ROW}`;\nconst OVERWRITE_CTA_WRAPPER_CTA = `${OVERWRITE_CTA_WRAPPER} .${ELEMENT_HEADER_MENU_CTA}`;\n\nconst OverwriteStickyStyles = `\n ${OVERWRITE_STICKY_CONTAINER} {\n padding: ${token.spacing.xs} 0;\n }\n\n .${ELEMENT_HEADER_WRAPPER} {\n align-items: center;\n }\n\n ${OVERWRITE_STICKY_LOGO} img {\n max-height: 30px;\n }\n`;\n\nconst CtaStyles = `\n .${ELEMENT_HEADER_MENU_CTA} {\n color: ${token.color.white};\n font-weight: ${token.font.weight.bold};\n font-size: ${token.font.size.sm};\n padding: ${token.spacing.xs};\n background-color: ${token.color.red};\n transition: background .5s;\n white-space: nowrap;\n }\n\n .${ELEMENT_HEADER_MENU_CTA}:hover,\n .${ELEMENT_HEADER_MENU_CTA}:focus {\n background-color: ${token.color.redDark};\n }\n\n ${OVERWRITE_CTA_WRAPPER_CTA} {\n margin-top: -${token.spacing.min};\n }\n`;\n\nconst NavigationColumnStyles = `\n @media (max-width: 1240px) {\n .${ELEMENT_HEADER_NAVIGATION_COLUMN} {\n display: none;\n }\n }\n\n .${ELEMENT_HEADER_NAVIGATION_ROW} {\n display: grid;\n grid-auto-flow: column;\n }\n\n ${OVERWRITE_CTA_WRAPPER_NAV_ROW} {\n padding-top: ${token.spacing.sm};\n }\n\n .${ELEMENT_HEADER_NAVIGATION_ROW} > * {\n display: block;\n }\n\n .${ELEMENT_HEADER_NAVIGATION_ROW} > *:not(:first-child) {\n margin-left: ${token.spacing.md};\n }\n\n .${ELEMENT_HEADER_NAVIGATION_ROW} svg {\n width: 24px;\n height: 24px;\n fill: ${token.color.black};\n }\n\n .${ELEMENT_HEADER_UTILITY_ROW} {\n display: flex;\n justify-content: flex-end;\n margin-bottom: ${token.spacing.sm};\n }\n\n .${ELEMENT_HEADER_UTILITY_ROW} ::slotted(*) {\n display: flex;\n justify-content: flex-end;\n gap: ${token.spacing.md};\n }\n`;\n\nconst LogoColumnStyles = `\n .${ELEMENT_HEADER_LOGO_COLUMN} {\n align-items: center;\n display: flex;\n justify-content: flex-start;\n position: relative;\n width: 100%;\n max-width: 400px;\n }\n\n .${ELEMENT_HEADER_MENU_BUTTON} {\n border-right: 1px solid ${token.color.gray.light};\n padding-right: ${token.spacing.min};\n margin-right: ${token.spacing.sm};\n }\n\n .${ELEMENT_HEADER_LOGO} {\n display: grid;\n justify-content: flex-start;\n max-width: 350px;\n }\n\n .${ELEMENT_HEADER_LOGO}:has(img[src*=\".svg\"]) img {\n height: 240px;\n }\n\n ${jssToCSS({\n styleObj: {\n [`.${ELEMENT_HEADER_LOGO}`]: typography.sans.larger,\n },\n })}\n\n ${jssToCSS({\n styleObj: {\n [`.${ELEMENT_HEADER_LOGO} *`]: typography.sans.larger,\n },\n })}\n\n .${ELEMENT_HEADER_LOGO},\n .${ELEMENT_HEADER_LOGO} * {\n line-height: 1.05em;\n width: 100%;\n }\n\n ${jssToCSS({\n styleObj: {\n [`.${ELEMENT_HEADER_LOGO}[size=\"large\"]`]: typography.sans.extraLarge,\n },\n })}\n\n ${jssToCSS({\n styleObj: {\n [`.${ELEMENT_HEADER_LOGO}[size=\"large\"] *`]: typography.sans.extraLarge,\n },\n })}\n\n .${ELEMENT_HEADER_LOGO},\n .${ELEMENT_HEADER_LOGO} * {\n font-weight: 700;\n }\n\n .${ELEMENT_HEADER_LOGO} img {\n width: 100%;\n max-height: 48px;\n max-width: 190px;\n }\n\n @media (min-width: ${token.media.breakpoints.tablet.min}) {\n .${ELEMENT_HEADER_LOGO} img {\n max-width: 240px;\n }\n }\n`;\n\nconst WrapperStyles = `\n .${ELEMENT_HEADER_WRAPPER} {\n display: flex;\n justify-content: space-between;\n align-items: flex-end;\n gap: ${token.spacing.lg};\n z-index: 999;\n }\n`;\n\nconst STYLES_NAVIGATION_HEADER = `\n .${ELEMENT_HEADER_CONTAINTER} {\n background-color: ${token.color.white};\n display: block;\n padding: ${token.spacing.md} 0;\n position: relative;\n transition: padding ${ANIMATION_TIME}ms;\n }\n\n ${WrapperStyles}\n ${LogoColumnStyles}\n ${NavigationColumnStyles}\n ${CtaStyles}\n ${OverwriteStickyStyles}\n ${NavigationItem.Styles}\n ${MenuButton.Styles}\n`;\n\nconst CreateSearchLink = ({ searchUrl }: TypeSearchLink) => {\n if (!searchUrl) return null;\n\n const searchLink = document.createElement('a');\n\n searchLink.href = searchUrl;\n searchLink.ariaLabel = 'Visit the search page';\n searchLink.innerHTML = iconSearch;\n searchLink.classList.add(ELEMENT_HEADER_MENU_SEARCH);\n\n return searchLink;\n};\n\nconst CreateCtaLink = ({ ctaUrl, ctaText }: TypeCtaLink) => {\n if (!ctaUrl || !ctaText) return null;\n\n const cta = document.createElement('a');\n\n cta.innerHTML = ctaText;\n if (isExternalUrl(ctaUrl)) {\n cta.setAttribute('target', '_blank');\n }\n cta.setAttribute('href', ctaUrl);\n cta.classList.add(ELEMENT_HEADER_MENU_CTA);\n\n return cta;\n};\n\nconst CreateNavigationColumn = ({\n utilityRow,\n navItems,\n searchUrl,\n ctaText,\n ctaUrl,\n}: TypeNavRow) => {\n if (!navItems) return;\n\n const navColumnContainer = document.createElement('div');\n const utilityRowContainer = document.createElement('div');\n const navRowContainer = document.createElement('div');\n const searchLink = CreateSearchLink({\n searchUrl,\n });\n const ctaLink = CreateCtaLink({ ctaText, ctaUrl });\n\n if (utilityRow) {\n utilityRowContainer.classList.add(ELEMENT_HEADER_UTILITY_ROW);\n utilityRowContainer.appendChild(utilityRow);\n navColumnContainer.appendChild(utilityRowContainer);\n }\n\n navRowContainer.classList.add(ELEMENT_HEADER_NAVIGATION_ROW);\n\n navItems.forEach((item) => {\n navRowContainer.appendChild(item);\n });\n if (searchLink) navRowContainer.appendChild(searchLink);\n if (ctaLink) navRowContainer.appendChild(ctaLink);\n\n navColumnContainer.classList.add(ELEMENT_HEADER_NAVIGATION_COLUMN);\n navColumnContainer.appendChild(navRowContainer);\n\n return navColumnContainer;\n};\n\nconst CreateLogoColumn = ({ logo, eventOpen }: TypeLogoRequirments) => {\n const container = document.createElement('div');\n\n if (eventOpen) {\n const menuButton = MenuButton.CreateElement({ eventOpen });\n menuButton.classList.add(ELEMENT_HEADER_MENU_BUTTON);\n container.appendChild(menuButton);\n }\n\n if (logo) {\n const childrenText = Array.from(logo.children).reduce((acc, child) => {\n if (child.nodeName === 'IMG') return acc;\n\n if (child.textContent) {\n return acc + child.textContent.length;\n }\n\n return acc;\n }, 0);\n logo.classList.add(ELEMENT_HEADER_LOGO);\n\n if (childrenText < 30) {\n logo.setAttribute('size', 'large');\n }\n\n container.appendChild(logo);\n }\n container.classList.add(ELEMENT_HEADER_LOGO_COLUMN);\n return container;\n};\n\nconst CreateNavigationHeader = (props: TypeHeaderRequirements) => {\n const { ctaUrl, ctaText } = props;\n const declaration = document.createElement('div');\n const container = document.createElement('div');\n const wrapper = document.createElement('div');\n const logoColumn = CreateLogoColumn(props);\n const navigationColumn = CreateNavigationColumn(props);\n const eventSticky = ({ isSticky }: { isSticky: boolean }) => {\n const utility = container.querySelector(\n `.${ELEMENT_HEADER_UTILITY_ROW}`,\n ) as HTMLDivElement;\n\n if (isSticky && isElementSticky) return;\n\n if (isSticky) {\n isElementSticky = true;\n container.setAttribute(ATTRIBUTE_STICKY, 'true');\n\n if (utility) {\n utility.style.display = 'none';\n }\n }\n if (!isSticky) {\n isElementSticky = false;\n container.removeAttribute(ATTRIBUTE_STICKY);\n\n if (utility) {\n utility.style.display = 'block';\n }\n }\n };\n let isElementSticky = false;\n\n wrapper.classList.add(ELEMENT_HEADER_WRAPPER);\n wrapper.appendChild(logoColumn);\n\n if (navigationColumn) wrapper.appendChild(navigationColumn);\n if (ctaUrl && ctaText) wrapper.setAttribute(ATTRIBUTE_CTA, 'true');\n\n container.appendChild(wrapper);\n container.classList.add(ELEMENT_HEADER_CONTAINTER);\n\n declaration.classList.add(ELEMENT_HEADER_DECLARATION);\n declaration.appendChild(container);\n\n return {\n element: declaration,\n events: {\n sticky: eventSticky,\n },\n };\n};\n\nexport default {\n CreateElement: CreateNavigationHeader,\n Styles: STYLES_NAVIGATION_HEADER,\n};\n"],"names":["token","jssToCSS","typography","NavigationItem","MenuButton","iconSearch","isExternalUrl"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"header.js","sources":["../../../source/composite/navigation/header.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-token-library';\nimport * as typography from '@universityofmaryland/web-styles-library/typography';\nimport { jssToCSS } from '@universityofmaryland/web-utilities-library/styles';\nimport { isExternalUrl } from '@universityofmaryland/web-utilities-library/network';\nimport { search as iconSearch } from '@universityofmaryland/web-icons-library/search';\nimport MenuButton from './elements/menu-button';\nimport NavigationItem from './elements/item';\n\ntype TypeLogoRequirments = {\n logo?: HTMLElement | null;\n eventOpen?: () => void;\n};\n\ntype TypeSearchLink = {\n searchUrl: string | null;\n};\n\ntype TypeCtaLink = {\n ctaUrl: string | null;\n ctaText: string | null;\n};\n\ntype TypeNavRow = TypeSearchLink &\n TypeCtaLink & {\n utilityRow?: HTMLElement | null;\n navItems?: HTMLElement[];\n };\n\ntype TypeHeaderRequirements = TypeLogoRequirments & TypeNavRow;\n\nconst ANIMATION_TIME = 500;\n\nconst ATTRIBUTE_STICKY = 'data-sticky';\nconst ATTRIBUTE_CTA = 'data-cta';\n\nconst IS_STICKY = `[${ATTRIBUTE_STICKY}=\"true\"]`;\nconst IS_CTA = `[${ATTRIBUTE_CTA}=\"true\"]`;\n\nconst ELEMENT_HEADER_DECLARATION = 'element-header-declaration';\nconst ELEMENT_HEADER_CONTAINTER = 'element-header-container';\nconst ELEMENT_HEADER_WRAPPER = 'element-header-wrapper';\nconst ELEMENT_HEADER_LOGO_COLUMN = 'element-header-logo-column';\nconst ELEMENT_HEADER_NAVIGATION_COLUMN = 'element-header-navigation-column';\nconst ELEMENT_HEADER_LOGO = 'element-header-logo';\nconst ELEMENT_HEADER_MENU_BUTTON = 'element-header-menu-button';\nconst ELEMENT_HEADER_MENU_CTA = 'element-header-menu-cta';\nconst ELEMENT_HEADER_MENU_SEARCH = 'element-header-menu-search';\nconst ELEMENT_HEADER_NAVIGATION_ROW = 'element-header-navigation-row';\nconst ELEMENT_HEADER_UTILITY_ROW = 'element-header-utility-row';\n\nconst OVERWRITE_STICKY_CONTAINER = `.${ELEMENT_HEADER_CONTAINTER}${IS_STICKY}`;\nconst OVERWRITE_STICKY_LOGO = `${OVERWRITE_STICKY_CONTAINER} .${ELEMENT_HEADER_LOGO}`;\nconst OVERWRITE_CTA_WRAPPER = `.${ELEMENT_HEADER_WRAPPER}${IS_CTA}`;\nconst OVERWRITE_CTA_WRAPPER_NAV_ROW = `${OVERWRITE_CTA_WRAPPER} .${ELEMENT_HEADER_NAVIGATION_ROW}`;\nconst OVERWRITE_CTA_WRAPPER_CTA = `${OVERWRITE_CTA_WRAPPER} .${ELEMENT_HEADER_MENU_CTA}`;\n\nconst OverwriteStickyStyles = `\n ${OVERWRITE_STICKY_CONTAINER} {\n padding: ${token.spacing.xs} 0;\n }\n\n .${ELEMENT_HEADER_WRAPPER} {\n align-items: center;\n }\n\n ${OVERWRITE_STICKY_LOGO} img {\n max-height: 30px;\n }\n`;\n\nconst CtaStyles = `\n .${ELEMENT_HEADER_MENU_CTA} {\n color: ${token.color.white};\n font-weight: ${token.font.weight.bold};\n font-size: ${token.font.size.sm};\n padding: ${token.spacing.xs};\n background-color: ${token.color.red};\n transition: background .5s;\n white-space: nowrap;\n }\n\n .${ELEMENT_HEADER_MENU_CTA}:hover,\n .${ELEMENT_HEADER_MENU_CTA}:focus {\n background-color: ${token.color.redDark};\n }\n\n ${OVERWRITE_CTA_WRAPPER_CTA} {\n margin-top: -${token.spacing.min};\n }\n`;\n\nconst NavigationColumnStyles = `\n @media (max-width: 1240px) {\n .${ELEMENT_HEADER_NAVIGATION_COLUMN} {\n display: none;\n }\n }\n\n .${ELEMENT_HEADER_NAVIGATION_ROW} {\n display: grid;\n grid-auto-flow: column;\n }\n\n ${OVERWRITE_CTA_WRAPPER_NAV_ROW} {\n padding-top: ${token.spacing.sm};\n }\n\n .${ELEMENT_HEADER_NAVIGATION_ROW} > * {\n display: block;\n }\n\n .${ELEMENT_HEADER_NAVIGATION_ROW} > *:not(:first-child) {\n margin-left: ${token.spacing.md};\n }\n\n .${ELEMENT_HEADER_NAVIGATION_ROW} svg {\n width: 24px;\n height: 24px;\n fill: ${token.color.black};\n }\n\n .${ELEMENT_HEADER_UTILITY_ROW} {\n display: flex;\n justify-content: flex-end;\n margin-bottom: ${token.spacing.sm};\n }\n\n .${ELEMENT_HEADER_UTILITY_ROW} ::slotted(*) {\n display: flex;\n justify-content: flex-end;\n gap: ${token.spacing.md};\n }\n`;\n\nconst LogoColumnStyles = `\n .${ELEMENT_HEADER_LOGO_COLUMN} {\n align-items: center;\n display: flex;\n justify-content: flex-start;\n position: relative;\n width: 100%;\n max-width: 400px;\n }\n\n .${ELEMENT_HEADER_MENU_BUTTON} {\n border-right: 1px solid ${token.color.gray.light};\n padding-right: ${token.spacing.min};\n margin-right: ${token.spacing.sm};\n }\n\n .${ELEMENT_HEADER_LOGO} {\n display: grid;\n justify-content: flex-start;\n max-width: 350px;\n }\n\n .${ELEMENT_HEADER_LOGO}:has(img[src*=\".svg\"]) img {\n height: 240px;\n }\n\n ${jssToCSS({\n styleObj: {\n [`.${ELEMENT_HEADER_LOGO}`]: typography.sans.larger,\n },\n })}\n\n ${jssToCSS({\n styleObj: {\n [`.${ELEMENT_HEADER_LOGO} *`]: typography.sans.larger,\n },\n })}\n\n .${ELEMENT_HEADER_LOGO},\n .${ELEMENT_HEADER_LOGO} * {\n line-height: 1.05em;\n width: 100%;\n }\n\n ${jssToCSS({\n styleObj: {\n [`.${ELEMENT_HEADER_LOGO}[size=\"large\"]`]: typography.sans.extraLarge,\n },\n })}\n\n ${jssToCSS({\n styleObj: {\n [`.${ELEMENT_HEADER_LOGO}[size=\"large\"] *`]: typography.sans.extraLarge,\n },\n })}\n\n .${ELEMENT_HEADER_LOGO},\n .${ELEMENT_HEADER_LOGO} * {\n font-weight: 700;\n }\n\n .${ELEMENT_HEADER_LOGO} img {\n width: 100%;\n max-height: 48px;\n max-width: 190px;\n }\n\n @media (min-width: ${token.media.breakpoints.tablet.min}) {\n .${ELEMENT_HEADER_LOGO} img {\n max-width: 240px;\n }\n }\n`;\n\nconst WrapperStyles = `\n .${ELEMENT_HEADER_WRAPPER} {\n display: flex;\n justify-content: space-between;\n align-items: flex-end;\n gap: ${token.spacing.lg};\n z-index: 999;\n }\n`;\n\nconst STYLES_NAVIGATION_HEADER = `\n .${ELEMENT_HEADER_CONTAINTER} {\n background-color: ${token.color.white};\n display: block;\n padding: ${token.spacing.md} 0;\n position: relative;\n transition: padding ${ANIMATION_TIME}ms;\n }\n\n ${WrapperStyles}\n ${LogoColumnStyles}\n ${NavigationColumnStyles}\n ${CtaStyles}\n ${OverwriteStickyStyles}\n ${NavigationItem.Styles}\n ${MenuButton.Styles}\n`;\n\nconst CreateSearchLink = ({ searchUrl }: TypeSearchLink) => {\n if (!searchUrl) return null;\n\n const searchLink = document.createElement('a');\n\n searchLink.href = searchUrl;\n searchLink.ariaLabel = 'Visit the search page';\n searchLink.innerHTML = iconSearch;\n searchLink.classList.add(ELEMENT_HEADER_MENU_SEARCH);\n\n return searchLink;\n};\n\nconst CreateCtaLink = ({ ctaUrl, ctaText }: TypeCtaLink) => {\n if (!ctaUrl || !ctaText) return null;\n\n const cta = document.createElement('a');\n\n cta.innerHTML = ctaText;\n if (isExternalUrl(ctaUrl)) {\n cta.setAttribute('target', '_blank');\n }\n cta.setAttribute('href', ctaUrl);\n cta.classList.add(ELEMENT_HEADER_MENU_CTA);\n\n return cta;\n};\n\nconst CreateNavigationColumn = ({\n utilityRow,\n navItems,\n searchUrl,\n ctaText,\n ctaUrl,\n}: TypeNavRow) => {\n if (!navItems) return;\n\n const navColumnContainer = document.createElement('div');\n const utilityRowContainer = document.createElement('div');\n const navRowContainer = document.createElement('div');\n const searchLink = CreateSearchLink({\n searchUrl,\n });\n const ctaLink = CreateCtaLink({ ctaText, ctaUrl });\n\n if (utilityRow) {\n utilityRowContainer.classList.add(ELEMENT_HEADER_UTILITY_ROW);\n utilityRowContainer.appendChild(utilityRow);\n navColumnContainer.appendChild(utilityRowContainer);\n }\n\n navRowContainer.classList.add(ELEMENT_HEADER_NAVIGATION_ROW);\n\n navItems.forEach((item) => {\n navRowContainer.appendChild(item);\n });\n if (searchLink) navRowContainer.appendChild(searchLink);\n if (ctaLink) navRowContainer.appendChild(ctaLink);\n\n navColumnContainer.classList.add(ELEMENT_HEADER_NAVIGATION_COLUMN);\n navColumnContainer.appendChild(navRowContainer);\n\n return navColumnContainer;\n};\n\nconst CreateLogoColumn = ({ logo, eventOpen }: TypeLogoRequirments) => {\n const container = document.createElement('div');\n\n if (eventOpen) {\n const menuButton = MenuButton.CreateElement({ eventOpen });\n menuButton.classList.add(ELEMENT_HEADER_MENU_BUTTON);\n container.appendChild(menuButton);\n }\n\n if (logo) {\n const childrenText = Array.from(logo.children).reduce((acc, child) => {\n if (child.nodeName === 'IMG') return acc;\n\n if (child.textContent) {\n return acc + child.textContent.length;\n }\n\n return acc;\n }, 0);\n logo.classList.add(ELEMENT_HEADER_LOGO);\n\n if (childrenText < 30) {\n logo.setAttribute('size', 'large');\n }\n\n container.appendChild(logo);\n }\n container.classList.add(ELEMENT_HEADER_LOGO_COLUMN);\n return container;\n};\n\nconst CreateNavigationHeader = (props: TypeHeaderRequirements) => {\n const { ctaUrl, ctaText } = props;\n const declaration = document.createElement('div');\n const container = document.createElement('div');\n const wrapper = document.createElement('div');\n const logoColumn = CreateLogoColumn(props);\n const navigationColumn = CreateNavigationColumn(props);\n const eventSticky = ({ isSticky }: { isSticky: boolean }) => {\n const utility = container.querySelector(\n `.${ELEMENT_HEADER_UTILITY_ROW}`,\n ) as HTMLDivElement;\n\n if (isSticky && isElementSticky) return;\n\n if (isSticky) {\n isElementSticky = true;\n container.setAttribute(ATTRIBUTE_STICKY, 'true');\n\n if (utility) {\n utility.style.display = 'none';\n }\n }\n if (!isSticky) {\n isElementSticky = false;\n container.removeAttribute(ATTRIBUTE_STICKY);\n\n if (utility) {\n utility.style.display = 'block';\n }\n }\n };\n let isElementSticky = false;\n\n wrapper.classList.add(ELEMENT_HEADER_WRAPPER);\n wrapper.appendChild(logoColumn);\n\n if (navigationColumn) wrapper.appendChild(navigationColumn);\n if (ctaUrl && ctaText) wrapper.setAttribute(ATTRIBUTE_CTA, 'true');\n\n container.appendChild(wrapper);\n container.classList.add(ELEMENT_HEADER_CONTAINTER);\n\n declaration.classList.add(ELEMENT_HEADER_DECLARATION);\n declaration.appendChild(container);\n\n return {\n element: declaration,\n events: {\n sticky: eventSticky,\n },\n };\n};\n\nexport default {\n CreateElement: CreateNavigationHeader,\n Styles: STYLES_NAVIGATION_HEADER,\n};\n"],"names":["token","jssToCSS","typography","NavigationItem","MenuButton","iconSearch","isExternalUrl"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as token from "@universityofmaryland/web-
|
|
1
|
+
import * as token from "@universityofmaryland/web-token-library";
|
|
2
2
|
import * as typography from "@universityofmaryland/web-styles-library/typography";
|
|
3
3
|
import { jssToCSS } from "@universityofmaryland/web-utilities-library/styles";
|
|
4
4
|
import { isExternalUrl } from "@universityofmaryland/web-utilities-library/network";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header.mjs","sources":["../../../source/composite/navigation/header.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-styles-library/token';\nimport * as typography from '@universityofmaryland/web-styles-library/typography';\nimport { jssToCSS } from '@universityofmaryland/web-utilities-library/styles';\nimport { isExternalUrl } from '@universityofmaryland/web-utilities-library/network';\nimport { search as iconSearch } from '@universityofmaryland/web-icons-library/search';\nimport MenuButton from './elements/menu-button';\nimport NavigationItem from './elements/item';\n\ntype TypeLogoRequirments = {\n logo?: HTMLElement | null;\n eventOpen?: () => void;\n};\n\ntype TypeSearchLink = {\n searchUrl: string | null;\n};\n\ntype TypeCtaLink = {\n ctaUrl: string | null;\n ctaText: string | null;\n};\n\ntype TypeNavRow = TypeSearchLink &\n TypeCtaLink & {\n utilityRow?: HTMLElement | null;\n navItems?: HTMLElement[];\n };\n\ntype TypeHeaderRequirements = TypeLogoRequirments & TypeNavRow;\n\nconst ANIMATION_TIME = 500;\n\nconst ATTRIBUTE_STICKY = 'data-sticky';\nconst ATTRIBUTE_CTA = 'data-cta';\n\nconst IS_STICKY = `[${ATTRIBUTE_STICKY}=\"true\"]`;\nconst IS_CTA = `[${ATTRIBUTE_CTA}=\"true\"]`;\n\nconst ELEMENT_HEADER_DECLARATION = 'element-header-declaration';\nconst ELEMENT_HEADER_CONTAINTER = 'element-header-container';\nconst ELEMENT_HEADER_WRAPPER = 'element-header-wrapper';\nconst ELEMENT_HEADER_LOGO_COLUMN = 'element-header-logo-column';\nconst ELEMENT_HEADER_NAVIGATION_COLUMN = 'element-header-navigation-column';\nconst ELEMENT_HEADER_LOGO = 'element-header-logo';\nconst ELEMENT_HEADER_MENU_BUTTON = 'element-header-menu-button';\nconst ELEMENT_HEADER_MENU_CTA = 'element-header-menu-cta';\nconst ELEMENT_HEADER_MENU_SEARCH = 'element-header-menu-search';\nconst ELEMENT_HEADER_NAVIGATION_ROW = 'element-header-navigation-row';\nconst ELEMENT_HEADER_UTILITY_ROW = 'element-header-utility-row';\n\nconst OVERWRITE_STICKY_CONTAINER = `.${ELEMENT_HEADER_CONTAINTER}${IS_STICKY}`;\nconst OVERWRITE_STICKY_LOGO = `${OVERWRITE_STICKY_CONTAINER} .${ELEMENT_HEADER_LOGO}`;\nconst OVERWRITE_CTA_WRAPPER = `.${ELEMENT_HEADER_WRAPPER}${IS_CTA}`;\nconst OVERWRITE_CTA_WRAPPER_NAV_ROW = `${OVERWRITE_CTA_WRAPPER} .${ELEMENT_HEADER_NAVIGATION_ROW}`;\nconst OVERWRITE_CTA_WRAPPER_CTA = `${OVERWRITE_CTA_WRAPPER} .${ELEMENT_HEADER_MENU_CTA}`;\n\nconst OverwriteStickyStyles = `\n ${OVERWRITE_STICKY_CONTAINER} {\n padding: ${token.spacing.xs} 0;\n }\n\n .${ELEMENT_HEADER_WRAPPER} {\n align-items: center;\n }\n\n ${OVERWRITE_STICKY_LOGO} img {\n max-height: 30px;\n }\n`;\n\nconst CtaStyles = `\n .${ELEMENT_HEADER_MENU_CTA} {\n color: ${token.color.white};\n font-weight: ${token.font.weight.bold};\n font-size: ${token.font.size.sm};\n padding: ${token.spacing.xs};\n background-color: ${token.color.red};\n transition: background .5s;\n white-space: nowrap;\n }\n\n .${ELEMENT_HEADER_MENU_CTA}:hover,\n .${ELEMENT_HEADER_MENU_CTA}:focus {\n background-color: ${token.color.redDark};\n }\n\n ${OVERWRITE_CTA_WRAPPER_CTA} {\n margin-top: -${token.spacing.min};\n }\n`;\n\nconst NavigationColumnStyles = `\n @media (max-width: 1240px) {\n .${ELEMENT_HEADER_NAVIGATION_COLUMN} {\n display: none;\n }\n }\n\n .${ELEMENT_HEADER_NAVIGATION_ROW} {\n display: grid;\n grid-auto-flow: column;\n }\n\n ${OVERWRITE_CTA_WRAPPER_NAV_ROW} {\n padding-top: ${token.spacing.sm};\n }\n\n .${ELEMENT_HEADER_NAVIGATION_ROW} > * {\n display: block;\n }\n\n .${ELEMENT_HEADER_NAVIGATION_ROW} > *:not(:first-child) {\n margin-left: ${token.spacing.md};\n }\n\n .${ELEMENT_HEADER_NAVIGATION_ROW} svg {\n width: 24px;\n height: 24px;\n fill: ${token.color.black};\n }\n\n .${ELEMENT_HEADER_UTILITY_ROW} {\n display: flex;\n justify-content: flex-end;\n margin-bottom: ${token.spacing.sm};\n }\n\n .${ELEMENT_HEADER_UTILITY_ROW} ::slotted(*) {\n display: flex;\n justify-content: flex-end;\n gap: ${token.spacing.md};\n }\n`;\n\nconst LogoColumnStyles = `\n .${ELEMENT_HEADER_LOGO_COLUMN} {\n align-items: center;\n display: flex;\n justify-content: flex-start;\n position: relative;\n width: 100%;\n max-width: 400px;\n }\n\n .${ELEMENT_HEADER_MENU_BUTTON} {\n border-right: 1px solid ${token.color.gray.light};\n padding-right: ${token.spacing.min};\n margin-right: ${token.spacing.sm};\n }\n\n .${ELEMENT_HEADER_LOGO} {\n display: grid;\n justify-content: flex-start;\n max-width: 350px;\n }\n\n .${ELEMENT_HEADER_LOGO}:has(img[src*=\".svg\"]) img {\n height: 240px;\n }\n\n ${jssToCSS({\n styleObj: {\n [`.${ELEMENT_HEADER_LOGO}`]: typography.sans.larger,\n },\n })}\n\n ${jssToCSS({\n styleObj: {\n [`.${ELEMENT_HEADER_LOGO} *`]: typography.sans.larger,\n },\n })}\n\n .${ELEMENT_HEADER_LOGO},\n .${ELEMENT_HEADER_LOGO} * {\n line-height: 1.05em;\n width: 100%;\n }\n\n ${jssToCSS({\n styleObj: {\n [`.${ELEMENT_HEADER_LOGO}[size=\"large\"]`]: typography.sans.extraLarge,\n },\n })}\n\n ${jssToCSS({\n styleObj: {\n [`.${ELEMENT_HEADER_LOGO}[size=\"large\"] *`]: typography.sans.extraLarge,\n },\n })}\n\n .${ELEMENT_HEADER_LOGO},\n .${ELEMENT_HEADER_LOGO} * {\n font-weight: 700;\n }\n\n .${ELEMENT_HEADER_LOGO} img {\n width: 100%;\n max-height: 48px;\n max-width: 190px;\n }\n\n @media (min-width: ${token.media.breakpoints.tablet.min}) {\n .${ELEMENT_HEADER_LOGO} img {\n max-width: 240px;\n }\n }\n`;\n\nconst WrapperStyles = `\n .${ELEMENT_HEADER_WRAPPER} {\n display: flex;\n justify-content: space-between;\n align-items: flex-end;\n gap: ${token.spacing.lg};\n z-index: 999;\n }\n`;\n\nconst STYLES_NAVIGATION_HEADER = `\n .${ELEMENT_HEADER_CONTAINTER} {\n background-color: ${token.color.white};\n display: block;\n padding: ${token.spacing.md} 0;\n position: relative;\n transition: padding ${ANIMATION_TIME}ms;\n }\n\n ${WrapperStyles}\n ${LogoColumnStyles}\n ${NavigationColumnStyles}\n ${CtaStyles}\n ${OverwriteStickyStyles}\n ${NavigationItem.Styles}\n ${MenuButton.Styles}\n`;\n\nconst CreateSearchLink = ({ searchUrl }: TypeSearchLink) => {\n if (!searchUrl) return null;\n\n const searchLink = document.createElement('a');\n\n searchLink.href = searchUrl;\n searchLink.ariaLabel = 'Visit the search page';\n searchLink.innerHTML = iconSearch;\n searchLink.classList.add(ELEMENT_HEADER_MENU_SEARCH);\n\n return searchLink;\n};\n\nconst CreateCtaLink = ({ ctaUrl, ctaText }: TypeCtaLink) => {\n if (!ctaUrl || !ctaText) return null;\n\n const cta = document.createElement('a');\n\n cta.innerHTML = ctaText;\n if (isExternalUrl(ctaUrl)) {\n cta.setAttribute('target', '_blank');\n }\n cta.setAttribute('href', ctaUrl);\n cta.classList.add(ELEMENT_HEADER_MENU_CTA);\n\n return cta;\n};\n\nconst CreateNavigationColumn = ({\n utilityRow,\n navItems,\n searchUrl,\n ctaText,\n ctaUrl,\n}: TypeNavRow) => {\n if (!navItems) return;\n\n const navColumnContainer = document.createElement('div');\n const utilityRowContainer = document.createElement('div');\n const navRowContainer = document.createElement('div');\n const searchLink = CreateSearchLink({\n searchUrl,\n });\n const ctaLink = CreateCtaLink({ ctaText, ctaUrl });\n\n if (utilityRow) {\n utilityRowContainer.classList.add(ELEMENT_HEADER_UTILITY_ROW);\n utilityRowContainer.appendChild(utilityRow);\n navColumnContainer.appendChild(utilityRowContainer);\n }\n\n navRowContainer.classList.add(ELEMENT_HEADER_NAVIGATION_ROW);\n\n navItems.forEach((item) => {\n navRowContainer.appendChild(item);\n });\n if (searchLink) navRowContainer.appendChild(searchLink);\n if (ctaLink) navRowContainer.appendChild(ctaLink);\n\n navColumnContainer.classList.add(ELEMENT_HEADER_NAVIGATION_COLUMN);\n navColumnContainer.appendChild(navRowContainer);\n\n return navColumnContainer;\n};\n\nconst CreateLogoColumn = ({ logo, eventOpen }: TypeLogoRequirments) => {\n const container = document.createElement('div');\n\n if (eventOpen) {\n const menuButton = MenuButton.CreateElement({ eventOpen });\n menuButton.classList.add(ELEMENT_HEADER_MENU_BUTTON);\n container.appendChild(menuButton);\n }\n\n if (logo) {\n const childrenText = Array.from(logo.children).reduce((acc, child) => {\n if (child.nodeName === 'IMG') return acc;\n\n if (child.textContent) {\n return acc + child.textContent.length;\n }\n\n return acc;\n }, 0);\n logo.classList.add(ELEMENT_HEADER_LOGO);\n\n if (childrenText < 30) {\n logo.setAttribute('size', 'large');\n }\n\n container.appendChild(logo);\n }\n container.classList.add(ELEMENT_HEADER_LOGO_COLUMN);\n return container;\n};\n\nconst CreateNavigationHeader = (props: TypeHeaderRequirements) => {\n const { ctaUrl, ctaText } = props;\n const declaration = document.createElement('div');\n const container = document.createElement('div');\n const wrapper = document.createElement('div');\n const logoColumn = CreateLogoColumn(props);\n const navigationColumn = CreateNavigationColumn(props);\n const eventSticky = ({ isSticky }: { isSticky: boolean }) => {\n const utility = container.querySelector(\n `.${ELEMENT_HEADER_UTILITY_ROW}`,\n ) as HTMLDivElement;\n\n if (isSticky && isElementSticky) return;\n\n if (isSticky) {\n isElementSticky = true;\n container.setAttribute(ATTRIBUTE_STICKY, 'true');\n\n if (utility) {\n utility.style.display = 'none';\n }\n }\n if (!isSticky) {\n isElementSticky = false;\n container.removeAttribute(ATTRIBUTE_STICKY);\n\n if (utility) {\n utility.style.display = 'block';\n }\n }\n };\n let isElementSticky = false;\n\n wrapper.classList.add(ELEMENT_HEADER_WRAPPER);\n wrapper.appendChild(logoColumn);\n\n if (navigationColumn) wrapper.appendChild(navigationColumn);\n if (ctaUrl && ctaText) wrapper.setAttribute(ATTRIBUTE_CTA, 'true');\n\n container.appendChild(wrapper);\n container.classList.add(ELEMENT_HEADER_CONTAINTER);\n\n declaration.classList.add(ELEMENT_HEADER_DECLARATION);\n declaration.appendChild(container);\n\n return {\n element: declaration,\n events: {\n sticky: eventSticky,\n },\n };\n};\n\nexport default {\n CreateElement: CreateNavigationHeader,\n Styles: STYLES_NAVIGATION_HEADER,\n};\n"],"names":["iconSearch"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"header.mjs","sources":["../../../source/composite/navigation/header.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-token-library';\nimport * as typography from '@universityofmaryland/web-styles-library/typography';\nimport { jssToCSS } from '@universityofmaryland/web-utilities-library/styles';\nimport { isExternalUrl } from '@universityofmaryland/web-utilities-library/network';\nimport { search as iconSearch } from '@universityofmaryland/web-icons-library/search';\nimport MenuButton from './elements/menu-button';\nimport NavigationItem from './elements/item';\n\ntype TypeLogoRequirments = {\n logo?: HTMLElement | null;\n eventOpen?: () => void;\n};\n\ntype TypeSearchLink = {\n searchUrl: string | null;\n};\n\ntype TypeCtaLink = {\n ctaUrl: string | null;\n ctaText: string | null;\n};\n\ntype TypeNavRow = TypeSearchLink &\n TypeCtaLink & {\n utilityRow?: HTMLElement | null;\n navItems?: HTMLElement[];\n };\n\ntype TypeHeaderRequirements = TypeLogoRequirments & TypeNavRow;\n\nconst ANIMATION_TIME = 500;\n\nconst ATTRIBUTE_STICKY = 'data-sticky';\nconst ATTRIBUTE_CTA = 'data-cta';\n\nconst IS_STICKY = `[${ATTRIBUTE_STICKY}=\"true\"]`;\nconst IS_CTA = `[${ATTRIBUTE_CTA}=\"true\"]`;\n\nconst ELEMENT_HEADER_DECLARATION = 'element-header-declaration';\nconst ELEMENT_HEADER_CONTAINTER = 'element-header-container';\nconst ELEMENT_HEADER_WRAPPER = 'element-header-wrapper';\nconst ELEMENT_HEADER_LOGO_COLUMN = 'element-header-logo-column';\nconst ELEMENT_HEADER_NAVIGATION_COLUMN = 'element-header-navigation-column';\nconst ELEMENT_HEADER_LOGO = 'element-header-logo';\nconst ELEMENT_HEADER_MENU_BUTTON = 'element-header-menu-button';\nconst ELEMENT_HEADER_MENU_CTA = 'element-header-menu-cta';\nconst ELEMENT_HEADER_MENU_SEARCH = 'element-header-menu-search';\nconst ELEMENT_HEADER_NAVIGATION_ROW = 'element-header-navigation-row';\nconst ELEMENT_HEADER_UTILITY_ROW = 'element-header-utility-row';\n\nconst OVERWRITE_STICKY_CONTAINER = `.${ELEMENT_HEADER_CONTAINTER}${IS_STICKY}`;\nconst OVERWRITE_STICKY_LOGO = `${OVERWRITE_STICKY_CONTAINER} .${ELEMENT_HEADER_LOGO}`;\nconst OVERWRITE_CTA_WRAPPER = `.${ELEMENT_HEADER_WRAPPER}${IS_CTA}`;\nconst OVERWRITE_CTA_WRAPPER_NAV_ROW = `${OVERWRITE_CTA_WRAPPER} .${ELEMENT_HEADER_NAVIGATION_ROW}`;\nconst OVERWRITE_CTA_WRAPPER_CTA = `${OVERWRITE_CTA_WRAPPER} .${ELEMENT_HEADER_MENU_CTA}`;\n\nconst OverwriteStickyStyles = `\n ${OVERWRITE_STICKY_CONTAINER} {\n padding: ${token.spacing.xs} 0;\n }\n\n .${ELEMENT_HEADER_WRAPPER} {\n align-items: center;\n }\n\n ${OVERWRITE_STICKY_LOGO} img {\n max-height: 30px;\n }\n`;\n\nconst CtaStyles = `\n .${ELEMENT_HEADER_MENU_CTA} {\n color: ${token.color.white};\n font-weight: ${token.font.weight.bold};\n font-size: ${token.font.size.sm};\n padding: ${token.spacing.xs};\n background-color: ${token.color.red};\n transition: background .5s;\n white-space: nowrap;\n }\n\n .${ELEMENT_HEADER_MENU_CTA}:hover,\n .${ELEMENT_HEADER_MENU_CTA}:focus {\n background-color: ${token.color.redDark};\n }\n\n ${OVERWRITE_CTA_WRAPPER_CTA} {\n margin-top: -${token.spacing.min};\n }\n`;\n\nconst NavigationColumnStyles = `\n @media (max-width: 1240px) {\n .${ELEMENT_HEADER_NAVIGATION_COLUMN} {\n display: none;\n }\n }\n\n .${ELEMENT_HEADER_NAVIGATION_ROW} {\n display: grid;\n grid-auto-flow: column;\n }\n\n ${OVERWRITE_CTA_WRAPPER_NAV_ROW} {\n padding-top: ${token.spacing.sm};\n }\n\n .${ELEMENT_HEADER_NAVIGATION_ROW} > * {\n display: block;\n }\n\n .${ELEMENT_HEADER_NAVIGATION_ROW} > *:not(:first-child) {\n margin-left: ${token.spacing.md};\n }\n\n .${ELEMENT_HEADER_NAVIGATION_ROW} svg {\n width: 24px;\n height: 24px;\n fill: ${token.color.black};\n }\n\n .${ELEMENT_HEADER_UTILITY_ROW} {\n display: flex;\n justify-content: flex-end;\n margin-bottom: ${token.spacing.sm};\n }\n\n .${ELEMENT_HEADER_UTILITY_ROW} ::slotted(*) {\n display: flex;\n justify-content: flex-end;\n gap: ${token.spacing.md};\n }\n`;\n\nconst LogoColumnStyles = `\n .${ELEMENT_HEADER_LOGO_COLUMN} {\n align-items: center;\n display: flex;\n justify-content: flex-start;\n position: relative;\n width: 100%;\n max-width: 400px;\n }\n\n .${ELEMENT_HEADER_MENU_BUTTON} {\n border-right: 1px solid ${token.color.gray.light};\n padding-right: ${token.spacing.min};\n margin-right: ${token.spacing.sm};\n }\n\n .${ELEMENT_HEADER_LOGO} {\n display: grid;\n justify-content: flex-start;\n max-width: 350px;\n }\n\n .${ELEMENT_HEADER_LOGO}:has(img[src*=\".svg\"]) img {\n height: 240px;\n }\n\n ${jssToCSS({\n styleObj: {\n [`.${ELEMENT_HEADER_LOGO}`]: typography.sans.larger,\n },\n })}\n\n ${jssToCSS({\n styleObj: {\n [`.${ELEMENT_HEADER_LOGO} *`]: typography.sans.larger,\n },\n })}\n\n .${ELEMENT_HEADER_LOGO},\n .${ELEMENT_HEADER_LOGO} * {\n line-height: 1.05em;\n width: 100%;\n }\n\n ${jssToCSS({\n styleObj: {\n [`.${ELEMENT_HEADER_LOGO}[size=\"large\"]`]: typography.sans.extraLarge,\n },\n })}\n\n ${jssToCSS({\n styleObj: {\n [`.${ELEMENT_HEADER_LOGO}[size=\"large\"] *`]: typography.sans.extraLarge,\n },\n })}\n\n .${ELEMENT_HEADER_LOGO},\n .${ELEMENT_HEADER_LOGO} * {\n font-weight: 700;\n }\n\n .${ELEMENT_HEADER_LOGO} img {\n width: 100%;\n max-height: 48px;\n max-width: 190px;\n }\n\n @media (min-width: ${token.media.breakpoints.tablet.min}) {\n .${ELEMENT_HEADER_LOGO} img {\n max-width: 240px;\n }\n }\n`;\n\nconst WrapperStyles = `\n .${ELEMENT_HEADER_WRAPPER} {\n display: flex;\n justify-content: space-between;\n align-items: flex-end;\n gap: ${token.spacing.lg};\n z-index: 999;\n }\n`;\n\nconst STYLES_NAVIGATION_HEADER = `\n .${ELEMENT_HEADER_CONTAINTER} {\n background-color: ${token.color.white};\n display: block;\n padding: ${token.spacing.md} 0;\n position: relative;\n transition: padding ${ANIMATION_TIME}ms;\n }\n\n ${WrapperStyles}\n ${LogoColumnStyles}\n ${NavigationColumnStyles}\n ${CtaStyles}\n ${OverwriteStickyStyles}\n ${NavigationItem.Styles}\n ${MenuButton.Styles}\n`;\n\nconst CreateSearchLink = ({ searchUrl }: TypeSearchLink) => {\n if (!searchUrl) return null;\n\n const searchLink = document.createElement('a');\n\n searchLink.href = searchUrl;\n searchLink.ariaLabel = 'Visit the search page';\n searchLink.innerHTML = iconSearch;\n searchLink.classList.add(ELEMENT_HEADER_MENU_SEARCH);\n\n return searchLink;\n};\n\nconst CreateCtaLink = ({ ctaUrl, ctaText }: TypeCtaLink) => {\n if (!ctaUrl || !ctaText) return null;\n\n const cta = document.createElement('a');\n\n cta.innerHTML = ctaText;\n if (isExternalUrl(ctaUrl)) {\n cta.setAttribute('target', '_blank');\n }\n cta.setAttribute('href', ctaUrl);\n cta.classList.add(ELEMENT_HEADER_MENU_CTA);\n\n return cta;\n};\n\nconst CreateNavigationColumn = ({\n utilityRow,\n navItems,\n searchUrl,\n ctaText,\n ctaUrl,\n}: TypeNavRow) => {\n if (!navItems) return;\n\n const navColumnContainer = document.createElement('div');\n const utilityRowContainer = document.createElement('div');\n const navRowContainer = document.createElement('div');\n const searchLink = CreateSearchLink({\n searchUrl,\n });\n const ctaLink = CreateCtaLink({ ctaText, ctaUrl });\n\n if (utilityRow) {\n utilityRowContainer.classList.add(ELEMENT_HEADER_UTILITY_ROW);\n utilityRowContainer.appendChild(utilityRow);\n navColumnContainer.appendChild(utilityRowContainer);\n }\n\n navRowContainer.classList.add(ELEMENT_HEADER_NAVIGATION_ROW);\n\n navItems.forEach((item) => {\n navRowContainer.appendChild(item);\n });\n if (searchLink) navRowContainer.appendChild(searchLink);\n if (ctaLink) navRowContainer.appendChild(ctaLink);\n\n navColumnContainer.classList.add(ELEMENT_HEADER_NAVIGATION_COLUMN);\n navColumnContainer.appendChild(navRowContainer);\n\n return navColumnContainer;\n};\n\nconst CreateLogoColumn = ({ logo, eventOpen }: TypeLogoRequirments) => {\n const container = document.createElement('div');\n\n if (eventOpen) {\n const menuButton = MenuButton.CreateElement({ eventOpen });\n menuButton.classList.add(ELEMENT_HEADER_MENU_BUTTON);\n container.appendChild(menuButton);\n }\n\n if (logo) {\n const childrenText = Array.from(logo.children).reduce((acc, child) => {\n if (child.nodeName === 'IMG') return acc;\n\n if (child.textContent) {\n return acc + child.textContent.length;\n }\n\n return acc;\n }, 0);\n logo.classList.add(ELEMENT_HEADER_LOGO);\n\n if (childrenText < 30) {\n logo.setAttribute('size', 'large');\n }\n\n container.appendChild(logo);\n }\n container.classList.add(ELEMENT_HEADER_LOGO_COLUMN);\n return container;\n};\n\nconst CreateNavigationHeader = (props: TypeHeaderRequirements) => {\n const { ctaUrl, ctaText } = props;\n const declaration = document.createElement('div');\n const container = document.createElement('div');\n const wrapper = document.createElement('div');\n const logoColumn = CreateLogoColumn(props);\n const navigationColumn = CreateNavigationColumn(props);\n const eventSticky = ({ isSticky }: { isSticky: boolean }) => {\n const utility = container.querySelector(\n `.${ELEMENT_HEADER_UTILITY_ROW}`,\n ) as HTMLDivElement;\n\n if (isSticky && isElementSticky) return;\n\n if (isSticky) {\n isElementSticky = true;\n container.setAttribute(ATTRIBUTE_STICKY, 'true');\n\n if (utility) {\n utility.style.display = 'none';\n }\n }\n if (!isSticky) {\n isElementSticky = false;\n container.removeAttribute(ATTRIBUTE_STICKY);\n\n if (utility) {\n utility.style.display = 'block';\n }\n }\n };\n let isElementSticky = false;\n\n wrapper.classList.add(ELEMENT_HEADER_WRAPPER);\n wrapper.appendChild(logoColumn);\n\n if (navigationColumn) wrapper.appendChild(navigationColumn);\n if (ctaUrl && ctaText) wrapper.setAttribute(ATTRIBUTE_CTA, 'true');\n\n container.appendChild(wrapper);\n container.classList.add(ELEMENT_HEADER_CONTAINTER);\n\n declaration.classList.add(ELEMENT_HEADER_DECLARATION);\n declaration.appendChild(container);\n\n return {\n element: declaration,\n events: {\n sticky: eventSticky,\n },\n };\n};\n\nexport default {\n CreateElement: CreateNavigationHeader,\n Styles: STYLES_NAVIGATION_HEADER,\n};\n"],"names":["iconSearch"],"mappings":";;;;;;;AA8BA,MAAM,iBAAiB;AAEvB,MAAM,mBAAmB;AACzB,MAAM,gBAAgB;AAEtB,MAAM,YAAY,IAAI,gBAAgB;AACtC,MAAM,SAAS,IAAI,aAAa;AAEhC,MAAM,6BAA6B;AACnC,MAAM,4BAA4B;AAClC,MAAM,yBAAyB;AAC/B,MAAM,6BAA6B;AACnC,MAAM,mCAAmC;AACzC,MAAM,sBAAsB;AAC5B,MAAM,6BAA6B;AACnC,MAAM,0BAA0B;AAChC,MAAM,6BAA6B;AACnC,MAAM,gCAAgC;AACtC,MAAM,6BAA6B;AAEnC,MAAM,6BAA6B,IAAI,yBAAyB,GAAG,SAAS;AAC5E,MAAM,wBAAwB,GAAG,0BAA0B,KAAK,mBAAmB;AACnF,MAAM,wBAAwB,IAAI,sBAAsB,GAAG,MAAM;AACjE,MAAM,gCAAgC,GAAG,qBAAqB,KAAK,6BAA6B;AAChG,MAAM,4BAA4B,GAAG,qBAAqB,KAAK,uBAAuB;AAEtF,MAAM,wBAAwB;AAAA,IAC1B,0BAA0B;AAAA,eACf,MAAM,QAAQ,EAAE;AAAA;AAAA;AAAA,KAG1B,sBAAsB;AAAA;AAAA;AAAA;AAAA,IAIvB,qBAAqB;AAAA;AAAA;AAAA;AAKzB,MAAM,YAAY;AAAA,KACb,uBAAuB;AAAA,aACf,MAAM,MAAM,KAAK;AAAA,mBACX,MAAM,KAAK,OAAO,IAAI;AAAA,iBACxB,MAAM,KAAK,KAAK,EAAE;AAAA,eACpB,MAAM,QAAQ,EAAE;AAAA,wBACP,MAAM,MAAM,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA,KAKlC,uBAAuB;AAAA,KACvB,uBAAuB;AAAA,wBACJ,MAAM,MAAM,OAAO;AAAA;AAAA;AAAA,IAGvC,yBAAyB;AAAA,mBACV,MAAM,QAAQ,GAAG;AAAA;AAAA;AAIpC,MAAM,yBAAyB;AAAA;AAAA,OAExB,gCAAgC;AAAA;AAAA;AAAA;AAAA;AAAA,KAKlC,6BAA6B;AAAA;AAAA;AAAA;AAAA;AAAA,IAK9B,6BAA6B;AAAA,mBACd,MAAM,QAAQ,EAAE;AAAA;AAAA;AAAA,KAG9B,6BAA6B;AAAA;AAAA;AAAA;AAAA,KAI7B,6BAA6B;AAAA,mBACf,MAAM,QAAQ,EAAE;AAAA;AAAA;AAAA,KAG9B,6BAA6B;AAAA;AAAA;AAAA,YAGtB,MAAM,MAAM,KAAK;AAAA;AAAA;AAAA,KAGxB,0BAA0B;AAAA;AAAA;AAAA,qBAGV,MAAM,QAAQ,EAAE;AAAA;AAAA;AAAA,KAGhC,0BAA0B;AAAA;AAAA;AAAA,WAGpB,MAAM,QAAQ,EAAE;AAAA;AAAA;AAI3B,MAAM,mBAAmB;AAAA,KACpB,0BAA0B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAS1B,0BAA0B;AAAA,8BACD,MAAM,MAAM,KAAK,KAAK;AAAA,qBAC/B,MAAM,QAAQ,GAAG;AAAA,oBAClB,MAAM,QAAQ,EAAE;AAAA;AAAA;AAAA,KAG/B,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAMnB,mBAAmB;AAAA;AAAA;AAAA;AAAA,IAIpB,SAAS;AAAA,EACT,UAAU;AAAA,IACR,CAAC,IAAI,mBAAmB,EAAE,GAAG,WAAW,KAAK;AAAA,EAAA;AAEjD,CAAC,CAAC;AAAA;AAAA,IAEA,SAAS;AAAA,EACT,UAAU;AAAA,IACR,CAAC,IAAI,mBAAmB,IAAI,GAAG,WAAW,KAAK;AAAA,EAAA;AAEnD,CAAC,CAAC;AAAA;AAAA,KAEC,mBAAmB;AAAA,KACnB,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA,IAKpB,SAAS;AAAA,EACT,UAAU;AAAA,IACR,CAAC,IAAI,mBAAmB,gBAAgB,GAAG,WAAW,KAAK;AAAA,EAAA;AAE/D,CAAC,CAAC;AAAA;AAAA,IAEA,SAAS;AAAA,EACT,UAAU;AAAA,IACR,CAAC,IAAI,mBAAmB,kBAAkB,GAAG,WAAW,KAAK;AAAA,EAAA;AAEjE,CAAC,CAAC;AAAA;AAAA,KAEC,mBAAmB;AAAA,KACnB,mBAAmB;AAAA;AAAA;AAAA;AAAA,KAInB,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAMD,MAAM,MAAM,YAAY,OAAO,GAAG;AAAA,OAClD,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAM1B,MAAM,gBAAgB;AAAA,KACjB,sBAAsB;AAAA;AAAA;AAAA;AAAA,WAIhB,MAAM,QAAQ,EAAE;AAAA;AAAA;AAAA;AAK3B,MAAM,2BAA2B;AAAA,KAC5B,yBAAyB;AAAA,wBACN,MAAM,MAAM,KAAK;AAAA;AAAA,eAE1B,MAAM,QAAQ,EAAE;AAAA;AAAA,0BAEL,cAAc;AAAA;AAAA;AAAA,IAGpC,aAAa;AAAA,IACb,gBAAgB;AAAA,IAChB,sBAAsB;AAAA,IACtB,SAAS;AAAA,IACT,qBAAqB;AAAA,IACrB,eAAe,MAAM;AAAA,IACrB,WAAW,MAAM;AAAA;AAGrB,MAAM,mBAAmB,CAAC,EAAE,gBAAgC;AAC1D,MAAI,CAAC,UAAW,QAAO;AAEvB,QAAM,aAAa,SAAS,cAAc,GAAG;AAE7C,aAAW,OAAO;AAClB,aAAW,YAAY;AACvB,aAAW,YAAYA;AACvB,aAAW,UAAU,IAAI,0BAA0B;AAEnD,SAAO;AACT;AAEA,MAAM,gBAAgB,CAAC,EAAE,QAAQ,cAA2B;AAC1D,MAAI,CAAC,UAAU,CAAC,QAAS,QAAO;AAEhC,QAAM,MAAM,SAAS,cAAc,GAAG;AAEtC,MAAI,YAAY;AAChB,MAAI,cAAc,MAAM,GAAG;AACzB,QAAI,aAAa,UAAU,QAAQ;AAAA,EACrC;AACA,MAAI,aAAa,QAAQ,MAAM;AAC/B,MAAI,UAAU,IAAI,uBAAuB;AAEzC,SAAO;AACT;AAEA,MAAM,yBAAyB,CAAC;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAkB;AAChB,MAAI,CAAC,SAAU;AAEf,QAAM,qBAAqB,SAAS,cAAc,KAAK;AACvD,QAAM,sBAAsB,SAAS,cAAc,KAAK;AACxD,QAAM,kBAAkB,SAAS,cAAc,KAAK;AACpD,QAAM,aAAa,iBAAiB;AAAA,IAClC;AAAA,EAAA,CACD;AACD,QAAM,UAAU,cAAc,EAAE,SAAS,QAAQ;AAEjD,MAAI,YAAY;AACd,wBAAoB,UAAU,IAAI,0BAA0B;AAC5D,wBAAoB,YAAY,UAAU;AAC1C,uBAAmB,YAAY,mBAAmB;AAAA,EACpD;AAEA,kBAAgB,UAAU,IAAI,6BAA6B;AAE3D,WAAS,QAAQ,CAAC,SAAS;AACzB,oBAAgB,YAAY,IAAI;AAAA,EAClC,CAAC;AACD,MAAI,WAAY,iBAAgB,YAAY,UAAU;AACtD,MAAI,QAAS,iBAAgB,YAAY,OAAO;AAEhD,qBAAmB,UAAU,IAAI,gCAAgC;AACjE,qBAAmB,YAAY,eAAe;AAE9C,SAAO;AACT;AAEA,MAAM,mBAAmB,CAAC,EAAE,MAAM,gBAAqC;AACrE,QAAM,YAAY,SAAS,cAAc,KAAK;AAE9C,MAAI,WAAW;AACb,UAAM,aAAa,WAAW,cAAc,EAAE,WAAW;AACzD,eAAW,UAAU,IAAI,0BAA0B;AACnD,cAAU,YAAY,UAAU;AAAA,EAClC;AAEA,MAAI,MAAM;AACR,UAAM,eAAe,MAAM,KAAK,KAAK,QAAQ,EAAE,OAAO,CAAC,KAAK,UAAU;AACpE,UAAI,MAAM,aAAa,MAAO,QAAO;AAErC,UAAI,MAAM,aAAa;AACrB,eAAO,MAAM,MAAM,YAAY;AAAA,MACjC;AAEA,aAAO;AAAA,IACT,GAAG,CAAC;AACJ,SAAK,UAAU,IAAI,mBAAmB;AAEtC,QAAI,eAAe,IAAI;AACrB,WAAK,aAAa,QAAQ,OAAO;AAAA,IACnC;AAEA,cAAU,YAAY,IAAI;AAAA,EAC5B;AACA,YAAU,UAAU,IAAI,0BAA0B;AAClD,SAAO;AACT;AAEA,MAAM,yBAAyB,CAAC,UAAkC;AAChE,QAAM,EAAE,QAAQ,QAAA,IAAY;AAC5B,QAAM,cAAc,SAAS,cAAc,KAAK;AAChD,QAAM,YAAY,SAAS,cAAc,KAAK;AAC9C,QAAM,UAAU,SAAS,cAAc,KAAK;AAC5C,QAAM,aAAa,iBAAiB,KAAK;AACzC,QAAM,mBAAmB,uBAAuB,KAAK;AACrD,QAAM,cAAc,CAAC,EAAE,eAAsC;AAC3D,UAAM,UAAU,UAAU;AAAA,MACxB,IAAI,0BAA0B;AAAA,IAAA;AAGhC,QAAI,YAAY,gBAAiB;AAEjC,QAAI,UAAU;AACZ,wBAAkB;AAClB,gBAAU,aAAa,kBAAkB,MAAM;AAE/C,UAAI,SAAS;AACX,gBAAQ,MAAM,UAAU;AAAA,MAC1B;AAAA,IACF;AACA,QAAI,CAAC,UAAU;AACb,wBAAkB;AAClB,gBAAU,gBAAgB,gBAAgB;AAE1C,UAAI,SAAS;AACX,gBAAQ,MAAM,UAAU;AAAA,MAC1B;AAAA,IACF;AAAA,EACF;AACA,MAAI,kBAAkB;AAEtB,UAAQ,UAAU,IAAI,sBAAsB;AAC5C,UAAQ,YAAY,UAAU;AAE9B,MAAI,iBAAkB,SAAQ,YAAY,gBAAgB;AAC1D,MAAI,UAAU,QAAS,SAAQ,aAAa,eAAe,MAAM;AAEjE,YAAU,YAAY,OAAO;AAC7B,YAAU,UAAU,IAAI,yBAAyB;AAEjD,cAAY,UAAU,IAAI,0BAA0B;AACpD,cAAY,YAAY,SAAS;AAEjC,SAAO;AAAA,IACL,SAAS;AAAA,IACT,QAAQ;AAAA,MACN,QAAQ;AAAA,IAAA;AAAA,EACV;AAEJ;AAEA,MAAA,SAAe;AAAA,EACb,eAAe;AAAA,EACf,QAAQ;AACV;"}
|
|
@@ -5,26 +5,30 @@ const network = require("@universityofmaryland/web-utilities-library/network");
|
|
|
5
5
|
const styles = require("@universityofmaryland/web-utilities-library/styles");
|
|
6
6
|
const controls = require("@universityofmaryland/web-icons-library/controls");
|
|
7
7
|
const text = require("../../../atomic/actions/text.js");
|
|
8
|
-
require("@universityofmaryland/web-
|
|
8
|
+
require("@universityofmaryland/web-builder-library");
|
|
9
|
+
require("@universityofmaryland/web-token-library");
|
|
9
10
|
require("@universityofmaryland/web-icons-library/files");
|
|
10
11
|
require("@universityofmaryland/web-icons-library/arrows");
|
|
11
|
-
require("../../../model/modifiers/index.js");
|
|
12
|
-
require("../../../model/elements/headline.js");
|
|
13
12
|
require("../../../atomic/animations/actions/indicator.js");
|
|
14
13
|
require("../../../atomic/animations/brand/chevron-scroll.js");
|
|
15
14
|
require("../../../atomic/animations/brand/card-stack.js");
|
|
16
15
|
require("@universityofmaryland/web-utilities-library/performance");
|
|
17
16
|
require("@universityofmaryland/web-utilities-library/accessibility");
|
|
17
|
+
require("@universityofmaryland/web-styles-library/element");
|
|
18
18
|
require("@universityofmaryland/web-icons-library/location");
|
|
19
19
|
require("@universityofmaryland/web-icons-library/calendar");
|
|
20
|
+
require("@universityofmaryland/web-styles-library/typography");
|
|
21
|
+
require("@universityofmaryland/web-utilities-library/theme");
|
|
20
22
|
require("../../../atomic/layout/block/stacked.js");
|
|
21
23
|
require("../../../atomic/layout/overlay/modal.js");
|
|
22
24
|
require("../../../atomic/layout/person/columns.js");
|
|
25
|
+
require("@universityofmaryland/web-styles-library/layout");
|
|
23
26
|
require("@universityofmaryland/web-icons-library/communication");
|
|
24
27
|
require("@universityofmaryland/web-icons-library/social");
|
|
25
28
|
require("../../../atomic/text-lockup/date.js");
|
|
29
|
+
require("@universityofmaryland/web-styles-library/animation");
|
|
30
|
+
require("@universityofmaryland/web-utilities-library/dom");
|
|
26
31
|
require("../../../atomic/text-lockup/small.js");
|
|
27
|
-
require("@universityofmaryland/web-styles-library/typography");
|
|
28
32
|
const QUERY = `
|
|
29
33
|
query CampusAlertsQuery {
|
|
30
34
|
entries: entries(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alert.js","sources":["../../../../source/composite/navigation/utility/alert.ts"],"sourcesContent":["import {\n element,\n layout,\n token,\n typography,\n} from '@universityofmaryland/web-styles-library';\nimport { fetchGraphQL } from '@universityofmaryland/web-utilities-library/network';\nimport { jssToCSS } from '@universityofmaryland/web-utilities-library/styles';\nimport { close_large as iconCloseLarge } from '@universityofmaryland/web-icons-library/controls';\nimport { actions } from 'atomic';\n\ntype AlertData = {\n id: string;\n type: string;\n title: string;\n headline?: string;\n text: string;\n ctaUrl: string;\n ctaText?: string;\n hidden?: boolean;\n};\n\ntype AlertResponse = {\n data: {\n entries: AlertData[];\n };\n};\n\ntype AlertProps = {\n alertUrl?: string | null;\n};\n\nexport type TypeAlertProps = {\n alertUrl?: string | null;\n};\n\ntype ElementAttributes = Record<string, string>;\n\ntype CacheCheckResult = {\n shouldCheck: boolean;\n cachedData: AlertData | null;\n};\n\nconst QUERY = `\n query CampusAlertsQuery {\n entries: entries(\n limit: 1\n type: \"mainElementsCampusAlert\"\n ) {\n id: uid\n type: optionsType\n headline\n title\n text\n ctaUrl: cta\n ctaText\n }\n }\n`;\n\nconst ELEMENT_NAME = 'umd-element-nav-alert';\nexport const ALERT_CONSTANTS = {\n URLS: {\n DEFAULT: 'https://umd.edu/api/v2',\n },\n STORAGE_KEYS: {\n ALERT_TIME: 'umd-utility-alert-time',\n ALERT: 'umd-utility-alert',\n ALERT_ID: 'umd-utility-alert-id',\n },\n ELEMENTS: {\n ALERT_ID: 'umd-global-alert',\n DECLARATION: 'umd-element-nav-alert-declaration',\n CONTAINER: 'umd-element-nav-alert-container',\n LOCK: 'umd-element-nav-alert-lock',\n WRAPPER: 'umd-element-nav-alert-wrapper',\n TITLE: 'umd-element-nav-alert-title',\n TEXT: 'umd-element-nav-alert-text',\n CTA: 'umd-element-nav-alert-cta',\n CLOSE_BUTTON: 'umd-element-nav-alert-close',\n },\n ATTRIBUTES: {\n TYPE: 'type',\n },\n TYPES: {\n GENERAL: 'general',\n CLOSED: 'closed',\n OPEN: 'open',\n },\n ANIMATION: {\n SPEED: 800,\n },\n BREAKPOINTS: {\n MEDIUM: 768,\n LARGE: 1024,\n },\n CACHE: {\n DURATION: 60 * 1000, // One minute in milliseconds\n },\n} as const;\n\nconst { ATTRIBUTES, ANIMATION, BREAKPOINTS, ELEMENTS, TYPES } = ALERT_CONSTANTS;\nconst IS_TYPE_GENERAL = `[${ATTRIBUTES.TYPE}=${TYPES.GENERAL}]`;\nconst IS_TYPE_CLOSED = `[${ATTRIBUTES.TYPE}=${TYPES.CLOSED}]`;\n\nconst DECLARATION = `.${ELEMENTS.DECLARATION}`;\nconst CONTAINER = `.${ELEMENTS.CONTAINER}`;\nconst WRAPPER = `.${ELEMENTS.WRAPPER}`;\nconst LOCK = `.${ELEMENTS.LOCK}`;\nconst ALERT_TITLE = `.${ELEMENTS.TITLE}`;\nconst ALERT_TEXT = `.${ELEMENTS.TEXT}`;\nconst CLOSE_BUTTON = `.${ELEMENTS.CLOSE_BUTTON}`;\nconst CTA = `.${ELEMENTS.CTA}`;\n\nconst OVERWRITE_CONTAINER_TYPE_GENERAL = `${CONTAINER}${IS_TYPE_GENERAL}`;\nconst OVERWRITE_CONTAINER_TYPE_CLOSED = `${CONTAINER}${IS_TYPE_CLOSED}`;\n\n// prettier-ignore\nconst OverwriteTypeGeneral = `\n ${OVERWRITE_CONTAINER_TYPE_GENERAL} {\n background-color: ${token.color.black};\n }\n\n ${OVERWRITE_CONTAINER_TYPE_GENERAL} * {\n color: ${token.color.white};\n }\n\n ${OVERWRITE_CONTAINER_TYPE_GENERAL} a:hover,\n ${OVERWRITE_CONTAINER_TYPE_GENERAL} a:focus {\n color: ${token.color.white} !important;\n }\n\n ${OVERWRITE_CONTAINER_TYPE_GENERAL} ${ALERT_TITLE} {\n color: ${token.color.gold};\n }\n\n ${OVERWRITE_CONTAINER_TYPE_GENERAL} ${CLOSE_BUTTON} > svg {\n fill: ${token.color.white};\n }\n`\n\n// prettier-ignore\nconst OverwriteTypeClosed = `\n ${OVERWRITE_CONTAINER_TYPE_CLOSED} {\n background-color: ${token.color.gold};\n }\n\n ${OVERWRITE_CONTAINER_TYPE_CLOSED} * {\n color: ${token.color.black};\n }\n\n ${OVERWRITE_CONTAINER_TYPE_CLOSED} .${CLOSE_BUTTON} > svg {\n fill: ${token.color.black};\n }\n`\n\n// prettier-ignore\nconst CloseButtonStyles = `\n ${CLOSE_BUTTON} {\n position: absolute;\n top: 30px;\n right: 10px;\n }\n \n @container (max-width: ${BREAKPOINTS.MEDIUM - 1}px) {\n ${CLOSE_BUTTON} {\n top: 25px;\n right: 5px;\n }\n }\n\n ${CLOSE_BUTTON} > svg {\n fill: ${token.color.black};\n width: 24px;\n height: 24px;\n }\n`\n\n// prettier-ignore\nconst TextStyles = `\n ${jssToCSS({\n styleObj: {\n [`${ALERT_TITLE}`]: typography.sans.large,\n },\n })}\n\n ${ALERT_TITLE} {\n text-transform: uppercase;\n }\n\n ${ALERT_TITLE} + * {\n margin-top: ${token.spacing.sm};\n }\n\n ${jssToCSS({\n styleObj: {\n [`${ALERT_TEXT}`]: element.text.rich.advanced,\n },\n })}\n\n ${ALERT_TEXT},\n ${ALERT_TEXT} * {\n font-size: 16px;;\n }\n\n ${ALERT_TEXT} + * {\n margin-top: ${token.spacing.lg};\n }\n\n ${CTA} {\n text-decoration: none;\n }\n`\n\n// prettier-ignore\nconst WrapperStyles = `\n ${WRAPPER} {\n position: relative;\n padding-top: ${token.spacing.md};\n padding-bottom: ${token.spacing.md};\n padding-right: ${token.spacing.lg};\n }\n\n @container (min-width: ${BREAKPOINTS.MEDIUM}px) {\n ${WRAPPER} {\n padding-top: ${token.spacing.lg};\n padding-bottom: ${token.spacing.lg};\n }\n }\n`\n\n// prettier-ignore\nconst LockStyles = `\n ${jssToCSS({\n styleObj: {\n [`${LOCK}`]: layout.space.horizontal.full,\n },\n })}\n`\n\n// prettier-ignore\nconst ContainerStyles = `\n ${CONTAINER} {\n container: ${ELEMENT_NAME} / inline-size;\n background-color: ${token.color.gray.lighter};\n border-left: 4px solid ${token.color.red};\n transition: height ${ANIMATION.SPEED}ms;\n overflow: hidden;\n position: relative;\n }\n\n @container (min-width: ${BREAKPOINTS.LARGE}px) {\n ${CONTAINER} {\n border-left: 8px solid ${token.color.red};\n }\n }\n`\n\n// prettier-ignore\nexport const STYLES_NAV_ALERT = `\n ${DECLARATION} {\n container: ${ELEMENT_NAME} / inline-size;\n }\n\n ${ContainerStyles}\n ${LockStyles}\n ${WrapperStyles}\n ${TextStyles}\n ${CloseButtonStyles}\n ${OverwriteTypeGeneral}\n ${OverwriteTypeClosed}\n`;\n\n// storage.ts\nconst logStorageError = (operation: string, error: Error): void => {\n console.error(`UMD Component - Alert Storage: ${operation} failed:`, error);\n};\n\nconst getStoredValue = <T>(key: string): T | null => {\n try {\n const value = window.localStorage.getItem(key);\n return value ? JSON.parse(value) : null;\n } catch (error) {\n logStorageError(`Reading ${key}`, error as Error);\n return null;\n }\n};\n\nconst setStoredValue = (key: string, value: unknown): void => {\n try {\n window.localStorage.setItem(key, JSON.stringify(value));\n } catch (error) {\n logStorageError('Saving value', error as Error);\n }\n};\n\nconst clearAlertStorage = (): void => {\n const { STORAGE_KEYS } = ALERT_CONSTANTS;\n window.localStorage.removeItem(STORAGE_KEYS.ALERT_TIME);\n window.localStorage.removeItem(STORAGE_KEYS.ALERT);\n};\n\nconst checkAlertCache = (): CacheCheckResult => {\n const currentTime = new Date().getTime();\n const { STORAGE_KEYS, CACHE } = ALERT_CONSTANTS;\n\n try {\n const alertTimeStr = getStoredValue<string>(STORAGE_KEYS.ALERT_TIME);\n const cachedResponse = getStoredValue<AlertData>(STORAGE_KEYS.ALERT);\n\n if (!alertTimeStr) {\n setStoredValue(STORAGE_KEYS.ALERT_TIME, currentTime.toString());\n return { shouldCheck: true, cachedData: null };\n }\n\n const alertTime = parseInt(alertTimeStr, 10);\n const timeElapsed = currentTime - alertTime;\n\n if (timeElapsed < CACHE.DURATION && cachedResponse) {\n return { shouldCheck: false, cachedData: cachedResponse };\n }\n\n setStoredValue(STORAGE_KEYS.ALERT_TIME, currentTime.toString());\n return { shouldCheck: true, cachedData: null };\n } catch (error) {\n console.error('Cache check failed:', error);\n return { shouldCheck: true, cachedData: null };\n }\n};\n\nconst updateAlertCache = (alert: AlertData): void => {\n setStoredValue(ALERT_CONSTANTS.STORAGE_KEYS.ALERT, alert);\n};\n\nconst createElement = (\n tag: string,\n className?: string,\n attributes?: ElementAttributes,\n): HTMLElement => {\n const element = document.createElement(tag);\n if (className) element.classList.add(className);\n if (attributes) {\n Object.entries(attributes).forEach(([key, value]) => {\n element.setAttribute(key, value);\n });\n }\n return element;\n};\n\nconst createCloseButton = (container: HTMLElement): HTMLButtonElement => {\n const { ELEMENTS, ANIMATION } = ALERT_CONSTANTS;\n const button = createElement('button', ELEMENTS.CLOSE_BUTTON, {\n 'aria-label': 'remove alert',\n }) as HTMLButtonElement;\n\n button.innerHTML = iconCloseLarge;\n button.addEventListener('click', () => {\n const cachedAlert = getStoredValue<AlertData>(\n ALERT_CONSTANTS.STORAGE_KEYS.ALERT,\n );\n if (cachedAlert) {\n // Animate close\n container.style.height = `${container.offsetHeight}px`;\n container.style.transition = `height ${ANIMATION.SPEED}ms`;\n\n updateAlertCache({ ...cachedAlert, hidden: true });\n\n setTimeout(() => {\n container.style.height = '0px';\n }, 100);\n\n setTimeout(() => {\n container.remove();\n }, ANIMATION.SPEED + 100);\n }\n });\n\n return button;\n};\n\nconst createCTAElement = ({\n ctaText,\n ctaUrl,\n}: {\n ctaText: string;\n ctaUrl: string;\n}) => {\n const link = createElement('a', ALERT_CONSTANTS.ELEMENTS.CTA, {\n href: ctaUrl,\n rel: 'noopener noreferrer',\n target: '_blank',\n });\n link.innerHTML = ctaText;\n\n return actions.options({\n element: link,\n isTypeSecondary: true,\n });\n};\n\nconst createAlertContent = (\n alert: AlertData,\n container: HTMLElement,\n): HTMLElement => {\n const { ELEMENTS } = ALERT_CONSTANTS;\n const wrapper = createElement('div', ELEMENTS.WRAPPER);\n const lock = createElement('div', ELEMENTS.LOCK);\n const headlineText = alert.headline || alert.title;\n\n // Create elements\n const title = createElement('p', ELEMENTS.TITLE);\n title.innerHTML = headlineText;\n\n const closeButton = createCloseButton(container);\n\n wrapper.append(closeButton, title);\n\n if (alert.text) {\n const message = createElement('div', ELEMENTS.TEXT);\n message.innerHTML = alert.text;\n wrapper.append(closeButton, title, message);\n }\n\n // Add CTA if exists\n if (alert.ctaUrl) {\n const cta = createCTAElement({\n ctaText: alert.ctaText || headlineText,\n ctaUrl: alert.ctaUrl,\n });\n\n wrapper.appendChild(cta.element);\n }\n\n lock.appendChild(wrapper);\n return lock;\n};\n\nconst createAlertComponent = (alert: AlertData): HTMLElement => {\n const { ELEMENTS, ATTRIBUTES } = ALERT_CONSTANTS;\n\n const declaration = createElement('div', ELEMENTS.DECLARATION);\n const container = createElement('div', ELEMENTS.CONTAINER, {\n id: ELEMENTS.ALERT_ID,\n [ATTRIBUTES.TYPE]: alert.type,\n });\n\n const content = createAlertContent(alert, container);\n container.appendChild(content);\n declaration.appendChild(container);\n\n return declaration;\n};\n\nconst fetchAlerts = async ({\n alertUrl,\n}: AlertProps): Promise<AlertResponse | null> => {\n try {\n const url = alertUrl || ALERT_CONSTANTS.URLS.DEFAULT;\n\n return await fetchGraphQL({\n query: QUERY,\n url,\n token: 'VIDnMeNYHTrLvWPtPpK5MNpjuv5WmmhU',\n });\n } catch (error) {\n console.error('Failed to fetch alerts:', error);\n return null;\n }\n};\n\nexport const createNavAlert = async ({ alertUrl }: AlertProps) => {\n const alertCache = checkAlertCache();\n\n // Show cached alert if valid\n if (\n !alertCache.shouldCheck &&\n alertCache.cachedData &&\n !alertCache.cachedData.hidden\n ) {\n return { element: createAlertComponent(alertCache.cachedData) };\n }\n\n // Fetch new alerts\n const response = await fetchAlerts({ alertUrl });\n if (!response?.data?.entries[0]) {\n clearAlertStorage();\n return null;\n }\n\n const alert = response.data?.entries[0];\n const cachedAlert = getStoredValue<AlertData>(\n ALERT_CONSTANTS.STORAGE_KEYS.ALERT,\n );\n\n // Handle alert updates\n if (cachedAlert?.id === alert.id) {\n if (!cachedAlert.hidden && alertCache.shouldCheck) {\n return { element: createAlertComponent(cachedAlert) };\n }\n } else {\n clearAlertStorage();\n updateAlertCache(alert);\n return { element: createAlertComponent(alert) };\n }\n\n return null;\n};\n"],"names":["token","jssToCSS","typography","element","layout","ELEMENTS","ANIMATION","iconCloseLarge","actions.options","ATTRIBUTES","fetchGraphQL"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CA,MAAM,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiBd,MAAM,eAAe;AACd,MAAM,kBAAkB;AAAA,EAC7B,MAAM;AAAA,IACJ,SAAS;AAAA,EAAA;AAAA,EAEX,cAAc;AAAA,IACZ,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,UAAU;AAAA,EAAA;AAAA,EAEZ,UAAU;AAAA,IACR,UAAU;AAAA,IACV,aAAa;AAAA,IACb,WAAW;AAAA,IACX,MAAM;AAAA,IACN,SAAS;AAAA,IACT,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,cAAc;AAAA,EAAA;AAAA,EAEhB,YAAY;AAAA,IACV,MAAM;AAAA,EAAA;AAAA,EAER,OAAO;AAAA,IACL,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,MAAM;AAAA,EAAA;AAAA,EAER,WAAW;AAAA,IACT,OAAO;AAAA,EAAA;AAAA,EAET,aAAa;AAAA,IACX,QAAQ;AAAA,IACR,OAAO;AAAA,EAAA;AAAA,EAET,OAAO;AAAA,IACL,UAAU,KAAK;AAAA;AAAA,EAAA;AAEnB;AAEA,MAAM,EAAE,YAAY,WAAW,aAAa,UAAU,UAAU;AAChE,MAAM,kBAAkB,IAAI,WAAW,IAAI,IAAI,MAAM,OAAO;AAC5D,MAAM,iBAAiB,IAAI,WAAW,IAAI,IAAI,MAAM,MAAM;AAE1D,MAAM,cAAc,IAAI,SAAS,WAAW;AAC5C,MAAM,YAAY,IAAI,SAAS,SAAS;AACxC,MAAM,UAAU,IAAI,SAAS,OAAO;AACpC,MAAM,OAAO,IAAI,SAAS,IAAI;AAC9B,MAAM,cAAc,IAAI,SAAS,KAAK;AACtC,MAAM,aAAa,IAAI,SAAS,IAAI;AACpC,MAAM,eAAe,IAAI,SAAS,YAAY;AAC9C,MAAM,MAAM,IAAI,SAAS,GAAG;AAE5B,MAAM,mCAAmC,GAAG,SAAS,GAAG,eAAe;AACvE,MAAM,kCAAkC,GAAG,SAAS,GAAG,cAAc;AAGrE,MAAM,uBAAuB;AAAA,IACzB,gCAAgC;AAAA,wBACZA,OAAAA,MAAM,MAAM,KAAK;AAAA;AAAA;AAAA,IAGrC,gCAAgC;AAAA,aACvBA,OAAAA,MAAM,MAAM,KAAK;AAAA;AAAA;AAAA,IAG1B,gCAAgC;AAAA,IAChC,gCAAgC;AAAA,aACvBA,OAAAA,MAAM,MAAM,KAAK;AAAA;AAAA;AAAA,IAG1B,gCAAgC,IAAI,WAAW;AAAA,aACtCA,OAAAA,MAAM,MAAM,IAAI;AAAA;AAAA;AAAA,KAGxB,gCAAgC,IAAI,YAAY;AAAA,YACzCA,OAAAA,MAAM,MAAM,KAAK;AAAA;AAAA;AAK7B,MAAM,sBAAsB;AAAA,IACxB,+BAA+B;AAAA,wBACXA,OAAAA,MAAM,MAAM,IAAI;AAAA;AAAA;AAAA,IAGpC,+BAA+B;AAAA,aACtBA,OAAAA,MAAM,MAAM,KAAK;AAAA;AAAA;AAAA,KAGzB,+BAA+B,KAAK,YAAY;AAAA,YACzCA,OAAAA,MAAM,MAAM,KAAK;AAAA;AAAA;AAK7B,MAAM,oBAAoB;AAAA,IACtB,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2BAMW,YAAY,SAAS,CAAC;AAAA,MAC3C,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMd,YAAY;AAAA,YACJA,OAAAA,MAAM,MAAM,KAAK;AAAA;AAAA;AAAA;AAAA;AAO7B,MAAM,aAAa;AAAA,IACfC,gBAAS;AAAA,EACT,UAAU;AAAA,IACR,CAAC,GAAG,WAAW,EAAE,GAAGC,OAAAA,WAAW,KAAK;AAAA,EAAA;AAExC,CAAC,CAAC;AAAA;AAAA,IAEA,WAAW;AAAA;AAAA;AAAA;AAAA,IAIX,WAAW;AAAA,kBACGF,OAAAA,MAAM,QAAQ,EAAE;AAAA;AAAA;AAAA,IAG9BC,gBAAS;AAAA,EACT,UAAU;AAAA,IACR,CAAC,GAAG,UAAU,EAAE,GAAGE,OAAAA,QAAQ,KAAK,KAAK;AAAA,EAAA;AAEzC,CAAC,CAAC;AAAA;AAAA,IAEA,UAAU;AAAA,IACV,UAAU;AAAA;AAAA;AAAA;AAAA,IAIV,UAAU;AAAA,kBACIH,OAAAA,MAAM,QAAQ,EAAE;AAAA;AAAA;AAAA,IAG9B,GAAG;AAAA;AAAA;AAAA;AAMP,MAAM,gBAAgB;AAAA,IAClB,OAAO;AAAA;AAAA,mBAEQA,OAAAA,MAAM,QAAQ,EAAE;AAAA,sBACbA,OAAAA,MAAM,QAAQ,EAAE;AAAA,qBACjBA,OAAAA,MAAM,QAAQ,EAAE;AAAA;AAAA;AAAA,2BAGV,YAAY,MAAM;AAAA,MACvC,OAAO;AAAA,qBACQA,OAAAA,MAAM,QAAQ,EAAE;AAAA,wBACbA,OAAAA,MAAM,QAAQ,EAAE;AAAA;AAAA;AAAA;AAMxC,MAAM,aAAa;AAAA,IACfC,gBAAS;AAAA,EACT,UAAU;AAAA,IACR,CAAC,GAAG,IAAI,EAAE,GAAGG,OAAAA,OAAO,MAAM,WAAW;AAAA,EAAA;AAEzC,CAAC,CAAC;AAAA;AAIJ,MAAM,kBAAkB;AAAA,IACpB,SAAS;AAAA,iBACI,YAAY;AAAA,wBACLJ,aAAM,MAAM,KAAK,OAAO;AAAA,6BACnBA,OAAAA,MAAM,MAAM,GAAG;AAAA,yBACnB,UAAU,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA,2BAKb,YAAY,KAAK;AAAA,MACtC,SAAS;AAAA,+BACgBA,OAAAA,MAAM,MAAM,GAAG;AAAA;AAAA;AAAA;AAMvC,MAAM,mBAAmB;AAAA,IAC5B,WAAW;AAAA,iBACE,YAAY;AAAA;AAAA;AAAA,IAGzB,eAAe;AAAA,IACf,UAAU;AAAA,IACV,aAAa;AAAA,IACb,UAAU;AAAA,IACV,iBAAiB;AAAA,IACjB,oBAAoB;AAAA,IACpB,mBAAmB;AAAA;AAIvB,MAAM,kBAAkB,CAAC,WAAmB,UAAuB;AACjE,UAAQ,MAAM,kCAAkC,SAAS,YAAY,KAAK;AAC5E;AAEA,MAAM,iBAAiB,CAAI,QAA0B;AACnD,MAAI;AACF,UAAM,QAAQ,OAAO,aAAa,QAAQ,GAAG;AAC7C,WAAO,QAAQ,KAAK,MAAM,KAAK,IAAI;AAAA,EACrC,SAAS,OAAO;AACd,oBAAgB,WAAW,GAAG,IAAI,KAAc;AAChD,WAAO;AAAA,EACT;AACF;AAEA,MAAM,iBAAiB,CAAC,KAAa,UAAyB;AAC5D,MAAI;AACF,WAAO,aAAa,QAAQ,KAAK,KAAK,UAAU,KAAK,CAAC;AAAA,EACxD,SAAS,OAAO;AACd,oBAAgB,gBAAgB,KAAc;AAAA,EAChD;AACF;AAEA,MAAM,oBAAoB,MAAY;AACpC,QAAM,EAAE,iBAAiB;AACzB,SAAO,aAAa,WAAW,aAAa,UAAU;AACtD,SAAO,aAAa,WAAW,aAAa,KAAK;AACnD;AAEA,MAAM,kBAAkB,MAAwB;AAC9C,QAAM,eAAc,oBAAI,KAAA,GAAO,QAAA;AAC/B,QAAM,EAAE,cAAc,MAAA,IAAU;AAEhC,MAAI;AACF,UAAM,eAAe,eAAuB,aAAa,UAAU;AACnE,UAAM,iBAAiB,eAA0B,aAAa,KAAK;AAEnE,QAAI,CAAC,cAAc;AACjB,qBAAe,aAAa,YAAY,YAAY,SAAA,CAAU;AAC9D,aAAO,EAAE,aAAa,MAAM,YAAY,KAAA;AAAA,IAC1C;AAEA,UAAM,YAAY,SAAS,cAAc,EAAE;AAC3C,UAAM,cAAc,cAAc;AAElC,QAAI,cAAc,MAAM,YAAY,gBAAgB;AAClD,aAAO,EAAE,aAAa,OAAO,YAAY,eAAA;AAAA,IAC3C;AAEA,mBAAe,aAAa,YAAY,YAAY,SAAA,CAAU;AAC9D,WAAO,EAAE,aAAa,MAAM,YAAY,KAAA;AAAA,EAC1C,SAAS,OAAO;AACd,YAAQ,MAAM,uBAAuB,KAAK;AAC1C,WAAO,EAAE,aAAa,MAAM,YAAY,KAAA;AAAA,EAC1C;AACF;AAEA,MAAM,mBAAmB,CAAC,UAA2B;AACnD,iBAAe,gBAAgB,aAAa,OAAO,KAAK;AAC1D;AAEA,MAAM,gBAAgB,CACpB,KACA,WACA,eACgB;AAChB,QAAMG,WAAU,SAAS,cAAc,GAAG;AAC1C,MAAI,UAAWA,UAAQ,UAAU,IAAI,SAAS;AAC9C,MAAI,YAAY;AACd,WAAO,QAAQ,UAAU,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AACnDA,eAAQ,aAAa,KAAK,KAAK;AAAA,IACjC,CAAC;AAAA,EACH;AACA,SAAOA;AACT;AAEA,MAAM,oBAAoB,CAAC,cAA8C;AACvE,QAAM,EAAE,UAAAE,WAAU,WAAAC,eAAc;AAChC,QAAM,SAAS,cAAc,UAAUD,UAAS,cAAc;AAAA,IAC5D,cAAc;AAAA,EAAA,CACf;AAED,SAAO,YAAYE,SAAAA;AACnB,SAAO,iBAAiB,SAAS,MAAM;AACrC,UAAM,cAAc;AAAA,MAClB,gBAAgB,aAAa;AAAA,IAAA;AAE/B,QAAI,aAAa;AAEf,gBAAU,MAAM,SAAS,GAAG,UAAU,YAAY;AAClD,gBAAU,MAAM,aAAa,UAAUD,WAAU,KAAK;AAEtD,uBAAiB,EAAE,GAAG,aAAa,QAAQ,MAAM;AAEjD,iBAAW,MAAM;AACf,kBAAU,MAAM,SAAS;AAAA,MAC3B,GAAG,GAAG;AAEN,iBAAW,MAAM;AACf,kBAAU,OAAA;AAAA,MACZ,GAAGA,WAAU,QAAQ,GAAG;AAAA,IAC1B;AAAA,EACF,CAAC;AAED,SAAO;AACT;AAEA,MAAM,mBAAmB,CAAC;AAAA,EACxB;AAAA,EACA;AACF,MAGM;AACJ,QAAM,OAAO,cAAc,KAAK,gBAAgB,SAAS,KAAK;AAAA,IAC5D,MAAM;AAAA,IACN,KAAK;AAAA,IACL,QAAQ;AAAA,EAAA,CACT;AACD,OAAK,YAAY;AAEjB,SAAOE,aAAgB;AAAA,IACrB,SAAS;AAAA,IACT,iBAAiB;AAAA,EAAA,CAClB;AACH;AAEA,MAAM,qBAAqB,CACzB,OACA,cACgB;AAChB,QAAM,EAAE,UAAAH,UAAAA,IAAa;AACrB,QAAM,UAAU,cAAc,OAAOA,UAAS,OAAO;AACrD,QAAM,OAAO,cAAc,OAAOA,UAAS,IAAI;AAC/C,QAAM,eAAe,MAAM,YAAY,MAAM;AAG7C,QAAM,QAAQ,cAAc,KAAKA,UAAS,KAAK;AAC/C,QAAM,YAAY;AAElB,QAAM,cAAc,kBAAkB,SAAS;AAE/C,UAAQ,OAAO,aAAa,KAAK;AAEjC,MAAI,MAAM,MAAM;AACd,UAAM,UAAU,cAAc,OAAOA,UAAS,IAAI;AAClD,YAAQ,YAAY,MAAM;AAC1B,YAAQ,OAAO,aAAa,OAAO,OAAO;AAAA,EAC5C;AAGA,MAAI,MAAM,QAAQ;AAChB,UAAM,MAAM,iBAAiB;AAAA,MAC3B,SAAS,MAAM,WAAW;AAAA,MAC1B,QAAQ,MAAM;AAAA,IAAA,CACf;AAED,YAAQ,YAAY,IAAI,OAAO;AAAA,EACjC;AAEA,OAAK,YAAY,OAAO;AACxB,SAAO;AACT;AAEA,MAAM,uBAAuB,CAAC,UAAkC;AAC9D,QAAM,EAAE,UAAAA,WAAU,YAAAI,gBAAe;AAEjC,QAAM,cAAc,cAAc,OAAOJ,UAAS,WAAW;AAC7D,QAAM,YAAY,cAAc,OAAOA,UAAS,WAAW;AAAA,IACzD,IAAIA,UAAS;AAAA,IACb,CAACI,YAAW,IAAI,GAAG,MAAM;AAAA,EAAA,CAC1B;AAED,QAAM,UAAU,mBAAmB,OAAO,SAAS;AACnD,YAAU,YAAY,OAAO;AAC7B,cAAY,YAAY,SAAS;AAEjC,SAAO;AACT;AAEA,MAAM,cAAc,OAAO;AAAA,EACzB;AACF,MAAiD;AAC/C,MAAI;AACF,UAAM,MAAM,YAAY,gBAAgB,KAAK;AAE7C,WAAO,MAAMC,QAAAA,aAAa;AAAA,MACxB,OAAO;AAAA,MACP;AAAA,MACA,OAAO;AAAA,IAAA,CACR;AAAA,EACH,SAAS,OAAO;AACd,YAAQ,MAAM,2BAA2B,KAAK;AAC9C,WAAO;AAAA,EACT;AACF;AAEO,MAAM,iBAAiB,OAAO,EAAE,eAA2B;AAChE,QAAM,aAAa,gBAAA;AAGnB,MACE,CAAC,WAAW,eACZ,WAAW,cACX,CAAC,WAAW,WAAW,QACvB;AACA,WAAO,EAAE,SAAS,qBAAqB,WAAW,UAAU,EAAA;AAAA,EAC9D;AAGA,QAAM,WAAW,MAAM,YAAY,EAAE,UAAU;AAC/C,MAAI,CAAC,UAAU,MAAM,QAAQ,CAAC,GAAG;AAC/B,sBAAA;AACA,WAAO;AAAA,EACT;AAEA,QAAM,QAAQ,SAAS,MAAM,QAAQ,CAAC;AACtC,QAAM,cAAc;AAAA,IAClB,gBAAgB,aAAa;AAAA,EAAA;AAI/B,MAAI,aAAa,OAAO,MAAM,IAAI;AAChC,QAAI,CAAC,YAAY,UAAU,WAAW,aAAa;AACjD,aAAO,EAAE,SAAS,qBAAqB,WAAW,EAAA;AAAA,IACpD;AAAA,EACF,OAAO;AACL,sBAAA;AACA,qBAAiB,KAAK;AACtB,WAAO,EAAE,SAAS,qBAAqB,KAAK,EAAA;AAAA,EAC9C;AAEA,SAAO;AACT;;;;"}
|
|
1
|
+
{"version":3,"file":"alert.js","sources":["../../../../source/composite/navigation/utility/alert.ts"],"sourcesContent":["import {\n element,\n layout,\n token,\n typography,\n} from '@universityofmaryland/web-styles-library';\nimport { fetchGraphQL } from '@universityofmaryland/web-utilities-library/network';\nimport { jssToCSS } from '@universityofmaryland/web-utilities-library/styles';\nimport { close_large as iconCloseLarge } from '@universityofmaryland/web-icons-library/controls';\nimport { actions } from 'atomic';\n\ntype AlertData = {\n id: string;\n type: string;\n title: string;\n headline?: string;\n text: string;\n ctaUrl: string;\n ctaText?: string;\n hidden?: boolean;\n};\n\ntype AlertResponse = {\n data: {\n entries: AlertData[];\n };\n};\n\ntype AlertProps = {\n alertUrl?: string | null;\n};\n\nexport type TypeAlertProps = {\n alertUrl?: string | null;\n};\n\ntype ElementAttributes = Record<string, string>;\n\ntype CacheCheckResult = {\n shouldCheck: boolean;\n cachedData: AlertData | null;\n};\n\nconst QUERY = `\n query CampusAlertsQuery {\n entries: entries(\n limit: 1\n type: \"mainElementsCampusAlert\"\n ) {\n id: uid\n type: optionsType\n headline\n title\n text\n ctaUrl: cta\n ctaText\n }\n }\n`;\n\nconst ELEMENT_NAME = 'umd-element-nav-alert';\nexport const ALERT_CONSTANTS = {\n URLS: {\n DEFAULT: 'https://umd.edu/api/v2',\n },\n STORAGE_KEYS: {\n ALERT_TIME: 'umd-utility-alert-time',\n ALERT: 'umd-utility-alert',\n ALERT_ID: 'umd-utility-alert-id',\n },\n ELEMENTS: {\n ALERT_ID: 'umd-global-alert',\n DECLARATION: 'umd-element-nav-alert-declaration',\n CONTAINER: 'umd-element-nav-alert-container',\n LOCK: 'umd-element-nav-alert-lock',\n WRAPPER: 'umd-element-nav-alert-wrapper',\n TITLE: 'umd-element-nav-alert-title',\n TEXT: 'umd-element-nav-alert-text',\n CTA: 'umd-element-nav-alert-cta',\n CLOSE_BUTTON: 'umd-element-nav-alert-close',\n },\n ATTRIBUTES: {\n TYPE: 'type',\n },\n TYPES: {\n GENERAL: 'general',\n CLOSED: 'closed',\n OPEN: 'open',\n },\n ANIMATION: {\n SPEED: 800,\n },\n BREAKPOINTS: {\n MEDIUM: 768,\n LARGE: 1024,\n },\n CACHE: {\n DURATION: 60 * 1000, // One minute in milliseconds\n },\n} as const;\n\nconst { ATTRIBUTES, ANIMATION, BREAKPOINTS, ELEMENTS, TYPES } = ALERT_CONSTANTS;\nconst IS_TYPE_GENERAL = `[${ATTRIBUTES.TYPE}=${TYPES.GENERAL}]`;\nconst IS_TYPE_CLOSED = `[${ATTRIBUTES.TYPE}=${TYPES.CLOSED}]`;\n\nconst DECLARATION = `.${ELEMENTS.DECLARATION}`;\nconst CONTAINER = `.${ELEMENTS.CONTAINER}`;\nconst WRAPPER = `.${ELEMENTS.WRAPPER}`;\nconst LOCK = `.${ELEMENTS.LOCK}`;\nconst ALERT_TITLE = `.${ELEMENTS.TITLE}`;\nconst ALERT_TEXT = `.${ELEMENTS.TEXT}`;\nconst CLOSE_BUTTON = `.${ELEMENTS.CLOSE_BUTTON}`;\nconst CTA = `.${ELEMENTS.CTA}`;\n\nconst OVERWRITE_CONTAINER_TYPE_GENERAL = `${CONTAINER}${IS_TYPE_GENERAL}`;\nconst OVERWRITE_CONTAINER_TYPE_CLOSED = `${CONTAINER}${IS_TYPE_CLOSED}`;\n\n// prettier-ignore\nconst OverwriteTypeGeneral = `\n ${OVERWRITE_CONTAINER_TYPE_GENERAL} {\n background-color: ${token.color.black};\n }\n\n ${OVERWRITE_CONTAINER_TYPE_GENERAL} * {\n color: ${token.color.white};\n }\n\n ${OVERWRITE_CONTAINER_TYPE_GENERAL} a:hover,\n ${OVERWRITE_CONTAINER_TYPE_GENERAL} a:focus {\n color: ${token.color.white} !important;\n }\n\n ${OVERWRITE_CONTAINER_TYPE_GENERAL} ${ALERT_TITLE} {\n color: ${token.color.gold};\n }\n\n ${OVERWRITE_CONTAINER_TYPE_GENERAL} ${CLOSE_BUTTON} > svg {\n fill: ${token.color.white};\n }\n`\n\n// prettier-ignore\nconst OverwriteTypeClosed = `\n ${OVERWRITE_CONTAINER_TYPE_CLOSED} {\n background-color: ${token.color.gold};\n }\n\n ${OVERWRITE_CONTAINER_TYPE_CLOSED} * {\n color: ${token.color.black};\n }\n\n ${OVERWRITE_CONTAINER_TYPE_CLOSED} .${CLOSE_BUTTON} > svg {\n fill: ${token.color.black};\n }\n`\n\n// prettier-ignore\nconst CloseButtonStyles = `\n ${CLOSE_BUTTON} {\n position: absolute;\n top: 30px;\n right: 10px;\n }\n \n @container (max-width: ${BREAKPOINTS.MEDIUM - 1}px) {\n ${CLOSE_BUTTON} {\n top: 25px;\n right: 5px;\n }\n }\n\n ${CLOSE_BUTTON} > svg {\n fill: ${token.color.black};\n width: 24px;\n height: 24px;\n }\n`\n\n// prettier-ignore\nconst TextStyles = `\n ${jssToCSS({\n styleObj: {\n [`${ALERT_TITLE}`]: typography.sans.large,\n },\n })}\n\n ${ALERT_TITLE} {\n text-transform: uppercase;\n }\n\n ${ALERT_TITLE} + * {\n margin-top: ${token.spacing.sm};\n }\n\n ${jssToCSS({\n styleObj: {\n [`${ALERT_TEXT}`]: element.text.rich.advanced,\n },\n })}\n\n ${ALERT_TEXT},\n ${ALERT_TEXT} * {\n font-size: 16px;;\n }\n\n ${ALERT_TEXT} + * {\n margin-top: ${token.spacing.lg};\n }\n\n ${CTA} {\n text-decoration: none;\n }\n`\n\n// prettier-ignore\nconst WrapperStyles = `\n ${WRAPPER} {\n position: relative;\n padding-top: ${token.spacing.md};\n padding-bottom: ${token.spacing.md};\n padding-right: ${token.spacing.lg};\n }\n\n @container (min-width: ${BREAKPOINTS.MEDIUM}px) {\n ${WRAPPER} {\n padding-top: ${token.spacing.lg};\n padding-bottom: ${token.spacing.lg};\n }\n }\n`\n\n// prettier-ignore\nconst LockStyles = `\n ${jssToCSS({\n styleObj: {\n [`${LOCK}`]: layout.space.horizontal.full,\n },\n })}\n`\n\n// prettier-ignore\nconst ContainerStyles = `\n ${CONTAINER} {\n container: ${ELEMENT_NAME} / inline-size;\n background-color: ${token.color.gray.lighter};\n border-left: 4px solid ${token.color.red};\n transition: height ${ANIMATION.SPEED}ms;\n overflow: hidden;\n position: relative;\n }\n\n @container (min-width: ${BREAKPOINTS.LARGE}px) {\n ${CONTAINER} {\n border-left: 8px solid ${token.color.red};\n }\n }\n`\n\n// prettier-ignore\nexport const STYLES_NAV_ALERT = `\n ${DECLARATION} {\n container: ${ELEMENT_NAME} / inline-size;\n }\n\n ${ContainerStyles}\n ${LockStyles}\n ${WrapperStyles}\n ${TextStyles}\n ${CloseButtonStyles}\n ${OverwriteTypeGeneral}\n ${OverwriteTypeClosed}\n`;\n\n// storage.ts\nconst logStorageError = (operation: string, error: Error): void => {\n console.error(`UMD Component - Alert Storage: ${operation} failed:`, error);\n};\n\nconst getStoredValue = <T>(key: string): T | null => {\n try {\n const value = window.localStorage.getItem(key);\n return value ? JSON.parse(value) : null;\n } catch (error) {\n logStorageError(`Reading ${key}`, error as Error);\n return null;\n }\n};\n\nconst setStoredValue = (key: string, value: unknown): void => {\n try {\n window.localStorage.setItem(key, JSON.stringify(value));\n } catch (error) {\n logStorageError('Saving value', error as Error);\n }\n};\n\nconst clearAlertStorage = (): void => {\n const { STORAGE_KEYS } = ALERT_CONSTANTS;\n window.localStorage.removeItem(STORAGE_KEYS.ALERT_TIME);\n window.localStorage.removeItem(STORAGE_KEYS.ALERT);\n};\n\nconst checkAlertCache = (): CacheCheckResult => {\n const currentTime = new Date().getTime();\n const { STORAGE_KEYS, CACHE } = ALERT_CONSTANTS;\n\n try {\n const alertTimeStr = getStoredValue<string>(STORAGE_KEYS.ALERT_TIME);\n const cachedResponse = getStoredValue<AlertData>(STORAGE_KEYS.ALERT);\n\n if (!alertTimeStr) {\n setStoredValue(STORAGE_KEYS.ALERT_TIME, currentTime.toString());\n return { shouldCheck: true, cachedData: null };\n }\n\n const alertTime = parseInt(alertTimeStr, 10);\n const timeElapsed = currentTime - alertTime;\n\n if (timeElapsed < CACHE.DURATION && cachedResponse) {\n return { shouldCheck: false, cachedData: cachedResponse };\n }\n\n setStoredValue(STORAGE_KEYS.ALERT_TIME, currentTime.toString());\n return { shouldCheck: true, cachedData: null };\n } catch (error) {\n console.error('Cache check failed:', error);\n return { shouldCheck: true, cachedData: null };\n }\n};\n\nconst updateAlertCache = (alert: AlertData): void => {\n setStoredValue(ALERT_CONSTANTS.STORAGE_KEYS.ALERT, alert);\n};\n\nconst createElement = (\n tag: string,\n className?: string,\n attributes?: ElementAttributes,\n): HTMLElement => {\n const element = document.createElement(tag);\n if (className) element.classList.add(className);\n if (attributes) {\n Object.entries(attributes).forEach(([key, value]) => {\n element.setAttribute(key, value);\n });\n }\n return element;\n};\n\nconst createCloseButton = (container: HTMLElement): HTMLButtonElement => {\n const { ELEMENTS, ANIMATION } = ALERT_CONSTANTS;\n const button = createElement('button', ELEMENTS.CLOSE_BUTTON, {\n 'aria-label': 'remove alert',\n }) as HTMLButtonElement;\n\n button.innerHTML = iconCloseLarge;\n button.addEventListener('click', () => {\n const cachedAlert = getStoredValue<AlertData>(\n ALERT_CONSTANTS.STORAGE_KEYS.ALERT,\n );\n if (cachedAlert) {\n // Animate close\n container.style.height = `${container.offsetHeight}px`;\n container.style.transition = `height ${ANIMATION.SPEED}ms`;\n\n updateAlertCache({ ...cachedAlert, hidden: true });\n\n setTimeout(() => {\n container.style.height = '0px';\n }, 100);\n\n setTimeout(() => {\n container.remove();\n }, ANIMATION.SPEED + 100);\n }\n });\n\n return button;\n};\n\nconst createCTAElement = ({\n ctaText,\n ctaUrl,\n}: {\n ctaText: string;\n ctaUrl: string;\n}) => {\n const link = createElement('a', ALERT_CONSTANTS.ELEMENTS.CTA, {\n href: ctaUrl,\n rel: 'noopener noreferrer',\n target: '_blank',\n });\n link.innerHTML = ctaText;\n\n return actions.options({\n element: link,\n isTypeSecondary: true,\n });\n};\n\nconst createAlertContent = (\n alert: AlertData,\n container: HTMLElement,\n): HTMLElement => {\n const { ELEMENTS } = ALERT_CONSTANTS;\n const wrapper = createElement('div', ELEMENTS.WRAPPER);\n const lock = createElement('div', ELEMENTS.LOCK);\n const headlineText = alert.headline || alert.title;\n\n // Create elements\n const title = createElement('p', ELEMENTS.TITLE);\n title.innerHTML = headlineText;\n\n const closeButton = createCloseButton(container);\n\n wrapper.append(closeButton, title);\n\n if (alert.text) {\n const message = createElement('div', ELEMENTS.TEXT);\n message.innerHTML = alert.text;\n wrapper.append(closeButton, title, message);\n }\n\n // Add CTA if exists\n if (alert.ctaUrl) {\n const cta = createCTAElement({\n ctaText: alert.ctaText || headlineText,\n ctaUrl: alert.ctaUrl,\n });\n\n wrapper.appendChild(cta.element);\n }\n\n lock.appendChild(wrapper);\n return lock;\n};\n\nconst createAlertComponent = (alert: AlertData): HTMLElement => {\n const { ELEMENTS, ATTRIBUTES } = ALERT_CONSTANTS;\n\n const declaration = createElement('div', ELEMENTS.DECLARATION);\n const container = createElement('div', ELEMENTS.CONTAINER, {\n id: ELEMENTS.ALERT_ID,\n [ATTRIBUTES.TYPE]: alert.type,\n });\n\n const content = createAlertContent(alert, container);\n container.appendChild(content);\n declaration.appendChild(container);\n\n return declaration;\n};\n\nconst fetchAlerts = async ({\n alertUrl,\n}: AlertProps): Promise<AlertResponse | null> => {\n try {\n const url = alertUrl || ALERT_CONSTANTS.URLS.DEFAULT;\n\n return await fetchGraphQL({\n query: QUERY,\n url,\n token: 'VIDnMeNYHTrLvWPtPpK5MNpjuv5WmmhU',\n });\n } catch (error) {\n console.error('Failed to fetch alerts:', error);\n return null;\n }\n};\n\nexport const createNavAlert = async ({ alertUrl }: AlertProps) => {\n const alertCache = checkAlertCache();\n\n // Show cached alert if valid\n if (\n !alertCache.shouldCheck &&\n alertCache.cachedData &&\n !alertCache.cachedData.hidden\n ) {\n return { element: createAlertComponent(alertCache.cachedData) };\n }\n\n // Fetch new alerts\n const response = await fetchAlerts({ alertUrl });\n if (!response?.data?.entries[0]) {\n clearAlertStorage();\n return null;\n }\n\n const alert = response.data?.entries[0];\n const cachedAlert = getStoredValue<AlertData>(\n ALERT_CONSTANTS.STORAGE_KEYS.ALERT,\n );\n\n // Handle alert updates\n if (cachedAlert?.id === alert.id) {\n if (!cachedAlert.hidden && alertCache.shouldCheck) {\n return { element: createAlertComponent(cachedAlert) };\n }\n } else {\n clearAlertStorage();\n updateAlertCache(alert);\n return { element: createAlertComponent(alert) };\n }\n\n return null;\n};\n"],"names":["token","jssToCSS","typography","element","layout","ELEMENTS","ANIMATION","iconCloseLarge","actions.options","ATTRIBUTES","fetchGraphQL"],"mappings":"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"}
|
|
@@ -3,26 +3,30 @@ import { fetchGraphQL } from "@universityofmaryland/web-utilities-library/networ
|
|
|
3
3
|
import { jssToCSS } from "@universityofmaryland/web-utilities-library/styles";
|
|
4
4
|
import { close_large } from "@universityofmaryland/web-icons-library/controls";
|
|
5
5
|
import { options } from "../../../atomic/actions/text.mjs";
|
|
6
|
-
import "@universityofmaryland/web-
|
|
6
|
+
import "@universityofmaryland/web-builder-library";
|
|
7
|
+
import "@universityofmaryland/web-token-library";
|
|
7
8
|
import "@universityofmaryland/web-icons-library/files";
|
|
8
9
|
import "@universityofmaryland/web-icons-library/arrows";
|
|
9
|
-
import "../../../model/modifiers/index.mjs";
|
|
10
|
-
import "../../../model/elements/headline.mjs";
|
|
11
10
|
import "../../../atomic/animations/actions/indicator.mjs";
|
|
12
11
|
import "../../../atomic/animations/brand/chevron-scroll.mjs";
|
|
13
12
|
import "../../../atomic/animations/brand/card-stack.mjs";
|
|
14
13
|
import "@universityofmaryland/web-utilities-library/performance";
|
|
15
14
|
import "@universityofmaryland/web-utilities-library/accessibility";
|
|
15
|
+
import "@universityofmaryland/web-styles-library/element";
|
|
16
16
|
import "@universityofmaryland/web-icons-library/location";
|
|
17
17
|
import "@universityofmaryland/web-icons-library/calendar";
|
|
18
|
+
import "@universityofmaryland/web-styles-library/typography";
|
|
19
|
+
import "@universityofmaryland/web-utilities-library/theme";
|
|
18
20
|
import "../../../atomic/layout/block/stacked.mjs";
|
|
19
21
|
import "../../../atomic/layout/overlay/modal.mjs";
|
|
20
22
|
import "../../../atomic/layout/person/columns.mjs";
|
|
23
|
+
import "@universityofmaryland/web-styles-library/layout";
|
|
21
24
|
import "@universityofmaryland/web-icons-library/communication";
|
|
22
25
|
import "@universityofmaryland/web-icons-library/social";
|
|
23
26
|
import "../../../atomic/text-lockup/date.mjs";
|
|
27
|
+
import "@universityofmaryland/web-styles-library/animation";
|
|
28
|
+
import "@universityofmaryland/web-utilities-library/dom";
|
|
24
29
|
import "../../../atomic/text-lockup/small.mjs";
|
|
25
|
-
import "@universityofmaryland/web-styles-library/typography";
|
|
26
30
|
const QUERY = `
|
|
27
31
|
query CampusAlertsQuery {
|
|
28
32
|
entries: entries(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alert.mjs","sources":["../../../../source/composite/navigation/utility/alert.ts"],"sourcesContent":["import {\n element,\n layout,\n token,\n typography,\n} from '@universityofmaryland/web-styles-library';\nimport { fetchGraphQL } from '@universityofmaryland/web-utilities-library/network';\nimport { jssToCSS } from '@universityofmaryland/web-utilities-library/styles';\nimport { close_large as iconCloseLarge } from '@universityofmaryland/web-icons-library/controls';\nimport { actions } from 'atomic';\n\ntype AlertData = {\n id: string;\n type: string;\n title: string;\n headline?: string;\n text: string;\n ctaUrl: string;\n ctaText?: string;\n hidden?: boolean;\n};\n\ntype AlertResponse = {\n data: {\n entries: AlertData[];\n };\n};\n\ntype AlertProps = {\n alertUrl?: string | null;\n};\n\nexport type TypeAlertProps = {\n alertUrl?: string | null;\n};\n\ntype ElementAttributes = Record<string, string>;\n\ntype CacheCheckResult = {\n shouldCheck: boolean;\n cachedData: AlertData | null;\n};\n\nconst QUERY = `\n query CampusAlertsQuery {\n entries: entries(\n limit: 1\n type: \"mainElementsCampusAlert\"\n ) {\n id: uid\n type: optionsType\n headline\n title\n text\n ctaUrl: cta\n ctaText\n }\n }\n`;\n\nconst ELEMENT_NAME = 'umd-element-nav-alert';\nexport const ALERT_CONSTANTS = {\n URLS: {\n DEFAULT: 'https://umd.edu/api/v2',\n },\n STORAGE_KEYS: {\n ALERT_TIME: 'umd-utility-alert-time',\n ALERT: 'umd-utility-alert',\n ALERT_ID: 'umd-utility-alert-id',\n },\n ELEMENTS: {\n ALERT_ID: 'umd-global-alert',\n DECLARATION: 'umd-element-nav-alert-declaration',\n CONTAINER: 'umd-element-nav-alert-container',\n LOCK: 'umd-element-nav-alert-lock',\n WRAPPER: 'umd-element-nav-alert-wrapper',\n TITLE: 'umd-element-nav-alert-title',\n TEXT: 'umd-element-nav-alert-text',\n CTA: 'umd-element-nav-alert-cta',\n CLOSE_BUTTON: 'umd-element-nav-alert-close',\n },\n ATTRIBUTES: {\n TYPE: 'type',\n },\n TYPES: {\n GENERAL: 'general',\n CLOSED: 'closed',\n OPEN: 'open',\n },\n ANIMATION: {\n SPEED: 800,\n },\n BREAKPOINTS: {\n MEDIUM: 768,\n LARGE: 1024,\n },\n CACHE: {\n DURATION: 60 * 1000, // One minute in milliseconds\n },\n} as const;\n\nconst { ATTRIBUTES, ANIMATION, BREAKPOINTS, ELEMENTS, TYPES } = ALERT_CONSTANTS;\nconst IS_TYPE_GENERAL = `[${ATTRIBUTES.TYPE}=${TYPES.GENERAL}]`;\nconst IS_TYPE_CLOSED = `[${ATTRIBUTES.TYPE}=${TYPES.CLOSED}]`;\n\nconst DECLARATION = `.${ELEMENTS.DECLARATION}`;\nconst CONTAINER = `.${ELEMENTS.CONTAINER}`;\nconst WRAPPER = `.${ELEMENTS.WRAPPER}`;\nconst LOCK = `.${ELEMENTS.LOCK}`;\nconst ALERT_TITLE = `.${ELEMENTS.TITLE}`;\nconst ALERT_TEXT = `.${ELEMENTS.TEXT}`;\nconst CLOSE_BUTTON = `.${ELEMENTS.CLOSE_BUTTON}`;\nconst CTA = `.${ELEMENTS.CTA}`;\n\nconst OVERWRITE_CONTAINER_TYPE_GENERAL = `${CONTAINER}${IS_TYPE_GENERAL}`;\nconst OVERWRITE_CONTAINER_TYPE_CLOSED = `${CONTAINER}${IS_TYPE_CLOSED}`;\n\n// prettier-ignore\nconst OverwriteTypeGeneral = `\n ${OVERWRITE_CONTAINER_TYPE_GENERAL} {\n background-color: ${token.color.black};\n }\n\n ${OVERWRITE_CONTAINER_TYPE_GENERAL} * {\n color: ${token.color.white};\n }\n\n ${OVERWRITE_CONTAINER_TYPE_GENERAL} a:hover,\n ${OVERWRITE_CONTAINER_TYPE_GENERAL} a:focus {\n color: ${token.color.white} !important;\n }\n\n ${OVERWRITE_CONTAINER_TYPE_GENERAL} ${ALERT_TITLE} {\n color: ${token.color.gold};\n }\n\n ${OVERWRITE_CONTAINER_TYPE_GENERAL} ${CLOSE_BUTTON} > svg {\n fill: ${token.color.white};\n }\n`\n\n// prettier-ignore\nconst OverwriteTypeClosed = `\n ${OVERWRITE_CONTAINER_TYPE_CLOSED} {\n background-color: ${token.color.gold};\n }\n\n ${OVERWRITE_CONTAINER_TYPE_CLOSED} * {\n color: ${token.color.black};\n }\n\n ${OVERWRITE_CONTAINER_TYPE_CLOSED} .${CLOSE_BUTTON} > svg {\n fill: ${token.color.black};\n }\n`\n\n// prettier-ignore\nconst CloseButtonStyles = `\n ${CLOSE_BUTTON} {\n position: absolute;\n top: 30px;\n right: 10px;\n }\n \n @container (max-width: ${BREAKPOINTS.MEDIUM - 1}px) {\n ${CLOSE_BUTTON} {\n top: 25px;\n right: 5px;\n }\n }\n\n ${CLOSE_BUTTON} > svg {\n fill: ${token.color.black};\n width: 24px;\n height: 24px;\n }\n`\n\n// prettier-ignore\nconst TextStyles = `\n ${jssToCSS({\n styleObj: {\n [`${ALERT_TITLE}`]: typography.sans.large,\n },\n })}\n\n ${ALERT_TITLE} {\n text-transform: uppercase;\n }\n\n ${ALERT_TITLE} + * {\n margin-top: ${token.spacing.sm};\n }\n\n ${jssToCSS({\n styleObj: {\n [`${ALERT_TEXT}`]: element.text.rich.advanced,\n },\n })}\n\n ${ALERT_TEXT},\n ${ALERT_TEXT} * {\n font-size: 16px;;\n }\n\n ${ALERT_TEXT} + * {\n margin-top: ${token.spacing.lg};\n }\n\n ${CTA} {\n text-decoration: none;\n }\n`\n\n// prettier-ignore\nconst WrapperStyles = `\n ${WRAPPER} {\n position: relative;\n padding-top: ${token.spacing.md};\n padding-bottom: ${token.spacing.md};\n padding-right: ${token.spacing.lg};\n }\n\n @container (min-width: ${BREAKPOINTS.MEDIUM}px) {\n ${WRAPPER} {\n padding-top: ${token.spacing.lg};\n padding-bottom: ${token.spacing.lg};\n }\n }\n`\n\n// prettier-ignore\nconst LockStyles = `\n ${jssToCSS({\n styleObj: {\n [`${LOCK}`]: layout.space.horizontal.full,\n },\n })}\n`\n\n// prettier-ignore\nconst ContainerStyles = `\n ${CONTAINER} {\n container: ${ELEMENT_NAME} / inline-size;\n background-color: ${token.color.gray.lighter};\n border-left: 4px solid ${token.color.red};\n transition: height ${ANIMATION.SPEED}ms;\n overflow: hidden;\n position: relative;\n }\n\n @container (min-width: ${BREAKPOINTS.LARGE}px) {\n ${CONTAINER} {\n border-left: 8px solid ${token.color.red};\n }\n }\n`\n\n// prettier-ignore\nexport const STYLES_NAV_ALERT = `\n ${DECLARATION} {\n container: ${ELEMENT_NAME} / inline-size;\n }\n\n ${ContainerStyles}\n ${LockStyles}\n ${WrapperStyles}\n ${TextStyles}\n ${CloseButtonStyles}\n ${OverwriteTypeGeneral}\n ${OverwriteTypeClosed}\n`;\n\n// storage.ts\nconst logStorageError = (operation: string, error: Error): void => {\n console.error(`UMD Component - Alert Storage: ${operation} failed:`, error);\n};\n\nconst getStoredValue = <T>(key: string): T | null => {\n try {\n const value = window.localStorage.getItem(key);\n return value ? JSON.parse(value) : null;\n } catch (error) {\n logStorageError(`Reading ${key}`, error as Error);\n return null;\n }\n};\n\nconst setStoredValue = (key: string, value: unknown): void => {\n try {\n window.localStorage.setItem(key, JSON.stringify(value));\n } catch (error) {\n logStorageError('Saving value', error as Error);\n }\n};\n\nconst clearAlertStorage = (): void => {\n const { STORAGE_KEYS } = ALERT_CONSTANTS;\n window.localStorage.removeItem(STORAGE_KEYS.ALERT_TIME);\n window.localStorage.removeItem(STORAGE_KEYS.ALERT);\n};\n\nconst checkAlertCache = (): CacheCheckResult => {\n const currentTime = new Date().getTime();\n const { STORAGE_KEYS, CACHE } = ALERT_CONSTANTS;\n\n try {\n const alertTimeStr = getStoredValue<string>(STORAGE_KEYS.ALERT_TIME);\n const cachedResponse = getStoredValue<AlertData>(STORAGE_KEYS.ALERT);\n\n if (!alertTimeStr) {\n setStoredValue(STORAGE_KEYS.ALERT_TIME, currentTime.toString());\n return { shouldCheck: true, cachedData: null };\n }\n\n const alertTime = parseInt(alertTimeStr, 10);\n const timeElapsed = currentTime - alertTime;\n\n if (timeElapsed < CACHE.DURATION && cachedResponse) {\n return { shouldCheck: false, cachedData: cachedResponse };\n }\n\n setStoredValue(STORAGE_KEYS.ALERT_TIME, currentTime.toString());\n return { shouldCheck: true, cachedData: null };\n } catch (error) {\n console.error('Cache check failed:', error);\n return { shouldCheck: true, cachedData: null };\n }\n};\n\nconst updateAlertCache = (alert: AlertData): void => {\n setStoredValue(ALERT_CONSTANTS.STORAGE_KEYS.ALERT, alert);\n};\n\nconst createElement = (\n tag: string,\n className?: string,\n attributes?: ElementAttributes,\n): HTMLElement => {\n const element = document.createElement(tag);\n if (className) element.classList.add(className);\n if (attributes) {\n Object.entries(attributes).forEach(([key, value]) => {\n element.setAttribute(key, value);\n });\n }\n return element;\n};\n\nconst createCloseButton = (container: HTMLElement): HTMLButtonElement => {\n const { ELEMENTS, ANIMATION } = ALERT_CONSTANTS;\n const button = createElement('button', ELEMENTS.CLOSE_BUTTON, {\n 'aria-label': 'remove alert',\n }) as HTMLButtonElement;\n\n button.innerHTML = iconCloseLarge;\n button.addEventListener('click', () => {\n const cachedAlert = getStoredValue<AlertData>(\n ALERT_CONSTANTS.STORAGE_KEYS.ALERT,\n );\n if (cachedAlert) {\n // Animate close\n container.style.height = `${container.offsetHeight}px`;\n container.style.transition = `height ${ANIMATION.SPEED}ms`;\n\n updateAlertCache({ ...cachedAlert, hidden: true });\n\n setTimeout(() => {\n container.style.height = '0px';\n }, 100);\n\n setTimeout(() => {\n container.remove();\n }, ANIMATION.SPEED + 100);\n }\n });\n\n return button;\n};\n\nconst createCTAElement = ({\n ctaText,\n ctaUrl,\n}: {\n ctaText: string;\n ctaUrl: string;\n}) => {\n const link = createElement('a', ALERT_CONSTANTS.ELEMENTS.CTA, {\n href: ctaUrl,\n rel: 'noopener noreferrer',\n target: '_blank',\n });\n link.innerHTML = ctaText;\n\n return actions.options({\n element: link,\n isTypeSecondary: true,\n });\n};\n\nconst createAlertContent = (\n alert: AlertData,\n container: HTMLElement,\n): HTMLElement => {\n const { ELEMENTS } = ALERT_CONSTANTS;\n const wrapper = createElement('div', ELEMENTS.WRAPPER);\n const lock = createElement('div', ELEMENTS.LOCK);\n const headlineText = alert.headline || alert.title;\n\n // Create elements\n const title = createElement('p', ELEMENTS.TITLE);\n title.innerHTML = headlineText;\n\n const closeButton = createCloseButton(container);\n\n wrapper.append(closeButton, title);\n\n if (alert.text) {\n const message = createElement('div', ELEMENTS.TEXT);\n message.innerHTML = alert.text;\n wrapper.append(closeButton, title, message);\n }\n\n // Add CTA if exists\n if (alert.ctaUrl) {\n const cta = createCTAElement({\n ctaText: alert.ctaText || headlineText,\n ctaUrl: alert.ctaUrl,\n });\n\n wrapper.appendChild(cta.element);\n }\n\n lock.appendChild(wrapper);\n return lock;\n};\n\nconst createAlertComponent = (alert: AlertData): HTMLElement => {\n const { ELEMENTS, ATTRIBUTES } = ALERT_CONSTANTS;\n\n const declaration = createElement('div', ELEMENTS.DECLARATION);\n const container = createElement('div', ELEMENTS.CONTAINER, {\n id: ELEMENTS.ALERT_ID,\n [ATTRIBUTES.TYPE]: alert.type,\n });\n\n const content = createAlertContent(alert, container);\n container.appendChild(content);\n declaration.appendChild(container);\n\n return declaration;\n};\n\nconst fetchAlerts = async ({\n alertUrl,\n}: AlertProps): Promise<AlertResponse | null> => {\n try {\n const url = alertUrl || ALERT_CONSTANTS.URLS.DEFAULT;\n\n return await fetchGraphQL({\n query: QUERY,\n url,\n token: 'VIDnMeNYHTrLvWPtPpK5MNpjuv5WmmhU',\n });\n } catch (error) {\n console.error('Failed to fetch alerts:', error);\n return null;\n }\n};\n\nexport const createNavAlert = async ({ alertUrl }: AlertProps) => {\n const alertCache = checkAlertCache();\n\n // Show cached alert if valid\n if (\n !alertCache.shouldCheck &&\n alertCache.cachedData &&\n !alertCache.cachedData.hidden\n ) {\n return { element: createAlertComponent(alertCache.cachedData) };\n }\n\n // Fetch new alerts\n const response = await fetchAlerts({ alertUrl });\n if (!response?.data?.entries[0]) {\n clearAlertStorage();\n return null;\n }\n\n const alert = response.data?.entries[0];\n const cachedAlert = getStoredValue<AlertData>(\n ALERT_CONSTANTS.STORAGE_KEYS.ALERT,\n );\n\n // Handle alert updates\n if (cachedAlert?.id === alert.id) {\n if (!cachedAlert.hidden && alertCache.shouldCheck) {\n return { element: createAlertComponent(cachedAlert) };\n }\n } else {\n clearAlertStorage();\n updateAlertCache(alert);\n return { element: createAlertComponent(alert) };\n }\n\n return null;\n};\n"],"names":["element","ELEMENTS","ANIMATION","iconCloseLarge","actions.options","ATTRIBUTES"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"alert.mjs","sources":["../../../../source/composite/navigation/utility/alert.ts"],"sourcesContent":["import {\n element,\n layout,\n token,\n typography,\n} from '@universityofmaryland/web-styles-library';\nimport { fetchGraphQL } from '@universityofmaryland/web-utilities-library/network';\nimport { jssToCSS } from '@universityofmaryland/web-utilities-library/styles';\nimport { close_large as iconCloseLarge } from '@universityofmaryland/web-icons-library/controls';\nimport { actions } from 'atomic';\n\ntype AlertData = {\n id: string;\n type: string;\n title: string;\n headline?: string;\n text: string;\n ctaUrl: string;\n ctaText?: string;\n hidden?: boolean;\n};\n\ntype AlertResponse = {\n data: {\n entries: AlertData[];\n };\n};\n\ntype AlertProps = {\n alertUrl?: string | null;\n};\n\nexport type TypeAlertProps = {\n alertUrl?: string | null;\n};\n\ntype ElementAttributes = Record<string, string>;\n\ntype CacheCheckResult = {\n shouldCheck: boolean;\n cachedData: AlertData | null;\n};\n\nconst QUERY = `\n query CampusAlertsQuery {\n entries: entries(\n limit: 1\n type: \"mainElementsCampusAlert\"\n ) {\n id: uid\n type: optionsType\n headline\n title\n text\n ctaUrl: cta\n ctaText\n }\n }\n`;\n\nconst ELEMENT_NAME = 'umd-element-nav-alert';\nexport const ALERT_CONSTANTS = {\n URLS: {\n DEFAULT: 'https://umd.edu/api/v2',\n },\n STORAGE_KEYS: {\n ALERT_TIME: 'umd-utility-alert-time',\n ALERT: 'umd-utility-alert',\n ALERT_ID: 'umd-utility-alert-id',\n },\n ELEMENTS: {\n ALERT_ID: 'umd-global-alert',\n DECLARATION: 'umd-element-nav-alert-declaration',\n CONTAINER: 'umd-element-nav-alert-container',\n LOCK: 'umd-element-nav-alert-lock',\n WRAPPER: 'umd-element-nav-alert-wrapper',\n TITLE: 'umd-element-nav-alert-title',\n TEXT: 'umd-element-nav-alert-text',\n CTA: 'umd-element-nav-alert-cta',\n CLOSE_BUTTON: 'umd-element-nav-alert-close',\n },\n ATTRIBUTES: {\n TYPE: 'type',\n },\n TYPES: {\n GENERAL: 'general',\n CLOSED: 'closed',\n OPEN: 'open',\n },\n ANIMATION: {\n SPEED: 800,\n },\n BREAKPOINTS: {\n MEDIUM: 768,\n LARGE: 1024,\n },\n CACHE: {\n DURATION: 60 * 1000, // One minute in milliseconds\n },\n} as const;\n\nconst { ATTRIBUTES, ANIMATION, BREAKPOINTS, ELEMENTS, TYPES } = ALERT_CONSTANTS;\nconst IS_TYPE_GENERAL = `[${ATTRIBUTES.TYPE}=${TYPES.GENERAL}]`;\nconst IS_TYPE_CLOSED = `[${ATTRIBUTES.TYPE}=${TYPES.CLOSED}]`;\n\nconst DECLARATION = `.${ELEMENTS.DECLARATION}`;\nconst CONTAINER = `.${ELEMENTS.CONTAINER}`;\nconst WRAPPER = `.${ELEMENTS.WRAPPER}`;\nconst LOCK = `.${ELEMENTS.LOCK}`;\nconst ALERT_TITLE = `.${ELEMENTS.TITLE}`;\nconst ALERT_TEXT = `.${ELEMENTS.TEXT}`;\nconst CLOSE_BUTTON = `.${ELEMENTS.CLOSE_BUTTON}`;\nconst CTA = `.${ELEMENTS.CTA}`;\n\nconst OVERWRITE_CONTAINER_TYPE_GENERAL = `${CONTAINER}${IS_TYPE_GENERAL}`;\nconst OVERWRITE_CONTAINER_TYPE_CLOSED = `${CONTAINER}${IS_TYPE_CLOSED}`;\n\n// prettier-ignore\nconst OverwriteTypeGeneral = `\n ${OVERWRITE_CONTAINER_TYPE_GENERAL} {\n background-color: ${token.color.black};\n }\n\n ${OVERWRITE_CONTAINER_TYPE_GENERAL} * {\n color: ${token.color.white};\n }\n\n ${OVERWRITE_CONTAINER_TYPE_GENERAL} a:hover,\n ${OVERWRITE_CONTAINER_TYPE_GENERAL} a:focus {\n color: ${token.color.white} !important;\n }\n\n ${OVERWRITE_CONTAINER_TYPE_GENERAL} ${ALERT_TITLE} {\n color: ${token.color.gold};\n }\n\n ${OVERWRITE_CONTAINER_TYPE_GENERAL} ${CLOSE_BUTTON} > svg {\n fill: ${token.color.white};\n }\n`\n\n// prettier-ignore\nconst OverwriteTypeClosed = `\n ${OVERWRITE_CONTAINER_TYPE_CLOSED} {\n background-color: ${token.color.gold};\n }\n\n ${OVERWRITE_CONTAINER_TYPE_CLOSED} * {\n color: ${token.color.black};\n }\n\n ${OVERWRITE_CONTAINER_TYPE_CLOSED} .${CLOSE_BUTTON} > svg {\n fill: ${token.color.black};\n }\n`\n\n// prettier-ignore\nconst CloseButtonStyles = `\n ${CLOSE_BUTTON} {\n position: absolute;\n top: 30px;\n right: 10px;\n }\n \n @container (max-width: ${BREAKPOINTS.MEDIUM - 1}px) {\n ${CLOSE_BUTTON} {\n top: 25px;\n right: 5px;\n }\n }\n\n ${CLOSE_BUTTON} > svg {\n fill: ${token.color.black};\n width: 24px;\n height: 24px;\n }\n`\n\n// prettier-ignore\nconst TextStyles = `\n ${jssToCSS({\n styleObj: {\n [`${ALERT_TITLE}`]: typography.sans.large,\n },\n })}\n\n ${ALERT_TITLE} {\n text-transform: uppercase;\n }\n\n ${ALERT_TITLE} + * {\n margin-top: ${token.spacing.sm};\n }\n\n ${jssToCSS({\n styleObj: {\n [`${ALERT_TEXT}`]: element.text.rich.advanced,\n },\n })}\n\n ${ALERT_TEXT},\n ${ALERT_TEXT} * {\n font-size: 16px;;\n }\n\n ${ALERT_TEXT} + * {\n margin-top: ${token.spacing.lg};\n }\n\n ${CTA} {\n text-decoration: none;\n }\n`\n\n// prettier-ignore\nconst WrapperStyles = `\n ${WRAPPER} {\n position: relative;\n padding-top: ${token.spacing.md};\n padding-bottom: ${token.spacing.md};\n padding-right: ${token.spacing.lg};\n }\n\n @container (min-width: ${BREAKPOINTS.MEDIUM}px) {\n ${WRAPPER} {\n padding-top: ${token.spacing.lg};\n padding-bottom: ${token.spacing.lg};\n }\n }\n`\n\n// prettier-ignore\nconst LockStyles = `\n ${jssToCSS({\n styleObj: {\n [`${LOCK}`]: layout.space.horizontal.full,\n },\n })}\n`\n\n// prettier-ignore\nconst ContainerStyles = `\n ${CONTAINER} {\n container: ${ELEMENT_NAME} / inline-size;\n background-color: ${token.color.gray.lighter};\n border-left: 4px solid ${token.color.red};\n transition: height ${ANIMATION.SPEED}ms;\n overflow: hidden;\n position: relative;\n }\n\n @container (min-width: ${BREAKPOINTS.LARGE}px) {\n ${CONTAINER} {\n border-left: 8px solid ${token.color.red};\n }\n }\n`\n\n// prettier-ignore\nexport const STYLES_NAV_ALERT = `\n ${DECLARATION} {\n container: ${ELEMENT_NAME} / inline-size;\n }\n\n ${ContainerStyles}\n ${LockStyles}\n ${WrapperStyles}\n ${TextStyles}\n ${CloseButtonStyles}\n ${OverwriteTypeGeneral}\n ${OverwriteTypeClosed}\n`;\n\n// storage.ts\nconst logStorageError = (operation: string, error: Error): void => {\n console.error(`UMD Component - Alert Storage: ${operation} failed:`, error);\n};\n\nconst getStoredValue = <T>(key: string): T | null => {\n try {\n const value = window.localStorage.getItem(key);\n return value ? JSON.parse(value) : null;\n } catch (error) {\n logStorageError(`Reading ${key}`, error as Error);\n return null;\n }\n};\n\nconst setStoredValue = (key: string, value: unknown): void => {\n try {\n window.localStorage.setItem(key, JSON.stringify(value));\n } catch (error) {\n logStorageError('Saving value', error as Error);\n }\n};\n\nconst clearAlertStorage = (): void => {\n const { STORAGE_KEYS } = ALERT_CONSTANTS;\n window.localStorage.removeItem(STORAGE_KEYS.ALERT_TIME);\n window.localStorage.removeItem(STORAGE_KEYS.ALERT);\n};\n\nconst checkAlertCache = (): CacheCheckResult => {\n const currentTime = new Date().getTime();\n const { STORAGE_KEYS, CACHE } = ALERT_CONSTANTS;\n\n try {\n const alertTimeStr = getStoredValue<string>(STORAGE_KEYS.ALERT_TIME);\n const cachedResponse = getStoredValue<AlertData>(STORAGE_KEYS.ALERT);\n\n if (!alertTimeStr) {\n setStoredValue(STORAGE_KEYS.ALERT_TIME, currentTime.toString());\n return { shouldCheck: true, cachedData: null };\n }\n\n const alertTime = parseInt(alertTimeStr, 10);\n const timeElapsed = currentTime - alertTime;\n\n if (timeElapsed < CACHE.DURATION && cachedResponse) {\n return { shouldCheck: false, cachedData: cachedResponse };\n }\n\n setStoredValue(STORAGE_KEYS.ALERT_TIME, currentTime.toString());\n return { shouldCheck: true, cachedData: null };\n } catch (error) {\n console.error('Cache check failed:', error);\n return { shouldCheck: true, cachedData: null };\n }\n};\n\nconst updateAlertCache = (alert: AlertData): void => {\n setStoredValue(ALERT_CONSTANTS.STORAGE_KEYS.ALERT, alert);\n};\n\nconst createElement = (\n tag: string,\n className?: string,\n attributes?: ElementAttributes,\n): HTMLElement => {\n const element = document.createElement(tag);\n if (className) element.classList.add(className);\n if (attributes) {\n Object.entries(attributes).forEach(([key, value]) => {\n element.setAttribute(key, value);\n });\n }\n return element;\n};\n\nconst createCloseButton = (container: HTMLElement): HTMLButtonElement => {\n const { ELEMENTS, ANIMATION } = ALERT_CONSTANTS;\n const button = createElement('button', ELEMENTS.CLOSE_BUTTON, {\n 'aria-label': 'remove alert',\n }) as HTMLButtonElement;\n\n button.innerHTML = iconCloseLarge;\n button.addEventListener('click', () => {\n const cachedAlert = getStoredValue<AlertData>(\n ALERT_CONSTANTS.STORAGE_KEYS.ALERT,\n );\n if (cachedAlert) {\n // Animate close\n container.style.height = `${container.offsetHeight}px`;\n container.style.transition = `height ${ANIMATION.SPEED}ms`;\n\n updateAlertCache({ ...cachedAlert, hidden: true });\n\n setTimeout(() => {\n container.style.height = '0px';\n }, 100);\n\n setTimeout(() => {\n container.remove();\n }, ANIMATION.SPEED + 100);\n }\n });\n\n return button;\n};\n\nconst createCTAElement = ({\n ctaText,\n ctaUrl,\n}: {\n ctaText: string;\n ctaUrl: string;\n}) => {\n const link = createElement('a', ALERT_CONSTANTS.ELEMENTS.CTA, {\n href: ctaUrl,\n rel: 'noopener noreferrer',\n target: '_blank',\n });\n link.innerHTML = ctaText;\n\n return actions.options({\n element: link,\n isTypeSecondary: true,\n });\n};\n\nconst createAlertContent = (\n alert: AlertData,\n container: HTMLElement,\n): HTMLElement => {\n const { ELEMENTS } = ALERT_CONSTANTS;\n const wrapper = createElement('div', ELEMENTS.WRAPPER);\n const lock = createElement('div', ELEMENTS.LOCK);\n const headlineText = alert.headline || alert.title;\n\n // Create elements\n const title = createElement('p', ELEMENTS.TITLE);\n title.innerHTML = headlineText;\n\n const closeButton = createCloseButton(container);\n\n wrapper.append(closeButton, title);\n\n if (alert.text) {\n const message = createElement('div', ELEMENTS.TEXT);\n message.innerHTML = alert.text;\n wrapper.append(closeButton, title, message);\n }\n\n // Add CTA if exists\n if (alert.ctaUrl) {\n const cta = createCTAElement({\n ctaText: alert.ctaText || headlineText,\n ctaUrl: alert.ctaUrl,\n });\n\n wrapper.appendChild(cta.element);\n }\n\n lock.appendChild(wrapper);\n return lock;\n};\n\nconst createAlertComponent = (alert: AlertData): HTMLElement => {\n const { ELEMENTS, ATTRIBUTES } = ALERT_CONSTANTS;\n\n const declaration = createElement('div', ELEMENTS.DECLARATION);\n const container = createElement('div', ELEMENTS.CONTAINER, {\n id: ELEMENTS.ALERT_ID,\n [ATTRIBUTES.TYPE]: alert.type,\n });\n\n const content = createAlertContent(alert, container);\n container.appendChild(content);\n declaration.appendChild(container);\n\n return declaration;\n};\n\nconst fetchAlerts = async ({\n alertUrl,\n}: AlertProps): Promise<AlertResponse | null> => {\n try {\n const url = alertUrl || ALERT_CONSTANTS.URLS.DEFAULT;\n\n return await fetchGraphQL({\n query: QUERY,\n url,\n token: 'VIDnMeNYHTrLvWPtPpK5MNpjuv5WmmhU',\n });\n } catch (error) {\n console.error('Failed to fetch alerts:', error);\n return null;\n }\n};\n\nexport const createNavAlert = async ({ alertUrl }: AlertProps) => {\n const alertCache = checkAlertCache();\n\n // Show cached alert if valid\n if (\n !alertCache.shouldCheck &&\n alertCache.cachedData &&\n !alertCache.cachedData.hidden\n ) {\n return { element: createAlertComponent(alertCache.cachedData) };\n }\n\n // Fetch new alerts\n const response = await fetchAlerts({ alertUrl });\n if (!response?.data?.entries[0]) {\n clearAlertStorage();\n return null;\n }\n\n const alert = response.data?.entries[0];\n const cachedAlert = getStoredValue<AlertData>(\n ALERT_CONSTANTS.STORAGE_KEYS.ALERT,\n );\n\n // Handle alert updates\n if (cachedAlert?.id === alert.id) {\n if (!cachedAlert.hidden && alertCache.shouldCheck) {\n return { element: createAlertComponent(cachedAlert) };\n }\n } else {\n clearAlertStorage();\n updateAlertCache(alert);\n return { element: createAlertComponent(alert) };\n }\n\n return null;\n};\n"],"names":["element","ELEMENTS","ANIMATION","iconCloseLarge","actions.options","ATTRIBUTES"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../source/composite/navigation/utility/index.ts"],"names":[],"mappings":"AAUA,OAAO,EAIL,cAAc,EACf,MAAM,SAAS,CAAC;AAGjB,KAAK,yBAAyB,GAAG;IAC/B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,KAAK,uBAAuB,GAAG,yBAAyB,GAAG,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../source/composite/navigation/utility/index.ts"],"names":[],"mappings":"AAUA,OAAO,EAIL,cAAc,EACf,MAAM,SAAS,CAAC;AAGjB,KAAK,yBAAyB,GAAG;IAC/B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,KAAK,uBAAuB,GAAG,yBAAyB,GAAG,cAAc,CAAC;AAqqB1E,QAAA,MAAM,uBAAuB,GAAI,OAAO,uBAAuB;;;;;;;CAoHzD,CAAC;AAEP,eAAe,uBAAuB,CAAC"}
|