DEV: implements <Chat::Navbar /> (#24917)

This new navbar component is used for every navbar in chat, full page or drawer, and any screen.

This commit also uses this opportunity to correctly decouple drawer-routes from full page routes. This will avoid having this kind of properties in components: `@includeHeader={{false}}`. The header is now defined in the parent template using a navbar. Each route has now its own template wrapped in a div of the name of the route, eg: `<div class="c-routes-threads">..</div>`.

The navbar API:

```gjs
<Navbar as |navbar|>
 <navbar.BackButton />
 <navbar.Title @title="Foo" />
 <navbar.ChannelTitle @channel={{@channel}} />
 <navbar.Actions as |action|>
   <action.CloseThreadButton />
 </navbar.Actions>
</navbar>
```

The full list of components is listed in `plugins/chat/assets/javascripts/discourse/components/navbar/index.gjs` and `plugins/chat/assets/javascripts/discourse/components/navbar/actions.gjs`.

Visually the header is not changing much, only in drawer mode the background has been removed.

This commit also introduces a `<List />` component to facilitate rendering lists in chat plugin.
This commit is contained in:
Joffrey JAFFEUX
2023-12-18 17:49:58 +01:00
committed by GitHub
parent a08691a599
commit 53b96638c5
110 changed files with 1370 additions and 1716 deletions

View File

@ -16,9 +16,10 @@ module("Discourse Chat | Component | chat-thread-header", function (hooks) {
<Chat::Thread::Header @thread={{this.thread}} @channel={{this.thread.channel}} />
`);
assert.equal(
query(".chat-thread-header__label").innerHTML.trim(),
"&lt;style&gt;body { background: red;}&lt;/style&gt;"
assert.ok(
query(".c-navbar__title")
.innerHTML.trim()
.includes("&lt;style&gt;body { background: red;}&lt;/style&gt;")
);
});
});