@ulu/frontend-vue 0.1.0-beta.18 → 0.1.0-beta.19

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 (28) hide show
  1. package/dist/{breakpoints-Cuct6LCy.js → breakpoints-yajtVs6n.js} +1 -1
  2. package/dist/frontend-vue.js +1 -1
  3. package/dist/{index-NdgoSqkD.js → index-RLrfaaN1.js} +1461 -1502
  4. package/lib/components/elements/UluBadge.vue +27 -28
  5. package/lib/components/elements/UluBadgeStack.vue +8 -13
  6. package/lib/components/elements/UluDefinitionList.vue +14 -17
  7. package/lib/components/elements/UluExternalLink.vue +21 -27
  8. package/lib/components/elements/UluIcon.vue +11 -1
  9. package/lib/components/elements/UluList.vue +53 -55
  10. package/lib/components/elements/UluSpokeSpinner.vue +12 -18
  11. package/lib/components/elements/UluTag.vue +35 -35
  12. package/lib/components/forms/UluCheckboxMenu.vue +32 -31
  13. package/lib/components/forms/UluFileDisplay.vue +40 -31
  14. package/lib/components/forms/UluFormFile.vue +22 -24
  15. package/lib/components/forms/UluFormMessage.vue +7 -10
  16. package/lib/components/forms/UluFormSelect.vue +16 -16
  17. package/lib/components/forms/UluFormText.vue +15 -15
  18. package/lib/components/forms/UluSearchForm.vue +8 -10
  19. package/lib/components/navigation/UluMenu.vue +2 -2
  20. package/lib/components/systems/scroll-anchors/UluScrollAnchors.vue +2 -1
  21. package/lib/components/systems/slider/UluImageSlideShow.vue +1 -1
  22. package/lib/components/systems/slider/UluSlideShow.vue +8 -3
  23. package/lib/components/systems/table-sticky/UluTableSticky.vue +7 -7
  24. package/lib/components/systems/table-sticky/UluTableStickyTable.vue +3 -3
  25. package/lib/plugins/core/index.js +4 -1
  26. package/lib/plugins/toast/UluToast.vue +1 -1
  27. package/package.json +7 -8
  28. package/types/plugins/core/index.d.ts.map +1 -1
@@ -3,18 +3,15 @@
3
3
  'site-form__error' : error,
4
4
  'site-form__warning' : warning
5
5
  }">
6
- <FaIcon v-if="error" :icon="$site.getIcon('error')"/>
7
- <FaIcon v-if="warning" :icon="$site.getIcon('warning')"/>
6
+ <UluIcon v-if="error || warning" :icon="`type:${ error ? 'error' : 'warning' }`" />
8
7
  <slot/>
9
8
  </p>
10
9
  </template>
11
10
 
12
- <script>
13
- export default {
14
- name: "FormMessage",
15
- props: {
16
- warning: Boolean,
17
- error: Boolean,
18
- }
19
- };
11
+ <script setup>
12
+ import UluIcon from "../elements/UluIcon.vue";
13
+ defineProps({
14
+ warning: Boolean,
15
+ error: Boolean,
16
+ });
20
17
  </script>
@@ -18,20 +18,20 @@
18
18
  </div>
19
19
  </template>
20
20
 
21
- <script>
22
- let count = 0;
23
- export default {
24
- name: "FormSelect",
25
- props: {
26
- label: String,
27
- modelValue: String,
28
- options: Array,
29
- labelHidden: Boolean
30
- },
31
- data() {
32
- return {
33
- id: `select-id-${ ++count }`
34
- };
35
- }
36
- };
21
+ <script setup>
22
+ const getNextId = (() => {
23
+ let count = 0;
24
+ return () => `select-id-${++count}`;
25
+ })();
26
+
27
+ defineProps({
28
+ label: String,
29
+ modelValue: String,
30
+ options: Array,
31
+ labelHidden: Boolean
32
+ });
33
+
34
+ defineEmits(['update:modelValue']);
35
+
36
+ const id = getNextId();
37
37
  </script>
