-
Notifications
You must be signed in to change notification settings - Fork 9
Changelog (V1)
Ruo Ling edited this page Dec 1, 2025
·
4 revisions
- Gracefully handle conditional validation targeting conditionally rendered field
- Prevent entry of 'e' or 'E' notation in
numeric-field
- Gracefully handle if uploaded file's fileUrl is not available
- Support default value from multipart
e-signature-field - Support custom headers and session id in
e-signature-fieldupload
- Ensure submit button disabled state is applied on schema change
- Fixed occasional invalid location data in
location-fieldduring rapid mobile selection -
image-upload- Show image review modal only when all the images have been uploaded
- "Add photos" button no longer trigger a form submission
- Add React 19 support
- Serve
buttonas link via newhrefandtargetproperties
- Refined
TFrontendEngineValuestyping to not unionise allTvalue typings - Fixed
unsafe-evalContent Security Policy error due to HEIC image processing
- Prevent
location-fieldfrom extending beyond its parent's width
- New
loadingandloadedevents foriframe
- Fixed crashes due to empty options in multi-select and nested-multi-select fields
- Fixed an issue on iOS26 where opening the keyboard caused the location modal to resize incorrectly
- Add optional duration to
location-fieldmapPanZoom props
- Updated to Axios 1.10.0 to resolve vulnerabilities
-
image-upload- Fixed intermittent upload failures on Android devices
- Fixed incorrect cropping for smaller images
-
contact-field's defaultValue now accepts phone numbers without spacing
- reset button now resets objects to empty objects if
ignoreDefaultValues=true
- image-upload / file-upload now strip invalid characters in uploaded file name
- Removed unsafe-eval usage in image-upload
- Support schema and custom z-sorting in label hint of
filter-itemandfilter-checkbox - Accept
sessionIdinimage-uploadandfile-uploadrequest payload
- New
uenvalidation
- Fix validation failure when rule is not available on Yup schema
- New
bufferRadiusinlocation-fieldto limit distance in reverse geocoding
- New
clearErrors()method to clear the errors in some or all fields - Ability to assign error message to individual fields on an
array-field
- Prevent incorrect firing of error message when clicking a textarea pill
- Ability to set
hidden-fieldvalue from schema to make the field uneditable - New
notMatchesrule to validate if value does not match a given regex - New
notEqualsFieldrule to validate if value does not equal another field - New
subLabelforcheckboxoptions of toggle styleType
-
iframecomponent - Add support for
accordiontitle to accept Frontend Engine schema - Exclusion the 3 prefix in
contact-fieldSingapore house number validation - Update of
image-uploaddescription grey colour to neutral 3
- Add support for async validation
- Add
inclusiveflag forwithinDaysvalidation and conditional rendering rule
- Fix
textareaerror message and counter not being on the same line - Fix validation and conditional rendering failing for the last date in
withinDays - Exclude past/future dates for
beyondDays - Fix upload error in Safari browser for
image-uploadandfile-upload
-
file-upload- New request headers option in uploadOnAddingFile
- New upload-error event on upload error
- HTML support in field error message
- Ability to set individual file errors with setErrors
- Fixed excessive compression of image in certain cases after user draw on the image uploaded
- Fixed
file-uploadandimage-uploadfile type validation of zip-like files (.xlsx, .ppt, etc.) -
array-fieldnow inheritsdefaultValues,restoreMode,revalidationMode,validationModeandstripUnknown
- New
beyondDaysvalidation indate-field - New
beyondDaysconditional rendering
- Fixed error with assigning custom validation to object-based fields like
date-range-field -
file-uploadno longer reject jpg files despite declaring it as an accepted file type
- Standardised the icons used in
image-uploadandlocation-field - New
withinDaysvalidation indate-field - New
withinDaysconditional rendering
- Ensure location modal is populated if
location-fieldis populated - Fixed wrong validity in
array-fieldwhen a section is added / removed - Fixed custom validation error for object-based fields like
date-range-field
- Extraction of date/time and GPS EXIF data from images added in
image-upload
- Fixed prefilling for fields dependent on shown rule not working in some cases
- Support schema in
reviewitem value - Expose aria labels for slider inputs
-
image-upload- Prevent breaking of words due to word wrap in error messages
- Increased top padding for confirmation modals
- Fix to
onValueChangeprop to call when value or form validity has changed - Ensure clearing of boolean values when
restoreMode=none
-
customOffset,position,underlineHoverStyleandunderlineStyleoptions forpopover - New
stretchoption forreviewbox variant
- Grammar fix to upload error message
- New
subLabelproperty forradiofield oftogglestyle type
- More accurate middle truncation of file name in
image-upload - Fixed auto focus bug on iOS where
text-fieldis auto focused on value change
- New
error-fieldcomponent - New
imageReviewModalStylesforimage-uploadto style image review modal - New
backgroundoption for review box variant - Support disabling of default content padding in accordion
- Support schema label in
checkboxandradio - Deprecated
IWrapperSchemaand replaced withTWrapperSchema
- New
array-fieldcomponent
- Fixed
image-uploadfield to restrict jpeg in the correct mime type - Fixed
numeric-fieldto submit values as numbers
- New
popoveruiType - New
toggleFilterButtonStyleforfilterto customise button style - New
useToggleContentWidthforfilter-checkboxto fit checkbox toggle to its contents on mobile - Support schema as children in
alertelement -
Breaking change
textui types withparapgraph: truenow comes with a bottom margin (ref)
- Fixed crashing while checking for file type in
file-uploadandimage-upload -
image-upload- Fixed image prompts padding
- Fixed issue where user cannot upload the same image twice in a row
- New
select-histogramuiType
- New
timelinecomponent - Addition of retry button to
e-signature-field - New
addOnoption to add icon before / after input field foremail-field,numeric-fieldandtext-field - New
zIndexoption in label object to control z-sorting of label hint - New uiType argument in
addFieldEventListener,removeFieldEventListeneranddispatchFieldEvent- This enables typings and code hinting in the above-mentioned functions
- Current arguments without uiType is still supported
- Standardised default error messages to end with a period (.) and ability to override them through new validation configs
- Modals of date and select fields are now rendered independent of their parents, use the new
zIndexordropdownZIndexto override the modal's z sorting accordingly
- Updates to look & feel of checkbox / radio buttons with nested fields
- Note: This update removes the default padding for the nested fields, please apply the necessary padding from the schema / styling
- Added
imgsupport in parsing of html contents for text component
-
image-upload- Fixed issue where
captureis not being applied to the image review modal -
removePendingImages: truenow keeps all uploaded images and custom error muted images
- Fixed issue where
- new
searchBarIconforlocation-fieldto set icon in location search input
-
e-signature-fieldnow dismisses loading indicator on upload error -
location-field- Ensure
get-selectable-pinsis triggered beyond the first rendering of the location modal - Ensure
formValuesis not undefined in event
- Ensure
- Ensure
setWarnings/setErrorscan work in event listeners
- New
e-signature-field
- Fixed issue where custom component schema type is not inherited when nested in other schemas
- Fixed issue where location-field's
recenterAndTriggerEventin being triggered incorrectly
- New
accordionelement - Removal of nesting of fields for the error object in
setErrors(), please target the field directly
-
setErrors()now supports targeting nested radio button option fields -
thenandotherwiseconditional validation typings now inherits custom validation typings - Ensure non-conditional validation rules can still work together with conditional validation rules
-
location-field- Fixed empty form values being passed to event listeners on dismissing location modal
-
image-uploadno longer re-parses default values when non default values are removed
- HTML contents is now based on Design System's Markup component, this comes with prescribed styles for certain elements like links and lists
-
image-upload- Retain custom muted error after going through image review
- Preserve and submit
uploadResponsepopulated fromdefaultValues
- New
addressFieldPlaceholderforlocation-fieldto set placeholder for location search field in location modal -
image-upload- New
dismiss-review-modalevent - New
uploadedevent -
update-file-validationevent is now renamed asupdate-image-status - New muted error style for individual image
- New
- Edit button in
location-fieldno longer cause a form submission
-
location-field- removed
before-get-current-locationandrefresh-current-locationevents` - added
click-refresh-current-locationandtrigger-get-current-location
- removed
- Amended file exceeded error title in
image-uploadreview modal
-
file-uploadnow preserves and returnsuploadResponsethat is populated from default values
- New
validate()method to trigger validation - New
onValueChangeprop that is fired only when any field value changes -
image-uploadnow allows uploading multiple images through the file dialog window - New
compressImageoption forfile-uploadto compress images - Updates to
reviewcomponent-
topSectionandbottomSectionin accordion variant - Ability to mask value in box variant
- Ability to call API to unmask value
-
- Apply
classNameto elements within checkbox and radio
- Mask / unmask button in review no longer trigger form submission
- Custom validation typings are now getting passed into children of non-field elements
- New
shownconditional rendering rule - New context argument in custom validation validate function
- New
before-get-current-locationandrefresh-locationevents inlocation-field
-
addCustomValidation()now applies custom validation only to the Frontend Engine instance calling it -
image-uploadno longer causes infinite compression loop for certain images
- New
ordered-listandunordered-list - New custom validation event in
image-upload - New
hideInputKeyboardindate-fieldanddate-range-field -
hidden-fieldis now able to supportnumberandbooleanvalidation / conditional rendering
- Fix to max files error message in
image-upload - Excludes invalid HTML props in
hidden-field
- Prevent unnecessary unregistering of inactive
tabchildren
- FrontendEngine
- New
componentsprop to define custom components - New
wrapInFormprop to optionally render the<form>element - New
setWarnings()to render warnings (aka soft validation errors)
- New
- Support for nested conditional validation
- New
hidden-field -
checkboxandradiofields now support nested fields -
image-upload- Accepts html markup in label
- New
capturekey to allow user to use his/her media device to capture photo
-
location-field-
disableSearchto restrict location search input -
locationSelectionModeto restrict picking location -
maxZoomto restrict zoom in location picker -
hasExplicitEditrenders an edit button - Dispatches new events
-
click-confirm-locationwhen click on confirm button in location modal -
before-hide-permission-modalwhen location permission is going to get dismissed -
get-selectable-pinswhen retrieving location pins
-
- Listens to new events
-
confirm-locationto confirm location manually -
hide-permission-modalto hide location permission modal manually -
dismiss-location-modalto dismiss location modal manually
-
-
- New uiType
masked-field
-
location-field- ability to customise search results title
- new text banner in the location picker map
- Ability to hide "Edit" button review accordion variant
- Fix to heic / heif image compression in
image-upload
- New uiType
file-upload
- Labels
- HTML support for field labels
- HTML support to filter-checkbox option label
-
filter-itemandfilter-checkboxlabels now support rendering popover
- Conditional validation
- Resolved cyclic dependency error in fields that refer to each other
- Resolved crashes in referencing fields that have not be initialised yet
- Validation rules can now being applied even if the condition is not specified as the first key
- Values are now restored properly even when
restoreModeis updated on-the-fly
- New uiType
histogram-sliderslider-
tabandtab.item
- Fixed missing styling in
Textelements when nested -
nested-multi-selectfield enforces schema to have eithervalueorsubItemsbut never both - Review element of accordion variant no longer warns about div being nested inside a p tag
- New nested-multi-select uiType
- Date range field
- Support for
fixed-rangevariant - New
numberOfDaysvalidation rule
- Support for
- Ability to add sub label and popover to fields
- Support for html text in checkbox and radio button option labels on default styleType
- Resolved errors if convertLatLngToXYEndpoint is not defined in location field schema
-
includesandexcludesvalidation rules no longer applies when field has no values
- New button field
- section field
- New
containlayoutType that comes with 1320px max-width for general layout purposes - New
defaultlayoutType to represent the standard layoutType that is applied by default -
gridlayoutType now comes with 0.75rem horizontal padding
- New
-
expandedkey for filter-item and filter-checkbox
- New typings available
ECustomElementTypeECustomFieldTypeEElementTypeEFieldType
- Location field
-
disabledkey -
show-location-modalevent -
hide-location-modalevent
-
- Date range field
-
notPastvalidation rule -
notFuturevalidation rule
-
- Contact field no longer performs international number validation when the rule is not specified
- New
griduiType - New
divideruiType - New
columnskeys for all components to render in grid layout - New
layoutTypekey forsectionto render grid layout
- New
maxLineskey forTextelements to be collapsible withView more/View lessbutton
- Emptied fields no longer run non-required validation rules
- New
clearBehaviorinfilter-itemandfilter-checkboxschemas to control how the values change when filter clear button is clicked
- Removing fields from schema at runtime no longer retain validation configs of those fields
- Ability to specify the value(s) to be returned in
getValues()via thepayloadargument
- Location field
- Allowed dropping of pins in the map
- Picks closest location on pin drop
- Does SVY21 coordinates conversion instead of using the ones on pin drop
- Review field now triggers the
onChangeevent on mount
- New
reviewcomponent - New
stripUnknownflag to exclude values of fields that are not declared in the schema when returned on submit, change andgetValues()
- Updated to use Design System v2.1.0-canary.5
- Location field is now serving static map and doing address search via a new OneMap domain
- Added
classNamesupport for- chips (textarea)
- contact
- image-upload
- location-field
- multi-select
- range-select
- select
- textarea (chips)
- unit-number-field
-
isDirtyflag to indicate if user has modified any fields
- Reinstated icons in image upload buttons
- Switched to new URL scheme for OneMap map tiles
- Range select now clears inputs properly on partial selection
- Location field now supports validation config
-
restoreModeto control how conditionally rendered field gets populated when it is shown again -
date-range-fielduiType
- Location field is now able to parse "Pin location: {lat}, {lng}" addresses
- Remove prefilled values of hidden fields from form state
- Uinfin validation is now skipped if the value is empty
- Switch to use Design System v2
- Revert to using design system as peer dependency
- Date field
- New
excludedDatesvalidation rules to disable specific dates -
future,past,notFuture,notPast,minDate,maxDaterules now disable invalid dates - New
allowDisabledSelectionoption to allow selecting disabled dates
- New
- Contact field
- Prepend country code if not provided in defaultValues
- Switch to country if defaultValues use a different country code
- Ignore defaultValues if the country code does not match for fixed countries
- Filter
- Clear button now clears filter values regardless of defaultValues
- Add colon (
:) to the format of a generic location-field addressPin location: {lat}, {lng}
- Fix location-field errors with parsing
Pin location: {lat}, {lng}addresses
- Fix SSR error introduced in alpha.13
- New
overrideskey as a dedicated key to apply field schema properties on-the-fly over the schema without modifyingsections - Location field now defaults address to
Pin location {lat}, {lng}if reverse geocoding yields no formatted address
- Prevent mutation of
defaultValuesbyFrontendEngine - Fixed errant error modal in location field when clicking on map multiple times
- Please ignore this version as it does not contain all the changes
- Location field
- Retries up to twice when getting current location
- new
locationModalStylesschema to style location modal
- Fixed stack trace in OneMap errors
- Now using
@lifesg/react-design-system v1.1.2
- Non-submit buttons no longer cause a form submission on click
- Allow emptying of
contact-fieldwhen it has a default value
- Location field
- Use semi-bold weight for
image-uploadlabel -
onChangeevent now fires the correctisValidflag when form is pre-filled
- Increased
chipsbottom margin to 16px / 1rem - General layout tweaks to
image-uploadfield - For submit button in
invalid-formmode, it will be enabled on mount when the form is pre-filled with valid values - Ensure conditionally rendered fields are rendered if pre-filled values fulfil conditions
- Fixed SSR error with
image-upload
- Updated empty value check to accept boolean values
- Temporarily use
@lifesg/react-design-systemas a dependency instead of peer dependency to resolve conflicts with v2
- Range select field
- Switch field
-
onSubmitErrorcallback prop for FrontendEngine
- Ensure classNames render in radio button wrappers
- Resolved validation error when numeric field is cleared
- Fixed layout issues when chips exceed the component width
- Radio image button
- Ability to prevent copy & paste and drag & drop to text-field, email-field and numeric-field
- Image upload field
- Event listener
- Ability to register listeners for events emitted by fields
- Events are currently only available for image upload
- Bumped @lifesg/react-design-system dependency to v1.1.0-canary.1
- Fixed date-field to revert to use default value / current date on reset
- Fixed default value and reset behaviours for chips
- Ability to set default value for chips with textarea
- Correct reset behaviour for chips with textarea
- Ensure textarea can clear value on reset
- Fixed time-field to revert to use default value / current time on reset
- Ensure checkbox and radio button use the correct font
- Ensure error states are reflected in all components
- Checkbox
- Ability to disable specific option
- New toggle style via
customOptions.styleType="toggle" - New
noneoption for users to pick none of the options offered
- Chips
- Ability to disable specific option
- New toggle style via
customOptions.styleType="toggle"
- Contact
- Fixed country according to validation schema
-
countryrenamed asdefaultCountry
- Filter, filter checkbox and filter item
- Radio
- Ability to disable specific option
- Reset
- New reset button
- New
reset()method in FrontendEngine component
- Unit number
- Bumped @lifesg/react-design-system dependency to v1.0.2
- Changed default validationMode to onTouched
- Ensure
text-field,email-fieldandnumber-fielduse the correct input type
- Revamped JSON schema
- Storybook integration with actions
- Fixed bug with not removing validation schema for components nested in conditionally hidden components
- Fixed to allow storybook controls to reflect changes in canvas
- Removed
maxLengthkey fromtext,emailandtextareafields- Use
maxorlengthvalidation rule instead
- Use
- Removed
multikey fromchipsfield- Use
maxorlengthvalidation rule instead
- Use
- Validation config
- Added option to do soft validation for any validation rule by specifying
{soft: true} - Added
setErrors()method to set error messages per field - Added descriptive warnings for rules that do not exist
- Added support for min and max date validation to date field
- Added option to do soft validation for any validation rule by specifying
- Fields with
optionswill now update the selected values when the schema changes, this applies to:- checkbox-group
- chips
- multi-select
- radio-button
- select
- Added option to disable submit button if there are invalid fields
- Added
setValue()method to manually set each field's value
- Fixed conditional rendering to infer the source field type correctly
- Removed erroneous values from storybook source code view
- Updated chips textarea id to
{chips id}-textarea - Fixed select field to display correct label based on
defaultValues - Fixed parsing and validating of dates if a different date format is specified
- Release of the Frontend Engine in our Github repo