mirror of
https://github.com/discourse/discourse.git
synced 2025-05-22 07:53:49 +08:00
DEV: Fix "ember/no-empty-glimmer-component-classes" lint (#24629)
This commit is contained in:
@ -1,23 +1,22 @@
|
|||||||
import Component from "@glimmer/component";
|
|
||||||
import i18n from "discourse-common/helpers/i18n";
|
import i18n from "discourse-common/helpers/i18n";
|
||||||
import AdminPluginsListItem from "./admin-plugins-list-item";
|
import AdminPluginsListItem from "./admin-plugins-list-item";
|
||||||
|
|
||||||
export default class AdminPluginsList extends Component {
|
const AdminPluginsList = <template>
|
||||||
<template>
|
<table class="admin-plugins-list grid">
|
||||||
<table class="admin-plugins-list grid">
|
<thead>
|
||||||
<thead>
|
<tr>
|
||||||
<tr>
|
<th>{{i18n "admin.plugins.name"}}</th>
|
||||||
<th>{{i18n "admin.plugins.name"}}</th>
|
<th>{{i18n "admin.plugins.version"}}</th>
|
||||||
<th>{{i18n "admin.plugins.version"}}</th>
|
<th>{{i18n "admin.plugins.enabled"}}</th>
|
||||||
<th>{{i18n "admin.plugins.enabled"}}</th>
|
<th></th>
|
||||||
<th></th>
|
</tr>
|
||||||
</tr>
|
</thead>
|
||||||
</thead>
|
<tbody>
|
||||||
<tbody>
|
{{#each @plugins as |plugin|}}
|
||||||
{{#each @plugins as |plugin|}}
|
<AdminPluginsListItem @plugin={{plugin}} />
|
||||||
<AdminPluginsListItem @plugin={{plugin}} />
|
{{/each}}
|
||||||
{{/each}}
|
</tbody>
|
||||||
</tbody>
|
</table>
|
||||||
</table>
|
</template>;
|
||||||
</template>
|
|
||||||
}
|
export default AdminPluginsList;
|
||||||
|
@ -1,44 +1,46 @@
|
|||||||
import Component from "@glimmer/component";
|
|
||||||
import CookText from "discourse/components/cook-text";
|
import CookText from "discourse/components/cook-text";
|
||||||
import i18n from "discourse-common/helpers/i18n";
|
import i18n from "discourse-common/helpers/i18n";
|
||||||
import and from "truth-helpers/helpers/and";
|
import and from "truth-helpers/helpers/and";
|
||||||
import not from "truth-helpers/helpers/not";
|
import not from "truth-helpers/helpers/not";
|
||||||
|
|
||||||
export default class DashboardNewFeatureItem extends Component {
|
const DashboardNewFeatureItem = <template>
|
||||||
<template>
|
<div class="admin-new-feature-item">
|
||||||
<div class="admin-new-feature-item">
|
<div class="admin-new-feature-item__content">
|
||||||
<div class="admin-new-feature-item__content">
|
<div class="admin-new-feature-item__header">
|
||||||
<div class="admin-new-feature-item__header">
|
{{#if (and @item.emoji (not @item.screenshot_url))}}
|
||||||
{{#if (and @item.emoji (not @item.screenshot_url))}}
|
<div class="admin-new-feature-item__new-feature-emoji">
|
||||||
<div
|
{{@item.emoji}}
|
||||||
class="admin-new-feature-item__new-feature-emoji"
|
</div>
|
||||||
>{{@item.emoji}}</div>
|
{{/if}}
|
||||||
{{/if}}
|
<h3>
|
||||||
<h3>
|
{{@item.title}}
|
||||||
{{@item.title}}
|
</h3>
|
||||||
</h3>
|
</div>
|
||||||
</div>
|
|
||||||
{{#if @item.screenshot_url}}
|
{{#if @item.screenshot_url}}
|
||||||
<img
|
<img
|
||||||
src={{@item.screenshot_url}}
|
src={{@item.screenshot_url}}
|
||||||
class="admin-new-feature-item__screenshot"
|
class="admin-new-feature-item__screenshot"
|
||||||
alt={{@item.title}}
|
alt={{@item.title}}
|
||||||
/>
|
/>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
<div class="admin-new-feature-item__feature-description">
|
||||||
|
<CookText @rawText={{@item.description}} />
|
||||||
|
|
||||||
|
{{#if @item.link}}
|
||||||
|
<a
|
||||||
|
href={{@item.link}}
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
class="admin-new-feature-item__learn-more"
|
||||||
|
>
|
||||||
|
{{i18n "admin.dashboard.new_features.learn_more"}}
|
||||||
|
</a>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<div class="admin-new-feature-item__feature-description">
|
|
||||||
<CookText @rawText={{@item.description}} />
|
|
||||||
{{#if @item.link}}
|
|
||||||
<a
|
|
||||||
href={{@item.link}}
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
class="admin-new-feature-item__learn-more"
|
|
||||||
>
|
|
||||||
{{i18n "admin.dashboard.new_features.learn_more"}}
|
|
||||||
</a>
|
|
||||||
{{/if}}
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</div>
|
||||||
}
|
</template>;
|
||||||
|
|
||||||
|
export default DashboardNewFeatureItem;
|
||||||
|
@ -36,6 +36,7 @@ class GlimmerComponentWithParentViewManager extends CustomComponentManager {
|
|||||||
* when building backwards-compatible versions of components. Any use of the parentView property
|
* when building backwards-compatible versions of components. Any use of the parentView property
|
||||||
* of the component should be considered deprecated.
|
* of the component should be considered deprecated.
|
||||||
*/
|
*/
|
||||||
|
// eslint-disable-next-line ember/no-empty-glimmer-component-classes
|
||||||
export default class GlimmerComponentWithDeprecatedParentView extends Component {}
|
export default class GlimmerComponentWithDeprecatedParentView extends Component {}
|
||||||
|
|
||||||
setInternalComponentManager(
|
setInternalComponentManager(
|
||||||
|
@ -1,13 +1,12 @@
|
|||||||
import Component from "@glimmer/component";
|
|
||||||
import DButton from "discourse/components/d-button";
|
import DButton from "discourse/components/d-button";
|
||||||
|
|
||||||
export default class PasskeyLoginButton extends Component {
|
const PasskeyLoginButton = <template>
|
||||||
<template>
|
<DButton
|
||||||
<DButton
|
@action={{@passkeyLogin}}
|
||||||
@action={{@passkeyLogin}}
|
@icon="user"
|
||||||
@icon="user"
|
@label="login.passkey.name"
|
||||||
@label="login.passkey.name"
|
class="btn-social passkey-login-button"
|
||||||
class="btn btn-social passkey-login-button"
|
/>
|
||||||
/>
|
</template>;
|
||||||
</template>
|
|
||||||
}
|
export default PasskeyLoginButton;
|
||||||
|
@ -9,9 +9,11 @@ import { forceMobile, resetMobile } from "discourse/lib/mobile";
|
|||||||
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
|
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
|
||||||
import { registerTemporaryModule } from "../helpers/temporary-module-helper";
|
import { registerTemporaryModule } from "../helpers/temporary-module-helper";
|
||||||
|
|
||||||
|
// eslint-disable-next-line ember/no-empty-glimmer-component-classes
|
||||||
class MockColocatedComponent extends Component {}
|
class MockColocatedComponent extends Component {}
|
||||||
setComponentTemplate(hbs`Colocated Original`, MockColocatedComponent);
|
setComponentTemplate(hbs`Colocated Original`, MockColocatedComponent);
|
||||||
|
|
||||||
|
// eslint-disable-next-line ember/no-empty-glimmer-component-classes
|
||||||
class MockResolvedComponent extends Component {}
|
class MockResolvedComponent extends Component {}
|
||||||
const MockResolvedComponentTemplate = hbs`Resolved Original`;
|
const MockResolvedComponentTemplate = hbs`Resolved Original`;
|
||||||
|
|
||||||
|
@ -1,32 +1,31 @@
|
|||||||
import Component from "@glimmer/component";
|
|
||||||
import DButton from "discourse/components/d-button";
|
import DButton from "discourse/components/d-button";
|
||||||
import replaceEmoji from "discourse/helpers/replace-emoji";
|
import replaceEmoji from "discourse/helpers/replace-emoji";
|
||||||
import dIcon from "discourse-common/helpers/d-icon";
|
import dIcon from "discourse-common/helpers/d-icon";
|
||||||
import htmlSafe from "discourse-common/helpers/html-safe";
|
import htmlSafe from "discourse-common/helpers/html-safe";
|
||||||
import ChatUserAvatar from "./chat-user-avatar";
|
import ChatUserAvatar from "./chat-user-avatar";
|
||||||
|
|
||||||
export default class ChatComposerMessageDetails extends Component {
|
const ChatComposerMessageDetails = <template>
|
||||||
<template>
|
<div
|
||||||
<div
|
class="chat-composer-message-details"
|
||||||
class="chat-composer-message-details"
|
data-id={{@message.id}}
|
||||||
data-id={{@message.id}}
|
data-action={{if @message.editing "edit" "reply"}}
|
||||||
data-action={{if @message.editing "edit" "reply"}}
|
>
|
||||||
>
|
<div class="chat-reply">
|
||||||
<div class="chat-reply">
|
{{dIcon (if @message.editing "pencil-alt" "reply")}}
|
||||||
{{dIcon (if @message.editing "pencil-alt" "reply")}}
|
<ChatUserAvatar @user={{@message.user}} />
|
||||||
<ChatUserAvatar @user={{@message.user}} />
|
<span class="chat-reply__username">{{@message.user.username}}</span>
|
||||||
<span class="chat-reply__username">{{@message.user.username}}</span>
|
<span class="chat-reply__excerpt">
|
||||||
<span class="chat-reply__excerpt">
|
{{replaceEmoji (htmlSafe @message.excerpt)}}
|
||||||
{{replaceEmoji (htmlSafe @message.excerpt)}}
|
</span>
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<DButton
|
|
||||||
@action={{@cancelAction}}
|
|
||||||
@icon="times-circle"
|
|
||||||
@title="cancel"
|
|
||||||
class="btn-flat cancel-message-action"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
|
||||||
}
|
<DButton
|
||||||
|
@action={{@cancelAction}}
|
||||||
|
@icon="times-circle"
|
||||||
|
@title="cancel"
|
||||||
|
class="btn-flat cancel-message-action"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</template>;
|
||||||
|
|
||||||
|
export default ChatComposerMessageDetails;
|
||||||
|
@ -1,13 +1,12 @@
|
|||||||
import Component from "@glimmer/component";
|
|
||||||
import DButton from "discourse/components/d-button";
|
import DButton from "discourse/components/d-button";
|
||||||
|
|
||||||
export default class extends Component {
|
const CloseButton = <template>
|
||||||
<template>
|
<DButton
|
||||||
<DButton
|
@icon="times"
|
||||||
@icon="times"
|
@action={{@close}}
|
||||||
@action={{@close}}
|
@title="chat.close"
|
||||||
@title="chat.close"
|
class="btn-flat btn-link chat-drawer-header__close-btn"
|
||||||
class="btn-flat btn-link chat-drawer-header__close-btn"
|
/>
|
||||||
/>
|
</template>;
|
||||||
</template>
|
|
||||||
}
|
export default CloseButton;
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
import Component from "@glimmer/component";
|
|
||||||
import replaceEmoji from "discourse/helpers/replace-emoji";
|
import replaceEmoji from "discourse/helpers/replace-emoji";
|
||||||
|
|
||||||
export default class extends Component {
|
const ChatEmojiAvatar = <template>
|
||||||
<template>
|
<div class="chat-emoji-avatar">
|
||||||
<div class="chat-emoji-avatar">
|
<div class="chat-emoji-avatar-container">
|
||||||
<div class="chat-emoji-avatar-container">
|
{{replaceEmoji @emoji}}
|
||||||
{{replaceEmoji @emoji}}
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</div>
|
||||||
}
|
</template>;
|
||||||
|
|
||||||
|
export default ChatEmojiAvatar;
|
||||||
|
@ -1,22 +1,21 @@
|
|||||||
import Component from "@glimmer/component";
|
|
||||||
import i18n from "discourse-common/helpers/i18n";
|
import i18n from "discourse-common/helpers/i18n";
|
||||||
import and from "truth-helpers/helpers/and";
|
import and from "truth-helpers/helpers/and";
|
||||||
import not from "truth-helpers/helpers/not";
|
import not from "truth-helpers/helpers/not";
|
||||||
|
|
||||||
export default class extends Component {
|
const ChatMessageSeparatorNew = <template>
|
||||||
<template>
|
{{#if (and @message.newest (not @message.formattedFirstMessageDate))}}
|
||||||
{{#if (and @message.newest (not @message.formattedFirstMessageDate))}}
|
<div class="chat-message-separator-new">
|
||||||
<div class="chat-message-separator-new">
|
<div class="chat-message-separator__text-container">
|
||||||
<div class="chat-message-separator__text-container">
|
<span class="chat-message-separator__text">
|
||||||
<span class="chat-message-separator__text">
|
{{i18n "chat.last_visit"}}
|
||||||
{{i18n "chat.last_visit"}}
|
</span>
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="chat-message-separator__line-container">
|
|
||||||
<div class="chat-message-separator__line"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
|
||||||
</template>
|
<div class="chat-message-separator__line-container">
|
||||||
}
|
<div class="chat-message-separator__line"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
</template>;
|
||||||
|
|
||||||
|
export default ChatMessageSeparatorNew;
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
import Component from "@glimmer/component";
|
const ChatSidePanelResizer = <template>
|
||||||
|
<div class="chat-side-panel-resizer"></div>
|
||||||
|
</template>;
|
||||||
|
|
||||||
export default class extends Component {
|
export default ChatSidePanelResizer;
|
||||||
<template>
|
|
||||||
<div class="chat-side-panel-resizer"></div>
|
|
||||||
</template>
|
|
||||||
}
|
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
import Component from "@glimmer/component";
|
|
||||||
import dIcon from "discourse-common/helpers/d-icon";
|
import dIcon from "discourse-common/helpers/d-icon";
|
||||||
|
|
||||||
export default class ChatComposerButton extends Component {
|
const ChatComposerButton = <template>
|
||||||
<template>
|
<div class="chat-composer-button__wrapper">
|
||||||
<div class="chat-composer-button__wrapper">
|
<button type="button" class="chat-composer-button" ...attributes>
|
||||||
<button type="button" class="chat-composer-button" ...attributes>
|
{{dIcon @icon}}
|
||||||
{{dIcon @icon}}
|
</button>
|
||||||
</button>
|
</div>
|
||||||
</div>
|
</template>;
|
||||||
</template>
|
|
||||||
}
|
export default ChatComposerButton;
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
import Component from "@glimmer/component";
|
const ChatComposerSeparator = <template>
|
||||||
|
<div class="chat-composer-separator"></div>
|
||||||
|
</template>;
|
||||||
|
|
||||||
export default class ChatComposerSeparator extends Component {
|
export default ChatComposerSeparator;
|
||||||
<template>
|
|
||||||
<div class="chat-composer-separator"></div>
|
|
||||||
</template>
|
|
||||||
}
|
|
||||||
|
@ -1,48 +1,44 @@
|
|||||||
import Component from "@glimmer/component";
|
|
||||||
import { LinkTo } from "@ember/routing";
|
import { LinkTo } from "@ember/routing";
|
||||||
import concatClass from "discourse/helpers/concat-class";
|
import concatClass from "discourse/helpers/concat-class";
|
||||||
import icon from "discourse-common/helpers/d-icon";
|
import icon from "discourse-common/helpers/d-icon";
|
||||||
|
|
||||||
export default class ChatFormRow extends Component {
|
const ChatFormRow = <template>
|
||||||
<template>
|
{{#if @route}}
|
||||||
{{#if @route}}
|
<LinkTo
|
||||||
<LinkTo
|
@route={{@route}}
|
||||||
@route={{@route}}
|
@models={{@routeModels}}
|
||||||
@models={{@routeModels}}
|
class={{concatClass "chat-form__row -link" (if @separator "-separator")}}
|
||||||
class={{concatClass
|
>
|
||||||
"chat-form__row -link"
|
<div class="chat-form__row-content">
|
||||||
(if @separator "-separator")
|
{{@label}}
|
||||||
}}
|
{{icon "chevron-right" class="chat-form__row-icon"}}
|
||||||
>
|
</div>
|
||||||
<div class="chat-form__row-content">
|
</LinkTo>
|
||||||
{{@label}}
|
{{else}}
|
||||||
{{icon "chevron-right" class="chat-form__row-icon"}}
|
<div class={{concatClass "chat-form__row" (if @separator "-separator")}}>
|
||||||
</div>
|
<div class="chat-form__row-content">
|
||||||
</LinkTo>
|
{{#if @label}}
|
||||||
{{else}}
|
<span class="chat-form__row-label">{{@label}}</span>
|
||||||
<div class={{concatClass "chat-form__row" (if @separator "-separator")}}>
|
{{/if}}
|
||||||
<div class="chat-form__row-content">
|
|
||||||
{{#if @label}}
|
|
||||||
<span class="chat-form__row-label">{{@label}}</span>
|
|
||||||
{{/if}}
|
|
||||||
|
|
||||||
{{#if (has-block)}}
|
{{#if (has-block)}}
|
||||||
<span class="chat-form__row-label">
|
<span class="chat-form__row-label">
|
||||||
{{yield}}
|
{{yield}}
|
||||||
</span>
|
</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
{{#if (has-block "action")}}
|
{{#if (has-block "action")}}
|
||||||
<div class="chat-form__row-action">{{yield to="action"}}</div>
|
<div class="chat-form__row-action">{{yield to="action"}}</div>
|
||||||
{{/if}}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{{#if (has-block "description")}}
|
|
||||||
<div class="chat-form__row-description">
|
|
||||||
{{yield to="description"}}
|
|
||||||
</div>
|
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
|
||||||
</template>
|
{{#if (has-block "description")}}
|
||||||
}
|
<div class="chat-form__row-description">
|
||||||
|
{{yield to="description"}}
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
</template>;
|
||||||
|
|
||||||
|
export default ChatFormRow;
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
import Component from "@glimmer/component";
|
|
||||||
import DButton from "discourse/components/d-button";
|
import DButton from "discourse/components/d-button";
|
||||||
|
|
||||||
export default class ListAction extends Component {
|
const ListAction = <template>
|
||||||
<template>
|
<DButton
|
||||||
<DButton
|
class="btn btn-flat"
|
||||||
class="btn btn-flat"
|
@icon={{@item.icon}}
|
||||||
@icon={{@item.icon}}
|
@translatedLabel={{@item.label}}
|
||||||
@translatedLabel={{@item.label}}
|
/>
|
||||||
/>
|
</template>;
|
||||||
</template>
|
|
||||||
}
|
export default ListAction;
|
||||||
|
@ -1,28 +1,27 @@
|
|||||||
import Component from "@glimmer/component";
|
|
||||||
import { fn } from "@ember/helper";
|
import { fn } from "@ember/helper";
|
||||||
import DButton from "discourse/components/d-button";
|
import DButton from "discourse/components/d-button";
|
||||||
import concatClass from "discourse/helpers/concat-class";
|
import concatClass from "discourse/helpers/concat-class";
|
||||||
import icon from "discourse-common/helpers/d-icon";
|
import icon from "discourse-common/helpers/d-icon";
|
||||||
import ChatUserAvatar from "discourse/plugins/chat/discourse/components/chat-user-avatar";
|
import ChatUserAvatar from "discourse/plugins/chat/discourse/components/chat-user-avatar";
|
||||||
|
|
||||||
export default class Member extends Component {
|
const Member = <template>
|
||||||
<template>
|
<DButton
|
||||||
<DButton
|
class={{concatClass
|
||||||
class={{concatClass
|
"chat-message-creator__member btn-default"
|
||||||
"chat-message-creator__member btn-default"
|
(if @highlighted "-highlighted")
|
||||||
(if @highlighted "-highlighted")
|
}}
|
||||||
}}
|
@action={{fn @onSelect @member}}
|
||||||
@action={{fn @onSelect @member}}
|
>
|
||||||
>
|
<ChatUserAvatar
|
||||||
<ChatUserAvatar
|
@user={{@member.model}}
|
||||||
@user={{@member.model}}
|
@interactive={{false}}
|
||||||
@interactive={{false}}
|
@showPresence={{false}}
|
||||||
@showPresence={{false}}
|
/>
|
||||||
/>
|
<span class="chat-message-creator__member-username">
|
||||||
<span class="chat-message-creator__member-username">
|
{{@member.model.username}}
|
||||||
{{@member.model.username}}
|
</span>
|
||||||
</span>
|
{{icon "times"}}
|
||||||
{{icon "times"}}
|
</DButton>
|
||||||
</DButton>
|
</template>;
|
||||||
</template>
|
|
||||||
}
|
export default Member;
|
||||||
|
@ -1,15 +1,14 @@
|
|||||||
import Component from "@glimmer/component";
|
|
||||||
import ChatEmojiAvatar from "../../chat-emoji-avatar";
|
import ChatEmojiAvatar from "../../chat-emoji-avatar";
|
||||||
import ChatUserAvatar from "../../chat-user-avatar";
|
import ChatUserAvatar from "../../chat-user-avatar";
|
||||||
|
|
||||||
export default class extends Component {
|
const Avatar = <template>
|
||||||
<template>
|
<div class="chat-message-avatar">
|
||||||
<div class="chat-message-avatar">
|
{{#if @message.chatWebhookEvent.emoji}}
|
||||||
{{#if @message.chatWebhookEvent.emoji}}
|
<ChatEmojiAvatar @emoji={{@message.chatWebhookEvent.emoji}} />
|
||||||
<ChatEmojiAvatar @emoji={{@message.chatWebhookEvent.emoji}} />
|
{{else}}
|
||||||
{{else}}
|
<ChatUserAvatar @user={{@message.user}} @avatarSize="medium" />
|
||||||
<ChatUserAvatar @user={{@message.user}} @avatarSize="medium" />
|
{{/if}}
|
||||||
{{/if}}
|
</div>
|
||||||
</div>
|
</template>;
|
||||||
</template>
|
|
||||||
}
|
export default Avatar;
|
||||||
|
@ -1,30 +1,29 @@
|
|||||||
import Component from "@glimmer/component";
|
|
||||||
import { fn } from "@ember/helper";
|
import { fn } from "@ember/helper";
|
||||||
import DButton from "discourse/components/d-button";
|
import DButton from "discourse/components/d-button";
|
||||||
import i18n from "discourse-common/helpers/i18n";
|
import i18n from "discourse-common/helpers/i18n";
|
||||||
import eq from "truth-helpers/helpers/eq";
|
import eq from "truth-helpers/helpers/eq";
|
||||||
|
|
||||||
export default class extends Component {
|
const Error = <template>
|
||||||
<template>
|
{{#if @message.error}}
|
||||||
{{#if @message.error}}
|
<div class="chat-message-error">
|
||||||
<div class="chat-message-error">
|
{{#if (eq @message.error "network_error")}}
|
||||||
{{#if (eq @message.error "network_error")}}
|
<DButton
|
||||||
<DButton
|
class="chat-message-error__retry-btn"
|
||||||
class="chat-message-error__retry-btn"
|
@action={{fn @onRetry @message}}
|
||||||
@action={{fn @onRetry @message}}
|
@icon="exclamation-circle"
|
||||||
@icon="exclamation-circle"
|
>
|
||||||
>
|
<span class="chat-message-error__retry-btn-title">
|
||||||
<span class="chat-message-error__retry-btn-title">
|
{{i18n "chat.retry_staged_message.title"}}
|
||||||
{{i18n "chat.retry_staged_message.title"}}
|
</span>
|
||||||
</span>
|
<span class="chat-message-error__retry-btn-action">
|
||||||
<span class="chat-message-error__retry-btn-action">
|
{{i18n "chat.retry_staged_message.action"}}
|
||||||
{{i18n "chat.retry_staged_message.action"}}
|
</span>
|
||||||
</span>
|
</DButton>
|
||||||
</DButton>
|
{{else}}
|
||||||
{{else}}
|
{{@message.error}}
|
||||||
{{@message.error}}
|
{{/if}}
|
||||||
{{/if}}
|
</div>
|
||||||
</div>
|
{{/if}}
|
||||||
{{/if}}
|
</template>;
|
||||||
</template>
|
|
||||||
}
|
export default Error;
|
||||||
|
@ -1,23 +1,22 @@
|
|||||||
import Component from "@glimmer/component";
|
|
||||||
import DButton from "discourse/components/d-button";
|
import DButton from "discourse/components/d-button";
|
||||||
import concatClass from "discourse/helpers/concat-class";
|
import concatClass from "discourse/helpers/concat-class";
|
||||||
import dIcon from "discourse-common/helpers/d-icon";
|
import dIcon from "discourse-common/helpers/d-icon";
|
||||||
|
|
||||||
export default class extends Component {
|
const ScrollToBottomArrow = <template>
|
||||||
<template>
|
<div class="chat-scroll-to-bottom">
|
||||||
<div class="chat-scroll-to-bottom">
|
<DButton
|
||||||
<DButton
|
class={{concatClass
|
||||||
class={{concatClass
|
"btn-flat"
|
||||||
"btn-flat"
|
"chat-scroll-to-bottom__button"
|
||||||
"chat-scroll-to-bottom__button"
|
(if @isVisible "visible")
|
||||||
(if @isVisible "visible")
|
}}
|
||||||
}}
|
@action={{@onScrollToBottom}}
|
||||||
@action={{@onScrollToBottom}}
|
>
|
||||||
>
|
<span class="chat-scroll-to-bottom__arrow">
|
||||||
<span class="chat-scroll-to-bottom__arrow">
|
{{dIcon "arrow-down"}}
|
||||||
{{dIcon "arrow-down"}}
|
</span>
|
||||||
</span>
|
</DButton>
|
||||||
</DButton>
|
</div>
|
||||||
</div>
|
</template>;
|
||||||
</template>
|
|
||||||
}
|
export default ScrollToBottomArrow;
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
import Component from "@glimmer/component";
|
|
||||||
import ChatComposer from "../chat-composer";
|
import ChatComposer from "../chat-composer";
|
||||||
import ChatComposerMessageDetails from "../chat-composer-message-details";
|
import ChatComposerMessageDetails from "../chat-composer-message-details";
|
||||||
import ChatHeaderIcon from "../chat-header-icon";
|
import ChatHeaderIcon from "../chat-header-icon";
|
||||||
@ -15,25 +14,25 @@ import ChatModalThreadSettings from "../chat-modal-thread-settings";
|
|||||||
import ChatModalToggleChannelStatus from "../chat-modal-toggle-channel-status";
|
import ChatModalToggleChannelStatus from "../chat-modal-toggle-channel-status";
|
||||||
import ChatThreadListItem from "../chat-thread-list-item";
|
import ChatThreadListItem from "../chat-thread-list-item";
|
||||||
|
|
||||||
export default class extends Component {
|
const ChatOrganism = <template>
|
||||||
<template>
|
<ChatMessage />
|
||||||
<ChatMessage />
|
<ChatComposer />
|
||||||
<ChatComposer />
|
<ChatThreadListItem />
|
||||||
<ChatThreadListItem />
|
<ChatComposerMessageDetails />
|
||||||
<ChatComposerMessageDetails />
|
<ChatHeaderIcon />
|
||||||
<ChatHeaderIcon />
|
|
||||||
|
|
||||||
<h2>Modals</h2>
|
<h2>Modals</h2>
|
||||||
|
|
||||||
<ChatModalArchiveChannel />
|
<ChatModalArchiveChannel />
|
||||||
<ChatModalMoveMessageToChannel />
|
<ChatModalMoveMessageToChannel />
|
||||||
<ChatModalDeleteChannel />
|
<ChatModalDeleteChannel />
|
||||||
<ChatModalEditChannelDescription />
|
<ChatModalEditChannelDescription />
|
||||||
<ChatModalEditChannelName />
|
<ChatModalEditChannelName />
|
||||||
<ChatModalThreadSettings />
|
<ChatModalThreadSettings />
|
||||||
<ChatModalCreateChannel />
|
<ChatModalCreateChannel />
|
||||||
<ChatModalToggleChannelStatus />
|
<ChatModalToggleChannelStatus />
|
||||||
<ChatModalNewMessage />
|
<ChatModalNewMessage />
|
||||||
<ChatModalChannelSummary />
|
<ChatModalChannelSummary />
|
||||||
</template>
|
</template>;
|
||||||
}
|
|
||||||
|
export default ChatOrganism;
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
import Component from "@glimmer/component";
|
const DummyComponent = <template>
|
||||||
|
My custom component with foo: {{@model.foo}}
|
||||||
|
</template>;
|
||||||
|
|
||||||
export default class DummyComponent extends Component {
|
export default DummyComponent;
|
||||||
<template>
|
|
||||||
My custom component with foo: {{@model.foo}}
|
|
||||||
</template>
|
|
||||||
}
|
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
import Component from "@glimmer/component";
|
|
||||||
|
|
||||||
export default class StyleguideComponent extends Component {}
|
|
@ -1,3 +0,0 @@
|
|||||||
import Component from "@glimmer/component";
|
|
||||||
|
|
||||||
export default class StyleguideControls extends Component {}
|
|
@ -1,3 +0,0 @@
|
|||||||
import Component from "@glimmer/component";
|
|
||||||
|
|
||||||
export default class StyleguideControlsToggle extends Component {}
|
|
Reference in New Issue
Block a user