Theme コンポーネントを作成する際、異なるものに対して import を探して回る必要があることが多かったので、それらをまとめてここにまとめることにしました。
Ember 関連
| 名前 | Import | 使用例 |
|---|---|---|
| Component | import Component from "@glimmer/component"; |
export default class MyComponentClass extends Component {} |
| Action デコレータ | import { action } from "@ember/object"; |
@action |
| Tracked デコレータ | import { tracked } from "@glimmer/tracking"; |
@tracked myTrackedVar |
| Service デコレータ | import { service } from "@ember/service"; |
@service modal |
| (Glimmer テンプレート) on | import { on } from "@ember/modifier"; |
<p {{on "click" this.someAction}}>Click me!</p>[1] |
Discourse 関連
| 名前 | Import | 使用例 |
|---|---|---|
| apiInitializer | import { apiInitializer } from "discourse/lib/api"; |
export default apiInitializer((api) => {}) |
| withPluginApi | import { withPluginApi } from "discourse/lib/plugin-api"; |
withPluginApi((api) => {})[2][3] |
| ConditionalLoadingSpinner | import ConditionalLoadingSpinner from "discourse/components/conditional-loading-spinner"; |
<ConditionalLoadingSpinner @condition={{this.loading}} /> |
| DButton | import DButton from "discourse/ui-kit/d-button"; |
<DButton @icon="..." @action={{this.someAction}} /> |
| ajax | import { ajax } from "discourse/lib/ajax"; |
ajax("/path/here")[4] |
| i18n | import { i18n } from "discourse-i18n"; |
{{i18n "locale_key"}}[5] |
| (Glimmer テンプレート) 等しい、等しくない、より大きい、以上、未満、以下、または、否定、かつ、持つ、含む | import { eq, and, ... } from "truth-helpers"; |
{{#if (eq this.something this.something2)}}[6] |
これらが組み合わさって使われることもあります。例えば、ConditionalLoadingSpinner の条件として tracked 変数を使ったり、DButton にアクションを渡したりするなどです。
お役に立てば幸いです!
私はプロではないので、不正確な点を見つけた場合は、修正したり指摘したりしていただけると助かります。ありがとうございます
。
input、mousedown、focusinなどのイベントも使用できます ↩︎discourse/app/assets/javascripts/discourse/app/instance-initializers/enable-emoji.js at 99ace1be120b928f6c694d0118959d745cc4bdbe · discourse/discourse · GitHub を参照 ↩︎
代わりに
apiInitializerを使うのが推奨されていると思います。これは旧バージョンでしょうか? ↩︎fetch()に似た動作をします。async関数内でawaitキーワードと共に使います。 ↩︎コアリポジトリからロケールを取得する場合、例えば user.summary.stats など ↩︎
andやorのように、引数が2つ以上のものできるものもあります ↩︎