c596a5e342
## 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`.
115 lines
3.8 KiB
TypeScript
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 === '')
|
|
}
|
|
/>
|
|
);
|
|
}
|
|
};
|