2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Lightning Web Component のスタイルフックを利用してみる

Last updated at Posted at 2023-01-30

※ これから記載する事項は、私が所属する会社とは切関係のない事柄です。

今回は Salesforce の Platform と Experience Builder にてスタイルフックを利用してみたいと思います。

Platform

Platformsでは --slds で始まるHooksを利用します。詳細はヘルプを参考にしてください。

コンポーネントへのデザイン設定

コンポーネントへのデザインの設定方法を紹介します。

class での設定

こちらは通常通り CSS のセレクターとして class を指定して設定する方法です。

Lightning Design System の上書き

各コンポーネントに対応した Hooks に対して設定をしていきます。(Button コンポーネントの例

ビルドイン Lightning Web Component の上書き

ビルトインされている Lightning Web Component も中身は Lightning Design System と同様のクラスが適用されています。

コンポーネントがどの Design System と対応しているか知りたい場合は、コンポーネントリファレンスページのコンポーネントの詳細ページに遷移し、「Document」タブをクリックします。(lightning-button の場合
スクリーンショット 2023-01-30 18.19.25.png

下にスクロールしていくと「Component Styling」セクションの中に Design System のヘルプページへのリンクがあります。

スクリーンショット 2023-01-30 18.20.03.png

LWC の例(Platform)

下記のようなコンポーネントを作成した場合、

samplePlatformStyleHooks.html
<template>
    <!-- Lightning Design System のボタン -->
    <button class="slds-button slds-button_brand">Submit</button>
    <!-- ビルトイン Lightning Web Component のボタン -->
    <lightning-button variant="brand" label="Brand"></lightning-button>
    <!-- class を利用したデザインの設定 -->
    <div class="sample">Sample Text</div>
</template>
samplePlatformStyleHooks.css
/* ビルトイン Lightning Web Component, Lightning Design System ボタンへ適用される */
:host {
    --slds-c-button-brand-color-background: purple;
    --slds-c-button-brand-color-border: purple;
}
/* クラスを指定した設定 */
.sample {
    color: var(--lwc-colorTextError);
}

下記のような見た目になります。

スクリーンショット 2023-01-30 18.27.42.png

LWC の例(Platform)の説明

ブランドボタンのバックグラウンドとボーダーに対して紫色を設定するためにはまず、コンポーネントで利用している Hooks 名を確認する必要があります。下記は Button のページの例です。

スクリーンショット 2023-01-30 18.29.46.png

また、.sample の設定で利用したように var を用いてあらかじめ宣言されている変数を使うことができますが、その際は Design Tokens のページへ遷移し、利用したい変数を確認し、先頭に --lwc を付け足すと利用可能です。

スクリーンショット 2023-01-30 18.34.04.png

Experience Builder

Platforms では --dxp で始まる Hooks を利用します。もし--dxpで対応できないようなものがあった場合は --sds を利用することも可能です。詳細はヘルプを参考にしてください。

全ページに対する head タグでのテーマの上書き

全ページのテーマの上書きをする際は基本的にはテーマパネルを利用してもらうのがいいかと思いますが、Experience Builder 設定の Advanced > Edit Head Markup から head タグを修正してstyleを追加することが可能です。

スクリーンショット 2023-01-30 19.05.23.png

コンポーネントへのデザイン設定

class での設定

こちらは通常通りCSSのセレクターとしてclassを指定して設定する方法です。

data-component-id での設定

全てのコンポーネントは data-component-id というプロパティを持っているので、そのプロパティを利用してCSSを適用することができます。(ヘルプ

スクリーンショット 2023-01-30 20.30.23.png

LWC の例(Experience Builder)

Experience Builder 設定の Advanced > Edit Head Markup にて下記の内容を head タグへ追記します。

<style>
   [data-component-id="richTextEditor-63fe"] {
       border: 2px dashed #000;
    }
    :root {
        --dxp-g-brand: red;
   }
</style>

下記のようなコンポーネントを作成した場合、

sampleStyleHooks.css
.class-sample {
  border: 2px dashed var(--dxp-g-destructive-1);
}
sampleStyleHooks.html
<template>
  <section>
    <button class="slds-button slds-button_brand">Global Sample</button>
    <button class="class-sample">Class Sample</button>
  </section>
</template>

下記のような見た目になります。今回は「Sample Content」にはビルトインされている「Rich Content Editor」(data-component-id="richTextEditor-63fe")を使用しています。

スクリーンショット 2023-01-30 20.31.23.png

LWC の例(Experience Builder)の説明

  • data-component-id にて点線のボーダーが設定されていることがわかります。
  • .class-sample にて赤色の 点線のボーダーがボタンに設定されていることがわかります。
    • ここで利用されている色の変数である --dxp-g-destructive-1 はこちらから確認できます。
  • :root にて全ページに対してブランドボタンに赤空が設定されていることがわかります。
    • ここで利用されている色の変数である --dxp-g-brand はこちらから確認できます。
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?