@vertigis/workflow 5.35.1 → 5.36.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Hooks.d.ts +3 -3
- package/IActivityHandler.d.ts +1 -6
- package/activities/arcgis/AddAttachment.d.ts +2 -2
- package/activities/arcgis/AddAttachment.js +1 -1
- package/activities/arcgis/AddFeatures.d.ts +3 -3
- package/activities/arcgis/AddFeatures.js +1 -1
- package/activities/arcgis/AddGraphics.d.ts +2 -2
- package/activities/arcgis/AddGraphics.js +1 -1
- package/activities/arcgis/ArcadeScript.d.ts +2 -2
- package/activities/arcgis/ArcadeScript.js +1 -1
- package/activities/arcgis/AreaEngineTask.d.ts +2 -2
- package/activities/arcgis/AreaEngineTask.js +1 -1
- package/activities/arcgis/BufferEngineTask.d.ts +2 -2
- package/activities/arcgis/BufferEngineTask.js +1 -1
- package/activities/arcgis/ClearGraphics.d.ts +1 -1
- package/activities/arcgis/ClearGraphics.js +1 -1
- package/activities/arcgis/ClipEngineTask.d.ts +2 -2
- package/activities/arcgis/ClipEngineTask.js +1 -1
- package/activities/arcgis/CompareGeometries.d.ts +2 -2
- package/activities/arcgis/CompareGeometries.js +1 -1
- package/activities/arcgis/CutEngineTask.d.ts +2 -2
- package/activities/arcgis/CutEngineTask.js +1 -1
- package/activities/arcgis/DeleteAttachments.d.ts +2 -2
- package/activities/arcgis/DeleteAttachments.js +1 -1
- package/activities/arcgis/DeleteFeatures.d.ts +3 -3
- package/activities/arcgis/DeleteFeatures.js +1 -1
- package/activities/arcgis/DensifyEngineTask.d.ts +2 -2
- package/activities/arcgis/DensifyEngineTask.js +1 -1
- package/activities/arcgis/DifferenceEngineTask.d.ts +2 -2
- package/activities/arcgis/DifferenceEngineTask.js +1 -1
- package/activities/arcgis/DistanceEngineTask.d.ts +2 -2
- package/activities/arcgis/DistanceEngineTask.js +1 -1
- package/activities/arcgis/ExtendedSpatialReferenceInfoEngineTask.d.ts +1 -1
- package/activities/arcgis/FlipEngineTask.d.ts +2 -2
- package/activities/arcgis/FlipEngineTask.js +1 -1
- package/activities/arcgis/GeneralizeEngineTask.d.ts +2 -2
- package/activities/arcgis/GeneralizeEngineTask.js +1 -1
- package/activities/arcgis/Geocode.d.ts +2 -2
- package/activities/arcgis/Geocode.js +1 -1
- package/activities/arcgis/GeoprocessingAsync.js +1 -1
- package/activities/arcgis/GetCodedValueDomain.d.ts +4 -4
- package/activities/arcgis/GetCodedValueDomain.js +1 -1
- package/activities/arcgis/GetFeatureLayerInfo.d.ts +2 -2
- package/activities/arcgis/GetFeatureLayerInfo.js +1 -1
- package/activities/arcgis/GetGraphics.d.ts +2 -2
- package/activities/arcgis/GetGraphics.js +1 -1
- package/activities/arcgis/GetLayer.d.ts +2 -2
- package/activities/arcgis/GetLayer.js +1 -1
- package/activities/arcgis/GetLayerDefinitionExpression.d.ts +2 -2
- package/activities/arcgis/GetLayerDefinitionExpression.js +1 -1
- package/activities/arcgis/GetLayerProperty.d.ts +2 -2
- package/activities/arcgis/GetLayerProperty.js +1 -1
- package/activities/arcgis/GetLayerVisibility.d.ts +2 -2
- package/activities/arcgis/GetLayerVisibility.js +1 -1
- package/activities/arcgis/GetMap.d.ts +2 -2
- package/activities/arcgis/GetMap.js +1 -1
- package/activities/arcgis/GetMapScreenshot.d.ts +1 -1
- package/activities/arcgis/GetTable.d.ts +2 -2
- package/activities/arcgis/GetTable.js +1 -1
- package/activities/arcgis/GetViewExtent.d.ts +2 -2
- package/activities/arcgis/GetViewExtent.js +1 -1
- package/activities/arcgis/GetViewpoint.d.ts +2 -2
- package/activities/arcgis/GetViewpoint.js +1 -1
- package/activities/arcgis/IntersectEngineTask.d.ts +2 -2
- package/activities/arcgis/IntersectEngineTask.js +1 -1
- package/activities/arcgis/LengthEngineTask.d.ts +2 -2
- package/activities/arcgis/LengthEngineTask.js +1 -1
- package/activities/arcgis/MapProvider.js +1 -1
- package/activities/arcgis/NearestVertexEngineTask.d.ts +2 -2
- package/activities/arcgis/NearestVertexEngineTask.js +1 -1
- package/activities/arcgis/NearestVerticesEngineTask.d.ts +2 -2
- package/activities/arcgis/NearestVerticesEngineTask.js +1 -1
- package/activities/arcgis/OffsetEngineTask.d.ts +2 -2
- package/activities/arcgis/OffsetEngineTask.js +1 -1
- package/activities/arcgis/QueryAttachmentInfos.d.ts +2 -2
- package/activities/arcgis/QueryAttachmentInfos.js +1 -1
- package/activities/arcgis/QueryTask.js +1 -1
- package/activities/arcgis/RelateEngineTask.d.ts +2 -2
- package/activities/arcgis/RelateEngineTask.js +1 -1
- package/activities/arcgis/RemoveGraphics.d.ts +2 -2
- package/activities/arcgis/RemoveGraphics.js +1 -1
- package/activities/arcgis/RemoveLayer.d.ts +2 -2
- package/activities/arcgis/RemoveLayer.js +1 -1
- package/activities/arcgis/RotateEngineTask.d.ts +2 -2
- package/activities/arcgis/RotateEngineTask.js +1 -1
- package/activities/arcgis/SetFeaturePopup.d.ts +1 -1
- package/activities/arcgis/SetImageryLayerOptions.d.ts +2 -2
- package/activities/arcgis/SetImageryLayerOptions.js +1 -1
- package/activities/arcgis/SetLayerDefinitionExpression.d.ts +2 -2
- package/activities/arcgis/SetLayerDefinitionExpression.js +1 -1
- package/activities/arcgis/SetLayerPopup.d.ts +2 -2
- package/activities/arcgis/SetLayerPopup.js +1 -1
- package/activities/arcgis/SetLayerProperty.d.ts +2 -2
- package/activities/arcgis/SetLayerProperty.js +1 -1
- package/activities/arcgis/SetLayerVisibility.d.ts +2 -2
- package/activities/arcgis/SetLayerVisibility.js +1 -1
- package/activities/arcgis/SetViewExtent.d.ts +2 -2
- package/activities/arcgis/SetViewExtent.js +1 -1
- package/activities/arcgis/SetViewpoint.d.ts +2 -2
- package/activities/arcgis/SetViewpoint.js +1 -1
- package/activities/arcgis/ShowFeaturePopup.d.ts +2 -2
- package/activities/arcgis/ShowFeaturePopup.js +1 -1
- package/activities/arcgis/ShowResults.d.ts +2 -2
- package/activities/arcgis/SimplifyEngineTask.d.ts +2 -2
- package/activities/arcgis/SimplifyEngineTask.js +1 -1
- package/activities/arcgis/UnionEngineTask.d.ts +2 -2
- package/activities/arcgis/UnionEngineTask.js +1 -1
- package/activities/arcgis/UpdateAttachment.d.ts +2 -2
- package/activities/arcgis/UpdateAttachment.js +1 -1
- package/activities/arcgis/UpdateFeatures.d.ts +3 -3
- package/activities/arcgis/UpdateFeatures.js +1 -1
- package/activities/arcgis/libs/arcGisRestApi.d.ts +1 -8
- package/activities/arcgis/tools.d.ts +0 -9
- package/activities/arcgis/tools.js +1 -1
- package/activities/core/WebRequest.js +1 -1
- package/activities/essentials/RunEssentialsWorkflow.d.ts +1 -1
- package/activities/essentials/RunEssentialsWorkflow.js +1 -1
- package/activities/forms/ActivateFormElement.d.ts +2 -2
- package/activities/forms/ActivateFormElement.js +1 -1
- package/activities/forms/AddFormElement.d.ts +3 -3
- package/activities/forms/ClearFormElementError.d.ts +2 -2
- package/activities/forms/ClearFormElementError.js +1 -1
- package/activities/forms/DisplayForm.d.ts +2 -2
- package/activities/forms/DisplayForm.js +1 -1
- package/activities/forms/FormRenderer.d.ts +35 -29
- package/activities/forms/FormRenderer.js +1 -1
- package/activities/forms/HideFormElement.d.ts +2 -2
- package/activities/forms/HideFormElement.js +1 -1
- package/activities/forms/SetCurrentFormElementItem.d.ts +2 -2
- package/activities/forms/SetCurrentFormElementItem.js +1 -1
- package/activities/forms/SetFormElementError.d.ts +2 -2
- package/activities/forms/SetFormElementError.js +1 -1
- package/activities/forms/SetFormElementEvent.d.ts +2 -2
- package/activities/forms/SetFormElementItemProperty.d.ts +2 -2
- package/activities/forms/SetFormElementItemProperty.js +1 -1
- package/activities/forms/SetFormElementItems.d.ts +2 -2
- package/activities/forms/SetFormElementItems.js +1 -1
- package/activities/forms/SetFormElementProperty.d.ts +2 -2
- package/activities/forms/SetFormElementProperty.js +1 -1
- package/activities/forms/ShowFormElement.d.ts +2 -2
- package/activities/forms/ShowFormElement.js +1 -1
- package/execution/ActivityLoader.js +1 -1
- package/execution/Engine.js +1 -1
- package/execution/ModuleLoader.js +1 -1
- package/execution/ProgramRunner.js +1 -1
- package/forms/FormComponent.d.ts +18 -1
- package/forms/FormComponent.js +1 -1
- package/forms/FormDefinition.d.ts +1 -6
- package/forms/FormHost.d.ts +0 -2
- package/forms/FormHost.js +1 -1
- package/forms/FormPresenterHost.d.ts +0 -2
- package/forms/NumberParser.d.ts +1 -0
- package/forms/NumberParser.js +1 -1
- package/forms/common.d.ts +2 -2
- package/forms/common.js +1 -1
- package/forms/components/AutoComplete.d.ts +3 -2
- package/forms/components/AutoComplete.js +1 -1
- package/forms/components/ButtonBar.d.ts +3 -8
- package/forms/components/ButtonBar.js +1 -1
- package/forms/components/CheckBox.d.ts +2 -2
- package/forms/components/CheckBox.js +1 -1
- package/forms/components/CheckGroup.d.ts +3 -2
- package/forms/components/CheckGroup.js +1 -1
- package/forms/components/Custom.d.ts +2 -2
- package/forms/components/Custom.js +1 -1
- package/forms/components/DatePicker.d.ts +3 -2
- package/forms/components/DatePicker.js +1 -1
- package/forms/components/DateRangePicker.d.ts +3 -2
- package/forms/components/DateRangePicker.js +1 -1
- package/forms/components/DateTimePicker.d.ts +3 -2
- package/forms/components/DateTimePicker.js +1 -1
- package/forms/components/DropDownList.js +1 -1
- package/forms/components/FilePicker.js +1 -1
- package/forms/components/Form.js +1 -1
- package/forms/components/FormLabelNumberField.d.ts +3 -1
- package/forms/components/FormLabelNumberField.js +1 -1
- package/forms/components/GeometryPicker.js +1 -1
- package/forms/components/HorizontalRule.d.ts +2 -2
- package/forms/components/Image.d.ts +2 -2
- package/forms/components/Image.js +1 -1
- package/forms/components/ItemPicker.js +1 -1
- package/forms/components/ListBox.d.ts +3 -2
- package/forms/components/ListBox.js +1 -1
- package/forms/components/Markdown.d.ts +3 -4
- package/forms/components/Markdown.js +1 -1
- package/forms/components/Number.d.ts +3 -2
- package/forms/components/Number.js +1 -1
- package/forms/components/NumberRangeSlider.d.ts +2 -2
- package/forms/components/NumberRangeSlider.js +1 -1
- package/forms/components/NumberSlider.d.ts +3 -2
- package/forms/components/NumberSlider.js +1 -1
- package/forms/components/RadioGroup.d.ts +3 -2
- package/forms/components/RadioGroup.js +1 -1
- package/forms/components/Scanner.js +1 -1
- package/forms/components/Section.js +1 -1
- package/forms/components/Signature.js +1 -1
- package/forms/components/SignatureDialog.js +1 -1
- package/forms/components/Text.d.ts +2 -2
- package/forms/components/TextArea.d.ts +2 -2
- package/forms/components/TextArea.js +1 -1
- package/forms/components/TextBox.d.ts +2 -16
- package/forms/components/TextBox.js +1 -1
- package/forms/components/TimePicker.d.ts +3 -2
- package/forms/components/TimePicker.js +1 -1
- package/forms/dateUtilities.d.ts +4 -18
- package/forms/dateUtilities.js +1 -1
- package/forms/index.d.ts +48 -12
- package/forms/listUtilities.d.ts +3 -0
- package/forms/listUtilities.js +1 -0
- package/forms/manifest.d.ts +3 -0
- package/forms/manifest.js +1 -0
- package/forms/numberUtilities.d.ts +40 -3
- package/forms/numberUtilities.js +1 -1
- package/forms/presenter.js +1 -1
- package/forms/renderers.js +1 -1
- package/forms/utils.d.ts +35 -21
- package/forms/utils.js +1 -1
- package/libs/version.d.ts +1 -1
- package/libs/version.js +1 -1
- package/package.json +2 -2
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import {
|
|
2
|
+
import { FormElementProps } from "../..";
|
|
3
|
+
import { defs } from "../FormHost";
|
|
3
4
|
/**
|
|
4
5
|
* The component for the "Date Time Picker" Form Element.
|
|
5
6
|
*/
|
|
6
|
-
declare const DateTimePicker: ({ className, component, element }:
|
|
7
|
+
declare const DateTimePicker: ({ className, component, deriveLocale, element, enabled, error, name, prompt, renderFocus, renderText, tooltip: elementTooltip, value: elementValue, setProperty, setValue: setElementValue, }: FormElementProps<defs.DateTimeRef | undefined>) => JSX.Element;
|
|
7
8
|
export default DateTimePicker;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{buttonBaseClasses}from"@vertigis/react-ui/ButtonBase";import{clockClasses}from"@vertigis/react-ui/ClockPicker";import BaseDateTimePicker from"@vertigis/react-ui/DateTimePicker";import FormHelperText from"@vertigis/react-ui/FormHelperText";import FormLabelTextField from"@vertigis/react-ui/FormLabelTextField";import{styled}from"@vertigis/react-ui/styles";import clsx from"clsx";import*as React from"react";import{useEffect,useRef,useState}from"react";import{Calendar}from"../Calendar.js";import FormElement from"../FormElement.js";import{useFocusCallback}from"../common.js";import{hasErrorChanged,isInvalidDate,
|
|
1
|
+
import{buttonBaseClasses}from"@vertigis/react-ui/ButtonBase";import{clockClasses}from"@vertigis/react-ui/ClockPicker";import BaseDateTimePicker from"@vertigis/react-ui/DateTimePicker";import FormHelperText from"@vertigis/react-ui/FormHelperText";import FormLabelTextField from"@vertigis/react-ui/FormLabelTextField";import{styled}from"@vertigis/react-ui/styles";import clsx from"clsx";import*as React from"react";import{useEffect,useRef,useState}from"react";import{Calendar}from"../Calendar.js";import FormElement from"../FormElement.js";import{useFocusCallback}from"../common.js";import{areValuesEqual,getNewElementValue,hasErrorChanged,isInvalidDate,makeProperValue}from"../dateUtilities.js";import{makeUniqueId}from"../utils.js";const StylableDateTimePicker=e=>{const{PopperProps:t={},className:r,...a}=e;return React.createElement(BaseDateTimePicker,{PopperProps:{...t,className:clsx(t.className,r)},...a})},StyledDateTimePicker=styled(StylableDateTimePicker)(({theme:{palette:e}})=>({[`& .${clockClasses.amButton}, .${clockClasses.pmButton}`]:{[`&.${buttonBaseClasses.focusVisible}`]:{color:e.action.active}}})),DateTimePicker=({className:e,component:t,deriveLocale:r,element:a,enabled:o,error:l,name:s,prompt:i,renderFocus:m,renderText:c,tooltip:n,value:u,setProperty:p,setValue:d})=>{const[f,k]=useState(!1),[P,E]=useState(!1),[v,F]=useState(null),T=useRef(),C=useRef(!0);m=useFocusCallback(o,s,m);const b=c(n),g={locale:r(),timezone:(new Intl.DateTimeFormat).resolvedOptions().timeZone},D=Calendar.useNative(),x="datetime";useEffect(()=>{var e=makeProperValue(u,D),t=getNewElementValue(e,x,g,D);areValuesEqual(u,t)||d(t,!1),F(e||null)},[u]),useEffect(()=>{var e;C.current?C.current=!1:P||f||(isInvalidDate(v)?R({status:"invalid"}):(R(),e=getNewElementValue(v,x,g,D),areValuesEqual(u,e)||d(e)))},[P,f]);const R=e=>{hasErrorChanged(l,e)&&p("error",e)},V=`${makeUniqueId(s)}-input`,h=c(i);return React.createElement(FormElement,{className:e,component:t,element:a,inputId:V},l&&React.createElement(FormHelperText,{component:"div",error:!0,role:"alert"},T.current),React.createElement(StyledDateTimePicker,{disabled:!o,key:"date-picker",inputRef:m,onChange:e=>{F(e)},onOpen:()=>{E(!0)},onClose:()=>{E(!1)},renderInput:e=>(T.current=e.inputProps?.placeholder,e.error=!!l,e.inputProps={...e.inputProps,id:V,onBlur:()=>{k(!1)},onFocus:()=>{k(!0)},placeholder:h||e.inputProps?.placeholder,title:b},React.createElement(FormLabelTextField,{...e})),value:v}))};export default DateTimePicker;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import NativeSelect from"@vertigis/react-ui/NativeSelect";import*as React from"react";import FormElement from"../FormElement.js";import{renderFocus}from"../common.js";import{makeSafeClassName,makeUniqueId,
|
|
1
|
+
import NativeSelect from"@vertigis/react-ui/NativeSelect";import*as React from"react";import FormElement from"../FormElement.js";import{renderFocus}from"../common.js";import{makeSafeClassName,makeUniqueId,inspectItems}from"../utils.js";const DEFAULT_VALUE="__default",DropDownList=({className:e,component:a,element:r})=>{const{host:n,name:l}=a.props;var t=`${makeUniqueId(l)}-input`,o=inspectItems(r.current,r.items,r.value);const m=o.items;r.current=o.current,r.label=o.label,r.value=o.value;var s=a.enabled,o=n.renderText(r.tooltip);return React.createElement(FormElement,{className:e,component:a,element:r,inputId:t},React.createElement(NativeSelect,{disabled:!s,inputProps:{id:t},inputRef:e=>renderFocus(e,l,n),onChange:e=>{var t=e.currentTarget.value,e=m[t].value;r.current=t,r.value=e,a.forceUpdate(),n.post("changed",{name:l,item:t,value:e})},title:o,value:r.current||DEFAULT_VALUE},void 0===r.current&&React.createElement("option",{key:"none",value:DEFAULT_VALUE,disabled:!0},n.renderText(r.prompt)),Object.keys(m).map(e=>{var t=m[e],a=n.renderText(t.label),r=t.styleName?makeSafeClassName(t.styleName):void 0;return React.createElement("option",{className:r,key:e,value:e,title:n.renderText(t.tooltip),disabled:!1===t.enabled},a)})))};export default DropDownList;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import Box from"@vertigis/react-ui/Box";import Button from"@vertigis/react-ui/Button";import IconButton from"@vertigis/react-ui/IconButton";import Stack from"@vertigis/react-ui/Stack";import Plus from"@vertigis/react-ui/icons/Plus";import Trash from"@vertigis/react-ui/icons/Trash";import{styled}from"@vertigis/react-ui/styles";import*as React from"react";import FormElement from"../FormElement.js";import{renderFocus}from"../common.js";import{isFilesRef}from"../utils.js";import Markdown from"./Markdown.js";const PREFIX="FilePicker",filePickerClasses={file:`${PREFIX}-file`,label:`${PREFIX}-label`,list:`${PREFIX}-list`},Root=styled(FormElement)(({theme:{palette:e,spacing:t}})=>({[`.${filePickerClasses.list}`]:{marginBottom:t(1),marginTop:t(1),[`.${filePickerClasses.file}`]:{alignItems:"center",display:"flex",gap:t(1),[`.${filePickerClasses.label}`]:{border:`1px solid ${e.grey[200]}`,flexGrow:1,fontStyle:"italic",lineHeight:1,overflow:"hidden",padding:t(1),textOverflow:"ellipsis",whiteSpace:"nowrap"}}}})),FilePicker=({className:e,component:i,element:r})=>{const{host:a,name:t}=i.props;var l=r.size;let s=r.value,o=5,n;"number"==typeof l&&(o=1<l?Math.ceil(l):1),s&&(isFilesRef(s)&&Array.isArray(s.files)||(r.value=s=void 0));var c=a.renderText(r.tooltip);let m=i.enabled;const f=[];if(void 0!==s){m=i.enabled&&s.files.length<o;var p=a.renderText("@file-picker-remove-item-label");for(const d of s.files){var u=f.length;f.push(React.createElement(Box,{key:"$"+u,className:filePickerClasses.file},React.createElement("label",{className:filePickerClasses.label,title:d.name},d.name),React.createElement(IconButton,{"aria-label":p,disabled:!i.enabled,onClick:(e=>()=>{s?.files&&1<s.files.length?s.files.splice(e,1):r.value=void 0,i.forceUpdate(),a.post("changed",{name:t,value:r.value})})(u),ref:e=>renderFocus(e,t,a),title:p},React.createElement(Trash,null))))}}f.push(React.createElement(Box,{key:"footer"},React.createElement(Button,{
|
|
1
|
+
import Box from"@vertigis/react-ui/Box";import Button from"@vertigis/react-ui/Button";import IconButton from"@vertigis/react-ui/IconButton";import Stack from"@vertigis/react-ui/Stack";import Plus from"@vertigis/react-ui/icons/Plus";import Trash from"@vertigis/react-ui/icons/Trash";import{styled}from"@vertigis/react-ui/styles";import*as React from"react";import FormElement from"../FormElement.js";import{renderFocus}from"../common.js";import{isFilesRef}from"../utils.js";import Markdown from"./Markdown.js";const PREFIX="FilePicker",filePickerClasses={file:`${PREFIX}-file`,label:`${PREFIX}-label`,list:`${PREFIX}-list`},Root=styled(FormElement)(({theme:{palette:e,spacing:t}})=>({[`.${filePickerClasses.list}`]:{marginBottom:t(1),marginTop:t(1),[`.${filePickerClasses.file}`]:{alignItems:"center",display:"flex",gap:t(1),[`.${filePickerClasses.label}`]:{border:`1px solid ${e.grey[200]}`,flexGrow:1,fontStyle:"italic",lineHeight:1,overflow:"hidden",padding:t(1),textOverflow:"ellipsis",whiteSpace:"nowrap"}}}})),FilePicker=({className:e,component:i,element:r})=>{const{host:a,name:t}=i.props;var l=r.size;let s=r.value,o=5,n;"number"==typeof l&&(o=1<l?Math.ceil(l):1),s&&(isFilesRef(s)&&Array.isArray(s.files)||(r.value=s=void 0));var c=a.renderText(r.tooltip);let m=i.enabled;const f=[];if(void 0!==s){m=i.enabled&&s.files.length<o;var p=a.renderText("@file-picker-remove-item-label");for(const d of s.files){var u=f.length;f.push(React.createElement(Box,{key:"$"+u,className:filePickerClasses.file},React.createElement("label",{className:filePickerClasses.label,title:d.name},d.name),React.createElement(IconButton,{"aria-label":p,disabled:!i.enabled,onClick:(e=>()=>{s?.files&&1<s.files.length?s.files.splice(e,1):r.value=void 0,i.forceUpdate(),a.post("changed",{name:t,value:r.value})})(u),ref:e=>renderFocus(e,t,a),title:p},React.createElement(Trash,null))))}}f.push(React.createElement(Box,{key:"footer"},React.createElement(Button,{disabled:!m,onClick:()=>{n&&(n.value="",n.click())},ref:e=>{renderFocus(e,t,a)},startIcon:React.createElement(Plus,null),title:c,variant:"outlined"},React.createElement(Markdown,{inline:!0,text:r.prompt||"",translateText:a.translateText.bind(a)}))));l=1!==o;return React.createElement(Root,{className:e,component:i,element:r},React.createElement(Stack,{className:filePickerClasses.list},f),React.createElement("input",{type:"file",style:{display:"none"},title:c,onChange:e=>(e=>{var t=e.files;if(t?.length){const l=s?.files||[];for(let e=0;e<t.length&&l.length!==o;e++)l.push(t[e]);e={refValueType:"files",files:l};r.value=e,i.forceUpdate(),a.post("changed",{name:i.props.name,value:e})}})(e.target),multiple:l,accept:r.fileTypes,ref:e=>{n=e}}))};export default FilePicker;export{filePickerClasses};
|
package/forms/components/Form.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import AdapterDateFns from"@vertigis/react-ui/AdapterDateFns";import Box from"@vertigis/react-ui/Box";import{LicenseInfo}from"@vertigis/react-ui/LicenseInfo";import LocalizationProvider from"@vertigis/react-ui/LocalizationProvider";import{styled}from"@vertigis/react-ui/styles";import clsx from"clsx";import*as React from"react";import{useEffect,useState}from"react";import{FormComponent,FormElementComponent}from"../FormComponent.js";import{loadLocale}from"../dateUtilities.js";import{getKeyString}from"../keyboard.js";import{
|
|
1
|
+
import AdapterDateFns from"@vertigis/react-ui/AdapterDateFns";import Box from"@vertigis/react-ui/Box";import{LicenseInfo}from"@vertigis/react-ui/LicenseInfo";import LocalizationProvider from"@vertigis/react-ui/LocalizationProvider";import{styled}from"@vertigis/react-ui/styles";import clsx from"clsx";import*as React from"react";import{useEffect,useState}from"react";import{FormComponent,FormElementComponent}from"../FormComponent.js";import{FormElementTypes}from"../constants.js";import{loadLocale}from"../dateUtilities.js";import{getKeyString}from"../keyboard.js";import{sortAndFilter}from"../utils.js";const PREFIX="Form",formClasses={body:`${PREFIX}-body`,footer:`${PREFIX}-footer`,formElementContent:`${PREFIX}-element-content`,formElementTitle:`${PREFIX}-element-title`,formElementWithTitleBeside:`${PREFIX}-element-with-title-beside`,header:`${PREFIX}-header`,main:`${PREFIX}-main`,root:`${PREFIX}-root`,row:`${PREFIX}-row`},Root=styled(Box)(e=>({"h1, h2, h3":{margin:0},[`.${formClasses.formElementWithTitleBeside}`]:{alignItems:"start",display:"grid",gridTemplateColumns:"1fr 2fr",[`> .${formClasses.formElementTitle}`]:{gridColumnStart:1,margin:0,overflowWrap:"anywhere"},[`> .${formClasses.formElementContent}`]:{display:"inline-flex",flexDirection:"column",gridColumnStart:2,overflow:"auto"}},[`.${formClasses.row}`]:{display:"flex",gap:"0.5em","> *":{flexGrow:1},"> .CheckBox, > .CheckGroup, > .Image, > .Number, > .RadioGroup":{flexGrow:0},[`.${formClasses.formElementWithTitleBeside}`]:{gridTemplateColumns:"1fr 1fr"}}}));LicenseInfo.setLicenseKey("dc21e4b722db0484344d94e6f3db523fT1JERVI6NjQ4MTMsRVhQSVJZPTE3MTM2Nzk1MDEyNzQsS0VZVkVSU0lPTj0x");const Form=({className:e,component:t})=>{const[o,r]=useState();useEffect(()=>{let t=!0;return loadLocale(i).then(e=>{t?r(e):console.warn("Component was unmounted while loading the locale.")}),()=>{t=!1}},[]);const i=t.props.host,n={host:i,type:"header",children:[]},l={host:i,type:"body",children:[]},m={host:i,type:"main",children:[]},a={host:i,type:"footer",children:[]},s={host:i,type:"body",children:[]},c={},d=[];function f(e){return e!==FormElementTypes.SECTION}function p(e){e=u[e];return null==e||!f(e.type)&&(!0!==e.hoisted&&!1!==e.visible)}function h(e){return e===n||e===l||e===a?`${e.type}-section`:e.name}const u=sortAndFilter(t.props.host.form.elements);for(const T in u){var y,E=u[T];if(!0!==(F=E).hoisted&&(!1!==F.visible&&f(F.type)))if(!0!==E.overlay){let e=function(e){if(void 0===e)return l;if("header"===e)return n;if("footer"===e)return a;let t;t="object"==typeof e?e.name:e;let o=(e=>{for(const t of d)if(t.name===e)return t})(t);return void 0===o&&(o={host:i,name:t,type:"section",children:[]},d.push(o)),o}(E.section);void 0!==E.rowNumber&&(y=h(e),e=function(e,t){let o=c[t];o=o||(c[t]=[]);let r=o[e];return void 0===r&&(r=o[e]={host:i,type:"row",children:[]}),r}(E.rowNumber,y)),e.children.push(React.createElement(FormElementComponent,{key:T,host:i,type:"element",name:T}))}else s.children.push(React.createElement(FormElementComponent,{key:T,host:i,type:"element",name:T}))}var F;const g=[];if(0<n.children.length&&g.push(React.createElement(FormComponent,{key:"header",...n})),0<s.children.length)g.push(React.createElement(FormComponent,{key:"main",...s}));else{R(l);let e=void 0,t=0;for(const b of d){var C=b.name;i.isAccordionSection(u[C])?p(C)&&(e?e.push(b):e=[b]):(e&&(x(e,++t),e=void 0),p(C)&&R(b))}e&&(x(e,++t),e=void 0),0<m.children.length&&g.push(React.createElement(FormComponent,{key:"main",...m}))}function v(e){if(!function(e){var t=h(e),o=c[t];if(o)for(const i of Object.keys(o).sort((e,t)=>parseInt(e)-parseInt(t))){var r,n=o[i];1<n.children.length?(r=`row-${i}`,e.children.push(React.createElement(FormComponent,{key:r,...n}))):1===n.children.length&&e.children.push(...n.children)}}(e),0<e.children.length){var t=e===l?"body":`$${e.name}`;return React.createElement(FormComponent,{key:t,...e})}}function R(e){e=v(e);e&&m.children.push(e)}function x(e,t){const o=[];for(const n of e){var r=v(n);r&&o.push(r)}e={children:o,host:i,name:`accordionGroup${t}`,type:"accordionGroup"};m.children.push(React.createElement(FormComponent,{key:`accordionGroup${t}`,...e}))}return 0<a.children.length&&g.push(React.createElement(FormComponent,{key:"footer",...a})),React.createElement(Root,{className:clsx(e,formClasses.root),onKeyDown:function(e){"enter"===getKeyString(e)&&(e.target instanceof HTMLButtonElement||i.post("clicked"))},ref:function(e){i.renderFocus(e)}},React.createElement(LocalizationProvider,{dateAdapter:AdapterDateFns,adapterLocale:o,localeText:{start:i.renderText("@date-range-picker-start-text"),end:i.renderText("@date-range-picker-end-text"),cancelButtonLabel:i.renderText("@common-cancel"),clearButtonLabel:i.renderText("@common-clear"),okButtonLabel:i.renderText("@common-ok"),todayButtonLabel:i.renderText("@common-today")}},g))};export default Form;export{formClasses};
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
1
|
import { InputBaseProps } from "@vertigis/react-ui/InputBase";
|
|
2
|
+
import * as React from "react";
|
|
3
3
|
interface FormLabelNumberFieldProps {
|
|
4
4
|
disabled: boolean;
|
|
5
|
+
endAdornment?: React.ReactNode;
|
|
5
6
|
id?: string;
|
|
6
7
|
inputProps: InputBaseProps["inputProps"];
|
|
7
8
|
onChange: (value: number | undefined) => void;
|
|
9
|
+
startAdornment?: React.ReactNode;
|
|
8
10
|
label: string;
|
|
9
11
|
value: number;
|
|
10
12
|
max: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import FormControl from"@vertigis/react-ui/FormControl";import FormLabel from"@vertigis/react-ui/FormLabel";import NumberInput from"@vertigis/react-ui/NumberInput";import{useId}from"@vertigis/react-ui/utils/react";import*as React from"react";const FormLabelNumberField=e=>{var{disabled:r,
|
|
1
|
+
import FormControl from"@vertigis/react-ui/FormControl";import FormLabel from"@vertigis/react-ui/FormLabel";import NumberInput from"@vertigis/react-ui/NumberInput";import{useId}from"@vertigis/react-ui/utils/react";import*as React from"react";const FormLabelNumberField=e=>{var{disabled:r,endAdornment:t,id:a,inputProps:m,label:o,max:i,maxDecimalPlaces:l,min:n,onChange:u,startAdornment:s,value:c}=e,e=useId(a),a=`${e}-label`;return React.createElement(FormControl,{disabled:r},React.createElement(FormLabel,{htmlFor:e,id:a},o),React.createElement(NumberInput,{id:e,inputProps:m,endAdornment:t,max:i,maxDecimalPlaces:l,min:n,onChange:u,size:"small",startAdornment:s,value:c}))};export default FormLabelNumberField;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import Box from"@vertigis/react-ui/Box";import Button from"@vertigis/react-ui/Button";import IconButton from"@vertigis/react-ui/IconButton";import List from"@vertigis/react-ui/List";import ListItemButton from"@vertigis/react-ui/ListItemButton";import Plus from"@vertigis/react-ui/icons/Plus";import Trash from"@vertigis/react-ui/icons/Trash";import*as React from"react";import{useState}from"react";import FormElement from"../FormElement.js";import{renderFocus}from"../common.js";import{sanitizeGeometryRef,text}from"../utils.js";import GeometryPickerListItem from"./GeometryPickerListItem.js";import Markdown from"./Markdown.js";const GeometryPicker=({className:e,component:t,element:r})=>{const{host:
|
|
1
|
+
import Box from"@vertigis/react-ui/Box";import Button from"@vertigis/react-ui/Button";import IconButton from"@vertigis/react-ui/IconButton";import List from"@vertigis/react-ui/List";import ListItemButton from"@vertigis/react-ui/ListItemButton";import Plus from"@vertigis/react-ui/icons/Plus";import Trash from"@vertigis/react-ui/icons/Trash";import*as React from"react";import{useState}from"react";import FormElement from"../FormElement.js";import{renderFocus}from"../common.js";import{sanitizeGeometryRef,text}from"../utils.js";import GeometryPickerListItem from"./GeometryPickerListItem.js";import Markdown from"./Markdown.js";const GeometryPicker=({className:e,component:t,element:r})=>{const{host:n,name:a}=t.props;var o=r.size;let i=5;"number"==typeof o&&(i=1<o?Math.ceil(o):1),"number"==typeof o&&(i=1<o?Math.ceil(o):1);let l=[],s=[],c="",m=r.value=sanitizeGeometryRef(r.value);void 0!==m&&(l=m.geometry,B=r.itemLabel,Array.isArray(B)?s=B:(s=[],text.isMarkdown(B)?B.markdown&&(c=B):text.isStatus(B)?B.status&&(c=B.status):B&&(c=B)));let d=r.state;void 0!==d&&null!==d||(d=r.state=[]);const[u,p]=useState([]);const f=e=>{let t=d[e];return void 0!==t&&null!==t||(d.length<=e&&(d.length=e,d.push({})),t=d[e]),t},v=t=>()=>{1<l.length?(l.splice(t,1),d.splice(t,1),t<s.length&&s.splice(t,1)):(r.value=void 0,r.state=void 0);let e=[];for(const m of u)m<t?e.push(m):m>t&&e.push(m-1);p(e),n.post("changed",{name:a,value:m})};var g=e=>{t.enabled&&v(e)()},h=(e,t,r)=>{const o=f(e);o.focused=t,o.pending=r,n.renderState(a,"geometry",d)};let k=t.enabled;const x=[];if(void 0!==m){k=t.enabled&&m.geometry.length<i;var y=n.renderText("@geometry-picker-remove-item-label");for(const I of m.geometry){var b=x.length;f(b).content=I;var E=`checkbox-list-label-${b}`;x.push(React.createElement(GeometryPickerListItem,{deleteItem:g,disablePadding:!0,itemIndex:b,key:"$"+b,secondaryAction:React.createElement(IconButton,{"aria-label":y,className:"delete",disabled:!t.enabled,edge:"end",onClick:v(b),ref:e=>renderFocus(e,a,n),title:y},React.createElement(Trash,null)),updateHighlight:h},React.createElement(ListItemButton,{onClick:(o=>()=>{var e=u.indexOf(o);const t=[...u],r=f(o);-1===e?(r.checked=!0,t.push(o)):(r.checked=!1,t.splice(e,1)),p(t)})(b),ref:(t=>e=>{null!==e&&(e.disabled||n.renderFocus(e,a),e.checked=!!f(t).checked)})(b),selected:-1!==u.indexOf(b)},React.createElement(Markdown,{id:E,inline:!0,text:s[b]||c,translateText:n.translateText.bind(n)}))))}}const R=()=>{n.post("clicked",{name:a,value:m})};var B=n.renderText(r.tooltip);return t.enabled&&r.autoActivate&&(k&&setTimeout(()=>R()),delete r.autoActivate),React.createElement(FormElement,{className:e,component:t,element:r,ref:e=>{n.renderState(a,"geometry",null===e?void 0:d)}},React.createElement(List,null,x),React.createElement(Box,null,React.createElement(Button,{disabled:!k,onClick:R,ref:e=>renderFocus(e,a,n),startIcon:React.createElement(Plus,null),title:B,variant:"outlined"},React.createElement(Markdown,{inline:!0,text:r.prompt||"",translateText:n.translateText.bind(n)}))))};export default GeometryPicker;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import {
|
|
2
|
+
import { FormElementProps } from "../..";
|
|
3
3
|
/**
|
|
4
4
|
* The component for the "Horizontal Rule" Form Element.
|
|
5
5
|
*/
|
|
6
|
-
declare const HorizontalRule: ({ className, component, element }:
|
|
6
|
+
declare const HorizontalRule: ({ className, component, element }: FormElementProps) => JSX.Element;
|
|
7
7
|
export default HorizontalRule;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import {
|
|
2
|
+
import { FormElementProps } from "../..";
|
|
3
3
|
/**
|
|
4
4
|
* The component for the "Image" Form Element.
|
|
5
5
|
*/
|
|
6
|
-
declare const Image: ({ className, component, element }:
|
|
6
|
+
declare const Image: ({ className, component, element, renderText, size, tooltip: elementTooltip, value, }: FormElementProps<string>) => JSX.Element;
|
|
7
7
|
export default Image;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{styled}from"@vertigis/react-ui/styles";import*as React from"react";import FormElement from"../FormElement.js";const Root=styled(FormElement)(()=>({overflow:"hidden",img:{alignSelf:"start"}})),Image=({className:e,component:t,element:o})=>{
|
|
1
|
+
import{styled}from"@vertigis/react-ui/styles";import*as React from"react";import FormElement from"../FormElement.js";const Root=styled(FormElement)(()=>({overflow:"hidden",img:{alignSelf:"start"}})),Image=({className:e,component:t,element:o,renderText:m,size:r,tooltip:l,value:i})=>{let n,a;"number"==typeof r&&(a=r,n=r),"object"==typeof r&&("number"==typeof r.width&&(n=r.width),"number"==typeof r.height&&(a=r.height));let s;"string"==typeof i&&(s=i);l=m(l);return React.createElement(Root,{className:e,component:t,element:o},React.createElement("img",{src:s,alt:l,title:l,width:n,height:a}))};export default Image;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
import Checkbox from"@vertigis/react-ui/Checkbox";import FormControlLabel from"@vertigis/react-ui/FormControlLabel";import IconButton from"@vertigis/react-ui/IconButton";import Input from"@vertigis/react-ui/Input";import InputAdornment from"@vertigis/react-ui/InputAdornment";import List from"@vertigis/react-ui/List";import ListItem from"@vertigis/react-ui/ListItem";import ListItemButton from"@vertigis/react-ui/ListItemButton";import ListItemIcon from"@vertigis/react-ui/ListItemIcon";import ListItemText,{listItemTextClasses}from"@vertigis/react-ui/ListItemText";import Radio from"@vertigis/react-ui/Radio";import RadioGroup from"@vertigis/react-ui/RadioGroup";import Stack from"@vertigis/react-ui/Stack";import Close from"@vertigis/react-ui/icons/Close";import{styled}from"@vertigis/react-ui/styles";import clsx from"clsx";import*as React from"react";import FormElement from"../FormElement.js";import{renderFocus}from"../common.js";import{Orientation}from"../constants.js";import{getKeyString}from"../keyboard.js";import{isDataRef,isGeometryRef,makeSafeClassName}from"../utils.js";import Markdown from"./Markdown.js";const PREFIX="ItemPicker",itemPickerClasses={button:`${PREFIX}-list-item-button`,clearIcon:`${PREFIX}-clear-button`,horizontal:`${PREFIX}-horizontal`,item:`${PREFIX}-list-item`,items:`${PREFIX}-list-items`},Root=styled(FormElement)(({theme:{typography:e}})=>({[`.${itemPickerClasses.clearIcon}`]:{height:e.pxToRem(20),width:e.pxToRem(20)},[`.${itemPickerClasses.items}`]:{[`&.${itemPickerClasses.horizontal}`]:{display:"flex",flexWrap:"wrap",[`.${itemPickerClasses.item}`]:{width:"auto"}},[`.${itemPickerClasses.item}`]:{[`.${itemPickerClasses.button}`]:{paddingBottom:0,paddingTop:0,[`.${listItemTextClasses.primary}`]:{fontWeight:e.fontWeightRegular}}}}})),ItemPicker=({className:e,component:i,element:n,spacing:t})=>{const a=i.props["host"],r=i.props.name;void 0===t&&(t=1);const s=n.items||{};let c,l,m,d=n.state;function u(){const e=[];for(const o in s){var t=s[o];t.checked&&e.push(t)}c=0===e.length?n.value=void 0:n.value={refValueType:"items",items:e}}function p(e,t=!0){let o=d.keyToIndex[e];if(null==o||null===o){if(!t)return;d.keyToIndex[e]=d.length,d.push({}),o=d.keyToIndex[e]}return d[o]}function f(e,t){s[e].checked=t;const o=p(e);o&&(o.checked=t)}function o(t){return function(e){null!==e&&(e.disabled||a.renderFocus(e,r),e=!0===s[t].checked,p(t).checked=e)}}u(),function(){void 0!==d&&null!==d||(d=n.state=[]),d.keyToIndex||(d.keyToIndex={});const e={};for(const o in n.items){var t=p(o,!1);t&&(e[o]=t)}d=n.state=[],d.keyToIndex={};for(const r in e)d.keyToIndex[r]=d.length,d.push(e[r])}();const g=[];let k;switch(n.selectionMode){case"single":k="radio";break;case"multiple":k="checkbox"}let I=0;for(const F in s){var R,h,v,b,x=s[F];p(F).content=function(e){if(e){if(isGeometryRef(e))return e.geometry;if(isDataRef(e)&&e.data)return e.data.geometry}}(x.value),!1!==x.visible&&(x.checked&&I++,h=(R=i.enabled&&!1!==x.enabled)&&!!k,v=a.renderText(x.tooltip),b=clsx(itemPickerClasses.item,x.styleName?makeSafeClassName(x.styleName):void 0),x=React.createElement(Markdown,{text:x.label,translateText:a.translateText.bind(a)}),g.push(React.createElement(ListItem,{className:b,disabled:!R,disablePadding:!0,key:F},React.createElement(ListItemButton,{className:itemPickerClasses.button,onClick:h?(o=>()=>{var e=s[o].checked;if("single"===n.selectionMode){if(!e)for(const t in s)f(t,t===o)}else f(o,!e);u(),i.forceUpdate(),a.post("changed",{name:r,value:c}),a.renderState(r,"geometry",d)})(F):void 0,tabIndex:R?void 0:-1,title:v,"data-id":F,onBlur:R?e=>{delete p(e.currentTarget.dataset.id).focused,a.renderState(r,"geometry",d)}:void 0,onFocus:R?e=>{p(e.currentTarget.dataset.id).focused=!0,a.renderState(r,"geometry",d)}:void 0,onMouseOver:R?e=>{p(e.currentTarget.dataset.id).pending=!0,a.renderState(r,"geometry",d)}:void 0,onMouseOut:R?e=>{delete p(e.currentTarget.dataset.id).pending,a.renderState(r,"geometry",d)}:void 0},"checkbox"===k&&React.createElement(ListItemIcon,null,React.createElement(Checkbox,{edge:"start",checked:!0===s[F]?.checked,disableRipple:!0,inputRef:o(F),tabIndex:-1,value:F})),"radio"===k&&React.createElement(ListItemIcon,null,React.createElement(Radio,{edge:"start",checked:!0===s[F]?.checked,disableRipple:!0,inputRef:o(F),name:i.id,tabIndex:-1,value:F})),React.createElement(ListItemText,null,x)))))}var y=a.renderText(n.prompt);function C(){var e=l.value.toLowerCase();for(const t in s){const o=s[t];if(e){const r=a.renderText(o.label).toLowerCase();o.visible=-1!==r.indexOf(e)}else o.visible=!0}m.hidden=!e,i.forceUpdate()}function E(){l.value="",C()}var T="multiple"===n.selectionMode&&0<g.length,L=clsx(itemPickerClasses.items,{[itemPickerClasses.horizontal]:n.orientation===Orientation.HORIZONTAL});let P;return 0===I?P="none":I===g.length&&(P="all"),React.createElement(Root,{className:e,component:i,element:n,ref:function(e){null===e?a.renderState(r,"geometry"):a.renderState(r,"geometry",d)}},React.createElement(Stack,{spacing:t},n.showFilter&&React.createElement(Input,{disabled:!i.enabled,endAdornment:React.createElement(InputAdornment,{position:"end"},React.createElement(IconButton,{disabled:!i.enabled,onClick:E,ref:e=>m=e,title:a.renderText("@common-clear")},React.createElement(Close,{className:itemPickerClasses.clearIcon}))),error:!1,fullWidth:!0,inputRef:e=>{l=e,renderFocus(e,r,a)},onChange:C,onKeyDown:e=>{"escape"===getKeyString(e)&&E()},placeholder:y,type:"text"}),T&&React.createElement(RadioGroup,{color:"primary",row:!0},React.createElement(FormControlLabel,{value:"all",checked:"all"===P,control:React.createElement(Radio,null),disabled:!i.enabled,onClick:function(){for(const e in s)f(e,!0);u(),i.forceUpdate(),a.post("changed",{name:r,value:c})},label:a.renderText("@common-all")}),React.createElement(FormControlLabel,{value:"none",checked:"none"===P,control:React.createElement(Radio,null),disabled:!i.enabled,onClick:function(){for(const e in s)f(e,!1);u(),i.forceUpdate(),a.post("changed",{name:r,value:c})},label:a.renderText("@common-none")})),React.createElement(List,{className:L,dense:!0},g)))};export default ItemPicker;export{itemPickerClasses};
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import {
|
|
2
|
+
import { FormElementProps } from "../..";
|
|
3
|
+
import * as defs from "../FormDefinition";
|
|
3
4
|
export declare const listBoxClasses: {
|
|
4
5
|
select: string;
|
|
5
6
|
};
|
|
6
|
-
declare const ListBox: ({ className, component, element }:
|
|
7
|
+
declare const ListBox: ({ className, component, current, element, enabled, items: elementItems, name, renderFocus, renderText, require, setItemProperty, setValue: setElementValue, size: elementSize, tooltip: elementTooltip, value: elementValue, }: FormElementProps<defs.ItemsRef | undefined>) => JSX.Element;
|
|
7
8
|
export default ListBox;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
import Select from"@vertigis/react-ui/Select";import{styled}from"@vertigis/react-ui/styles";import clsx from"clsx";import*as React from"react";import{useEffect,useState}from"react";import FormElement from"../FormElement.js";import{useFocusCallback}from"../common.js";import{areValuesEqual,arrayEqual}from"../listUtilities.js";import{makeSafeClassName,makeUniqueId,inspectItems}from"../utils.js";const PREFIX="ListBox",listBoxClasses={select:`${PREFIX}-select`},Root=styled(FormElement)(({theme:{spacing:e}})=>({"&&&":{[`.${listBoxClasses.select}`]:{paddingRight:e(1)}}})),ListBox=({className:e,component:t,current:s,element:a,enabled:l,items:o,name:i,renderFocus:r,renderText:c,require:m,setItemProperty:n,setValue:u,size:p,tooltip:d,value:f})=>{var v=`${makeUniqueId(i)}-input`;const h=inspectItems(s,o,f)["items"],[x,E]=useState([]);r=useFocusCallback(l,i,r);useEffect(()=>{const e=[];for(const t in o)o[t].checked&&e.push(t);arrayEqual(x,e)||E(e),k(e,!1)});const k=(e,t)=>{e=0===e.length?void 0:{refValueType:"items",items:e.map(e=>h[e])};areValuesEqual(f,e)||u(e,t)};const b=[];for(const F in h){const I=h[F];var y=c(I.label);const C=c(I.tooltip);I.checked=!0===I.checked;var g=clsx(I.styleName?makeSafeClassName(I.styleName):void 0),R=!1===I.enabled?void 0:!!I.checked;b.push(React.createElement("option",{"aria-selected":R,className:g,key:F,title:C,value:F,disabled:!1===I.enabled},y))}const C=c(d)||void 0;let q;return"number"==typeof p&&(q=p),React.createElement(Root,{className:e,component:t,element:a,inputId:v},React.createElement(Select,{disabled:!l||0===b.length,inputProps:{"aria-multiselectable":!0,"aria-orientation":"vertical","aria-required":m,className:listBoxClasses.select,id:v,role:"listbox",size:q,title:C},inputRef:r,multiple:!0,native:!0,onChange:e=>{const t=e.target["options"],s=[];for(let e=0;e<t.length;e++){var a=t.item(e),l=a.value;a.selected&&s.push(l)}for(const r in h){var o=h[r].checked,i=-1!==s.indexOf(r);o!==i&&n(r,"checked",i)}k(s,!0)},value:x},b))};export default ListBox;export{listBoxClasses};
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { MarkdownProps as BaseMarkdownProps } from "@vertigis/react-ui/Markdown";
|
|
3
3
|
import { defs } from "../FormHost";
|
|
4
|
-
import { FormPresenterHost } from "../FormPresenterHost";
|
|
5
4
|
/**
|
|
6
5
|
* Properties for the `Markdown` component.
|
|
7
6
|
*/
|
|
8
7
|
export interface MarkdownProps extends Omit<BaseMarkdownProps, "markdown" | "sanitize"> {
|
|
9
|
-
/** The host that translatest text. */
|
|
10
|
-
host: FormPresenterHost;
|
|
11
8
|
/** The text to be rendered. */
|
|
12
9
|
text: defs.Text | undefined;
|
|
10
|
+
/** Translates the supplied value. */
|
|
11
|
+
translateText: (content: defs.Text | undefined) => string | defs.MarkdownRef | undefined;
|
|
13
12
|
}
|
|
14
|
-
declare const Markdown: ({
|
|
13
|
+
declare const Markdown: ({ text, translateText, escapeHtml, linkTarget, ...otherProps }: MarkdownProps) => JSX.Element;
|
|
15
14
|
export default Markdown;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import BaseMarkdown from"@vertigis/react-ui/Markdown";import*as React from"react";import{hasContent,isMarkdown}from"../textUtilities.js";const Markdown=({
|
|
1
|
+
import BaseMarkdown from"@vertigis/react-ui/Markdown";import*as React from"react";import{hasContent,isMarkdown}from"../textUtilities.js";const Markdown=({text:t,translateText:e,escapeHtml:a=!0,linkTarget:r="_blank",...n})=>{t=e(t);return hasContent(t)?isMarkdown(t)?React.createElement(BaseMarkdown,{markdown:t.markdown,escapeHtml:a,linkTarget:r,...n}):React.createElement(React.Fragment,null,t):null};export default Markdown;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import {
|
|
2
|
+
import { FormElementProps } from "../..";
|
|
3
|
+
import * as defs from "../FormDefinition";
|
|
3
4
|
/**
|
|
4
5
|
* The component for the "Number" Form Elements.
|
|
5
6
|
*/
|
|
6
|
-
declare const NumberComponent: ({ className, component, element }:
|
|
7
|
+
declare const NumberComponent: ({ className, coerceNumber, component, deriveLocale, element, enabled, error, format, formatNumber, name, prompt, renderFocus: hostRenderFocus, renderText, require, tooltip: elementTooltip, value: elementValue, setValue: setElementValue, }: FormElementProps<defs.NumberRef | undefined>) => JSX.Element;
|
|
7
8
|
export default NumberComponent;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{NumberFormatContext}from"@vertigis/react-ui/NumberFormatContext";import NumberInput from"@vertigis/react-ui/NumberInput";import*as React from"react";import{useEffect,useMemo,useRef,useState}from"react";import FormElement from"../FormElement.js";import{numberFormatConfiguration}from"../elements/Number.js";import{getKeyString}from"../keyboard.js";import{areValuesEqual,enforceConstraints,getNumberConstraints,sanitizePrecision}from"../numberUtilities.js";import{isNumber,isNumberRef,isString,makeUniqueId}from"../utils.js";const NumberComponent=({className:e,component:r,
|
|
1
|
+
import{NumberFormatContext}from"@vertigis/react-ui/NumberFormatContext";import NumberInput from"@vertigis/react-ui/NumberInput";import*as React from"react";import{useEffect,useMemo,useRef,useState}from"react";import FormElement from"../FormElement.js";import{numberFormatConfiguration}from"../elements/Number.js";import{getKeyString}from"../keyboard.js";import{areValuesEqual,enforceConstraints,getNumberConstraints,sanitizePrecision}from"../numberUtilities.js";import{isNumber,isNumberRef,isString,makeUniqueId}from"../utils.js";const NumberComponent=({className:e,coerceNumber:t,component:r,deriveLocale:n,element:o,enabled:i,error:m,format:u,formatNumber:a,name:s,prompt:l,renderFocus:c,renderText:p,require:f,tooltip:b,value:d,setValue:v})=>{const[N,g]=useState(!1),[C,E]=useState(),F=useRef(!0);var y=`${makeUniqueId(s)}-input`,n=n(),l=p(l),b=p(b);const{decimals:R,numberConstraints:x}=useMemo(()=>{var e=u,r=getNumberConstraints(e,numberFormatConfiguration);return{decimals:sanitizePrecision(e?.precision,r.step,numberFormatConfiguration),numberConstraints:r}},[u]),{maximum:q,minimum:P,step:S}=x,I={fractionalDigits:R,locale:n},j=e=>{if("number"==typeof e)return{refValueType:"number",format:{lowerBound:P,precision:R,step:S,upperBound:q},display:a(e,I),numeric:e}},D=()=>{e=void 0===(e=C)?void 0:enforceConstraints(e,x),e=j(e);areValuesEqual(d,e)||v(e);var e=e?.numeric;e!==C&&E(e)};useEffect(()=>{F.current?F.current=!1:N||D()},[N,C]),useEffect(()=>{var e=V(d),r=void 0===e?void 0:j(e);areValuesEqual(d,r)||v(r,!1),e!==C&&E(e)},[d]);const V=e=>{let r=void 0;if(isNumber(e))r=e;else if(isString(e)){if(!e)return;r=t(e)}else"number"==typeof e?.numeric&&(r=e.numeric);return"number"==typeof r&&0*r!=0&&(r=void 0),void 0===r?r:enforceConstraints(r,x)};return React.createElement(FormElement,{className:e,component:r,element:o,inputId:y},React.createElement(NumberFormatContext.Provider,{value:{formatNumber:e=>a(e,I),parseNumber:e=>t(e)}},React.createElement(NumberInput,{allowUndefined:!0,correctOnBlur:!0,disabled:!i,error:!!m,inputProps:{id:y,onKeyDown:e=>{var r,t=getKeyString(e);return"enter"===t?(r=e,D(),r.currentTarget.select(),r.stopPropagation(),r.preventDefault(),!1):"escape"===t?(t=e,(e=isNumberRef(d)?d.numeric:void 0)!==C&&E(e),t.currentTarget.select(),t.stopPropagation(),t.preventDefault(),!1):void 0},title:b},inputRef:e=>{null===e||e.disabled||c(e,s)},max:q,maxDecimalPlaces:R,min:P,onBlur:()=>{g(!1)},onChange:e=>E(e),onFocus:()=>{g(!0)},placeholder:l,required:f,size:"small",value:C})))};export default NumberComponent;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import {
|
|
2
|
+
import { FormElementProps } from "../..";
|
|
3
3
|
export declare const numberRangeSliderClasses: {
|
|
4
4
|
container: string;
|
|
5
5
|
inputContainer: string;
|
|
@@ -8,5 +8,5 @@ export declare const numberRangeSliderClasses: {
|
|
|
8
8
|
/**
|
|
9
9
|
* The component for the "Number Range Slider" Form Element.
|
|
10
10
|
*/
|
|
11
|
-
declare const NumberRangeSlider: ({ className, component, element }:
|
|
11
|
+
declare const NumberRangeSlider: ({ className, coerceNumber, component, deriveLocale, element, enabled, format, formatNumber, manualEntry: elementManualEntry, showMinMaxLabels: elementShowMinMaxLabels, showTickMarks: elementShowTickMarks, name, raiseEvent, renderFocus, renderText, title, tooltip: elementTooltip, value: elementValue, setValue: setElementValue, }: FormElementProps<number[] | undefined>) => JSX.Element;
|
|
12
12
|
export default NumberRangeSlider;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import Box from"@vertigis/react-ui/Box";import{formControlClasses}from"@vertigis/react-ui/FormControl";import{NumberFormatContext}from"@vertigis/react-ui/NumberFormatContext";import Slider,{sliderClasses}from"@vertigis/react-ui/Slider";import Stack from"@vertigis/react-ui/Stack";import{styled}from"@vertigis/react-ui/styles";import{useEffect,useMemo,useRef,useState}from"react";import*as React from"react";import FormElement from"../FormElement.js";import{useFocusCallback}from"../common.js";import{numberFormatConfiguration}from"../elements/NumberRangeSlider.js";import{DEFAULT_CURRENCY}from"../numberFormatter.js";import{getMarks,getNumberConstraints,getNumberSliderValues,sanitizePrecision}from"../numberUtilities.js";import{makeUniqueId,throttle}from"../utils.js";import FormLabelNumberField from"./FormLabelNumberField.js";const PREFIX="NumberRangeSlider",numberRangeSliderClasses={container:`${PREFIX}-container`,inputContainer:`${PREFIX}-input-container`,toLabel:`${PREFIX}-to-label`},Root=styled(FormElement)(({theme:{spacing:e}})=>({[`.${numberRangeSliderClasses.container}`]:{display:"inline-flex",flexDirection:"column",paddingLeft:e(2),paddingRight:e(2),paddingTop:e(4),width:"100%",[`.${sliderClasses.markLabel}`]:{transform:"translateX(-100%)",'&[data-index="0"]':{transform:"none"}},[`.${numberRangeSliderClasses.inputContainer}`]:{marginTop:e(1),[`.${formControlClasses.root}`]:{flexGrow:1},[`.${numberRangeSliderClasses.toLabel}`]:{marginLeft:e(2),marginRight:e(2),paddingTop:e(2),alignSelf:"center"}}}})),NumberRangeSlider=({className:e,
|
|
1
|
+
import Box from"@vertigis/react-ui/Box";import{formControlClasses}from"@vertigis/react-ui/FormControl";import InputAdornment from"@vertigis/react-ui/InputAdornment";import{NumberFormatContext}from"@vertigis/react-ui/NumberFormatContext";import Slider,{sliderClasses}from"@vertigis/react-ui/Slider";import Stack from"@vertigis/react-ui/Stack";import{styled}from"@vertigis/react-ui/styles";import{useEffect,useMemo,useRef,useState}from"react";import*as React from"react";import FormElement from"../FormElement.js";import{useFocusCallback}from"../common.js";import{numberFormatConfiguration}from"../elements/NumberRangeSlider.js";import{DEFAULT_CURRENCY,NumberDisplayFormat}from"../numberFormatter.js";import{countDecimalsInCustomFormat,getCurrencySymbolInfo,getPercentSymbolInfo,roundAccurately}from"../numberUtilities.js";import{getMarks,getNumberConstraints,getNumberSliderValues,sanitizePrecision}from"../numberUtilities.js";import{makeUniqueId,throttle}from"../utils.js";import FormLabelNumberField from"./FormLabelNumberField.js";const PREFIX="NumberRangeSlider",numberRangeSliderClasses={container:`${PREFIX}-container`,inputContainer:`${PREFIX}-input-container`,toLabel:`${PREFIX}-to-label`},Root=styled(FormElement)(({theme:{spacing:e}})=>({[`.${numberRangeSliderClasses.container}`]:{display:"inline-flex",flexDirection:"column",paddingLeft:e(2),paddingRight:e(2),paddingTop:e(4),width:"100%",[`.${sliderClasses.markLabel}`]:{transform:"translateX(-100%)",'&[data-index="0"]':{transform:"none"}},[`.${numberRangeSliderClasses.inputContainer}`]:{marginTop:e(1),[`.${formControlClasses.root}`]:{flexGrow:1},[`.${numberRangeSliderClasses.toLabel}`]:{marginLeft:e(2),marginRight:e(2),paddingTop:e(2),alignSelf:"center"}}}})),NumberRangeSlider=({className:e,coerceNumber:r,component:t,deriveLocale:a,element:n,enabled:o,format:u,formatNumber:i,manualEntry:m,showMinMaxLabels:s,showTickMarks:l,name:c,raiseEvent:d,renderFocus:p,renderText:b,title:g,tooltip:f,value:C,setValue:F})=>{const R=a(),{currency:y,customDisplayFormat:N,decimals:v,displayFormat:S,endAdornment:E,isPercent:x,numberConstraints:A,startAdornment:D}=useMemo(()=>{var e,t,r=u,a=r?.currency||DEFAULT_CURRENCY,n=r?.displayFormat,o=n===NumberDisplayFormat.PERCENT,i=getNumberConstraints(r,numberFormatConfiguration),m=r?.customDisplayFormat,r=n===NumberDisplayFormat.CUSTOM?countDecimalsInCustomFormat(m):r?.precision,r=sanitizePrecision(r,i.step,numberFormatConfiguration);let s=null,l=null;return n===NumberDisplayFormat.CURRENCY||n===NumberDisplayFormat.ACCOUNTING?(e=getCurrencySymbolInfo(R,a))&&(t=React.createElement(InputAdornment,{position:e.position},e.symbol),"start"===e.position?s=t:l=t):!o||(e=getPercentSymbolInfo(R))&&(t=React.createElement(InputAdornment,{position:e.position},e.symbol),"start"===e.position?s=t:l=t),{currency:a,customDisplayFormat:m,decimals:r,displayFormat:n,endAdornment:l,isPercent:o,numberConstraints:i,startAdornment:s}},[u]);var I=A["step"];const L=A.maximum,P=A.minimum,[h,$]=useState(!1),[k,M]=useState(!1),[T,U]=useState([P,L]),j=useRef(!0),[w,B]=useMemo(()=>{var e=makeUniqueId(c);return[e,`${e}-slider-input`]},[c]);a=!1!==s,s=!!l,l=!1!==m,m=x?v-2:v;const V={currency:y,customDisplayFormat:N,format:S,fractionalDigits:m=Math.max(0,m),locale:R};useEffect(()=>{var e;j.current?j.current=!1:k?Y(T):h||(e=getNumberSliderValues(T,A),T[0]===e[0]&&T[1]===e[1]||U(e),X(C,e)||F(e))},[h,k,T]),useEffect(()=>{var e=getNumberSliderValues(C,A);X(C,e)||F(e,!1),X(T,e)||U(e)},[C]);const X=(e,t)=>void 0===e&&void 0===t[0]&&void 0===t[1]||(void 0===e&&null===t[0]&&null===t[1]||!(!Array.isArray(e)||2!==e.length||e[0]!==t[0]||e[1]!==t[1])),Y=useMemo(()=>throttle(e=>{d("dragged",e)}),[]),q=useFocusCallback(o,c,p);m=b(f),p=!o&&!k,f=l?{max:L,min:P,onBlur:()=>{$(!1)},onFocus:()=>{$(!0)},step:I,title:m}:void 0;return React.createElement(Root,{className:e,component:t,element:n,inputId:`${B}-0`},React.createElement(Box,{className:numberRangeSliderClasses.container},React.createElement(Slider,{disabled:p,getAriaLabel:()=>b(g),getAriaValueText:e=>i(e,V),marks:getMarks(L,P,I,V,a,s),max:L,min:P,onChange:(e,t)=>{M(!0),Array.isArray(t)&&U(t)},onChangeCommitted:()=>{M(!1)},slotProps:{input:()=>({ref:e=>(null===e||e.id||(e.id=`${B}-${e.attributes["data-index"].value}`),q(e))})},step:I,title:m,value:T,valueLabelDisplay:"on",valueLabelFormat:(e,t)=>i(e,V)}),!1!=l&&React.createElement(NumberFormatContext.Provider,{value:{formatNumber:e=>{x&&(e*=100);var t={fractionalDigits:V.fractionalDigits,locale:V.locale};return i(e,t)},parseNumber:e=>{let t=r(e);return x&&(t=roundAccurately(t/100,v)),t}}},React.createElement(Stack,{direction:"row",className:numberRangeSliderClasses.inputContainer},React.createElement(FormLabelNumberField,{disabled:!o,id:`${w}-startInput`,inputProps:f,endAdornment:E,label:b("@common-start"),max:L,maxDecimalPlaces:v,min:P,onChange:e=>{void 0===e&&(e=P),U([e,T[1]])},startAdornment:D,value:T[0]}),React.createElement(Box,{className:numberRangeSliderClasses.toLabel}," ",b("@common-to")," "),React.createElement(FormLabelNumberField,{disabled:!o,endAdornment:E,id:`${w}-endInput`,inputProps:f,label:b("@common-end"),max:L,maxDecimalPlaces:v,min:P,onChange:e=>{void 0===e&&(e=L),U([T[0],e])},startAdornment:D,value:T[1]})))))};export default NumberRangeSlider;export{numberRangeSliderClasses};
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import {
|
|
2
|
+
import { FormElementProps } from "../..";
|
|
3
|
+
import { NumberRef } from "../FormDefinition";
|
|
3
4
|
export declare const numberSliderClasses: {
|
|
4
5
|
container: string;
|
|
5
6
|
};
|
|
6
7
|
/**
|
|
7
8
|
* The component for the "Number Slider" Form Element.
|
|
8
9
|
*/
|
|
9
|
-
declare const NumberSlider: ({ className, component, element }:
|
|
10
|
+
declare const NumberSlider: ({ className, coerceNumber, component, deriveLocale, element, enabled, error, format, formatNumber, manualEntry: elementManualEntry, showMinMaxLabels: elementShowMinMaxLabels, showTickMarks: elementShowTickMarks, name, raiseEvent, renderFocus, renderText, title, tooltip: elementTooltip, value: elementValue, setValue: setElementValue, }: FormElementProps<NumberRef | undefined>) => JSX.Element;
|
|
10
11
|
export default NumberSlider;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import Box from"@vertigis/react-ui/Box";import{inputBaseClasses}from"@vertigis/react-ui/InputBase";import{NumberFormatContext}from"@vertigis/react-ui/NumberFormatContext";import NumberInput from"@vertigis/react-ui/NumberInput";import Slider,{sliderClasses}from"@vertigis/react-ui/Slider";import{styled}from"@vertigis/react-ui/styles";import{useEffect,useMemo,useRef,useState}from"react";import*as React from"react";import FormElement from"../FormElement.js";import{useFocusCallback}from"../common.js";import{DEFAULT_CURRENCY}from"../numberFormatter.js";import{
|
|
1
|
+
import Box from"@vertigis/react-ui/Box";import InputAdornment from"@vertigis/react-ui/InputAdornment";import{inputBaseClasses}from"@vertigis/react-ui/InputBase";import{NumberFormatContext}from"@vertigis/react-ui/NumberFormatContext";import NumberInput from"@vertigis/react-ui/NumberInput";import Slider,{sliderClasses}from"@vertigis/react-ui/Slider";import{styled}from"@vertigis/react-ui/styles";import{useEffect,useMemo,useRef,useState}from"react";import*as React from"react";import FormElement from"../FormElement.js";import{useFocusCallback}from"../common.js";import{DEFAULT_CURRENCY,NumberDisplayFormat}from"../numberFormatter.js";import{areValuesEqual,countDecimalsInCustomFormat,getCurrencySymbolInfo,getMarks,getNumberConstraints,getNumberSliderValues,getPercentSymbolInfo,roundAccurately,sanitizePrecision}from"../numberUtilities.js";import{makeUniqueId,throttle}from"../utils.js";const PREFIX="NumberSlider",numberSliderClasses={container:`${PREFIX}-container`},Root=styled(FormElement)(({theme:{spacing:e}})=>({[`.${numberSliderClasses.container}`]:{display:"inline-flex",flexDirection:"column",paddingLeft:e(2),paddingRight:e(2),paddingTop:e(4),width:"100%",[`.${sliderClasses.markLabel}`]:{transform:"translateX(-100%)",'&[data-index="0"]':{transform:"none"}},[`.${inputBaseClasses.root}`]:{marginTop:e(1)}}})),NumberSlider=({className:e,coerceNumber:r,component:t,deriveLocale:a,element:o,enabled:n,error:s,format:u,formatNumber:m,manualEntry:i,showMinMaxLabels:l,showTickMarks:c,name:p,raiseEvent:d,renderFocus:b,renderText:f,title:y,tooltip:C,value:g,setValue:F})=>{const N=a(),{currency:E,customDisplayFormat:v,decimals:R,displayFormat:S,endAdornment:D,isPercent:I,numberConstraints:x,startAdornment:A}=useMemo(()=>{var e,t,r=u,a=r?.currency||DEFAULT_CURRENCY,o=r?.displayFormat,n=o===NumberDisplayFormat.PERCENT,s=getNumberConstraints(r),m=r?.customDisplayFormat,r=o===NumberDisplayFormat.CUSTOM?countDecimalsInCustomFormat(m):r?.precision,r=sanitizePrecision(r,s.step);let i=null,l=null;return o===NumberDisplayFormat.CURRENCY||o===NumberDisplayFormat.ACCOUNTING?(e=getCurrencySymbolInfo(N,a))&&(t=React.createElement(InputAdornment,{position:e.position},e.symbol),"start"===e.position?i=t:l=t):!n||(e=getPercentSymbolInfo(N))&&(t=React.createElement(InputAdornment,{position:e.position},e.symbol),"start"===e.position?i=t:l=t),{currency:a,customDisplayFormat:m,decimals:r,displayFormat:o,endAdornment:l,isPercent:n,numberConstraints:s,startAdornment:i}},[u]),P=x["step"],h=x.maximum,T=x.minimum,[k,B]=useState(!1),[M,U]=useState(!1),[L,V]=useState(T),j=useRef(!0);var q=`${makeUniqueId(p)}-input`,a=!1!==l,l=!!c,c=!1!==i,i=I?R-2:R,i=Math.max(0,i);const $={currency:E,customDisplayFormat:v,format:S,fractionalDigits:i,locale:N},w=e=>({refValueType:"number",format:{currency:E,customDisplayFormat:v,displayFormat:S,lowerBound:T,precision:R,step:P,upperBound:h},display:m(e,$),numeric:e});useEffect(()=>{var e;j.current?j.current=!1:M?z(L):k||((e=getNumberSliderValues(L,x,!0)[0])!==L&&V(e),e=w(e),areValuesEqual(g,e)||F(e))},[k,M,L]),useEffect(()=>{var e=getNumberSliderValues(g,x,!0)[0],t=w(e);areValuesEqual(g,t)||F(t,!1),L!==e&&V(e)},[g]);const z=useMemo(()=>throttle(e=>{d("dragged",w(e))}),[]);p=useFocusCallback(n,p,b),b=f(C),C=!n&&!M,n=!n;return React.createElement(Root,{className:e,component:t,element:o,inputId:q},React.createElement(Box,{className:numberSliderClasses.container},React.createElement(Slider,{disabled:C,getAriaLabel:()=>f(y),getAriaValueText:e=>m(e,$),marks:getMarks(h,T,P,$,a,l),max:h,min:T,onChange:(e,t)=>{U(!0);t=Array.isArray(t)?t[0]:t;V(t)},onChangeCommitted:()=>{U(!1)},slotProps:{input:{id:q,ref:p}},step:P,title:b,value:"number"==typeof L?L:0,valueLabelDisplay:"on",valueLabelFormat:(e,t)=>m(e,$)}),!1!=c&&React.createElement(NumberFormatContext.Provider,{value:{formatNumber:e=>{I&&(e*=100);var t={fractionalDigits:$.fractionalDigits,locale:$.locale};return m(e,t)},parseNumber:e=>{let t=r(e);return I&&(t=roundAccurately(t/100,R)),t}}},React.createElement(NumberInput,{correctOnBlur:!0,disabled:n,endAdornment:D,error:!!s,inputProps:{step:P,title:b},max:h,maxDecimalPlaces:R,min:T,onChange:e=>{void 0===e?V(T):V(e)},onFocus:()=>{B(!0)},onBlur:()=>{B(!1)},size:"small",startAdornment:A,value:L}))))};export default NumberSlider;export{numberSliderClasses};
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import {
|
|
2
|
+
import { FormElementProps } from "../..";
|
|
3
|
+
import { defs } from "../FormHost";
|
|
3
4
|
/**
|
|
4
5
|
* The component for the "Radio Group" Form Element.
|
|
5
6
|
*/
|
|
6
|
-
declare const RadioGroup: ({ className, component, element }:
|
|
7
|
+
declare const RadioGroup: ({ className, component, current, element, enabled, id, items: elementItems, label, name, orientation, raiseEvent, renderFocus: hostRenderFocus, renderText, setProperty, setValue, translateText, value, }: FormElementProps<defs.Value | undefined>) => JSX.Element;
|
|
7
8
|
export default RadioGroup;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import FormControlLabel from"@vertigis/react-ui/FormControlLabel";import Radio from"@vertigis/react-ui/Radio";import BaseRadioGroup from"@vertigis/react-ui/RadioGroup";import{styled}from"@vertigis/react-ui/styles";import*as React from"react";import{useEffect
|
|
1
|
+
import FormControlLabel from"@vertigis/react-ui/FormControlLabel";import Radio from"@vertigis/react-ui/Radio";import BaseRadioGroup from"@vertigis/react-ui/RadioGroup";import{styled}from"@vertigis/react-ui/styles";import*as React from"react";import{useEffect}from"react";import FormElement from"../FormElement.js";import{Orientation}from"../constants.js";import{makeSafeClassName,inspectItems}from"../utils.js";import Markdown from"./Markdown.js";const Root=styled(FormElement)(({theme:{spacing:e}})=>({marginBottom:e(1.5)})),RadioGroup=({className:e,component:t,current:a,element:r,enabled:o,id:l,items:n,label:m,name:i,orientation:s,raiseEvent:c,renderFocus:u,renderText:d,setProperty:p,setValue:f,translateText:v,value:R})=>{const b=inspectItems(a,n,R);var E=b.items;const N=[];var g=e=>{null===e||e.disabled||u(e,i)};useEffect(()=>{a!==b.current&&p("current",b.current),m!==b.label&&p("label",b.label),R!==b.value&&f(b.value,!1)});for(const C in E){const x=E[C];var k=o&&!1!==x.enabled,y=d(x.tooltip),F=x.styleName?makeSafeClassName(x.styleName):void 0;N.push(React.createElement(FormControlLabel,{className:F,control:React.createElement(Radio,{inputRef:g,onClick:()=>{a!==C&&(p("current",C),x.value!==R?f(x.value,{item:C}):c("changed",x.value,void 0,C))}}),disabled:!k,key:C,label:React.createElement(Markdown,{text:x.label,translateText:v}),title:y,value:C}))}return React.createElement(Root,{className:e,component:t,element:r},React.createElement(BaseRadioGroup,{name:l,row:s===Orientation.HORIZONTAL,value:a||""},N))};export default RadioGroup;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import Button from"@vertigis/react-ui/Button";import Input from"@vertigis/react-ui/Input";import Stack from"@vertigis/react-ui/Stack";import{Close as CloseIcon,ScanBarcode,ScanMulti,ScanQr}from"@vertigis/react-ui/icons";import{styled}from"@vertigis/react-ui/styles";import{useState,useEffect,useRef}from"react";import*as React from"react";import FormElement from"../FormElement.js";import{useFocusCallback}from"../common.js";import{ScanType}from"../constants.js";import{scannerConfiguration}from"../elements/Scanner.js";import{getKeyString}from"../keyboard.js";import{isScanRef,makeUniqueId}from"../utils.js";const PREFIX="Scanner",scannerClasses={container:`${PREFIX}-container`,button:`${PREFIX}-button`,inputContainer:`${PREFIX}-inner`},Root=styled(FormElement)(({theme:{spacing:e}})=>({[`.${scannerClasses.container}`]:{gap:e(.5),video:{width:"100%"},[`.${scannerClasses.inputContainer}`]:{alignItems:"flex-start",gap:e(.5),[`.${scannerClasses.button}`]:{minWidth:0,padding:e(.5)}}}})),CAMERA_READY_TIMEOUT_MS=1500;var EntryMethod;!function(e){e.Camera="camera",e.Manual="manual"}(EntryMethod=EntryMethod||{});const convertToScanRef=(e,t,a)=>{var r=typeof e,r="number"==r||"string"==r?e.toString():e?.value?.toString();if(r)return t=t||e?.entryMethod||EntryMethod.Manual,{refValueType:"scan",value:r,scanType:a=a||e?.scanType,entryMethod:t}},Scanner=({className:e,component:t,element:o})=>{const[a,r]=useState(!0),[n,c]=useState(null),[s,i]=useState(""),[l,u]=useState(!1),[m,d]=useState(scannerConfiguration.rows.default),p=useRef(null),{host:f,name:E}=t.props;var S=`${makeUniqueId(E)}-input`;const v="barcode"!==o.scanType;useEffect(()=>{let e=scannerConfiguration.rows.default;"number"==typeof o.size&&(e=Math.max(scannerConfiguration.rows.minimum,o.size)),d(e)},[o.size]),useEffect(()=>(u(!0),()=>u(!1)),[]),useEffect(()=>{l&&o.enabled&&o.autoActivate&&(o.autoActivate=!1,B())},[l]),useEffect(()=>{const e=()=>{r(!1),setTimeout(()=>{l&&r(!0)},CAMERA_READY_TIMEOUT_MS)};return n&&e(),()=>{n&&(n.reset(),e())}},[n]);var y=useFocusCallback(t);useEffect(()=>{let e=o.value;!isScanRef(e)&&e&&(o.value=e=convertToScanRef(e));var t=e?.value||"";s!==t&&i(t)},[o.value]);var C=f.renderText(o.tooltip),g=!t.enabled,R=g||!o.manualEntry;const T=(e,t,a)=>{e&&o.value?.value!==e&&(a=convertToScanRef(e,t,a),o.value=a,i(e),f.post("changed",{name:E,value:a}))},F=async e=>{var t=await import("@zxing/library");let a=void 0;return e===ScanType.QrCode?a=[t.BarcodeFormat.AZTEC,t.BarcodeFormat.DATA_MATRIX,t.BarcodeFormat.MAXICODE,t.BarcodeFormat.PDF_417,t.BarcodeFormat.QR_CODE]:e===ScanType.BarCode&&(a=[t.BarcodeFormat.CODABAR,t.BarcodeFormat.CODE_39,t.BarcodeFormat.CODE_93,t.BarcodeFormat.CODE_128,t.BarcodeFormat.EAN_8,t.BarcodeFormat.EAN_13,t.BarcodeFormat.ITF,t.BarcodeFormat.RSS_14,t.BarcodeFormat.RSS_EXPANDED,t.BarcodeFormat.UPC_A,t.BarcodeFormat.UPC_E,t.BarcodeFormat.UPC_EAN_EXTENSION]),a},B=async()=>{if(n)return c(null),void f.post("cancel",{name:E,type:"cancel"});if(l){var e=await(async e=>{var t=await import("@zxing/library"),e=await F(e);const a=new Map;return a.set(t.DecodeHintType.POSSIBLE_FORMATS,e),a})(o.scanType);const t=await import("@zxing/library");e=new t.BrowserMultiFormatReader(e);c(e),await(async e=>{try{var t=await e.listVideoInputDevices();if(!t||0==t.length)throw new DOMException("No video input devices detected.");const r=await e.decodeOnceFromVideoDevice(void 0,p.current||void 0),n=await F(ScanType.QrCode);var a=n.indexOf(r.getBarcodeFormat())<0?ScanType.BarCode:ScanType.QrCode;T(r.toString(),EntryMethod.Camera,a),c(null)}catch(e){e instanceof DOMException&&(o.error=e.message,c(null))}})(e)}};return React.createElement(Root,{className:e,component:t,element:o,inputId:S},React.createElement(Stack,{className:scannerClasses.container},React.createElement("video",{hidden:!n,ref:p}),React.createElement(Stack,{className:scannerClasses.inputContainer,direction:"row"},React.createElement(Input,{disabled:R,fullWidth:!0,id:S,inputProps:{title:C},inputRef:y,multiline:v,onBlur:e=>{0<e.currentTarget.value.length&&(c(null),T(e.currentTarget.value,EntryMethod.Manual))},onChange:e=>{i(e.currentTarget.value)},onKeyDown:e=>{"enter"===getKeyString(e)&&e.stopPropagation(),v||(e=e.currentTarget,c(null),T(e.value,EntryMethod.Manual))},required:o.require,rows:v?m:void 0,spellCheck:!1,value:s}),React.createElement(Button,{className:scannerClasses.button,color:"primary",disabled:g||!a,onClick:B,ref:y,title:C},n?React.createElement(CloseIcon,null):o.scanType===ScanType.BarCode?React.createElement(ScanBarcode,null):o.scanType===ScanType.QrCode?React.createElement(ScanQr,null):React.createElement(ScanMulti,null)))))};export default Scanner;export{scannerClasses};
|
|
1
|
+
import Button from"@vertigis/react-ui/Button";import Input from"@vertigis/react-ui/Input";import Stack from"@vertigis/react-ui/Stack";import{Close as CloseIcon,ScanBarcode,ScanMulti,ScanQr}from"@vertigis/react-ui/icons";import{styled}from"@vertigis/react-ui/styles";import{useState,useEffect,useRef}from"react";import*as React from"react";import FormElement from"../FormElement.js";import{useFocusCallback}from"../common.js";import{ScanType}from"../constants.js";import{scannerConfiguration}from"../elements/Scanner.js";import{getKeyString}from"../keyboard.js";import{isScanRef,makeUniqueId}from"../utils.js";const PREFIX="Scanner",scannerClasses={container:`${PREFIX}-container`,button:`${PREFIX}-button`,inputContainer:`${PREFIX}-inner`},Root=styled(FormElement)(({theme:{spacing:e}})=>({[`.${scannerClasses.container}`]:{gap:e(.5),video:{width:"100%"},[`.${scannerClasses.inputContainer}`]:{alignItems:"flex-start",gap:e(.5),[`.${scannerClasses.button}`]:{minWidth:0,padding:e(.5)}}}})),CAMERA_READY_TIMEOUT_MS=1500;var EntryMethod;!function(e){e.Camera="camera",e.Manual="manual"}(EntryMethod=EntryMethod||{});const convertToScanRef=(e,t,a)=>{var r=typeof e,r="number"==r||"string"==r?e.toString():e?.value?.toString();if(r)return t=t||e?.entryMethod||EntryMethod.Manual,{refValueType:"scan",value:r,scanType:a=a||e?.scanType,entryMethod:t}},Scanner=({className:e,component:t,element:o})=>{const[a,r]=useState(!0),[n,c]=useState(null),[s,i]=useState(""),[l,u]=useState(!1),[m,d]=useState(scannerConfiguration.rows.default),p=useRef(null),{host:f,name:E}=t.props;var S=`${makeUniqueId(E)}-input`;const v="barcode"!==o.scanType;useEffect(()=>{let e=scannerConfiguration.rows.default;"number"==typeof o.size&&(e=Math.max(scannerConfiguration.rows.minimum,o.size)),d(e)},[o.size]),useEffect(()=>(u(!0),()=>u(!1)),[]),useEffect(()=>{l&&o.enabled&&o.autoActivate&&(o.autoActivate=!1,B())},[l]),useEffect(()=>{const e=()=>{r(!1),setTimeout(()=>{l&&r(!0)},CAMERA_READY_TIMEOUT_MS)};return n&&e(),()=>{n&&(n.reset(),e())}},[n]);var y=useFocusCallback(t.enabled,E,f.renderFocus.bind(f));useEffect(()=>{let e=o.value;!isScanRef(e)&&e&&(o.value=e=convertToScanRef(e));var t=e?.value||"";s!==t&&i(t)},[o.value]);var C=f.renderText(o.tooltip),g=!t.enabled,R=g||!o.manualEntry;const T=(e,t,a)=>{e&&o.value?.value!==e&&(a=convertToScanRef(e,t,a),o.value=a,i(e),f.post("changed",{name:E,value:a}))},F=async e=>{var t=await import("@zxing/library");let a=void 0;return e===ScanType.QrCode?a=[t.BarcodeFormat.AZTEC,t.BarcodeFormat.DATA_MATRIX,t.BarcodeFormat.MAXICODE,t.BarcodeFormat.PDF_417,t.BarcodeFormat.QR_CODE]:e===ScanType.BarCode&&(a=[t.BarcodeFormat.CODABAR,t.BarcodeFormat.CODE_39,t.BarcodeFormat.CODE_93,t.BarcodeFormat.CODE_128,t.BarcodeFormat.EAN_8,t.BarcodeFormat.EAN_13,t.BarcodeFormat.ITF,t.BarcodeFormat.RSS_14,t.BarcodeFormat.RSS_EXPANDED,t.BarcodeFormat.UPC_A,t.BarcodeFormat.UPC_E,t.BarcodeFormat.UPC_EAN_EXTENSION]),a},B=async()=>{if(n)return c(null),void f.post("cancel",{name:E,type:"cancel"});if(l){var e=await(async e=>{var t=await import("@zxing/library"),e=await F(e);const a=new Map;return a.set(t.DecodeHintType.POSSIBLE_FORMATS,e),a})(o.scanType);const t=await import("@zxing/library");e=new t.BrowserMultiFormatReader(e);c(e),await(async e=>{try{var t=await e.listVideoInputDevices();if(!t||0==t.length)throw new DOMException("No video input devices detected.");const r=await e.decodeOnceFromVideoDevice(void 0,p.current||void 0),n=await F(ScanType.QrCode);var a=n.indexOf(r.getBarcodeFormat())<0?ScanType.BarCode:ScanType.QrCode;T(r.toString(),EntryMethod.Camera,a),c(null)}catch(e){e instanceof DOMException&&(o.error=e.message,c(null))}})(e)}};return React.createElement(Root,{className:e,component:t,element:o,inputId:S},React.createElement(Stack,{className:scannerClasses.container},React.createElement("video",{hidden:!n,ref:p}),React.createElement(Stack,{className:scannerClasses.inputContainer,direction:"row"},React.createElement(Input,{disabled:R,fullWidth:!0,id:S,inputProps:{title:C},inputRef:y,multiline:v,onBlur:e=>{0<e.currentTarget.value.length&&(c(null),T(e.currentTarget.value,EntryMethod.Manual))},onChange:e=>{i(e.currentTarget.value)},onKeyDown:e=>{"enter"===getKeyString(e)&&e.stopPropagation(),v||(e=e.currentTarget,c(null),T(e.value,EntryMethod.Manual))},required:o.require,rows:v?m:void 0,spellCheck:!1,value:s}),React.createElement(Button,{className:scannerClasses.button,color:"primary",disabled:g||!a,onClick:B,ref:y,title:C},n?React.createElement(CloseIcon,null):o.scanType===ScanType.BarCode?React.createElement(ScanBarcode,null):o.scanType===ScanType.QrCode?React.createElement(ScanQr,null):React.createElement(ScanMulti,null)))))};export default Scanner;export{scannerClasses};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import Accordion,{accordionClasses}from"@vertigis/react-ui/Accordion";import AccordionSummary from"@vertigis/react-ui/AccordionSummary";import Box from"@vertigis/react-ui/Box";import FormLabel from"@vertigis/react-ui/FormLabel";import ChevronDown from"@vertigis/react-ui/icons/ChevronDown";import{styled}from"@vertigis/react-ui/styles";import clsx from"clsx";import*as React from"react";import{useEffect}from"react";import{defs}from"../FormHost.js";import{renderAccessibleDescription,renderDescription,renderError}from"../common.js";import{makeSafeClassName,makeUniqueId}from"../utils.js";import Markdown from"./Markdown.js";const PREFIX="WorkflowSection",sectionClasses={root:`${PREFIX}-root`,basicSection:`${PREFIX}-basicSection`,fieldSetSection:`${PREFIX}-fieldSetSection`,title:`${PREFIX}-title`,description:`${PREFIX}-description`},AccordionRoot=styled(Accordion)(({theme:{spacing:e}})=>({[`.${accordionClasses.region}`]:{padding:e(1),[`.${sectionClasses.description} p`]:{marginBottom:0,marginTop:0,padding:e(.5)}}})),BoxRoot=styled(Box)(({theme:{palette:e,spacing:o,typography:{pxToRem:t}}})=>({marginBottom:o(4),marginTop:o(4),[`.${sectionClasses.description} p`]:{marginBottom:0,marginTop:0,padding:o(.5)},[`&.${sectionClasses.basicSection}`]:{borderLeft:`6px solid ${e.primary[500]}`,paddingLeft:o(1),paddingRight:o(1)},[`&.${sectionClasses.fieldSetSection}`]:{position:"relative",border:`3px solid ${e.primary[500]}`,borderLeft:"none",borderRight:"none",paddingTop:o(3),paddingBottom:o(2),[`.${sectionClasses.title}`]:{backgroundColor:e.background.default,position:"absolute",top:t(-22),left:0,padding:0,"& span":{paddingRight:o(1)}}}})),Section=({className:e,component:t,element:i})=>{const r=t.props["host"],s=t.props.name;let o;null!=i&&i.format&&(o=i.format),o=void 0!==o&&null!==o?o:defs.DEFAULT_SECTION_FORMAT;const a=r.isAccordionSection(i),n=a||r.isCollapsibleSection(i);var c=`${makeUniqueId(s)}-input`;useEffect(()=>(r.refs[s]=t,()=>{r.refs[s]=void 0}),[]);var l,d,m=(l=i,d=c,React.createElement(FormLabel,{className:sectionClasses.title,error:n&&r.hasInvalidChild(l),id:`${d}-label`,component:"h6"},React.createElement(Markdown,{
|
|
1
|
+
import Accordion,{accordionClasses}from"@vertigis/react-ui/Accordion";import AccordionSummary from"@vertigis/react-ui/AccordionSummary";import Box from"@vertigis/react-ui/Box";import FormLabel from"@vertigis/react-ui/FormLabel";import ChevronDown from"@vertigis/react-ui/icons/ChevronDown";import{styled}from"@vertigis/react-ui/styles";import clsx from"clsx";import*as React from"react";import{useEffect}from"react";import{defs}from"../FormHost.js";import{renderAccessibleDescription,renderDescription,renderError}from"../common.js";import{makeSafeClassName,makeUniqueId}from"../utils.js";import Markdown from"./Markdown.js";const PREFIX="WorkflowSection",sectionClasses={root:`${PREFIX}-root`,basicSection:`${PREFIX}-basicSection`,fieldSetSection:`${PREFIX}-fieldSetSection`,title:`${PREFIX}-title`,description:`${PREFIX}-description`},AccordionRoot=styled(Accordion)(({theme:{spacing:e}})=>({[`.${accordionClasses.region}`]:{padding:e(1),[`.${sectionClasses.description} p`]:{marginBottom:0,marginTop:0,padding:e(.5)}}})),BoxRoot=styled(Box)(({theme:{palette:e,spacing:o,typography:{pxToRem:t}}})=>({marginBottom:o(4),marginTop:o(4),[`.${sectionClasses.description} p`]:{marginBottom:0,marginTop:0,padding:o(.5)},[`&.${sectionClasses.basicSection}`]:{borderLeft:`6px solid ${e.primary[500]}`,paddingLeft:o(1),paddingRight:o(1)},[`&.${sectionClasses.fieldSetSection}`]:{position:"relative",border:`3px solid ${e.primary[500]}`,borderLeft:"none",borderRight:"none",paddingTop:o(3),paddingBottom:o(2),[`.${sectionClasses.title}`]:{backgroundColor:e.background.default,position:"absolute",top:t(-22),left:0,padding:0,"& span":{paddingRight:o(1)}}}})),Section=({className:e,component:t,element:i})=>{const r=t.props["host"],s=t.props.name;let o;null!=i&&i.format&&(o=i.format),o=void 0!==o&&null!==o?o:defs.DEFAULT_SECTION_FORMAT;const a=r.isAccordionSection(i),n=a||r.isCollapsibleSection(i);var c=`${makeUniqueId(s)}-input`;useEffect(()=>(r.refs[s]=t,()=>{r.refs[s]=void 0}),[]);var l,d,m=(l=i,d=c,React.createElement(FormLabel,{className:sectionClasses.title,error:n&&r.hasInvalidChild(l),id:`${d}-label`,component:"h6"},React.createElement(Markdown,{inline:!0,text:l.title,translateText:r.translateText.bind(r)}))),p=renderDescription(r,i,c,sectionClasses.description),f=renderAccessibleDescription(r,i,c),g=renderError(r,i),c={"aria-labelledby":m?.props?.id,"aria-details":p?.props?.id,"aria-describedby":f?.props?.id},g=[p,f,g,t.props.children],e=clsx(e,i.type,sectionClasses.root,{[sectionClasses.basicSection]:"basic-section"===o,[sectionClasses.fieldSetSection]:"fieldset-section"===o,[makeSafeClassName(s)]:!!s,[makeSafeClassName(i.styleName)]:!!i.styleName});return n?React.createElement(AccordionRoot,{className:e,expanded:!0!==i.collapsed,onChange:(e,o)=>{a&&o?r.updateAccordionSections(s):(i.collapsed=!o,t.forceUpdate())},...c},React.createElement(AccordionSummary,{expandIcon:React.createElement(ChevronDown,null),ref:e=>{null!==e&&i.collapsed&&r.renderFocus(e,s)}},m),...g):React.createElement(BoxRoot,{className:e,component:"section",...c},m,React.createElement(Box,null,...g))};export default Section;export{sectionClasses};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import Box from"@vertigis/react-ui/Box";import Button from"@vertigis/react-ui/Button";import Dialog from"@vertigis/react-ui/Dialog";import IconButton from"@vertigis/react-ui/IconButton";import SignatureIcon from"@vertigis/react-ui/icons/Signature";import Trash from"@vertigis/react-ui/icons/Trash";import{styled}from"@vertigis/react-ui/styles";import*as React from"react";import{useEffect,useState}from"react";import FormElement from"../FormElement.js";import{renderTitle}from"../common.js";import{signatureConfiguration}from"../elements/Signature.js";import{makeUniqueId}from"../utils.js";import Markdown from"./Markdown.js";import SignatureDialog from"./SignatureDialog.js";const PREFIX="Signature",signatureClasses={button:`${PREFIX}-button`,image:`${PREFIX}-image`},Root=styled(FormElement)(({theme:{spacing:e}})=>({[`.${signatureClasses.button}`]:{marginBottom:e(1),marginTop:e(1)},[`.${signatureClasses.image}`]:{alignItems:"flex-start",display:"flex",flexDirection:"row",gap:e(1),img:{border:"solid 1px grey",flexShrink:1,minWidth:0}}})),Signature=({className:e,component:t,element:i})=>{const r=t.props["host"],
|
|
1
|
+
import Box from"@vertigis/react-ui/Box";import Button from"@vertigis/react-ui/Button";import Dialog from"@vertigis/react-ui/Dialog";import IconButton from"@vertigis/react-ui/IconButton";import SignatureIcon from"@vertigis/react-ui/icons/Signature";import Trash from"@vertigis/react-ui/icons/Trash";import{styled}from"@vertigis/react-ui/styles";import*as React from"react";import{useEffect,useState}from"react";import FormElement from"../FormElement.js";import{renderTitle}from"../common.js";import{signatureConfiguration}from"../elements/Signature.js";import{makeUniqueId}from"../utils.js";import Markdown from"./Markdown.js";import SignatureDialog from"./SignatureDialog.js";const PREFIX="Signature",signatureClasses={button:`${PREFIX}-button`,image:`${PREFIX}-image`},Root=styled(FormElement)(({theme:{spacing:e}})=>({[`.${signatureClasses.button}`]:{marginBottom:e(1),marginTop:e(1)},[`.${signatureClasses.image}`]:{alignItems:"flex-start",display:"flex",flexDirection:"row",gap:e(1),img:{border:"solid 1px grey",flexShrink:1,minWidth:0}}})),Signature=({className:e,component:t,element:i})=>{const a=t["enabled"],r=t.props["host"],n=t.props.name,[o,s]=useState(),[l,m]=useState(500),c=r.renderText(i.tooltip),u=r.renderText("@common-clear");useEffect(()=>{var e=i.size;let t=signatureConfiguration.width.default;"number"!=typeof e||isNaN(e)?"object"!=typeof e||void 0===e.width||isNaN(e.width)||(t=e.width):t=e,t=Math.max(t,signatureConfiguration.width.minimum),t=Math.min(t,signatureConfiguration.width.maximum),m(t)},[i.size]),useEffect(()=>{var e=i.value;s(e?.dataUrl)},[i.value]);const g=async e=>{if(e){const a=await fetch(e);var t=await a.blob(),t=new File([t],`${n}.png`,{type:t.type});i.value={refValueType:"signature",dataUrl:e,file:t}}else i.value=void 0;s(e)};return React.createElement(Root,{className:e,component:t,element:i},o?React.createElement(Box,{className:signatureClasses.image},React.createElement("img",{src:o,alt:c}),React.createElement(IconButton,{"aria-label":u,disabled:!a,onClick:()=>g(void 0),title:u},React.createElement(Trash,null))):null,o?null:React.createElement(Box,{className:signatureClasses.button},React.createElement(Button,{disabled:!a,onClick:async()=>{const e=Math.round(.4*l);await r.displayDialog(a=>React.createElement(SignatureDialog,{cancelCaption:r.renderText("@common-cancel"),clearCaption:u,doneCaption:r.renderText("@common-done"),format:"image/png",height:e,helperText:React.createElement(Markdown,{inline:!0,text:i.label,translateText:r.translateText.bind(r)}),onClose:(e,t)=>{e&&g(t),a()},title:renderTitle(r,i,makeUniqueId(t.props.name+"-dialog")),undoCaption:r.renderText("@common-undo"),width:l}),Dialog)},startIcon:React.createElement(SignatureIcon,null),title:c,variant:"outlined"},React.createElement(Markdown,{inline:!0,text:i.prompt||"",translateText:r.translateText.bind(r)}))))};export default Signature;export{signatureClasses};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import Box from"@vertigis/react-ui/Box";import Button from"@vertigis/react-ui/Button";import DialogActions from"@vertigis/react-ui/DialogActions";import DialogContent from"@vertigis/react-ui/DialogContent";import DialogTitle from"@vertigis/react-ui/DialogTitle";import IconButton from"@vertigis/react-ui/IconButton";import Skeleton from"@vertigis/react-ui/Skeleton";import Stack from"@vertigis/react-ui/Stack";import Typography from"@vertigis/react-ui/Typography";import Trash from"@vertigis/react-ui/icons/Trash";import Undo from"@vertigis/react-ui/icons/Undo";import{styled}from"@vertigis/react-ui/styles";import*as React from"react";import{lazy,Suspense}from"react";const SignaturePadWrapper=lazy(()=>import("react-signature-pad-wrapper")),DialogPrefix="SignatureDialog",signatureDialogClasses={canvas:`${DialogPrefix}-canvas`,canvasAnnotations:`${DialogPrefix}-canvas-annotations`,container:`${DialogPrefix}-container`,mark:`${DialogPrefix}-mark`,titleText:`${DialogPrefix}-title-text`},StyledDialogTitle=styled(DialogTitle)(()=>({display:"flex",[`.${signatureDialogClasses.titleText}`]:{flexGrow:1,flexShrink:1}})),StyledDialogContent=styled(DialogContent)(({theme:{spacing:e,typography:t}})=>({[`.${signatureDialogClasses.container}`]:{backgroundColor:"#eee",filter:"drop-shadow(2px 2px 2px grey)",[`.${signatureDialogClasses.canvas}`]:{position:"relative",zIndex:1},[`.${signatureDialogClasses.canvasAnnotations}`]:{alignItems:"center",display:"flex",flexDirection:"column",marginTop:t.pxToRem(-64),paddingLeft:e(1),paddingRight:e(1),position:"relative",zIndex:0,[`.${signatureDialogClasses.mark}`]:{fontSize:"large",borderBottom:"solid 1px black",width:"100%"}}}})),SignatureDialog=({cancelCaption:e,clearCaption:t,doneCaption:a,format:i,height:o,helperText:r,title:n,undoCaption:l,width:s,onClose:c})=>{let g,m,p;return React.createElement(React.Fragment,null,React.createElement(StyledDialogTitle,null,React.createElement("div",{className:signatureDialogClasses.titleText},n),React.createElement(Stack,{direction:"row"},React.createElement(IconButton,{"aria-label":l,onClick:async()=>{if(g){const e=g.toData();e.pop(),g.fromData(e)}},title:l},React.createElement(Undo,null)),React.createElement(IconButton,{"aria-label":t,onClick:async()=>{m&&m.clear()},title:t},React.createElement(Trash,null)))),React.createElement(StyledDialogContent,null,React.createElement(Box,{className:signatureDialogClasses.container,sx:{height:`${o}px`,width:`${s}px`}},React.createElement(Suspense,{fallback:React.createElement(Skeleton,{variant:"rectangular",width:s,height:o})},React.createElement(SignaturePadWrapper,{canvasProps:{className:signatureDialogClasses.canvas},ref:e=>{g=e||void 0,m=g?.instance||void 0,p=g?.canvas?.current||void 0,p&&(p.oncontextmenu=()=>!1,p.height=o,p.width=s)}}),React.createElement(Box,{className:signatureDialogClasses.canvasAnnotations},React.createElement(Typography,{"aria-hidden":!0,className:signatureDialogClasses.mark},"X"),React.createElement(Typography,{variant:"caption"},r))))),React.createElement(DialogActions,null,React.createElement(Button,{color:"primary",onClick:()=>{let e;m&&!m.isEmpty()&&(e=m.toDataURL(i)),c(!0,e)},variant:"contained"},
|
|
1
|
+
import Box from"@vertigis/react-ui/Box";import Button from"@vertigis/react-ui/Button";import DialogActions from"@vertigis/react-ui/DialogActions";import DialogContent from"@vertigis/react-ui/DialogContent";import DialogTitle from"@vertigis/react-ui/DialogTitle";import IconButton from"@vertigis/react-ui/IconButton";import Skeleton from"@vertigis/react-ui/Skeleton";import Stack from"@vertigis/react-ui/Stack";import Typography from"@vertigis/react-ui/Typography";import Trash from"@vertigis/react-ui/icons/Trash";import Undo from"@vertigis/react-ui/icons/Undo";import{styled}from"@vertigis/react-ui/styles";import*as React from"react";import{lazy,Suspense}from"react";const SignaturePadWrapper=lazy(()=>import("react-signature-pad-wrapper")),DialogPrefix="SignatureDialog",signatureDialogClasses={canvas:`${DialogPrefix}-canvas`,canvasAnnotations:`${DialogPrefix}-canvas-annotations`,container:`${DialogPrefix}-container`,mark:`${DialogPrefix}-mark`,titleText:`${DialogPrefix}-title-text`},StyledDialogTitle=styled(DialogTitle)(()=>({display:"flex",[`.${signatureDialogClasses.titleText}`]:{flexGrow:1,flexShrink:1}})),StyledDialogContent=styled(DialogContent)(({theme:{spacing:e,typography:t}})=>({[`.${signatureDialogClasses.container}`]:{backgroundColor:"#eee",filter:"drop-shadow(2px 2px 2px grey)",[`.${signatureDialogClasses.canvas}`]:{position:"relative",zIndex:1},[`.${signatureDialogClasses.canvasAnnotations}`]:{alignItems:"center",display:"flex",flexDirection:"column",marginTop:t.pxToRem(-64),paddingLeft:e(1),paddingRight:e(1),position:"relative",zIndex:0,[`.${signatureDialogClasses.mark}`]:{fontSize:"large",borderBottom:"solid 1px black",width:"100%"}}}})),SignatureDialog=({cancelCaption:e,clearCaption:t,doneCaption:a,format:i,height:o,helperText:r,title:n,undoCaption:l,width:s,onClose:c})=>{let g,m,p;return React.createElement(React.Fragment,null,React.createElement(StyledDialogTitle,null,React.createElement("div",{className:signatureDialogClasses.titleText},n),React.createElement(Stack,{direction:"row"},React.createElement(IconButton,{"aria-label":l,onClick:async()=>{if(g){const e=g.toData();e.pop(),g.fromData(e)}},title:l},React.createElement(Undo,null)),React.createElement(IconButton,{"aria-label":t,onClick:async()=>{m&&m.clear()},title:t},React.createElement(Trash,null)))),React.createElement(StyledDialogContent,null,React.createElement(Box,{className:signatureDialogClasses.container,sx:{height:`${o}px`,width:`${s}px`}},React.createElement(Suspense,{fallback:React.createElement(Skeleton,{variant:"rectangular",width:s,height:o})},React.createElement(SignaturePadWrapper,{canvasProps:{className:signatureDialogClasses.canvas},ref:e=>{g=e||void 0,m=g?.instance||void 0,p=g?.canvas?.current||void 0,p&&(p.oncontextmenu=()=>!1,p.height=o,p.width=s)}}),React.createElement(Box,{className:signatureDialogClasses.canvasAnnotations},React.createElement(Typography,{"aria-hidden":!0,className:signatureDialogClasses.mark},"X"),React.createElement(Typography,{variant:"caption"},r))))),React.createElement(DialogActions,null,React.createElement(Button,{color:"primary",onClick:()=>{let e;m&&!m.isEmpty()&&(e=m.toDataURL(i)),c(!0,e)},variant:"contained"},a),React.createElement(Button,{color:"inherit",onClick:()=>{c(!1,void 0)},variant:"outlined"},e)))};export default SignatureDialog;export{signatureDialogClasses};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import {
|
|
2
|
+
import { FormElementProps } from "../..";
|
|
3
3
|
/**
|
|
4
4
|
* The component for the "Text" Form Element.
|
|
5
5
|
* It just exposes the Title and Description which are common to all.
|
|
6
6
|
*/
|
|
7
|
-
declare const Text: ({ className, component, element }:
|
|
7
|
+
declare const Text: ({ className, component, element }: FormElementProps) => JSX.Element;
|
|
8
8
|
export default Text;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import {
|
|
2
|
+
import { FormElementProps } from "../..";
|
|
3
3
|
/**
|
|
4
4
|
* The component for the "Text Area" Form Element.
|
|
5
5
|
*/
|
|
6
|
-
declare const TextArea: ({ className, component, element }:
|
|
6
|
+
declare const TextArea: ({ className, component, element, enabled, name, maxLength, prompt, readOnly, renderFocus: hostRenderFocus, require, size, tooltip, value: elementValue, wrap: elementWrap, renderText, setValue: setElementValue, }: FormElementProps<string | undefined>) => JSX.Element;
|
|
7
7
|
export default TextArea;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import Input from"@vertigis/react-ui/Input";import{useEffect,useState}from"react";import*as React from"react";import FormElement from"../FormElement.js";import{makeUniqueId}from"../utils.js";const TextArea=({className:e,component:
|
|
1
|
+
import Input from"@vertigis/react-ui/Input";import{useEffect,useState}from"react";import*as React from"react";import FormElement from"../FormElement.js";import{makeUniqueId}from"../utils.js";const TextArea=({className:e,component:t,element:r,enabled:a,name:n,maxLength:o,prompt:u,readOnly:l,renderFocus:m,require:s,size:i,tooltip:p,value:f,wrap:c,renderText:d,setValue:g})=>{const[E,x]=useState(8),[h,v]=useState(""),[y,I]=useState("soft");var b=`${makeUniqueId(n)}-input`,u=d(u),p=d(p);useEffect(()=>{"number"==typeof i&&x(i)},[i]),useEffect(()=>{let e="string"==typeof f?f:"";f!==e&&(g(e,!1),t.forceUpdate()),v(e)},[f]),useEffect(()=>{"string"==typeof c&&-1!==["hard","soft","off"].indexOf(c)&&I(c)},[c]);return React.createElement(FormElement,{className:e,component:t,element:r,inputId:b},React.createElement(Input,{disabled:!a,fullWidth:!0,id:b,inputProps:{maxLength:o,onKeyDown:e=>{e.stopPropagation()},title:p,wrap:y},inputRef:e=>{null===e||e.disabled||m(e,n)},multiline:!0,onBlur:e=>{e=e.target.value;e!=f&&(g(e),v(e))},onChange:e=>{e=e.target.value;e!=h&&v(e)},placeholder:u,readOnly:l,required:s,rows:E,value:h}))};export default TextArea;
|
|
@@ -1,21 +1,7 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import {
|
|
3
|
-
interface TextBoxProps extends BaseFormElementProps {
|
|
4
|
-
/**
|
|
5
|
-
* Whether this is a text box or a password input. Default is "text".
|
|
6
|
-
*
|
|
7
|
-
* The differences are:
|
|
8
|
-
*
|
|
9
|
-
* - `"text"` renders as a text box, `"password"` as a password.
|
|
10
|
-
* (Obvious, but there you go.)
|
|
11
|
-
* - `"text"` will convert a numeric value to a string, `"password"` will not.
|
|
12
|
-
* - `"password"` does not support `element.maxLength` or `element.readOnly`.
|
|
13
|
-
*
|
|
14
|
-
*/
|
|
15
|
-
type?: "text" | "password";
|
|
16
|
-
}
|
|
2
|
+
import { FormElementProps } from "../..";
|
|
17
3
|
/**
|
|
18
4
|
* The component for the "Text Box" and "Password Box" Form Elements.
|
|
19
5
|
*/
|
|
20
|
-
declare const TextBox: ({ className, component, element, type }:
|
|
6
|
+
declare const TextBox: ({ className, component, element, enabled, formatNumber, type: elementType, maxLength: elementMaxLength, name, prompt, readOnly: elementReadOnly, renderFocus: hostRenderFocus, require, tooltip, value: elementValue, renderText, setValue: setElementValue, }: FormElementProps<string | undefined>) => JSX.Element;
|
|
21
7
|
export default TextBox;
|