diff --git a/app/(gcforms)/[locale]/(form administration)/form-builder/[id]/edit/components/Edit.tsx b/app/(gcforms)/[locale]/(form administration)/form-builder/[id]/edit/components/Edit.tsx deleted file mode 100644 index e0eea0d8e3..0000000000 --- a/app/(gcforms)/[locale]/(form administration)/form-builder/[id]/edit/components/Edit.tsx +++ /dev/null @@ -1,189 +0,0 @@ -"use client"; -import React, { useState, useCallback, useEffect, useRef } from "react"; -import debounce from "lodash.debounce"; -import { useTranslation } from "@i18n/client"; -import { useRouter, useSearchParams } from "next/navigation"; -import { Language, LocalizedFormProperties } from "@lib/types/form-builder-types"; -import { ElementPanel, ConfirmationDescription, PrivacyDescription } from "."; -import { RichTextLocked } from "./elements"; -import { ExpandingInput } from "@formBuilder/components/shared"; -import { useRehydrate, useTemplateStore } from "@lib/store/useTemplateStore"; -import { getQuestionNumber, sortByLayout } from "@lib/utils/form-builder"; -import { SettingsPanel } from "./settings/SettingsPanel"; -import { cleanInput } from "@lib/utils/form-builder"; -import { SaveButton } from "@formBuilder/components/shared/SaveButton"; -import { ConfirmationTitle } from "./ConfirmationTitle"; - -export const Edit = ({ formId }: { formId: string }) => { - const router = useRouter(); - const { t, i18n } = useTranslation("form-builder"); - const { - title, - layout, - elements, - localizeField, - updateField, - translationLanguagePriority, - getLocalizationAttribute, - } = useTemplateStore((s) => ({ - title: - s.form[s.localizeField(LocalizedFormProperties.TITLE, s.translationLanguagePriority)] ?? "", - layout: s.form.layout, - elements: s.form.elements, - localizeField: s.localizeField, - updateField: s.updateField, - translationLanguagePriority: s.translationLanguagePriority, - getLocalizationAttribute: s.getLocalizationAttribute, - })); - - const [value, setValue] = useState(title); - const searchParams = useSearchParams(); - const focusTitle = searchParams?.get("focusTitle") ? true : false; - const titleInput = useRef(null); - - useEffect(() => { - setValue(title); - }, [title]); - - const { isPublished } = useTemplateStore((s) => ({ - isPublished: s.isPublished, - })); - - useEffect(() => { - if (isPublished) { - router.replace(`/${i18n.language}/form-builder/${formId}/settings/`); - return; - } - }, [router, isPublished, formId, i18n.language]); - - const _debounced = debounce( - useCallback( - (val: string, lang: Language) => { - updateField(`form.${localizeField(LocalizedFormProperties.TITLE, lang)}`, val); - }, - [updateField, localizeField] - ), - 100 - ); - - const sortedElements = sortByLayout({ layout, elements: [...elements] }); - - // grab only the data we need to render the question number - const elementTypes = sortedElements.map((element) => ({ - id: element.id, - type: element.type, - })); - - const updateValue = useCallback( - (e: React.ChangeEvent) => { - setValue(e.target.value); - // update the data-value attribute on the title input - // so that the question number can be updated - if (titleInput?.current) { - titleInput.current.dataset.value = value; - } - _debounced(e.target.value, translationLanguagePriority); - }, - // exclude _debounced from the dependency array - // eslint-disable-next-line react-hooks/exhaustive-deps - [setValue, translationLanguagePriority] - ); - - useEffect(() => { - if (focusTitle) { - titleInput && titleInput.current && titleInput.current?.focus(); - } - }, [focusTitle]); - - const hasHydrated = useRehydrate(); - - if (isPublished) { - return
; - } - - return ( - <> -

{t("edit")}

-
- -
- - - - -
- { - setValue(cleanInput(value)); - }} - onChange={updateValue} - {...getLocalizationAttribute()} - /> -
-

{t("startFormIntro")}

