sodexo-dish-detail-template
The sodexo-dish-detail-template component displays detailed information about a specific dish.
Properties
| Property | HTML Attribute | Type | Default | Description |
|---|---|---|---|---|
siteId | site-id | string | - | Site identifier |
shopId | shop-id | string | - | Shop identifier |
serviceDate | service-date | string | - | Service date in ISO format (e.g., "2025-01-13") |
dishId | dish-id | string | - | Dish identifier to display details for |
Events
| Event | Type | Description |
|---|---|---|
sodexoDishDetailTemplateAddOrRemoveClicked | CustomEvent<DishSelected> | Emitted when add/remove to cart button is clicked. Recommended action: Navigate back to shop menu |
Event Details
DishSelected
interface DishSelected {
dishId: string;
siteId: string;
shopId: string;
serviceDate: string;
}
Usage
- HTML
<!DOCTYPE html>
<html>
<body>
<sodexo-dish-detail-template
site-id="site-123"
shop-id="shop-456"
dish-id="dish-789"
service-date="2025-01-13"
></sodexo-dish-detail-template>
<script>
const element = document.querySelector('sodexo-dish-detail-template');
// Handle add/remove to cart
element.addEventListener('sodexoDishDetailTemplateAddOrRemoveClicked', (event) => {
console.log('Dish action:', event.detail);
const { dishId, siteId, shopId, serviceDate } = event.detail;
// Navigate back to menu
window.history.back();
// Or redirect to menu
// window.location.href = `/menu?siteId=${event.detail.siteId}&shopId=${event.detail.shopId}&serviceDate=${serviceDate}`;
});
</script>
</body>
</html>
Property Naming Convention
Naming Syntax
When using properties:
- In HTML: Use kebab-case (e.g.,
api-key,site-id,dish-id) - In JavaScript: Use camelCase (e.g.,
apiKey,siteId,dishId) - Events: Can only be handled in JavaScript, not in HTML attributes
Navigation Flow
This diagram shows the recommended navigation flow for the dish detail template:
Recommended Actions
On sodexoDishDetailTemplateAddOrRemoveClicked: Navigate back to shop menu
const { dishId, siteId, shopId, serviceDate } = event.detail;
// Navigate back
navigate(`site/${siteId}/shop/${shopId}/service-date/${serviceDate}`); // or history.back()