/** * @license * Copyright (c) 2014, 2024, Oracle and/or its affiliates. * Licensed under The Universal Permissive License (UPL), Version 1.0 * as shown at https://oss.oracle.com/licenses/upl/ * @ignore */ import { h, ComponentProps } from "preact"; import "ojs/ojlistview"; import { ojListView } from "ojs/ojlistview"; import { useState, useCallback } from "preact/hooks"; import { RESTDataProvider } from "ojs/ojrestdataprovider"; import ItemActionsContainer from "./ItemActionsContainer"; import CreateNewItemDialog from "./CreateNewItemDialog"; import "ojs/ojformlayout"; import "ojs/ojinputtext"; import { ojDialog } from "ojs/ojdialog"; import { MutableRef } from "preact/hooks"; type Props = { data?: RESTDataProvider; 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 [isCreateOpened, setIsCreateOpened] = useState(false); const [isEditOpened, setIsEditOpened] = useState(false); const [itemData, setItemData] = useState(props.selectedActivity!); const openCreateDialog = () => { console.log("CreateNewItemDialog called"); setIsCreateOpened(true); }; const [activityItemValue, setActivityItemValue] = useState( DEFAULT_ACTIVITY_ITEM_STATE ); const selectedActivityItemChanged = useCallback( (event: ojListView.firstSelectedItemChanged) => { let tempItem = event.detail.value.data; props.onItemChanged(tempItem); setActivityItemValue(tempItem); setItemData(tempItem); }, [activityItemValue] ); const handleDialogClose = (ref: MutableRef, type: string) => { type === "create" ? setIsCreateOpened(false) : setIsEditOpened(false); ref.current.close(); }; return (

Activity Items

); }; export default ActivityItemContainer;