@@ -4,17 +4,16 @@ import { DateTime } from "luxon";
44import { FC , createElement } from "react" ;
55import { useTranslation } from "react-i18next" ;
66import ReactLinkify from "react-linkify" ;
7- import CreatableSelect from "react-select/creatable" ;
87
98import { castScalarToModelValue , serializeModelValueToScalar } from "../../core/graph/fieldModel" ;
10- import { Option , optionize } from "../../utils/select" ;
119import { DEFAULT_LINKIFY_PROPS } from "../../utils/url" ;
10+ import { BaseOption , CreatableSelect , optionize } from "../forms/Select" ;
1211
1312/**
1413 * Render values:
1514 * **************
1615 */
17- export const RenderValue : {
16+ export const AttributeRenderers : {
1817 [ K in keyof FieldModelAbstraction ] : FC <
1918 {
2019 value ?: FieldModelAbstraction [ K ] [ "expectedOutput" ] ;
@@ -40,14 +39,14 @@ export const RenderValue: {
4039 ) : null ,
4140 date : ( { value, format } ) => ( ! isNil ( value ) ? value . toFormat ( format ) : null ) ,
4241} ;
43- export const RenderText = RenderValue . text ;
44- export const RenderNumber = RenderValue . number ;
45- export const RenderCategory = RenderValue . category ;
46- export const RenderKeywords = RenderValue . keywords ;
47- export const RenderDate = RenderValue . date ;
42+ export const RenderText = AttributeRenderers . text ;
43+ export const RenderNumber = AttributeRenderers . number ;
44+ export const RenderCategory = AttributeRenderers . category ;
45+ export const RenderKeywords = AttributeRenderers . keywords ;
46+ export const RenderDate = AttributeRenderers . date ;
4847
4948export const RenderItemAttribute : FC < { field : FieldModelTypeSpec ; value : Scalar } > = ( { field, value } ) =>
50- createElement ( RenderValue [ field . type ] as FC < { value ?: ModelValueType } > , {
49+ createElement ( AttributeRenderers [ field . type ] as FC < { value ?: ModelValueType } > , {
5150 ...field ,
5251 value : castScalarToModelValue ( value , field ) ,
5352 } ) ;
@@ -56,7 +55,7 @@ export const RenderItemAttribute: FC<{ field: FieldModelTypeSpec; value: Scalar
5655 * Edit values:
5756 * ************
5857 */
59- export const EditValue : {
58+ export const AttributeEditors : {
6059 [ K in keyof FieldModelAbstraction ] : FC <
6160 {
6261 value ?: FieldModelAbstraction [ K ] [ "expectedOutput" ] ;
@@ -65,23 +64,34 @@ export const EditValue: {
6564 > ;
6665} = {
6766 text : ( { value, onChange } ) => (
68- < input type = "string" value = { value || "" } onChange = { ( e ) => onChange ( e . target . value || undefined ) } />
67+ < input
68+ className = "form-control"
69+ type = "string"
70+ value = { value || "" }
71+ onChange = { ( e ) => onChange ( e . target . value || undefined ) }
72+ />
6973 ) ,
7074 number : ( { value, onChange } ) => (
71- < input type = "number" value = { value || "" } onChange = { ( e ) => onChange ( e . target . value ? + e . target . value : undefined ) } />
75+ < input
76+ className = "form-control"
77+ type = "number"
78+ value = { value || "" }
79+ onChange = { ( e ) => onChange ( e . target . value ? + e . target . value : undefined ) }
80+ />
7281 ) ,
7382 category : ( { value, onChange } ) => {
74- console . log ( { value } ) ;
7583 return (
76- < CreatableSelect < Option >
84+ < CreatableSelect < BaseOption >
85+ menuPosition = "absolute"
7786 value = { ! isNil ( value ) ? optionize ( value ) : undefined }
7887 onChange = { ( newValue ) => onChange ( newValue ?. value ) }
7988 />
8089 ) ;
8190 } ,
8291 keywords : ( { value, onChange } ) => {
8392 return (
84- < CreatableSelect < Option , true >
93+ < CreatableSelect < BaseOption , true >
94+ menuPosition = "absolute"
8595 isMulti
8696 value = { value ?. map ( optionize ) }
8797 onChange = { ( newValue ) => onChange ( newValue . length ? newValue . map ( ( o ) => o . value ) : undefined ) }
@@ -90,6 +100,7 @@ export const EditValue: {
90100 } ,
91101 date : ( { value, onChange } ) => (
92102 < input
103+ className = "form-control"
93104 type = "datetime-local"
94105 value = { value ?. toFormat ( "yyyy-MM-dd'T'HH:mm" ) ?? "" }
95106 onChange = { ( e ) => {
@@ -99,18 +110,18 @@ export const EditValue: {
99110 />
100111 ) ,
101112} ;
102- export const EditText = EditValue . text ;
103- export const EditNumber = EditValue . number ;
104- export const EditCategory = EditValue . category ;
105- export const EditKeywords = EditValue . keywords ;
106- export const EditDate = EditValue . date ;
113+ export const EditText = AttributeEditors . text ;
114+ export const EditNumber = AttributeEditors . number ;
115+ export const EditCategory = AttributeEditors . category ;
116+ export const EditKeywords = AttributeEditors . keywords ;
117+ export const EditDate = AttributeEditors . date ;
107118
108119export const EditItemAttribute : FC < { field : FieldModelTypeSpec ; value : Scalar ; onChange : ( value : Scalar ) => void } > = ( {
109120 field,
110121 value,
111122 onChange,
112123} ) => {
113- const EditComponent = EditValue [ field . type ] as FC < {
124+ const EditComponent = AttributeEditors [ field . type ] as FC < {
114125 value ?: ModelValueType ;
115126 onChange : ( value ?: ModelValueType ) => void ;
116127 } > ;
0 commit comments