This PR is based off of https://github.com/matomo-org/matomo/pull/18214.
This PR is fairly complicated since the original notifications code added and removed DOM nodes itself, where this management is meant to be done (in most cases) by the framework.
Migrated notification angularjs directive to Vue (in Notification.vue).
Moved notification.js logic to new NotificationsStore class. This store houses a list of displayed notifications. Notifications are added to the store to display them, removed from the store to destroy them.
Created NotificationGroup component to display a list of notifications based on what's in the store. This approximates the
placeat functionality except instead of directly adding DOM nodes to an element, we are adding notifications to the store which a NotificationGroup will see and display. The specific NotificationGroup that displays the notification is determined by a new
group property in client side notifications.
Added toast functionality to NotificationsStore (the previous implementation appears to be completely broken).
@diosmosis could you please merge in the latest changes from 4.x-dev and resolve the conflicts. The diff currently also shows all changes from the previous PR, so it's hard to look through it.