/** @jsxRuntime classic */ /** @jsx jsx */ import { jsx } from '@keystone-ui/core' import { FieldContainer, FieldLabel, TextInput } from '@keystone-ui/fields' import type { CardValueComponent, CellComponent, FieldController, FieldControllerConfig, IdFieldConfig, } from '../../types' import { CellLink, CellContainer } from '../../admin-ui/components' export function Field () { return null } export const Cell: CellComponent = ({ item, field, linkTo }) => { const value = item[field.path] + '' return linkTo ? {value} : {value} } Cell.supportsLinkTo = true export const CardValue: CardValueComponent = ({ item, field }) => { return ( {field.label} {item[field.path]} ) } export function controller ( config: FieldControllerConfig ): FieldController { return { path: config.path, label: config.label, description: config.description, graphqlSelection: config.path, defaultValue: undefined, deserialize: () => {}, serialize: () => ({}), filter: { Filter (props) { return ( { props.onChange(event.target.value) }} value={props.value} autoFocus={props.autoFocus} /> ) }, graphql: ({ type, value }) => { if (type === 'not') { return { [config.path]: { not: { equals: value } } } } const valueWithoutWhitespace = value.replace(/\s/g, '') const key = type === 'is' ? 'equals' : type === 'not_in' ? 'notIn' : type return { [config.path]: { [key]: ['in', 'not_in'].includes(type) ? valueWithoutWhitespace.split(',') : valueWithoutWhitespace, }, } }, Label ({ label, value, type }) { let renderedValue = value.replace(/\s/g, '') if (['in', 'not_in'].includes(type)) { renderedValue = value.split(',').join(', ') } return `${label.toLowerCase()}: ${renderedValue}` }, types: { is: { label: 'Is exactly', initialValue: '' }, not: { label: 'Is not exactly', initialValue: '' }, gt: { label: 'Is greater than', initialValue: '' }, lt: { label: 'Is less than', initialValue: '' }, gte: { label: 'Is greater than or equal to', initialValue: '' }, lte: { label: 'Is less than or equal to', initialValue: '' }, in: { label: 'Is one of', initialValue: '' }, not_in: { label: 'Is not one of', initialValue: '' }, }, }, } }