const { componentOwnerId, columnIndex, columnName } = props; const PopupContainer = styled.div` position: relative; background-color: #1d1d21; padding: 1rem; width: 489px; height: fit-content; `; const Header = styled.div` display: flex; flex-direction: row; justify-content: space-between; align-items: center; `; const ActionsContainer = styled.div` display: flex; flex-direction: row; gap: 3px; align-items: center; items-center: center; `; const Text = styled.div` display: flex; column-gap: 0.5rem; align-items: center; color: #fff; font-family: Helvetica Neue; font-size: 24px; font-style: normal; font-weight: 500; line-height: 120% margin-bottom: 1rem; `; const Name = styled.input` color: #fff; font-family: Helvetica Neue; font-size: 20px; font-weight: 500; line-height: 24px; letter-spacing: 0em; text-align: left; width: 100%; height: 40px; padding: 8px 60px 8px 16px; margin-top: 1rem; margin-bottom: 1rem; border-radius: 4px; background-color: transparent; :focus { outline-color: #D0FC42; outline-style: solid; outline-width: 1px; } ::placeholder { color: #D0FC42; } border: none; `; const Input = styled.input` color: #fff; font-family: Helvetica Neue; font-size: 16px; font-weight: 400; line-height: 24px; letter-spacing: 0em; text-align: left; flex: 1; height: 40px; padding: 8px 60px 8px 16px; margin-top: 1rem; margin-bottom: 1rem; border-radius: 4px; background-color: transparent; :focus { outline-color: #D0FC42; outline-style: solid; outline-width: 1px; } ::placeholder { color: #D0FC42; } border: none; `; const Label = styled.label` color: #777583; font-family: Helvetica Neue; font-size: 16px; font-weight: 400; line-height: 24px; letter-spacing: 0em; text-align: left; width: 30%; height: 40px; padding: 8px 60px 8px 16px; margin-top: 1rem; margin-bottom: 1rem; background-color: transparent; border: none; `; const CloseButton = styled.div` color: #fff; :hover { color: #D0FC42; } cursor: pointer; `; const DeleteButton = styled.div` color: #fff; :hover { color: #D0FC42; } display: flex; flex-direction: row; cursor: pointer; text-align: center; color: #ffffff; justify-content: center; align-items: center; gap: 3px; `; const P = styled.p` padding: 0; margin: 0; `; const Subtitle = styled.p` padding: 0; margin: 0; color: #6B7280; `; const InputContainer = styled.div` display: flex; flex-direction: row; align-items: center; `; const Divider = styled.div` width: 100%; height: 1px; background-color: #282933; margin-top: 16px; margin-bottom: 16; `; const SuccessIcon = styled.div` color: #00FF66; `; const ErrorIcon = styled.div` color: #DC3545; `; const FieldContainer = styled.div` position: relative; width: 100%; display: flex; flex-direction: row; align-items: center; `; const StatusIcon = styled.div` position: absolute; right: 1px; top: 35%; `; const MissingText = styled.div` position: absolute; right: 36%; top: 75%; font-family: Helvetica Neue; font-size: 16px; font-weight: 400; line-height: 24px; letter-spacing: 0em; color: red; `; const MissingName = styled.div` position: absolute; left: 14px; top: 75%; font-family: Helvetica Neue; font-size: 16px; font-weight: 400; line-height: 24px; letter-spacing: 0em; color: red; `; const EditColumnIcon = styled.div` color: transparent; :hover { color: #FFFFFF; } cursor: pointer; `; const TextContainer = styled.div` display: flex; justify-content: center; flex-direction: column; width: 100%; text-align: center; margin-bottom: 1rem; margin-top: 1rem; `; const FunctionButton = styled.button` background-color: red; :hover { opacity: 0.8; } color: #fff; border-radius: 4px; padding-top: 0.5rem; padding-bottom: 0.5rem; border: none; width: 100%; `; const DeleteColumnContainer = styled.div` position: relative; background-color: #1d1d21; padding: 1rem; width: 489px; height: fit-content; `; const CloseDeleteColumnButton = styled.div` background-color: transparent; display: flex; justify-content: center; color: #6B7280; :hover { color: #fff; } cursor: pointer; padding-top: 0.5rem; padding-bottom: 0.5rem; border: none; width: 100%; `; const Overlay = styled.div` background-color: var(--blackA9); position: fixed; z-index: 1000; inset: 0; display: flex; justify-content: center; align-items: center; animation: overlayShow 150ms cubic-bezier(0.16, 1, 0.3, 1); `; const ModalContent = styled.div` position: absolute; width: 500px; padding: 30px; border-radius: 20px; color: white; `; const [columnDetailsOpen, setColumnDetailsOpen] = useState(false); const [editColumnName, setEditColumnName] = useState(columnName); const [editColumnNameMissing, setEditColumnNameMissing] = useState(false); const [deleteContent, setDeleteContent] = useState(false); const onChangeEditColumnName = (event) => { setEditColumnName(event.target.value) } const toggle = <EditColumnIcon> <i class="bi bi-pen-fill"></i> </EditColumnIcon> const editColumnContent = <Overlay> <ModalContent> <PopupContainer> <Header> <ActionsContainer> <DeleteButton onClick={() => setDeleteContent(true)}> <i class="bi bi-trash"></i> <P>Delete</P> </DeleteButton> </ActionsContainer> <CloseButton onClick={() => setColumnDetailsOpen(false)}> <i class="bi bi-x-lg"></i> </CloseButton> </Header> <Divider /> <FieldContainer> <Label>Name</Label> <Input onChange={onChangeEditColumnName} value={editColumnName} placeholder="Add Name"/> {nameStatus && nameStatus.id === columnIndex && <StatusIcon> {nameStatus.status === "Saving..." && ( <Widget src={`${componentOwnerId}/widget/Calimero.TaskChain.Loader.Loader`} props={{ size: 16 }} /> )} {nameStatus.status === "Saved" && ( <SuccessIcon> <i class="bi bi-check"></i> </SuccessIcon> )} {nameStatus.status === "Error" && ( <ErrorIcon> <i class="bi bi-x-circle"></i> </ErrorIcon> )} </StatusIcon> } {editColumnNameMissing && <MissingName> Missing name </MissingName> } </FieldContainer> </PopupContainer> </ModalContent> </Overlay> const deleteColumnContent = <Overlay> <ModalContent> <DeleteColumnContainer> <TextContainer> <Text>Are you sure you want to delete this column?</Text> <Subtitle>Doing so will also delete all tasks within it.</Subtitle> </TextContainer> <FunctionButton onClick={onClick}> Delete </FunctionButton> <CloseDeleteColumnButton onClick={() => setDeleteContent(false)}> Close </CloseDeleteColumnButton> </DeleteColumnContainer> </ModalContent> </Overlay> return ( <Widget src={`${componentOwnerId}/widget/Calimero.TaskChain.Popups.BaseModal`} props={{ toggle, content: deleteContent ? deleteColumnContent : editColumnContent, open: columnDetailsOpen, onOpenChange: (open) => setColumnDetailsOpen(open) }} /> );