sanity-plugin-computed-field
Version:
Sanity plugin that computes a field's value based on other fields or relationships with its document or external data. In other words, this field memoizes a value in a document using GROQ to lookup and custom javascript to compute the value from those GRO
111 lines (85 loc) • 3.35 kB
text/typescript
import {BooleanDefinition} from 'sanity'
import {BooleanInputProps} from 'sanity'
import {BooleanOptions} from 'sanity'
import {BooleanSchemaType} from 'sanity'
import {NumberDefinition} from 'sanity'
import {NumberInputProps} from 'sanity'
import {NumberOptions} from 'sanity'
import {NumberSchemaType} from 'sanity'
import {Plugin as Plugin_2} from 'sanity'
import {default as React_2} from 'react'
import {StringDefinition} from 'sanity'
import {StringInputProps} from 'sanity'
import {TextDefinition} from 'sanity'
import {TextOptions} from 'sanity'
import {TextSchemaType} from 'sanity'
export declare interface ComputedBooleanDefinition
extends Omit<BooleanDefinition, 'type' | 'options'> {
type: 'computedBoolean'
options: ComputedBooleanOptions
}
export declare const ComputedBooleanInput: React_2.FC<ComputedBooleanInputProps>
export declare type ComputedBooleanInputProps = BooleanInputProps<ComputedBooleanSchemaType>
declare type ComputedBooleanOptions = ComputedFieldOptions<boolean> & BooleanOptions
export declare const computedBooleanSchema: {
type: 'boolean'
name: 'computedBoolean'
} & Omit<BooleanDefinition, 'preview'>
declare interface ComputedBooleanSchemaType extends Omit<BooleanSchemaType, 'options'> {
options: ComputedBooleanOptions
}
declare type ComputedFieldOptions<FieldType> = {
buttonText?: string
documentQuerySelection: string
reduceQueryResult: (queryResult: ComputedQueryResult) => FieldType | Promise<FieldType>
}
declare interface ComputedFieldPluginConfig {}
export declare interface ComputedNumberDefinition
extends Omit<NumberDefinition, 'type' | 'options'> {
type: 'computedNumber'
options: ComputedNumberOptions
}
export declare const ComputedNumberInput: React_2.FC<ComputedNumberInputProps>
export declare type ComputedNumberInputProps = NumberInputProps<ComputedNumberSchemaType>
/**
* @public
*/
declare type ComputedNumberOptions = ComputedFieldOptions<number> & NumberOptions
export declare const computedNumberSchema: {
type: 'number'
name: 'computedNumber'
} & Omit<NumberDefinition, 'preview'>
declare interface ComputedNumberSchemaType extends Omit<NumberSchemaType, 'options'> {
options: ComputedNumberOptions
}
declare type ComputedQueryResult = {
draft?: any
published: any
}
export declare const computedStringSchema: {
type: 'string'
name: 'computedString'
} & Omit<StringDefinition, 'preview'>
export declare interface ComputedTextDefinition extends Omit<TextDefinition, 'type' | 'options'> {
type: 'computedText'
options: ComputedTextOptions
}
export declare const ComputedTextInput: React_2.FC<ComputedTextInputProps>
export declare type ComputedTextInputProps = StringInputProps<ComputedTextSchemaType>
declare type ComputedTextOptions = ComputedFieldOptions<string> & TextOptions
export declare const computedTextSchema: {
type: 'text'
name: 'computedText'
} & Omit<TextDefinition, 'preview'>
declare interface ComputedTextSchemaType extends Omit<TextSchemaType, 'options'> {
options: ComputedTextOptions
}
export declare const sanityComputedField: Plugin_2<void | ComputedFieldPluginConfig>
export {}
declare module '@sanity/types' {
interface IntrinsicDefinitions {
computedBoolean: ComputedBooleanDefinition
computedText: ComputedTextDefinition
computedNumber: ComputedNumberDefinition
}
}