見出し画像

Lightning Web ComponentsをLightning Web Componentsらしく作る方法

Lightning Web ComponentsをLighting Web Componentsらしく作る方法をご紹介します。

Lightningコンポーネントを使う

一番簡単で間違いがないのが、予め準備されているLightningコンポーネントを使うことです。

ボタングループを使ってボタンを表示するために、lightning-button-groupとlighting-buttonを使ってみます。

<template>
   <div class="slds-row">
       <div class="slds-col">
           <div class="slds-float_right">
               <lightning-button-group class="slds-m-right_x-small">
                   <lightning-button-icon icon-name="utility:chevronleft"></lightning-button-icon>
                   <lightning-button variant="neutral" label={labels.CalendarToday}></lightning-button>
                   <lightning-button-icon icon-name="utility:chevronright"></lightning-button-icon>
               </lightning-button-group>
           </div>
       </div>
   </div>
</template>

こんな感じになります。

画像1

Lightning Design Systemを使う

Lightingコンポーネントでサポートされていないものを実装する場合は、Lightning Design Systemを使います。

例えば、ポップオーバー(ツールチップとも言います)を表示する場合は、LightningコンポーネントではサポートされていないのでLightning Design Systemを使います。

<template>
   <div if:true={isShow}>
       <div class="slds-popover slds-popover_tooltip slds-nubbin_bottom-left" role="tooltip" id="tooltip" style="position:absolute;top:0px;left:0px;">
           <div class="slds-popover__body">
               ツールチップメッセージ
           </div>
       </div>
   </div>
</template>

こんな感じでポップオーバーが表示できます。

画像2

Lightning Web Componentsで使われているスタイルを使う

カレンダーを実装するような固有のコンポーネントを開発する場合で、Lightning Web Componentsらしく見えるものを開発する場合は、Lightning Web Componentsで使われているスタイル(Design Token)を使います。

Design Tokenを使う場合は、上記URLでFormatをLightningに切り替えます。

画像3

実装したいトークンを見つけます。

ここでは、角丸のボーダーを使います(t(borderRadiusSmall)を使います)

Supportが「GA」でないと使えないので確認してください。

画像4

Lightning Web ComponentsでCSSファイルを作成します。

CSSファイルはLightning Web Componentsと同じフォルダに、「Lightning Web Components名.css」で作成します。

作成したCSSで使いたいDesign Tokenを以下のように使います。

cal-day-event {
   text-align: left;
   font-size: 0.4em;
   font-weight: var(--lwc-fontWeightLight);
   color: var(--lwc-colorTextInverse);
   background-color: var(--lwc-colorBrandDark);
   border-radius: var(--lwc-borderRadiusSmall);
}

borderRadiusSmallを使う場合は、「val(--lwc-borderRadiusSmall」とします。

いいなと思ったら応援しよう!