初心者のためのExtJS入門

ExtJSを使うので、ついでにまとめていきます

(ExtJS6.5)グリッドの新機能[modern] (1)

ExtJS6.5でmodernのグリッドにいくつか変更箇所があります。

今回は選択と編集を試してみました。

選択

Ext.grid.Gridのselectableコンフィグを使って、どういう選択を可能にするかを設定できるようになりました。

items: [{
    xtype: 'grid',

    selectable: {
        checkbox: true,
        cells: true
    }
}]

プラグインで指定していた以前より、可読性が良くなりました。

ドキュメントを見る限り8つの項目を指定できるようです。

- mode `'single'`, `'multi'` Allow selection of only a single or multiple *records*. This is only valid when selecting rows.
- deselectable Configure as false to disallow deselecting down to zero selected *records*. This is only valid when selecting rows.
- drag `true` or `false` to allow drag gestures to swipt a rage of cells or rows.
- columns `true` to enable column selection by clicking on headers. Defaults to `false`
- cells `true` to enable cell selection by clicking or dragging on cells. Defaults to `false`
- rows Set to `false` to disable selecting rows. Defaults to `true`
- checkbox `true` to add a checkbox column to display selected state. `'only'` to indicate that only clicks on the checkbox affect row selected state.
- extensible `true` to enable the selection to be extended either in the `X` or `Y` axis or `'x'` or `'y'` to configure

グリッドの場合は、Ext.grid.selection.Model(http://docs.sencha.com/extjs/6.5.0/modern/Ext.grid.selection.Model.html)というセレクションモデルのクラスを使っているようで、このクラスのコンフィグとして渡してくれるみたいです。

編集

Ext.grid.plugin.CellEditingプラグインクラスを使って、セル単位で編集できるようになりました。classicでは当たり前にできていましたが、modernでは新規です。

これまでの編集は、行を選択すると、編集フォームが画面外からスライドイン表示され、そこで編集作業を行うという流れでした。

しかし、PCで扱う場合は直接編集できたほうが操作感が良いため、PC向けに作成されたようです。

このことから、最終的にはPC・モバイルともにmodernにまとめたいという意思を感じます。

PC向けの場合は新しく追加されたプラグインを、モバイル向けの場合はこれまでのUIを使いたい場合は、platformConfigで設定するコンフィグを切り替えできるようです。

items: [{
    xtype: 'grid',

    platformConfig: {

        desktop: {
            plugins: {
                gridcellediting: true
            }
        },

        '!desktop': {
            plugins: {
                grideditable: true
            }
        }
    },
    ...]
}]

試してみると、PCのユーザエージェントだと↓のようにセル単位でのインライン編集となり

f:id:sham-memo:20170530223417p:plain

タブレットのユーザエージェントだと↓のように編集フォームでの編集操作となりました。

f:id:sham-memo:20170530223430p:plain

インライン編集は、編集中にグリッドをスクロールしても編集の行はその位置に固定された状態になるようです。なるほど、スーパーパワー!(意味が分からない人はドキュメントをお読みください)

f:id:sham-memo:20170530224750p:plain