29 lines
674 B
JavaScript
29 lines
674 B
JavaScript
import { $html, $if, $for } from "sigpro";
|
|
import { joinClass, val } from "../core/utils.js";
|
|
|
|
/** LIST */
|
|
export const List = (props) => {
|
|
const {
|
|
items,
|
|
header,
|
|
render,
|
|
keyFn = (item, index) => index,
|
|
class: className,
|
|
...rest
|
|
} = props;
|
|
|
|
const listItems = $for(
|
|
items,
|
|
(item, index) => $html("li", { class: "list-row" }, [render(item, index)]),
|
|
keyFn
|
|
);
|
|
|
|
return $html(
|
|
"ul",
|
|
{
|
|
...rest,
|
|
class: joinClass("list bg-base-100 rounded-box shadow-md", className),
|
|
},
|
|
header ? [$if(header, () => $html("li", { class: "p-4 pb-2 text-xs opacity-60" }, [val(header)])), listItems] : listItems
|
|
);
|
|
}; |