@vertigis/workflow 5.33.0 → 5.34.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/Activator.d.ts +6 -2
- package/Collections.d.ts +8 -5
- package/EnumUtils.d.ts +1 -0
- package/Errors.d.ts +10 -1
- package/Errors.js +1 -1
- package/Hooks.d.ts +4 -1
- package/IActivityHandler.d.ts +19 -5
- package/LanguageStringUtils.js +1 -1
- package/ProgramInspectorFacility.d.ts +1 -0
- package/Task.d.ts +1 -0
- package/activities/app/GetApplicationInfo.d.ts +4 -1
- package/activities/app/GetUserInfo.d.ts +4 -1
- package/activities/app/RunCommand.d.ts +4 -1
- package/activities/app/RunOperation.d.ts +8 -2
- package/activities/arcgis/AddGraphics.d.ts +8 -2
- package/activities/arcgis/MapProvider.d.ts +4 -1
- package/activities/arcgis/QueryTask.d.ts +8 -2
- package/activities/arcgis/SetMap.d.ts +4 -1
- package/activities/arcgis/ShowResults.d.ts +3 -0
- package/activities/arcgis/runUtils.d.ts +5 -1
- package/activities/core/ChannelProvider.d.ts +1 -0
- package/activities/core/converters.d.ts +1 -1
- package/activities/forms/DisplayForm.d.ts +4 -1
- package/activities/forms/FormRenderer.d.ts +1 -0
- package/activities/forms/FormRenderer.js +1 -1
- package/activities/forms/SetFormElementProperty.d.ts +1 -1
- package/activities/index.d.ts +1 -0
- package/activities/index.js +1 -1
- package/activities/pdf/AddGeoreferenceToPdf.d.ts +19 -0
- package/activities/pdf/AddGeoreferenceToPdf.js +1 -0
- package/activities/ui/Alert.d.ts +4 -1
- package/activities/ui/Confirm.d.ts +8 -2
- package/activities/ui/Prompt.d.ts +8 -2
- package/definition/Program.d.ts +4 -1
- package/definition/ProgramInspector.d.ts +4 -1
- package/definition/Reference.d.ts +4 -1
- package/diagnostics/ConsoleDebugLogger.d.ts +4 -1
- package/diagnostics/logging.d.ts +4 -1
- package/execution/ActivityLoader.d.ts +4 -1
- package/execution/Engine.d.ts +16 -4
- package/execution/IDebugSession.d.ts +4 -1
- package/forms/Calendar.d.ts +1 -1
- package/forms/FormComponent.d.ts +4 -3
- package/forms/FormComponent.js +1 -1
- package/forms/FormDefinition.d.ts +91 -15
- package/forms/FormElement.d.ts +3 -17
- package/forms/FormElement.js +1 -1
- package/forms/FormHost.d.ts +20 -6
- package/forms/FormHost.js +1 -1
- package/forms/FormPresenterHost.d.ts +17 -4
- package/forms/common.d.ts +6 -7
- package/forms/common.js +1 -1
- package/forms/components/AccordionGroup.d.ts +15 -0
- package/forms/components/AccordionGroup.js +1 -0
- package/forms/components/AutoComplete.d.ts +7 -0
- package/forms/components/AutoComplete.js +1 -0
- package/forms/components/ButtonBar.d.ts +13 -0
- package/forms/components/ButtonBar.js +1 -0
- package/forms/components/CheckBox.d.ts +7 -0
- package/forms/components/CheckBox.js +1 -0
- package/forms/components/CheckGroup.d.ts +7 -0
- package/forms/components/CheckGroup.js +1 -0
- package/forms/components/Custom.d.ts +7 -0
- package/forms/components/Custom.js +1 -0
- package/forms/components/DatePicker.d.ts +6 -16
- package/forms/components/DatePicker.js +1 -1
- package/forms/components/DateRangePicker.d.ts +10 -8
- package/forms/components/DateRangePicker.js +1 -1
- package/forms/components/DateTimePicker.d.ts +6 -8
- package/forms/components/DateTimePicker.js +1 -1
- package/forms/components/DropDownList.d.ts +7 -0
- package/forms/components/DropDownList.js +1 -0
- package/forms/components/FilePicker.d.ts +9 -0
- package/forms/components/FilePicker.js +1 -0
- package/forms/components/Form.d.ts +23 -0
- package/forms/components/Form.js +1 -0
- package/forms/components/GeometryPicker.d.ts +4 -0
- package/forms/components/GeometryPicker.js +1 -0
- package/forms/components/GeometryPickerListItem.d.ts +23 -0
- package/forms/components/GeometryPickerListItem.js +1 -0
- package/forms/components/HorizontalRule.d.ts +7 -0
- package/forms/components/HorizontalRule.js +1 -0
- package/forms/components/Image.d.ts +7 -0
- package/forms/components/Image.js +1 -0
- package/forms/components/ItemPicker.d.ts +17 -0
- package/forms/components/ItemPicker.js +1 -0
- package/forms/components/ListBox.d.ts +7 -0
- package/forms/components/ListBox.js +1 -0
- package/forms/components/Markdown.d.ts +1 -1
- package/forms/components/Markdown.js +1 -1
- package/forms/components/Number.d.ts +7 -0
- package/forms/components/Number.js +1 -0
- package/forms/components/NumberRangeSlider.d.ts +11 -8
- package/forms/components/NumberRangeSlider.js +1 -1
- package/forms/components/NumberSlider.d.ts +9 -8
- package/forms/components/NumberSlider.js +1 -1
- package/forms/components/RadioGroup.d.ts +7 -0
- package/forms/components/RadioGroup.js +1 -0
- package/forms/components/Scanner.d.ts +9 -0
- package/forms/components/Scanner.js +1 -0
- package/forms/components/Section.d.ts +14 -0
- package/forms/components/Section.js +1 -0
- package/forms/components/Text.d.ts +1 -1
- package/forms/components/Text.js +1 -1
- package/forms/components/TextArea.d.ts +1 -1
- package/forms/components/TextArea.js +1 -1
- package/forms/components/TextBox.d.ts +1 -1
- package/forms/components/TextBox.js +1 -1
- package/forms/components/TimePicker.d.ts +7 -0
- package/forms/components/TimePicker.js +1 -0
- package/forms/constants.d.ts +2 -31
- package/forms/constants.js +1 -1
- package/forms/dateUtilities.d.ts +41 -9
- package/forms/dateUtilities.js +1 -1
- package/forms/elements/AutoComplete.d.ts +7 -0
- package/forms/elements/AutoComplete.js +1 -0
- package/forms/elements/Number.d.ts +5 -0
- package/forms/elements/Number.js +1 -0
- package/forms/elements/NumberRangeSlider.d.ts +5 -3
- package/forms/elements/NumberRangeSlider.js +1 -1
- package/forms/elements/NumberSlider.d.ts +0 -3
- package/forms/elements/NumberSlider.js +0 -1
- package/forms/elements/Scanner.d.ts +9 -0
- package/forms/elements/Scanner.js +1 -0
- package/forms/elements/types.d.ts +4 -2
- package/forms/index.d.ts +6 -2
- package/forms/index.js +1 -1
- package/forms/keyboard.d.ts +1 -0
- package/forms/numberFormatter.d.ts +5 -6
- package/forms/numberFormatter.js +1 -1
- package/forms/numberUtilities.d.ts +113 -0
- package/forms/numberUtilities.js +1 -0
- package/forms/presenter.d.ts +1 -0
- package/forms/presenter.js +1 -1
- package/forms/renderers.d.ts +29 -35
- package/forms/renderers.js +1 -1
- package/forms/textUtilities.d.ts +6 -4
- package/forms/textUtilities.js +1 -1
- package/forms/utils.d.ts +71 -18
- package/forms/utils.js +1 -1
- package/index.d.ts +1 -1
- package/index.js +0 -1
- package/libs/version.d.ts +1 -1
- package/libs/version.js +1 -1
- package/package.json +10 -11
- package/forms/LegacyStyles.d.ts +0 -498
- package/forms/LegacyStyles.js +0 -1
- package/forms/assets/arrow.d.ts +0 -4
- package/forms/assets/arrow.js +0 -1
- package/forms/assets/chevron.d.ts +0 -3
- package/forms/assets/chevron.js +0 -1
- package/forms/assets/cross.d.ts +0 -3
- package/forms/assets/cross.js +0 -1
- package/forms/assets/datetime.d.ts +0 -3
- package/forms/assets/datetime.js +0 -1
- package/forms/assets/remove.d.ts +0 -2
- package/forms/assets/remove.js +0 -1
- package/forms/assets/scan.d.ts +0 -4
- package/forms/assets/scan.js +0 -1
- package/forms/assets/stock.d.ts +0 -5
- package/forms/assets/stock.js +0 -1
- package/forms/components/DateRange.d.ts +0 -6
- package/forms/components/DateRange.js +0 -1
- package/forms/components/Navigator.d.ts +0 -1
- package/forms/components/Navigator.js +0 -1
- package/forms/components/ReactDateRangeCalendar.d.ts +0 -6
- package/forms/components/ReactDateRangeCalendar.js +0 -1
- package/forms/components/SyntheticButton.d.ts +0 -1
- package/forms/components/SyntheticButton.js +0 -1
- package/forms/components/TimePickerInput.d.ts +0 -24
- package/forms/components/TimePickerInput.js +0 -1
- package/forms/components/TimerManager.d.ts +0 -7
- package/forms/components/TimerManager.js +0 -1
- package/forms/components/utils.d.ts +0 -2
- package/forms/components/utils.js +0 -1
- package/forms/datetime.d.ts +0 -5
- package/forms/datetime.js +0 -1
- package/forms/files.d.ts +0 -4
- package/forms/files.js +0 -1
- package/forms/geometry.d.ts +0 -4
- package/forms/geometry.js +0 -1
- package/forms/number.d.ts +0 -11
- package/forms/number.js +0 -1
- package/forms/numberSliderUtilities.d.ts +0 -12
- package/forms/numberSliderUtilities.js +0 -1
- package/forms/scanner.d.ts +0 -4
- package/forms/scanner.js +0 -1
- package/forms/selectors.d.ts +0 -10
- package/forms/selectors.js +0 -1
- package/forms/styles/daterange.css +0 -1
- package/forms/styles/daterange.d.ts +0 -1
- package/forms/styles/daterange.js +0 -1
- package/forms/styles/stock.css +0 -1
- package/forms/styles/stock.d.ts +0 -1
- package/forms/styles/stock.js +0 -1
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { BaseFormElementProps } from "../FormElement";
|
|
3
|
+
export declare const dateRangePickerClasses: {
|
|
4
|
+
root: string;
|
|
5
|
+
toLabel: string;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* The component for the "Date Range Picker" Form Element.
|
|
9
|
+
*/
|
|
10
|
+
declare const DateRangePicker: ({ className, component, element }: BaseFormElementProps) => JSX.Element;
|
|
9
11
|
export default DateRangePicker;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
import Box from"@vertigis/react-ui/Box";import BaseDateRangePicker from"@vertigis/react-ui/DateRangePicker";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{useEffect,useRef,useState}from"react";import*as React from"react";import FormElement from"../FormElement.js";import{useFocusCallback}from"../common.js";import{areValuesEqual,convertToDateRangeRef,hasErrorChanged,isInvalidDate}from"../dateUtilities.js";import{makeUniqueId}from"../utils.js";const PREFIX="DateRangePicker",dateRangePickerClasses={root:`${PREFIX}-root`,toLabel:`${PREFIX}-toLabel`},Root=styled(FormElement)(({theme:{spacing:e}})=>({".MuiFormControl-root":{flexGrow:1},[`.${dateRangePickerClasses.toLabel}`]:{marginLeft:e(2),marginRight:e(2),paddingTop:e(2),alignSelf:"center"}})),DateRangePicker=({className:e,component:t,element:r})=>{const[a,o]=useState(-1),[n,l]=useState([!1,!1]),s=useRef(),[i,c]=useState(!1),[m,u]=useState([null,null]),p=useRef(!0);useEffect(()=>{var e=convertToDateRangeRef(r.value),e=[e?.startDate||null,e?.endDate||null];u(e),E(e)},[r.value]),useEffect(()=>{var e,t;p.current?p.current=!1:(e=0===a?n[0]:isInvalidDate(m[0]),t=1===a?n[1]:isInvalidDate(m[1]),l([e,t]),e||t?d({status:"invalid"}):d(),i||-1!==a||r.error||E(m)&&f.post("changed",{name:g,value:r.value}))},[i,a]);const d=e=>{hasErrorChanged(r,e)&&(r.error=e,t.forceUpdate())};var R=!t.enabled;const{host:f,name:g}=t.props,v=f.renderText(r.tooltip),F=useFocusCallback(t),E=e=>{if(e[0]&&e[1]){e={refValueType:"daterange",startDate:e[0],endDate:e[1]};if(!areValuesEqual(r,e))return r.value=e,!0}else if(void 0!==r.value)return!(r.value=void 0);return!1},P=`${makeUniqueId(g)}-input`;return React.createElement(Root,{className:clsx(e,dateRangePickerClasses.root),component:t,element:r,inputId:P},r.error&&React.createElement(FormHelperText,{component:"div",error:!0,role:"alert"},s.current),React.createElement(BaseDateRangePicker,{disabled:R,onChange:e=>{u(e)},onOpen:()=>{c(!0)},onClose:()=>{c(!1)},renderInput:(e,t)=>(s.current=e.inputProps?.placeholder,e.error=!!r.error&&n[0],e.inputProps={...e.inputProps,id:P,title:v,onBlur:()=>{o(-1)},onFocus:()=>{o(0)}},e.inputRef=F,t.error=!!r.error&&n[1],t.inputProps={...t.inputProps,title:v,onBlur:()=>{o(-1)},onFocus:()=>{o(1)}},React.createElement(React.Fragment,null,React.createElement(FormLabelTextField,{...e}),React.createElement(Box,{className:dateRangePickerClasses.toLabel}," ",f.renderText("@common-to")," "),React.createElement(FormLabelTextField,{...t}))),value:m}))};export default DateRangePicker;export{dateRangePickerClasses};
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
declare const _default: (props: DateTimePickerProps) => JSX.Element;
|
|
9
|
-
export default _default;
|
|
2
|
+
import { BaseFormElementProps } from "../FormElement";
|
|
3
|
+
/**
|
|
4
|
+
* The component for the "Date Time Picker" Form Element.
|
|
5
|
+
*/
|
|
6
|
+
declare const DateTimePicker: ({ className, component, element }: BaseFormElementProps) => JSX.Element;
|
|
7
|
+
export default DateTimePicker;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
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,makeProperFormat,makeProperValue,updateElementValue}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}})=>({"& .MuiClock-amButton, .MuiClock-pmButton":{"&.Mui-focusVisible":{color:e.action.active}}})),DateTimePicker=({className:e,component:t,element:r})=>{const[a,o]=useState(!1),[l,m]=useState(!1),[i,s]=useState(null),n=useRef(),c=useRef(!0),{host:u,name:p}=t.props;var d=useFocusCallback(t);const f=u.renderText(r.tooltip),k=makeProperFormat(r.value,r.format),P=Calendar.useNative(),v="datetime";useEffect(()=>{var e=makeProperValue(r.value,P);updateElementValue(r,e,v,k,P),s(e||null)},[r.value]),useEffect(()=>{c.current?c.current=!1:l||a||(isInvalidDate(i)?F({status:"invalid"}):(F(),updateElementValue(r,i,v,k,P)&&u.post("changed",{name:p,value:r.value})))},[l,a]);const F=e=>{hasErrorChanged(r,e)&&(r.error=e,t.forceUpdate())},T=`${makeUniqueId(p)}-input`,E=u.renderText(r.prompt);return React.createElement(FormElement,{className:e,component:t,element:r,inputId:T},r.error&&React.createElement(FormHelperText,{component:"div",error:!0,role:"alert"},n.current),React.createElement(StyledDateTimePicker,{disabled:!t.enabled,key:"date-picker",inputRef:d,onChange:e=>{s(e)},onOpen:()=>{m(!0)},onClose:()=>{m(!1)},renderInput:e=>(n.current=e.inputProps?.placeholder,e.error=!!r.error,e.inputProps={...e.inputProps,id:T,onBlur:()=>{o(!1)},onFocus:()=>{o(!0)},placeholder:E||e.inputProps?.placeholder,title:f},React.createElement(FormLabelTextField,{...e})),value:i}))};export default DateTimePicker;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { BaseFormElementProps } from "../FormElement";
|
|
3
|
+
/**
|
|
4
|
+
* The component for the "Drop Down List" Form Element.
|
|
5
|
+
*/
|
|
6
|
+
declare const DropDownList: ({ className, component, element }: BaseFormElementProps) => JSX.Element;
|
|
7
|
+
export default DropDownList;
|
|
@@ -0,0 +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,sortItems}from"../utils.js";const DEFAULT_VALUE="__default",DropDownList=({className:e,component:a,element:r})=>{const{host:o,name:n}=a.props;var t=`${makeUniqueId(n)}-input`;const m=sortItems(r);var l=a.enabled,s=o.renderText(r.tooltip);return React.createElement(FormElement,{className:e,component:a,element:r,inputId:t},React.createElement(NativeSelect,{disabled:!l,inputProps:{id:t},inputRef:e=>renderFocus(e,n,o),onChange:e=>{var t=e.currentTarget.value,e=m[t].value;r.current=t,r.value=e,a.forceUpdate(),o.post("changed",{name:n,item:t,value:e})},title:s,value:r.current||DEFAULT_VALUE},void 0===r.current&&React.createElement("option",{key:"none",value:DEFAULT_VALUE,disabled:!0},o.renderText(r.prompt)),Object.keys(m).map(e=>{var t=m[e],a=o.renderText(t.label),r=t.styleName?makeSafeClassName(t.styleName):void 0;return React.createElement("option",{className:r,key:e,value:e,title:o.renderText(t.tooltip),disabled:!1===t.enabled},a)})))};export default DropDownList;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { BaseFormElementProps } from "../FormElement";
|
|
3
|
+
export declare const filePickerClasses: {
|
|
4
|
+
file: string;
|
|
5
|
+
label: string;
|
|
6
|
+
list: string;
|
|
7
|
+
};
|
|
8
|
+
declare const FilePicker: ({ className, component, element }: BaseFormElementProps) => JSX.Element;
|
|
9
|
+
export default FilePicker;
|
|
@@ -0,0 +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,{color:"primary",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,{host:a,inline:!0,text:r.prompt||""}))));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};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { FormComponent } from "../FormComponent";
|
|
3
|
+
interface FormProps {
|
|
4
|
+
/** The CSS class name of the root element. */
|
|
5
|
+
className?: string;
|
|
6
|
+
/**
|
|
7
|
+
* The `FormComponent` being used to render the Form Elements within this Component.
|
|
8
|
+
*/
|
|
9
|
+
component: FormComponent;
|
|
10
|
+
}
|
|
11
|
+
export declare const formClasses: {
|
|
12
|
+
body: string;
|
|
13
|
+
footer: string;
|
|
14
|
+
formElementContent: string;
|
|
15
|
+
formElementTitle: string;
|
|
16
|
+
formElementWithTitleBeside: string;
|
|
17
|
+
header: string;
|
|
18
|
+
main: string;
|
|
19
|
+
root: string;
|
|
20
|
+
row: string;
|
|
21
|
+
};
|
|
22
|
+
declare const Form: ({ className, component }: FormProps) => JSX.Element;
|
|
23
|
+
export default Form;
|
|
@@ -0,0 +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{sort}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:[]},a={host:i,type:"body",children:[]},l={host:i,type:"main",children:[]},m={host:i,type:"footer",children:[]},s={host:i,type:"body",children:[]},c={},d=[];function f(e){return"Section"!==e}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===a||e===m?`${e.type}-section`:e.name}const u=sort(t.props.host.form.elements);for(const b in u){var y,E=u[b];if(!0!==(g=E).hoisted&&(!1!==g.visible&&f(g.type)))if(!0!==E.overlay){let e=function(e){if(void 0===e)return a;if("header"===e)return n;if("footer"===e)return m;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:b,host:i,type:"element",name:b}))}else s.children.push(React.createElement(FormElementComponent,{key:b,host:i,type:"element",name:b}))}var g;const C=[];if(0<n.children.length&&C.push(React.createElement(FormComponent,{key:"header",...n})),0<s.children.length)C.push(React.createElement(FormComponent,{key:"main",...s}));else{R(a);let e=void 0,t=0;for(const k of d){var F=k.name;i.isAccordionSection(u[F])?p(F)&&(e?e.push(k):e=[k]):(e&&(x(e,++t),e=void 0),p(F)&&R(k))}e&&(x(e,++t),e=void 0),0<l.children.length&&C.push(React.createElement(FormComponent,{key:"main",...l}))}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===a?"body":`$${e.name}`;return React.createElement(FormComponent,{key:t,...e})}}function R(e){e=v(e);e&&l.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"};l.children.push(React.createElement(FormComponent,{key:`accordionGroup${t}`,...e}))}return 0<m.children.length&&C.push(React.createElement(FormComponent,{key:"footer",...m})),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")}},C))};export default Form;export{formClasses};
|
|
@@ -0,0 +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:i,name:n}=t.props;var o=r.size;let a=5;"number"==typeof o&&(a=1<o?Math.ceil(o):1),"number"==typeof o&&(a=1<o?Math.ceil(o):1);let l=[],c=[],s="",m=r.value=sanitizeGeometryRef(r.value);void 0!==m&&(l=m.geometry,B=r.itemLabel,Array.isArray(B)?c=B:(c=[],text.isMarkdown(B)?B.markdown&&(s=B):text.isStatus(B)?B.status&&(s=B.status):B&&(s=B)));let u=r.state;void 0!==u&&null!==u||(u=r.state=[]);const[d,p]=useState([]);const f=e=>{let t=u[e];return void 0!==t&&null!==t||(u.length<=e&&(u.length=e,u.push({})),t=u[e]),t},v=t=>()=>{1<l.length?(l.splice(t,1),u.splice(t,1),t<c.length&&c.splice(t,1)):(r.value=void 0,r.state=void 0);let e=[];for(const m of d)m<t?e.push(m):m>t&&e.push(m-1);p(e),i.post("changed",{name:n,value:m})};var h=e=>{t.enabled&&v(e)()},g=(e,t,r)=>{const o=f(e);o.focused=t,o.pending=r,i.renderState(n,"geometry",u)};let k=t.enabled;const y=[];if(void 0!==m){k=t.enabled&&m.geometry.length<a;var b=i.renderText("@geometry-picker-remove-item-label");for(const I of m.geometry){var x=y.length;f(x).content=I;var E=`checkbox-list-label-${x}`;y.push(React.createElement(GeometryPickerListItem,{deleteItem:h,disablePadding:!0,itemIndex:x,key:"$"+x,secondaryAction:React.createElement(IconButton,{"aria-label":b,className:"delete",disabled:!t.enabled,edge:"end",onClick:v(x),ref:e=>renderFocus(e,n,i),title:b},React.createElement(Trash,null)),updateHighlight:g},React.createElement(ListItemButton,{onClick:(o=>()=>{var e=d.indexOf(o);const t=[...d],r=f(o);-1===e?(r.checked=!0,t.push(o)):(r.checked=!1,t.splice(e,1)),p(t)})(x),ref:(t=>e=>{null!==e&&(e.disabled||i.renderFocus(e,n),e.checked=!!f(t).checked)})(x),selected:-1!==d.indexOf(x)},React.createElement(Markdown,{host:i,id:E,inline:!0,text:c[x]||s}))))}}const R=()=>{i.post("clicked",{name:n,value:m})};var B=i.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=>{i.renderState(n,"geometry",null===e?void 0:u)}},React.createElement(List,null,y),React.createElement(Box,null,React.createElement(Button,{color:"primary",disabled:!k,onClick:R,ref:e=>renderFocus(e,n,i),startIcon:React.createElement(Plus,null),title:B,variant:"outlined"},React.createElement(Markdown,{host:i,inline:!0,text:r.prompt||""}))))};export default GeometryPicker;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { ListItemProps } from "@vertigis/react-ui/ListItem";
|
|
3
|
+
interface GeometryPickerListItemProps extends ListItemProps {
|
|
4
|
+
/**
|
|
5
|
+
* Numeric index referring to this item's position in the list.
|
|
6
|
+
*/
|
|
7
|
+
itemIndex: number;
|
|
8
|
+
/**
|
|
9
|
+
* Callback for when the user presses "Delete" while this item is focused.
|
|
10
|
+
*/
|
|
11
|
+
deleteItem: (itemIndex: number) => void;
|
|
12
|
+
/**
|
|
13
|
+
* Callback for updating the highlight style of the associated graphic on the map.
|
|
14
|
+
*/
|
|
15
|
+
updateHighlight: (itemIndex: number, focused: boolean, hovered: boolean) => void;
|
|
16
|
+
}
|
|
17
|
+
declare const _default: (props: GeometryPickerListItemProps) => JSX.Element;
|
|
18
|
+
/**
|
|
19
|
+
* A GeometryPickerListItem is shown in the Geometry Picker form element.
|
|
20
|
+
* Its purpose is to aid with detecting changes in focus and hover state to
|
|
21
|
+
* aid with updating the styling of the corresponding graphics on the map.
|
|
22
|
+
*/
|
|
23
|
+
export default _default;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import ListItem from"@vertigis/react-ui/ListItem";import*as React from"react";import{useEffect,useState}from"react";import{getKeyString}from"../keyboard.js";export default e=>{const[t,r]=useState(!1),[a,o]=useState(!1),{children:s,className:u,itemIndex:i,deleteItem:m,updateHighlight:c,...n}=e;return useEffect(()=>{c(i,t,a)},[t,a]),React.createElement(ListItem,{className:u,onBlurCapture:()=>r(!1),onFocusCapture:()=>r(!0),onKeyDownCapture:e=>{"delete"===getKeyString(e)&&m(i)},onMouseOut:()=>o(!1),onMouseOver:()=>o(!0),...n},s)};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { BaseFormElementProps } from "../FormElement";
|
|
3
|
+
/**
|
|
4
|
+
* The component for the "Horizontal Rule" Form Element.
|
|
5
|
+
*/
|
|
6
|
+
declare const HorizontalRule: ({ className, component, element }: BaseFormElementProps) => JSX.Element;
|
|
7
|
+
export default HorizontalRule;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import Divider from"@vertigis/react-ui/Divider";import{styled}from"@vertigis/react-ui/styles";import clsx from"clsx";import*as React from"react";import{FormElementTypes}from"../constants.js";import{makeSafeClassName}from"../utils.js";const Root=styled(Divider)(({theme:{spacing:e}})=>({marginBottom:e(3),marginTop:e(3)})),HorizontalRule=({className:e,component:t,element:m})=>React.createElement(Root,{className:clsx(e,FormElementTypes.HORIZONTALRULE,{[makeSafeClassName(t.props.name)]:!!t.props.name,[makeSafeClassName(m.styleName)]:!!m.styleName})});export default HorizontalRule;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { BaseFormElementProps } from "../FormElement";
|
|
3
|
+
/**
|
|
4
|
+
* The component for the "Image" Form Element.
|
|
5
|
+
*/
|
|
6
|
+
declare const Image: ({ className, component, element }: BaseFormElementProps) => JSX.Element;
|
|
7
|
+
export default Image;
|
|
@@ -0,0 +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})=>{const r=t.props["host"];let m,l;var n=o.size;"number"==typeof n&&(l=n,m=n),"object"==typeof n&&("number"==typeof n.width&&(m=n.width),"number"==typeof n.height&&(l=n.height));let a;n=o.value;"string"==typeof n&&(a=n);n=r.renderText(o.tooltip);return React.createElement(Root,{className:e,component:t,element:o},React.createElement("img",{src:a,alt:n,title:n,width:m,height:l}))};export default Image;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { BaseFormElementProps } from "../FormElement";
|
|
3
|
+
export declare const itemPickerClasses: {
|
|
4
|
+
button: string;
|
|
5
|
+
clearIcon: string;
|
|
6
|
+
horizontal: string;
|
|
7
|
+
item: string;
|
|
8
|
+
items: string;
|
|
9
|
+
};
|
|
10
|
+
export interface ItemPickerProps extends BaseFormElementProps {
|
|
11
|
+
/**
|
|
12
|
+
* Defines the space between immediate children.
|
|
13
|
+
*/
|
|
14
|
+
spacing?: number;
|
|
15
|
+
}
|
|
16
|
+
declare const ItemPicker: ({ className, component, element, spacing }: ItemPickerProps) => JSX.Element;
|
|
17
|
+
export default ItemPicker;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import Button from"@vertigis/react-ui/Button";import ButtonGroup from"@vertigis/react-ui/ButtonGroup";import Checkbox from"@vertigis/react-ui/Checkbox";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 from"@vertigis/react-ui/ListItemText";import Radio from"@vertigis/react-ui/Radio";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,".MuiListItemText-primary":{fontWeight:e.fontWeightRegular}}}}})),ItemPicker=({className:e,component:r,element:n,spacing:t})=>{const a=r.props["host"],i=r.props.name;void 0===t&&(t=1);const s=n.items||{};let c,m,l,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,i),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 i in e)d.keyToIndex[i]=d.length,d.push(e[i])}();const g=[];let k;switch(n.selectionMode){case"single":k="radio";break;case"multiple":k="checkbox"}for(const P in s){var I,v,h,R,x=s[P];p(P).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&&(v=(I=r.enabled&&!1!==x.enabled)&&!!k,h=a.renderText(x.tooltip),R=clsx(itemPickerClasses.item,x.styleName?makeSafeClassName(x.styleName):void 0),x=React.createElement(Markdown,{host:a,text:x.label}),g.push(React.createElement(ListItem,{className:R,disabled:!I,disablePadding:!0,key:P},React.createElement(ListItemButton,{className:itemPickerClasses.button,onClick:v?(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(),r.forceUpdate(),a.post("changed",{name:i,value:c}),a.renderState(i,"geometry",d)})(P):void 0,tabIndex:I?void 0:-1,title:h,"data-id":P,onBlur:I?e=>{delete p(e.currentTarget.dataset.id).focused,a.renderState(i,"geometry",d)}:void 0,onFocus:I?e=>{p(e.currentTarget.dataset.id).focused=!0,a.renderState(i,"geometry",d)}:void 0,onMouseOver:I?e=>{p(e.currentTarget.dataset.id).pending=!0,a.renderState(i,"geometry",d)}:void 0,onMouseOut:I?e=>{delete p(e.currentTarget.dataset.id).pending,a.renderState(i,"geometry",d)}:void 0},"checkbox"===k&&React.createElement(ListItemIcon,null,React.createElement(Checkbox,{edge:"start",checked:!0===s[P]?.checked,disableRipple:!0,inputRef:o(P),tabIndex:-1,value:P})),"radio"===k&&React.createElement(ListItemIcon,null,React.createElement(Radio,{edge:"start",checked:!0===s[P]?.checked,disableRipple:!0,inputRef:o(P),name:r.id,tabIndex:-1,value:P})),React.createElement(ListItemText,null,x)))))}var b=a.renderText(n.prompt);function y(){var e=m.value.toLowerCase();for(const t in s){const o=s[t];if(e){const i=a.renderText(o.label).toLowerCase();o.visible=-1!==i.indexOf(e)}else o.visible=!0}l.hidden=!e,r.forceUpdate()}function C(){m.value="",y()}var E="multiple"===n.selectionMode&&0<g.length,T=clsx(itemPickerClasses.items,{[itemPickerClasses.horizontal]:n.orientation===Orientation.HORIZONTAL});return React.createElement(Root,{className:e,component:r,element:n,ref:function(e){null===e?a.renderState(i,"geometry"):a.renderState(i,"geometry",d)}},React.createElement(Stack,{spacing:t},n.showFilter&&React.createElement(Input,{disabled:!r.enabled,endAdornment:React.createElement(InputAdornment,{position:"end"},React.createElement(IconButton,{disabled:!r.enabled,onClick:C,ref:e=>l=e,title:a.renderText("@common-clear")},React.createElement(Close,{className:itemPickerClasses.clearIcon}))),error:!1,fullWidth:!0,inputRef:e=>{m=e,renderFocus(e,i,a)},onChange:y,onKeyDown:e=>{"escape"===getKeyString(e)&&C()},placeholder:b,type:"text"}),E&&React.createElement(ButtonGroup,{color:"primary",variant:"outlined"},React.createElement(Button,{disabled:!r.enabled,onClick:function(){for(const e in s)f(e,!0);u(),r.forceUpdate(),a.post("changed",{name:i,value:c})}},a.renderText("@common-all")),React.createElement(Button,{disabled:!r.enabled,onClick:function(){for(const e in s)f(e,!1);u(),r.forceUpdate(),a.post("changed",{name:i,value:c})}},a.renderText("@common-none"))),React.createElement(List,{className:T,dense:!0},g)))};export default ItemPicker;export{itemPickerClasses};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { BaseFormElementProps } from "../FormElement";
|
|
3
|
+
export declare const listBoxClasses: {
|
|
4
|
+
select: string;
|
|
5
|
+
};
|
|
6
|
+
declare const ListBox: ({ className, component, element }: BaseFormElementProps) => JSX.Element;
|
|
7
|
+
export default ListBox;
|
|
@@ -0,0 +1 @@
|
|
|
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 FormElement from"../FormElement.js";import{renderFocus}from"../common.js";import{makeSafeClassName,makeUniqueId,sortItems}from"../utils.js";const PREFIX="ListBox",listBoxClasses={select:`${PREFIX}-select`},Root=styled(FormElement)(({theme:{spacing:e}})=>({[`.MuiNativeSelect-select.MuiNativeSelect-standard.MuiNativeSelect-multiple.MuiInputBase-input.MuiInput-input.${listBoxClasses.select}`]:{paddingRight:e(1)}})),ListBox=({className:e,component:l,element:a})=>{const{host:o,name:i}=l.props;var t=`${makeUniqueId(i)}-input`;const r=sortItems(a);!function(){const e=[];for(const s in r){var t=r[s];t.checked&&e.push(t)}0===e.length?a.value=void 0:a.value={refValueType:"items",items:e}}();const s=[],n=[];for(const v in r){const f=r[v];var c=o.renderText(f.label);const u=o.renderText(f.tooltip);f.checked=!0===f.checked;var m=clsx(f.styleName?makeSafeClassName(f.styleName):void 0);f.checked&&n.push(v);var d=!1===f.enabled?void 0:!!f.checked;s.push(React.createElement("option",{"aria-selected":d,className:m,key:v,title:u,value:v,disabled:!1===f.enabled},c))}s.length<1&&(l.enabled=!1);const u=o.renderText(a.tooltip)||void 0;let p;return"number"==typeof a.size&&(p=a.size),React.createElement(Root,{className:e,component:l,element:a,inputId:t},React.createElement(Select,{disabled:!l.enabled,inputProps:{"aria-multiselectable":!0,"aria-orientation":"vertical","aria-required":a.require,className:listBoxClasses.select,id:t,role:"listbox",size:p,title:u},inputRef:e=>renderFocus(e,i,o),multiple:!0,native:!0,onChange:e=>{const t=e.target["options"];for(let e=0;e<t.length;e++){var s=t.item(e),a=s.value;r[a].checked=s.selected}l.forceUpdate(),o.post("changed",{name:i})},value:n},s))};export default ListBox;export{listBoxClasses};
|
|
@@ -9,7 +9,7 @@ export interface MarkdownProps extends Omit<BaseMarkdownProps, "markdown" | "san
|
|
|
9
9
|
/** The host that translatest text. */
|
|
10
10
|
host: FormPresenterHost;
|
|
11
11
|
/** The text to be rendered. */
|
|
12
|
-
text: defs.Text;
|
|
12
|
+
text: defs.Text | undefined;
|
|
13
13
|
}
|
|
14
14
|
declare const Markdown: ({ host, text, escapeHtml, linkTarget, ...otherProps }: MarkdownProps) => JSX.Element;
|
|
15
15
|
export default Markdown;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import BaseMarkdown from"@vertigis/react-ui/Markdown";import*as React from"react";import{isMarkdown}from"../textUtilities.js";const Markdown=({host:t,text:e,escapeHtml:a=!0,linkTarget:r="_blank",...n})=>{
|
|
1
|
+
import BaseMarkdown from"@vertigis/react-ui/Markdown";import*as React from"react";import{hasContent,isMarkdown}from"../textUtilities.js";const Markdown=({host:t,text:e,escapeHtml:a=!0,linkTarget:r="_blank",...n})=>{e=t.translateText(e);return hasContent(e)?isMarkdown(e)?React.createElement(BaseMarkdown,{markdown:e.markdown,escapeHtml:a,linkTarget:r,...n}):React.createElement(React.Fragment,null,e):null};export default Markdown;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { BaseFormElementProps } from "../FormElement";
|
|
3
|
+
/**
|
|
4
|
+
* The component for the "Number" Form Elements.
|
|
5
|
+
*/
|
|
6
|
+
declare const NumberComponent: ({ className, component, element }: BaseFormElementProps) => JSX.Element;
|
|
7
|
+
export default NumberComponent;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import Input from"@vertigis/react-ui/Input";import*as React from"react";import{useEffect,useMemo,useRef,useState}from"react";import{DEFAULT_LOCALE}from"../../constants.js";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,isNumeric,isString,makeUniqueId}from"../utils.js";const NumberComponent=({className:e,component:r,element:o})=>{const{host:t,name:n}=r.props;var u=!r.enabled;const[i,a]=useState(!1),[m,s]=useState(""),l=useRef(!0),c=useRef(!1);var p=`${makeUniqueId(n)}-input`;const{decimals:f,inputNumberFormat:d,numberConstraints:b}=useMemo(()=>{var e=o.format,r=getNumberConstraints(e,numberFormatConfiguration),t=sanitizePrecision(e?.precision,r.step,numberFormatConfiguration),n=0<=t?t:void 0,e=0<=t?t:void 0;return{decimals:t,inputNumberFormat:new Intl.NumberFormat(DEFAULT_LOCALE,{minimumFractionDigits:n,maximumFractionDigits:e,useGrouping:!1}),numberConstraints:r}},[o.format]),{maximum:v,minimum:g,step:N}=b,F={fractionalDigits:f,locale:t.deriveLocale()},C=e=>{if("number"==typeof e)return{refValueType:"number",format:{lowerBound:g,precision:f,step:N,upperBound:v},display:t.formatNumber(e,F),numeric:e}},E=e=>null===e?"":d.format(e),y=()=>{var e=isNumeric(m)?parseFloat(m):null,e=null===(e=e)?null:enforceConstraints(e,b),e=C(e);areValuesEqual(o,e)||(o.value=e,t.post("changed",{name:n,value:e}));e=E(e?e.numeric:null);e!==m&&s(e)};useEffect(()=>{l.current?l.current=!1:i||y()},[i,m]),useEffect(()=>{var e=D(o.value),r=null===e?void 0:C(e);areValuesEqual(o,r)||(o.value=r);e=null===e?"":E(e);e!==m&&s(e)},[o.value]);const D=e=>{let r=void 0;if(isNumber(e))r=e;else if(isString(e)){if(!e)return null;r=t.coerceNumber(e)}else"number"==typeof e?.numeric&&(r=e.numeric);return"number"==typeof r&&0*r!=0&&(r=void 0),void 0===r?null:enforceConstraints(r,b)};var R=t.renderText(o.prompt),q=t.renderText(o.tooltip),u=u&&!c.current;return React.createElement(FormElement,{className:e,component:r,element:o,inputId:p},React.createElement(Input,{disabled:u,error:!!o.error,inputProps:{id:p,max:v,min:g,onKeyDown:e=>{var r,t=getKeyString(e);return"enter"===t?(r=e,y(),r.currentTarget.select(),r.stopPropagation(),r.preventDefault(),!1):"escape"===t?(t=e,(e=null===(e=isNumberRef(o.value)?o.value.numeric:null)?"":E(e))!==m&&s(e),t.currentTarget.select(),t.stopPropagation(),t.preventDefault(),!1):void 0},step:N,title:q},inputRef:e=>{null===e||e.disabled||t.renderFocus(e,n)},onBlur:()=>{a(!1)},onChange:e=>{s(e.target.value)},onFocus:()=>{a(!0)},onMouseDown:()=>{c.current=!0},onMouseUp:()=>{c.current=!1},placeholder:R,required:o.require,size:"small",title:q,type:"number",value:m}))};export default NumberComponent;
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}
|
|
8
|
-
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { BaseFormElementProps } from "../FormElement";
|
|
3
|
+
export declare const numberRangeSliderClasses: {
|
|
4
|
+
container: string;
|
|
5
|
+
inputContainer: string;
|
|
6
|
+
toLabel: string;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* The component for the "Number Range Slider" Form Element.
|
|
10
|
+
*/
|
|
11
|
+
declare const NumberRangeSlider: ({ className, component, element }: BaseFormElementProps) => JSX.Element;
|
|
9
12
|
export default NumberRangeSlider;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useEffect,useMemo,useRef,useState}from"react";import*as React from"react";import{
|
|
1
|
+
import Box from"@vertigis/react-ui/Box";import FormLabelTextField from"@vertigis/react-ui/FormLabelTextField";import Slider 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{DEFAULT_LOCALE}from"../../constants.js";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{isNumeric,makeUniqueId,throttle}from"../utils.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%",".MuiSlider-markLabel":{transform:"translateX(-100%)",'&[data-index="0"]':{transform:"none"}},[`.${numberRangeSliderClasses.inputContainer}`]:{marginTop:e(1)," .MuiFormControl-root":{flexGrow:1},[`.${numberRangeSliderClasses.toLabel}`]:{marginLeft:e(2),marginRight:e(2),paddingTop:e(2),alignSelf:"center"}}}})),NumberRangeSlider=({className:e,component:t,element:i})=>{const{host:r,name:a}=t.props;var n=!t.enabled;const{currency:o,customDisplayFormat:m,decimals:s,displayFormat:l,inputNumberFormat:u,numberConstraints:c}=useMemo(()=>{var e=i.format,t=getNumberConstraints(e,numberFormatConfiguration),r=sanitizePrecision(e?.precision,t.step,numberFormatConfiguration),a=0<=r?r:void 0,n=0<=r?r:void 0,n=new Intl.NumberFormat(DEFAULT_LOCALE,{minimumFractionDigits:a,maximumFractionDigits:n,useGrouping:!1});return{currency:e?.currency||DEFAULT_CURRENCY,customDisplayFormat:e?.customDisplayFormat,decimals:r,displayFormat:e?.displayFormat,inputNumberFormat:n,numberConstraints:t}},[i.format]);var d=c["step"],p=c.maximum,g=c.minimum;const[b,f]=useState(!1),[F,v]=useState(!1),[R,C]=useState(["",""]),[S,x]=useState([g,p]),E=useRef(!0),y=useRef(!1),L=`${makeUniqueId(a)}-input`;var N=!1!==i.showMinMaxLabels,T=!!i.showTickMarks,h=!1!==i.manualEntry;const D={currency:o,customDisplayFormat:m,format:l,fractionalDigits:s,locale:r.deriveLocale()},k=e=>null===e?"":u.format(e);useEffect(()=>{if(E.current)E.current=!1;else if(F)M(S);else if(!b){let t=[...S];for(let e=0;e<R.length;e++)isNumeric(R[e])&&(t[e]=parseFloat(R[e]));t=getNumberSliderValues(t,c),S[0]===t[0]&&S[1]===t[1]||x(t),A(i.value,t)||(i.value=t,r.post("changed",{name:a,value:i.value}));var e=[k(t[0]),k(t[1])];e[0]===R[0]&&e[1]===R[1]||C(e)}},[b,F,R]),useEffect(()=>{var e=getNumberSliderValues(i.value,c);A(i.value,e)||(i.value=e),A(S,e)||x(e);e=[k(e[0]),k(e[1])];R[0]===e[0]&&R[1]===e[1]||C(e)},[i.value]);const A=(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])),M=useMemo(()=>throttle(e=>{r.post("dragged",{name:a,value:e})}),[]),U=useFocusCallback(t);var $=r.renderText(i.tooltip),P=n&&!F,I=n&&!y.current,n=h?{max:p,min:g,onBlur:()=>{f(!1)},onFocus:()=>{f(!0)},onMouseDown:()=>{y.current=!0},onMouseUp:()=>{y.current=!1},step:d,title:$}:void 0;return React.createElement(Root,{className:e,component:t,element:i,inputId:`${L}-0`},React.createElement(Box,{className:numberRangeSliderClasses.container},React.createElement(Slider,{disabled:P,getAriaLabel:()=>r.renderText(i.title),getAriaValueText:e=>r.formatNumber(e,D),marks:getMarks(p,g,d,D,N,T),max:p,min:g,onChange:(e,t)=>{v(!0),Array.isArray(t)&&(x(t),C([k(t[0]),k(t[1])]))},onChangeCommitted:()=>{v(!1)},slotProps:{input:()=>({ref:e=>(null===e||e.id||(e.id=`${L}-${e.attributes["data-index"].value}`),U(e))})},step:d,title:$,value:S,valueLabelDisplay:"on",valueLabelFormat:(e,t)=>r.formatNumber(e,D)}),!1!=h&&React.createElement(Stack,{direction:"row",className:numberRangeSliderClasses.inputContainer},React.createElement(FormLabelTextField,{disabled:I,inputProps:n,label:r.renderText("@common-start"),onChange:e=>{C([e.target.value,R[1]])},size:"small",type:"number",value:R[0]}),React.createElement(Box,{className:numberRangeSliderClasses.toLabel}," ",r.renderText("@common-to")," "),React.createElement(FormLabelTextField,{disabled:I,inputProps:n,label:r.renderText("@common-end"),onChange:e=>{C([R[0],e.target.value])},size:"small",type:"number",value:R[1]}))))};export default NumberRangeSlider;export{numberRangeSliderClasses};
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { BaseFormElementProps } from "../FormElement";
|
|
3
|
+
export declare const numberSliderClasses: {
|
|
4
|
+
container: string;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* The component for the "Number Slider" Form Element.
|
|
8
|
+
*/
|
|
9
|
+
declare const NumberSlider: ({ className, component, element }: BaseFormElementProps) => JSX.Element;
|
|
9
10
|
export default NumberSlider;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useEffect,useMemo,useRef,useState}from"react";import*as React from"react";import{
|
|
1
|
+
import Box from"@vertigis/react-ui/Box";import Input from"@vertigis/react-ui/Input";import Slider 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{DEFAULT_LOCALE}from"../../constants.js";import FormElement from"../FormElement.js";import{useFocusCallback}from"../common.js";import{DEFAULT_CURRENCY}from"../numberFormatter.js";import{getNumberSliderValues,areValuesEqual,getMarks,getNumberConstraints,sanitizePrecision}from"../numberUtilities.js";import{isNumeric,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%",".MuiSlider-markLabel":{transform:"translateX(-100%)",'&[data-index="0"]':{transform:"none"}},".MuiInputBase-root":{marginTop:e(1)}}})),NumberSlider=({className:e,component:r,element:i})=>{const{host:t,name:a}=r.props;var o=!r.enabled;const{currency:s,customDisplayFormat:m,decimals:n,displayFormat:u,inputNumberFormat:l,numberConstraints:c}=useMemo(()=>{var e=i.format,r=getNumberConstraints(e),t=sanitizePrecision(e?.precision,r.step),a=0<=t?t:void 0,o=0<=t?t:void 0,o=new Intl.NumberFormat(DEFAULT_LOCALE,{minimumFractionDigits:a,maximumFractionDigits:o,useGrouping:!1});return{currency:e?.currency||DEFAULT_CURRENCY,customDisplayFormat:e?.customDisplayFormat,decimals:t,displayFormat:e?.displayFormat,inputNumberFormat:o,numberConstraints:r}},[i.format]),p=c["step"],d=c.maximum,f=c.minimum,[b,g]=useState(!1),[F,y]=useState(!1),[v,E]=useState(""),[N,C]=useState(f),S=useRef(!0),R=useRef(!1);var x=`${makeUniqueId(a)}-input`,D=!1!==i.showMinMaxLabels,L=!!i.showTickMarks,h=!1!==i.manualEntry;const M={currency:s,customDisplayFormat:m,format:u,fractionalDigits:n,locale:t.deriveLocale()},T=e=>({refValueType:"number",format:{currency:s,customDisplayFormat:m,displayFormat:u,lowerBound:f,precision:n,step:p,upperBound:d},display:t.formatNumber(e,M),numeric:e}),k=e=>null===e?"":l.format(e);useEffect(()=>{var e;S.current?S.current=!1:F?A(N):b||((e=isNumeric(v)?getNumberSliderValues(parseFloat(v),c,!0)[0]:f)!==N&&C(e),e=T(e),areValuesEqual(i,e)||(i.value=e,t.post("changed",{name:a,value:i.value})))},[b,F,v]),useEffect(()=>{var e=getNumberSliderValues(i.value,c,!0)[0],r=T(e);areValuesEqual(i,r)||(i.value=r),N!==e&&C(e);e=k(e);v!==e&&E(e)},[i.value]);const A=useMemo(()=>throttle(e=>{t.post("dragged",{name:a,value:T(e)})}),[]);var I=useFocusCallback(r),U=t.renderText(i.tooltip),V=o&&!F,o=o&&!R.current;return React.createElement(Root,{className:e,component:r,element:i,inputId:x},React.createElement(Box,{className:numberSliderClasses.container},React.createElement(Slider,{disabled:V,getAriaLabel:()=>t.renderText(i.title),getAriaValueText:e=>t.formatNumber(e,M),marks:getMarks(d,f,p,M,D,L),max:d,min:f,onChange:(e,r)=>{y(!0);r=Array.isArray(r)?r[0]:r;C(r),E(k(r))},onChangeCommitted:()=>{y(!1)},slotProps:{input:{id:x,ref:I}},step:p,title:U,value:"number"==typeof N?N:0,valueLabelDisplay:"on",valueLabelFormat:(e,r)=>t.formatNumber(e,M)}),!1!=h&&React.createElement(Input,{disabled:o,error:!!i.error,inputProps:{max:d,min:f,step:p,title:U},onChange:e=>{E(e.target.value)},onFocus:()=>{g(!0)},onBlur:()=>{g(!1)},onMouseDown:()=>{R.current=!0},onMouseUp:()=>{R.current=!1},size:"small",type:"number",value:v})))};export default NumberSlider;export{numberSliderClasses};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { BaseFormElementProps } from "../FormElement";
|
|
3
|
+
/**
|
|
4
|
+
* The component for the "Radio Group" Form Element.
|
|
5
|
+
*/
|
|
6
|
+
declare const RadioGroup: ({ className, component, element }: BaseFormElementProps) => JSX.Element;
|
|
7
|
+
export default RadioGroup;
|
|
@@ -0,0 +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,useState}from"react";import FormElement from"../FormElement.js";import{Orientation}from"../constants.js";import{makeSafeClassName,sortItems as sortAndFilterItems}from"../utils.js";import Markdown from"./Markdown.js";const Root=styled(FormElement)(({theme:{spacing:e}})=>({marginBottom:e(1.5)})),RadioGroup=({className:e,component:t,element:o})=>{const[r,a]=useState(""),{host:m,name:n}=t.props;var s=sortAndFilterItems(o);useEffect(()=>{a(o.current||"")},[o.current]);var i=e=>{null===e||e.disabled||m.renderFocus(e,n)};const l=[];for(const p in s){const f=s[p];var c=t.enabled&&!1!==f.enabled,u=m.renderText(f.tooltip),d=f.styleName?makeSafeClassName(f.styleName):void 0;l.push(React.createElement(FormControlLabel,{className:d,control:React.createElement(Radio,{inputRef:i,onClick:e=>{o.current!==p&&(o.current=p,o.value=f.value,m.post("changed",{name:n,item:p,value:f.value}),a(p))}}),disabled:!c,key:p,label:React.createElement(Markdown,{host:m,text:f.label}),title:u,value:p}))}return React.createElement(Root,{className:e,component:t,element:o},React.createElement(BaseRadioGroup,{name:t.id,row:o.orientation===Orientation.HORIZONTAL,value:r},l))};export default RadioGroup;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { BaseFormElementProps } from "../FormElement";
|
|
3
|
+
export declare const scannerClasses: {
|
|
4
|
+
container: string;
|
|
5
|
+
button: string;
|
|
6
|
+
inputContainer: string;
|
|
7
|
+
};
|
|
8
|
+
declare const Scanner: ({ className, component, element }: BaseFormElementProps) => JSX.Element;
|
|
9
|
+
export default Scanner;
|
|
@@ -0,0 +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};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { BaseFormElementProps } from "../FormElement";
|
|
3
|
+
export declare const sectionClasses: {
|
|
4
|
+
root: string;
|
|
5
|
+
basicSection: string;
|
|
6
|
+
fieldSetSection: string;
|
|
7
|
+
title: string;
|
|
8
|
+
description: string;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* The component for the "Section" Form Element.
|
|
12
|
+
*/
|
|
13
|
+
declare const Section: ({ className, component, element }: BaseFormElementProps) => JSX.Element;
|
|
14
|
+
export default Section;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import Accordion from"@vertigis/react-ui/Accordion";import AccordionSummary from"@vertigis/react-ui/AccordionSummary";import Box from"@vertigis/react-ui/Box";import Typography from"@vertigis/react-ui/Typography/index.js";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{defs}from"../FormHost.js";import{renderAccessibleDescription,renderDescription,renderError}from"../common.js";import{hasContent}from"../textUtilities.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}})=>({".MuiAccordion-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{host:r,name:s}=t.props;let o;null!=i&&i.format&&(o=i.format),o=void 0!==o&&null!==o?o:defs.DEFAULT_SECTION_FORMAT;const n=r.isAccordionSection(i);var a,c,l=n||r.isCollapsibleSection(i),d=`${makeUniqueId(s)}-input`,p=(a=i,c=d,hasContent(a.title)?React.createElement(Typography,{className:sectionClasses.title,id:`${c}-label`,variant:"h6"},React.createElement(Markdown,{host:r,inline:!0,text:a.title})):null),m=renderDescription(r,i,d,sectionClasses.description),f=renderAccessibleDescription(r,i,d),g=renderError(r,i),d={"aria-labelledby":p?.props?.id,"aria-details":m?.props?.id,"aria-describedby":f?.props?.id},g=[m,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 l?React.createElement(AccordionRoot,{className:e,expanded:!0!==i.collapsed,onChange:(e,o)=>{n&&o?r.updateAccordionSections(s):(i.collapsed=!o,t.forceUpdate())},...d},React.createElement(AccordionSummary,{expandIcon:React.createElement(ChevronDown,null),ref:e=>{null!==e&&i.collapsed&&r.renderFocus(e,s)}},p),...g):React.createElement(BoxRoot,{className:e,component:"section",...d},p,React.createElement(Box,null,...g))};export default Section;export{sectionClasses};
|
|
@@ -4,5 +4,5 @@ import { BaseFormElementProps } from "../FormElement";
|
|
|
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: ({ component, element }: BaseFormElementProps) => JSX.Element;
|
|
7
|
+
declare const Text: ({ className, component, element }: BaseFormElementProps) => JSX.Element;
|
|
8
8
|
export default Text;
|
package/forms/components/Text.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import*as React from"react";import FormElement from"../FormElement.js";const Text=({
|
|
1
|
+
import*as React from"react";import FormElement from"../FormElement.js";const Text=({className:e,component:t,element:m})=>React.createElement(FormElement,{className:e,component:t,element:m});export default Text;
|
|
@@ -3,5 +3,5 @@ import { BaseFormElementProps } from "../FormElement";
|
|
|
3
3
|
/**
|
|
4
4
|
* The component for the "Text Area" Form Element.
|
|
5
5
|
*/
|
|
6
|
-
declare const TextArea: ({ component, element }: BaseFormElementProps) => JSX.Element;
|
|
6
|
+
declare const TextArea: ({ className, component, element }: BaseFormElementProps) => 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=({
|
|
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})=>{const[a,n]=useState(8),[o,u]=useState(""),[l,s]=useState("soft"),{host:m,name:p}=t.props;var i=`${makeUniqueId(p)}-input`,f=r.maxLength,c=m.renderText(r.prompt),d=r.readOnly,v=m.renderText(r.tooltip);useEffect(()=>{"number"==typeof r.size&&n(r.size)},[r.size]),useEffect(()=>{let e="";var t=r.value;"string"==typeof t&&(e=t),r.value=e,u(e)},[r.value]),useEffect(()=>{"string"==typeof r.wrap&&-1!==["hard","soft","off"].indexOf(r.wrap)&&s(r.wrap)},[r.wrap]);return React.createElement(FormElement,{className:e,component:t,element:r,inputId:i},React.createElement(Input,{disabled:!t.enabled,fullWidth:!0,id:i,inputProps:{maxLength:f,onKeyDown:e=>{e.stopPropagation()},title:v,wrap:l},inputRef:e=>{null===e||e.disabled||m.renderFocus(e,p)},multiline:!0,onBlur:e=>{e=e.target.value;e!=r.value&&(r.value=e,m.post("changed",{name:p,value:e}))},onChange:e=>{e=e.target.value;e!=o&&u(e)},placeholder:c,readOnly:d,required:r.require,rows:a,value:o}))};export default TextArea;
|
|
@@ -17,5 +17,5 @@ interface TextBoxProps extends BaseFormElementProps {
|
|
|
17
17
|
/**
|
|
18
18
|
* The component for the "Text Box" and "Password Box" Form Elements.
|
|
19
19
|
*/
|
|
20
|
-
declare const TextBox: ({ component, element, type }: TextBoxProps) => JSX.Element;
|
|
20
|
+
declare const TextBox: ({ className, component, element, type }: TextBoxProps) => JSX.Element;
|
|
21
21
|
export default TextBox;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import Input from"@vertigis/react-ui/Input";import*as React from"react";import{useEffect,useState}from"react";import FormElement from"../FormElement.js";import{getKeyString}from"../keyboard.js";import{makeUniqueId}from"../utils.js";const TextBox=({
|
|
1
|
+
import Input from"@vertigis/react-ui/Input";import*as React from"react";import{useEffect,useState}from"react";import FormElement from"../FormElement.js";import{getKeyString}from"../keyboard.js";import{makeUniqueId}from"../utils.js";const TextBox=({className:e,component:r,element:a,type:t})=>{const[n,o]=useState(""),{host:u,name:l}=r.props;var p=`${makeUniqueId(l)}-input`,m="password"===t,i=m?void 0:a.maxLength,s=u.renderText(a.prompt),c=m?void 0:a.readOnly,m=u.renderText(a.tooltip);useEffect(()=>{let e="";var t=a.value;"string"==typeof t?e=t:"number"==typeof t&&(e=u.formatNumber(t)),a.value!==e&&(a.value=e,r.forceUpdate()),o(e)},[a.value]);const d=e=>{a.value=e,u.post("changed",{name:l,value:e})};return React.createElement(FormElement,{className:e,component:r,element:a,inputId:p},React.createElement(Input,{disabled:!r.enabled,fullWidth:!0,id:p,inputProps:{maxLength:i,onKeyDown:e=>{var t=getKeyString(e);return"enter"===t?(e=>{const t=e.currentTarget;var r=t.value;if(r!==a.value)return d(r),t.select(),e.stopPropagation(),e.preventDefault(),!1})(e):"escape"===t?(e=>{const t=e.currentTarget;if(t.value!==a.value)return o(a.value),t.select(),e.stopPropagation(),e.preventDefault(),!1})(e):void 0},title:m},inputRef:e=>{null===e||e.disabled||u.renderFocus(e,l)},onBlur:e=>{e=e.target.value;e!=a.value&&d(e)},onChange:e=>{e=e.target.value;e!=n&&o(e)},placeholder:s,readOnly:c,required:a.require,type:t,value:n}))};export default TextBox;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { BaseFormElementProps } from "../FormElement";
|
|
3
|
+
/**
|
|
4
|
+
* The component for the "Time Picker" Form Element.
|
|
5
|
+
*/
|
|
6
|
+
declare const TimePicker: ({ className, component, element }: BaseFormElementProps) => JSX.Element;
|
|
7
|
+
export default TimePicker;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import FormHelperText from"@vertigis/react-ui/FormHelperText";import FormLabelTextField from"@vertigis/react-ui/FormLabelTextField";import BaseTimePicker from"@vertigis/react-ui/TimePicker";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,makeProperFormat,makeProperValue,updateElementValue}from"../dateUtilities.js";import{makeUniqueId}from"../utils.js";const StylableTimePicker=e=>{const{PopperProps:r={},className:t,...a}=e;return React.createElement(BaseTimePicker,{PopperProps:{...r,className:clsx(r.className,t)},...a})},StyledTimePicker=styled(StylableTimePicker)(({theme:{palette:e}})=>({"& .MuiClock-amButton, .MuiClock-pmButton":{"&.Mui-focusVisible":{color:e.action.active}}})),TimePicker=({className:e,component:r,element:t})=>{const[a,o]=useState(!1),[l,m]=useState(!1),[i,s]=useState(null),n=useRef(),c=useRef(!0),{host:u,name:p}=r.props;var d=useFocusCallback(r);const f=u.renderText(t.tooltip),k=makeProperFormat(t.value,t.format),P=Calendar.useNative(),v="time";useEffect(()=>{var e=makeProperValue(t.value,P);updateElementValue(t,e,v,k,P),s(e||null)},[t.value]),useEffect(()=>{c.current?c.current=!1:l||a||(isInvalidDate(i)?F({status:"invalid"}):(F(),updateElementValue(t,i,v,k,P)&&u.post("changed",{name:p,value:t.value})))},[l,a]);const F=e=>{hasErrorChanged(t,e)&&(t.error=e,r.forceUpdate())},T=`${makeUniqueId(p)}-input`,E=u.renderText(t.prompt);return React.createElement(FormElement,{className:e,component:r,element:t,inputId:T},t.error&&React.createElement(FormHelperText,{component:"div",error:!0,role:"alert"},n.current),React.createElement(StyledTimePicker,{disabled:!r.enabled,key:"date-picker",inputRef:d,onChange:e=>{s(e)},onOpen:()=>{m(!0)},onClose:()=>{m(!1)},renderInput:e=>(n.current=e.inputProps?.placeholder,e.error=!!t.error,e.inputProps={...e.inputProps,id:T,onBlur:()=>{o(!1)},onFocus:()=>{o(!0)},placeholder:E||e.inputProps?.placeholder,title:f},React.createElement(FormLabelTextField,{...e})),value:i}))};export default TimePicker;
|