(context: MainMenuContext)
| 381 | } |
| 382 | |
| 383 | function createSortMenuItems(context: MainMenuContext): MenuConfig[] { |
| 384 | if (!context.view.contentSortField || !context.view.contentSortOrder) { |
| 385 | return [] |
| 386 | } |
| 387 | |
| 388 | const sortLabels: Record<MainMenuContentSortField, string> = { |
| 389 | updatedAt: i18n.t('menu:view.sortBy.dateModified'), |
| 390 | createdAt: i18n.t('menu:view.sortBy.dateCreated'), |
| 391 | name: i18n.t('menu:view.sortBy.name'), |
| 392 | } |
| 393 | const orderLabels: Record<MainMenuContentSortOrder, string> = { |
| 394 | ASC: i18n.t('menu:view.sortOrder.ascending'), |
| 395 | DESC: i18n.t('menu:view.sortOrder.descending'), |
| 396 | } |
| 397 | |
| 398 | const sortItems = (Object.keys(sortLabels) as MainMenuContentSortField[]).map( |
| 399 | sortField => ({ |
| 400 | label: sortLabels[sortField], |
| 401 | type: 'radio' as const, |
| 402 | checked: context.view.contentSortField === sortField, |
| 403 | click: () => send('main-menu:set-content-sort-field', sortField), |
| 404 | }), |
| 405 | ) |
| 406 | const orderItems = ( |
| 407 | Object.keys(orderLabels) as MainMenuContentSortOrder[] |
| 408 | ).map(sortOrder => ({ |
| 409 | label: orderLabels[sortOrder], |
| 410 | type: 'radio' as const, |
| 411 | checked: context.view.contentSortOrder === sortOrder, |
| 412 | click: () => send('main-menu:set-content-sort-order', sortOrder), |
| 413 | })) |
| 414 | |
| 415 | return [ |
| 416 | { |
| 417 | label: i18n.t('menu:view.sortBy.label'), |
| 418 | enabled: false, |
| 419 | }, |
| 420 | ...sortItems, |
| 421 | { type: 'separator' as const }, |
| 422 | { |
| 423 | label: i18n.t('menu:view.sortOrder.label'), |
| 424 | enabled: false, |
| 425 | }, |
| 426 | ...orderItems, |
| 427 | ] |
| 428 | } |
| 429 | |
| 430 | function createViewMenuItems(context: MainMenuContext): MenuConfig[] { |
| 431 | const items = createLayoutMenuItems(context) |
no test coverage detected