@@ -14,19 +14,19 @@
14
14
  </div>
15
15
  </template>
16
16
 
17
- <script>
18
- let count = 0;
19
- export default {
20
- name: "FormText",
21
- props: {
22
- label: String,
23
- modelValue: String,
24
- labelHidden: Boolean
25
- },
26
- data() {
27
- return {
28
- id: `text-input-id-${ ++count }`
29
- };
30
- }
31
- };
17
+ <script setup>
18
+ const getNextId = (() => {
19
+ let count = 0;
20
+ return () => `text-input-id-${++count}`;
21
+ })();
22
+
23
+ defineProps({
24
+ label: String,
25
+ modelValue: String,
26
+ labelHidden: Boolean
27
+ });
28
+
29
+ defineEmits(['update:modelValue']);
30
+
31
+ const id = getNextId();
32
32
  </script>
@@ -13,19 +13,17 @@
13
13
  class="search-form__submit button button--primary"
14
14
  aria-label="Submit Search"
15
15
  >
16
- <FaIcon :icon="$site.getIcon('search')"/>
16
+ <UluIcon icon="type:search" />
17
17
  </button>
18
18
  </div>
19
19
  </template>
20
20
 
21
- <script>
22
- export default {
23
- name: "SearchForm",
24
- props: {
25
- placeholder: {
26
- type: String,
27
- default: "Titles, keyword…"
28
- }
21
+ <script setup>
22
+ import UluIcon from "../elements/UluIcon.vue";
23
+ defineProps({
24
+ placeholder: {
25
+ type: String,
26
+ default: "Titles, keyword…"
29
27
  }
30
- };
28
+ });
31
29
  </script>
@@ -60,7 +60,7 @@
60
60
  /**
61
61
  * Fired anytime a item is clicked
62
62
  */
63
- "itemClick"
63
+ "item-click"
64
64
  ],
