@ulu/frontend-vue 0.5.2 → 0.5.3

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.
@@ -40,6 +40,7 @@ type __VLS_TemplateResult = {
40
40
  index: number;
41
41
  descriptionIndex: number;
42
42
  }): any;
43
+ default?(_: {}): any;
43
44
  };
44
45
  refs: {};
45
46
  rootEl: any;
@@ -1 +1 @@
1
- {"version":3,"file":"UluDefinitionList.vue.d.ts","sourceRoot":"","sources":["../../../lib/components/elements/UluDefinitionList.vue"],"names":[],"mappings":"AAmCA;wBAyQqB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;;6BAEtE,CAAC,EAAE,CAAC;;;AAVjC;;;;;;;;;;;;;;;;;;;;;;;2OAOG"}
1
+ {"version":3,"file":"UluDefinitionList.vue.d.ts","sourceRoot":"","sources":["../../../lib/components/elements/UluDefinitionList.vue"],"names":[],"mappings":"AAsCA;wBAuRqB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;;6BAEtE,CAAC,EAAE,CAAC;;;AAVjC;;;;;;;;;;;;;;;;;;;;;;;2OAOG"}
@@ -1,6 +1,6 @@
1
- import { computed as b, createElementBlock as r, createCommentVNode as g, openBlock as a, normalizeClass as n, unref as k, Fragment as d, renderList as m, createElementVNode as L, renderSlot as p, createTextVNode as u, toDisplayString as f } from "vue";
2
- import { useModifiers as C } from "../../composables/useModifiers.js";
3
- const N = {
1
+ import { provide as b, computed as m, createElementBlock as i, createCommentVNode as g, openBlock as a, normalizeClass as r, unref as L, renderSlot as o, Fragment as u, renderList as f, createElementVNode as C, createTextVNode as p, toDisplayString as y } from "vue";
2
+ import { useModifiers as D } from "../../composables/useModifiers.js";
3
+ const M = {
4
4
  __name: "UluDefinitionList",
5
5
  props: {
6
6
  /**
@@ -48,55 +48,57 @@ const N = {
48
48
  */
49
49
  compact: Boolean
50
50
  },
51
- setup(t) {
52
- const e = t, y = b(() => ({
53
- inline: e.inline,
54
- "inline-all": e.inlineAll,
55
- table: e.table,
56
- separated: e.separated,
57
- "separated-first": e.separatedFirst,
58
- "separated-last": e.separatedLast,
59
- compact: e.compact
60
- })), { resolvedModifiers: B } = C({
61
- props: e,
62
- internal: y,
51
+ setup(e) {
52
+ const t = e;
53
+ b("uluDefinitionListClasses", m(() => t.classes));
54
+ const B = m(() => ({
55
+ inline: t.inline,
56
+ "inline-all": t.inlineAll,
57
+ table: t.table,
58
+ separated: t.separated,
59
+ "separated-first": t.separatedFirst,
60
+ "separated-last": t.separatedLast,
61
+ compact: t.compact
62
+ })), { resolvedModifiers: k } = D({
63
+ props: t,
64
+ internal: B,
63
65
  baseClass: "definition-list"
64
66
  }), A = (s) => Array.isArray(s.description) ? s.description : [s.description];
65
- return (s, D) => t.items?.length ? (a(), r("dl", {
67
+ return (s, $) => (e.items !== void 0 ? e.items.length : s.$slots.default) ? (a(), i("dl", {
66
68
  key: 0,
67
- class: n(["definition-list", [k(B), t.classes.list]])
69
+ class: r(["definition-list", [L(k), e.classes.list]])
68
70
  }, [
69
- (a(!0), r(d, null, m(t.items, (i, l) => (a(), r("div", {
71
+ e.items !== void 0 ? (a(!0), i(u, { key: 0 }, f(e.items, (n, l) => (a(), i("div", {
70
72
  key: l,
71
- class: n(t.classes.item)
73
+ class: r(e.classes.item)
72
74
  }, [
73
- L("dt", {
74
- class: n(t.classes.term)
75
+ C("dt", {
76
+ class: r(e.classes.term)
75
77
  }, [
76
- p(s.$slots, "term", {
77
- item: i,
78
+ o(s.$slots, "term", {
79
+ item: n,
78
80
  index: l
79
81
  }, () => [
80
- u(f(i.term), 1)
82
+ p(y(n.term), 1)
81
83
  ])
82
84
  ], 2),
83
- (a(!0), r(d, null, m(A(i), (o, c) => (a(), r("dd", {
85
+ (a(!0), i(u, null, f(A(n), (d, c) => (a(), i("dd", {
84
86
  key: c,
85
- class: n(t.classes.description)
87
+ class: r(e.classes.description)
86
88
  }, [
87
- p(s.$slots, "description", {
88
- item: i,
89
- description: o,
89
+ o(s.$slots, "description", {
90
+ item: n,
91
+ description: d,
90
92
  index: l,
91
93
  descriptionIndex: c
92
94
  }, () => [
93
- u(f(o), 1)
95
+ p(y(d), 1)
94
96
  ])
95
97
  ], 2))), 128))
96
- ], 2))), 128))
98
+ ], 2))), 128)) : o(s.$slots, "default", { key: 1 })
97
99
  ], 2)) : g("", !0);
98
100
  }
99
101
  };
100
102
  export {
101
- N as default
103
+ M as default
102
104
  };
@@ -0,0 +1,28 @@
1
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
2
+ export default _default;
3
+ type __VLS_WithTemplateSlots<T, S> = T & (new () => {
4
+ $slots: S;
5
+ });
6
+ declare const __VLS_component: import('vue').DefineComponent<{}, {
7
+ classes?: Record<string, any> | undefined;
8
+ description?: string | unknown[] | undefined;
9
+ term?: string | undefined;
10
+ $props: {
11
+ readonly classes?: Record<string, any> | undefined;
12
+ readonly description?: string | unknown[] | undefined;
13
+ readonly term?: string | undefined;
14
+ };
15
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLDivElement>;
16
+ type __VLS_TemplateResult = {
17
+ attrs: Partial<{}>;
18
+ slots: {
19
+ term?(_: {}): any;
20
+ description?(_: {
21
+ description: unknown;
22
+ index: number;
23
+ }): any;
24
+ };
25
+ refs: {};
26
+ rootEl: HTMLDivElement;
27
+ };
28
+ //# sourceMappingURL=UluDefinitionListItem.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UluDefinitionListItem.vue.d.ts","sourceRoot":"","sources":["../../../lib/components/elements/UluDefinitionListItem.vue"],"names":[],"mappings":"AAgBA;wBAwIqB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;;6BAEtE,CAAC,EAAE,CAAC;;;AAXjC;;;;;;;;;sPAQG"}
@@ -0,0 +1,46 @@
1
+ import { inject as f, computed as o, createElementBlock as r, openBlock as i, normalizeClass as n, createElementVNode as y, renderSlot as d, createTextVNode as u, toDisplayString as m, Fragment as g, renderList as C } from "vue";
2
+ const k = {
3
+ __name: "UluDefinitionListItem",
4
+ props: {
5
+ /**
6
+ * The term text (renders inside dt)
7
+ */
8
+ term: String,
9
+ /**
10
+ * The description text or array of strings (renders inside dd)
11
+ */
12
+ description: [String, Array],
13
+ /**
14
+ * Optional classes object to override/append to injected parent classes { item, term, description }
15
+ */
16
+ classes: Object
17
+ },
18
+ setup(e) {
19
+ const t = e, p = f("uluDefinitionListClasses", { value: {} }), s = o(() => p.value || {}), v = o(() => t.description ? Array.isArray(t.description) ? t.description : [t.description] : []);
20
+ return (c, S) => (i(), r("div", {
21
+ class: n([s.value.item, e.classes?.item])
22
+ }, [
23
+ y("dt", {
24
+ class: n([s.value.term, e.classes?.term])
25
+ }, [
26
+ d(c.$slots, "term", {}, () => [
27
+ u(m(e.term), 1)
28
+ ])
29
+ ], 2),
30
+ (i(!0), r(g, null, C(v.value, (l, a) => (i(), r("dd", {
31
+ key: a,
32
+ class: n([s.value.description, e.classes?.description])
33
+ }, [
34
+ d(c.$slots, "description", {
35
+ description: l,
36
+ index: a
37
+ }, () => [
38
+ u(m(l), 1)
39
+ ])
40
+ ], 2))), 128))
41
+ ], 2));
42
+ }
43
+ };
44
+ export {
45
+ k as default
46
+ };
@@ -34,6 +34,7 @@ type __VLS_TemplateResult = {
34
34
  item: unknown;
35
35
  index: number;
36
36
  }): any;
37
+ default?(_: {}): any;
37
38
  };
38
39
  refs: {};
39
40
  rootEl: any;
@@ -1 +1 @@
1
- {"version":3,"file":"UluList.vue.d.ts","sourceRoot":"","sources":["../../../lib/components/elements/UluList.vue"],"names":[],"mappings":"AAiCA;wBAmPqB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;;6BAEtE,CAAC,EAAE,CAAC;;;AAVjC;;;;;;;;;;;;;;;;;;;;;;;2OAOG"}
1
+ {"version":3,"file":"UluList.vue.d.ts","sourceRoot":"","sources":["../../../lib/components/elements/UluList.vue"],"names":[],"mappings":"AAoCA;wBAiQqB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;;6BAEtE,CAAC,EAAE,CAAC;;;AAVjC;;;;;;;;;;;;;;;;;;;;;;;2OAOG"}
@@ -1,5 +1,5 @@
1
- import { computed as n, createBlock as m, createCommentVNode as u, openBlock as l, resolveDynamicComponent as y, normalizeStyle as B, normalizeClass as o, withCtx as f, createElementBlock as d, Fragment as v, renderList as S, renderSlot as g, createTextVNode as k, toDisplayString as C } from "vue";
2
- const h = {
1
+ import { provide as m, computed as r, createBlock as y, createCommentVNode as f, openBlock as a, resolveDynamicComponent as v, normalizeStyle as B, normalizeClass as o, withCtx as S, createElementBlock as i, renderSlot as c, Fragment as k, renderList as g, createTextVNode as C, toDisplayString as O } from "vue";
2
+ const L = {
3
3
  __name: "UluList",
4
4
  props: {
5
5
  /**
@@ -50,8 +50,10 @@ const h = {
50
50
  listStyleType: String
51
51
  },
52
52
  setup(e) {
53
- const r = e, s = n(() => r.ordered || r.forceOrdered), c = n(() => s.value ? "ol" : "ul");
54
- return (i, O) => e.items?.length ? (l(), m(y(c.value), {
53
+ const t = e;
54
+ m("uluListClasses", r(() => t.classes));
55
+ const n = r(() => t.ordered || t.forceOrdered), u = r(() => n.value ? "ol" : "ul");
56
+ return (l, T) => (e.items !== void 0 ? e.items.length : l.$slots.default) ? (a(), y(v(u.value), {
55
57
  key: 0,
56
58
  class: o([
57
59
  {
@@ -65,29 +67,29 @@ const h = {
65
67
  style: B({
66
68
  listStyleType: e.listStyleType
67
69
  }),
68
- reversed: s.value ? e.reversed : null,
70
+ reversed: n.value ? e.reversed : null,
69
71
  start: e.start
70
72
  }, {
71
- default: f(() => [
72
- (l(!0), d(v, null, S(e.items, (t, a) => (l(), d("li", {
73
- key: a,
73
+ default: S(() => [
74
+ e.items !== void 0 ? (a(!0), i(k, { key: 0 }, g(e.items, (s, d) => (a(), i("li", {
75
+ key: d,
74
76
  class: o([
75
77
  e.classes.item,
76
- t?.classes?.item
78
+ s?.classes?.item
77
79
  ])
78
80
  }, [
79
- g(i.$slots, "default", {
80
- item: t,
81
- index: a
81
+ c(l.$slots, "default", {
82
+ item: s,
83
+ index: d
82
84
  }, () => [
83
- k(C(t), 1)
85
+ C(O(s), 1)
84
86
  ])
85
- ], 2))), 128))
87
+ ], 2))), 128)) : c(l.$slots, "default", { key: 1 })
86
88
  ]),
87
89
  _: 3
88
- }, 8, ["class", "style", "reversed", "start"])) : u("", !0);
90
+ }, 8, ["class", "style", "reversed", "start"])) : f("", !0);
89
91
  }
90
92
  };
91
93
  export {
92
- h as default
94
+ L as default
93
95
  };
@@ -0,0 +1,20 @@
1
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
2
+ export default _default;
3
+ type __VLS_WithTemplateSlots<T, S> = T & (new () => {
4
+ $slots: S;
5
+ });
6
+ declare const __VLS_component: import('vue').DefineComponent<{}, {
7
+ classes?: string | Record<string, any> | unknown[] | undefined;
8
+ $props: {
9
+ readonly classes?: string | Record<string, any> | unknown[] | undefined;
10
+ };
11
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLLIElement>;
12
+ type __VLS_TemplateResult = {
13
+ attrs: Partial<{}>;
14
+ slots: {
15
+ default?(_: {}): any;
16
+ };
17
+ refs: {};
18
+ rootEl: HTMLLIElement;
19
+ };
20
+ //# sourceMappingURL=UluListItem.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UluListItem.vue.d.ts","sourceRoot":"","sources":["../../../lib/components/elements/UluListItem.vue"],"names":[],"mappings":"AAKA;wBAkFqB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;;6BAEtE,CAAC,EAAE,CAAC;;;AAXjC;;;;;qPAQG"}
@@ -0,0 +1,21 @@
1
+ import { inject as a, computed as c, createElementBlock as r, openBlock as n, normalizeClass as o, renderSlot as u } from "vue";
2
+ const p = {
3
+ __name: "UluListItem",
4
+ props: {
5
+ /**
6
+ * Optional class binding to append to the injected parent classes
7
+ */
8
+ classes: [String, Array, Object]
9
+ },
10
+ setup(e) {
11
+ const s = a("uluListClasses", { value: {} }), t = c(() => s.value || {});
12
+ return (l, i) => (n(), r("li", {
13
+ class: o([t.value.item, e.classes])
14
+ }, [
15
+ u(l.$slots, "default")
16
+ ], 2));
17
+ }
18
+ };
19
+ export {
20
+ p as default
21
+ };
@@ -18,10 +18,12 @@ export { default as UluCallout } from './elements/UluCallout.vue';
18
18
  export { default as UluCaptionedFigure } from './elements/UluCaptionedFigure.vue';
19
19
  export { default as UluCard } from './elements/UluCard.vue';
20
20
  export { default as UluDefinitionList } from './elements/UluDefinitionList.vue';
21
+ export { default as UluDefinitionListItem } from './elements/UluDefinitionListItem.vue';
21
22
  export { default as UluExternalLink } from './elements/UluExternalLink.vue';
22
23
  export { default as UluIcon } from './elements/UluIcon.vue';
23
24
  export { default as UluImage } from './elements/UluImage.vue';
24
25
  export { default as UluList } from './elements/UluList.vue';
26
+ export { default as UluListItem } from './elements/UluListItem.vue';
25
27
  export { default as UluMain } from './elements/UluMain.vue';
26
28
  export { default as UluOverflowScroller } from './elements/UluOverflowScroller.vue';
27
29
  export { default as UluRule } from './elements/UluRule.vue';
@@ -1,4 +1,4 @@
1
- import { resolveComponent as d, createElementBlock as s, createCommentVNode as o, openBlock as a, normalizeClass as t, createElementVNode as b, Fragment as k, renderList as f, createBlock as y, renderSlot as c, withCtx as p, createTextVNode as u, toDisplayString as i, createVNode as g } from "vue";
1
+ import { resolveComponent as d, createElementBlock as s, createCommentVNode as o, openBlock as t, normalizeClass as r, createElementVNode as b, Fragment as k, renderList as f, createBlock as y, renderSlot as c, withCtx as g, createTextVNode as u, toDisplayString as i, createVNode as p } from "vue";
2
2
  import h from "../elements/UluIcon.vue.js";
3
3
  const N = {
4
4
  __name: "UluBreadcrumb",
@@ -17,7 +17,7 @@ const N = {
17
17
  separatorIcon: String,
18
18
  /**
19
19
  * Classes object to be applied to elements.
20
- * Keys: nav, list, item, link, icon
20
+ * Keys: nav, list, item, link, current, separator
21
21
  */
22
22
  classes: {
23
23
  type: Object,
@@ -31,45 +31,45 @@ const N = {
31
31
  })
32
32
  }
33
33
  },
34
- setup(e) {
34
+ setup(a) {
35
35
  return (l, B) => {
36
36
  const m = d("router-link");
37
- return e.items.length ? (a(), s("nav", {
37
+ return a.items.length ? (t(), s("nav", {
38
38
  key: 0,
39
- class: t(e.classes.nav),
39
+ class: r(a.classes.nav),
40
40
  "aria-label": "Breadcrumb"
41
41
  }, [
42
42
  b("ol", {
43
- class: t(e.classes.list)
43
+ class: r(a.classes.list)
44
44
  }, [
45
- (a(!0), s(k, null, f(e.items, (r, n) => (a(), s("li", {
45
+ (t(!0), s(k, null, f(a.items, (e, n) => (t(), s("li", {
46
46
  key: n,
47
- class: t(e.classes.item)
47
+ class: r([a.classes.item, e?.classes?.item])
48
48
  }, [
49
- r.current ? (a(), s("span", {
49
+ e.current ? (t(), s("span", {
50
50
  key: 1,
51
- class: t(r.current)
51
+ class: r([a.classes.current, e?.classes?.current])
52
52
  }, [
53
- c(l.$slots, "default", { item: r }, () => [
54
- u(i(r.title), 1)
53
+ c(l.$slots, "default", { item: e }, () => [
54
+ u(i(e.title), 1)
55
55
  ])
56
- ], 2)) : (a(), y(m, {
56
+ ], 2)) : (t(), y(m, {
57
57
  key: 0,
58
- to: r.to,
59
- class: t(e.classes.link),
60
- "aria-current": r.current ? "page" : null
58
+ to: e.to,
59
+ class: r([a.classes.link, e?.classes?.link]),
60
+ "aria-current": e.current ? "page" : null
61
61
  }, {
62
- default: p(() => [
63
- c(l.$slots, "default", { item: r }, () => [
64
- u(i(r.title), 1)
62
+ default: g(() => [
63
+ c(l.$slots, "default", { item: e }, () => [
64
+ u(i(e.title), 1)
65
65
  ])
66
66
  ]),
67
67
  _: 2
68
68
  }, 1032, ["to", "class", "aria-current"])),
69
- n < e.items.length - 1 ? c(l.$slots, "separator", { key: 2 }, () => [
70
- g(h, {
71
- class: t(e.classes.separator),
72
- icon: e.separatorIcon || "type:pathSeparator"
69
+ n < a.items.length - 1 ? c(l.$slots, "separator", { key: 2 }, () => [
70
+ p(h, {
71
+ class: r([a.classes.separator, e?.classes?.separator]),
72
+ icon: a.separatorIcon || "type:pathSeparator"
73
73
  }, null, 8, ["class", "icon"])
74
74
  ]) : o("", !0)
75
75
  ], 2))), 128))
package/dist/index.js CHANGED
@@ -11,10 +11,10 @@ import { default as T } from "./components/collapsible/UluCollapsible.vue.js";
11
11
  import { default as g } from "./components/collapsible/UluDropdown.vue.js";
12
12
  import { default as h } from "./components/collapsible/UluModal.vue.js";
13
13
  import { default as P } from "./components/collapsible/UluOverflowPopover.vue.js";
14
- import { default as y } from "./components/collapsible/UluTab.vue.js";
15
- import { default as L } from "./components/collapsible/UluTabGroup.vue.js";
16
- import { default as M } from "./components/collapsible/UluTabList.vue.js";
17
- import { default as B } from "./components/collapsible/UluTabPanel.vue.js";
14
+ import { default as v } from "./components/collapsible/UluTab.vue.js";
15
+ import { default as C } from "./components/collapsible/UluTabGroup.vue.js";
16
+ import { default as R } from "./components/collapsible/UluTabList.vue.js";
17
+ import { default as w } from "./components/collapsible/UluTabPanel.vue.js";
18
18
  import { default as D } from "./components/collapsible/UluTabPanels.vue.js";
19
19
  import { default as E } from "./components/elements/UluAlert.vue.js";
20
20
  import { default as W } from "./components/elements/UluBadge.vue.js";
@@ -25,202 +25,206 @@ import { default as K } from "./components/elements/UluCallout.vue.js";
25
25
  import { default as X } from "./components/elements/UluCaptionedFigure.vue.js";
26
26
  import { default as Z } from "./components/elements/UluCard.vue.js";
27
27
  import { default as $ } from "./components/elements/UluDefinitionList.vue.js";
28
- import { default as oe } from "./components/elements/UluExternalLink.vue.js";
29
- import { default as te } from "./components/elements/UluIcon.vue.js";
30
- import { default as le } from "./components/elements/UluImage.vue.js";
31
- import { default as fe } from "./components/elements/UluList.vue.js";
32
- import { default as me } from "./components/elements/UluOverflowScroller.vue.js";
33
- import { default as de } from "./components/elements/UluRule.vue.js";
34
- import { default as Ue } from "./components/elements/UluScrollSlider.vue.js";
35
- import { default as ne } from "./components/elements/UluSlider.vue.js";
36
- import { default as Se } from "./components/elements/UluSpokeSpinner.vue.js";
37
- import { default as Te } from "./components/elements/UluTag.vue.js";
38
- import { default as ge } from "./components/forms/UluSelectableMenu.vue.js";
39
- import { default as he } from "./components/forms/UluFileDisplay.vue.js";
40
- import { default as Pe } from "./components/forms/UluFormFile.vue.js";
41
- import { default as ye } from "./components/forms/UluFormMessage.vue.js";
42
- import { default as Le } from "./components/forms/UluFormSelect.vue.js";
43
- import { default as Me } from "./components/forms/UluFormText.vue.js";
44
- import { default as Be } from "./components/forms/UluSearchForm.vue.js";
45
- import { default as De } from "./components/forms/UluForm.vue.js";
46
- import { default as Ee } from "./components/forms/UluFormActions.vue.js";
47
- import { default as We } from "./components/forms/UluFormCheckbox.vue.js";
48
- import { default as He } from "./components/forms/UluFormFieldset.vue.js";
49
- import { default as Ve } from "./components/forms/UluFormItem.vue.js";
50
- import { default as ze } from "./components/forms/UluFormItemsInline.vue.js";
51
- import { default as Ke } from "./components/forms/UluFormRadio.vue.js";
52
- import { default as Xe } from "./components/forms/UluFormRequiredChar.vue.js";
53
- import { default as Ze } from "./components/forms/UluFormTextarea.vue.js";
54
- import { default as $e } from "./components/layout/UluAdaptiveLayout.vue.js";
55
- import { default as oo } from "./components/layout/UluDataGrid.vue.js";
56
- import { default as to } from "./components/layout/UluTitleRail.vue.js";
57
- import { default as lo } from "./components/layout/UluWhenBreakpoint.vue.js";
58
- import { default as fo } from "./components/navigation/UluBreadcrumb.vue.js";
59
- import { default as mo } from "./components/navigation/UluMenu.vue.js";
60
- import { default as xo } from "./components/navigation/UluMenuStack.vue.js";
61
- import { default as io } from "./components/navigation/UluNavStrip.vue.js";
62
- import { default as co } from "./components/navigation/UluPager.vue.js";
63
- import { default as Fo } from "./components/utils/UluAction.vue.js";
64
- import { default as Ao } from "./components/utils/UluConditionalText.vue.js";
65
- import { default as bo } from "./components/utils/UluConditionalWrapper.vue.js";
66
- import { default as ko } from "./components/utils/UluPlaceholderImage.vue.js";
67
- import { default as vo } from "./components/utils/UluPlaceholderText.vue.js";
68
- import { default as Co } from "./components/utils/UluRouteAnnouncer.vue.js";
69
- import { default as Ro } from "./components/utils/UluSanityRichText.vue.js";
70
- import { default as wo } from "./components/visualizations/UluAnimateNumber.vue.js";
71
- import { default as Io } from "./components/visualizations/UluProgressBar.vue.js";
72
- import { default as No } from "./components/visualizations/UluProgressCircle.vue.js";
73
- import { default as Go } from "./components/systems/facets/UluFacetsActiveFilters.vue.js";
74
- import { default as qo } from "./components/systems/facets/UluFacetsFilterLists.vue.js";
75
- import { default as Oo } from "./components/systems/facets/UluFacetsFilterAccordions.vue.js";
76
- import { default as jo } from "./components/systems/facets/UluFacetsFilterPopovers.vue.js";
77
- import { default as Jo } from "./components/systems/facets/UluFacetsFilterSelects.vue.js";
78
- import { default as Qo } from "./components/systems/facets/UluFacetsHeaderLayout.vue.js";
79
- import { default as Yo } from "./components/systems/facets/UluFacetsResults.vue.js";
80
- import { default as _o } from "./components/systems/facets/UluFacetsSearch.vue.js";
81
- import { default as er } from "./components/systems/facets/UluFacetsSidebarLayout.vue.js";
82
- import { default as rr } from "./components/systems/facets/UluFacetsSort.vue.js";
83
- import { default as ar } from "./components/systems/facets/UluFacetsList.vue.js";
84
- import { default as ur } from "./components/systems/scroll-anchors/UluScrollAnchors.vue.js";
85
- import { default as sr } from "./components/systems/scroll-anchors/UluScrollAnchorsNav.vue.js";
86
- import { default as pr } from "./components/systems/scroll-anchors/UluScrollAnchorsNavAnimated.vue.js";
87
- import { default as xr } from "./components/systems/scroll-anchors/UluScrollAnchorsSection.vue.js";
88
- import { default as ir } from "./components/systems/scroll-anchors/UluScrollAnchorsHeadlessSection.vue.js";
89
- import { default as cr } from "./components/systems/skeleton/UluShowSkeleton.vue.js";
90
- import { default as Fr } from "./components/systems/skeleton/UluSkeletonContent.vue.js";
91
- import { default as Ar } from "./components/systems/skeleton/UluSkeletonMedia.vue.js";
92
- import { default as br } from "./components/systems/skeleton/UluSkeletonText.vue.js";
93
- import { default as kr } from "./components/systems/table-sticky/UluTableSticky.vue.js";
94
- import { default as vr } from "./components/systems/table-sticky/UluTableStickyRows.vue.js";
95
- import { default as Cr } from "./components/systems/table-sticky/UluTableStickyTable.vue.js";
96
- import { useTooltip as Rr } from "./plugins/popovers/useTooltip.js";
97
- import { default as wr } from "./components/elements/UluMain.vue.js";
98
- import { default as Ir } from "./components/navigation/UluSkipLink.vue.js";
99
- import { default as Nr } from "./components/utils/UluEmpty.vue.js";
100
- import { default as Gr } from "./components/utils/UluEmptyView.vue.js";
101
- import { useFacets as qr } from "./components/systems/facets/useFacets.js";
102
- import { useScrollAnchors as Or } from "./components/systems/scroll-anchors/useScrollAnchors.js";
103
- import { useScrollAnchorSection as jr } from "./components/systems/scroll-anchors/useScrollAnchorSection.js";
104
- import { useScrollAnchorSections as Jr } from "./components/systems/scroll-anchors/useScrollAnchorSections.js";
105
- import { useIcon as Qr } from "./composables/useIcon.js";
106
- import { useModifiers as Yr } from "./composables/useModifiers.js";
107
- import { useWindowResize as _r } from "./composables/useWindowResize.js";
108
- import { useRequiredInject as et } from "./composables/useRequiredInject.js";
109
- import { useBreakpointManager as rt } from "./composables/useBreakpointManager.js";
110
- import { usePagination as at } from "./composables/usePagination.js";
111
- import { useDocumentTitle as ut } from "./composables/useDocumentTitle.js";
112
- import { useUluFloating as st } from "./composables/useUluFloating.js";
28
+ import { default as oe } from "./components/elements/UluDefinitionListItem.vue.js";
29
+ import { default as te } from "./components/elements/UluExternalLink.vue.js";
30
+ import { default as le } from "./components/elements/UluIcon.vue.js";
31
+ import { default as fe } from "./components/elements/UluImage.vue.js";
32
+ import { default as me } from "./components/elements/UluList.vue.js";
33
+ import { default as de } from "./components/elements/UluListItem.vue.js";
34
+ import { default as Ue } from "./components/elements/UluOverflowScroller.vue.js";
35
+ import { default as ne } from "./components/elements/UluRule.vue.js";
36
+ import { default as Se } from "./components/elements/UluScrollSlider.vue.js";
37
+ import { default as Te } from "./components/elements/UluSlider.vue.js";
38
+ import { default as ge } from "./components/elements/UluSpokeSpinner.vue.js";
39
+ import { default as he } from "./components/elements/UluTag.vue.js";
40
+ import { default as Pe } from "./components/forms/UluSelectableMenu.vue.js";
41
+ import { default as ve } from "./components/forms/UluFileDisplay.vue.js";
42
+ import { default as Ce } from "./components/forms/UluFormFile.vue.js";
43
+ import { default as Re } from "./components/forms/UluFormMessage.vue.js";
44
+ import { default as we } from "./components/forms/UluFormSelect.vue.js";
45
+ import { default as De } from "./components/forms/UluFormText.vue.js";
46
+ import { default as Ee } from "./components/forms/UluSearchForm.vue.js";
47
+ import { default as We } from "./components/forms/UluForm.vue.js";
48
+ import { default as He } from "./components/forms/UluFormActions.vue.js";
49
+ import { default as Ve } from "./components/forms/UluFormCheckbox.vue.js";
50
+ import { default as ze } from "./components/forms/UluFormFieldset.vue.js";
51
+ import { default as Ke } from "./components/forms/UluFormItem.vue.js";
52
+ import { default as Xe } from "./components/forms/UluFormItemsInline.vue.js";
53
+ import { default as Ze } from "./components/forms/UluFormRadio.vue.js";
54
+ import { default as $e } from "./components/forms/UluFormRequiredChar.vue.js";
55
+ import { default as oo } from "./components/forms/UluFormTextarea.vue.js";
56
+ import { default as to } from "./components/layout/UluAdaptiveLayout.vue.js";
57
+ import { default as lo } from "./components/layout/UluDataGrid.vue.js";
58
+ import { default as fo } from "./components/layout/UluTitleRail.vue.js";
59
+ import { default as mo } from "./components/layout/UluWhenBreakpoint.vue.js";
60
+ import { default as xo } from "./components/navigation/UluBreadcrumb.vue.js";
61
+ import { default as io } from "./components/navigation/UluMenu.vue.js";
62
+ import { default as co } from "./components/navigation/UluMenuStack.vue.js";
63
+ import { default as Fo } from "./components/navigation/UluNavStrip.vue.js";
64
+ import { default as Ao } from "./components/navigation/UluPager.vue.js";
65
+ import { default as bo } from "./components/utils/UluAction.vue.js";
66
+ import { default as ko } from "./components/utils/UluConditionalText.vue.js";
67
+ import { default as Lo } from "./components/utils/UluConditionalWrapper.vue.js";
68
+ import { default as yo } from "./components/utils/UluPlaceholderImage.vue.js";
69
+ import { default as Io } from "./components/utils/UluPlaceholderText.vue.js";
70
+ import { default as Mo } from "./components/utils/UluRouteAnnouncer.vue.js";
71
+ import { default as Bo } from "./components/utils/UluSanityRichText.vue.js";
72
+ import { default as No } from "./components/visualizations/UluAnimateNumber.vue.js";
73
+ import { default as Go } from "./components/visualizations/UluProgressBar.vue.js";
74
+ import { default as qo } from "./components/visualizations/UluProgressCircle.vue.js";
75
+ import { default as Oo } from "./components/systems/facets/UluFacetsActiveFilters.vue.js";
76
+ import { default as jo } from "./components/systems/facets/UluFacetsFilterLists.vue.js";
77
+ import { default as Jo } from "./components/systems/facets/UluFacetsFilterAccordions.vue.js";
78
+ import { default as Qo } from "./components/systems/facets/UluFacetsFilterPopovers.vue.js";
79
+ import { default as Yo } from "./components/systems/facets/UluFacetsFilterSelects.vue.js";
80
+ import { default as _o } from "./components/systems/facets/UluFacetsHeaderLayout.vue.js";
81
+ import { default as er } from "./components/systems/facets/UluFacetsResults.vue.js";
82
+ import { default as rr } from "./components/systems/facets/UluFacetsSearch.vue.js";
83
+ import { default as ar } from "./components/systems/facets/UluFacetsSidebarLayout.vue.js";
84
+ import { default as ur } from "./components/systems/facets/UluFacetsSort.vue.js";
85
+ import { default as sr } from "./components/systems/facets/UluFacetsList.vue.js";
86
+ import { default as pr } from "./components/systems/scroll-anchors/UluScrollAnchors.vue.js";
87
+ import { default as xr } from "./components/systems/scroll-anchors/UluScrollAnchorsNav.vue.js";
88
+ import { default as ir } from "./components/systems/scroll-anchors/UluScrollAnchorsNavAnimated.vue.js";
89
+ import { default as cr } from "./components/systems/scroll-anchors/UluScrollAnchorsSection.vue.js";
90
+ import { default as Fr } from "./components/systems/scroll-anchors/UluScrollAnchorsHeadlessSection.vue.js";
91
+ import { default as Ar } from "./components/systems/skeleton/UluShowSkeleton.vue.js";
92
+ import { default as br } from "./components/systems/skeleton/UluSkeletonContent.vue.js";
93
+ import { default as kr } from "./components/systems/skeleton/UluSkeletonMedia.vue.js";
94
+ import { default as Lr } from "./components/systems/skeleton/UluSkeletonText.vue.js";
95
+ import { default as yr } from "./components/systems/table-sticky/UluTableSticky.vue.js";
96
+ import { default as Ir } from "./components/systems/table-sticky/UluTableStickyRows.vue.js";
97
+ import { default as Mr } from "./components/systems/table-sticky/UluTableStickyTable.vue.js";
98
+ import { useTooltip as Br } from "./plugins/popovers/useTooltip.js";
99
+ import { default as Nr } from "./components/elements/UluMain.vue.js";
100
+ import { default as Gr } from "./components/navigation/UluSkipLink.vue.js";
101
+ import { default as qr } from "./components/utils/UluEmpty.vue.js";
102
+ import { default as Or } from "./components/utils/UluEmptyView.vue.js";
103
+ import { useFacets as jr } from "./components/systems/facets/useFacets.js";
104
+ import { useScrollAnchors as Jr } from "./components/systems/scroll-anchors/useScrollAnchors.js";
105
+ import { useScrollAnchorSection as Qr } from "./components/systems/scroll-anchors/useScrollAnchorSection.js";
106
+ import { useScrollAnchorSections as Yr } from "./components/systems/scroll-anchors/useScrollAnchorSections.js";
107
+ import { useIcon as _r } from "./composables/useIcon.js";
108
+ import { useModifiers as et } from "./composables/useModifiers.js";
109
+ import { useWindowResize as rt } from "./composables/useWindowResize.js";
110
+ import { useRequiredInject as at } from "./composables/useRequiredInject.js";
111
+ import { useBreakpointManager as ut } from "./composables/useBreakpointManager.js";
112
+ import { usePagination as st } from "./composables/usePagination.js";
113
+ import { useDocumentTitle as pt } from "./composables/useDocumentTitle.js";
114
+ import { useUluFloating as xt } from "./composables/useUluFloating.js";
113
115
  export {
114
116
  n as UluAccordion,
115
117
  S as UluAccordionGroup,
116
- Fo as UluAction,
117
- $e as UluAdaptiveLayout,
118
+ bo as UluAction,
119
+ to as UluAdaptiveLayout,
118
120
  E as UluAlert,
119
- wo as UluAnimateNumber,
121
+ No as UluAnimateNumber,
120
122
  W as UluBadge,
121
123
  H as UluBadgeStack,
122
- fo as UluBreadcrumb,
124
+ xo as UluBreadcrumb,
123
125
  V as UluButton,
124
126
  z as UluButtonVerbose,
125
127
  K as UluCallout,
126
128
  X as UluCaptionedFigure,
127
129
  Z as UluCard,
128
130
  T as UluCollapsible,
129
- Ao as UluConditionalText,
130
- bo as UluConditionalWrapper,
131
- oo as UluDataGrid,
131
+ ko as UluConditionalText,
132
+ Lo as UluConditionalWrapper,
133
+ lo as UluDataGrid,
132
134
  $ as UluDefinitionList,
135
+ oe as UluDefinitionListItem,
133
136
  g as UluDropdown,
134
- Nr as UluEmpty,
135
- Gr as UluEmptyView,
136
- oe as UluExternalLink,
137
- Go as UluFacetsActiveFilters,
138
- Oo as UluFacetsFilterAccordions,
139
- qo as UluFacetsFilterLists,
140
- jo as UluFacetsFilterPopovers,
141
- Jo as UluFacetsFilterSelects,
142
- Qo as UluFacetsHeaderLayout,
143
- ar as UluFacetsList,
144
- Yo as UluFacetsResults,
145
- _o as UluFacetsSearch,
146
- er as UluFacetsSidebarLayout,
147
- rr as UluFacetsSort,
148
- he as UluFileDisplay,
149
- De as UluForm,
150
- Ee as UluFormActions,
151
- We as UluFormCheckbox,
152
- He as UluFormFieldset,
153
- Pe as UluFormFile,
154
- Ve as UluFormItem,
155
- ze as UluFormItemsInline,
156
- ye as UluFormMessage,
157
- Ke as UluFormRadio,
158
- Xe as UluFormRequiredChar,
159
- Le as UluFormSelect,
160
- Me as UluFormText,
161
- Ze as UluFormTextarea,
162
- te as UluIcon,
163
- le as UluImage,
164
- fe as UluList,
165
- wr as UluMain,
166
- mo as UluMenu,
167
- xo as UluMenuStack,
137
+ qr as UluEmpty,
138
+ Or as UluEmptyView,
139
+ te as UluExternalLink,
140
+ Oo as UluFacetsActiveFilters,
141
+ Jo as UluFacetsFilterAccordions,
142
+ jo as UluFacetsFilterLists,
143
+ Qo as UluFacetsFilterPopovers,
144
+ Yo as UluFacetsFilterSelects,
145
+ _o as UluFacetsHeaderLayout,
146
+ sr as UluFacetsList,
147
+ er as UluFacetsResults,
148
+ rr as UluFacetsSearch,
149
+ ar as UluFacetsSidebarLayout,
150
+ ur as UluFacetsSort,
151
+ ve as UluFileDisplay,
152
+ We as UluForm,
153
+ He as UluFormActions,
154
+ Ve as UluFormCheckbox,
155
+ ze as UluFormFieldset,
156
+ Ce as UluFormFile,
157
+ Ke as UluFormItem,
158
+ Xe as UluFormItemsInline,
159
+ Re as UluFormMessage,
160
+ Ze as UluFormRadio,
161
+ $e as UluFormRequiredChar,
162
+ we as UluFormSelect,
163
+ De as UluFormText,
164
+ oo as UluFormTextarea,
165
+ le as UluIcon,
166
+ fe as UluImage,
167
+ me as UluList,
168
+ de as UluListItem,
169
+ Nr as UluMain,
170
+ io as UluMenu,
171
+ co as UluMenuStack,
168
172
  h as UluModal,
169
- io as UluNavStrip,
173
+ Fo as UluNavStrip,
170
174
  P as UluOverflowPopover,
171
- me as UluOverflowScroller,
172
- co as UluPager,
173
- ko as UluPlaceholderImage,
174
- vo as UluPlaceholderText,
175
- Io as UluProgressBar,
176
- No as UluProgressCircle,
177
- Co as UluRouteAnnouncer,
178
- de as UluRule,
179
- Ro as UluSanityRichText,
180
- ur as UluScrollAnchors,
181
- ir as UluScrollAnchorsHeadlessSection,
182
- sr as UluScrollAnchorsNav,
183
- pr as UluScrollAnchorsNavAnimated,
184
- xr as UluScrollAnchorsSection,
185
- Ue as UluScrollSlider,
186
- Be as UluSearchForm,
187
- ge as UluSelectableMenu,
188
- cr as UluShowSkeleton,
189
- Fr as UluSkeletonContent,
190
- Ar as UluSkeletonMedia,
191
- br as UluSkeletonText,
192
- Ir as UluSkipLink,
193
- ne as UluSlider,
194
- Se as UluSpokeSpinner,
195
- y as UluTab,
196
- L as UluTabGroup,
197
- M as UluTabList,
198
- B as UluTabPanel,
175
+ Ue as UluOverflowScroller,
176
+ Ao as UluPager,
177
+ yo as UluPlaceholderImage,
178
+ Io as UluPlaceholderText,
179
+ Go as UluProgressBar,
180
+ qo as UluProgressCircle,
181
+ Mo as UluRouteAnnouncer,
182
+ ne as UluRule,
183
+ Bo as UluSanityRichText,
184
+ pr as UluScrollAnchors,
185
+ Fr as UluScrollAnchorsHeadlessSection,
186
+ xr as UluScrollAnchorsNav,
187
+ ir as UluScrollAnchorsNavAnimated,
188
+ cr as UluScrollAnchorsSection,
189
+ Se as UluScrollSlider,
190
+ Ee as UluSearchForm,
191
+ Pe as UluSelectableMenu,
192
+ Ar as UluShowSkeleton,
193
+ br as UluSkeletonContent,
194
+ kr as UluSkeletonMedia,
195
+ Lr as UluSkeletonText,
196
+ Gr as UluSkipLink,
197
+ Te as UluSlider,
198
+ ge as UluSpokeSpinner,
199
+ v as UluTab,
200
+ C as UluTabGroup,
201
+ R as UluTabList,
202
+ w as UluTabPanel,
199
203
  D as UluTabPanels,
200
- kr as UluTableSticky,
201
- vr as UluTableStickyRows,
202
- Cr as UluTableStickyTable,
203
- Te as UluTag,
204
- to as UluTitleRail,
205
- lo as UluWhenBreakpoint,
204
+ yr as UluTableSticky,
205
+ Ir as UluTableStickyRows,
206
+ Mr as UluTableStickyTable,
207
+ he as UluTag,
208
+ fo as UluTitleRail,
209
+ mo as UluWhenBreakpoint,
206
210
  U as breakpointsPlugin,
207
211
  t as corePlugin,
208
212
  m as modalsPlugin,
209
213
  l as popoversPlugin,
210
214
  d as toastPlugin,
211
- rt as useBreakpointManager,
212
- ut as useDocumentTitle,
213
- qr as useFacets,
214
- Qr as useIcon,
215
- Yr as useModifiers,
216
- at as usePagination,
217
- et as useRequiredInject,
218
- jr as useScrollAnchorSection,
219
- Jr as useScrollAnchorSections,
220
- Or as useScrollAnchors,
221
- Rr as useTooltip,
215
+ ut as useBreakpointManager,
216
+ pt as useDocumentTitle,
217
+ jr as useFacets,
218
+ _r as useIcon,
219
+ et as useModifiers,
220
+ st as usePagination,
221
+ at as useRequiredInject,
222
+ Qr as useScrollAnchorSection,
223
+ Yr as useScrollAnchorSections,
224
+ Jr as useScrollAnchors,
225
+ Br as useTooltip,
222
226
  f as useTooltipFollow,
223
- st as useUluFloating,
224
- _r as useWindowResize,
227
+ xt as useUluFloating,
228
+ rt as useWindowResize,
225
229
  e as utils
226
230
  };
@@ -31,53 +31,53 @@
31
31
  </template>
32
32
 
33
33
  <script setup>
34
- import { ref, provide } from 'vue';
35
- import UluAccordion from './UluAccordion.vue';
34
+ import { ref, provide } from 'vue';
35
+ import UluAccordion from './UluAccordion.vue';
36
36
 
37
- const props = defineProps({
38
- /**
39
- * Array of items to render as accordions.
40
- * Each item can have: title, content, isOpen, classes
41
- */
42
- items: {
43
- type: Array,
44
- default: () => []
45
- },
46
- /**
47
- * If using summary text sets the inner element the text is wrapped in, usually a headline or strong
48
- */
49
- triggerTextElement: {
50
- type: String,
51
- default: "strong"
52
- },
53
- /**
54
- * Class modifiers (ie. 'transparent', 'secondary', etc)
55
- */
56
- modifiers: [String, Array],
57
- /**
58
- * Enable or configure animations.
59
- * - `false` (default) to disable all animations.
60
- * - `true` to enable animations with default settings.
61
- * - An object to provide custom options to auto-animate (e.g., { duration: 100, easing: 'linear' }).
62
- */
63
- animate: {
64
- type: [Boolean, Object],
65
- default: true
66
- },
67
- });
37
+ const props = defineProps({
38
+ /**
39
+ * Array of items to render as accordions.
40
+ * Each item can have: title, content, isOpen, classes
41
+ */
42
+ items: {
43
+ type: Array,
44
+ default: () => []
45
+ },
46
+ /**
47
+ * If using summary text sets the inner element the text is wrapped in, usually a headline or strong
48
+ */
49
+ triggerTextElement: {
50
+ type: String,
51
+ default: "strong"
52
+ },
53
+ /**
54
+ * Class modifiers (ie. 'transparent', 'secondary', etc)
55
+ */
56
+ modifiers: [String, Array],
57
+ /**
58
+ * Enable or configure animations.
59
+ * - `false` (default) to disable all animations.
60
+ * - `true` to enable animations with default settings.
61
+ * - An object to provide custom options to auto-animate (e.g., { duration: 100, easing: 'linear' }).
62
+ */
63
+ animate: {
64
+ type: [Boolean, Object],
65
+ default: true
66
+ },
67
+ });
68
68
 
69
- const activeAccordionId = ref(null);
69
+ const activeAccordionId = ref(null);
70
70
 
71
- function toggle(id, isOpen) {
72
- if (isOpen) {
73
- activeAccordionId.value = id;
74
- } else if (activeAccordionId.value === id) {
75
- activeAccordionId.value = null;
71
+ function toggle(id, isOpen) {
72
+ if (isOpen) {
73
+ activeAccordionId.value = id;
74
+ } else if (activeAccordionId.value === id) {
75
+ activeAccordionId.value = null;
76
+ }
76
77
  }
77
- }
78
78
 
79
- provide('uluAccordionGroup', {
80
- activeAccordionId,
81
- toggle
82
- });
79
+ provide('uluAccordionGroup', {
80
+ activeAccordionId,
81
+ toggle
82
+ });
83
83
  </script>
@@ -1,41 +1,44 @@
1
1
  <template>
2
2
  <dl
3
- v-if="items?.length"
3
+ v-if="items !== undefined ? items.length : $slots.default"
4
4
  class="definition-list"
5
5
  :class="[resolvedModifiers, classes.list]"
6
6
  >
7
- <div
8
- v-for="(item, index) in items"
9
- :key="index"
10
- :class="classes.item"
11
- >
12
- <dt :class="classes.term">
13
- <slot name="term" :item="item" :index="index">
14
- {{ item.term }}
15
- </slot>
16
- </dt>
17
-
18
- <dd
19
- v-for="(desc, descIndex) in getDescriptions(item)"
20
- :key="descIndex"
21
- :class="classes.description"
7
+ <template v-if="items !== undefined">
8
+ <div
9
+ v-for="(item, index) in items"
10
+ :key="index"
11
+ :class="classes.item"
22
12
  >
23
- <slot
24
- name="description"
25
- :item="item"
26
- :description="desc"
27
- :index="index"
28
- :descriptionIndex="descIndex"
13
+ <dt :class="classes.term">
14
+ <slot name="term" :item="item" :index="index">
15
+ {{ item.term }}
16
+ </slot>
17
+ </dt>
18
+
19
+ <dd
20
+ v-for="(desc, descIndex) in getDescriptions(item)"
21
+ :key="descIndex"
22
+ :class="classes.description"
29
23
  >
30
- {{ desc }}
31
- </slot>
32
- </dd>
33
- </div>
24
+ <slot
25
+ name="description"
26
+ :item="item"
27
+ :description="desc"
28
+ :index="index"
29
+ :descriptionIndex="descIndex"
30
+ >
31
+ {{ desc }}
32
+ </slot>
33
+ </dd>
34
+ </div>
35
+ </template>
36
+ <slot v-else></slot>
34
37
  </dl>
35
38
  </template>
36
39
 
37
40
  <script setup>
38
- import { computed } from 'vue';
41
+ import { computed, provide } from 'vue';
39
42
  import { useModifiers } from "../../composables/useModifiers.js";
40
43
 
41
44
  const props = defineProps({
@@ -85,6 +88,8 @@
85
88
  compact: Boolean,
86
89
  });
87
90
 
91
+ provide("uluDefinitionListClasses", computed(() => props.classes));
92
+
88
93
  const internalModifiers = computed(() => ({
89
94
  "inline" : props.inline,
90
95
  "inline-all" : props.inlineAll,
@@ -0,0 +1,43 @@
1
+ <template>
2
+ <div :class="[listClasses.item, classes?.item]">
3
+ <dt :class="[listClasses.term, classes?.term]">
4
+ <slot name="term">{{ term }}</slot>
5
+ </dt>
6
+ <dd
7
+ v-for="(desc, index) in descriptions"
8
+ :key="index"
9
+ :class="[listClasses.description, classes?.description]"
10
+ >
11
+ <slot name="description" :description="desc" :index="index">
12
+ {{ desc }}
13
+ </slot>
14
+ </dd>
15
+ </div>
16
+ </template>
17
+
18
+ <script setup>
19
+ import { computed, inject } from "vue";
20
+
21
+ const props = defineProps({
22
+ /**
23
+ * The term text (renders inside dt)
24
+ */
25
+ term: String,
26
+ /**
27
+ * The description text or array of strings (renders inside dd)
28
+ */
29
+ description: [String, Array],
30
+ /**
31
+ * Optional classes object to override/append to injected parent classes { item, term, description }
32
+ */
33
+ classes: Object
34
+ });
35
+
36
+ const injectedClasses = inject("uluDefinitionListClasses", { value: {} });
37
+ const listClasses = computed(() => injectedClasses.value || {});
38
+
39
+ const descriptions = computed(() => {
40
+ if (!props.description) return [];
41
+ return Array.isArray(props.description) ? props.description : [props.description];
42
+ });
43
+ </script>
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <component
3
- v-if="items?.length"
3
+ v-if="items !== undefined ? items.length : $slots.default"
4
4
  :is="listElement"
5
5
  :class="[
6
6
  {
@@ -17,23 +17,26 @@
17
17
  :reversed="isOrdered ? reversed : null"
18
18
  :start="start"
19
19
  >
20
- <li
21
- v-for="(item, index) in items"
22
- :key="index"
23
- :class="[
24
- classes.item,
25
- item?.classes?.item
26
- ]"
27
- >
28
- <slot :item="item" :index="index">
29
- {{ item }}
30
- </slot>
31
- </li>
20
+ <template v-if="items !== undefined">
21
+ <li
22
+ v-for="(item, index) in items"
23
+ :key="index"
24
+ :class="[
25
+ classes.item,
26
+ item?.classes?.item
27
+ ]"
28
+ >
29
+ <slot :item="item" :index="index">
30
+ {{ item }}
31
+ </slot>
32
+ </li>
33
+ </template>
34
+ <slot v-else></slot>
32
35
  </component>
33
36
  </template>
34
37
 
35
38
  <script setup>
36
- import { computed } from "vue";
39
+ import { computed, provide } from "vue";
37
40
 
38
41
  const props = defineProps({
39
42
  /**
@@ -84,6 +87,8 @@
84
87
  listStyleType: String,
85
88
  });
86
89
 
90
+ provide("uluListClasses", computed(() => props.classes));
91
+
87
92
  const isOrdered = computed(() => props.ordered || props.forceOrdered);
88
93
  const listElement = computed(() => isOrdered.value ? "ol" : "ul");
89
94
  </script>
@@ -0,0 +1,19 @@
1
+ <template>
2
+ <li :class="[listClasses.item, classes]">
3
+ <slot></slot>
4
+ </li>
5
+ </template>
6
+
7
+ <script setup>
8
+ import { computed, inject } from "vue";
9
+
10
+ defineProps({
11
+ /**
12
+ * Optional class binding to append to the injected parent classes
13
+ */
14
+ classes: [String, Array, Object]
15
+ });
16
+
17
+ const injectedClasses = inject("uluListClasses", { value: {} });
18
+ const listClasses = computed(() => injectedClasses.value || {});
19
+ </script>
@@ -23,6 +23,7 @@ export { default as UluCallout } from './elements/UluCallout.vue';
23
23
  export { default as UluCaptionedFigure } from './elements/UluCaptionedFigure.vue';
24
24
  export { default as UluCard } from './elements/UluCard.vue';
25
25
  export { default as UluDefinitionList } from './elements/UluDefinitionList.vue';
26
+ export { default as UluDefinitionListItem } from './elements/UluDefinitionListItem.vue';
26
27
  export { default as UluExternalLink } from './elements/UluExternalLink.vue';
27
28
  export { default as UluIcon } from './elements/UluIcon.vue';
28
29
  export { default as UluImage } from './elements/UluImage.vue';
@@ -31,6 +32,7 @@ export { default as UluImage } from './elements/UluImage.vue';
31
32
  // export { default as UluImageSlider } from './elements/UluImageSlider.vue';
32
33
 
33
34
  export { default as UluList } from './elements/UluList.vue';
35
+ export { default as UluListItem } from './elements/UluListItem.vue';
34
36
  export { default as UluMain } from './elements/UluMain.vue';
35
37
  export { default as UluOverflowScroller } from './elements/UluOverflowScroller.vue';
36
38
  export { default as UluRule } from './elements/UluRule.vue';
@@ -5,18 +5,18 @@
5
5
  v-if="items.length"
6
6
  >
7
7
  <ol :class="classes.list">
8
- <li v-for="(item, index) in items" :key="index" :class="classes.item">
8
+ <li v-for="(item, index) in items" :key="index" :class="[classes.item, item?.classes?.item]">
9
9
  <router-link
10
10
  v-if="!item.current"
11
11
  :to="item.to"
12
- :class="classes.link"
12
+ :class="[classes.link, item?.classes?.link]"
13
13
  :aria-current="item.current ? 'page' : null"
14
14
  >
15
15
  <slot :item="item">
16
16
  {{ item.title }}
17
17
  </slot>
18
18
  </router-link>
19
- <span v-else :class="item.current">
19
+ <span v-else :class="[classes.current, item?.classes?.current]">
20
20
  <slot :item="item">
21
21
  {{ item.title }}
22
22
  </slot>
@@ -24,7 +24,7 @@
24
24
  <template v-if="index < items.length - 1">
25
25
  <slot name="separator">
26
26
  <UluIcon
27
- :class="classes.separator"
27
+ :class="[classes.separator, item?.classes?.separator]"
28
28
  :icon="separatorIcon || 'type:pathSeparator'"
29
29
  />
30
30
  </slot>
@@ -56,7 +56,7 @@
56
56
  separatorIcon: String,
57
57
  /**
58
58
  * Classes object to be applied to elements.
59
- * Keys: nav, list, item, link, icon
59
+ * Keys: nav, list, item, link, current, separator
60
60
  */
61
61
  classes: {
62
62
  type: Object,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ulu/frontend-vue",
3
- "version": "0.5.2",
3
+ "version": "0.5.3",
4
4
  "description": "A modular, tree-shakeable Vue 3 component library for the Ulu Frontend theming system, plus general utilities for Vue development",
5
5
  "type": "module",
6
6
  "files": [