Skip to content

Commit

Permalink
refactor: rename FormFieldValidation => FormNodePresence
Browse files Browse the repository at this point in the history
  • Loading branch information
mariuslundgard committed Oct 4, 2022
1 parent 2c2b85f commit 9111c44
Show file tree
Hide file tree
Showing 20 changed files with 44 additions and 47 deletions.
4 changes: 2 additions & 2 deletions packages/sanity/src/core/form/FormBuilderProvider.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import {ObjectSchemaType, Path, ValidationMarker} from '@sanity/types'
import React, {useEffect, useMemo, useRef} from 'react'
import {Source} from '../config'
import {FormFieldPresence} from '../presence'
import {FormNodePresence} from '../presence'
import {FIXME} from '../FIXME'
import {FormBuilderContext, FormBuilderContextValue} from './FormBuilderContext'
import {
Expand Down Expand Up @@ -47,7 +47,7 @@ export interface FormBuilderProviderProps {
onPathOpen: (path: Path) => void
onSetFieldSetCollapsed: (path: Path, collapsed: boolean) => void
onSetPathCollapsed: (path: Path, collapsed: boolean) => void
presence: FormFieldPresence[]
presence: FormNodePresence[]
readOnly?: boolean
renderField: RenderFieldCallback
renderInput: RenderInputCallback
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import {FormNodeValidation} from '@sanity/types'
import {Stack} from '@sanity/ui'
import React, {memo} from 'react'
import {FormFieldPresence} from '../../../presence'
import {FormNodePresence} from '../../../presence'
import {FormFieldHeader} from './FormFieldHeader'

/** @internal */
Expand All @@ -13,7 +13,7 @@ export interface FormFieldProps {
/**
* @beta
*/
__unstable_presence?: FormFieldPresence[]
__unstable_presence?: FormNodePresence[]
children: React.ReactNode
description?: React.ReactNode
/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import React, {memo} from 'react'
import {Box, Flex} from '@sanity/ui'
import {FormNodeValidation} from '@sanity/types'
import {FieldPresence, FormFieldPresence} from '../../../presence'
import {FieldPresence, FormNodePresence} from '../../../presence'
import {FormFieldHeaderText} from './FormFieldHeaderText'

export interface FormFieldHeaderProps {
Expand All @@ -14,7 +14,7 @@ export interface FormFieldHeaderProps {
/**
* @beta
*/
__unstable_presence?: FormFieldPresence[]
__unstable_presence?: FormNodePresence[]
description?: React.ReactNode
/**
* The unique ID used to target the actual input element
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import {Box, Flex, Grid, rem, Stack, Text, Theme, useForwardedRef} from '@sanity
import React, {forwardRef, useCallback, useMemo} from 'react'
import styled, {css} from 'styled-components'
import {FormNodeValidation} from '@sanity/types'
import {FieldPresence, FormFieldPresence} from '../../../presence'
import {FieldPresence, FormNodePresence} from '../../../presence'
import {FormFieldValidationStatus} from './FormFieldValidationStatus'
import {FormFieldSetLegend} from './FormFieldSetLegend'
import {focusRingStyle} from './styles'
Expand All @@ -14,7 +14,7 @@ export interface FormFieldSetProps {
/**
* @beta
*/
__unstable_presence?: FormFieldPresence[]
__unstable_presence?: FormNodePresence[]
children: React.ReactNode | (() => React.ReactNode)
collapsed?: boolean
collapsible?: boolean
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import {ValidationMarker} from '@sanity/types'
import {Card, Code, Container, Flex, LayerProvider} from '@sanity/ui'
import {useBoolean, useNumber, useString} from '@sanity/ui-workshop'
import React, {useCallback, useMemo, useState} from 'react'
import {FormFieldPresence} from '../../../../presence'
import {FormNodePresence} from '../../../../presence'
import {useCurrentUser} from '../../../../store'

const DEBUG = false
Expand All @@ -18,7 +18,7 @@ export default function ExampleStory() {
const [focused, setFocused] = useState(false)
const user = useCurrentUser()

const presence: FormFieldPresence[] = useMemo(
const presence: FormNodePresence[] = useMemo(
() =>
user
? [
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import {FormNodeValidation, SchemaType} from '@sanity/types'
import React from 'react'
import {FormFieldPresence} from '../../../../../presence'
import {FormNodePresence} from '../../../../../presence'
import {RenderPreviewCallback} from '../../../../types'

export interface ItemLayoutProps {
Expand All @@ -11,7 +11,7 @@ export interface ItemLayoutProps {
onFocus?: (event: React.FocusEvent) => void
onInsert: (event: {items: unknown[]; position: 'before' | 'after'}) => void
onRemove: () => void
presence: FormFieldPresence[]
presence: FormNodePresence[]
readOnly?: boolean
renderPreview: RenderPreviewCallback
type?: SchemaType // note: type might be undefined here if the value doesn't have a matching schema type definition
Expand Down
4 changes: 2 additions & 2 deletions packages/sanity/src/core/form/store/formState.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import {isEqual, pathFor, startsWith, toString, trimChildPath} from '@sanity/uti
import {resolveTypeName} from '@sanity/util/content'
import {isRecord} from '../../util'
import {FIXME} from '../../FIXME'
import {FormFieldPresence} from '../../presence'
import {FormNodePresence} from '../../presence'
import {getFieldLevel} from '../studio/inputResolver/helpers'
import {PrimitiveFormNode, StateTree} from './types'
import {resolveConditionalProperty} from './conditional-property'
Expand Down Expand Up @@ -448,7 +448,7 @@ interface RawState<SchemaType, T> {
path: Path
openPath: Path
focusPath: Path
presence: FormFieldPresence[]
presence: FormNodePresence[]
validation: ValidationMarker[]
fieldGroupState?: StateTree<string>
collapsedPaths?: StateTree<boolean>
Expand Down
4 changes: 2 additions & 2 deletions packages/sanity/src/core/form/store/types/nodes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import {
SchemaType,
StringSchemaType,
} from '@sanity/types'
import {FormFieldPresence} from '../../../presence'
import {FormNodePresence} from '../../../presence'
import {ArrayOfObjectsMember, ArrayOfPrimitivesMember, ObjectMember} from './members'
import {FormFieldGroup} from './fieldGroup'

Expand All @@ -22,7 +22,7 @@ export interface BaseFormNode<T = unknown, S extends SchemaType = SchemaType> {

// state
/** @beta */
presence: FormFieldPresence[]
presence: FormNodePresence[]
validation: FormNodeValidation[]
value: T | undefined
readOnly?: boolean
Expand Down
4 changes: 2 additions & 2 deletions packages/sanity/src/core/form/store/useFormState.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import {ObjectSchemaType, Path, ValidationMarker} from '@sanity/types'
import {useLayoutEffect, useMemo, useRef} from 'react'
import {pathFor} from '@sanity/util/paths'
import {FormFieldPresence} from '../../presence'
import {FormNodePresence} from '../../presence'
import {useCurrentUser} from '../../store'
import {StateTree, ObjectFormNode} from './types'
import {prepareFormState, FIXME_SanityDocument} from './formState'
Expand Down Expand Up @@ -40,7 +40,7 @@ export function useFormState<
comparisonValue: Partial<FIXME_SanityDocument> | null
openPath: Path
focusPath: Path
presence: FormFieldPresence[]
presence: FormNodePresence[]
validation: ValidationMarker[]
}
): FormState<T, S> | null {
Expand Down
4 changes: 2 additions & 2 deletions packages/sanity/src/core/form/studio/FormBuilder.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import {ObjectInputProps} from '../types'
import {useFormBuilder} from '../useFormBuilder'
import {StateTree} from '../store'
import {EMPTY_ARRAY} from '../../util'
import {FormFieldPresence} from '../../presence'
import {FormNodePresence} from '../../presence'
import {FormProvider} from './FormProvider'
import {useFormCallbacks} from './contexts/FormCallbacks'

Expand Down Expand Up @@ -37,7 +37,7 @@ export interface FormBuilderProps
onFieldGroupSelect: (path: Path, groupName: string) => void
onSetFieldSetCollapsed: (path: Path, collapsed: boolean) => void
onSetPathCollapsed: (path: Path, collapsed: boolean) => void
presence: FormFieldPresence[]
presence: FormNodePresence[]
readOnly?: boolean
schemaType: ObjectSchemaType
validation: ValidationMarker[]
Expand Down
4 changes: 2 additions & 2 deletions packages/sanity/src/core/form/studio/FormProvider.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import {ObjectSchemaType, Path, ValidationMarker} from '@sanity/types'
import React from 'react'
import {FormFieldPresence} from '../../presence'
import {FormNodePresence} from '../../presence'
import {useSource} from '../../studio'
import {PatchChannel, PatchEvent} from '../patch'
import {FormBuilderProvider} from '../FormBuilderProvider'
Expand Down Expand Up @@ -34,7 +34,7 @@ export interface FormProviderProps {
onFieldGroupSelect: (path: Path, groupName: string) => void
onSetPathCollapsed: (path: Path, collapsed: boolean) => void
onSetFieldSetCollapsed: (path: Path, collapsed: boolean) => void
presence: FormFieldPresence[]
presence: FormNodePresence[]
readOnly?: boolean
schemaType: ObjectSchemaType
validation: ValidationMarker[]
Expand Down
13 changes: 5 additions & 8 deletions packages/sanity/src/core/form/studio/contexts/Presence.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,28 +2,25 @@
import React, {useContext, createContext, useMemo} from 'react'
import {Path} from '@sanity/types'
import {startsWith} from '@sanity/util/paths'
import {FormFieldPresence} from '../../../presence'
import {FormNodePresence} from '../../../presence'

const PresenceContext = createContext<FormFieldPresence[]>([])
const PresenceContext = createContext<FormNodePresence[]>([])

export function PresenceProvider(props: {
presence: FormFieldPresence[]
children: React.ReactNode
}) {
export function PresenceProvider(props: {presence: FormNodePresence[]; children: React.ReactNode}) {
return (
<PresenceContext.Provider value={props.presence}>{props.children}</PresenceContext.Provider>
)
}

export function useFormFieldPresence(): FormFieldPresence[] {
export function useFormFieldPresence(): FormNodePresence[] {
const ctx = useContext(PresenceContext)
if (!ctx) {
throw new Error('Form context not provided')
}
return ctx
}

export function useChildPresence(path: Path): FormFieldPresence[] {
export function useChildPresence(path: Path): FormNodePresence[] {
const presence = useFormFieldPresence()
return useMemo(() => presence.filter((item) => startsWith(path, item.path)), [path, presence])
}
4 changes: 2 additions & 2 deletions packages/sanity/src/core/form/types/fieldProps.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import {
SchemaType,
StringSchemaType,
} from '@sanity/types'
import {FormFieldPresence} from '../../presence'
import {FormNodePresence} from '../../presence'
import {
ArrayOfObjectsInputProps,
ArrayOfPrimitivesInputProps,
Expand All @@ -24,7 +24,7 @@ export interface BaseFieldProps {
title: string | undefined
description: string | undefined
/** @beta */
presence: FormFieldPresence[]
presence: FormNodePresence[]
validation: FormNodeValidation[]
level: number
inputId: string
Expand Down
4 changes: 2 additions & 2 deletions packages/sanity/src/core/form/types/itemProps.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import {
StringSchemaType,
} from '@sanity/types'
import React from 'react'
import {FormFieldPresence} from '../../presence'
import {FormNodePresence} from '../../presence'

/** @public */
export interface BaseItemProps {
Expand Down Expand Up @@ -37,7 +37,7 @@ export interface BaseItemProps {
validation: FormNodeValidation[]

/** @beta */
presence: FormFieldPresence[]
presence: FormNodePresence[]
}

/** @public */
Expand Down
6 changes: 3 additions & 3 deletions packages/sanity/src/core/presence/FieldPresence.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@ import {FlexWrapper, InnerBox} from './FieldPresence.styled'
import {FormFieldPresenceContext} from './context'
import {PresenceTooltip} from './PresenceTooltip'
import {useReporter} from './overlay/tracker'
import {FormFieldPresence} from './types'
import {FormNodePresence} from './types'

/** @internal */
export interface FieldPresenceProps {
presence: FormFieldPresence[]
presence: FormNodePresence[]
maxAvatars: number
}

Expand Down Expand Up @@ -61,7 +61,7 @@ export function FieldPresenceWithoutOverlay(props: FieldPresenceProps) {
/** @internal */
export interface FieldPresenceInnerProps {
maxAvatars?: number
presence: FormFieldPresence[]
presence: FormNodePresence[]
stack?: boolean
position?: AvatarPosition
animateArrowFrom?: AvatarPosition
Expand Down
4 changes: 2 additions & 2 deletions packages/sanity/src/core/presence/PresenceTooltip.tsx
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import React, {useMemo} from 'react'
import {Flex, Stack, Text, Tooltip} from '@sanity/ui'
import {UserAvatar} from '../components/UserAvatar'
import {FormFieldPresence} from './types'
import {FormNodePresence} from './types'

interface PresenceTooltipProps {
children?: React.ReactElement
items: FormFieldPresence[]
items: FormNodePresence[]
}

/**
Expand Down
4 changes: 2 additions & 2 deletions packages/sanity/src/core/presence/context.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import React from 'react'
import {FormFieldPresence} from './types'
import {FormNodePresence} from './types'

/** @internal */
export const FormFieldPresenceContext = React.createContext<FormFieldPresence[]>([])
export const FormFieldPresenceContext = React.createContext<FormNodePresence[]>([])
4 changes: 2 additions & 2 deletions packages/sanity/src/core/presence/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ export type RegionWithIntersectionDetails = {
/** @internal */
export type FieldPresenceData = {
element: HTMLElement
presence: FormFieldPresence[]
presence: FormNodePresence[]
maxAvatars: number
}

Expand All @@ -39,7 +39,7 @@ export interface Location {
}

/** @beta */
export interface FormFieldPresence {
export interface FormNodePresence {
user: User
path: Path
sessionId: string
Expand Down
4 changes: 2 additions & 2 deletions packages/sanity/test/form/renderInput.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import React, {FocusEvent} from 'react'
import {
EMPTY_ARRAY,
FieldMember,
FormFieldPresence,
FormNodePresence,
FormProvider,
FormState,
PatchArg,
Expand Down Expand Up @@ -40,7 +40,7 @@ export interface TestRenderInputProps<ElementProps> {
onPathBlur: (path: Path) => void
onPathFocus: (path: Path) => void
path: Path
presence: FormFieldPresence[]
presence: FormNodePresence[]
readOnly: boolean | undefined
schemaType: SchemaType
validation: FormNodeValidation[]
Expand Down
4 changes: 2 additions & 2 deletions packages/sanity/test/form/types.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import {Path, ValidationMarker} from '@sanity/types'
import {FormFieldPresence} from '../../src/core'
import {FormNodePresence} from '../../src/core'

export interface TestRenderProps {
documentValue?: Record<string, unknown>
focusPath?: Path
openPath?: Path
presence?: FormFieldPresence[]
presence?: FormNodePresence[]
validation?: ValidationMarker[]
}

0 comments on commit 9111c44

Please sign in to comment.