@universityofmaryland/web-elements-library 1.6.17 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (195) hide show
  1. package/README.md +1 -1
  2. package/dist/atomic/animations/brand/card-stack.js +2 -3
  3. package/dist/atomic/animations/brand/card-stack.js.map +1 -1
  4. package/dist/atomic/animations/brand/chevron-flow.d.ts +1 -7
  5. package/dist/atomic/animations/brand/chevron-flow.d.ts.map +1 -1
  6. package/dist/atomic/animations/brand/chevron-flow.js +82 -159
  7. package/dist/atomic/animations/brand/chevron-flow.js.map +1 -1
  8. package/dist/atomic/animations/brand/chevron-scroll.d.ts +1 -4
  9. package/dist/atomic/animations/brand/chevron-scroll.d.ts.map +1 -1
  10. package/dist/atomic/animations/brand/chevron-scroll.js +89 -143
  11. package/dist/atomic/animations/brand/chevron-scroll.js.map +1 -1
  12. package/dist/atomic/assets/image/caption.d.ts +9 -0
  13. package/dist/atomic/assets/image/caption.d.ts.map +1 -0
  14. package/dist/atomic/assets/image/caption.js +166 -0
  15. package/dist/atomic/assets/image/caption.js.map +1 -0
  16. package/dist/atomic/assets/image/gif.d.ts.map +1 -1
  17. package/dist/atomic/assets/image/gif.js +6 -1
  18. package/dist/atomic/assets/image/gif.js.map +1 -1
  19. package/dist/atomic/assets/image/index.d.ts +1 -0
  20. package/dist/atomic/assets/image/index.d.ts.map +1 -1
  21. package/dist/atomic/assets/image/index.js +2 -0
  22. package/dist/atomic/assets/image/index.js.map +1 -1
  23. package/dist/atomic/assets/video/toggle.d.ts.map +1 -1
  24. package/dist/atomic/assets/video/toggle.js +9 -2
  25. package/dist/atomic/assets/video/toggle.js.map +1 -1
  26. package/dist/atomic/buttons/fullscreen.d.ts +1 -0
  27. package/dist/atomic/buttons/fullscreen.d.ts.map +1 -1
  28. package/dist/atomic/buttons/fullscreen.js +35 -3
  29. package/dist/atomic/buttons/fullscreen.js.map +1 -1
  30. package/dist/atomic/layout/overlay/modal.d.ts +1 -10
  31. package/dist/atomic/layout/overlay/modal.d.ts.map +1 -1
  32. package/dist/atomic/layout/overlay/modal.js +28 -44
  33. package/dist/atomic/layout/overlay/modal.js.map +1 -1
  34. package/dist/atomic/layout/person/columns.js +2 -3
  35. package/dist/atomic/layout/person/columns.js.map +1 -1
  36. package/dist/atomic/text-lockup/date.d.ts +1 -4
  37. package/dist/atomic/text-lockup/date.d.ts.map +1 -1
  38. package/dist/atomic/text-lockup/date.js +42 -75
  39. package/dist/atomic/text-lockup/date.js.map +1 -1
  40. package/dist/composite/accordion/item.d.ts +3 -16
  41. package/dist/composite/accordion/item.d.ts.map +1 -1
  42. package/dist/composite/accordion/item.js +152 -245
  43. package/dist/composite/accordion/item.js.map +1 -1
  44. package/dist/composite/card/block.js +2 -3
  45. package/dist/composite/card/block.js.map +1 -1
  46. package/dist/composite/card/event-time.js +2 -3
  47. package/dist/composite/card/event-time.js.map +1 -1
  48. package/dist/composite/card/list.js +2 -3
  49. package/dist/composite/card/list.js.map +1 -1
  50. package/dist/composite/card/overlay/color.js +3 -3
  51. package/dist/composite/card/overlay/icon.js +3 -3
  52. package/dist/composite/card/overlay/image.d.ts.map +1 -1
  53. package/dist/composite/card/overlay/image.js +9 -12
  54. package/dist/composite/card/overlay/image.js.map +1 -1
  55. package/dist/composite/card/video/block.js +4 -3
  56. package/dist/composite/card/video/block.js.map +1 -1
  57. package/dist/composite/carousel/cards/index.d.ts +1 -8
  58. package/dist/composite/carousel/cards/index.d.ts.map +1 -1
  59. package/dist/composite/carousel/cards/index.js +163 -282
  60. package/dist/composite/carousel/cards/index.js.map +1 -1
  61. package/dist/composite/carousel/default/index.d.ts +9 -15
  62. package/dist/composite/carousel/default/index.d.ts.map +1 -1
  63. package/dist/composite/carousel/default/index.js +78 -129
  64. package/dist/composite/carousel/default/index.js.map +1 -1
  65. package/dist/composite/carousel/elements/equal-width-items.d.ts +37 -0
  66. package/dist/composite/carousel/elements/equal-width-items.d.ts.map +1 -0
  67. package/dist/composite/carousel/elements/{blocks.js → equal-width-items.js} +157 -227
  68. package/dist/composite/carousel/elements/equal-width-items.js.map +1 -0
  69. package/dist/composite/carousel/elements/full-screen.d.ts +3 -2
  70. package/dist/composite/carousel/elements/full-screen.d.ts.map +1 -1
  71. package/dist/composite/carousel/elements/full-screen.js +34 -41
  72. package/dist/composite/carousel/elements/full-screen.js.map +1 -1
  73. package/dist/composite/carousel/elements/image.d.ts +15 -2
  74. package/dist/composite/carousel/elements/image.d.ts.map +1 -1
  75. package/dist/composite/carousel/elements/image.js +176 -151
  76. package/dist/composite/carousel/elements/image.js.map +1 -1
  77. package/dist/composite/carousel/elements/index.d.ts +4 -1
  78. package/dist/composite/carousel/elements/index.d.ts.map +1 -1
  79. package/dist/composite/carousel/elements/indicator-wrapper.d.ts +13 -0
  80. package/dist/composite/carousel/elements/indicator-wrapper.d.ts.map +1 -0
  81. package/dist/composite/carousel/elements/indicator-wrapper.js +67 -0
  82. package/dist/composite/carousel/elements/indicator-wrapper.js.map +1 -0
  83. package/dist/composite/carousel/elements/nav-button.d.ts +82 -0
  84. package/dist/composite/carousel/elements/nav-button.d.ts.map +1 -0
  85. package/dist/composite/carousel/elements/nav-button.js +164 -0
  86. package/dist/composite/carousel/elements/nav-button.js.map +1 -0
  87. package/dist/composite/carousel/elements/overlay.d.ts +3 -2
  88. package/dist/composite/carousel/elements/overlay.d.ts.map +1 -1
  89. package/dist/composite/carousel/elements/overlay.js +85 -55
  90. package/dist/composite/carousel/elements/overlay.js.map +1 -1
  91. package/dist/composite/carousel/image/multiple.d.ts +2 -7
  92. package/dist/composite/carousel/image/multiple.d.ts.map +1 -1
  93. package/dist/composite/carousel/image/multiple.js +85 -150
  94. package/dist/composite/carousel/image/multiple.js.map +1 -1
  95. package/dist/composite/carousel/image/standard.d.ts +2 -7
  96. package/dist/composite/carousel/image/standard.d.ts.map +1 -1
  97. package/dist/composite/carousel/image/standard.js +148 -262
  98. package/dist/composite/carousel/image/standard.js.map +1 -1
  99. package/dist/composite/carousel/thumbnail/index.d.ts +1 -8
  100. package/dist/composite/carousel/thumbnail/index.d.ts.map +1 -1
  101. package/dist/composite/carousel/thumbnail/index.js +72 -113
  102. package/dist/composite/carousel/thumbnail/index.js.map +1 -1
  103. package/dist/composite/carousel/wide/container.d.ts +21 -20
  104. package/dist/composite/carousel/wide/container.d.ts.map +1 -1
  105. package/dist/composite/carousel/wide/container.js +37 -12
  106. package/dist/composite/carousel/wide/container.js.map +1 -1
  107. package/dist/composite/carousel/wide/controls.d.ts +5 -10
  108. package/dist/composite/carousel/wide/controls.d.ts.map +1 -1
  109. package/dist/composite/carousel/wide/controls.js +24 -94
  110. package/dist/composite/carousel/wide/controls.js.map +1 -1
  111. package/dist/composite/carousel/wide/frames.d.ts +18 -10
  112. package/dist/composite/carousel/wide/frames.d.ts.map +1 -1
  113. package/dist/composite/carousel/wide/frames.js +60 -78
  114. package/dist/composite/carousel/wide/frames.js.map +1 -1
  115. package/dist/composite/carousel/wide/index.d.ts.map +1 -1
  116. package/dist/composite/carousel/wide/index.js +11 -19
  117. package/dist/composite/carousel/wide/index.js.map +1 -1
  118. package/dist/composite/hero/custom/expand.js +3 -4
  119. package/dist/composite/hero/custom/expand.js.map +1 -1
  120. package/dist/composite/hero/custom/grid.js +2 -3
  121. package/dist/composite/hero/custom/grid.js.map +1 -1
  122. package/dist/composite/hero/custom/video-arrow.js +4 -3
  123. package/dist/composite/hero/custom/video-arrow.js.map +1 -1
  124. package/dist/composite/hero/logo.js +3 -3
  125. package/dist/composite/hero/minimal.js +3 -3
  126. package/dist/composite/hero/overlay.js +5 -4
  127. package/dist/composite/hero/overlay.js.map +1 -1
  128. package/dist/composite/hero/stacked.js +3 -3
  129. package/dist/composite/hero/standard.js +4 -3
  130. package/dist/composite/hero/standard.js.map +1 -1
  131. package/dist/composite/layout/box/logo.d.ts +1 -4
  132. package/dist/composite/layout/box/logo.d.ts.map +1 -1
  133. package/dist/composite/layout/box/logo.js +55 -103
  134. package/dist/composite/layout/box/logo.js.map +1 -1
  135. package/dist/composite/layout/image/expand.d.ts +1 -4
  136. package/dist/composite/layout/image/expand.d.ts.map +1 -1
  137. package/dist/composite/layout/image/expand.js +136 -243
  138. package/dist/composite/layout/image/expand.js.map +1 -1
  139. package/dist/composite/layout/scroll-top/index.d.ts +1 -7
  140. package/dist/composite/layout/scroll-top/index.d.ts.map +1 -1
  141. package/dist/composite/layout/scroll-top/index.js +65 -77
  142. package/dist/composite/layout/scroll-top/index.js.map +1 -1
  143. package/dist/composite/layout/sticky-columns/index.d.ts +2 -2
  144. package/dist/composite/layout/sticky-columns/index.d.ts.map +1 -1
  145. package/dist/composite/layout/sticky-columns/index.js +42 -70
  146. package/dist/composite/layout/sticky-columns/index.js.map +1 -1
  147. package/dist/composite/media/elements/gif.js +3 -3
  148. package/dist/composite/media/inline/caption.d.ts +4 -2
  149. package/dist/composite/media/inline/caption.d.ts.map +1 -1
  150. package/dist/composite/media/inline/caption.js +56 -67
  151. package/dist/composite/media/inline/caption.js.map +1 -1
  152. package/dist/composite/media/inline/index.d.ts +9 -8
  153. package/dist/composite/media/inline/index.d.ts.map +1 -1
  154. package/dist/composite/media/inline/standard.d.ts +1 -4
  155. package/dist/composite/media/inline/standard.d.ts.map +1 -1
  156. package/dist/composite/media/inline/standard.js +16 -24
  157. package/dist/composite/media/inline/standard.js.map +1 -1
  158. package/dist/composite/media/inline/wrapped.d.ts +4 -2
  159. package/dist/composite/media/inline/wrapped.d.ts.map +1 -1
  160. package/dist/composite/media/inline/wrapped.js +80 -83
  161. package/dist/composite/media/inline/wrapped.js.map +1 -1
  162. package/dist/composite/navigation/utility/alert.js +3 -4
  163. package/dist/composite/navigation/utility/alert.js.map +1 -1
  164. package/dist/composite/pathway/_common.js +4 -3
  165. package/dist/composite/pathway/_common.js.map +1 -1
  166. package/dist/composite/pathway/hero.js +3 -3
  167. package/dist/composite/person/bio/full.js +3 -3
  168. package/dist/composite/person/bio/small.js +2 -3
  169. package/dist/composite/person/bio/small.js.map +1 -1
  170. package/dist/composite/person/block.js +2 -3
  171. package/dist/composite/person/block.js.map +1 -1
  172. package/dist/composite/person/hero.js +3 -3
  173. package/dist/composite/person/list.js +2 -3
  174. package/dist/composite/person/list.js.map +1 -1
  175. package/dist/composite/person/tabular.js +2 -3
  176. package/dist/composite/person/tabular.js.map +1 -1
  177. package/dist/composite/slider/events.d.ts +6 -12
  178. package/dist/composite/slider/events.d.ts.map +1 -1
  179. package/dist/composite/slider/events.js +304 -428
  180. package/dist/composite/slider/events.js.map +1 -1
  181. package/dist/layout/image.d.ts +5 -10
  182. package/dist/layout/image.d.ts.map +1 -1
  183. package/dist/layout/image.js +27 -88
  184. package/dist/layout/image.js.map +1 -1
  185. package/dist/layout/index.d.ts +1 -1
  186. package/dist/layout/index.d.ts.map +1 -1
  187. package/dist/layout.js +2 -2
  188. package/package.json +6 -6
  189. package/dist/composite/carousel/elements/blocks.d.ts +0 -42
  190. package/dist/composite/carousel/elements/blocks.d.ts.map +0 -1
  191. package/dist/composite/carousel/elements/blocks.js.map +0 -1
  192. package/dist/composite/carousel/wide/_elementModel.d.ts +0 -18
  193. package/dist/composite/carousel/wide/_elementModel.d.ts.map +0 -1
  194. package/dist/composite/carousel/wide/_elementModel.js +0 -29
  195. package/dist/composite/carousel/wide/_elementModel.js.map +0 -1
