ăăŒăăŒăă·ă§ăŒăă«ăăăă©ă°ă€ăł
ăăŒăăŒăă·ă§ăŒăă«ăă (Keyboard Shortcuts) ăă©ă°ă€ăłăŻăăăăČăŒă·ă§ăłăă€ăăłă知çăăăăłăŻăȘăăăăŒăæäœăźăăăźă°ăăŒăă«ăȘăăŒăăŒăăłăłăăăŒă«ăćŻèœă«ăăŸăă
ă€ăłăčăăŒă«
ăă©ă°ă€ăłăăă±ăŒăžăă€ăłăčăăŒă«ăăŸăïŒ
äœżăæč
import { useCalendarApp, DayFlowCalendar } from '@dayflow/react';
import { createKeyboardShortcutsPlugin } from '@dayflow/plugin-keyboard-shortcuts';
function MyCalendar() {
const calendar = useCalendarApp({
views: [
/* ăă„ăŒ */
],
plugins: [
createKeyboardShortcutsPlugin({
// ăȘăă·ă§ăłèšćź
}),
],
});
return <DayFlowCalendar calendar={calendar} />;
}<template>
<DayFlowCalendar :calendar="calendar" />
</template>
<script setup>
import { DayFlowCalendar, useCalendarApp } from '@dayflow/vue';
import { createKeyboardShortcutsPlugin } from '@dayflow/plugin-keyboard-shortcuts';
const calendar = useCalendarApp({
views: [
/* ăă„ăŒ */
],
plugins: [
createKeyboardShortcutsPlugin({
// ăȘăă·ă§ăłèšćź
}),
],
});
</script>import { Component } from '@angular/core';
import { DayFlowCalendarModule } from '@dayflow/angular';
import { createKeyboardShortcutsPlugin } from '@dayflow/plugin-keyboard-shortcuts';
@Component({
selector: 'app-root',
standalone: true,
imports: [DayFlowCalendarModule],
template: `<dayflow-calendar [calendar]="calendar"></dayflow-calendar>`
})
export class AppComponent {
calendar = {
views: [
/* ăă„ăŒ */
],
plugins: [
createKeyboardShortcutsPlugin({
// ăȘăă·ă§ăłèšćź
})
]
};
}<script>
import { DayFlowCalendar, useCalendarApp } from '@dayflow/svelte';
import { createKeyboardShortcutsPlugin } from '@dayflow/plugin-keyboard-shortcuts';
const calendar = useCalendarApp({
views: [
/* ăă„ăŒ */
],
plugins: [
createKeyboardShortcutsPlugin({
// ăȘăă·ă§ăłèšćź
}),
],
});
</script>
<DayFlowCalendar {calendar} />ăăă©ă«ăăźă·ă§ăŒăă«ăă
| æäœ | ăăŒ (Mac) | ăăŒ (Windows/Linux) |
|---|---|---|
| 仿„ă«ç§»ć | Cmd + T | Ctrl + T |
| æ€çŽą | Cmd + F | Ctrl + F |
| æ°èŠă€ăăłă | Cmd + N | Ctrl + N |
| ăăăČăŒă·ă§ăł | ArrowLeft / ArrowRight | ArrowLeft / ArrowRight |
| ă€ăăłăăźăżăç§»ć | Tab / Shift + Tab | Tab / Shift + Tab |
| ć ă«æ»ă | Cmd + Z | Ctrl + Z |
| ăăçŽă | Cmd + Shift + Z / Cmd + Y | Ctrl + Y |
| ă€ăăłăăăłăăŒ | Cmd + C | Ctrl + C |
| ă€ăăłăăćăćă | Cmd + X | Ctrl + X |
| ă€ăăłăăèČŒăä»ă | Cmd + V | Ctrl + V |
| ă€ăăłăăćé€ | Backspace / Delete | Backspace / Delete |
| ăă€ăąăă°/ăăă«ăéăă | Esc | Esc |
èšćź
ăăŒăăăăłă°ăă«ăčăżăă€ășăăăăćăąăŻă·ă§ăłă«ă«ăčăżă ăłăŒă«ăăăŻăæäŸăăăă§ăăŸăïŒ
createKeyboardShortcutsPlugin({
keyMap: {
today: 't',
search: 'f',
prev: 'ArrowLeft',
next: 'ArrowRight',
undo: 'z',
redo: 'y',
delete: 'Delete',
newEvent: 'n',
},
callbacks: {
undo: app => {
console.log('ă«ăčăżă ăźć
ă«æ»ăăăžăăŻ');
app.undo();
},
redo: app => {
console.log('ă«ăčăżă ăźăăçŽăăăžăăŻ');
if ((app as any).redo) (app as any).redo();
},
delete: app => {
if (confirm('æŹćœă«ćé€ăăŸăăïŒ')) {
const selectedId = app.state.selectedEventId;
if (selectedId) app.deleteEvent(selectedId);
}
},
},
});ć©çšćŻèœăȘăłăŒă«ăăăŻ
callbacks ăȘăăžă§ăŻăă§ăŻä»„äžăźăłăŒă«ăăăŻăă”ăăŒăăăăŠăăŸăïŒ
undo,redo,paste(appăćăćăăŸă)copy,cut,delete(appăševent?: EventăćăćăăŸă)today,search,prev,next,newEvent,dismiss(appăćăćăăŸă)tab(appăšreverse: booleanăćăćăăŸă)
ăă©ă°ă€ăł API
ăă©ă°ă€ăłăăłăă«ăććŸăăŠăćźèĄæă«ă·ă§ăŒăă«ăăăźćäœăć¶ćŸĄă§ăăŸăïŒ
import { type KeyboardShortcutsService } from '@dayflow/plugin-keyboard-shortcuts';
const kb = app.getPlugin<KeyboardShortcutsService>('keyboard-shortcuts');KeyboardShortcutsService
| ăĄăœăă | èżă〠| èȘŹæ |
|---|---|---|
enable() | void | ă·ă§ăŒăă«ăăćŠçăćæćčćăă |
disable() | void | enable() ăćŒă°ăăăŸă§ć
šă·ă§ăŒăă«ăăăæć¶ăă |
isEnabled() | boolean | ă·ă§ăŒăă«ăăăçŸćšæćčăă©ăăăèżă |
ăăăăäœżçšäŸăšăăŠăă«ăčăżă ăąăŒăă«ăăȘăăăăăčăăšăăŁăżăéăăŠăăéăă«ăŹăłăăŒăźă·ă§ăŒăă«ăăăäžæçă«æć¶ăăć ŽćăăăăŸăïŒ
function MyModal() {
const kb = app.getPlugin<KeyboardShortcutsService>('keyboard-shortcuts');
useEffect(() => {
kb?.disable();
return () => kb?.enable(); // ăąăłăăŠăłăæă«ćŸ©ć
}, []);
// ...
}ăăă°ă©ă ăăéăăŠăă UI ăéăăăăšăă§ăăŸăïŒ
app.dismissUI();