go.charczuk.com@v0.0.0-20240327042549-bc490516bd1a/projects/nodes/static/_nextjs/src/components/editValue.tsx (about) 1 /** 2 * Copyright (c) 2024 - Present. Will Charczuk. All rights reserved. 3 * Use of this source code is governed by a MIT license that can be found in the LICENSE file at the root of the repository. 4 */ 5 import { FormGroup, HTMLSelect, TextArea, InputGroup, NumericInput } from "@blueprintjs/core"; 6 import * as api from "../api/nodes"; 7 import { valueScalarNumberTypes } from "../refdata/nodeTypes"; 8 9 export interface EditValueProps { 10 value?: api.NativeValueType; 11 valueType?: string; 12 tabIndex?: number; 13 onValueChanged: (v: api.NativeValueType) => void; 14 } 15 16 const numbers = new Set(valueScalarNumberTypes) 17 18 export function EditValue({ tabIndex, value, valueType, onValueChanged }: EditValueProps) { 19 const onChange = (e: any) => { 20 onValueChanged(e.target.value); 21 } 22 const valueTypeOrDefault = valueType || 'string'; 23 return ( 24 <FormGroup label="Value" labelInfo="(required)" labelFor="value-input" inline={true}> 25 {valueTypeOrDefault === 'bool' && (<HTMLSelect tabIndex={tabIndex} id="value-input" name="value" options={['true', 'false']} value={String(value)} onChange={onChange} fill={true} />)} 26 {numbers.has(valueTypeOrDefault) && (<NumericInput tabIndex={tabIndex} id="value-input" name="value" value={value !== undefined ? Number(value) : 0} onChange={onChange} fill={true} allowNumericCharactersOnly={true} />)} 27 {valueTypeOrDefault !== 'bool' && !numbers.has(valueTypeOrDefault) && (<TextArea tabIndex={tabIndex} id="value-input" name="value" value={value === undefined ? '' : String(value)} onChange={onChange} placeholder="Please enter a value ..." fill={true} autoResize={true} />)} 28 </FormGroup> 29 ) 30 }