Sidebarの項を任意の順に並び替えたい

Notebooksをすべて展開し、Statusをよく確認する運用をしています。
Statusがビューに収まっておらず,毎回スクロールしているうちにStatusが一番上にあるといいなと思いリクエストを書きました。

最初は単に順序の変更をリクエストしようかと思いました。Notebooksは基本的に増減するもので,Statusはこれ以上増えることがないので優先して上部でも良いのかなと思ったからです。

ただ,Statusを活用しているかどうかは各個人の使い方によって違うので,それが優先されるのは変だな〜と思い,並び替えのリクエストにしました(InkdropはNotebooksを扱うアプリなのだから,それがデフォルトで優先的に表示されている方が自然でもあるし)。

追伸:いつもアプリのお世話になってます!リモートワークが主になってきたので,利用頻度も増えてきてますます重宝させてもらってます🙏

よしおかさん

こんにちは。ご要望ありがとうございます。
サイドバーの順序並び替えですね。
ご指摘の通り、これは個人のユースケースに依存しそうです。
こちらはLayout APIの仕組みを応用すれば変更できます。
簡単に説明すると、Inkdropではプラグインやinit.jsからカスタムReactコンポーネントを追加したり削除したりできます。
サイドバーのレイアウト定義はこちらです。以下のように確認できます:

> inkdrop.store.getState().layouts['sidebar-menu']
["SideBarMenuItemAllNotes", "SideBarMenuItemSearch", "SideBarMenuSectionNotebooks", "SideBarMenuBookListRoot", "SideBarMenuItemTrash", "SideBarMenuSectionStatus", "SideBarMenuStatusList", "SideBarMenuSectionTags", "SideBarMenuTagList"]

SideBarMenuSectionStatusSideBarMenuStatusListSideBarMenuSectionNotebooksの前に移動すれば実現できそうです。
変更するには以下のようにredux actionをdispatchします:

// get inkdrop redux actions
let { actions } = require('inkdrop')
// find the layout of the sidebar menu
let layoutSidebarMenu = [...inkdrop.store.getState().layouts['sidebar-menu']]
// find the index of the status section menu item
let idxSectionStatus = layoutSidebarMenu.indexOf('SideBarMenuSectionStatus')
// find the index of the notebook section menu item
let idxSectionNotebooks = layoutSidebarMenu.indexOf('SideBarMenuSectionNotebooks')
// extract the section menu items
let menuStatus = layoutSidebarMenu.splice(idxSectionStatus, 2)
// insert the section menu items before the notebook menu item
layoutSidebarMenu.splice(idxSectionNotebooks, 0, ...menuStatus)
// update the layout
inkdrop.store.dispatch(actions.layouts.setComponents('sidebar-menu', layoutSidebarMenu))

注意点は、レイアウトやコンポーネント名は将来的に変更される可能性がある事です。
その際は、ドキュメントを再度ご確認ください。
以上、ご参考になれば幸いです!

リモートワークでのご活用ありがとうございますー!

1 Like

対応方法の詳細,ありがとうございます。
がんばってやってみます!

init.jsというのを初めて知りましたが,Inkdropのドキュメントと頂いたコードのおかげで並び替えできました。タスクがものすごく捗りそうです。ありがとうございます!

1 Like

解決してよかったです!

1 Like