静的リソースにLightningDesignSystemを保存
まずは、 https://www.lightningdesignsystem.com/resources/downloads からLightning Design Systemをダウンロードし、静的リソースに保存します。
本来は必要なファイルのみを登録すればいいですが、手間を省くために今回はダウンロードしたzipをそのまま登録しました。
SVEページでLightningDesignSystemをインポート設定
SkyVisualEditorでページを新規作成し、 [ページプロパティ]-[ページスタイル] スタイルシートインクルード設定 から先ほどの静的リソース内のCSSファイルのインクルード設定を追加します。
{!URLFOR($Resource.SLDS091, 'assets/styles/salesforce-lightning-design-system-vf.min.css')}
ページにsldsクラスを指定
Lightning Design Systemの指定は基本的にCSSクラス名「slds」の内部でしか効きません。 なのでSVEのページ内でLightning Design Systemのコンポーネント群を使用するためには ページ内にsldsクラスを指定する必要があります。 SVEにはページ全体にCSSクラスを指定するための設定がないため、 [ページプロパティ]-[ページスクリプト] にそのような処理を行うJavaScriptを指定します。
// SVEページのコンテンツエリアにsldsクラスを追加
document.addEventListener('DOMContentLoaded', function () {
var form = document.getElementsByClassName('sve_form1')[0];
form.className = 'sve_form1 slds';
});
----
ボタンのスタイルを変更
ページ内に配置したボタンの、コンポーネントプロパティから スタイルクラス に、
slds-button slds-button--neutralを設定します。
これでページをデプロイすると、このように表示されました。
無事、クラス指定したボタンの見た目がLightning Design Systemのものになりました。
----データテーブルのスタイルを変更
今度はデータテーブルにLightning Design Systemのデータテーブルを適用してみましょう。 まずはSVE上でデータテーブルを作成します。
作成したデータテーブルのコンポーネントプロパティには ・ [共通] - [ID] ・ [開発] - [スタイルクラス] にそれぞれ「AccountTable」と入力しておきます。 ボタンの変更はCSSクラスを指定するだけで済みましたが、 データテーブルの変更はテーブル内の各セルや行それぞれに指定する必要があるため、 JavaScriptでCSSクラスを指定する必要があります。 JavaScriptでCSSクラス名を変更するための関数を作成し、 ページスクリプトに追加します。
function toArray(fakeArray) {
return fakeArray ? Array.prototype.slice.call(fakeArray) : [];
}
function setClassNames(pairs) {
Object.keys(pairs).forEach(function (selector) {
var nodes = document.querySelectorAll(selector);
toArray(nodes).forEach(function (node) {
node.className = pairs[selector];
});
});
}
function clearStyles(pairs) {
Object.keys(pairs).forEach(function (selector) {
var nodes = document.querySelectorAll(selector);
toArray(nodes).forEach(function (node) {
var styles = pairs[selector];
styles.forEach(function (styleName) {
node.style[styleName] = '';
});
});
});
}
次に配置したテーブルのJavaScriptとして実際にクラス名を変更する処理を設定します。
スタジオ上で配置したデータテーブルを選択し、
コンポーネントプロパティから、 [開発] > [JavaScript]
を開いて以下のコードを追加します。
setClassNames({
'.AccountTable' : 'AccountTable slds-table slds-table--bordered',
'.AccountTable > thead > tr' : 'slds-text-heading--label',
'.AccountTable > thead > tr > th' : 'slds-cell-shrink',
'.AccountTable > tbody > tr' : 'slds-hint-parent',
'.AccountTable input[type=button]' : 'slds-button slds-button--neutral',
'.AccountTable input[type=text]' : 'slds-input',
'.AccountTable select' : 'slds-select',
'input[id$="AccountTable_addButton"]': 'slds-button slds-button--neutral'
});
clearStyles({
'.AccountTable > thead > tr span': ['color']
});
ページをデプロイして表示を確認してみましょう。
データテーブルの表示がLightning Design Systemのものになっていることが確認できます。


ポスト
