Skip to content

Commit

Permalink
chore: make WelcomeHero extensible (#4039)
Browse files Browse the repository at this point in the history
  • Loading branch information
imorland authored Sep 29, 2024
1 parent 9038ff6 commit 3ebd218
Showing 1 changed file with 35 additions and 17 deletions.
52 changes: 35 additions & 17 deletions framework/core/js/src/forum/components/WelcomeHero.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import app from '../app';
import Component from '../../common/Component';
import Button from '../../common/components/Button';
import type Mithril from 'mithril';
import ItemList from '../../common/utils/ItemList';

export interface IWelcomeHeroAttrs {}

Expand All @@ -24,25 +25,9 @@ export default class WelcomeHero extends Component<IWelcomeHeroAttrs> {
view(vnode: Mithril.Vnode<IWelcomeHeroAttrs, this>) {
if (this.isHidden()) return null;

const slideUp = () => {
this.$().slideUp(this.hide.bind(this));
};

return (
<header className="Hero WelcomeHero">
<div className="container">
<Button
icon="fas fa-times"
onclick={slideUp}
className="Hero-close Button Button--icon Button--link"
aria-label={app.translator.trans('core.forum.welcome_hero.hide')}
/>

<div className="containerNarrow">
<h1 className="Hero-title">{app.forum.attribute('welcomeTitle')}</h1>
<div className="Hero-subtitle">{m.trust(app.forum.attribute('welcomeMessage'))}</div>
</div>
</div>
<div className="container">{this.viewItems().toArray()}</div>
</header>
);
}
Expand All @@ -66,4 +51,37 @@ export default class WelcomeHero extends Component<IWelcomeHeroAttrs> {

return false;
}

viewItems(): ItemList<Mithril.Children> {
const items = new ItemList<Mithril.Children>();

const slideUp = () => {
this.$().slideUp(this.hide.bind(this));
};

items.add(
'dismiss-button',
<Button
icon="fas fa-times"
onclick={slideUp}
className="Hero-close Button Button--icon Button--link"
aria-label={app.translator.trans('core.forum.welcome_hero.hide')}
/>,
100
);

items.add('content', <div className="containerNarrow">{this.contentItems().toArray()}</div>, 80);

return items;
}

contentItems(): ItemList<Mithril.Children> {
const items = new ItemList<Mithril.Children>();

items.add('title', <h1 className="Hero-title">{app.forum.attribute('welcomeTitle')}</h1>, 100);

items.add('subtitle', <div className="Hero-subtitle">{m.trust(app.forum.attribute('welcomeMessage'))}</div>);

return items;
}
}

0 comments on commit 3ebd218

Please sign in to comment.