Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions addons/web_client/static/src/demo/demo_client_action.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { Component } from "@odoo/owl";
import { notify } from "@web_core/notification/notification_plugin";

export class DemoClientAction extends Component {
static template = "web_client.DemoClientAction";

async notify() {
const rnd = Math.random().toString(36).substring(2, 10);
/** @type {any} */
const types = ["danger", "info", "success", "warning"];
await notify(rnd, {
title: "Notification",
type: types[Math.floor(Math.random() * types.length)],
});
}
}
94 changes: 94 additions & 0 deletions addons/web_client/static/src/demo/demo_client_action.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
<?xml version="1.0" encoding="UTF-8" ?>
<templates xml:space="preserve">

<t t-name="web_client.DemoClientAction">
<div class="demo">
<h1>Demo Client Action!</h1>
<button t-on-click="this.notify">Push notification</button>
<p>This is the content of the page. Scroll down to see more.</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
</div>
</t>

</templates>
15 changes: 0 additions & 15 deletions addons/web_client/static/src/menu_plugin.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,21 +39,6 @@ import { serviceRegistry } from "@web_core/services";
*/

class MenuItem {
/** @type {number | null} */
actionId;
/** @type {number} */
id;
/** @type {MenuItem[]} */
menuItems;
/** @type {string} */
name;
/** @type {string | null} */
path;
/** @type {string | null} */
resModel;
/** @type {string} */
xmlId;

/**
* @param {MenuItemData} menuItemData
* @param {MenuDataMap} dataMap
Expand Down
15 changes: 2 additions & 13 deletions addons/web_client/static/src/web_client.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@ import { Component, onWillStart } from "@odoo/owl";
import { ORM } from "@web_core/orm";
import { OverlayContainer } from "@web_core/overlay/overlay_container";
import { protectedPlugin } from "@web_core/plugin_protection";
import { DemoClientAction } from "./demo/demo_client_action";
import { Navbar } from "./navbar";
import { notify } from "@web_core/notification/notification_plugin";

export class WebClient extends Component {
static template = "web_client.WebClient";
static components = { Navbar, OverlayContainer };
static components = { Navbar, OverlayContainer, DemoClientAction };

orm = protectedPlugin(ORM);

Expand All @@ -18,15 +18,4 @@ export class WebClient extends Component {
});
});
}

async notify() {
const rnd = Math.random().toString(36).substring(2, 10);
/** @type {any} */
const types = ["danger", "info", "success", "warning"];
await notify(rnd, {
title: "Notification",
type: types[Math.floor(Math.random() * types.length)],
});
console.log("Notification closed");
}
}
86 changes: 1 addition & 85 deletions addons/web_client/static/src/web_client.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,91 +4,7 @@
<t t-name="web_client.WebClient">
<Navbar/>
<div class="content flex-grow overflow-y-auto">
<h1>Welcome to the page!</h1>
<button t-on-click="this.notify">Push notification</button>
<p>This is the content of the page. Scroll down to see more.</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<p>...more content...</p>
<DemoClientAction />
</div>
<OverlayContainer/>
</t>
Expand Down
18 changes: 18 additions & 0 deletions addons/web_core/static/src/notification/notification_plugin.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,26 @@
/**
* -----------------------------------------------------------------------------
* Notification Plugin
* -----------------------------------------------------------------------------
*
* This file defines the `NotificationPlugin`, a service-level plugin responsible
* for managing application notifications. It integrates with the overlay system
* to display notifications, maintains a reactive collection of active entries,
* and supports configurable types, durations, titles, and action buttons.
*
* A standalone `notify` function is also provided as a convenience wrapper
* around the service, allowing callers to trigger notifications without
* directly accessing the plugin instance.
* -----------------------------------------------------------------------------
*/

import { computed, plugin, Plugin, signal } from "@odoo/owl";
import { NotificationContainer } from "@web_core/notification/notification_container";
import { OverlayPlugin } from "@web_core/overlay/overlay_plugin";
import { service, serviceRegistry } from "@web_core/services";



/**
* @type {NotificationPlugin["push"]}
*/
Expand Down
4 changes: 3 additions & 1 deletion addons/web_core/static/src/overlay/overlay_container.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@

<t t-name="web_core.OverlayContainerItem">
<div class="wcore_overlay_container_item position-fixed h-100 w-100 top-0" style="pointer-events: none;">
<t t-component="this.props.overlay.component" t-props="this.props.overlay.props"/>
<div style="pointer-events: all;">
<t t-component="this.props.overlay.component" t-props="this.props.overlay.props"/>
</div>
</div>
</t>

Expand Down