plane/web/components/custom-attributes/attribute-forms/select-attribute/select-attribute-form.tsx
2023-09-14 13:09:21 +05:30

42 lines
1.4 KiB
TypeScript

import React from "react";
// mobx
import { observer } from "mobx-react-lite";
import { useMobxStore } from "lib/mobx/store-provider";
// react-hook-form
import { Controller } from "react-hook-form";
// components
import { FormComponentProps, Input, OptionForm, SelectOption } from "components/custom-attributes";
export const SelectAttributeForm: React.FC<FormComponentProps & { multiple?: boolean }> = observer(
({ control, multiple = false, objectId = "", watch }) => {
const { customAttributes: customAttributesStore } = useMobxStore();
const { entityAttributes } = customAttributesStore;
const options = entityAttributes?.[objectId]?.[watch("id") ?? ""]?.children;
return (
<div className="space-y-3">
<Controller
control={control}
name="display_name"
render={({ field: { onChange, value } }) => (
<Input placeholder="Enter field title" value={value} onChange={onChange} />
)}
/>
<div>
<p className="text-xs">Options</p>
<div className="mt-3 space-y-2 w-3/5">
{options?.map((option) => (
<SelectOption key={option.id} objectId={objectId} option={option} />
))}
</div>
<div className="mt-2 w-3/5">
<OptionForm objectId={objectId} parentId={watch("id") ?? ""} />
</div>
</div>
</div>
);
}
);