Files
twenty/packages/twenty-front/src/modules/views/view-picker/components/ViewPickerCreateButton.tsx
T
Raphaël Bosi c596a5e342 Rename twenty-ui to twenty-ui-deprecated and twenty-new-ui to twenty-ui to prepare package release (#21315)
## Description

Promotes the next-gen UI library (formerly `twenty-new-ui`) to the name
**`twenty-ui`** (v0.1.0, publishable) and renames the old package to
**`twenty-ui-deprecated`**. Rewrites ~1,730 `twenty-ui` imports →
`twenty-ui-deprecated`, updates all configs/CI/Docker/deps, and migrates
twenty-front's `Toggle` to the new package (first consumer) as a
drop-in.

## Next steps
- Wire the `ui/v*` publish dispatch (`cd-deploy-tag.yaml` +
`.yarnrc.yml`), then tag `ui/v0.1.0` to publish.
- Continue migrating components from `twenty-ui-deprecated` →
`twenty-ui`.
2026-06-08 18:12:28 +02:00

115 lines
3.8 KiB
TypeScript

import { useAtomComponentStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentStateValue';
import { ViewType } from '@/views/types/ViewType';
import { useCreateViewFromCurrentState } from '@/views/view-picker/hooks/useCreateViewFromCurrentState';
import { useDestroyViewFromCurrentState } from '@/views/view-picker/hooks/useDestroyViewFromCurrentState';
import { useGetAvailableFieldsForCalendar } from '@/views/view-picker/hooks/useGetAvailableFieldsForCalendar';
import { useGetAvailableFieldsToGroupRecordsBy } from '@/views/view-picker/hooks/useGetAvailableFieldsToGroupRecordsBy';
import { useViewPickerMode } from '@/views/view-picker/hooks/useViewPickerMode';
import { viewPickerCalendarFieldMetadataIdComponentState } from '@/views/view-picker/states/viewPickerCalendarFieldMetadataIdComponentState';
import { viewPickerIsPersistingComponentState } from '@/views/view-picker/states/viewPickerIsPersistingComponentState';
import { viewPickerMainGroupByFieldMetadataIdComponentState } from '@/views/view-picker/states/viewPickerMainGroupByFieldMetadataIdComponentState';
import { viewPickerTypeComponentState } from '@/views/view-picker/states/viewPickerTypeComponentState';
import { useLingui } from '@lingui/react/macro';
import { Button } from 'twenty-ui-deprecated/input';
export const ViewPickerCreateButton = () => {
const { t } = useLingui();
const { availableFieldsForGrouping, navigateToSelectSettings } =
useGetAvailableFieldsToGroupRecordsBy();
const { availableFieldsForCalendar, navigateToDateFieldSettings } =
useGetAvailableFieldsForCalendar();
const { viewPickerMode } = useViewPickerMode();
const viewPickerType = useAtomComponentStateValue(
viewPickerTypeComponentState,
);
const viewPickerIsPersisting = useAtomComponentStateValue(
viewPickerIsPersistingComponentState,
);
const viewPickerMainGroupByFieldMetadataId = useAtomComponentStateValue(
viewPickerMainGroupByFieldMetadataIdComponentState,
);
const viewPickerCalendarFieldMetadataId = useAtomComponentStateValue(
viewPickerCalendarFieldMetadataIdComponentState,
);
const { createViewFromCurrentState } = useCreateViewFromCurrentState();
const { destroyViewFromCurrentState } = useDestroyViewFromCurrentState();
const handleCreateButtonClick = () => {
createViewFromCurrentState();
};
if (viewPickerMode === 'edit') {
return (
<Button
title={t`Delete`}
onClick={destroyViewFromCurrentState}
accent="danger"
fullWidth
size="small"
justify="center"
focus={false}
variant="secondary"
disabled={viewPickerIsPersisting}
/>
);
}
if (
viewPickerType === ViewType.KANBAN &&
availableFieldsForGrouping.length === 0
) {
return (
<Button
title={t`Go to Settings`}
onClick={navigateToSelectSettings}
size="small"
accent="blue"
fullWidth
justify="center"
/>
);
}
if (
viewPickerType === ViewType.CALENDAR &&
availableFieldsForCalendar.length === 0
) {
return (
<Button
title={t`Go to Settings`}
onClick={navigateToDateFieldSettings}
size="small"
accent="blue"
fullWidth
justify="center"
/>
);
}
if (
viewPickerType !== ViewType.KANBAN ||
viewPickerMainGroupByFieldMetadataId !== ''
) {
return (
<Button
title={t`Create`}
onClick={handleCreateButtonClick}
ariaLabel={t`Create new view`}
accent="blue"
fullWidth
size="small"
justify="center"
disabled={
viewPickerIsPersisting ||
(viewPickerType === ViewType.KANBAN &&
viewPickerMainGroupByFieldMetadataId === '') ||
(viewPickerType === ViewType.CALENDAR &&
viewPickerCalendarFieldMetadataId === '')
}
/>
);
}
};