🦔
【LWC】Salesforceレコードページのヘッダーを実装する
はじめに
LWC(Lightning Web Component)でSalesforceレコードページのヘッダーを実装しました。
完成形
実装方法
コード
HTML
header.html
<template>
<div class="slds-page-header slds-page-header_record-home">
<!-- ヘッダー上部 -->
<div class="slds-page-header__row">
<div class="slds-page-header__col-title">
<div class="slds-media">
<div class="slds-media__figure slds-align_absolute-center">
<lightning-icon icon-name="standard:account"></lightning-icon>
</div>
<div class="slds-media__body">
<div class="slds-page-header__name">
<div class="slds-page-header__name-title">
<h1>
<span>取引先</span>
<span class="slds-page-header__title slds-truncate">{account.Name}</span>
</h1>
</div>
</div>
</div>
</div>
</div>
<div class="slds-page-header__col-actions">
<div class="slds-page-header__controls">
<div class="slds-page-header__control">
<lightning-button label="Web検索" onclick={handleSearchWithGoogle}></lightning-button>
</div>
</div>
</div>
</div>
<!-- ヘッダー下部 -->
<div class="slds-page-header__row slds-page-header__row_gutters">
<div class="slds-page-header__col-details">
<ul class="slds-page-header__detail-row">
<li class="slds-page-header__detail-block">
<p class="slds-text-title">種別</p>
<p>{account.Type}</p>
</li>
<li class="slds-page-header__detail-block">
<p class="slds-text-title">Webサイト</p>
<p><lightning-formatted-url value={account.Website} target="_blank"></lightning-formatted-url></p>
</li>
<li class="slds-page-header__detail-block">
<p class="slds-text-title">年間売上</p>
<p><lightning-formatted-number value={account.AnnualRevenue} format-style="currency" currency-code="JPY"></lightning-formatted-number></p>
</li>
<li class="slds-page-header__detail-block">
<p class="slds-text-title">評価</p>
<p>{account.Rating}</p>
</li>
</ul>
</div>
</div>
</div>
</template>
JavaScript
header.js
import { LightningElement } from 'lwc';
export default class Header extends LightningElement {
account = {}
connectedCallback() {
this.account = {
Id: 'xxxxxxxxxxxxxxx',
Name: '○○○株式会社',
Type: 'Technology Partner',
Website: 'https://example.com',
AnnualRevenue: 350000000,
Rating: 'Hot'
};
}
handleSearchWithGoogle() {
window.open('https://www.google.com/search?q=' + this.account.Name);
}
}
参考
終わりに
もう少しhtmlが簡潔に書ければいいですね。
Discussion