Newer
Older
gnexus-ui-kit / src / vue / components / GnList.js
@Eugene Sukhodolskiy Eugene Sukhodolskiy 20 hours ago 657 bytes Add remaining Vue CSS wrappers
import { defineComponent, h } from "vue";
import { cx, iconNode } from "../utils.js";

export default defineComponent({
	name: "GnList",
	props: {
		items: { type: Array, default: () => [] },
		ordered: { type: Boolean, default: false },
		icons: { type: Boolean, default: false }
	},
	setup(props, { attrs, slots }) {
		const tag = props.ordered ? "ol" : "ul";

		return () => h(tag, {
			...attrs,
			class: cx("list", {
				"list-ordered": props.ordered,
				"with-icons": props.icons
			}, attrs.class)
		}, props.items.map(item => h("li", { class: "list-item" }, [
			iconNode(item.icon),
			slots.item?.({ item }) || item.label || item
		])));
	}
});