Upgraded domain picker to make the blank first entry optional

This commit is contained in:
Colin Dawson 2026-02-10 23:22:58 +00:00
parent eec4b334d8
commit 854ba4bf1a
4 changed files with 31 additions and 2 deletions

View File

@ -531,6 +531,7 @@ export const renderDomainPicker = (
errors: FormError,
minEntries: number,
maxEntries?: number,
includeBlankFirstEntry?: boolean,
onChange?: (name: string, values: CustomFieldValue[]) => void,
) => {
const domainValues: CustomFieldValue[] | undefined = data[
@ -545,6 +546,7 @@ export const renderDomainPicker = (
minEntries={minEntries}
maxEntries={maxEntries}
values={domainValues}
includeBlankFirstEntry={includeBlankFirstEntry}
error={errors[name]}
onChange={onChange}
/>

View File

@ -14,6 +14,7 @@ interface DomainPickerProps {
values: CustomFieldValue[];
minEntries?: number;
maxEntries?: number;
includeBlankFirstEntry?: boolean;
onChange?: (name: string, value: CustomFieldValue[]) => void;
}
@ -25,6 +26,7 @@ export default function DomainPicker({
values,
minEntries,
maxEntries,
includeBlankFirstEntry,
onChange,
}: DomainPickerProps) {
const [options, setOptions] = useState<Option[]>([]);
@ -114,7 +116,7 @@ export default function DomainPicker({
error={error}
value={value}
options={options}
includeBlankFirstEntry={true}
includeBlankFirstEntry={includeBlankFirstEntry ?? true}
onChange={handleChange}
/>
);

View File

@ -17,6 +17,8 @@ import {
} from "../../../components/common/formHelpers";
import { useForm } from "../../../components/common/useForm";
import ErrorBlock from "../../../components/common/ErrorBlock";
import authentication from "../../frame/services/authenticationService";
import { MakeGeneralIdRef } from "../../../utils/GeneralIdRef";
const WorkflowTemplateDetails: React.FC<{ editMode: boolean }> = ({
editMode,
@ -29,7 +31,7 @@ const WorkflowTemplateDetails: React.FC<{ editMode: boolean }> = ({
loaded: false,
data: {
name: "",
domainId: {},
domainId: [] as CustomFieldValue[],
activityNameTemplate: "",
description: "",
} as CreateWorkflowTemplateVersion,
@ -51,6 +53,7 @@ const WorkflowTemplateDetails: React.FC<{ editMode: boolean }> = ({
.max(450)
.label(t("ActivityNameTemplate")),
description: Joi.string().required().label(t("Description")),
domainId: Joi.required(),
};
// -----------------------------
@ -72,6 +75,11 @@ const WorkflowTemplateDetails: React.FC<{ editMode: boolean }> = ({
} catch (ex: any) {
form.handleGeneralError(ex);
}
} else {
const user = authentication.getCurrentUser();
newData.domainId = [
{ value: MakeGeneralIdRef(user?.domainid) } as CustomFieldValue,
];
}
form.setState({ ...form.state, loaded: true, data: newData });
@ -121,6 +129,7 @@ const WorkflowTemplateDetails: React.FC<{ editMode: boolean }> = ({
errors={errors}
isEditMode={editMode}
onFieldChange={form.handleChange}
handleDomainPickerChange={form.handleDomainPickerChange}
/>
</Tab>,

View File

@ -5,20 +5,24 @@ import { InputType } from "../../../../components/common/Input";
import {
renderInput,
renderError,
renderDomainPicker,
} from "../../../../components/common/formHelpers";
import { CreateWorkflowTemplateVersion } from "../services/WorkflowTemplateService";
import { CustomFieldValue } from "../../glossary/services/glossaryService";
interface GeneralTabProps {
data: CreateWorkflowTemplateVersion;
errors: Record<string, string>;
isEditMode: boolean;
onFieldChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
handleDomainPickerChange: (name: string, values: CustomFieldValue[]) => void;
}
const GeneralTab: React.FC<GeneralTabProps> = ({
data,
errors,
onFieldChange,
handleDomainPickerChange,
}) => {
const { t } = useTranslation<typeof Namespaces.Common>();
@ -26,6 +30,18 @@ const GeneralTab: React.FC<GeneralTabProps> = ({
<div>
{renderError("_general", errors)}
{renderDomainPicker(
true,
"domainId",
t("Domain"),
data,
errors,
1,
1,
false,
handleDomainPickerChange,
)}
{renderInput(
"name",
t("WorkflowTemplateName"),