- - } - addElement={true} - schemaProperty="introduction" - ariaLabel={t("richTextIntroTitle")} - /> -
- {layout.length >= 1 && - layout.map((id, index) => { - const element = sortedElements.find((element) => element.id === id); - - if (element) { - const questionNumber = getQuestionNumber(element, elementTypes); - const item = { ...element, index, questionNumber }; - return ( - - ); - } - })} -
- <> -
- -
-

{t("richTextPrivacyTitle")}

- -
-
-
- -
- -
-

{t("richTextConfirmationTitle")}

- - -
-
-
- - - ); -}; diff --git a/app/(gcforms)/[locale]/(form administration)/form-builder/[id]/edit/components/elements/index.ts b/app/(gcforms)/[locale]/(form administration)/form-builder/[id]/edit/components/elements/index.ts index e02f8aab76..cbcbc22671 100644 --- a/app/(gcforms)/[locale]/(form administration)/form-builder/[id]/edit/components/elements/index.ts +++ b/app/(gcforms)/[locale]/(form administration)/form-builder/[id]/edit/components/elements/index.ts @@ -8,5 +8,4 @@ export { RichText } from "./RichText"; export { RichTextLocked } from "./RichTextLocked"; export { Question } from "./question/Question"; export { QuestionInput } from "./question/QuestionInput"; -export { QuestionNumber } from "./question/QuestionNumber"; export { AddElementButton } from "./element-dialog/AddElementButton"; diff --git a/app/(gcforms)/[locale]/(form administration)/form-builder/[id]/edit/components/elements/question/Question.tsx b/app/(gcforms)/[locale]/(form administration)/form-builder/[id]/edit/components/elements/question/Question.tsx index 091d04cbbd..7b39472787 100644 --- a/app/(gcforms)/[locale]/(form administration)/form-builder/[id]/edit/components/elements/question/Question.tsx +++ b/app/(gcforms)/[locale]/(form administration)/form-builder/[id]/edit/components/elements/question/Question.tsx @@ -6,7 +6,7 @@ import { Language, } from "@lib/types/form-builder-types"; import { useTemplateStore } from "@lib/store/useTemplateStore"; -import { QuestionInput, QuestionNumber } from ".."; +import { QuestionInput } from ".."; export const Question = ({ item, @@ -17,15 +17,10 @@ export const Question = ({ onQuestionChange: (itemId: number, val: string, lang: Language) => void; describedById?: string; }) => { - const { localizeField, translationLanguagePriority, getGroupsEnabled } = useTemplateStore( - (s) => ({ - localizeField: s.localizeField, - translationLanguagePriority: s.translationLanguagePriority, - getGroupsEnabled: s.getGroupsEnabled, - }) - ); - - const groupsEnabled = getGroupsEnabled(); + const { localizeField, translationLanguagePriority } = useTemplateStore((s) => ({ + localizeField: s.localizeField, + translationLanguagePriority: s.translationLanguagePriority, + })); const itemIndex = item.index; const isRichText = item.type === "richText"; @@ -35,9 +30,6 @@ export const Question = ({ return isRichText ? null : ( <> - {!groupsEnabled && ( - - )} { - const { t } = useTranslation("form-builder"); - - return ( - <> - - {questionNumber} - - - - ); -}; diff --git a/app/(gcforms)/[locale]/(form administration)/form-builder/[id]/edit/logic/page.tsx b/app/(gcforms)/[locale]/(form administration)/form-builder/[id]/edit/logic/page.tsx index 1acb3fb7ab..474100ccd6 100644 --- a/app/(gcforms)/[locale]/(form administration)/form-builder/[id]/edit/logic/page.tsx +++ b/app/(gcforms)/[locale]/(form administration)/form-builder/[id]/edit/logic/page.tsx @@ -1,6 +1,5 @@ import { serverTranslation } from "@i18n"; import { Metadata } from "next"; -import { allowGrouping } from "@formBuilder/components/shared/right-panel/treeview/util/allowGrouping"; import { FlowWithProvider } from "./components/flow/FlowWithProvider"; import { Suspense } from "react"; import { Loader } from "@clientComponents/globals/Loader"; @@ -26,12 +25,6 @@ export default async function Page({ }: { params: { id: string; locale: string }; }) { - const allowGroups = allowGrouping(); - - if (!allowGroups) { - return null; - } - const { t } = await serverTranslation("form-builder", { lang: locale }); const Loading = () => (
diff --git a/app/(gcforms)/[locale]/(form administration)/form-builder/[id]/edit/page.tsx b/app/(gcforms)/[locale]/(form administration)/form-builder/[id]/edit/page.tsx index d9b0c92a06..c2265ce14e 100644 --- a/app/(gcforms)/[locale]/(form administration)/form-builder/[id]/edit/page.tsx +++ b/app/(gcforms)/[locale]/(form administration)/form-builder/[id]/edit/page.tsx @@ -1,9 +1,6 @@ import { serverTranslation } from "@i18n"; import { Metadata } from "next"; -import { Edit } from "./components/Edit"; -import { EditNavigation } from "./components/EditNavigation"; import { EditWithGroups } from "./components/EditWithGroups"; -import { allowGrouping } from "@formBuilder/components/shared/right-panel/treeview/util/allowGrouping"; export async function generateMetadata({ params: { locale }, @@ -21,18 +18,5 @@ export default async function Page({ }: { params: { id: string; locale: string }; }) { - const conditionalLogic = allowGrouping(); - - return ( - <> - {conditionalLogic ? ( - - ) : ( - <> - - - - )} - - ); + return ; } diff --git a/app/(gcforms)/[locale]/(form administration)/form-builder/components/shared/conditionals/AddOther.tsx b/app/(gcforms)/[locale]/(form administration)/form-builder/components/shared/conditionals/AddOther.tsx index ee6219188a..19725a0387 100644 --- a/app/(gcforms)/[locale]/(form administration)/form-builder/components/shared/conditionals/AddOther.tsx +++ b/app/(gcforms)/[locale]/(form administration)/form-builder/components/shared/conditionals/AddOther.tsx @@ -8,7 +8,6 @@ import { useTemplateStore } from "@lib/store/useTemplateStore"; import { FormElementTypes } from "@lib/types"; import { getTranslatedProperties } from "../../../actions"; import { useGroupStore } from "@formBuilder/components/shared/right-panel/treeview/store/useGroupStore"; -import { allowGrouping } from "@formBuilder/components/shared/right-panel/treeview/util/allowGrouping"; import { BoltIcon } from "@serverComponents/icons"; import { ChoiceRule } from "@lib/formContext"; @@ -53,13 +52,8 @@ export const AddOther = ({ }, }; - const allowGroups = allowGrouping(); let itemId = 0; - if (allowGroups) { - itemId = await add(item.index, FormElementTypes.textField, data, groupId); - } else { - itemId = await add(item.index, FormElementTypes.textField, data); - } + itemId = await add(item.index, FormElementTypes.textField, data, groupId); const newRule = { elementId: `${itemId}`, choiceId: `${item.id}.${lastChoice}` }; onComplete(newRule); diff --git a/components/clientComponents/globals/Header/Header.tsx b/components/clientComponents/globals/Header/Header.tsx index 185a08dbb0..0a3b15bba1 100644 --- a/components/clientComponents/globals/Header/Header.tsx +++ b/components/clientComponents/globals/Header/Header.tsx @@ -13,8 +13,6 @@ import { YourAccountDropdown } from "./YourAccountDropdown"; import { LiveMessage } from "@lib/hooks/useLiveMessage"; import Markdown from "markdown-to-jsx"; -import { allowGrouping } from "@formBuilder/components/shared/right-panel/treeview/util/allowGrouping"; - type HeaderParams = { context?: "admin" | "formBuilder" | "default"; className?: string; @@ -36,15 +34,8 @@ export const Header = ({ context = "default", className }: HeaderParams) => { async function fetchBannerData() { const isEnabled = t("campaignBanner.enabled") === "true"; setBannerData(isEnabled); - - const isLogicEnabled = allowGrouping(); - if (isLogicEnabled) { - setBannerMessage(t("campaignBanner.message2")); - setBannerType(t("campaignBanner.type2")); - } else { - setBannerMessage(t("campaignBanner.message")); - setBannerType(t("campaignBanner.type")); - } + setBannerMessage(t("campaignBanner.message2")); + setBannerType(t("campaignBanner.type2")); } fetchBannerData(); }, [t]);