Salesforceのヘッダを表示させつつ、VisualforcePage内でExt JSを使おうとしたときに、Ext JSのbuttonとかwindowのcssがSalesforce側のcssで上書きされて、見た目が変わってしまいます。
例えば、Salesforceのextended.css
に定義されている.x-btn
がExt JSアプリをビルドしてできたcssを上書きしている模様です。
Ext JSの画面内のコンポーネントが参照するcssのprefixを変更して、cssが上書きされないようにしたい…と思って少し調べてみました。
※1 でも、font-size
はExt JS側のcssで上書きされちゃう模様なので、これも何とかしたい…
※2 Sencha Forum を参考にしました。ありがとうございます!
設定すること
- component.scss の追記
- Ext.baseCSSPrefix の変更
[1] component.scss への追記
$prefix
に上書きしたい文字列を指定します。
例えばabc-x-
を指定したい場合は以下の通りです。
$prefix: "abc-x-";
追記した後は、Ext JSをビルドして静的リソースとしてSalesforceにアップします。
[2] Ext.baseCSSPrefix の変更
Ext JSを使用するVisualforcePageで、ビルドしたjsファイルをロードする前に
<script type="text/javascript">
var Ext = Ext || {};
Ext.buildSettings = {
baseCSSPrefix: 'abc-x-'
};
</script>
を追記しておきます。
こうすると、Ext.baseCSSPrefix
に'abc-x-'
がセットされて、ボタンやウィンドウなどのコンポーネントがExt JSの見た目になりました。
追記..
そもそも、
- VisualforcePageで、
showHeader="true"
としない - iframeで呼び出す
といったことをすれば、もっと良いかもしれません。。(試してないですが)