@@ -1,125 +1,84 @@
1
1
  import * as token from "@universityofmaryland/web-token-library";
2
- import { createCompositeCarouselBlocks } from "../elements/blocks.js";
3
- import "../elements/full-screen.js";
4
- import "../elements/overlay.js";
5
- import "../elements/image.js";
6
- const ATTRIBUTE_THEME = "data-theme";
7
- const THEME_DARK = "dark";
8
- const IS_THEME_DARK = `[${ATTRIBUTE_THEME}="${THEME_DARK}"]`;
9
- const ELEMENT_NAME = "umd-carousel-thumbnail";
10
- const ELEMENT_THUMBNAIL_DECLARATION = "carousel-thumbnail-declaration";
11
- const ELEMENT_THUMBNAIL_CONTAINER = "carousel-thumbnail-container";
12
- const ELEMENT_PERSON_SLIDE = "carousel-person-slide";
13
- const ELEMENT_CAROUSEL_THUMBNAIL_BUTTON = "carousel-thumbnail-button";
14
- const OVERWRITE_ANIMATION_CAROUSEL_BUTTON = `.${ELEMENT_THUMBNAIL_DECLARATION} .${createCompositeCarouselBlocks.Elements.button}`;
15
- const OVERWRITE_THEME_DARK_CONTAINER = `.${ELEMENT_THUMBNAIL_CONTAINER}${IS_THEME_DARK}`;
16
- const OVERWRITE_THEME_DARK_BUTTON = `.${ELEMENT_THUMBNAIL_CONTAINER}${IS_THEME_DARK} .${ELEMENT_CAROUSEL_THUMBNAIL_BUTTON}`;
17
- const OVERWRITE_THEME_DARK_SLIDE = `.${ELEMENT_THUMBNAIL_CONTAINER}${IS_THEME_DARK} .${ELEMENT_PERSON_SLIDE}`;
18
- const OverwriteThemeDark = `
19
- ${OVERWRITE_THEME_DARK_CONTAINER} {
20
- background-color: ${token.color.black};
21
- }
22
-
23
- ${OVERWRITE_THEME_DARK_BUTTON} {
24
- background-color: ${token.color.black};
25
- }
26
-
27
- ${OVERWRITE_THEME_DARK_BUTTON} > svg {
28
- fill: ${token.color.white};
29
- }
30
-
31
- ${OVERWRITE_THEME_DARK_SLIDE} {
32
- border: 1px solid ${token.color.gray.dark};
33
- border-left: none;
34
- }
35
-
36
- ${OVERWRITE_THEME_DARK_SLIDE}:first-child {
37
- border-left: 1px solid ${token.color.gray.dark};
38
- }
39
- `;
40
- const OverwriteCarouselStyles = `
41
- ${OVERWRITE_ANIMATION_CAROUSEL_BUTTON} {
42
- top: 50%;
43
- transform: translateY(-50%);
44
- }
45
-
46
- ${OVERWRITE_ANIMATION_CAROUSEL_BUTTON}:last-of-type {
47
- left: -${token.spacing.md};
48
- }
49
-
50
- ${OVERWRITE_ANIMATION_CAROUSEL_BUTTON}:first-of-type {
51
- right: -${token.spacing.md};
52
- }
53
- `;
54
- const PersonSlideStyles = `
55
- .${ELEMENT_PERSON_SLIDE} {
56
- border: 1px solid ${token.color.gray.light};
57
- border-left: none;
58
- padding: ${token.spacing.lg};
59
- }
60
-
61
- .${ELEMENT_THUMBNAIL_CONTAINER} .${ELEMENT_PERSON_SLIDE}:first-child {
62
- border-left: 1px solid ${token.color.gray.light};
63
- }
64
- `;
65
- const STYLES_CAROUSEL_THUMBNAIL_ELEMENT = `
66
- .${ELEMENT_THUMBNAIL_DECLARATION} {
67
- container: ${ELEMENT_NAME} / inline-size;
68
- }
69
-
70
- .${ELEMENT_THUMBNAIL_CONTAINER} {
71
- overflow: hidden;
72
- padding: 0 ${token.spacing.md};
73
- }
74
-
75
- ${createCompositeCarouselBlocks.Styles}
76
- ${PersonSlideStyles}
77
- ${OverwriteCarouselStyles}
78
- ${OverwriteThemeDark}
79
- `;
80
- const CreatePerson = ({ block }) => {
81
- const container = document.createElement("div");
82
- container.appendChild(block);
83
- container.classList.add(ELEMENT_PERSON_SLIDE);
84
- return container;
85
- };
2
+ import { ElementBuilder } from "@universityofmaryland/web-builder-library";
3
+ import { createCompositeCarouselBlocks } from "../elements/equal-width-items.js";
4
+ import { buttonColorsOnBlack } from "../elements/nav-button.js";
5
+ import "@universityofmaryland/web-utilities-library/styles";
6
+ import "@universityofmaryland/web-icons-library/controls";
7
+ import "@universityofmaryland/web-styles-library/element";
8
+ import "@universityofmaryland/web-styles-library/layout";
9
+ import "@universityofmaryland/web-styles-library/animation";
10
+ import "@universityofmaryland/web-styles-library/typography";
11
+ import "@universityofmaryland/web-utilities-library/media";
12
+ import "@universityofmaryland/web-utilities-library/dom";
13
+ import "@universityofmaryland/web-icons-library/communication";
14
+ import "@universityofmaryland/web-icons-library/files";
15
+ import "@universityofmaryland/web-icons-library/brand";
16
+ import "@universityofmaryland/web-icons-library/arrows";
17
+ import "@universityofmaryland/web-utilities-library/performance";
18
+ import "../../../atomic/animations/brand/card-stack.js";
19
+ import "@universityofmaryland/web-styles-library";
20
+ import "@universityofmaryland/web-utilities-library/accessibility";
21
+ import "@universityofmaryland/web-icons-library/location";
22
+ import "@universityofmaryland/web-icons-library/calendar";
23
+ import "@universityofmaryland/web-utilities-library/theme";
24
+ import "../../../atomic/layout/block/stacked.js";
25
+ import "../../../atomic/layout/person/columns.js";
26
+ import "@universityofmaryland/web-icons-library/social";
27
+ import "@universityofmaryland/web-utilities-library/string";
28
+ import "@universityofmaryland/web-utilities-library/animation";
29
+ import "../../../atomic/text-lockup/small.js";
30
+ import "@universityofmaryland/web-utilities-library/events";
86
31
  const createCompositeCarouselThumbnail = (props) => (() => {
87
32
  const { blocks, isThemeDark } = props;
88
- const elementDeclaration = document.createElement("div");
89
- const elementContainer = document.createElement("div");
90
- const slide = document.createElement("div");
91
- const blocksWrapper = blocks.map(
92
- (block) => CreatePerson({
93
- block
94
- })
95
- );
33
+ const slide = new ElementBuilder().build().element;
34
+ const CreatePerson = ({ block }) => new ElementBuilder().withClassName("carousel-person-slide").withStyles({
35
+ element: {
36
+ border: `1px solid ${token.color.gray.light}`,
37
+ ...isThemeDark && { border: `1px solid ${token.color.gray.dark}` },
38
+ borderLeft: "none",
39
+ padding: token.spacing.lg,
40
+ "&:first-child": {
41
+ borderLeft: `1px solid ${token.color.gray.light}`,
42
+ ...isThemeDark && { borderLeft: `1px solid ${token.color.gray.dark}` }
43
+ }
44
+ }
45
+ }).withChild(block).build();
46
+ const blocksWrapperModels = blocks.map((block) => CreatePerson({ block }));
47
+ const blocksWrapper = blocksWrapperModels.map((model) => model.element);
48
+ const blocksStyles = blocksWrapperModels[0] ? blocksWrapperModels[0].styles : "";
96
49
  const carousel = createCompositeCarouselBlocks.CreateElement({
97
50
  blocks: blocksWrapper,
98
51
  slide,
99
- overwriteDisplayLogic: {
100
- mobileBreakpoint: 500,
101
- tabletBreakpoint: 900,
102
- desktopBreakpoint: 1200,
103
- desktopCount: 3,
104
- maxCount: 4,
105
- blockGap: 0,
106
- showHint: false,
107
- showMobileHint: false
52
+ mobileBreakpoint: token.media.breakpointValues.medium.min,
53
+ tabletBreakpoint: token.media.breakpointValues.desktop.min,
54
+ desktopBreakpoint: token.media.breakpointValues.highDef.min,
55
+ desktopCount: 3,
56
+ maxCount: 4,
57
+ blockGap: 0,
58
+ showHint: false,
59
+ showMobileHint: false,
60
+ button: {
61
+ outsetOffset: token.spacing.md,
62
+ ...isThemeDark && buttonColorsOnBlack()
108
63
  }
109
64
  });
110
- elementContainer.appendChild(carousel.element);
111
- elementContainer.classList.add(ELEMENT_THUMBNAIL_CONTAINER);
112
- if (isThemeDark) elementContainer.setAttribute(ATTRIBUTE_THEME, THEME_DARK);
113
- elementDeclaration.classList.add(ELEMENT_THUMBNAIL_DECLARATION);
114
- elementDeclaration.appendChild(elementContainer);
115
- return {
116
- element: elementDeclaration,
117
- styles: STYLES_CAROUSEL_THUMBNAIL_ELEMENT,
118
- events: {
119
- reize: carousel.events.resize,
120
- load: carousel.events.load
65
+ const containerModel = new ElementBuilder().withClassName("carousel-thumbnail-container").withStyles({
66
+ element: {
67
+ overflow: "hidden",
68
+ padding: `0 ${token.spacing.md}`,
69
+ ...isThemeDark && { backgroundColor: token.color.black }
70
+ }
71
+ }).withChild(carousel).build();
72
+ const declarationModel = new ElementBuilder().withClassName("carousel-thumbnail-declaration").withStyles({
73
+ element: {
74
+ containerType: "inline-size"
121
75
  }
122
- };
76
+ }).withChild(containerModel).withEvents({
77
+ resize: carousel.events.resize,
78
+ load: carousel.events.load
79
+ }).build();
80
+ declarationModel.styles += blocksStyles;
81
+ return declarationModel;
123
82
  })();
124
83
  export {
125
84
  createCompositeCarouselThumbnail
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../source/composite/carousel/thumbnail/index.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-token-library';\nimport * as carouselElements from '../elements';\n\ntype TypeCarouselThumbnailProps = {\n blocks: HTMLElement[];\n isThemeDark?: boolean;\n};\n\nconst ATTRIBUTE_THEME = 'data-theme';\nconst THEME_DARK = 'dark';\n\nconst IS_THEME_DARK = `[${ATTRIBUTE_THEME}=\"${THEME_DARK}\"]`;\n\nconst ELEMENT_NAME = 'umd-carousel-thumbnail';\nconst ELEMENT_THUMBNAIL_DECLARATION = 'carousel-thumbnail-declaration';\nconst ELEMENT_THUMBNAIL_CONTAINER = 'carousel-thumbnail-container';\nconst ELEMENT_PERSON_SLIDE = 'carousel-person-slide';\nconst ELEMENT_CAROUSEL_THUMBNAIL_BUTTON = 'carousel-thumbnail-button';\n\nconst OVERWRITE_ANIMATION_CAROUSEL_BUTTON = `.${ELEMENT_THUMBNAIL_DECLARATION} .${carouselElements.blocks.Elements.button}`;\n\nconst OVERWRITE_THEME_DARK_CONTAINER = `.${ELEMENT_THUMBNAIL_CONTAINER}${IS_THEME_DARK}`;\nconst OVERWRITE_THEME_DARK_BUTTON = `.${ELEMENT_THUMBNAIL_CONTAINER}${IS_THEME_DARK} .${ELEMENT_CAROUSEL_THUMBNAIL_BUTTON}`;\nconst OVERWRITE_THEME_DARK_SLIDE = `.${ELEMENT_THUMBNAIL_CONTAINER}${IS_THEME_DARK} .${ELEMENT_PERSON_SLIDE}`;\n\n// prettier-ignore\nconst OverwriteThemeDark = `\n ${OVERWRITE_THEME_DARK_CONTAINER} {\n background-color: ${token.color.black};\n }\n\n ${OVERWRITE_THEME_DARK_BUTTON} {\n background-color: ${token.color.black};\n }\n\n ${OVERWRITE_THEME_DARK_BUTTON} > svg {\n fill: ${token.color.white};\n }\n\n ${OVERWRITE_THEME_DARK_SLIDE} {\n border: 1px solid ${token.color.gray.dark};\n border-left: none;\n }\n\n ${OVERWRITE_THEME_DARK_SLIDE}:first-child {\n border-left: 1px solid ${token.color.gray.dark};\n }\n`;\n\n// prettier-ignore\nconst OverwriteCarouselStyles = `\n ${OVERWRITE_ANIMATION_CAROUSEL_BUTTON} {\n top: 50%;\n transform: translateY(-50%);\n }\n\n ${OVERWRITE_ANIMATION_CAROUSEL_BUTTON}:last-of-type {\n left: -${token.spacing.md};\n }\n\n ${OVERWRITE_ANIMATION_CAROUSEL_BUTTON}:first-of-type {\n right: -${token.spacing.md};\n }\n`;\n\n// prettier-ignore\nconst PersonSlideStyles = `\n .${ELEMENT_PERSON_SLIDE} {\n border: 1px solid ${token.color.gray.light};\n border-left: none;\n padding: ${token.spacing.lg};\n }\n\n .${ELEMENT_THUMBNAIL_CONTAINER} .${ELEMENT_PERSON_SLIDE}:first-child {\n border-left: 1px solid ${token.color.gray.light};\n }\n`;\n\n// prettier-ignore\nconst STYLES_CAROUSEL_THUMBNAIL_ELEMENT = `\n .${ELEMENT_THUMBNAIL_DECLARATION} {\n container: ${ELEMENT_NAME} / inline-size;\n }\n\n .${ELEMENT_THUMBNAIL_CONTAINER} {\n overflow: hidden;\n padding: 0 ${token.spacing.md};\n }\n\n ${carouselElements.blocks.Styles}\n ${PersonSlideStyles}\n ${OverwriteCarouselStyles}\n ${OverwriteThemeDark}\n`;\n\nconst CreatePerson = ({ block }: { block: HTMLElement }) => {\n const container = document.createElement('div');\n\n container.appendChild(block);\n container.classList.add(ELEMENT_PERSON_SLIDE);\n\n return container;\n};\n\nexport const createCompositeCarouselThumbnail = (props: TypeCarouselThumbnailProps) =>\n (() => {\n const { blocks, isThemeDark } = props;\n const elementDeclaration = document.createElement('div');\n const elementContainer = document.createElement('div');\n const slide = document.createElement('div');\n const blocksWrapper = blocks.map((block) =>\n CreatePerson({\n block,\n }),\n );\n\n const carousel = carouselElements.blocks.CreateElement({\n blocks: blocksWrapper,\n slide,\n overwriteDisplayLogic: {\n mobileBreakpoint: 500,\n tabletBreakpoint: 900,\n desktopBreakpoint: 1200,\n desktopCount: 3,\n maxCount: 4,\n blockGap: 0,\n showHint: false,\n showMobileHint: false,\n },\n });\n\n elementContainer.appendChild(carousel.element);\n elementContainer.classList.add(ELEMENT_THUMBNAIL_CONTAINER);\n if (isThemeDark) elementContainer.setAttribute(ATTRIBUTE_THEME, THEME_DARK);\n\n elementDeclaration.classList.add(ELEMENT_THUMBNAIL_DECLARATION);\n elementDeclaration.appendChild(elementContainer);\n\n return {\n element: elementDeclaration,\n styles: STYLES_CAROUSEL_THUMBNAIL_ELEMENT,\n events: {\n reize: carousel.events.resize,\n load: carousel.events.load,\n },\n };\n })();\n"],"names":["carouselElements.blocks"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../source/composite/carousel/thumbnail/index.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-token-library';\nimport { ElementBuilder } from '@universityofmaryland/web-builder-library';\nimport * as carouselElements from '../elements';\n\ntype TypeCarouselThumbnailProps = {\n blocks: HTMLElement[];\n isThemeDark?: boolean;\n};\n\nexport const createCompositeCarouselThumbnail = (\n props: TypeCarouselThumbnailProps,\n) =>\n (() => {\n const { blocks, isThemeDark } = props;\n const slide = new ElementBuilder().build().element;\n\n const CreatePerson = ({ block }: { block: HTMLElement }) =>\n new ElementBuilder()\n .withClassName('carousel-person-slide')\n .withStyles({\n element: {\n border: `1px solid ${token.color.gray.light}`,\n ...(isThemeDark && { border: `1px solid ${token.color.gray.dark}` }),\n borderLeft: 'none',\n padding: token.spacing.lg,\n '&:first-child': {\n borderLeft: `1px solid ${token.color.gray.light}`,\n ...(isThemeDark && { borderLeft: `1px solid ${token.color.gray.dark}` }),\n },\n },\n })\n .withChild(block)\n .build();\n\n const blocksWrapperModels = blocks.map((block) => CreatePerson({ block }));\n const blocksWrapper = blocksWrapperModels.map((model) => model.element);\n const blocksStyles = blocksWrapperModels[0] ? blocksWrapperModels[0].styles : '';\n\n const carousel = carouselElements.blocks.CreateElement({\n blocks: blocksWrapper,\n slide,\n mobileBreakpoint: token.media.breakpointValues.medium.min,\n tabletBreakpoint: token.media.breakpointValues.desktop.min,\n desktopBreakpoint: token.media.breakpointValues.highDef.min,\n desktopCount: 3,\n maxCount: 4,\n blockGap: 0,\n showHint: false,\n showMobileHint: false,\n button: {\n outsetOffset: token.spacing.md,\n ...(isThemeDark && carouselElements.buttonColorsOnBlack()),\n },\n });\n\n const containerModel = new ElementBuilder()\n .withClassName('carousel-thumbnail-container')\n .withStyles({\n element: {\n overflow: 'hidden',\n padding: `0 ${token.spacing.md}`,\n ...(isThemeDark && { backgroundColor: token.color.black }),\n },\n })\n .withChild(carousel)\n .build();\n\n const declarationModel = new ElementBuilder()\n .withClassName('carousel-thumbnail-declaration')\n .withStyles({\n element: {\n containerType: 'inline-size',\n },\n })\n .withChild(containerModel)\n .withEvents({\n resize: carousel.events.resize,\n load: carousel.events.load,\n })\n .build();\n\n declarationModel.styles += blocksStyles;\n\n return declarationModel;\n })();\n"],"names":["carouselElements.blocks","carouselElements.buttonColorsOnBlack"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASO,MAAM,mCAAmC,CAC9C,WAEC,MAAM;AACL,QAAM,EAAE,QAAQ,YAAA,IAAgB;AAChC,QAAM,QAAQ,IAAI,iBAAiB,QAAQ;AAE3C,QAAM,eAAe,CAAC,EAAE,YACtB,IAAI,eAAA,EACD,cAAc,uBAAuB,EACrC,WAAW;AAAA,IACV,SAAS;AAAA,MACP,QAAQ,aAAa,MAAM,MAAM,KAAK,KAAK;AAAA,MAC3C,GAAI,eAAe,EAAE,QAAQ,aAAa,MAAM,MAAM,KAAK,IAAI,GAAA;AAAA,MAC/D,YAAY;AAAA,MACZ,SAAS,MAAM,QAAQ;AAAA,MACvB,iBAAiB;AAAA,QACf,YAAY,aAAa,MAAM,MAAM,KAAK,KAAK;AAAA,QAC/C,GAAI,eAAe,EAAE,YAAY,aAAa,MAAM,MAAM,KAAK,IAAI,GAAA;AAAA,MAAG;AAAA,IACxE;AAAA,EACF,CACD,EACA,UAAU,KAAK,EACf,MAAA;AAEL,QAAM,sBAAsB,OAAO,IAAI,CAAC,UAAU,aAAa,EAAE,MAAA,CAAO,CAAC;AACzE,QAAM,gBAAgB,oBAAoB,IAAI,CAAC,UAAU,MAAM,OAAO;AACtE,QAAM,eAAe,oBAAoB,CAAC,IAAI,oBAAoB,CAAC,EAAE,SAAS;AAE9E,QAAM,WAAWA,8BAAwB,cAAc;AAAA,IACrD,QAAQ;AAAA,IACR;AAAA,IACA,kBAAkB,MAAM,MAAM,iBAAiB,OAAO;AAAA,IACtD,kBAAkB,MAAM,MAAM,iBAAiB,QAAQ;AAAA,IACvD,mBAAmB,MAAM,MAAM,iBAAiB,QAAQ;AAAA,IACxD,cAAc;AAAA,IACd,UAAU;AAAA,IACV,UAAU;AAAA,IACV,UAAU;AAAA,IACV,gBAAgB;AAAA,IAChB,QAAQ;AAAA,MACN,cAAc,MAAM,QAAQ;AAAA,MAC5B,GAAI,eAAeC,oBAAiB;AAAA,IAAoB;AAAA,EAC1D,CACD;AAED,QAAM,iBAAiB,IAAI,eAAA,EACxB,cAAc,8BAA8B,EAC5C,WAAW;AAAA,IACV,SAAS;AAAA,MACP,UAAU;AAAA,MACV,SAAS,KAAK,MAAM,QAAQ,EAAE;AAAA,MAC9B,GAAI,eAAe,EAAE,iBAAiB,MAAM,MAAM,MAAA;AAAA,IAAM;AAAA,EAC1D,CACD,EACA,UAAU,QAAQ,EAClB,MAAA;AAEH,QAAM,mBAAmB,IAAI,eAAA,EAC1B,cAAc,gCAAgC,EAC9C,WAAW;AAAA,IACV,SAAS;AAAA,MACP,eAAe;AAAA,IAAA;AAAA,EACjB,CACD,EACA,UAAU,cAAc,EACxB,WAAW;AAAA,IACV,QAAQ,SAAS,OAAO;AAAA,IACxB,MAAM,SAAS,OAAO;AAAA,EAAA,CACvB,EACA,MAAA;AAEH,mBAAiB,UAAU;AAE3B,SAAO;AACT,GAAA;"}
@@ -1,23 +1,24 @@
1
1
  import { CarouselWideProps } from '../_types';
2
- export declare const createContainer: (props: CarouselWideProps, onIndicatorClick?: (index: number) => void) => import('./_elementModel').ElementWithRefsReturn<{
3
- indicator: {
4
- position: (index: number) => void;
5
- element: HTMLElement;
6
- styles: string;
7
- update?: (props: Partial<import('../../../../builder/dist/index.d.ts').BuilderOptions>) => void;
8
- destroy?: () => void;
9
- events?: Record<string, Function>;
2
+ export declare const createContainer: (props: CarouselWideProps, onIndicatorClick?: (index: number) => void) => {
3
+ element: HTMLElement;
4
+ styles: string;
5
+ refs: {
6
+ indicator: {
7
+ element: HTMLElement;
8
+ styles: string;
9
+ position: (index: number) => void;
10
+ };
11
+ slidesContainer: HTMLDivElement;
12
+ slides: HTMLElement[];
13
+ previews: {
14
+ left: HTMLElement;
15
+ right: HTMLElement;
16
+ };
17
+ controls: {
18
+ prev: HTMLButtonElement;
19
+ next: HTMLButtonElement;
20
+ };
21
+ info: HTMLParagraphElement;
10
22
  };
11
- slidesContainer: HTMLDivElement;
12
- slides: HTMLElement[];
13
- previews: {
14
- left: HTMLElement;
15
- right: HTMLElement;
16
- };
17
- controls: {
18
- prev: HTMLButtonElement;
19
- next: HTMLButtonElement;
20
- };
21
- info: HTMLParagraphElement;
22
- }>;
23
+ };
23
24
  //# sourceMappingURL=container.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../../../source/composite/carousel/wide/container.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAuBnD,eAAO,MAAM,eAAe,GAC1B,OAAO,iBAAiB,EACxB,mBAAmB,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;;;;;;;;;;;;;;;;;;;UAuBhB,oBAAoB;EAK/C,CAAC"}
1
+ {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../../../source/composite/carousel/wide/container.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAsBnD,eAAO,MAAM,eAAe,GAC1B,OAAO,iBAAiB,EACxB,mBAAmB,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;;;;;;;;;;;;;;;;;;;cAgEhB,oBAAoB;;CAK/C,CAAC"}
@@ -1,9 +1,9 @@
1
+ import * as token from "@universityofmaryland/web-token-library";
1
2
  import { ElementBuilder } from "@universityofmaryland/web-builder-library";
2
3
  import { createIndicator } from "./controls.js";
3
4
  import { createFramesContainer } from "./frames.js";
4
- import { createElementWithRefs } from "./_elementModel.js";
5
5
  const createAriaLive = () => {
6
- const liveText = new ElementBuilder("p").withClassName("umd-carousel-wide__aria-live").withAttribute("aria-live", "polite").withStyles({
6
+ const liveText = new ElementBuilder("p").withClassName("umd-carousel-wide__aria-live").withClassName("sr-only").withAttribute("aria-live", "polite").withStyles({
7
7
  element: {
8
8
  position: "absolute",
9
9
  left: "-10000px",
@@ -12,7 +12,6 @@ const createAriaLive = () => {
12
12
  overflow: "hidden"
13
13
  }
14
14
  }).withText("Slide 1 Selected").build();
15
- liveText.element.classList.add("sr-only");
16
15
  return liveText;
17
16
  };
18
17
  const createContainer = (props, onIndicatorClick) => {
@@ -26,20 +25,46 @@ const createContainer = (props, onIndicatorClick) => {
26
25
  props.isThemeDark,
27
26
  onIndicatorClick
28
27
  );
29
- return createElementWithRefs({
30
- className: "umd-carousel-wide__container",
31
- children: [info, framesContainer, indicatorWrapper],
32
- elementStyles: {
33
- element: {
34
- position: "relative"
28
+ const buttonWrapperModel = new ElementBuilder().withClassName("umd-carousel-wide__buttons").withStyles({
29
+ element: {
30
+ display: "flex",
31
+ justifyContent: "center",
32
+ gap: token.spacing.min,
33
+ width: "100%",
34
+ marginTop: token.spacing.md,
35
+ marginBottom: token.spacing.md,
36
+ [`@media (${token.media.queries.desktop.min})`]: {
37
+ width: "auto",
38
+ marginTop: 0,
39
+ marginBottom: 0
35
40
  }
36
- },
41
+ }
42
+ }).withChildren(framesContainer.buttons.prev, framesContainer.buttons.next).build();
43
+ const indicatorModel = new ElementBuilder().withClassName("umd-carousel-wide__indicator").withStyles({
44
+ element: {
45
+ width: "100%"
46
+ }
47
+ }).withChild(indicatorWrapper).build();
48
+ const model = new ElementBuilder().withClassName("umd-carousel-wide__container").withStyles({
49
+ element: {
50
+ position: "relative",
51
+ display: "flex",
52
+ flexWrap: "wrap",
53
+ justifyContent: "center",
54
+ [`@media (${token.media.queries.desktop.min})`]: {
55
+ display: "block"
56
+ }
57
+ }
58
+ }).withChildren(info, framesContainer, indicatorModel, buttonWrapperModel).build();
59
+ return {
60
+ element: model.element,
61
+ styles: model.styles,
37
62
  refs: {
38
63
  info: info.element,
39
64
  ...framesContainer.refs,
40
- indicator: indicatorWrapper.refs.indicator
65
+ indicator: indicatorWrapper
41
66
  }
42
- });
67
+ };
43
68
  };
44
69
  export {
45
70
  createContainer
@@ -1 +1 @@
1
- {"version":3,"file":"container.js","sources":["../../../../source/composite/carousel/wide/container.ts"],"sourcesContent":["import { ElementBuilder } from '@universityofmaryland/web-builder-library';\nimport { createIndicator } from './controls';\nimport { createFramesContainer } from './frames';\nimport { createElementWithRefs } from './_elementModel';\nimport { type CarouselWideProps } from '../_types';\n\nconst createAriaLive = () => {\n const liveText = new ElementBuilder('p')\n .withClassName('umd-carousel-wide__aria-live')\n .withAttribute('aria-live', 'polite')\n .withStyles({\n element: {\n position: 'absolute',\n left: '-10000px',\n width: '1px',\n height: '1px',\n overflow: 'hidden',\n },\n })\n .withText('Slide 1 Selected')\n .build();\n\n liveText.element.classList.add('sr-only');\n\n return liveText;\n};\n\nexport const createContainer = (\n props: CarouselWideProps,\n onIndicatorClick?: (index: number) => void,\n) => {\n const info = createAriaLive();\n const framesContainer = createFramesContainer(\n props.slides,\n props.isThemeDark,\n );\n\n const indicatorWrapper = createIndicator(\n props.slides,\n props.isThemeDark,\n onIndicatorClick,\n );\n\n return createElementWithRefs({\n className: 'umd-carousel-wide__container',\n children: [info, framesContainer, indicatorWrapper],\n elementStyles: {\n element: {\n position: 'relative',\n },\n },\n refs: {\n info: info.element as HTMLParagraphElement,\n ...framesContainer.refs,\n indicator: indicatorWrapper.refs.indicator,\n },\n });\n};\n"],"names":[],"mappings":";;;;AAMA,MAAM,iBAAiB,MAAM;AAC3B,QAAM,WAAW,IAAI,eAAe,GAAG,EACpC,cAAc,8BAA8B,EAC5C,cAAc,aAAa,QAAQ,EACnC,WAAW;AAAA,IACV,SAAS;AAAA,MACP,UAAU;AAAA,MACV,MAAM;AAAA,MACN,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,UAAU;AAAA,IAAA;AAAA,EACZ,CACD,EACA,SAAS,kBAAkB,EAC3B,MAAA;AAEH,WAAS,QAAQ,UAAU,IAAI,SAAS;AAExC,SAAO;AACT;AAEO,MAAM,kBAAkB,CAC7B,OACA,qBACG;AACH,QAAM,OAAO,eAAA;AACb,QAAM,kBAAkB;AAAA,IACtB,MAAM;AAAA,IACN,MAAM;AAAA,EAAA;AAGR,QAAM,mBAAmB;AAAA,IACvB,MAAM;AAAA,IACN,MAAM;AAAA,IACN;AAAA,EAAA;AAGF,SAAO,sBAAsB;AAAA,IAC3B,WAAW;AAAA,IACX,UAAU,CAAC,MAAM,iBAAiB,gBAAgB;AAAA,IAClD,eAAe;AAAA,MACb,SAAS;AAAA,QACP,UAAU;AAAA,MAAA;AAAA,IACZ;AAAA,IAEF,MAAM;AAAA,MACJ,MAAM,KAAK;AAAA,MACX,GAAG,gBAAgB;AAAA,MACnB,WAAW,iBAAiB,KAAK;AAAA,IAAA;AAAA,EACnC,CACD;AACH;"}
1
+ {"version":3,"file":"container.js","sources":["../../../../source/composite/carousel/wide/container.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-token-library';\nimport { ElementBuilder } from '@universityofmaryland/web-builder-library';\nimport { createIndicator } from './controls';\nimport { createFramesContainer } from './frames';\nimport { type CarouselWideProps } from '../_types';\n\nconst createAriaLive = () => {\n const liveText = new ElementBuilder('p')\n .withClassName('umd-carousel-wide__aria-live')\n .withClassName('sr-only')\n .withAttribute('aria-live', 'polite')\n .withStyles({\n element: {\n position: 'absolute',\n left: '-10000px',\n width: '1px',\n height: '1px',\n overflow: 'hidden',\n },\n })\n .withText('Slide 1 Selected')\n .build();\n\n return liveText;\n};\n\nexport const createContainer = (\n props: CarouselWideProps,\n onIndicatorClick?: (index: number) => void,\n) => {\n const info = createAriaLive();\n const framesContainer = createFramesContainer(\n props.slides,\n props.isThemeDark,\n );\n\n const indicatorWrapper = createIndicator(\n props.slides,\n props.isThemeDark,\n onIndicatorClick,\n );\n\n const buttonWrapperModel = new ElementBuilder()\n .withClassName('umd-carousel-wide__buttons')\n .withStyles({\n element: {\n display: 'flex',\n justifyContent: 'center',\n gap: token.spacing.min,\n width: '100%',\n marginTop: token.spacing.md,\n marginBottom: token.spacing.md,\n [`@media (${token.media.queries.desktop.min})`]: {\n width: 'auto',\n marginTop: 0,\n marginBottom: 0,\n },\n },\n })\n .withChildren(framesContainer.buttons.prev, framesContainer.buttons.next)\n .build();\n\n const indicatorModel = new ElementBuilder()\n .withClassName('umd-carousel-wide__indicator')\n .withStyles({\n element: {\n width: '100%',\n },\n })\n .withChild(indicatorWrapper)\n .build();\n\n const model = new ElementBuilder()\n .withClassName('umd-carousel-wide__container')\n .withStyles({\n element: {\n position: 'relative',\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'center',\n [`@media (${token.media.queries.desktop.min})`]: {\n display: 'block',\n },\n },\n })\n .withChildren(info, framesContainer, indicatorModel, buttonWrapperModel)\n .build();\n\n return {\n element: model.element,\n styles: model.styles,\n refs: {\n info: info.element as HTMLParagraphElement,\n ...framesContainer.refs,\n indicator: indicatorWrapper,\n },\n };\n};\n"],"names":[],"mappings":";;;;AAMA,MAAM,iBAAiB,MAAM;AAC3B,QAAM,WAAW,IAAI,eAAe,GAAG,EACpC,cAAc,8BAA8B,EAC5C,cAAc,SAAS,EACvB,cAAc,aAAa,QAAQ,EACnC,WAAW;AAAA,IACV,SAAS;AAAA,MACP,UAAU;AAAA,MACV,MAAM;AAAA,MACN,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,UAAU;AAAA,IAAA;AAAA,EACZ,CACD,EACA,SAAS,kBAAkB,EAC3B,MAAA;AAEH,SAAO;AACT;AAEO,MAAM,kBAAkB,CAC7B,OACA,qBACG;AACH,QAAM,OAAO,eAAA;AACb,QAAM,kBAAkB;AAAA,IACtB,MAAM;AAAA,IACN,MAAM;AAAA,EAAA;AAGR,QAAM,mBAAmB;AAAA,IACvB,MAAM;AAAA,IACN,MAAM;AAAA,IACN;AAAA,EAAA;AAGF,QAAM,qBAAqB,IAAI,eAAA,EAC5B,cAAc,4BAA4B,EAC1C,WAAW;AAAA,IACV,SAAS;AAAA,MACP,SAAS;AAAA,MACT,gBAAgB;AAAA,MAChB,KAAK,MAAM,QAAQ;AAAA,MACnB,OAAO;AAAA,MACP,WAAW,MAAM,QAAQ;AAAA,MACzB,cAAc,MAAM,QAAQ;AAAA,MAC5B,CAAC,WAAW,MAAM,MAAM,QAAQ,QAAQ,GAAG,GAAG,GAAG;AAAA,QAC/C,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc;AAAA,MAAA;AAAA,IAChB;AAAA,EACF,CACD,EACA,aAAa,gBAAgB,QAAQ,MAAM,gBAAgB,QAAQ,IAAI,EACvE,MAAA;AAEH,QAAM,iBAAiB,IAAI,eAAA,EACxB,cAAc,8BAA8B,EAC5C,WAAW;AAAA,IACV,SAAS;AAAA,MACP,OAAO;AAAA,IAAA;AAAA,EACT,CACD,EACA,UAAU,gBAAgB,EAC1B,MAAA;AAEH,QAAM,QAAQ,IAAI,eAAA,EACf,cAAc,8BAA8B,EAC5C,WAAW;AAAA,IACV,SAAS;AAAA,MACP,UAAU;AAAA,MACV,SAAS;AAAA,MACT,UAAU;AAAA,MACV,gBAAgB;AAAA,MAChB,CAAC,WAAW,MAAM,MAAM,QAAQ,QAAQ,GAAG,GAAG,GAAG;AAAA,QAC/C,SAAS;AAAA,MAAA;AAAA,IACX;AAAA,EACF,CACD,EACA,aAAa,MAAM,iBAAiB,gBAAgB,kBAAkB,EACtE,MAAA;AAEH,SAAO;AAAA,IACL,SAAS,MAAM;AAAA,IACf,QAAQ,MAAM;AAAA,IACd,MAAM;AAAA,MACJ,MAAM,KAAK;AAAA,MACX,GAAG,gBAAgB;AAAA,MACnB,WAAW;AAAA,IAAA;AAAA,EACb;AAEJ;"}
@@ -1,13 +1,8 @@
1
1
  import { CarouselWideProps } from '../_types';
2
2
  export declare const createControlButton: (type: "prev" | "next", isThemeDark?: boolean) => import('../../../../builder/dist/index.d.ts').ElementModel<HTMLElement>;
3
- export declare const createIndicator: (slides: CarouselWideProps["slides"], isThemeDark?: boolean, callback?: (index: number) => void) => import('./_elementModel').ElementWithRefsReturn<{
4
- indicator: {
5
- position: (index: number) => void;
6
- element: HTMLElement;
7
- styles: string;
8
- update?: (props: Partial<import('../../../../builder/dist/index.d.ts').BuilderOptions>) => void;
9
- destroy?: () => void;
10
- events?: Record<string, Function>;
11
- };
12
- }>;
3
+ export declare const createIndicator: (slides: CarouselWideProps["slides"], isThemeDark?: boolean, callback?: (index: number) => void) => {
4
+ element: HTMLElement;
5
+ styles: string;
6
+ position: (index: number) => void;
7
+ };
13
8
  //# sourceMappingURL=controls.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"controls.d.ts","sourceRoot":"","sources":["../../../../source/composite/carousel/wide/controls.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAEnD,eAAO,MAAM,mBAAmB,GAC9B,MAAM,MAAM,GAAG,MAAM,EACrB,cAAc,OAAO,kFAkFtB,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,QAAQ,iBAAiB,CAAC,QAAQ,CAAC,EACnC,cAAc,OAAO,EACrB,WAAW,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;;;;;;;;;EA4BnC,CAAC"}
1
+ {"version":3,"file":"controls.d.ts","sourceRoot":"","sources":["../../../../source/composite/carousel/wide/controls.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAEnD,eAAO,MAAM,mBAAmB,GAC9B,MAAM,MAAM,GAAG,MAAM,EACrB,cAAc,OAAO,kFAyCtB,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,QAAQ,iBAAiB,CAAC,QAAQ,CAAC,EACnC,cAAc,OAAO,EACrB,WAAW,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;;;;CAQnC,CAAC"}
@@ -1,117 +1,47 @@
1
- import { ElementBuilder } from "@universityofmaryland/web-builder-library";
2
1
  import * as token from "@universityofmaryland/web-token-library";
3
- import { arrow_left } from "@universityofmaryland/web-icons-library/arrows";
4
- import "@universityofmaryland/web-styles-library/element";
5
- import "@universityofmaryland/web-styles-library/layout";
6
- import "@universityofmaryland/web-styles-library/animation";
7
- import "@universityofmaryland/web-styles-library/typography";
8
- import "@universityofmaryland/web-utilities-library/media";
9
- import "@universityofmaryland/web-utilities-library/dom";
10
- import "@universityofmaryland/web-icons-library/controls";
11
- import "@universityofmaryland/web-icons-library/communication";
12
- import "@universityofmaryland/web-icons-library/files";
13
- import "@universityofmaryland/web-icons-library/brand";
14
- import { createAnimationIndicator } from "../../../atomic/animations/actions/indicator.js";
15
- import "../../../atomic/animations/brand/chevron-scroll.js";
16
- import "../../../atomic/animations/brand/card-stack.js";
17
- import "@universityofmaryland/web-styles-library";
18
- import "@universityofmaryland/web-utilities-library/performance";
19
- import "@universityofmaryland/web-utilities-library/accessibility";
20
- import "@universityofmaryland/web-icons-library/location";
21
- import "@universityofmaryland/web-icons-library/calendar";
22
- import "@universityofmaryland/web-utilities-library/theme";
23
- import "../../../atomic/layout/block/stacked.js";
24
- import "../../../atomic/layout/overlay/modal.js";
25
- import "../../../atomic/layout/person/columns.js";
26
- import "@universityofmaryland/web-icons-library/social";
27
- import "../../../atomic/text-lockup/date.js";
28
- import "../../../atomic/text-lockup/small.js";
29
- import { createElementWithRefs } from "./_elementModel.js";
2
+ import { createCarouselIndicatorWrapper } from "../elements/indicator-wrapper.js";
3
+ import { createCarouselNavButton, buttonColorsOnWhite } from "../elements/nav-button.js";
30
4
  const createControlButton = (type, isThemeDark) => {
31
5
  const isPrev = type === "prev";
32
- const altText = isPrev ? "Reverse to the previous Slide" : "Advanced to the Next Slide";
33
- const buttonTabletPosition = `calc(10vw - (${token.spacing.md} + ${token.spacing.md}))`;
6
+ `calc(10vw - (${token.spacing.md} + ${token.spacing.md}))`;
34
7
  const buttonDesktopPosition = `calc(15vw - (${token.spacing["xl"]} + ${token.spacing.md}))`;
35
8
  const buttonHighPosition = `calc(20vw - (${token.spacing["xl"]} + ${token.spacing.md}))`;
36
- const srText = new ElementBuilder("span").withClassName("sr-only").withText(altText).build();
37
- const button = new ElementBuilder("button").withClassName(
38
- isPrev ? "umd-carousel-wide__control--prev" : "umd-carousel-wide__control--next"
39
- ).withStyles({
9
+ return createCarouselNavButton({
10
+ className: isPrev ? "umd-carousel-wide__control--prev" : "umd-carousel-wide__control--next",
11
+ direction: type,
12
+ label: isPrev ? "Go to previous slide" : "Go to next slide"
13
+ }).withStyles({
40
14
  element: {
41
- backgroundColor: isThemeDark ? token.color.red : token.color.white,
42
- height: token.spacing.lg,
43
15
  padding: token.spacing.min,
44
- position: "absolute",
45
- transform: `${isPrev ? " rotate(180deg)" : ""}`,
16
+ position: "relative",
17
+ top: "auto",
18
+ bottom: "auto",
19
+ left: "auto",
20
+ right: "auto",
46
21
  zIndex: 3,
47
22
  transition: "background 0.5s",
48
- width: token.spacing.lg,
49
- [`@media (${token.media.queries.large.max})`]: {
50
- top: `calc(22vw + ${token.spacing.sm})`,
51
- left: isPrev ? "auto" : `${token.spacing["xl"]}`,
52
- right: isPrev ? `${token.spacing["xl"]}` : "auto"
53
- },
54
- [`@media (${token.media.queries.tablet.min})`]: {
55
- boxShadow: "0 0 5px 0 rgba(0, 0, 0, 0.4)",
56
- left: isPrev ? "auto" : buttonTabletPosition,
57
- right: isPrev ? buttonTabletPosition : "auto",
58
- bottom: "35%"
59
- },
23
+ ...buttonColorsOnWhite(isThemeDark),
60
24
  [`@media (${token.media.queries.desktop.min})`]: {
61
- width: token.spacing["2xl"],
62
- height: token.spacing["2xl"],
25
+ position: "absolute",
26
+ boxShadow: "0 0 5px 0 rgba(0, 0, 0, 0.4)",
63
27
  padding: token.spacing.xs,
64
- left: isPrev ? "auto" : buttonDesktopPosition,
65
- right: isPrev ? buttonDesktopPosition : "auto"
28
+ left: isPrev ? buttonDesktopPosition : "auto",
29
+ right: isPrev ? "auto" : buttonDesktopPosition,
30
+ bottom: "35%"
66
31
  },
67
32
  [`@media (${token.media.queries.highDef.min})`]: {
68
- left: isPrev ? "auto" : buttonHighPosition,
69
- right: isPrev ? buttonHighPosition : "auto"
70
- },
71
- "& svg": {
72
- height: "100%",
73
- width: "100%",
74
- fill: isThemeDark ? token.color.white : token.color.black,
75
- transition: "fill 0.5s"
76
- },
77
- "&:hover, &:focus": {
78
- backgroundColor: isThemeDark ? token.color.redDark : token.color.red,
79
- "& svg": {
80
- fill: token.color.white
81
- }
33
+ left: isPrev ? buttonHighPosition : "auto",
34
+ right: isPrev ? "auto" : buttonHighPosition
82
35
  }
83
36
  }
84
- }).withModifier((el) => {
85
- el.append(srText.element);
86
- el.insertAdjacentHTML("afterbegin", arrow_left);
87
37
  }).build();
88
- return button;
89
38
  };
90
39
  const createIndicator = (slides, isThemeDark, callback) => {
91
- const indicator = createAnimationIndicator({
40
+ return createCarouselIndicatorWrapper({
92
41
  count: slides.length,
93
42
  isThemeDark,
94
- callback: callback || (() => {
95
- })
96
- });
97
- return createElementWithRefs({
98
- className: "umd-carousel-wide__drawer",
99
- children: [indicator],
100
- elementStyles: {
101
- element: {
102
- display: "flex",
103
- justifyContent: "center",
104
- margin: "auto",
105
- padding: token.spacing.md,
106
- [`@media (${token.media.queries.tablet.min})`]: {
107
- padding: 0,
108
- paddingTop: token.spacing.lg
109
- }
110
- }
111
- },
112
- refs: {
113
- indicator
114
- }
43
+ isBackground: false,
44
+ callback
115
45
  });
116
46
  };
117
47
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"controls.js","sources":["../../../../source/composite/carousel/wide/controls.ts"],"sourcesContent":["import { ElementBuilder } from '@universityofmaryland/web-builder-library';\nimport * as token from '@universityofmaryland/web-token-library';\nimport { arrow_left as iconArrowLeft } from '@universityofmaryland/web-icons-library/arrows';\nimport { animations } from 'atomic';\nimport { createElementWithRefs } from './_elementModel';\nimport { type CarouselWideProps } from '../_types';\n\nexport const createControlButton = (\n type: 'prev' | 'next',\n isThemeDark?: boolean,\n) => {\n const isPrev = type === 'prev';\n const altText = isPrev\n ? 'Reverse to the previous Slide'\n : 'Advanced to the Next Slide';\n\n const buttonTabletPosition = `calc(10vw - (${token.spacing.md} + ${token.spacing.md}))`;\n const buttonDesktopPosition = `calc(15vw - (${token.spacing['xl']} + ${token.spacing.md}))`;\n const buttonHighPosition = `calc(20vw - (${token.spacing['xl']} + ${token.spacing.md}))`;\n\n const srText = new ElementBuilder('span')\n .withClassName('sr-only')\n .withText(altText)\n .build();\n\n const button = new ElementBuilder('button')\n .withClassName(\n isPrev\n ? 'umd-carousel-wide__control--prev'\n : 'umd-carousel-wide__control--next',\n )\n .withStyles({\n element: {\n backgroundColor: isThemeDark ? token.color.red : token.color.white,\n height: token.spacing.lg,\n padding: token.spacing.min,\n position: 'absolute',\n transform: `${isPrev ? ' rotate(180deg)' : ''}`,\n zIndex: 3,\n transition: 'background 0.5s',\n width: token.spacing.lg,\n\n [`@media (${token.media.queries.large.max})`]: {\n top: `calc(22vw + ${token.spacing.sm})`,\n left: isPrev ? 'auto' : `${token.spacing['xl']}`,\n right: isPrev ? `${token.spacing['xl']}` : 'auto',\n },\n\n [`@media (${token.media.queries.tablet.min})`]: {\n boxShadow: '0 0 5px 0 rgba(0, 0, 0, 0.4)',\n left: isPrev ? 'auto' : buttonTabletPosition,\n right: isPrev ? buttonTabletPosition : 'auto',\n bottom: '35%',\n },\n\n [`@media (${token.media.queries.desktop.min})`]: {\n width: token.spacing['2xl'],\n height: token.spacing['2xl'],\n padding: token.spacing.xs,\n left: isPrev ? 'auto' : buttonDesktopPosition,\n right: isPrev ? buttonDesktopPosition : 'auto',\n },\n\n [`@media (${token.media.queries.highDef.min})`]: {\n left: isPrev ? 'auto' : buttonHighPosition,\n right: isPrev ? buttonHighPosition : 'auto',\n },\n\n '& svg': {\n height: '100%',\n width: '100%',\n fill: isThemeDark ? token.color.white : token.color.black,\n transition: 'fill 0.5s',\n },\n\n '&:hover, &:focus': {\n backgroundColor: isThemeDark ? token.color.redDark : token.color.red,\n\n '& svg': {\n fill: token.color.white,\n },\n },\n },\n })\n .withModifier((el) => {\n el.append(srText.element);\n el.insertAdjacentHTML('afterbegin', iconArrowLeft);\n })\n .build();\n\n return button;\n};\n\nexport const createIndicator = (\n slides: CarouselWideProps['slides'],\n isThemeDark?: boolean,\n callback?: (index: number) => void,\n) => {\n const indicator = animations.actions.indicator({\n count: slides.length,\n isThemeDark,\n callback: callback || (() => {}),\n });\n\n return createElementWithRefs({\n className: 'umd-carousel-wide__drawer',\n children: [indicator],\n elementStyles: {\n element: {\n display: 'flex',\n justifyContent: 'center',\n margin: 'auto',\n padding: token.spacing.md,\n\n [`@media (${token.media.queries.tablet.min})`]: {\n padding: 0,\n paddingTop: token.spacing.lg,\n },\n },\n },\n refs: {\n indicator,\n },\n });\n};\n"],"names":["iconArrowLeft","animations.actions.indicator"],"mappings":"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"}
1
+ {"version":3,"file":"controls.js","sources":["../../../../source/composite/carousel/wide/controls.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-token-library';\nimport { createCarouselIndicatorWrapper } from '../elements/indicator-wrapper';\nimport { createCarouselNavButton, buttonColorsOnWhite } from '../elements/nav-button';\nimport { type CarouselWideProps } from '../_types';\n\nexport const createControlButton = (\n type: 'prev' | 'next',\n isThemeDark?: boolean,\n) => {\n const isPrev = type === 'prev';\n const buttonTabletPosition = `calc(10vw - (${token.spacing.md} + ${token.spacing.md}))`;\n const buttonDesktopPosition = `calc(15vw - (${token.spacing['xl']} + ${token.spacing.md}))`;\n const buttonHighPosition = `calc(20vw - (${token.spacing['xl']} + ${token.spacing.md}))`;\n return createCarouselNavButton({\n className: isPrev ? 'umd-carousel-wide__control--prev' : 'umd-carousel-wide__control--next',\n direction: type,\n label: isPrev ? 'Go to previous slide' : 'Go to next slide',\n })\n .withStyles({\n element: {\n padding: token.spacing.min,\n position: 'relative',\n top: 'auto',\n bottom: 'auto',\n left: 'auto',\n right: 'auto',\n zIndex: 3,\n transition: 'background 0.5s',\n ...buttonColorsOnWhite(isThemeDark),\n\n [`@media (${token.media.queries.desktop.min})`]: {\n position: 'absolute',\n boxShadow: '0 0 5px 0 rgba(0, 0, 0, 0.4)',\n padding: token.spacing.xs,\n left: isPrev ? buttonDesktopPosition : 'auto',\n right: isPrev ? 'auto' : buttonDesktopPosition,\n bottom: '35%',\n },\n\n [`@media (${token.media.queries.highDef.min})`]: {\n left: isPrev ? buttonHighPosition : 'auto',\n right: isPrev ? 'auto' : buttonHighPosition,\n },\n\n\n },\n })\n .build();\n};\n\nexport const createIndicator = (\n slides: CarouselWideProps['slides'],\n isThemeDark?: boolean,\n callback?: (index: number) => void,\n) => {\n return createCarouselIndicatorWrapper({\n count: slides.length,\n isThemeDark,\n isBackground: false,\n callback,\n });\n};\n"],"names":[],"mappings":";;;AAKO,MAAM,sBAAsB,CACjC,MACA,gBACG;AACH,QAAM,SAAS,SAAS;AACK,kBAAgB,MAAM,QAAQ,EAAE,MAAM,MAAM,QAAQ,EAAE;AACnF,QAAM,wBAAwB,gBAAgB,MAAM,QAAQ,IAAI,CAAC,MAAM,MAAM,QAAQ,EAAE;AACvF,QAAM,qBAAqB,gBAAgB,MAAM,QAAQ,IAAI,CAAC,MAAM,MAAM,QAAQ,EAAE;AACpF,SAAO,wBAAwB;AAAA,IAC7B,WAAW,SAAS,qCAAqC;AAAA,IACzD,WAAW;AAAA,IACX,OAAO,SAAS,yBAAyB;AAAA,EAAA,CAC1C,EACE,WAAW;AAAA,IACV,SAAS;AAAA,MACP,SAAS,MAAM,QAAQ;AAAA,MACvB,UAAU;AAAA,MACV,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,GAAG,oBAAoB,WAAW;AAAA,MAElC,CAAC,WAAW,MAAM,MAAM,QAAQ,QAAQ,GAAG,GAAG,GAAG;AAAA,QAC/C,UAAU;AAAA,QACV,WAAW;AAAA,QACX,SAAS,MAAM,QAAQ;AAAA,QACvB,MAAM,SAAS,wBAAwB;AAAA,QACvC,OAAO,SAAS,SAAS;AAAA,QACzB,QAAQ;AAAA,MAAA;AAAA,MAGV,CAAC,WAAW,MAAM,MAAM,QAAQ,QAAQ,GAAG,GAAG,GAAG;AAAA,QAC/C,MAAM,SAAS,qBAAqB;AAAA,QACpC,OAAO,SAAS,SAAS;AAAA,MAAA;AAAA,IAC3B;AAAA,EAGF,CACD,EACA,MAAA;AACL;AAEO,MAAM,kBAAkB,CAC7B,QACA,aACA,aACG;AACH,SAAO,+BAA+B;AAAA,IACpC,OAAO,OAAO;AAAA,IACd;AAAA,IACA,cAAc;AAAA,IACd;AAAA,EAAA,CACD;AACH;"}
@@ -1,14 +1,22 @@
1
1
  import { CarouselWideProps } from '../_types';
2
- export declare const createFramesContainer: (slides: CarouselWideProps["slides"], isThemeDark?: boolean) => import('./_elementModel').ElementWithRefsReturn<{
3
- slidesContainer: HTMLDivElement;
4
- slides: HTMLElement[];
5
- previews: {
6
- left: HTMLElement;
7
- right: HTMLElement;
2
+ export declare const createFramesContainer: (slides: CarouselWideProps["slides"], isThemeDark?: boolean) => {
3
+ element: HTMLElement;
4
+ styles: string;
5
+ buttons: {
6
+ prev: import('../../../../builder/dist/index.d.ts').ElementModel<HTMLElement>;
7
+ next: import('../../../../builder/dist/index.d.ts').ElementModel<HTMLElement>;
8
8
  };
9
- controls: {
10
- prev: HTMLButtonElement;
11
- next: HTMLButtonElement;
9
+ refs: {
10
+ slidesContainer: HTMLDivElement;
11
+ slides: HTMLElement[];
12
+ previews: {
13
+ left: HTMLElement;
14
+ right: HTMLElement;
15
+ };
16
+ controls: {
17
+ prev: HTMLButtonElement;
18
+ next: HTMLButtonElement;
19
+ };
12
20
  };
13
- }>;
21
+ };
14
22
  //# sourceMappingURL=frames.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"frames.d.ts","sourceRoot":"","sources":["../../../../source/composite/carousel/wide/frames.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AA2SnD,eAAO,MAAM,qBAAqB,GAChC,QAAQ,iBAAiB,CAAC,QAAQ,CAAC,EACnC,cAAc,OAAO;qBA4CmC,cAAc;;;cAGnC,WAAW;eACT,WAAW;;;cAGV,iBAAiB;cACrB,iBAAiB;;EAIpD,CAAC"}
1
+ {"version":3,"file":"frames.d.ts","sourceRoot":"","sources":["../../../../source/composite/carousel/wide/frames.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAuRnD,eAAO,MAAM,qBAAqB,GAChC,QAAQ,iBAAiB,CAAC,QAAQ,CAAC,EACnC,cAAc,OAAO;;;;;;;;yBA+CyB,cAAc;;;kBAGzB,WAAW;mBACT,WAAW;;;kBAGV,iBAAiB;kBACrB,iBAAiB;;;CAIpD,CAAC"}