@universityofmaryland/web-components-library 1.17.3 → 1.17.4

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  # University of Maryland Web Components Library
2
2
 
3
- [![Components Version](https://img.shields.io/badge/Components-v1.17.3-blue)](https://www.npmjs.com/package/@universityofmaryland/web-components-library)
3
+ [![Components Version](https://img.shields.io/badge/Components-v1.17.4-blue)](https://www.npmjs.com/package/@universityofmaryland/web-components-library)
4
4
 
5
5
  High-level web components built on the UMD Elements Library, providing feature-rich, accessible, and brand-compliant UI components for University of Maryland digital experiences.
6
6
 
@@ -1,10 +1,10 @@
1
1
  import { events as c } from "@universityofmaryland/web-elements-library/atomic";
2
2
  import * as s from "@universityofmaryland/web-utilities-library/date";
3
- import { Attributes as r, Slots as i } from "@universityofmaryland/web-model-library";
3
+ import { Slots as r, Attributes as i } from "@universityofmaryland/web-model-library";
4
4
  const m = (t) => ({
5
- startDate: t.querySelector(`[slot="${i.name.DATE_START_ISO}"]`),
6
- endDate: t.querySelector(`[slot="${i.name.DATE_END_ISO}"]`),
7
- location: t.querySelector(`[slot="${i.name.contact.location}"]`)
5
+ startDate: t.querySelector(`[slot="${r.name.DATE_START_ISO}"]`),
6
+ endDate: t.querySelector(`[slot="${r.name.DATE_END_ISO}"]`),
7
+ location: t.querySelector(`[slot="${r.name.contact.location}"]`)
8
8
  }), D = (t) => {
9
9
  const e = s.parseDateFromElement({ element: t.startDate });
10
10
  if (!e)
@@ -21,8 +21,8 @@ const m = (t) => ({
21
21
  locationElement: t.location
22
22
  };
23
23
  }, E = (t) => ({
24
- isThemeDark: r.isTheme.dark({ element: t }) || r.isTheme.maryland({ element: t }),
25
- showTime: r.isVisual.showTime({ element: t })
24
+ isThemeDark: i.isTheme.dark({ element: t }) || i.isTheme.maryland({ element: t }),
25
+ showTime: i.isVisual.showTime({ element: t })
26
26
  }), u = (t, e = {}) => {
27
27
  const {
28
28
  isThemeDark: a = !1,
@@ -55,4 +55,4 @@ const m = (t) => ({
55
55
  export {
56
56
  S as e
57
57
  };
58
- //# sourceMappingURL=_event-Duz7QGRD.js.map
58
+ //# sourceMappingURL=_event-B6QDfDPW.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_event-Duz7QGRD.js","sources":["../source/web-components/_event.ts"],"sourcesContent":["import { events } from '@universityofmaryland/web-elements-library/atomic';\nimport * as date from '@universityofmaryland/web-utilities-library/date';\nimport { Attributes, Slots } from '@universityofmaryland/web-model-library';\n\n/**\n * Configuration options for creating event components\n */\ninterface EventComponentOptions {\n /** Whether to use dark theme for event details */\n isThemeDark?: boolean;\n /** Whether to show time in event details */\n showTime?: boolean;\n /** Whether to use large size for date sign */\n isLargeSize?: boolean;\n /** Whether to use dark theme for date sign (separate from event details) */\n isDateSignDark?: boolean;\n}\n\n/**\n * Parsed event data ready for component creation\n */\ninterface ParsedEventData {\n /** Processed date and location data from Markup.event.createDetailsData */\n detailsData: ReturnType<typeof date.createEventDetails>;\n /** Parsed start date object */\n startDate: ReturnType<typeof date.parseDateFromElement>;\n /** Parsed end date object (optional) */\n endDate: ReturnType<typeof date.parseDateFromElement>;\n /** Location element (optional) */\n locationElement: Element | null;\n}\n\n/**\n * Element visual structure matching the return type from elements library\n */\ninterface ElementVisualComponent {\n element: HTMLElement;\n styles: string;\n}\n\n/**\n * Result containing created event components\n */\ninterface EventComponents {\n /** Event details/meta component */\n eventMeta: ElementVisualComponent;\n /** Date sign component */\n dateSign: ElementVisualComponent;\n}\n\n/**\n * Raw event slot elements extracted from the host element\n */\ninterface EventSlots {\n startDate: Element | null;\n endDate: Element | null;\n location: Element | null;\n}\n\n/**\n * Extracts event-related slot elements from the host element\n *\n * @param element - The host HTML element containing slotted content\n * @returns Object containing the extracted slot elements\n */\nconst extractEventSlots = (element: HTMLElement): EventSlots => ({\n startDate: element.querySelector(`[slot=\"${Slots.name.DATE_START_ISO}\"]`),\n endDate: element.querySelector(`[slot=\"${Slots.name.DATE_END_ISO}\"]`),\n location: element.querySelector(`[slot=\"${Slots.name.contact.location}\"]`),\n});\n\n/**\n * Parses event data from slot elements\n *\n * @param slots - The extracted slot elements\n * @returns Parsed event data or null if start date is missing\n */\nconst parseEventData = (slots: EventSlots): ParsedEventData | null => {\n const startDate = date.parseDateFromElement({ element: slots.startDate });\n\n if (!startDate) {\n return null;\n }\n\n const endDate = date.parseDateFromElement({ element: slots.endDate });\n\n const detailsData = date.createEventDetails({\n locationElement: slots.location,\n startDate,\n endDate,\n });\n\n return {\n detailsData,\n startDate,\n endDate,\n locationElement: slots.location,\n };\n};\n\n/**\n * Extracts event configuration from element attributes\n *\n * @param element - The host HTML element\n * @returns Configuration options for event components\n */\nconst extractEventConfig = (element: HTMLElement): EventComponentOptions => ({\n isThemeDark:\n Attributes.isTheme.dark({ element }) ||\n Attributes.isTheme.maryland({ element }),\n showTime: Attributes.isVisual.showTime({ element }),\n});\n\n/**\n * Creates event meta and date sign components\n *\n * @param eventData - Parsed event data\n * @param options - Configuration options for the components\n * @returns Object containing the created components\n */\nexport const createEventComponents = (\n eventData: ParsedEventData,\n options: EventComponentOptions = {},\n): EventComponents => {\n const {\n isThemeDark = false,\n showTime = false,\n isLargeSize = false,\n isDateSignDark,\n } = options;\n\n return {\n eventMeta: events.meta({\n ...eventData.detailsData,\n isThemeDark,\n showTime,\n }),\n dateSign: events.sign({\n ...eventData.detailsData,\n isThemeDark: isDateSignDark ?? isThemeDark,\n isLargeSize,\n }),\n };\n};\n\n/**\n * Main function to extract and process event data from an element\n *\n * This is the primary API for working with event components. It:\n * 1. Extracts event slots from the element\n * 2. Parses the event data\n * 3. Creates configured event components\n *\n * @param element - The host HTML element containing event data\n * @param options - Optional configuration overrides\n * @returns Event components or null if required data is missing\n *\n * @example\n * ```typescript\n * // Basic usage - extracts everything from element\n * const eventData = extractEventData(element);\n * if (eventData) {\n * const { eventMeta, dateSign } = eventData;\n * // Use components...\n * }\n *\n * // With custom options\n * const eventData = extractEventData(element, {\n * isLargeSize: true,\n * isDateSignDark: false\n * });\n * ```\n */\nexport const extractEventData = (\n element: HTMLElement,\n options?: Partial<EventComponentOptions>,\n): EventComponents | null => {\n const slots = extractEventSlots(element);\n const eventData = parseEventData(slots);\n\n if (!eventData) {\n return null;\n }\n\n const config = {\n ...extractEventConfig(element),\n ...options,\n };\n\n return createEventComponents(eventData, config);\n};\n"],"names":["extractEventSlots","element","Slots","parseEventData","slots","startDate","date","endDate","extractEventConfig","Attributes","createEventComponents","eventData","options","isThemeDark","showTime","isLargeSize","isDateSignDark","events","extractEventData","config"],"mappings":";;;AAiEA,MAAMA,IAAoB,CAACC,OAAsC;AAAA,EAC/D,WAAWA,EAAQ,cAAc,UAAUC,EAAM,KAAK,cAAc,IAAI;AAAA,EACxE,SAASD,EAAQ,cAAc,UAAUC,EAAM,KAAK,YAAY,IAAI;AAAA,EACpE,UAAUD,EAAQ,cAAc,UAAUC,EAAM,KAAK,QAAQ,QAAQ,IAAI;AAC3E,IAQMC,IAAiB,CAACC,MAA8C;AACpE,QAAMC,IAAYC,EAAK,qBAAqB,EAAE,SAASF,EAAM,WAAW;AAExE,MAAI,CAACC;AACH,WAAO;AAGT,QAAME,IAAUD,EAAK,qBAAqB,EAAE,SAASF,EAAM,SAAS;AAQpE,SAAO;AAAA,IACL,aAPkBE,EAAK,mBAAmB;AAAA,MAC1C,iBAAiBF,EAAM;AAAA,MACvB,WAAAC;AAAA,MACA,SAAAE;AAAA,IAAA,CACD;AAAA,IAIC,WAAAF;AAAA,IACA,SAAAE;AAAA,IACA,iBAAiBH,EAAM;AAAA,EAAA;AAE3B,GAQMI,IAAqB,CAACP,OAAiD;AAAA,EAC3E,aACEQ,EAAW,QAAQ,KAAK,EAAE,SAAAR,EAAA,CAAS,KACnCQ,EAAW,QAAQ,SAAS,EAAE,SAAAR,GAAS;AAAA,EACzC,UAAUQ,EAAW,SAAS,SAAS,EAAE,SAAAR,GAAS;AACpD,IASaS,IAAwB,CACnCC,GACAC,IAAiC,OACb;AACpB,QAAM;AAAA,IACJ,aAAAC,IAAc;AAAA,IACd,UAAAC,IAAW;AAAA,IACX,aAAAC,IAAc;AAAA,IACd,gBAAAC;AAAA,EAAA,IACEJ;AAEJ,SAAO;AAAA,IACL,WAAWK,EAAO,KAAK;AAAA,MACrB,GAAGN,EAAU;AAAA,MACb,aAAAE;AAAA,MACA,UAAAC;AAAA,IAAA,CACD;AAAA,IACD,UAAUG,EAAO,KAAK;AAAA,MACpB,GAAGN,EAAU;AAAA,MACb,aAAaK,KAAkBH;AAAA,MAC/B,aAAAE;AAAA,IAAA,CACD;AAAA,EAAA;AAEL,GA8BaG,IAAmB,CAC9BjB,GACAW,MAC2B;AAC3B,QAAMR,IAAQJ,EAAkBC,CAAO,GACjCU,IAAYR,EAAeC,CAAK;AAEtC,MAAI,CAACO;AACH,WAAO;AAGT,QAAMQ,IAAS;AAAA,IACb,GAAGX,EAAmBP,CAAO;AAAA,IAC7B,GAAGW;AAAA,EAAA;AAGL,SAAOF,EAAsBC,GAAWQ,CAAM;AAChD;"}
1
+ {"version":3,"file":"_event-B6QDfDPW.js","sources":["../source/web-components/_event.ts"],"sourcesContent":["import { events } from '@universityofmaryland/web-elements-library/atomic';\nimport * as date from '@universityofmaryland/web-utilities-library/date';\nimport { Attributes, Slots } from '@universityofmaryland/web-model-library';\n\n/**\n * Configuration options for creating event components\n */\ninterface EventComponentOptions {\n /** Whether to use dark theme for event details */\n isThemeDark?: boolean;\n /** Whether to show time in event details */\n showTime?: boolean;\n /** Whether to use large size for date sign */\n isLargeSize?: boolean;\n /** Whether to use dark theme for date sign (separate from event details) */\n isDateSignDark?: boolean;\n}\n\n/**\n * Parsed event data ready for component creation\n */\ninterface ParsedEventData {\n /** Processed date and location data from Markup.event.createDetailsData */\n detailsData: ReturnType<typeof date.createEventDetails>;\n /** Parsed start date object */\n startDate: ReturnType<typeof date.parseDateFromElement>;\n /** Parsed end date object (optional) */\n endDate: ReturnType<typeof date.parseDateFromElement>;\n /** Location element (optional) */\n locationElement: Element | null;\n}\n\n/**\n * Element visual structure matching the return type from elements library\n */\ninterface ElementVisualComponent {\n element: HTMLElement;\n styles: string;\n}\n\n/**\n * Result containing created event components\n */\ninterface EventComponents {\n /** Event details/meta component */\n eventMeta: ElementVisualComponent;\n /** Date sign component */\n dateSign: ElementVisualComponent;\n}\n\n/**\n * Raw event slot elements extracted from the host element\n */\ninterface EventSlots {\n startDate: Element | null;\n endDate: Element | null;\n location: Element | null;\n}\n\n/**\n * Extracts event-related slot elements from the host element\n *\n * @param element - The host HTML element containing slotted content\n * @returns Object containing the extracted slot elements\n */\nconst extractEventSlots = (element: HTMLElement): EventSlots => ({\n startDate: element.querySelector(`[slot=\"${Slots.name.DATE_START_ISO}\"]`),\n endDate: element.querySelector(`[slot=\"${Slots.name.DATE_END_ISO}\"]`),\n location: element.querySelector(`[slot=\"${Slots.name.contact.location}\"]`),\n});\n\n/**\n * Parses event data from slot elements\n *\n * @param slots - The extracted slot elements\n * @returns Parsed event data or null if start date is missing\n */\nconst parseEventData = (slots: EventSlots): ParsedEventData | null => {\n const startDate = date.parseDateFromElement({ element: slots.startDate });\n\n if (!startDate) {\n return null;\n }\n\n const endDate = date.parseDateFromElement({ element: slots.endDate });\n\n const detailsData = date.createEventDetails({\n locationElement: slots.location,\n startDate,\n endDate,\n });\n\n return {\n detailsData,\n startDate,\n endDate,\n locationElement: slots.location,\n };\n};\n\n/**\n * Extracts event configuration from element attributes\n *\n * @param element - The host HTML element\n * @returns Configuration options for event components\n */\nconst extractEventConfig = (element: HTMLElement): EventComponentOptions => ({\n isThemeDark:\n Attributes.isTheme.dark({ element }) ||\n Attributes.isTheme.maryland({ element }),\n showTime: Attributes.isVisual.showTime({ element }),\n});\n\n/**\n * Creates event meta and date sign components\n *\n * @param eventData - Parsed event data\n * @param options - Configuration options for the components\n * @returns Object containing the created components\n */\nexport const createEventComponents = (\n eventData: ParsedEventData,\n options: EventComponentOptions = {},\n): EventComponents => {\n const {\n isThemeDark = false,\n showTime = false,\n isLargeSize = false,\n isDateSignDark,\n } = options;\n\n return {\n eventMeta: events.meta({\n ...eventData.detailsData,\n isThemeDark,\n showTime,\n }),\n dateSign: events.sign({\n ...eventData.detailsData,\n isThemeDark: isDateSignDark ?? isThemeDark,\n isLargeSize,\n }),\n };\n};\n\n/**\n * Main function to extract and process event data from an element\n *\n * This is the primary API for working with event components. It:\n * 1. Extracts event slots from the element\n * 2. Parses the event data\n * 3. Creates configured event components\n *\n * @param element - The host HTML element containing event data\n * @param options - Optional configuration overrides\n * @returns Event components or null if required data is missing\n *\n * @example\n * ```typescript\n * // Basic usage - extracts everything from element\n * const eventData = extractEventData(element);\n * if (eventData) {\n * const { eventMeta, dateSign } = eventData;\n * // Use components...\n * }\n *\n * // With custom options\n * const eventData = extractEventData(element, {\n * isLargeSize: true,\n * isDateSignDark: false\n * });\n * ```\n */\nexport const extractEventData = (\n element: HTMLElement,\n options?: Partial<EventComponentOptions>,\n): EventComponents | null => {\n const slots = extractEventSlots(element);\n const eventData = parseEventData(slots);\n\n if (!eventData) {\n return null;\n }\n\n const config = {\n ...extractEventConfig(element),\n ...options,\n };\n\n return createEventComponents(eventData, config);\n};\n"],"names":["extractEventSlots","element","Slots","parseEventData","slots","startDate","date","endDate","extractEventConfig","Attributes","createEventComponents","eventData","options","isThemeDark","showTime","isLargeSize","isDateSignDark","events","extractEventData","config"],"mappings":";;;AAiEA,MAAMA,IAAoB,CAACC,OAAsC;AAAA,EAC/D,WAAWA,EAAQ,cAAc,UAAUC,EAAM,KAAK,cAAc,IAAI;AAAA,EACxE,SAASD,EAAQ,cAAc,UAAUC,EAAM,KAAK,YAAY,IAAI;AAAA,EACpE,UAAUD,EAAQ,cAAc,UAAUC,EAAM,KAAK,QAAQ,QAAQ,IAAI;AAC3E,IAQMC,IAAiB,CAACC,MAA8C;AACpE,QAAMC,IAAYC,EAAK,qBAAqB,EAAE,SAASF,EAAM,WAAW;AAExE,MAAI,CAACC;AACH,WAAO;AAGT,QAAME,IAAUD,EAAK,qBAAqB,EAAE,SAASF,EAAM,SAAS;AAQpE,SAAO;AAAA,IACL,aAPkBE,EAAK,mBAAmB;AAAA,MAC1C,iBAAiBF,EAAM;AAAA,MACvB,WAAAC;AAAA,MACA,SAAAE;AAAA,IAAA,CACD;AAAA,IAIC,WAAAF;AAAA,IACA,SAAAE;AAAA,IACA,iBAAiBH,EAAM;AAAA,EAAA;AAE3B,GAQMI,IAAqB,CAACP,OAAiD;AAAA,EAC3E,aACEQ,EAAW,QAAQ,KAAK,EAAE,SAAAR,EAAA,CAAS,KACnCQ,EAAW,QAAQ,SAAS,EAAE,SAAAR,GAAS;AAAA,EACzC,UAAUQ,EAAW,SAAS,SAAS,EAAE,SAAAR,GAAS;AACpD,IASaS,IAAwB,CACnCC,GACAC,IAAiC,OACb;AACpB,QAAM;AAAA,IACJ,aAAAC,IAAc;AAAA,IACd,UAAAC,IAAW;AAAA,IACX,aAAAC,IAAc;AAAA,IACd,gBAAAC;AAAA,EAAA,IACEJ;AAEJ,SAAO;AAAA,IACL,WAAWK,EAAO,KAAK;AAAA,MACrB,GAAGN,EAAU;AAAA,MACb,aAAAE;AAAA,MACA,UAAAC;AAAA,IAAA,CACD;AAAA,IACD,UAAUG,EAAO,KAAK;AAAA,MACpB,GAAGN,EAAU;AAAA,MACb,aAAaK,KAAkBH;AAAA,MAC/B,aAAAE;AAAA,IAAA,CACD;AAAA,EAAA;AAEL,GA8BaG,IAAmB,CAC9BjB,GACAW,MAC2B;AAC3B,QAAMR,IAAQJ,EAAkBC,CAAO,GACjCU,IAAYR,EAAeC,CAAK;AAEtC,MAAI,CAACO;AACH,WAAO;AAGT,QAAMQ,IAAS;AAAA,IACb,GAAGX,EAAmBP,CAAO;AAAA,IAC7B,GAAGW;AAAA,EAAA;AAGL,SAAOF,EAAsBC,GAAWQ,CAAM;AAChD;"}
package/dist/bundle.js CHANGED
@@ -18850,11 +18850,11 @@ const wP = "0.1.0", AE = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.de
18850
18850
  l.withChild(c);
18851
18851
  }
18852
18852
  if (i) {
18853
- const c = new F("slot").withClassName("umd-headline-sans-min").styled(
18853
+ const c = new F(i).withClassName("umd-headline-sans-min").styled(
18854
18854
  wA("min", {
18855
18855
  theme: iA.fontColor(r)
18856
18856
  })
18857
- ).withAnimation("slideUnder").withChild(i).withStyles(HI(r)).build();
18857
+ ).withAnimation("slideUnder").withStyles(HI(r)).build();
18858
18858
  l.withChild(c);
18859
18859
  }
18860
18860
  if (n) {
@@ -36710,9 +36710,6 @@ const mY = {
36710
36710
  ...CategoryFields
36711
36711
  }
36712
36712
  topics: expertsCategoryTopics {
36713
- ...CategoryFields
36714
- }
36715
- tags: expertsCategoryTags {
36716
36713
  ...CategoryFields
36717
36714
  }
36718
36715
  }