Skip to content

Commit ae2214d

Browse files
committed
Rewrite transfer of global messages from components to be a lot simpler
1 parent 780437b commit ae2214d

4 files changed

Lines changed: 12 additions & 6 deletions

File tree

view/base/templates/component/messages.phtml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ use Loki\CssUtils\Util\CssClass;
1414
x-data="LokiMessagesComponent" x-cloak x-show="hasMessages">
1515
<template x-for="message in messages">
1616
<div
17+
:data-message-type="message.type"
1718
:data-message-text="message.text"
1819
@dblclick="removeMessage"
1920
@keyup.escape.window="removeMessage"
@@ -25,6 +26,7 @@ use Loki\CssUtils\Util\CssClass;
2526
x-html="message.text"
2627
></div>
2728
<button
29+
:data-message-type="message.type"
2830
:data-message-text="message.text"
2931
@click.prevent="removeMessage"
3032
class="<?= /* @noEscape */ $css('close w-3', 'button') ?>">

view/base/templates/script/component/message-component.phtml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use Magento\Framework\View\Element\Template;
88

99
$timeout = (int)$block->getTimeout(); // @todo Right source for this?
1010
if (!$timeout > 0) {
11-
$timeout = 10000;
11+
$timeout = 100000;
1212
}
1313
?>
1414
<script>
@@ -25,8 +25,9 @@ if (!$timeout > 0) {
2525
return this.messages.length > 0;
2626
},
2727
removeMessage() {
28-
const messageText = this.$el.getAttribute('data-message-text');
29-
Alpine.store('LokiMessageStore').removeMessage(messageText);
28+
const type = this.$el.getAttribute('data-message-type');
29+
const text = this.$el.getAttribute('data-message-text');
30+
Alpine.store('LokiMessageStore').removeMessage(type, text);
3031
},
3132
}));
3233
});

view/base/templates/script/directive/autoremove-directive.phtml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,10 @@ use Magento\Framework\View\Element\Template;
1111
Alpine.directive('autoremove', (el, { value, expression }, { evaluate }) => {
1212
if (expression) {
1313
const timeout = evaluate(expression);
14+
const messageType = el.getAttribute('data-message-type');
1415
const messageText = el.getAttribute('data-message-text');
1516
setTimeout(() => {
16-
Alpine.store('LokiMessageStore').removeMessage(messageText);
17+
Alpine.store('LokiMessageStore').removeMessage(messageType, messageText);
1718
}, timeout);
1819
}
1920
});

view/base/templates/script/store/message-store.phtml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,10 @@ use Magento\Framework\View\Element\Template;
4040
addMessage(type, text) {
4141
this.messages.push({type, text});
4242
},
43-
removeMessage(text) {
44-
this.messages = Object.values(this.messages).filter(message => message.text !== text);
43+
removeMessage(type, text) {
44+
this.messages = this.messages.filter(message => {
45+
return !(message.type === type && message.text === text);
46+
});
4547
},
4648
saveMessage(type, text) {
4749
const messages = this.getMessagesFromStore();

0 commit comments

Comments
 (0)