import { h, ComponentProps } from "preact"; import "ojs/ojlistview"; import { ojListView } from "ojs/ojlistview"; import MutableArrayDataProvider = require("ojs/ojmutablearraydataprovider"); import { useState, useCallback } from "preact/hooks"; type Props = { data?: MutableArrayDataProvider; selectedActivity: Item | null; onItemChanged: (item: Item) => void; }; type Item = { id: number; name: string; short_desc?: string; price?: number; quantity?: number; quantity_shipped?: number; quantity_instock?: number; activity_id?: number; image?: string; }; type ActivityItem = { id: number; name: string; items: Array; short_desc: string; image: string; }; const DEFAULT_ACTIVITY_ITEM_STATE: Partial = {}; const listItemRenderer = (item: ojListView.ItemTemplateContext) => { const image = item.data.image.replace("css", "styles"); return (
{item.data.name}
); }; type ListViewProps = ComponentProps<"oj-list-view">; const gridlinesItemVisible: ListViewProps["gridlines"] = { item: "visible" }; const scrollPolicyOpts: ListViewProps["scrollPolicyOptions"] = { fetchSize: 5 }; const ActivityItemContainer = (props: Props) => { const activityItemDataProvider = props.data; const [activityItemValue, setActivityItemValue] = useState( DEFAULT_ACTIVITY_ITEM_STATE ); const [itemData, setItemData] = useState(props.selectedActivity!); const selectedActivityItemChanged = useCallback( (event: ojListView.firstSelectedItemChanged) => { let tempItem = event.detail.value.data; props.onItemChanged(tempItem); setActivityItemValue(tempItem); setItemData(tempItem); }, [activityItemValue] ); return (

Activity Items

); }; export default ActivityItemContainer;