diff --git a/src/Components/Templates/OverlayItemsIndexPage.tsx b/src/Components/Templates/OverlayItemsIndexPage.tsx index 58c1c3de..82f2c829 100644 --- a/src/Components/Templates/OverlayItemsIndexPage.tsx +++ b/src/Components/Templates/OverlayItemsIndexPage.tsx @@ -26,7 +26,8 @@ type breadcrumb = { export const OverlayItemsIndexPage = ({ url, layerName, parameterField, breadcrumbs, itemNameField, itemTextField, itemImageField, itemSymbolField, itemSubnameField, plusButton = true, children }: { layerName: string, url: string, parameterField: string, breadcrumbs: Array, itemNameField: string, itemTextField: string, itemImageField: string, itemSymbolField: string, itemSubnameField: string, plusButton?: boolean, children?: ReactNode }) => { console.log(itemSymbolField); - const [infoExpanded, setInfoExpanded] = useState(0); + const [infoExpanded, setInfoExpanded] = useState(new Map()); + const [loading, setLoading] = useState(false); const [addItemPopupType, setAddItemPopupType] = useState(""); @@ -124,36 +125,44 @@ export const OverlayItemsIndexPage = ({ url, layerName, parameterField, breadcru
{ items?.filter(i => i.layer?.name === layerName) - .sort((a, b) => { - // Convert date_created to milliseconds, handle undefined by converting to lowest possible date (0 milliseconds) - const dateA = a.date_updated ? new Date(a.date_updated).getTime() : a.date_created ? new Date(a.date_created).getTime() : 0; - const dateB = b.date_updated ? new Date(b.date_updated).getTime() : b.date_created ? new Date(b.date_created).getTime() : 0; - return dateB - dateA; // Subtracts milliseconds which are numbers - }) - .map((i, k) => { - return ( -
navigate(url + getValue(i, parameterField))}> - navigate("/edit-item/" + i.id)} deleteCallback={() => deleteItem(i)}> -
- + .sort((a, b) => { + // Convert date_created to milliseconds, handle undefined by converting to lowest possible date (0 milliseconds) + const dateA = a.date_updated ? new Date(a.date_updated).getTime() : a.date_created ? new Date(a.date_created).getTime() : 0; + const dateB = b.date_updated ? new Date(b.date_updated).getTime() : b.date_created ? new Date(b.date_created).getTime() : 0; + return dateB - dateA; // Subtracts milliseconds which are numbers + }) + .map((i, k) => { + return ( +
navigate(url + getValue(i, parameterField))}> + navigate("/edit-item/" + i.id)} deleteCallback={() => deleteItem(i)}> +
+ +
+
e.stopPropagation()}> + + { + infoExpanded.get(k) ? +

setInfoExpanded(prevMap => { + const newMap = new Map(prevMap); // Create a new Map from the previous Map + newMap.set(k, false); // Set new or update existing key-value pair + return newMap; // Return the new Map to update the state + })} >{`${i.date_updated && i.date_updated != i.date_created ? "updated" : "posted"} ${i && i.user_created && i.user_created.first_name ? `by ${i.user_created.first_name}` : ""} ${i.date_updated ? timeAgo(i.date_updated) : timeAgo(i.date_created!)}`}

+ : +

setInfoExpanded(prevMap => { + const newMap = new Map(prevMap); // Create a new Map from the previous Map + newMap.set(k, true); // Set new or update existing key-value pair + return newMap; // Return the new Map to update the state + })}>ⓘ

+ } +
+ { //** */ + } +
-
e.stopPropagation()}> - { - infoExpanded == k ? -

setInfoExpanded(0)} >{`${i.date_updated && i.date_updated != i.date_created ? "updated" : "posted" } ${i && i.user_created && i.user_created.first_name ? `by ${i.user_created.first_name}` : ""} ${i.date_updated ? timeAgo(i.date_updated) : timeAgo(i.date_created!)}`}

- : -

setInfoExpanded(k)}>ⓘ

- } -
- { //** */ - } -
-
+ ) - ) - - }) + }) } {addItemPopupType == "place" ?