18
7

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.

kintoneAdvent Calendar 2018

Day 11

kintoneのレコード画面にツールチップを表示する

Last updated at Posted at 2018-12-10

#💡 ライブラリを使って簡単に実現
Tippy.jsというライブラリを利用して、kintoneのレコード画面にツールチップを表示してみました。
マウスカーソルが当たったところに、説明の吹き出しを表示します。
Qiita_tooltip01.png
#📌 Tippy.jsの使い方
CDNがあるようなのでこれを使います。
アプリの設定 >> JavaScript/CSSでカスタマイズ >> PC用のJavaScriptファイル に
下記のURLを追加します。
https://unpkg.com/tippy.js@3/dist/tippy.all.min.js
Qiita_tooltip00.png
※基本のCSSもこの中に含まれます。

基本の書き方はこんな感じです。

tippy('button', { content: "I'm a tooltip!" });
tippy(ツールチップを表示したい要素, { ツールチップに表示する内容やオプション });

#📘 レコード詳細画面
kintone.app.record.getFieldElementで取得した要素にツールチップの要素を追加すればOK。
簡単ですね!
Qiita_tooltip01.png

(function() {
    'use strict';
    /* global tippy */

    kintone.events.on('app.record.detail.show', function(event) {
        var targetField = kintone.app.record.getFieldElement('Text');

        tippy(targetField, {
            content: '説明ですよ',
            arrow: true
        });
    });
})();

カスタマイズで追加したボタンに対して、説明を入れてもよさそうですね。
Qiita_tooltip02.png

(function() {
    "use strict";
    /* global tippy */

    kintone.events.on('app.record.detail.show', function(event) {
        // メニュ右側の空白部分にボタンを設置
        var myIndexButton = document.createElement('button');
        myIndexButton.id = 'my_index_button';
        myIndexButton.innerHTML = 'メニュー部ボタン';
        myIndexButton.onclick = function() {
            window.alert('メニュー部');
        };
        tippy(myIndexButton, {
            content: 'ボタンの説明ですよ',
            arrow: true
        });
        kintone.app.record.getHeaderMenuSpaceElement().appendChild(myIndexButton);
    });
})();

※ベースとなるJSは、はじめようkintone APIの第3回からお借りしてきました!
#📝 レコード追加画面・編集画面
さて、レコードに情報を入力するとき、「どのような値を入力してほしいか」を補助的に表示したい、というニーズは多いかと思います。
フィールド詳細画面でやったように、フィールド要素をAPIで取得すれば簡単じゃん、と思いきや・・・
レコード追加画面・編集画面では kintone.app.record.getFieldElement が使えない:scream:
無理やりDOM操作でも実現できますが、将来的に動かなくなるリスクがあります。

そこで今回は、スペースフィールドの要素を取得する(kintone.app.record.getSpaceElement)を活用します。
このAPIならレコード追加・編集画面でも使えます!

せっかくなので、Font Awesome を使って、スペースフィールドを置いたところに?マークを表示してみましょう。
Qiita_tooltip04.png
?マークにカーソルを合わせると、説明が表示されるようにします。
Qiita_tooltip05.png
##🔧 設定手順
説明を付けたいフィールドの横にスペースフィールドを追加。
要素IDも忘れずにつけます。
Qiita_tooltip03.png

Font Awesome を使いたいので、Cybozu CDNからURLを探し、
アプリの設定 >> JavaScript/CSSでカスタマイズ >> PC用のCSSファイル にURLを追加します。
Qiita_tooltip06.png
JavaScriptでのカスタマイズは下記のとおりです。

(function() {
    'use strict';
    /* global tippy */

    kintone.events.on(['app.record.create.show', 'app.record.edit.show'], function(event) {
        // Font Awesome の "question-circle"を表示
        var mySpaceField = document.createElement('i');
        mySpaceField.className = 'fas fa-question-circle';

        tippy(mySpaceField, {
            arrow: true,
            content: '説明ですよ'
        });
        kintone.app.record.getSpaceElement('space01').appendChild(mySpaceField);
    });
})();

#🚀 おわり
Tippy.js、なかなか便利そうですね。

ツールチップの表示は、色々カスタマイズできます。
ぜひ、公式ページのサンプルを見てみてください。

18
7
1

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
18
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?