import { Cell, CustomModalLayout, FormField, Input, InputStatus, Layout, Modal, ModalProps, } from '@wix/design-system'; import React, { FormEvent, useCallback, useEffect, useState } from 'react'; import { observer } from 'mobx-react-lite'; import { FiltersMap } from '@wix/bex-core'; import { CollectionViewsState } from '../../../../state'; import { TextWidthLoader } from '../../../TextWidthLoader'; export interface CollectionRenameViewModalProps< T, F extends FiltersMap = FiltersMap, > extends Partial { state: CollectionViewsState; } function _CollectionRenameViewModal({ state, ...rest }: CollectionRenameViewModalProps) { const { views: { renameViewModal, collection }, } = state; const { translate: t } = collection; const [nameInputValue, setNameInputValue] = useState( state.views.currentView?.name ?? '', ); const [statusMessage, setStatusMessage] = useState(); const [nameInputStatus, setNameInputStatus] = useState< InputStatus | undefined >(undefined); const [submitted, setSubmitted] = useState(false); useEffect(() => { if (nameInputValue !== '') { setNameInputStatus(undefined); setStatusMessage(undefined); } }, [nameInputValue]); useEffect(() => { renameViewModal.events.on('open', onOpenRenameViewModal); return () => { renameViewModal.events.off('open', onOpenRenameViewModal); }; }, []); const onOpenRenameViewModal = () => { setNameInputValue(state.views.currentView?.name ?? ''); state.sendRenameViewSelectedBI(); }; const onCloseModal = () => { setNameInputStatus(undefined); setNameInputValue(''); renameViewModal.close(); }; const primaryButtonOnClick = useCallback( async (event?: FormEvent) => { event?.preventDefault(); if (submitted || nameInputValue === state.views.currentView?.name) { return; } if (nameInputValue === '') { setNameInputStatus('error'); setStatusMessage(t('cairo.noViewName.validationTooltip')); return; } setSubmitted(true); await state.renameView(nameInputValue); onCloseModal(); }, [submitted, nameInputValue], ); return ( { setSubmitted(false); }} isOpen={renameViewModal.isOpen} >
), disabled: nameInputValue === state.views.currentView?.name, type: 'submit', }} primaryButtonOnClick={primaryButtonOnClick} secondaryButtonText={t('cairo.manageView.Rename.modal.cancel.CTA')} secondaryButtonOnClick={onCloseModal} onCloseButtonClick={onCloseModal} dataHook="rename-view-modal" width="510px" > setNameInputValue(e.target.value)} status={nameInputStatus} statusMessage={statusMessage} maxLength={50} />
); } export const CollectionRenameViewModal = observer(_CollectionRenameViewModal);