import { Popover } from '@base-ui/react/popover'; import { Toggle } from '@base-ui/react/toggle'; import { ToggleGroup } from '@base-ui/react/toggle-group'; import { Toolbar } from '@base-ui/react/toolbar'; import type { Column } from '@tanstack/react-table'; import { ReactNode } from 'react'; import { IoBookOutline, IoChevronDown, IoOptions } from 'react-icons/io5'; import Button from '../../../../common/components/buttons/Button'; import Checkbox from '../../../../common/components/checkbox/Checkbox'; import * as Editor from '../../../../common/components/editor-utils/EditorUtils'; import PopoverContents from '../../../../common/components/popover/Popover'; import type { ExtendedEntry } from '../../../../common/utils/rundownMetadata'; import { cx } from '../../../../common/utils/styleUtils'; import { AppMode } from '../../../../ontimeConfig'; import { CuesheetOptions, usePersistedCuesheetOptions } from '../../cuesheet.options'; import { useCuesheetPermissions } from '../../useTablePermissions'; import CuesheetShareModal from './CuesheetShareModal'; import style from './CuesheetTableSettings.module.scss'; interface CuesheetTableSettingsProps { columns: Column[]; cuesheetMode: AppMode; setCuesheetMode: (mode: AppMode) => void; handleResetResizing: () => void; handleResetReordering: () => void; handleClearToggles: () => void; } export interface ViewSettingsProps { optionsStore: CuesheetOptions; } export interface ColumnSettingsProps { columns: Column[]; handleResetResizing: () => void; handleResetReordering: () => void; handleClearToggles: () => void; } export default function CuesheetTableSettings({ columns, cuesheetMode, setCuesheetMode, handleResetResizing, handleResetReordering, handleClearToggles, }: CuesheetTableSettingsProps) { const canChangeMode = useCuesheetPermissions((state) => state.canChangeMode); const canShare = useCuesheetPermissions((state) => state.canShare); const options = usePersistedCuesheetOptions(); const toggleCuesheetMode = (mode: AppMode[]) => { // we need to stop user from deselecting a mode const newValue = mode.at(0); if (!newValue) return; setCuesheetMode(newValue); }; return ( {canChangeMode && ( } value={AppMode.Run} className={style.radioButton}> Run } value={AppMode.Edit} className={style.radioButton}> Edit )} {canShare && ( <> )} ); } export function ViewSettings({ optionsStore }: ViewSettingsProps) { const options = optionsStore; return ( Settings } /> } />
Element visibility options.setOption('hideTableSeconds', checked)} /> Hide seconds in table options.setOption('hideIndexColumn', checked)} /> Hide index column
Table Behaviour options.setOption('showDelayedTimes', checked)} /> Show delayed times options.setOption('hideDelays', checked)} /> Hide delay entries
); } export function ColumnSettings({ columns, handleResetResizing, handleResetReordering, handleClearToggles, }: ColumnSettingsProps) { return ( Columns } /> } />
Column visibility {columns.map((column) => { const columnHeader = column.columnDef.header; const visible = column.getIsVisible(); return ( {columnHeader as ReactNode} ); })}
Reset Options
); }