Change to using arrow functions (#1603)
* Change to using arrow functions Co-authored-by: v1b3m <vibenjamin6@gmail.com> Co-authored-by: Matheus <matheus_benini@hotmail.com> * Add lint rule --------- Co-authored-by: v1b3m <vibenjamin6@gmail.com> Co-authored-by: Matheus <matheus_benini@hotmail.com> Co-authored-by: Charles Bochet <charles@twenty.com>
This commit is contained in:
@ -85,7 +85,7 @@ type OwnProps = {
|
||||
disableHoverEffect?: boolean;
|
||||
};
|
||||
|
||||
export function EditableField({
|
||||
export const EditableField = ({
|
||||
IconLabel,
|
||||
label,
|
||||
labelFixedWidth,
|
||||
@ -97,24 +97,24 @@ export function EditableField({
|
||||
displayModeContentOnly,
|
||||
isDisplayModeFixHeight,
|
||||
disableHoverEffect,
|
||||
}: OwnProps) {
|
||||
}: OwnProps) => {
|
||||
const [isHovered, setIsHovered] = useState(false);
|
||||
|
||||
function handleContainerMouseEnter() {
|
||||
const handleContainerMouseEnter = () => {
|
||||
setIsHovered(true);
|
||||
}
|
||||
};
|
||||
|
||||
function handleContainerMouseLeave() {
|
||||
const handleContainerMouseLeave = () => {
|
||||
setIsHovered(false);
|
||||
}
|
||||
};
|
||||
|
||||
const { isFieldInEditMode, openEditableField } = useEditableField();
|
||||
|
||||
function handleDisplayModeClick() {
|
||||
const handleDisplayModeClick = () => {
|
||||
if (!displayModeContentOnly) {
|
||||
openEditableField(customEditHotkeyScope);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const showEditButton =
|
||||
!isFieldInEditMode && isHovered && useEditButton && !displayModeContentOnly;
|
||||
@ -163,4 +163,4 @@ export function EditableField({
|
||||
</StyledValueContainer>
|
||||
</StyledEditableFieldBaseContainer>
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
@ -57,27 +57,25 @@ type OwnProps = {
|
||||
isHovered?: boolean;
|
||||
};
|
||||
|
||||
export function EditableFieldDisplayMode({
|
||||
export const EditableFieldDisplayMode = ({
|
||||
children,
|
||||
isDisplayModeContentEmpty,
|
||||
disableHoverEffect,
|
||||
isDisplayModeFixHeight,
|
||||
isHovered,
|
||||
}: React.PropsWithChildren<OwnProps>) {
|
||||
return (
|
||||
<StyledEditableFieldNormalModeOuterContainer
|
||||
isDisplayModeContentEmpty={isDisplayModeContentEmpty}
|
||||
disableHoverEffect={disableHoverEffect}
|
||||
isDisplayModeFixHeight={isDisplayModeFixHeight}
|
||||
isHovered={isHovered}
|
||||
>
|
||||
<StyledEditableFieldNormalModeInnerContainer>
|
||||
{isDisplayModeContentEmpty || !children ? (
|
||||
<StyledEmptyField>{'Empty'}</StyledEmptyField>
|
||||
) : (
|
||||
children
|
||||
)}
|
||||
</StyledEditableFieldNormalModeInnerContainer>
|
||||
</StyledEditableFieldNormalModeOuterContainer>
|
||||
);
|
||||
}
|
||||
}: React.PropsWithChildren<OwnProps>) => (
|
||||
<StyledEditableFieldNormalModeOuterContainer
|
||||
isDisplayModeContentEmpty={isDisplayModeContentEmpty}
|
||||
disableHoverEffect={disableHoverEffect}
|
||||
isDisplayModeFixHeight={isDisplayModeFixHeight}
|
||||
isHovered={isHovered}
|
||||
>
|
||||
<StyledEditableFieldNormalModeInnerContainer>
|
||||
{isDisplayModeContentEmpty || !children ? (
|
||||
<StyledEmptyField>{'Empty'}</StyledEmptyField>
|
||||
) : (
|
||||
children
|
||||
)}
|
||||
</StyledEditableFieldNormalModeInnerContainer>
|
||||
</StyledEditableFieldNormalModeOuterContainer>
|
||||
);
|
||||
|
||||
@ -3,12 +3,12 @@ import { IconPencil } from '@/ui/icon';
|
||||
|
||||
import { useEditableField } from '../hooks/useEditableField';
|
||||
|
||||
export function EditableFieldEditButton() {
|
||||
export const EditableFieldEditButton = () => {
|
||||
const { openEditableField } = useEditableField();
|
||||
|
||||
function handleClick() {
|
||||
const handleClick = () => {
|
||||
openEditableField();
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<FloatingIconButton
|
||||
@ -18,4 +18,4 @@ export function EditableFieldEditButton() {
|
||||
data-testid="editable-field-edit-mode-container"
|
||||
/>
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
@ -30,10 +30,8 @@ type OwnProps = {
|
||||
children: React.ReactNode;
|
||||
};
|
||||
|
||||
export function EditableFieldEditMode({ children }: OwnProps) {
|
||||
return (
|
||||
<StyledEditableFieldEditModeContainer data-testid="editable-field-edit-mode-container">
|
||||
<StyledEditableFieldInput>{children}</StyledEditableFieldInput>
|
||||
</StyledEditableFieldEditModeContainer>
|
||||
);
|
||||
}
|
||||
export const EditableFieldEditMode = ({ children }: OwnProps) => (
|
||||
<StyledEditableFieldEditModeContainer data-testid="editable-field-edit-mode-container">
|
||||
<StyledEditableFieldInput>{children}</StyledEditableFieldInput>
|
||||
</StyledEditableFieldEditModeContainer>
|
||||
);
|
||||
|
||||
@ -10,7 +10,7 @@ import { FieldBooleanMetadata } from '../types/FieldMetadata';
|
||||
import { EditableField } from './EditableField';
|
||||
import { GenericEditableBooleanFieldDisplayMode } from './GenericEditableBooleanFieldDisplayMode';
|
||||
|
||||
export function GenericEditableBooleanField() {
|
||||
export const GenericEditableBooleanField = () => {
|
||||
const currentEditableFieldDefinition = useContext(
|
||||
EditableFieldDefinitionContext,
|
||||
) as FieldDefinition<FieldBooleanMetadata>;
|
||||
@ -24,4 +24,4 @@ export function GenericEditableBooleanField() {
|
||||
/>
|
||||
</RecoilScope>
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
@ -10,7 +10,7 @@ import { genericEntityFieldFamilySelector } from '../states/selectors/genericEnt
|
||||
import { FieldDefinition } from '../types/FieldDefinition';
|
||||
import { FieldBooleanMetadata } from '../types/FieldMetadata';
|
||||
|
||||
export function GenericEditableBooleanFieldDisplayMode() {
|
||||
export const GenericEditableBooleanFieldDisplayMode = () => {
|
||||
const currentEditableFieldEntityId = useContext(EditableFieldEntityIdContext);
|
||||
const currentEditableFieldDefinition = useContext(
|
||||
EditableFieldDefinitionContext,
|
||||
@ -27,7 +27,7 @@ export function GenericEditableBooleanFieldDisplayMode() {
|
||||
|
||||
const updateField = useUpdateGenericEntityField();
|
||||
|
||||
function handleSubmit(newValue: boolean) {
|
||||
const handleSubmit = (newValue: boolean) => {
|
||||
if (currentEditableFieldEntityId && updateField) {
|
||||
updateField(
|
||||
currentEditableFieldEntityId,
|
||||
@ -38,7 +38,7 @@ export function GenericEditableBooleanFieldDisplayMode() {
|
||||
// TODO: use optimistic effect instead, but needs generic refactor
|
||||
setFieldValue(newValue);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
return <BooleanInput value={fieldValue} onToggle={handleSubmit} />;
|
||||
}
|
||||
};
|
||||
|
||||
@ -14,7 +14,7 @@ import { FieldDateMetadata } from '../types/FieldMetadata';
|
||||
import { EditableField } from './EditableField';
|
||||
import { GenericEditableDateFieldEditMode } from './GenericEditableDateFieldEditMode';
|
||||
|
||||
export function GenericEditableDateField() {
|
||||
export const GenericEditableDateField = () => {
|
||||
const currentEditableFieldEntityId = useContext(EditableFieldEntityIdContext);
|
||||
const currentEditableFieldDefinition = useContext(
|
||||
EditableFieldDefinitionContext,
|
||||
@ -39,4 +39,4 @@ export function GenericEditableDateField() {
|
||||
/>
|
||||
</RecoilScope>
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
@ -13,7 +13,7 @@ import { EditableFieldHotkeyScope } from '../types/EditableFieldHotkeyScope';
|
||||
import { FieldDefinition } from '../types/FieldDefinition';
|
||||
import { FieldDateMetadata } from '../types/FieldMetadata';
|
||||
|
||||
export function GenericEditableDateFieldEditMode() {
|
||||
export const GenericEditableDateFieldEditMode = () => {
|
||||
const currentEditableFieldEntityId = useContext(EditableFieldEntityIdContext);
|
||||
const currentEditableFieldDefinition = useContext(
|
||||
EditableFieldDefinitionContext,
|
||||
@ -31,7 +31,7 @@ export function GenericEditableDateFieldEditMode() {
|
||||
|
||||
const updateField = useUpdateGenericEntityField();
|
||||
|
||||
function handleSubmit(newDate: Nullable<Date>) {
|
||||
const handleSubmit = (newDate: Nullable<Date>) => {
|
||||
if (!newDate) {
|
||||
setFieldValue('');
|
||||
|
||||
@ -57,7 +57,7 @@ export function GenericEditableDateFieldEditMode() {
|
||||
newDateISO,
|
||||
);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const { handleEnter, handleEscape, handleClickOutside } =
|
||||
useFieldInputEventHandlers({
|
||||
@ -73,4 +73,4 @@ export function GenericEditableDateFieldEditMode() {
|
||||
value={fieldValue ? new Date(fieldValue) : null}
|
||||
/>
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
@ -19,7 +19,7 @@ import { GenericEditableTextField } from './GenericEditableTextField';
|
||||
import { GenericEditableURLField } from './GenericEditableURLField';
|
||||
import { ProbabilityEditableField } from './ProbabilityEditableField';
|
||||
|
||||
export function GenericEditableField() {
|
||||
export const GenericEditableField = () => {
|
||||
const fieldDefinition = useContext(EditableFieldDefinitionContext);
|
||||
|
||||
if (isFieldRelation(fieldDefinition)) {
|
||||
@ -44,4 +44,4 @@ export function GenericEditableField() {
|
||||
);
|
||||
return <></>;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@ -14,7 +14,7 @@ import { FieldNumberMetadata } from '../types/FieldMetadata';
|
||||
import { EditableField } from './EditableField';
|
||||
import { GenericEditableNumberFieldEditMode } from './GenericEditableNumberFieldEditMode';
|
||||
|
||||
export function GenericEditableNumberField() {
|
||||
export const GenericEditableNumberField = () => {
|
||||
const currentEditableFieldEntityId = useContext(EditableFieldEntityIdContext);
|
||||
const currentEditableFieldDefinition = useContext(
|
||||
EditableFieldDefinitionContext,
|
||||
@ -39,4 +39,4 @@ export function GenericEditableNumberField() {
|
||||
/>
|
||||
</RecoilScope>
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
@ -16,7 +16,7 @@ import { EditableFieldHotkeyScope } from '../types/EditableFieldHotkeyScope';
|
||||
import { FieldDefinition } from '../types/FieldDefinition';
|
||||
import { FieldNumberMetadata } from '../types/FieldMetadata';
|
||||
|
||||
export function GenericEditableNumberFieldEditMode() {
|
||||
export const GenericEditableNumberFieldEditMode = () => {
|
||||
const currentEditableFieldEntityId = useContext(EditableFieldEntityIdContext);
|
||||
const currentEditableFieldDefinition = useContext(
|
||||
EditableFieldDefinitionContext,
|
||||
@ -34,7 +34,7 @@ export function GenericEditableNumberFieldEditMode() {
|
||||
|
||||
const updateField = useUpdateGenericEntityField();
|
||||
|
||||
function handleSubmit(newValue: string) {
|
||||
const handleSubmit = (newValue: string) => {
|
||||
if (!canBeCastAsIntegerOrNull(newValue)) {
|
||||
return;
|
||||
}
|
||||
@ -52,7 +52,7 @@ export function GenericEditableNumberFieldEditMode() {
|
||||
castedValue,
|
||||
);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const { handleEnter, handleEscape, handleClickOutside } =
|
||||
useFieldInputEventHandlers({
|
||||
@ -70,4 +70,4 @@ export function GenericEditableNumberFieldEditMode() {
|
||||
onEscape={handleEscape}
|
||||
/>
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
@ -14,7 +14,7 @@ import { FieldPhoneMetadata } from '../types/FieldMetadata';
|
||||
import { EditableField } from './EditableField';
|
||||
import { GenericEditablePhoneFieldEditMode } from './GenericEditablePhoneFieldEditMode';
|
||||
|
||||
export function GenericEditablePhoneField() {
|
||||
export const GenericEditablePhoneField = () => {
|
||||
const currentEditableFieldEntityId = useContext(EditableFieldEntityIdContext);
|
||||
const currentEditableFieldDefinition = useContext(
|
||||
EditableFieldDefinitionContext,
|
||||
@ -40,4 +40,4 @@ export function GenericEditablePhoneField() {
|
||||
/>
|
||||
</RecoilScope>
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
@ -13,7 +13,7 @@ import { EditableFieldHotkeyScope } from '../types/EditableFieldHotkeyScope';
|
||||
import { FieldDefinition } from '../types/FieldDefinition';
|
||||
import { FieldPhoneMetadata } from '../types/FieldMetadata';
|
||||
|
||||
export function GenericEditablePhoneFieldEditMode() {
|
||||
export const GenericEditablePhoneFieldEditMode = () => {
|
||||
const currentEditableFieldEntityId = useContext(EditableFieldEntityIdContext);
|
||||
const currentEditableFieldDefinition = useContext(
|
||||
EditableFieldDefinitionContext,
|
||||
@ -31,7 +31,7 @@ export function GenericEditablePhoneFieldEditMode() {
|
||||
|
||||
const updateField = useUpdateGenericEntityField();
|
||||
|
||||
function handleSubmit(newValue: string) {
|
||||
const handleSubmit = (newValue: string) => {
|
||||
if (!isPossiblePhoneNumber(newValue)) return;
|
||||
|
||||
setFieldValue(newValue);
|
||||
@ -43,7 +43,7 @@ export function GenericEditablePhoneFieldEditMode() {
|
||||
newValue,
|
||||
);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const { handleEnter, handleEscape, handleClickOutside } =
|
||||
useFieldInputEventHandlers({
|
||||
@ -59,4 +59,4 @@ export function GenericEditablePhoneFieldEditMode() {
|
||||
hotkeyScope={EditableFieldHotkeyScope.EditableField}
|
||||
/>
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
@ -15,7 +15,7 @@ import { EditableField } from './EditableField';
|
||||
import { GenericEditableRelationFieldDisplayMode } from './GenericEditableRelationFieldDisplayMode';
|
||||
import { GenericEditableRelationFieldEditMode } from './GenericEditableRelationFieldEditMode';
|
||||
|
||||
export function GenericEditableRelationField() {
|
||||
export const GenericEditableRelationField = () => {
|
||||
const currentEditableFieldEntityId = useContext(EditableFieldEntityIdContext);
|
||||
const currentEditableFieldDefinition = useContext(
|
||||
EditableFieldDefinitionContext,
|
||||
@ -47,4 +47,4 @@ export function GenericEditableRelationField() {
|
||||
</RecoilScope>
|
||||
</RecoilScope>
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
@ -13,7 +13,7 @@ import { genericEntityFieldFamilySelector } from '../states/selectors/genericEnt
|
||||
import { FieldDefinition } from '../types/FieldDefinition';
|
||||
import { FieldRelationMetadata } from '../types/FieldMetadata';
|
||||
|
||||
export function GenericEditableRelationFieldDisplayMode() {
|
||||
export const GenericEditableRelationFieldDisplayMode = () => {
|
||||
const currentEditableFieldEntityId = useContext(EditableFieldEntityIdContext);
|
||||
const currentEditableFieldDefinition = useContext(
|
||||
EditableFieldDefinitionContext,
|
||||
@ -67,4 +67,4 @@ export function GenericEditableRelationFieldDisplayMode() {
|
||||
);
|
||||
return <> </>;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@ -26,7 +26,7 @@ const StyledRelationPickerContainer = styled.div`
|
||||
top: -8px;
|
||||
`;
|
||||
|
||||
function RelationPicker({
|
||||
const RelationPicker = ({
|
||||
fieldDefinition,
|
||||
fieldValue,
|
||||
handleEntitySubmit,
|
||||
@ -36,7 +36,7 @@ function RelationPicker({
|
||||
fieldValue: FieldRelationValue & { companyId?: string };
|
||||
handleEntitySubmit: (newRelationId: EntityForSelect | null) => void;
|
||||
handleCancel: () => void;
|
||||
}) {
|
||||
}) => {
|
||||
switch (fieldDefinition.metadata.relationType) {
|
||||
case Entity.Person: {
|
||||
return (
|
||||
@ -72,9 +72,9 @@ function RelationPicker({
|
||||
);
|
||||
return <></>;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
export function GenericEditableRelationFieldEditMode() {
|
||||
export const GenericEditableRelationFieldEditMode = () => {
|
||||
const currentEditableFieldEntityId = useContext(EditableFieldEntityIdContext);
|
||||
const currentEditableFieldDefinition = useContext(
|
||||
EditableFieldDefinitionContext,
|
||||
@ -98,7 +98,7 @@ export function GenericEditableRelationFieldEditMode() {
|
||||
const updateField = useUpdateGenericEntityField();
|
||||
const { closeEditableField } = useEditableField();
|
||||
|
||||
function handleSubmit(newRelation: EntityForSelect | null) {
|
||||
const handleSubmit = (newRelation: EntityForSelect | null) => {
|
||||
if (newRelation?.id === fieldValue?.id) return;
|
||||
|
||||
setFieldValue({
|
||||
@ -116,11 +116,11 @@ export function GenericEditableRelationFieldEditMode() {
|
||||
}
|
||||
|
||||
closeEditableField();
|
||||
}
|
||||
};
|
||||
|
||||
function handleCancel() {
|
||||
const handleCancel = () => {
|
||||
closeEditableField();
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<StyledRelationPickerContainer>
|
||||
@ -132,4 +132,4 @@ export function GenericEditableRelationFieldEditMode() {
|
||||
/>
|
||||
</StyledRelationPickerContainer>
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
@ -14,7 +14,7 @@ import { FieldNumberMetadata } from '../types/FieldMetadata';
|
||||
import { EditableField } from './EditableField';
|
||||
import { GenericEditableTextFieldEditMode } from './GenericEditableTextFieldEditMode';
|
||||
|
||||
export function GenericEditableTextField() {
|
||||
export const GenericEditableTextField = () => {
|
||||
const currentEditableFieldEntityId = useContext(EditableFieldEntityIdContext);
|
||||
const currentEditableFieldDefinition = useContext(
|
||||
EditableFieldDefinitionContext,
|
||||
@ -39,4 +39,4 @@ export function GenericEditableTextField() {
|
||||
/>
|
||||
</RecoilScope>
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
@ -12,7 +12,7 @@ import { EditableFieldHotkeyScope } from '../types/EditableFieldHotkeyScope';
|
||||
import { FieldDefinition } from '../types/FieldDefinition';
|
||||
import { FieldTextMetadata } from '../types/FieldMetadata';
|
||||
|
||||
export function GenericEditableTextFieldEditMode() {
|
||||
export const GenericEditableTextFieldEditMode = () => {
|
||||
const currentEditableFieldEntityId = useContext(EditableFieldEntityIdContext);
|
||||
const currentEditableFieldDefinition = useContext(
|
||||
EditableFieldDefinitionContext,
|
||||
@ -30,7 +30,7 @@ export function GenericEditableTextFieldEditMode() {
|
||||
|
||||
const updateField = useUpdateGenericEntityField();
|
||||
|
||||
function handleSubmit(newValue: string) {
|
||||
const handleSubmit = (newValue: string) => {
|
||||
if (currentEditableFieldEntityId && updateField) {
|
||||
updateField(
|
||||
currentEditableFieldEntityId,
|
||||
@ -41,7 +41,7 @@ export function GenericEditableTextFieldEditMode() {
|
||||
// TODO: use optimistic effect instead, but needs generic refactor
|
||||
setFieldValue(newValue);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const { handleEnter, handleEscape, handleClickOutside } =
|
||||
useFieldInputEventHandlers({
|
||||
@ -59,4 +59,4 @@ export function GenericEditableTextFieldEditMode() {
|
||||
hotkeyScope={EditableFieldHotkeyScope.EditableField}
|
||||
/>
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
@ -14,7 +14,7 @@ import { FieldNumberMetadata } from '../types/FieldMetadata';
|
||||
import { EditableField } from './EditableField';
|
||||
import { GenericEditableURLFieldEditMode } from './GenericEditableURLFieldEditMode';
|
||||
|
||||
export function GenericEditableURLField() {
|
||||
export const GenericEditableURLField = () => {
|
||||
const currentEditableFieldEntityId = useContext(EditableFieldEntityIdContext);
|
||||
const currentEditableFieldDefinition = useContext(
|
||||
EditableFieldDefinitionContext,
|
||||
@ -41,4 +41,4 @@ export function GenericEditableURLField() {
|
||||
/>
|
||||
</RecoilScope>
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
@ -14,7 +14,7 @@ import { FieldURLMetadata } from '../types/FieldMetadata';
|
||||
|
||||
// This one is very similar to GenericEditableTextFieldEditMode
|
||||
// We could probably merge them since FieldURLMetadata is basically a FieldTextMetadata
|
||||
export function GenericEditableURLFieldEditMode() {
|
||||
export const GenericEditableURLFieldEditMode = () => {
|
||||
const currentEditableFieldEntityId = useContext(EditableFieldEntityIdContext);
|
||||
const currentEditableFieldDefinition = useContext(
|
||||
EditableFieldDefinitionContext,
|
||||
@ -32,7 +32,7 @@ export function GenericEditableURLFieldEditMode() {
|
||||
|
||||
const updateField = useUpdateGenericEntityField();
|
||||
|
||||
function handleSubmit(newValue: string) {
|
||||
const handleSubmit = (newValue: string) => {
|
||||
setFieldValue(newValue);
|
||||
|
||||
if (currentEditableFieldEntityId && updateField) {
|
||||
@ -42,7 +42,7 @@ export function GenericEditableURLFieldEditMode() {
|
||||
newValue,
|
||||
);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const { handleEnter, handleEscape, handleClickOutside } =
|
||||
useFieldInputEventHandlers({
|
||||
@ -60,4 +60,4 @@ export function GenericEditableURLFieldEditMode() {
|
||||
hotkeyScope={EditableFieldHotkeyScope.EditableField}
|
||||
/>
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
@ -10,7 +10,7 @@ import { FieldProbabilityMetadata } from '../types/FieldMetadata';
|
||||
|
||||
import { ProbabilityEditableFieldEditMode } from './ProbabilityEditableFieldEditMode';
|
||||
|
||||
export function ProbabilityEditableField() {
|
||||
export const ProbabilityEditableField = () => {
|
||||
const currentEditableFieldDefinition = useContext(
|
||||
EditableFieldDefinitionContext,
|
||||
) as FieldDefinition<FieldProbabilityMetadata>;
|
||||
@ -25,4 +25,4 @@ export function ProbabilityEditableField() {
|
||||
/>
|
||||
</RecoilScope>
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
@ -67,7 +67,7 @@ const PROBABILITY_VALUES = [
|
||||
{ label: '100%', value: 100 },
|
||||
];
|
||||
|
||||
export function ProbabilityEditableFieldEditMode() {
|
||||
export const ProbabilityEditableFieldEditMode = () => {
|
||||
const [nextProbabilityIndex, setNextProbabilityIndex] = useState<
|
||||
number | null
|
||||
>(null);
|
||||
@ -91,7 +91,7 @@ export function ProbabilityEditableFieldEditMode() {
|
||||
|
||||
const probabilityIndex = Math.ceil(fieldValue / 25);
|
||||
|
||||
function handleChange(newValue: number) {
|
||||
const handleChange = (newValue: number) => {
|
||||
setFieldValue(newValue);
|
||||
if (currentEditableFieldEntityId && updateField) {
|
||||
updateField(
|
||||
@ -101,7 +101,7 @@ export function ProbabilityEditableFieldEditMode() {
|
||||
);
|
||||
}
|
||||
closeEditableField();
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<StyledContainer>
|
||||
@ -137,4 +137,4 @@ export function ProbabilityEditableFieldEditMode() {
|
||||
</StyledProgressBarContainer>
|
||||
</StyledContainer>
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
@ -6,7 +6,7 @@ import { isFieldInEditModeScopedState } from '../states/isFieldInEditModeScopedS
|
||||
import { FieldRecoilScopeContext } from '../states/recoil-scope-contexts/FieldRecoilScopeContext';
|
||||
import { EditableFieldHotkeyScope } from '../types/EditableFieldHotkeyScope';
|
||||
|
||||
export function useEditableField() {
|
||||
export const useEditableField = () => {
|
||||
const [isFieldInEditMode, setIsFieldInEditMode] = useRecoilScopedState(
|
||||
isFieldInEditModeScopedState,
|
||||
FieldRecoilScopeContext,
|
||||
@ -17,13 +17,13 @@ export function useEditableField() {
|
||||
goBackToPreviousHotkeyScope,
|
||||
} = usePreviousHotkeyScope();
|
||||
|
||||
function closeEditableField() {
|
||||
const closeEditableField = () => {
|
||||
setIsFieldInEditMode(false);
|
||||
|
||||
goBackToPreviousHotkeyScope();
|
||||
}
|
||||
};
|
||||
|
||||
function openEditableField(customEditHotkeyScopeForField?: HotkeyScope) {
|
||||
const openEditableField = (customEditHotkeyScopeForField?: HotkeyScope) => {
|
||||
setIsFieldInEditMode(true);
|
||||
|
||||
if (customEditHotkeyScopeForField) {
|
||||
@ -36,11 +36,11 @@ export function useEditableField() {
|
||||
EditableFieldHotkeyScope.EditableField,
|
||||
);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
return {
|
||||
isFieldInEditMode,
|
||||
closeEditableField,
|
||||
openEditableField,
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
import { useEditableField } from './useEditableField';
|
||||
|
||||
export function useFieldInputEventHandlers<T>({
|
||||
export const useFieldInputEventHandlers = <T>({
|
||||
onSubmit,
|
||||
onCancel,
|
||||
}: {
|
||||
onSubmit?: (newValue: T) => void;
|
||||
onCancel?: () => void;
|
||||
}) {
|
||||
}) => {
|
||||
const { closeEditableField, isFieldInEditMode } = useEditableField();
|
||||
|
||||
return {
|
||||
@ -25,4 +25,4 @@ export function useFieldInputEventHandlers<T>({
|
||||
closeEditableField();
|
||||
},
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
@ -5,11 +5,11 @@ import { EditableFieldHotkeyScope } from '../types/EditableFieldHotkeyScope';
|
||||
|
||||
import { useEditableField } from './useEditableField';
|
||||
|
||||
export function useRegisterCloseFieldHandlers(
|
||||
export const useRegisterCloseFieldHandlers = (
|
||||
wrapperRef: React.RefObject<HTMLDivElement>,
|
||||
onSubmit?: () => void,
|
||||
onCancel?: () => void,
|
||||
) {
|
||||
) => {
|
||||
const { closeEditableField, isFieldInEditMode } = useEditableField();
|
||||
|
||||
useListenClickOutside({
|
||||
@ -41,4 +41,4 @@ export function useRegisterCloseFieldHandlers(
|
||||
EditableFieldHotkeyScope.EditableField,
|
||||
[closeEditableField, onCancel],
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
@ -50,12 +50,12 @@ import { isFieldTextValue } from '../types/guards/isFieldTextValue';
|
||||
import { isFieldURL } from '../types/guards/isFieldURL';
|
||||
import { isFieldURLValue } from '../types/guards/isFieldURLValue';
|
||||
|
||||
export function useUpdateGenericEntityField() {
|
||||
export const useUpdateGenericEntityField = () => {
|
||||
const useUpdateEntityMutation = useContext(EditableFieldMutationContext);
|
||||
|
||||
const [updateEntity] = useUpdateEntityMutation();
|
||||
|
||||
return function updateEntityField<
|
||||
const updateEntityField = <
|
||||
ValueType extends FieldMetadata extends FieldDoubleTextMetadata
|
||||
? FieldDoubleTextValue
|
||||
: FieldMetadata extends FieldTextMetadata
|
||||
@ -83,7 +83,7 @@ export function useUpdateGenericEntityField() {
|
||||
currentEntityId: string,
|
||||
field: FieldDefinition<FieldMetadata>,
|
||||
newFieldValue: ValueType | null,
|
||||
) {
|
||||
) => {
|
||||
// TODO: improve type guards organization, maybe with a common typeguard for all fields
|
||||
// taking an object of options as parameter ?
|
||||
//
|
||||
@ -165,4 +165,6 @@ export function useUpdateGenericEntityField() {
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
return updateEntityField;
|
||||
};
|
||||
|
||||
@ -16,6 +16,6 @@ interface PropertyBoxProps {
|
||||
extraPadding?: boolean;
|
||||
}
|
||||
|
||||
export function PropertyBox({ children }: PropertyBoxProps) {
|
||||
return <StyledPropertyBoxContainer>{children}</StyledPropertyBoxContainer>;
|
||||
}
|
||||
export const PropertyBox = ({ children }: PropertyBoxProps) => (
|
||||
<StyledPropertyBoxContainer>{children}</StyledPropertyBoxContainer>
|
||||
);
|
||||
|
||||
@ -1,8 +1,6 @@
|
||||
import { FieldDefinition } from '../FieldDefinition';
|
||||
import { FieldBooleanMetadata, FieldMetadata } from '../FieldMetadata';
|
||||
|
||||
export function isFieldBoolean(
|
||||
export const isFieldBoolean = (
|
||||
field: FieldDefinition<FieldMetadata>,
|
||||
): field is FieldDefinition<FieldBooleanMetadata> {
|
||||
return field.type === 'boolean';
|
||||
}
|
||||
): field is FieldDefinition<FieldBooleanMetadata> => field.type === 'boolean';
|
||||
|
||||
@ -1,12 +1,9 @@
|
||||
import { FieldBooleanValue } from '../FieldMetadata';
|
||||
|
||||
// TODO: add yup
|
||||
export function isFieldBooleanValue(
|
||||
export const isFieldBooleanValue = (
|
||||
fieldValue: unknown,
|
||||
): fieldValue is FieldBooleanValue {
|
||||
return (
|
||||
fieldValue !== null &&
|
||||
fieldValue !== undefined &&
|
||||
typeof fieldValue === 'boolean'
|
||||
);
|
||||
}
|
||||
): fieldValue is FieldBooleanValue =>
|
||||
fieldValue !== null &&
|
||||
fieldValue !== undefined &&
|
||||
typeof fieldValue === 'boolean';
|
||||
|
||||
@ -1,8 +1,6 @@
|
||||
import { FieldDefinition } from '../FieldDefinition';
|
||||
import { FieldChipMetadata, FieldMetadata } from '../FieldMetadata';
|
||||
|
||||
export function isFieldChip(
|
||||
export const isFieldChip = (
|
||||
field: FieldDefinition<FieldMetadata>,
|
||||
): field is FieldDefinition<FieldChipMetadata> {
|
||||
return field.type === 'chip';
|
||||
}
|
||||
): field is FieldDefinition<FieldChipMetadata> => field.type === 'chip';
|
||||
|
||||
@ -1,12 +1,9 @@
|
||||
import { FieldChipValue } from '../FieldMetadata';
|
||||
|
||||
// TODO: add yup
|
||||
export function isFieldChipValue(
|
||||
export const isFieldChipValue = (
|
||||
fieldValue: unknown,
|
||||
): fieldValue is FieldChipValue {
|
||||
return (
|
||||
fieldValue !== null &&
|
||||
fieldValue !== undefined &&
|
||||
typeof fieldValue === 'string'
|
||||
);
|
||||
}
|
||||
): fieldValue is FieldChipValue =>
|
||||
fieldValue !== null &&
|
||||
fieldValue !== undefined &&
|
||||
typeof fieldValue === 'string';
|
||||
|
||||
@ -1,8 +1,6 @@
|
||||
import { FieldDefinition } from '../FieldDefinition';
|
||||
import { FieldDateMetadata, FieldMetadata } from '../FieldMetadata';
|
||||
|
||||
export function isFieldDate(
|
||||
export const isFieldDate = (
|
||||
field: FieldDefinition<FieldMetadata>,
|
||||
): field is FieldDefinition<FieldDateMetadata> {
|
||||
return field.type === 'date';
|
||||
}
|
||||
): field is FieldDefinition<FieldDateMetadata> => field.type === 'date';
|
||||
|
||||
@ -1,11 +1,8 @@
|
||||
import { FieldDateValue } from '../FieldMetadata';
|
||||
|
||||
// TODO: add yup
|
||||
export function isFieldDateValue(
|
||||
export const isFieldDateValue = (
|
||||
fieldValue: unknown,
|
||||
): fieldValue is FieldDateValue {
|
||||
return (
|
||||
fieldValue === null ||
|
||||
(fieldValue !== undefined && typeof fieldValue === 'string')
|
||||
);
|
||||
}
|
||||
): fieldValue is FieldDateValue =>
|
||||
fieldValue === null ||
|
||||
(fieldValue !== undefined && typeof fieldValue === 'string');
|
||||
|
||||
@ -1,8 +1,7 @@
|
||||
import { FieldDefinition } from '../FieldDefinition';
|
||||
import { FieldDoubleTextMetadata, FieldMetadata } from '../FieldMetadata';
|
||||
|
||||
export function isFieldDoubleText(
|
||||
export const isFieldDoubleText = (
|
||||
field: FieldDefinition<FieldMetadata>,
|
||||
): field is FieldDefinition<FieldDoubleTextMetadata> {
|
||||
return field.type === 'double-text';
|
||||
}
|
||||
): field is FieldDefinition<FieldDoubleTextMetadata> =>
|
||||
field.type === 'double-text';
|
||||
|
||||
@ -1,8 +1,7 @@
|
||||
import { FieldDefinition } from '../FieldDefinition';
|
||||
import { FieldDoubleTextChipMetadata, FieldMetadata } from '../FieldMetadata';
|
||||
|
||||
export function isFieldDoubleTextChip(
|
||||
export const isFieldDoubleTextChip = (
|
||||
field: FieldDefinition<FieldMetadata>,
|
||||
): field is FieldDefinition<FieldDoubleTextChipMetadata> {
|
||||
return field.type === 'double-text-chip';
|
||||
}
|
||||
): field is FieldDefinition<FieldDoubleTextChipMetadata> =>
|
||||
field.type === 'double-text-chip';
|
||||
|
||||
@ -1,12 +1,9 @@
|
||||
import { FieldDoubleTextChipValue } from '../FieldMetadata';
|
||||
|
||||
// TODO: add yup
|
||||
export function isFieldDoubleTextChipValue(
|
||||
export const isFieldDoubleTextChipValue = (
|
||||
fieldValue: unknown,
|
||||
): fieldValue is FieldDoubleTextChipValue {
|
||||
return (
|
||||
fieldValue !== null &&
|
||||
fieldValue !== undefined &&
|
||||
typeof fieldValue === 'object'
|
||||
);
|
||||
}
|
||||
): fieldValue is FieldDoubleTextChipValue =>
|
||||
fieldValue !== null &&
|
||||
fieldValue !== undefined &&
|
||||
typeof fieldValue === 'object';
|
||||
|
||||
@ -1,12 +1,9 @@
|
||||
import { FieldDoubleTextValue } from '../FieldMetadata';
|
||||
|
||||
// TODO: add yup
|
||||
export function isFieldDoubleTextValue(
|
||||
export const isFieldDoubleTextValue = (
|
||||
fieldValue: unknown,
|
||||
): fieldValue is FieldDoubleTextValue {
|
||||
return (
|
||||
fieldValue !== null &&
|
||||
fieldValue !== undefined &&
|
||||
typeof fieldValue === 'object'
|
||||
);
|
||||
}
|
||||
): fieldValue is FieldDoubleTextValue =>
|
||||
fieldValue !== null &&
|
||||
fieldValue !== undefined &&
|
||||
typeof fieldValue === 'object';
|
||||
|
||||
@ -1,8 +1,6 @@
|
||||
import { FieldDefinition } from '../FieldDefinition';
|
||||
import { FieldMetadata, FieldNumberMetadata } from '../FieldMetadata';
|
||||
|
||||
export function isFieldNumber(
|
||||
export const isFieldNumber = (
|
||||
field: FieldDefinition<FieldMetadata>,
|
||||
): field is FieldDefinition<FieldNumberMetadata> {
|
||||
return field.type === 'number';
|
||||
}
|
||||
): field is FieldDefinition<FieldNumberMetadata> => field.type === 'number';
|
||||
|
||||
@ -1,11 +1,8 @@
|
||||
import { FieldNumberValue } from '../FieldMetadata';
|
||||
|
||||
// TODO: add yup
|
||||
export function isFieldNumberValue(
|
||||
export const isFieldNumberValue = (
|
||||
fieldValue: unknown,
|
||||
): fieldValue is FieldNumberValue {
|
||||
return (
|
||||
fieldValue === null ||
|
||||
(fieldValue !== undefined && typeof fieldValue === 'number')
|
||||
);
|
||||
}
|
||||
): fieldValue is FieldNumberValue =>
|
||||
fieldValue === null ||
|
||||
(fieldValue !== undefined && typeof fieldValue === 'number');
|
||||
|
||||
@ -1,8 +1,6 @@
|
||||
import { FieldDefinition } from '../FieldDefinition';
|
||||
import { FieldMetadata, FieldPhoneMetadata } from '../FieldMetadata';
|
||||
|
||||
export function isFieldPhone(
|
||||
export const isFieldPhone = (
|
||||
field: FieldDefinition<FieldMetadata>,
|
||||
): field is FieldDefinition<FieldPhoneMetadata> {
|
||||
return field.type === 'phone';
|
||||
}
|
||||
): field is FieldDefinition<FieldPhoneMetadata> => field.type === 'phone';
|
||||
|
||||
@ -1,12 +1,9 @@
|
||||
import { FieldPhoneValue } from '../FieldMetadata';
|
||||
|
||||
// TODO: add yup
|
||||
export function isFieldPhoneValue(
|
||||
export const isFieldPhoneValue = (
|
||||
fieldValue: unknown,
|
||||
): fieldValue is FieldPhoneValue {
|
||||
return (
|
||||
fieldValue !== null &&
|
||||
fieldValue !== undefined &&
|
||||
typeof fieldValue === 'string'
|
||||
);
|
||||
}
|
||||
): fieldValue is FieldPhoneValue =>
|
||||
fieldValue !== null &&
|
||||
fieldValue !== undefined &&
|
||||
typeof fieldValue === 'string';
|
||||
|
||||
@ -1,8 +1,7 @@
|
||||
import { FieldDefinition } from '../FieldDefinition';
|
||||
import { FieldMetadata, FieldProbabilityMetadata } from '../FieldMetadata';
|
||||
|
||||
export function isFieldProbability(
|
||||
export const isFieldProbability = (
|
||||
field: FieldDefinition<FieldMetadata>,
|
||||
): field is FieldDefinition<FieldProbabilityMetadata> {
|
||||
return field.type === 'probability';
|
||||
}
|
||||
): field is FieldDefinition<FieldProbabilityMetadata> =>
|
||||
field.type === 'probability';
|
||||
|
||||
@ -1,12 +1,9 @@
|
||||
import { FieldProbabilityValue } from '../FieldMetadata';
|
||||
|
||||
// TODO: add yup
|
||||
export function isFieldProbabilityValue(
|
||||
export const isFieldProbabilityValue = (
|
||||
fieldValue: unknown,
|
||||
): fieldValue is FieldProbabilityValue {
|
||||
return (
|
||||
fieldValue !== null &&
|
||||
fieldValue !== undefined &&
|
||||
typeof fieldValue === 'number'
|
||||
);
|
||||
}
|
||||
): fieldValue is FieldProbabilityValue =>
|
||||
fieldValue !== null &&
|
||||
fieldValue !== undefined &&
|
||||
typeof fieldValue === 'number';
|
||||
|
||||
@ -1,8 +1,6 @@
|
||||
import { FieldDefinition } from '../FieldDefinition';
|
||||
import { FieldMetadata, FieldRelationMetadata } from '../FieldMetadata';
|
||||
|
||||
export function isFieldRelation(
|
||||
export const isFieldRelation = (
|
||||
field: FieldDefinition<FieldMetadata>,
|
||||
): field is FieldDefinition<FieldRelationMetadata> {
|
||||
return field.type === 'relation';
|
||||
}
|
||||
): field is FieldDefinition<FieldRelationMetadata> => field.type === 'relation';
|
||||
|
||||
@ -1,8 +1,7 @@
|
||||
import { FieldRelationValue } from '../FieldMetadata';
|
||||
|
||||
// TODO: add yup
|
||||
export function isFieldRelationValue(
|
||||
export const isFieldRelationValue = (
|
||||
fieldValue: unknown,
|
||||
): fieldValue is FieldRelationValue {
|
||||
return fieldValue !== undefined && typeof fieldValue === 'object';
|
||||
}
|
||||
): fieldValue is FieldRelationValue =>
|
||||
fieldValue !== undefined && typeof fieldValue === 'object';
|
||||
|
||||
@ -1,8 +1,6 @@
|
||||
import { FieldDefinition } from '../FieldDefinition';
|
||||
import { FieldMetadata, FieldTextMetadata } from '../FieldMetadata';
|
||||
|
||||
export function isFieldText(
|
||||
export const isFieldText = (
|
||||
field: FieldDefinition<FieldMetadata>,
|
||||
): field is FieldDefinition<FieldTextMetadata> {
|
||||
return field.type === 'text';
|
||||
}
|
||||
): field is FieldDefinition<FieldTextMetadata> => field.type === 'text';
|
||||
|
||||
@ -1,12 +1,9 @@
|
||||
import { FieldTextValue } from '../FieldMetadata';
|
||||
|
||||
// TODO: add yup
|
||||
export function isFieldTextValue(
|
||||
export const isFieldTextValue = (
|
||||
fieldValue: unknown,
|
||||
): fieldValue is FieldTextValue {
|
||||
return (
|
||||
fieldValue !== null &&
|
||||
fieldValue !== undefined &&
|
||||
typeof fieldValue === 'string'
|
||||
);
|
||||
}
|
||||
): fieldValue is FieldTextValue =>
|
||||
fieldValue !== null &&
|
||||
fieldValue !== undefined &&
|
||||
typeof fieldValue === 'string';
|
||||
|
||||
@ -1,8 +1,6 @@
|
||||
import { FieldDefinition } from '../FieldDefinition';
|
||||
import { FieldMetadata, FieldURLMetadata } from '../FieldMetadata';
|
||||
|
||||
export function isFieldURL(
|
||||
export const isFieldURL = (
|
||||
field: FieldDefinition<FieldMetadata>,
|
||||
): field is FieldDefinition<FieldURLMetadata> {
|
||||
return field.type === 'url';
|
||||
}
|
||||
): field is FieldDefinition<FieldURLMetadata> => field.type === 'url';
|
||||
|
||||
@ -1,12 +1,9 @@
|
||||
import { FieldURLValue } from '../FieldMetadata';
|
||||
|
||||
// TODO: add yup
|
||||
export function isFieldURLValue(
|
||||
export const isFieldURLValue = (
|
||||
fieldValue: unknown,
|
||||
): fieldValue is FieldURLValue {
|
||||
return (
|
||||
fieldValue !== null &&
|
||||
fieldValue !== undefined &&
|
||||
typeof fieldValue === 'string'
|
||||
);
|
||||
}
|
||||
): fieldValue is FieldURLValue =>
|
||||
fieldValue !== null &&
|
||||
fieldValue !== undefined &&
|
||||
typeof fieldValue === 'string';
|
||||
|
||||
@ -4,8 +4,7 @@ import {
|
||||
ViewFieldMetadata,
|
||||
} from '../ViewField';
|
||||
|
||||
export function isViewFieldBoolean(
|
||||
export const isViewFieldBoolean = (
|
||||
field: ViewFieldDefinition<ViewFieldMetadata>,
|
||||
): field is ViewFieldDefinition<ViewFieldBooleanMetadata> {
|
||||
return field.metadata.type === 'boolean';
|
||||
}
|
||||
): field is ViewFieldDefinition<ViewFieldBooleanMetadata> =>
|
||||
field.metadata.type === 'boolean';
|
||||
|
||||
@ -1,7 +1,5 @@
|
||||
import { ViewFieldBooleanValue } from '../ViewField';
|
||||
|
||||
export function isViewFieldBooleanValue(
|
||||
export const isViewFieldBooleanValue = (
|
||||
fieldValue: unknown,
|
||||
): fieldValue is ViewFieldBooleanValue {
|
||||
return typeof fieldValue === 'boolean';
|
||||
}
|
||||
): fieldValue is ViewFieldBooleanValue => typeof fieldValue === 'boolean';
|
||||
|
||||
@ -4,8 +4,7 @@ import {
|
||||
ViewFieldMetadata,
|
||||
} from '../ViewField';
|
||||
|
||||
export function isViewFieldChip(
|
||||
export const isViewFieldChip = (
|
||||
field: ViewFieldDefinition<ViewFieldMetadata>,
|
||||
): field is ViewFieldDefinition<ViewFieldChipMetadata> {
|
||||
return field.metadata.type === 'chip';
|
||||
}
|
||||
): field is ViewFieldDefinition<ViewFieldChipMetadata> =>
|
||||
field.metadata.type === 'chip';
|
||||
|
||||
@ -1,12 +1,9 @@
|
||||
import { ViewFieldChipValue } from '../ViewField';
|
||||
|
||||
// TODO: add yup
|
||||
export function isViewFieldChipValue(
|
||||
export const isViewFieldChipValue = (
|
||||
fieldValue: unknown,
|
||||
): fieldValue is ViewFieldChipValue {
|
||||
return (
|
||||
fieldValue !== null &&
|
||||
fieldValue !== undefined &&
|
||||
typeof fieldValue === 'string'
|
||||
);
|
||||
}
|
||||
): fieldValue is ViewFieldChipValue =>
|
||||
fieldValue !== null &&
|
||||
fieldValue !== undefined &&
|
||||
typeof fieldValue === 'string';
|
||||
|
||||
@ -4,8 +4,7 @@ import {
|
||||
ViewFieldMetadata,
|
||||
} from '../ViewField';
|
||||
|
||||
export function isViewFieldDate(
|
||||
export const isViewFieldDate = (
|
||||
field: ViewFieldDefinition<ViewFieldMetadata>,
|
||||
): field is ViewFieldDefinition<ViewFieldDateMetadata> {
|
||||
return field.metadata.type === 'date';
|
||||
}
|
||||
): field is ViewFieldDefinition<ViewFieldDateMetadata> =>
|
||||
field.metadata.type === 'date';
|
||||
|
||||
@ -1,12 +1,9 @@
|
||||
import { ViewFieldDateValue } from '../ViewField';
|
||||
|
||||
// TODO: add yup
|
||||
export function isViewFieldDateValue(
|
||||
export const isViewFieldDateValue = (
|
||||
fieldValue: unknown,
|
||||
): fieldValue is ViewFieldDateValue {
|
||||
return (
|
||||
fieldValue !== null &&
|
||||
fieldValue !== undefined &&
|
||||
typeof fieldValue === 'string'
|
||||
);
|
||||
}
|
||||
): fieldValue is ViewFieldDateValue =>
|
||||
fieldValue !== null &&
|
||||
fieldValue !== undefined &&
|
||||
typeof fieldValue === 'string';
|
||||
|
||||
@ -4,8 +4,7 @@ import {
|
||||
ViewFieldMetadata,
|
||||
} from '../ViewField';
|
||||
|
||||
export function isViewFieldDoubleText(
|
||||
export const isViewFieldDoubleText = (
|
||||
field: ViewFieldDefinition<ViewFieldMetadata>,
|
||||
): field is ViewFieldDefinition<ViewFieldDoubleTextMetadata> {
|
||||
return field.metadata.type === 'double-text';
|
||||
}
|
||||
): field is ViewFieldDefinition<ViewFieldDoubleTextMetadata> =>
|
||||
field.metadata.type === 'double-text';
|
||||
|
||||
@ -4,8 +4,7 @@ import {
|
||||
ViewFieldMetadata,
|
||||
} from '../ViewField';
|
||||
|
||||
export function isViewFieldDoubleTextChip(
|
||||
export const isViewFieldDoubleTextChip = (
|
||||
field: ViewFieldDefinition<ViewFieldMetadata>,
|
||||
): field is ViewFieldDefinition<ViewFieldDoubleTextChipMetadata> {
|
||||
return field.metadata.type === 'double-text-chip';
|
||||
}
|
||||
): field is ViewFieldDefinition<ViewFieldDoubleTextChipMetadata> =>
|
||||
field.metadata.type === 'double-text-chip';
|
||||
|
||||
@ -1,12 +1,9 @@
|
||||
import { ViewFieldDoubleTextChipValue } from '../ViewField';
|
||||
|
||||
// TODO: add yup
|
||||
export function isViewFieldDoubleTextChipValue(
|
||||
export const isViewFieldDoubleTextChipValue = (
|
||||
fieldValue: unknown,
|
||||
): fieldValue is ViewFieldDoubleTextChipValue {
|
||||
return (
|
||||
fieldValue !== null &&
|
||||
fieldValue !== undefined &&
|
||||
typeof fieldValue === 'object'
|
||||
);
|
||||
}
|
||||
): fieldValue is ViewFieldDoubleTextChipValue =>
|
||||
fieldValue !== null &&
|
||||
fieldValue !== undefined &&
|
||||
typeof fieldValue === 'object';
|
||||
|
||||
@ -1,12 +1,9 @@
|
||||
import { ViewFieldDoubleTextValue } from '../ViewField';
|
||||
|
||||
// TODO: add yup
|
||||
export function isViewFieldDoubleTextValue(
|
||||
export const isViewFieldDoubleTextValue = (
|
||||
fieldValue: unknown,
|
||||
): fieldValue is ViewFieldDoubleTextValue {
|
||||
return (
|
||||
fieldValue !== null &&
|
||||
fieldValue !== undefined &&
|
||||
typeof fieldValue === 'object'
|
||||
);
|
||||
}
|
||||
): fieldValue is ViewFieldDoubleTextValue =>
|
||||
fieldValue !== null &&
|
||||
fieldValue !== undefined &&
|
||||
typeof fieldValue === 'object';
|
||||
|
||||
@ -4,8 +4,7 @@ import {
|
||||
ViewFieldMetadata,
|
||||
} from '../ViewField';
|
||||
|
||||
export function isViewFieldEmail(
|
||||
export const isViewFieldEmail = (
|
||||
field: ViewFieldDefinition<ViewFieldMetadata>,
|
||||
): field is ViewFieldDefinition<ViewFieldEmailMetadata> {
|
||||
return field.metadata.type === 'email';
|
||||
}
|
||||
): field is ViewFieldDefinition<ViewFieldEmailMetadata> =>
|
||||
field.metadata.type === 'email';
|
||||
|
||||
@ -1,11 +1,8 @@
|
||||
import { ViewFieldEmailValue } from '../ViewField';
|
||||
|
||||
export function isViewFieldEmailValue(
|
||||
export const isViewFieldEmailValue = (
|
||||
fieldValue: unknown,
|
||||
): fieldValue is ViewFieldEmailValue {
|
||||
return (
|
||||
fieldValue !== null &&
|
||||
fieldValue !== undefined &&
|
||||
typeof fieldValue === 'string'
|
||||
);
|
||||
}
|
||||
): fieldValue is ViewFieldEmailValue =>
|
||||
fieldValue !== null &&
|
||||
fieldValue !== undefined &&
|
||||
typeof fieldValue === 'string';
|
||||
|
||||
@ -4,8 +4,7 @@ import {
|
||||
ViewFieldMoneyMetadata,
|
||||
} from '../ViewField';
|
||||
|
||||
export function isViewFieldMoney(
|
||||
export const isViewFieldMoney = (
|
||||
field: ViewFieldDefinition<ViewFieldMetadata>,
|
||||
): field is ViewFieldDefinition<ViewFieldMoneyMetadata> {
|
||||
return field.metadata.type === 'moneyAmount';
|
||||
}
|
||||
): field is ViewFieldDefinition<ViewFieldMoneyMetadata> =>
|
||||
field.metadata.type === 'moneyAmount';
|
||||
|
||||
@ -1,10 +1,7 @@
|
||||
import { ViewFieldMoneyValue } from '../ViewField';
|
||||
|
||||
export function isViewFieldMoneyValue(
|
||||
export const isViewFieldMoneyValue = (
|
||||
fieldValue: unknown,
|
||||
): fieldValue is ViewFieldMoneyValue {
|
||||
return (
|
||||
fieldValue === null ||
|
||||
(fieldValue !== undefined && typeof fieldValue === 'number')
|
||||
);
|
||||
}
|
||||
): fieldValue is ViewFieldMoneyValue =>
|
||||
fieldValue === null ||
|
||||
(fieldValue !== undefined && typeof fieldValue === 'number');
|
||||
|
||||
@ -4,8 +4,7 @@ import {
|
||||
ViewFieldNumberMetadata,
|
||||
} from '../ViewField';
|
||||
|
||||
export function isViewFieldNumber(
|
||||
export const isViewFieldNumber = (
|
||||
field: ViewFieldDefinition<ViewFieldMetadata>,
|
||||
): field is ViewFieldDefinition<ViewFieldNumberMetadata> {
|
||||
return field.metadata.type === 'number';
|
||||
}
|
||||
): field is ViewFieldDefinition<ViewFieldNumberMetadata> =>
|
||||
field.metadata.type === 'number';
|
||||
|
||||
@ -1,12 +1,9 @@
|
||||
import { ViewFieldNumberValue } from '../ViewField';
|
||||
|
||||
// TODO: add yup
|
||||
export function isViewFieldNumberValue(
|
||||
export const isViewFieldNumberValue = (
|
||||
fieldValue: unknown,
|
||||
): fieldValue is ViewFieldNumberValue {
|
||||
return (
|
||||
fieldValue !== null &&
|
||||
fieldValue !== undefined &&
|
||||
typeof fieldValue === 'number'
|
||||
);
|
||||
}
|
||||
): fieldValue is ViewFieldNumberValue =>
|
||||
fieldValue !== null &&
|
||||
fieldValue !== undefined &&
|
||||
typeof fieldValue === 'number';
|
||||
|
||||
@ -4,8 +4,7 @@ import {
|
||||
ViewFieldPhoneMetadata,
|
||||
} from '../ViewField';
|
||||
|
||||
export function isViewFieldPhone(
|
||||
export const isViewFieldPhone = (
|
||||
field: ViewFieldDefinition<ViewFieldMetadata>,
|
||||
): field is ViewFieldDefinition<ViewFieldPhoneMetadata> {
|
||||
return field.metadata.type === 'phone';
|
||||
}
|
||||
): field is ViewFieldDefinition<ViewFieldPhoneMetadata> =>
|
||||
field.metadata.type === 'phone';
|
||||
|
||||
@ -1,12 +1,9 @@
|
||||
import { ViewFieldPhoneValue } from '../ViewField';
|
||||
|
||||
// TODO: add yup
|
||||
export function isViewFieldPhoneValue(
|
||||
export const isViewFieldPhoneValue = (
|
||||
fieldValue: unknown,
|
||||
): fieldValue is ViewFieldPhoneValue {
|
||||
return (
|
||||
fieldValue !== null &&
|
||||
fieldValue !== undefined &&
|
||||
typeof fieldValue === 'string'
|
||||
);
|
||||
}
|
||||
): fieldValue is ViewFieldPhoneValue =>
|
||||
fieldValue !== null &&
|
||||
fieldValue !== undefined &&
|
||||
typeof fieldValue === 'string';
|
||||
|
||||
@ -4,8 +4,7 @@ import {
|
||||
ViewFieldProbabilityMetadata,
|
||||
} from '../ViewField';
|
||||
|
||||
export function isViewFieldProbability(
|
||||
export const isViewFieldProbability = (
|
||||
field: ViewFieldDefinition<ViewFieldMetadata>,
|
||||
): field is ViewFieldDefinition<ViewFieldProbabilityMetadata> {
|
||||
return field.metadata.type === 'probability';
|
||||
}
|
||||
): field is ViewFieldDefinition<ViewFieldProbabilityMetadata> =>
|
||||
field.metadata.type === 'probability';
|
||||
|
||||
@ -1,12 +1,9 @@
|
||||
import { ViewFieldProbabilityValue } from '../ViewField';
|
||||
|
||||
// TODO: add yup
|
||||
export function isViewFieldProbabilityValue(
|
||||
export const isViewFieldProbabilityValue = (
|
||||
fieldValue: unknown,
|
||||
): fieldValue is ViewFieldProbabilityValue {
|
||||
return (
|
||||
fieldValue !== null &&
|
||||
fieldValue !== undefined &&
|
||||
typeof fieldValue === 'number'
|
||||
);
|
||||
}
|
||||
): fieldValue is ViewFieldProbabilityValue =>
|
||||
fieldValue !== null &&
|
||||
fieldValue !== undefined &&
|
||||
typeof fieldValue === 'number';
|
||||
|
||||
@ -4,8 +4,7 @@ import {
|
||||
ViewFieldRelationMetadata,
|
||||
} from '../ViewField';
|
||||
|
||||
export function isViewFieldRelation(
|
||||
export const isViewFieldRelation = (
|
||||
field: ViewFieldDefinition<ViewFieldMetadata>,
|
||||
): field is ViewFieldDefinition<ViewFieldRelationMetadata> {
|
||||
return field.metadata.type === 'relation';
|
||||
}
|
||||
): field is ViewFieldDefinition<ViewFieldRelationMetadata> =>
|
||||
field.metadata.type === 'relation';
|
||||
|
||||
@ -1,8 +1,7 @@
|
||||
import { ViewFieldRelationValue } from '../ViewField';
|
||||
|
||||
// TODO: add yup
|
||||
export function isViewFieldRelationValue(
|
||||
export const isViewFieldRelationValue = (
|
||||
fieldValue: unknown,
|
||||
): fieldValue is ViewFieldRelationValue {
|
||||
return fieldValue !== undefined && typeof fieldValue === 'object';
|
||||
}
|
||||
): fieldValue is ViewFieldRelationValue =>
|
||||
fieldValue !== undefined && typeof fieldValue === 'object';
|
||||
|
||||
@ -4,8 +4,7 @@ import {
|
||||
ViewFieldTextMetadata,
|
||||
} from '../ViewField';
|
||||
|
||||
export function isViewFieldText(
|
||||
export const isViewFieldText = (
|
||||
field: ViewFieldDefinition<ViewFieldMetadata>,
|
||||
): field is ViewFieldDefinition<ViewFieldTextMetadata> {
|
||||
return field.metadata.type === 'text';
|
||||
}
|
||||
): field is ViewFieldDefinition<ViewFieldTextMetadata> =>
|
||||
field.metadata.type === 'text';
|
||||
|
||||
@ -1,12 +1,9 @@
|
||||
import { ViewFieldTextValue } from '../ViewField';
|
||||
|
||||
// TODO: add yup
|
||||
export function isViewFieldTextValue(
|
||||
export const isViewFieldTextValue = (
|
||||
fieldValue: unknown,
|
||||
): fieldValue is ViewFieldTextValue {
|
||||
return (
|
||||
fieldValue !== null &&
|
||||
fieldValue !== undefined &&
|
||||
typeof fieldValue === 'string'
|
||||
);
|
||||
}
|
||||
): fieldValue is ViewFieldTextValue =>
|
||||
fieldValue !== null &&
|
||||
fieldValue !== undefined &&
|
||||
typeof fieldValue === 'string';
|
||||
|
||||
@ -4,8 +4,7 @@ import {
|
||||
ViewFieldURLMetadata,
|
||||
} from '../ViewField';
|
||||
|
||||
export function isViewFieldURL(
|
||||
export const isViewFieldURL = (
|
||||
field: ViewFieldDefinition<ViewFieldMetadata>,
|
||||
): field is ViewFieldDefinition<ViewFieldURLMetadata> {
|
||||
return field.metadata.type === 'url';
|
||||
}
|
||||
): field is ViewFieldDefinition<ViewFieldURLMetadata> =>
|
||||
field.metadata.type === 'url';
|
||||
|
||||
@ -1,12 +1,9 @@
|
||||
import { ViewFieldURLValue } from '../ViewField';
|
||||
|
||||
// TODO: add yup
|
||||
export function isViewFieldURLValue(
|
||||
export const isViewFieldURLValue = (
|
||||
fieldValue: unknown,
|
||||
): fieldValue is ViewFieldURLValue {
|
||||
return (
|
||||
fieldValue !== null &&
|
||||
fieldValue !== undefined &&
|
||||
typeof fieldValue === 'string'
|
||||
);
|
||||
}
|
||||
): fieldValue is ViewFieldURLValue =>
|
||||
fieldValue !== null &&
|
||||
fieldValue !== undefined &&
|
||||
typeof fieldValue === 'string';
|
||||
|
||||
@ -15,16 +15,16 @@ type OwnProps = {
|
||||
hotkeyScope: string;
|
||||
};
|
||||
|
||||
export function DateEditableField({
|
||||
export const DateEditableField = ({
|
||||
Icon,
|
||||
value,
|
||||
label,
|
||||
onSubmit,
|
||||
hotkeyScope,
|
||||
}: OwnProps) {
|
||||
async function handleChange(newValue: string) {
|
||||
}: OwnProps) => {
|
||||
const handleChange = async (newValue: string) => {
|
||||
onSubmit?.(newValue);
|
||||
}
|
||||
};
|
||||
|
||||
const internalDateValue = value ? parseDate(value).toJSDate() : null;
|
||||
|
||||
@ -47,4 +47,4 @@ export function DateEditableField({
|
||||
/>
|
||||
</RecoilScope>
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
@ -13,11 +13,11 @@ type OwnProps = {
|
||||
};
|
||||
|
||||
// TODO: refactor this component to use the same logic as the GenericDateField component
|
||||
export function EditableFieldEditModeDate({
|
||||
export const EditableFieldEditModeDate = ({
|
||||
value,
|
||||
onChange,
|
||||
parentHotkeyScope,
|
||||
}: OwnProps) {
|
||||
}: OwnProps) => {
|
||||
const [internalValue, setInternalValue] = useState(value);
|
||||
|
||||
useEffect(() => {
|
||||
@ -26,18 +26,18 @@ export function EditableFieldEditModeDate({
|
||||
|
||||
const { closeEditableField } = useEditableField();
|
||||
|
||||
function handleClickOutside() {
|
||||
const handleClickOutside = () => {
|
||||
closeEditableField();
|
||||
}
|
||||
};
|
||||
|
||||
function handleEnter(newValue: Nullable<Date>) {
|
||||
const handleEnter = (newValue: Nullable<Date>) => {
|
||||
onChange?.(newValue?.toISOString() ?? '');
|
||||
closeEditableField();
|
||||
}
|
||||
};
|
||||
|
||||
function handleEscape() {
|
||||
const handleEscape = () => {
|
||||
closeEditableField();
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<DateInput
|
||||
@ -48,4 +48,4 @@ export function EditableFieldEditModeDate({
|
||||
onEscape={handleEscape}
|
||||
/>
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user