plane/apps/web/core/components/modules/module-status-dropdown.tsx
Anmol Singh Bhatia 7d7e37439d
[WEB-4840] chore: icon migration from @plane/ui to @plane/propel/icons (#7721)
* chore: move icons from ui package to propel package

* chore: package and tsdown config updated

* chore: migrate all icon imports from @plane/ui to @plane/propel/icons

* chore: remove icon components from @plane/ui package (migrated to
  @plane/propel/icons)

* chore: code refactoring

* chore: migrate remaining icon components from @Plane/ui to @Plane/propel/icons

* fix: lint error

* chore: code refactor
2025-09-04 14:44:53 +05:30

54 lines
1.8 KiB
TypeScript

import React, { FC } from "react";
import { observer } from "mobx-react";
import { MODULE_STATUS } from "@plane/constants";
import { useTranslation } from "@plane/i18n";
import { ModuleStatusIcon, TModuleStatus } from "@plane/propel/icons";
import { IModule } from "@plane/types";
import { CustomSelect } from "@plane/ui";
type Props = {
isDisabled: boolean;
moduleDetails: IModule;
handleModuleDetailsChange: (payload: Partial<IModule>) => Promise<void>;
};
export const ModuleStatusDropdown: FC<Props> = observer((props: Props) => {
const { isDisabled, moduleDetails, handleModuleDetailsChange } = props;
const { t } = useTranslation();
const moduleStatus = MODULE_STATUS.find((status) => status.value === moduleDetails.status);
if (!moduleStatus) return <></>;
return (
<CustomSelect
customButton={
<span
className={`flex h-6 w-20 items-center justify-center rounded-sm text-center text-xs ${
isDisabled ? "cursor-not-allowed" : "cursor-pointer"
}`}
style={{
color: moduleStatus ? moduleStatus.color : "#a3a3a2",
backgroundColor: moduleStatus ? `${moduleStatus.color}20` : "#a3a3a220",
}}
>
{(moduleStatus && t(moduleStatus?.i18n_label)) ?? t("project_modules.status.backlog")}
</span>
}
value={moduleStatus?.value}
onChange={(val: TModuleStatus) => {
handleModuleDetailsChange({ status: val });
}}
disabled={isDisabled}
>
{MODULE_STATUS.map((status) => (
<CustomSelect.Option key={status.value} value={status.value}>
<div className="flex items-center gap-2">
<ModuleStatusIcon status={status.value} />
{t(status.i18n_label)}
</div>
</CustomSelect.Option>
))}
</CustomSelect>
);
});