65
65
  props: {
66
66
  /**
@@ -98,7 +98,7 @@
98
98
  if (item.click) {
99
99
  item.click(event);
100
100
  }
101
- this.$emit("itemClick", { item, event });
101
+ this.$emit("item-click", { item, event });
102
102
  }
103
103
  }
104
104
  };
@@ -10,6 +10,7 @@
10
10
  import { SECTIONS, REGISTER, UNREGISTER } from "./symbols.js";
11
11
  export default {
12
12
  name: "ScrollAnchors",
13
+ emits: ["section-change"],
13
14
  props: {
14
15
  firstItemActive: Boolean,
15
16
  /**
@@ -97,7 +98,7 @@
97
98
  } else if (lastExiting && section.active) {
98
99
  removeActive();
99
100
  }
100
- this.$emit("sectionChange", {
101
+ this.$emit("section-change", {
101
102
  section,
102
103
  sections,
103
104
  active: isIntersecting
@@ -9,7 +9,7 @@
9
9
  <UluSlideShow
10
10
  class="slideshow--images"
11
11
  :items="images"
12
- @slideChange="slideChange"
12
+ @slide-change="slideChange"
13
13
  >
14
14
  <template #slide="{ item }">
15
15
  <img :src="item.src" :alt="item.alt">
@@ -50,7 +50,7 @@
50
50
  @click="previous"
51
51
  :disabled="!canScrollLeft"
52
52
  >
53
- <FaIcon class="slideshow__control-icon" icon="fas fa-chevron-left"/>
53
+ <UluIcon class="slideshow__control-icon" icon="type:next"/>
54
54
  </button>
55
55
  </li>
56
56
  <li class="slideshow__controls-item slideshow__controls-item--next">
@@ -60,7 +60,7 @@
60
60
  @click="next"
61
61
  :disabled="!canScrollRight"
62
62
  >
63
- <FaIcon class="slideshow__control-icon" icon="fas fa-chevron-right"/>
63
+ <UluIcon class="slideshow__control-icon" icon="type:previous" />
64
64
  </button>
65
65
  </li>
66
66
  </ul>
@@ -97,8 +97,13 @@
97
97
  </template>
98
98
 
99
99
  <script>
100
+ import UluIcon from "../../elements/UluIcon.vue";
100
101
  export default {
101
102
  name: 'SlideShow',
103
+ emits: ['slide-change'],
104
+ components: {
105
+ UluIcon
106
+ },
102
107
  props: {
103
108
  /**
104
109
  * Should slides be focusable by tab key
@@ -278,7 +283,7 @@
278
283
  this.$nextTick(() => {
279
284
  const slide = this.getSlideByElement(entry.target);
280
285
  slide.active = entry.isIntersecting;
281
- this.$emit('slideChange', { slide, track, nav });
286
+ this.$emit('slide-change', { slide, track, nav });
282
287
  });
283
288
  });
284
289
  };
@@ -43,7 +43,7 @@
43
43
  pointerEvents: sizesCalculated ? 'auto' : 'none',
44
44
  width: tableWidth
45
45
  }"
46
- @columnSorted="applySort"
46
+ @column-sorted="applySort"
47
47
  >
48
48
  <template v-for="(_, name) in $slots" v-slot:[name]="slotData">
49
49
  <slot :name="name" v-bind="slotData" />
@@ -66,7 +66,7 @@
66
66
  opacity: headerOpacityX,
67
67
  pointerEvents: headerVisibleX ? 'auto' : 'none'
68
68
  }"
69
- @columnSorted="applySort"
69
+ @column-sorted="applySort"
70
70
  >
71
71
  <template v-for="(_, name) in $slots" v-slot:[name]="slotData">
72
72
  <slot :name="name" v-bind="slotData" />
@@ -138,9 +138,9 @@
138
138
  :getRowValue="getRowValue"
139
139
  :getColumnTitle="getColumnTitle"
140
140
  @vue:mounted="tableReady"
141
- @actualHeaderRemoved="headerRemoved"
142
- @actualHeaderAdded="headerAdded"
143
- @columnSorted="applySort"
141
+ @actual-header-removed="headerRemoved"
142
+ @actual-header-added="headerAdded"
143
+ @column-sorted="applySort"
144
144
  >
145
145
  <template v-for="(_, name) in $slots" v-slot:[name]="slotData">
146
146
  <slot :name="name" v-bind="slotData" />
@@ -167,7 +167,7 @@
167
167
  opacity: headerOpacityX,
168
168
  pointerEvents: headerVisibleX ? 'auto' : 'none'
169
169
  }"
170
- @columnSorted="applySort"
170
+ @column-sorted="applySort"
171
171
  >
172
172
  <template v-for="(_, name) in $slots" v-slot:[name]="slotData">
173
173
  <slot :name="name" v-bind="slotData" />
@@ -443,7 +443,7 @@
443
443
  } else {
444
444
  column.sortApplied = true;
445
445
  }
446
- this.$emit("columnSort", column);
446
+ this.$emit("column-sort", column);
447
447
  },
448
448
  onColumnResize() {
449
449
  if (this.sizesPainted) {
@@ -50,7 +50,7 @@
50
50
  :class="{
51
51
  'table-sticky__sort-button--focused' : column.sortFocused,
52
52
  }"
53
- @click="$emit('columnSorted', column)"
53
+ @click="$emit('column-sorted', column)"
54
54
  @focus="handleSortFocus(column, true)"
55
55
  @blur="handleSortFocus(column, false)"
56
56
  :aria-pressed="column.sortApplied ? 'true' : 'false'"
@@ -199,9 +199,9 @@
199
199
  const { id } = column;
200
200
  const old = headerRefs[id];
201
201
  if (old) {
202
- this.$emit("actualHeaderRemoved", old);
202
+ this.$emit("actual-header-removed", old);
203
203
  }
204
- this.$emit("actualHeaderAdded", el);
204
+ this.$emit("actual-header-added", el);
205
205
  headerRefs[id] = el;
206
206
  },
207
207
  /**
@@ -22,7 +22,10 @@ const defaults = {
22
22
  resizeBoth: "fas fa-grip",
23
23
  ellipsis: "fas fa-ellipsis",
24
24
  pathSeparator: "fas fa-chevron-right",
25
- image: "fas fa-image"
25
+ image: "fas fa-image",
26
+ file: "fas fa-file",
27
+ next: "fas fa-chevron-left",
28
+ previous: "fas fa-chevron-right"
26
29
  }
27
30
  };
28
31
 
@@ -13,7 +13,7 @@
13
13
  >
14
14
  <div v-if="toast.icon || $slots.icon" class="toast__icon" :class="classes.icon">
15
15
  <slot name="icon" :toast="toast">
16
- <FaIcon v-if="toast.icon" :icon="toast.icon"/>
16
+ <UluIcon v-if="toast.icon" :icon="toast.icon"/>
17
17
  </slot>
18
18
  </div>
19
19
  <div class="toast__content" :class="classes.content">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ulu/frontend-vue",
3
- "version": "0.1.0-beta.18",
3
+ "version": "0.1.0-beta.19",
4
4
  "description": "A modular and tree-shakeable Vue 3 component library for the Ulu frontend",
5
5
  "type": "module",
6
6
  "files": [
@@ -57,13 +57,13 @@
57
57
  "homepage": "https://github.com/Jscherbe/frontend-vue#readme",
58
58
  "peerDependencies": {
59
59
  "@headlessui/vue": "^1.7.23",
60
- "@ulu/frontend": "^0.1.0-beta.100",
60
+ "@ulu/frontend": "^0.1.0-beta.102",
61
61
  "vue": "^3.5.17",
62
62
  "vue-router": "^4.5.1"
63
63
  },
64
64
  "optionalDependencies": {
65
- "gsap": "^3.13.0",
66
65
  "fuse.js": "^6.6.2",
66
+ "gsap": "^3.13.0",
67
67
  "vue3-dropzone": "^2.2.1"
68
68
  },
69
69
  "dependencies": {
@@ -76,10 +76,10 @@
76
76
  "@fortawesome/free-solid-svg-icons": "^6.7.2",
77
77
  "@fortawesome/vue-fontawesome": "^3.0.8",
78
78
  "@storybook/addon-docs": "^9.1.1",
79
- "@storybook/addon-links": "^9.1.1",
80
79
  "@storybook/addon-essentials": "^9.0.0-alpha.12",
80
+ "@storybook/addon-links": "^9.1.1",
81
81
  "@storybook/vue3-vite": "^9.1.1",
82
- "@ulu/frontend": "^0.1.0-beta.100",
82
+ "@ulu/frontend": "^0.1.0-beta.102",
83
83
  "@vitejs/plugin-vue": "^6.0.0",
84
84
  "ollama": "^0.5.16",
85
85
  "react": "^19.1.1",
@@ -87,12 +87,11 @@
87
87
  "sass-embedded": "^1.89.2",
88
88
  "storybook": "^9.1.1",
89
89
  "storybook-addon-vue-mdx": "^2.0.2",
90
+ "typescript": "^5.3.3",
90
91
  "vite": "^7.0.0",
91
- "vue-router": "^4.5.1",
92
- "typescript": "^5.3.3"
92
+ "vue-router": "^4.5.1"
93
93
  },
94
94
  "volta": {
95
95
  "node": "22.17.0"
96
96
  }
97
97
  }
98
-
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/plugins/core/index.js"],"names":[],"mappings":"AA8BA,mEAyDC;AA3DD,gCAA0D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/plugins/core/index.js"],"names":[],"mappings":"AAiCA,mEAyDC;AA3DD,gCAA0D"}