/** * WordPress dependencies */ import { Button, Dashicon, TextControl } from '@safe-wordpress/components'; import { useDispatch } from '@safe-wordpress/data'; import { useState } from '@safe-wordpress/element'; import { _nx, _x, sprintf } from '@safe-wordpress/i18n'; /** * External dependencies */ import { trim, without } from 'lodash'; import { DeleteButton } from '@nelio-content/components'; import { replace } from '@nelio-content/utils'; import type { TaskPreset as TaskPresetType } from '@nelio-content/types'; /** * Internal dependencies */ import './style.scss'; import { store as NC_TASK_PRESETS } from '~/nelio-content-pages/settings/task-presets/store'; import { useTaskPreset, useIsSaving, } from '~/nelio-content-pages/settings/task-presets/hooks'; import { TaskTemplate } from '../task-template'; export type TaskPresetProps = { readonly presetId: TaskPresetType[ 'id' ]; }; export const TaskPreset = ( { presetId, }: TaskPresetProps ): JSX.Element | null => { const preset = useTaskPreset( presetId ); const isSaving = useIsSaving(); const { openTaskTemplateEditor, removeTaskPreset, setTaskPresetName, setTaskTemplates, } = useDispatch( NC_TASK_PRESETS ); const [ isExpanded, expand ] = useState( ! preset?.tasks.length ); if ( ! preset ) { return null; } return (
{ isExpanded && (
setTaskPresetName( presetId, name ) } placeholder={ _x( 'Name your preset…', 'user', 'nelio-content' ) } /> removeTaskPreset( presetId ) } />
{ preset.tasks.map( ( task, index ) => ( setTaskTemplates( presetId, without( preset.tasks, task ) ) } onUpdate={ ( newTask ) => setTaskTemplates( presetId, replace( task, newTask, preset.tasks ) ) } disabled={ isSaving } /> ) ) }
) }
); };