@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.
- package/dist/{breakpoints-Cuct6LCy.js → breakpoints-yajtVs6n.js} +1 -1
- package/dist/frontend-vue.js +1 -1
- package/dist/{index-NdgoSqkD.js → index-RLrfaaN1.js} +1461 -1502
- package/lib/components/elements/UluBadge.vue +27 -28
- package/lib/components/elements/UluBadgeStack.vue +8 -13
- package/lib/components/elements/UluDefinitionList.vue +14 -17
- package/lib/components/elements/UluExternalLink.vue +21 -27
- package/lib/components/elements/UluIcon.vue +11 -1
- package/lib/components/elements/UluList.vue +53 -55
- package/lib/components/elements/UluSpokeSpinner.vue +12 -18
- package/lib/components/elements/UluTag.vue +35 -35
- package/lib/components/forms/UluCheckboxMenu.vue +32 -31
- package/lib/components/forms/UluFileDisplay.vue +40 -31
- package/lib/components/forms/UluFormFile.vue +22 -24
- package/lib/components/forms/UluFormMessage.vue +7 -10
- package/lib/components/forms/UluFormSelect.vue +16 -16
- package/lib/components/forms/UluFormText.vue +15 -15
- package/lib/components/forms/UluSearchForm.vue +8 -10
- package/lib/components/navigation/UluMenu.vue +2 -2
- package/lib/components/systems/scroll-anchors/UluScrollAnchors.vue +2 -1
- package/lib/components/systems/slider/UluImageSlideShow.vue +1 -1
- package/lib/components/systems/slider/UluSlideShow.vue +8 -3
- package/lib/components/systems/table-sticky/UluTableSticky.vue +7 -7
- package/lib/components/systems/table-sticky/UluTableStickyTable.vue +3 -3
- package/lib/plugins/core/index.js +4 -1
- package/lib/plugins/toast/UluToast.vue +1 -1
- package/package.json +7 -8
- 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
|
-
<
|
|
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
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
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
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
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
|
-
<
|
|
16
|
+
<UluIcon icon="type:search" />
|
|
17
17
|
</button>
|
|
18
18
|
</div>
|
|
19
19
|
</template>
|
|
20
20
|
|
|
21
|
-
<script>
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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
|
-
"
|
|
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("
|
|
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("
|
|
101
|
+
this.$emit("section-change", {
|
|
101
102
|
section,
|
|
102
103
|
sections,
|
|
103
104
|
active: isIntersecting
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
@click="previous"
|
|
51
51
|
:disabled="!canScrollLeft"
|
|
52
52
|
>
|
|
53
|
-
<
|
|
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
|
-
<
|
|
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('
|
|
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
|
-
@
|
|
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
|
-
@
|
|
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
|
-
@
|
|
142
|
-
@
|
|
143
|
-
@
|
|
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
|
-
@
|
|
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("
|
|
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('
|
|
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("
|
|
202
|
+
this.$emit("actual-header-removed", old);
|
|
203
203
|
}
|
|
204
|
-
this.$emit("
|
|
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
|
-
<
|
|
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.
|
|
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.
|
|
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.
|
|
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":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/plugins/core/index.js"],"names":[],"mappings":"AAiCA,mEAyDC;AA3DD,gCAA0D"}
|