文件
chen 301194963b
一些检查失败了
automerge / automerge (push) Has been cancelled
react-native-android-build-apk / AssembleRelease (push) Has been cancelled
Build macOS M1 / Main (push) Has been cancelled
Joplin Continuous Integration / Main (macos-15-intel) (push) Has been cancelled
Joplin Continuous Integration / Main (ubuntu-22.04) (push) Has been cancelled
Joplin Continuous Integration / Main (ubuntu-22.04-arm) (push) Has been cancelled
Joplin Continuous Integration / Main (windows-11-vs2026-arm) (push) Has been cancelled
Joplin Continuous Integration / Main (windows-2025) (push) Has been cancelled
Joplin Continuous Integration / ServerDockerImage (ubuntu-22.04) (push) Has been cancelled
Joplin Continuous Integration / ServerDockerImage (ubuntu-22.04-arm) (push) Has been cancelled
Joplin UI tests / Main (ubuntu-22.04) (push) Has been cancelled
Joplin UI tests / Main (windows-2025) (push) Has been cancelled
Joplin UI tests / Mobile (push) Has been cancelled
Close stale issues / ProcessStaleIssues (push) Has been cancelled
feat: Initial clean release of CHM
2026-11-04 11:29:39 +08:00

52 行
1.4 KiB
TypeScript

import { useCallback } from 'react';
import bridge from '../../../services/bridge';
import { ColumnName, NoteListColumn, NoteListColumns, columnNames, defaultWidth } from '@joplin/lib/services/plugins/api/noteListType';
import Setting from '@joplin/lib/models/Setting';
import { MenuItemConstructorOptions } from 'electron';
import getColumnTitle from './getColumnTitle';
const Menu = bridge().Menu;
export default (columns: NoteListColumns) => {
return useCallback(() => {
const menuItems: MenuItemConstructorOptions[] = [];
for (const columnName of columnNames) {
menuItems.push({
id: columnName,
label: getColumnTitle(columnName),
type: 'checkbox',
checked: !!columns.find(c => c.name === columnName),
click: (menuItem) => {
const newColumns = columns.slice();
const { checked } = menuItem;
const id = menuItem.id as ColumnName;
if (!checked) {
if (columns.length === 1) return;
const index = newColumns.findIndex(c => c.name === id);
newColumns.splice(index, 1);
} else {
const newColumn: NoteListColumn = {
name: id,
width: defaultWidth,
};
newColumns.push(newColumn);
}
Setting.setValue('notes.columns', newColumns);
},
});
}
menuItems.sort((a, b) => {
return a.label < b.label ? -1 : +1;
});
const menu = Menu.buildFromTemplate(menuItems);
menu.popup({ window: bridge().mainWindow() });
}, [columns]);
};