LoginSignup
8
5

More than 3 years have passed since last update.

【kintone】標準機能のドロップダウンとkintone UI Component v1のドロップダウンを連携させる

Last updated at Posted at 2021-04-01

今回はkintoneの標準機能のドロップダウンと、kintone UI Component v1 のドロップダウンを連携させるサンプルです。

kintone UI Component v1 のドキュメントはこちら

アプリの準備

ドロップダウン、スペース、文字列(1行)フィールドをフォームに配置します。

フィールド種類 フィールド名 フィールドコード 備考
ドロップダウン 会社 会社 選択肢は、任天堂、スクエニ、コナミ など
スペース -- spDropdown
文字列(1行) 好きなゲーム 好きなゲーム

image.png

kintone UI Component v1 の準備

JavaScript / CSSでカスタマイズ
kintone UI Component v1 のCDNを追加しておきます。

CDN : https://unpkg.com/kintone-ui-component/umd/kuc.min.js

JavaScript

新規追加&編集画面でドロップダウンが動くようにします。

kintone.events.on(
  ["app.record.create.show", "app.record.edit.show"],
  (event) => {
    // コードを書くところ

  }
);

スペースフィールドにドロップダウンを設置

kintone UI Component v1 でドロップダウンを設置します。
itemsを空っぽにしておくことと、idを設定しておくのがポイントです。
また、ドロップダウン変更イベントで文字列(1行)フィールドに選択した値を表示するようにしておきます。
(addEventListenerで書けます~)

// ドロップダウンを設置するスペースフィールドの要素を取得
const spDropdown = kintone.app.record.getSpaceElement("spDropdown");
// ドロップダウンをつくる
const drGame = new Kuc.Dropdown({
  label: "ゲーム",
  requiredIcon: true,
  // items はからっぽにしておく
  items: [],
  // changeイベントで拾えるようにidを設定しておく
  id: "drGame",
  visible: true,
  disabled: false,
});
// スペースフィールドにドロップダウンを置く
spDropdown.appendChild(drGame);

// ドロップダウンを選択したときのイベント
drGame.addEventListener("change", () => {
  const r = kintone.app.record.get();
  // ドロップダウンで選択した値を文字列(1行)フィールド(フィールドコード:好きなゲーム)にコピー
  r.record.好きなゲーム.value = r.record.会社.value + "" + drGame.value;
  kintone.app.record.set(r);
});

標準機能のドロップダウンのフィールド値変更のプログラム

標準機能のドロップダウンの値を変更したときはフィールド値変更イベントが発生します。
選択した値によってドロップダウンの中身を変更します。

// ドロップダウンを変更するイベント
kintone.events.on(
  ["app.record.create.change.会社", "app.record.edit.change.会社"],
  (event) => {
    // ゲームドロップダウンの要素取得
    const drGame = document.getElementById("drGame");

    // 選択した会社によって、ドロップダウンのitemsを変更する
    switch (event.changes.field.value) {
      case "任天堂":
        drGame.items = [
          { value: "マリオ" },
          { value: "ゼルダ" },
          { value: "ポケモン" },
        ];
        break;
      case "スクエニ":
        drGame.items = [
          { value: "ロマサガ" },
          { value: "FF" },
          { value: "ドラクエ" },
        ];
        break;
      default:
        drGame.items = [
          { value: "ゴエモン" },
          { value: "ポップンミュージック" },
          { value: "メタルギアソリッド" },
        ];
    }
  }
);

全体的なコードは以下です。

動作確認 & まとめ

こんな感じに動きましたでしょうか?

c.gif

標準機能のドロップダウンとkintone UI Component v1 で作るドロップダウンが連携しています。

他のアプリのレコードをドロップダウンの選択肢にすることもできます。
↓こちらもご参考にどうぞ

kintone UI Component v1 を活用すればいろんなアプリが作れそうです^^ぜひチャレンジしてみてくださいね!

8
5
0

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
8
5