aboutsummaryrefslogtreecommitdiff
path: root/packages/studip-ui/src/composables
diff options
context:
space:
mode:
authorRon Lucke <lucke@elan-ev.de>2026-03-10 08:50:42 +0100
committerRon Lucke <lucke@elan-ev.de>2026-03-10 08:50:42 +0100
commit036aa3d9be58295ebca232aa2d02ada54679b3c1 (patch)
tree67c712857ff2dfd0121111edf54c6687fdf76142 /packages/studip-ui/src/composables
parentf7198ce453deae678c921b8e45c5ee7e00d6e8ee (diff)
add basics for essential componentsui-kit-essentials
Diffstat (limited to 'packages/studip-ui/src/composables')
-rw-r--r--packages/studip-ui/src/composables/index.js2
-rw-r--r--packages/studip-ui/src/composables/useSlotFilter.js25
2 files changed, 26 insertions, 1 deletions
diff --git a/packages/studip-ui/src/composables/index.js b/packages/studip-ui/src/composables/index.js
index cb0ff5c..7ad2d99 100644
--- a/packages/studip-ui/src/composables/index.js
+++ b/packages/studip-ui/src/composables/index.js
@@ -1 +1 @@
-export {};
+export { useSlotFilter } from './useSlotFilter.js'; \ No newline at end of file
diff --git a/packages/studip-ui/src/composables/useSlotFilter.js b/packages/studip-ui/src/composables/useSlotFilter.js
new file mode 100644
index 0000000..5b512d9
--- /dev/null
+++ b/packages/studip-ui/src/composables/useSlotFilter.js
@@ -0,0 +1,25 @@
+// useSlotFilter.js
+import { isVNode, Comment } from 'vue';
+
+export function useSlotFilter(slots) {
+ const getValidChildren = (componentName) => {
+ const rawNodes = slots.default ? slots.default() : [];
+
+ return rawNodes.filter(vnode => {
+ if (!isVNode(vnode) || vnode.type === Comment) return false;
+
+ const isCorrectComponent = vnode.type?.name === componentName ||
+ vnode.type?.__name === componentName;
+
+ if (!isCorrectComponent) {
+ if (vnode.type !== Symbol.for('v-fgt')) {
+ console.warn(`[UI Kit] ButtonGroup: Element vom Typ "${vnode.type?.name || vnode.type}" wurde entfernt.`);
+ }
+ return false;
+ }
+ return true;
+ });
+ };
+
+ return { getValidChildren };
+} \ No newline at end of file