feat: new note title format w/ prefs (#1629)
This commit is contained in:
@@ -32,6 +32,13 @@ export enum PrefKey {
|
|||||||
MobileDoNotShowAgainUnsupportedEditors = 'mobileDoNotShowAgainUnsupportedEditors',
|
MobileDoNotShowAgainUnsupportedEditors = 'mobileDoNotShowAgainUnsupportedEditors',
|
||||||
MobileSelectedTagUuid = 'mobileSelectedTagUuid',
|
MobileSelectedTagUuid = 'mobileSelectedTagUuid',
|
||||||
MobileNotesHideEditorIcon = 'mobileHideEditorIcon',
|
MobileNotesHideEditorIcon = 'mobileHideEditorIcon',
|
||||||
|
NewNoteTitleFormat = 'newNoteTitleFormat',
|
||||||
|
}
|
||||||
|
|
||||||
|
export enum NewNoteTitleFormat {
|
||||||
|
CurrentDateAndTime = 'CurrentDateAndTime',
|
||||||
|
CurrentNoteCount = 'CurrentNoteCount',
|
||||||
|
Empty = 'Empty',
|
||||||
}
|
}
|
||||||
|
|
||||||
export type PrefValue = {
|
export type PrefValue = {
|
||||||
@@ -65,4 +72,5 @@ export type PrefValue = {
|
|||||||
[PrefKey.MobileDoNotShowAgainUnsupportedEditors]: boolean
|
[PrefKey.MobileDoNotShowAgainUnsupportedEditors]: boolean
|
||||||
[PrefKey.MobileSelectedTagUuid]: string | undefined
|
[PrefKey.MobileSelectedTagUuid]: string | undefined
|
||||||
[PrefKey.MobileNotesHideEditorIcon]: boolean
|
[PrefKey.MobileNotesHideEditorIcon]: boolean
|
||||||
|
[PrefKey.NewNoteTitleFormat]: NewNoteTitleFormat
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import {
|
|||||||
ComponentMutator,
|
ComponentMutator,
|
||||||
SNComponent,
|
SNComponent,
|
||||||
StorageValueModes,
|
StorageValueModes,
|
||||||
|
NewNoteTitleFormat,
|
||||||
} from '@standardnotes/snjs'
|
} from '@standardnotes/snjs'
|
||||||
import { Subtitle, Text, Title } from '@/Components/Preferences/PreferencesComponents/Content'
|
import { Subtitle, Text, Title } from '@/Components/Preferences/PreferencesComponents/Content'
|
||||||
import { WebApplication } from '@/Application/Application'
|
import { WebApplication } from '@/Application/Application'
|
||||||
@@ -61,6 +62,14 @@ const Defaults: FunctionComponent<Props> = ({ application }) => {
|
|||||||
|
|
||||||
const [spellcheck, setSpellcheck] = useState(() => application.getPreference(PrefKey.EditorSpellcheck, true))
|
const [spellcheck, setSpellcheck] = useState(() => application.getPreference(PrefKey.EditorSpellcheck, true))
|
||||||
|
|
||||||
|
const [newNoteTitleFormat, setNewNoteTitleFormat] = useState(() =>
|
||||||
|
application.getPreference(PrefKey.NewNoteTitleFormat, NewNoteTitleFormat.CurrentDateAndTime),
|
||||||
|
)
|
||||||
|
const handleNewNoteTitleFormatChange = (value: string) => {
|
||||||
|
setNewNoteTitleFormat(value as NewNoteTitleFormat)
|
||||||
|
application.setPreference(PrefKey.NewNoteTitleFormat, value as NewNoteTitleFormat)
|
||||||
|
}
|
||||||
|
|
||||||
const [addNoteToParentFolders, setAddNoteToParentFolders] = useState(() =>
|
const [addNoteToParentFolders, setAddNoteToParentFolders] = useState(() =>
|
||||||
application.getPreference(PrefKey.NoteAddToParentFolders, true),
|
application.getPreference(PrefKey.NoteAddToParentFolders, true),
|
||||||
)
|
)
|
||||||
@@ -138,7 +147,7 @@ const Defaults: FunctionComponent<Props> = ({ application }) => {
|
|||||||
)}
|
)}
|
||||||
<div>
|
<div>
|
||||||
<Subtitle>Default Note Type</Subtitle>
|
<Subtitle>Default Note Type</Subtitle>
|
||||||
<Text>New notes will be created using this type.</Text>
|
<Text>New notes will be created using this type</Text>
|
||||||
<div className="mt-2">
|
<div className="mt-2">
|
||||||
<Dropdown
|
<Dropdown
|
||||||
id="def-editor-dropdown"
|
id="def-editor-dropdown"
|
||||||
@@ -150,6 +159,33 @@ const Defaults: FunctionComponent<Props> = ({ application }) => {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<HorizontalSeparator classes="my-4" />
|
<HorizontalSeparator classes="my-4" />
|
||||||
|
<div>
|
||||||
|
<Subtitle>Default Note Title Format</Subtitle>
|
||||||
|
<Text>New notes will be created with a title in this format</Text>
|
||||||
|
<div className="mt-2">
|
||||||
|
<Dropdown
|
||||||
|
id="def-new-note-title-format"
|
||||||
|
label="Select the default note type"
|
||||||
|
items={[
|
||||||
|
{
|
||||||
|
label: 'Current date and time',
|
||||||
|
value: NewNoteTitleFormat.CurrentDateAndTime,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'Current note count',
|
||||||
|
value: NewNoteTitleFormat.CurrentNoteCount,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'Empty',
|
||||||
|
value: NewNoteTitleFormat.Empty,
|
||||||
|
},
|
||||||
|
]}
|
||||||
|
value={newNoteTitleFormat}
|
||||||
|
onChange={handleNewNoteTitleFormatChange}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<HorizontalSeparator classes="my-4" />
|
||||||
<div className="flex items-center justify-between">
|
<div className="flex items-center justify-between">
|
||||||
<div className="flex flex-col">
|
<div className="flex flex-col">
|
||||||
<Subtitle>Spellcheck</Subtitle>
|
<Subtitle>Spellcheck</Subtitle>
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ import {
|
|||||||
FileViewController,
|
FileViewController,
|
||||||
FileItem,
|
FileItem,
|
||||||
WebAppEvent,
|
WebAppEvent,
|
||||||
|
NewNoteTitleFormat,
|
||||||
} from '@standardnotes/snjs'
|
} from '@standardnotes/snjs'
|
||||||
import { action, computed, makeObservable, observable, reaction, runInAction } from 'mobx'
|
import { action, computed, makeObservable, observable, reaction, runInAction } from 'mobx'
|
||||||
import { WebApplication } from '../../Application/Application'
|
import { WebApplication } from '../../Application/Application'
|
||||||
@@ -29,6 +30,7 @@ import { SearchOptionsController } from '../SearchOptionsController'
|
|||||||
import { SelectedItemsController } from '../SelectedItemsController'
|
import { SelectedItemsController } from '../SelectedItemsController'
|
||||||
import { NotesController } from '../NotesController'
|
import { NotesController } from '../NotesController'
|
||||||
import { NoteTagsController } from '../NoteTagsController'
|
import { NoteTagsController } from '../NoteTagsController'
|
||||||
|
import { formatDateAndTimeForNote } from '@/Utils/DateUtils'
|
||||||
|
|
||||||
const MinNoteCellHeight = 51.0
|
const MinNoteCellHeight = 51.0
|
||||||
const DefaultListNumNotes = 20
|
const DefaultListNumNotes = 20
|
||||||
@@ -485,7 +487,19 @@ export class ItemListController extends AbstractViewController implements Intern
|
|||||||
await this.navigationController.selectHomeNavigationView()
|
await this.navigationController.selectHomeNavigationView()
|
||||||
}
|
}
|
||||||
|
|
||||||
let title = `Note ${this.notes.length + 1}`
|
const titleFormat = this.application.getPreference(
|
||||||
|
PrefKey.NewNoteTitleFormat,
|
||||||
|
NewNoteTitleFormat.CurrentDateAndTime,
|
||||||
|
)
|
||||||
|
|
||||||
|
let title = formatDateAndTimeForNote(new Date())
|
||||||
|
|
||||||
|
if (titleFormat === NewNoteTitleFormat.CurrentNoteCount) {
|
||||||
|
title = `Note ${this.notes.length + 1}`
|
||||||
|
} else if (titleFormat === NewNoteTitleFormat.Empty) {
|
||||||
|
title = ''
|
||||||
|
}
|
||||||
|
|
||||||
if (this.isFiltering) {
|
if (this.isFiltering) {
|
||||||
title = this.noteFilterText
|
title = this.noteFilterText
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,3 +11,9 @@ export const formatDateForContextMenu = (date: Date | undefined) => {
|
|||||||
|
|
||||||
return `${date.toDateString()} ${date.toLocaleTimeString()}`
|
return `${date.toDateString()} ${date.toLocaleTimeString()}`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const formatDateAndTimeForNote = (date: Date) => {
|
||||||
|
return `${date.toLocaleDateString(undefined, {
|
||||||
|
dateStyle: 'full',
|
||||||
|
})} ${date.toLocaleTimeString()}`
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user