- URLSearchParams are ignored when comparing locations #749
- A fallback component is displayed instead of crashed widget (#745)
- The ability to filter dates fields by range (#710)
- Displaying a debug panel for custom widgets (#740)
- Removing filters after click on "clear" button (tesler-demo_#70)
- devDependency axios does not match with declared peer dependency (#722)
saveAssociationsActive
sends request with truly associated items only (#728)- null check is added to
ModalInvoke
'smapStateToProps
(731)
<NavigationTabsWidget />
should provide a reasonable default of 1 whennavigationLevel
option is missing
<ColumnFilter />
now uses filterBy widget field parameter to determine if some other field should be used for displaying filtration control (#711)
useViewTabs
hook does not respecthidden flag
(#716)<ViewNavigationWidget />
should accept various values of navigationLevel (#715)<NavigationTabsWidget />
should be processed in regular widgets flow (#715)
- New widget types:
ViewNavigation
andNavigationTabs
intended for displaying view navigation as a fixed menu or as a standalone widget respectively (#702)
bcFetchData
should load data of hierarchy of BCs (#707)
checkShowCondition
should not return false when checked field value is falsy- lazy show condition check in
bcFetchData
should look into response in case epic fetching data for the same business component as inshowCondition
checkShowCondition
should return false when active record is unavailable;<Widget />
should callcheckShowCondition
with business component from theshowCondition
instead of widget itself (#695)
- Lazy load for widgets hidden by
showCondition
(#693)
<PickListPopup />
not closing for non force-active fields after 1.30.5 (#688)
<PickListPopup />
called upon force-active field should not close until row meta is fetched after selecting the value and should not fire row meta request twice (#686)- Date filters should use locally selected date even if actual timestamp falls off to another day due to the timezone (#685)
null
is added as possible value ofCustomWidgetConfiguration.card
for CRA compatibility (#678)
<TextArea />
crashes if first rendered in read-only mode (#674)sendOperationAssociate
and<InlinePickList />
callshowViewPopup
with incorrectwidgetName
;<Widget />
should fallback tobcName
check if there is nowidgetName
inpopupData
(#675)
<ColumnFilter />
fails to open filtration popup for multivalue fields
- DevTools panel (#610)
pickList
fields now useAssocListPopup
widget for filtering (#619)- Better support for Create React App and other applications relying on typescript
isolatedModules
flag set to true (#660)
- Malformed url parameters were treated as part of
bcPath
which lead to failing requests to Tesler API (#663)
requiredFieldsMiddleware
should check required fields on save operation (#654)
<RowOperationsButton />
should open menu in IE (#646)
<RowOperationsMenu />
incorrectly reads clicked operation name (#642)useExpandedKeys
hook should not crash when data is empty (#643)
<HierarchyTable />
now supports row operations for nested nodes;<RowOperationsButton />
,useRowMenu
and<RowOperationsMenu />
are now exported as a building blocks to add row operations for custom tables (#638)- Filters and sorters are added to
custom-action
request params (#616) <ModalInvoke />
buttons labels are now customizable (#633)<Provider />
now havecustomWidgets
prop for extending widgets outside of regular widgets flow (i.e. popup widgets) (#623)<MultivalueHover />
field now renders from<Field />
and supports all appropriate props (#635)- Store snapshot and application screenshot can now be exported when application error occurs; this feature can be enabled by setting
store.view.exportStateEnabled
totrue
(#532)
- Trying to drilldown through link with filters set to clear crashes the app (#627)
<FullHierarchyTable />
excessively expands when row meta is fetched (#611)<MultivalueHover />
should not show arrow icon when no drilldown handler available (#613)bcNewDataSuccess
should resetselectedCell
;operationRequiresAutosave
of requiredFields middleware should ignore save operations (#612)
- Stale data fetch epic can crash the application (#607).
bcFetchData
used a first available widget when resolving child business component instead of a first available non-lazy widget (#605).
- Lazy load erroneously applied to nested BC in hierarchies (#602)
- 🔴 [Deprecation warning]:
<SameBcHierarchyTable />
is deprecated and will be removed in 2.0.0;hierarchySameBc
widget option will continue to be used to display hierarchies with identical set of fields on each hierarchy level (#599) - Reducers now have access to
originalState
argument that contains the store slice state before its been modified by core reducer; it can be modified and returned from your own reducers and all built-in changes to the store will be ignored in favor of your changes (#588) - Popup widgets now declared as lazy widgets, i.e. they will not fetch data or row meta until they are visible (#596)
<MultivalueTag />
component fetched data twice (#589)<FilterField />
incorrectly usedvalue
instead ofchecked
property for checkbox filters;<FilterPopup />
incorrectly treated empty value (#593)useDrillDownUrl
hook ignoreddrillDown
field property in widget description (#598)<HierarchyTable />
is now more consistent in calculating column width width<FullHierarchyTable />
(#600)
- Broken 1.27.0 release due to
@tesler-ui/schema
declared as dev dependency
- Documentation for library API now available: API Reference
- JSON schemas for
*.screen.json
,*.view.json
,*.widget.json
and*.sqlbc.json
files from now on will be included as part of this library (#582, @tesler-ui/schema) <View />
and<Widget />
components now supportcustomSpinner
property to allow spinner customization (#570)<HierarchyTable />
now respectswithHierarchyShift
field option (#569)<FilterField />
now exported to allow building custom components around build-in filtration control (#580)
- Cursor is no longer reset after successful data fetch request (#530, #566)
- useFlatFormFields hook no longer crashing the application (#573)
- bcRemoveFilter action worked incorrectly for two filters sharing the same field (#579)
<FullHierarchyTable />
erroneously re-opened closed nodes after selecting another node (#574)<ReadOnlyField />
doesn't wrap text correctly in IE11 (#583)<MultiField />
styles doesn't work nicely for long colored values (#575)
- Added ability to set width of last column, fixed -Infinitypx value of maxDepth (#545)
<FullHierarchy />
appliedtable-layout: fixed
style to<div />
container instead of<table />
itself, which caused inconsistency in separate inner table sizes (#560)hierarchyDisableParent
widget option in<FullHierarchyTable />
erroneously checkednoChildren
flag only among items of current depth allowing nodes with children to be selected despite the widget flag (#558)
bcFetchRowMetaRequest
epic implementation should be importable (#540)useDrillDownUrl
hook should usebcName
instead ofwidgetName
, as some widgets (hierarchies) can have drilldown links to different business components (#541)hierarchyDisableRoot
flag is not respected by<HierarchyTable />
(#542)hidden
flag and field type are not respected by<HierarchyTable />
(#543)
- Drilldown links can now be set via
drillDownKey
property from field description in widget meta; when set, the value of this property will be used as a name of the record field that contains an url, allowing to set drilldows urls per row rather than via row field meta (#535) <ErrorPopup />
now supports multiline text (#529)
showAssocPopup
epic will crash when Tesler API returns null instead of empty array, which it will for SQL BC (#537)
useMultipleSelect
hook sends parent id of the selected record instead of self id, which leads to not working widget optionshierarchyGroupSelection
andhierarchyGroupDeselection
for flat tree widgets
assignTreeLinks
now throws warning and excludes orphaned hierarchy records instead of crashing the entire app (#524)
- Handling for http errors now can be customized through
apiError
(to override entire ajax onError handler) andhttpError
(to override handler only for specific http status code) (#512) - Helpers
getSorters
,parseFilters
,parseSorters
now exported (#519)
<TableWidget />
now forces floating menu top position recalculation when table data have one row (#514)- 1.24.0 erroneously missing
sendOperationEpicImpl
export (#511) - Use date picker component when searching by
dateTime
column (#518) saveAssociationsPassive
epic will crash on null values; export<PickListField />
(#520)
icon
andshowOnlyIcon
properties are added to interfaceOperationGroup
(#507)calleeWidgetName
property is added toPopupData
interface (#507)- console helper
scrollToItem
for automation testing of<TreeVirtualized />
components (#506)
bcNewDataEpic
should proccess postinvokes after dispatchingchangeDataItem
, not before, otherwise pending changes might end up containing changes for BC that is no longer present (#505)
<TreeVirtualized />
should not rely on input data being presorted: they might be not, which leads to children nodes expanding wrong direction (#503)
- Already fetched pages are missing after
bcForceUpdate
dispatch for widgets with "load more" pagination type (#495) requiredFieldsMiddleware
shouldn't fire when called on BC without a cursor (#497)
<ErrorPopup />
now provides a button to save error message to the clipboard (#490)data
andmeta
resuests now can be canceled withcancelRequestEpic
(#486)
TreeVirtualized
andTreeVirtualizedNode
crash for null values (#493)
- Console falsly reports broken filters when they are not specified (#484)
removeMultivalueTag
now doesn't crash for non-hierarchy popups (#478)cancel-create
operation should dispatchsendOperationSuccess
(#488)
<TreeVirtualized />
handlesmatchCase
option incorrectly- Missing export for
<SearchHighlight />
component
- Redux middlewares are now customizable (#381)
- Autosave fixes (#376):
- should not fire when
operationType
issave
- should fire for
sendOperation
initiated by different business component (aside of having pending_associate
) - should fire for
selectTableCellInit
initiated by different row or widget
- should not fire when
- Sometimes a node stayed selected after removing last child despite the
hierarchyTraverse
widget option (#443) removeMultivalueTag
now correctly processeshierarchyTraverse
andhierarchyGroupDeselection
widget options (#443)<TreeNodeVirtualized />
should toggle on click
<ModalInvoke />
now acceptsclassName
property (#447)- Support
disableHoverError
widget option that disables errors highlights on<FormWidget />
(#420) - Support
disableNotification
widget option that disables error notification after save action (#420) - Popup widgets now rendered only when required instead of hanging around all the time hidden (#459)
<ErrorPopup />
now uses tokens from i18n dictionary for error messages (#464)<MultivalueTag />
now also opens popup when clicking on empty space inside the input (#453)- 🔴 [Deprecation warning]:
pendingValidationFails
field inViewState
interface now separates validation errors by business component name and cursors to handle situations when multiple records on multiple widgets failed validation simultanously; support for previous format will be removed in 2.0.0 (#441) - show notification when requested route references missing screen or view; notification can be customized by overriding
selectScreenFail
andselectViewFail
epics ofrouter
slice (#466) - New widget types:
<FlatTree />
and<FlatTreePopup />
to display virtualized tree data;<TreeVirtualized />
component to build custom widget types aroung virtualized trees (#455)
customReducers
passed to<Provider />
ignored the initial state for core reducer slices (e.g.screen
,view
, etc.) which could lead to NPE crashes if custom initial state doesn't include some optional fiedlds (#445)template
field should be available inViewMetaResponse
interface (#431)- Drilldown to the same view with specific instruction to drop filters no longer causes stale data (#374)
<Dictionary />
now corretly shows placeholder (#463)
file-upload
action shouldn't setloading
state for widget (#426)- file uploaders should properly handle trailing slash for axios baseURL (#426)
- Every widget type can now provide its own card wrapper via extended use of
customWidgets
prop of<View />
component (#360):
<View
customWidgets={{
// Form widgets will be rendered by custom component with default wrapper
[WidgetTypes.Form]: (props) => <div>Form</div>,
// List widgets will be rendered by custom component with custom wrapper
[WidgetTypes.List]: {
component: (props) => <div>List</div>,
card: (props) => <div className="wrapper">{props.children}</div>
}
}}
/>
<FullHierarchy />
now provides an option to exclude descendants from a search result (#403)<TableWidget />
now haveheader
property to customize header block of the widget (#408)- New widget type:
<InfoWidget/>
(#353) - Introduction of bulk operations: we now have built-in implementation for bulk creating records from files and a documentation page for how to implement other useful bulk operations (bulk update, bulk delete) from the client side (#424)
<FullHierarchy />
bugfix (#403):- No backend request send for highlighting search results
- Clearing the filter and applying a sorting now corrently clears hierarchy data
<AssocListPopup />
not showing tags after items selected and popup is reopened (#415)- Epics for
saveAssociations
action now correctly handle post invokes (#406) <AssocListPopup />
should also remove descendent items for removed tag (#410)- Multivalue fields should properly remove filters instead of setting an empty array filter (#418)
- Following deprecation of TSLint (https://medium.com/palantir/tslint-in-2019-1a144c2317a9), we now use ESLint (#398)
- Autosave middleware naw can use custom operation instead of default one for saving by specifing custom operation name in
defaultSave
property of widget meta (#387):
"options": {
"actionGroups": {
// ...
"defaultSave": "custom-save"
}
<Dictionary />
: addedmultiple
mode for several items selecting (#396)- Support
defaultFilter
parameter for preset filters in business component meta data (#399), format is the same as input for Tesler API:
{
defaultFilter: 'someField1.contains=someValue&someField2.equalsOneOf=%5B%22someValue1%22%2C%22someValue2%22%5D'
}
// corresponds to preset filters of `someField1` includes `someValue` and `someField2` to be one of [someValue1, someValue2]
- CRUD operations initiated by
actionRole
should send original custom operation name through an_action
query parameter (#356) - Added 'maxInput' param to WidgetFieldBase, upgrade antd peer dependency 3.26.13 -> 3.26.18 (#363)
- Show error on
<ReadOnly />
field in<TableWidget />
(#389) - Errors with MVG filter (371):
- MVG filter don't pass selected item to query parameters
- Filter popup doesn't show previosly selected dataitems when open popup again
- Filter icon shows that filters applied even when filters array is empty
<AssocListPopup />
show selected items tags only for the current page (#393)
- Empty business component filter in the url should clear filters for this bc (#360)
- Adding empty filter crashes the application if there was already present non-empty filter (#360)
- Incorrect check for
autoSaveBefore
in 1.18.0 causes required fields validation when it shouldn't (e.g. cancel operations) (#368)
- Export
matchOperationRole
andflattenOperations
utilities
- New
actionRole
property allowing custom operations to be be processed as a standard operation (#356)
- Filter by date does not keep its state and erroneously shows time (#354)
- Hierarchy filter effect erroneously has reversed condition for early return (#341)
showViewPopup
action should not initiate data fetch when popup BC is the same as in the initiator widget
- Refactor
<FullHierarchyComponent />
expanded rows routine to cover all cases of erroneous collapses of the whole tree after selecting node (#341) - Unit tests stumble on reducers accessing other slices of store due to not using project implementation of
combineReducers
<FullHierarchyComponent />
in 1.17.0 erroneously collapses the whole tree after selecting node (#341)<AssocListPopup />
doesn't show already selected records in tags section;saveAssociationsPassive
erroneously clears selected records (#339)- User drilldown to the current cursor and
bcPath
shouldn't drop current cursor and fire drilldown respectively (#343)
- Wrong typings and missing properties when importing
<Popup />
component
<AssocListPopup />
and<PickListPopup />
components now supporttitle
,table
andfooter
properties to customize render slots (#319)<FullHierarchyTable />
now supports client-side search and search results highlighting (#241)<FullHierarchyTable />
now supportshierarchyDisableParent
widget options to allowing selecting only leaf nodes (#317)<FullHierarchyTable />
now respects columnwidth
property (#304)- New
customEpics
implementation allowing to disable and override core epics (#330) - 🔴 [Deprecation warning]: Deprecate
bcKey
parameter insendOperation
action payload in favor of epics overriding (#321)
- Default view layout should not override custom one (#326)
- New
columnTitleComponent
prop which allows to pass custom component to column title (#218) - New
Select all
checkbox inFullHierarchyTable
(#277) TableWidgetOwnProps
now extends antd'sTableProps
in purposes of passing properties from client project (#295)- New
footer
property for<Popup />
, appliedfooter
andtitle
and different title styling for<PickListPopup />
widget (#293) - Export
getFilters
utility for mappingBcFilter
descriptors to a dictionary of query params for GET-request (#290) <PickInput />
and<MultivalueTag />
now supportloading
property for showing spinner instead of control button;<PickListField />
and<MultivalueField />
now take advantage of it to show spinners while fetching row meta to avoid situations when user tries to interact with the field before its row meta is ready (#299)- Export
<Popup />
and providedefaultOkText
anddefaultCancelText
properties - preInvoke Middleware to handle
sendOperation
actions having assigned pre-invoke (#283)
- The type
DataValue
extended byDataItem[]
for cases if need to store nested structure inpendingDataChanges
(#274). - 🔴 [Deprecation warning]: Deprecate
bcName
,route
,pendingDataItem
andonDrillDown
properties for<TableWidget />
; deprecate aroute
fromshowAllTableRecordsInit
action; export<MultivalueField />
and<MultivalueListRecord />
components; addclassName
property to<MultivalueList />
component (#285)
- AssocListPopup Tag value not displayed due to incorrectly accessing value by
assocFieldKey
instead ofassocValueKey
(#279) - Replace data fetch request for save operiations with meta fetch and children bc data fetch, as the data of the source bc might be isolated during the draft stage and unavailable until the record is saved (#247)
limit
calculated incorrectly after 1.14.0 leading to broken pagination (#264)<TableWidget />
does not recalculate columns after 1.14.0 due to missing prop dependency leading to missing filtration and sorting (#270)
placeholder
property from row meta field description now supported by following additional field types:dictionary
,pickList
,inline-pickList
,number
,money
,percent
,multivalue
(#210)hidden
field is now supported in widget meta field description; it will replace thehidden
field type as it's serve the same purpose but keeps original field type intact, i.e. allows properly typed filtration of hidden fields (#230)- 🔴 [Deprecation warning]:
hidden
field type is now deprecated in favor ofhidden
flag in widget meta field description and will be removed in 2.0.0 (#230) - Actions utility helpers now are exported to allow proper typescript typings for actions in client application (#253)
<ModalInvoke />
component (andpreInvokes
that utilize it) now supports line breaking as per csswhite-space: pre-wrap
rule (#255)<TableWidget />
component now supportscontrolColumns
property for customization table interaction, e.g. edit button, delete button, more options button all can be implemented through this property. Columns are described by default column descriptor and have an additionalposition
parameter which will state where the new columns will be appended (#234)- Export
TableLikeWidgetTypes
array for some shared features between table like widgets; intention is that it's available for customization by client app, although we might move to a getter instead (#258) - Support
limit
property in widget meta description which will take precedence over thelimit
parameter of business component (#261) - Tesler API
bcKey
parameter forassociate
operation now allows setting a custom business component name (#213)
processPostInvoke
action should clearselectedCell
state as its value will not be viable (#224)- 🔴
postInvokeConfirm
is excluded from the contract of operation response as it was never implemented by Tesler API; now this is considered a regular post invoke type (#237) - operations no longer fail if there are no
postActions
section in Tesler API response (#243) - Selected items tags will no longer overflow outside of popup window (#249
- Data fetch should be initiated on record save to properly refresh all descendent records (#247)
- Autosave middleware reserved for tables erroneously applied to other widgets by
requiredFieldsMiddleware
(#257) multivalue
field no longer lose already selected values after selecting additional values in popup (#226)
- Added optional
bcKey
param to thesendOperation.associate
action, which will be passed in thebcName
. It is necessary for identifying the backend which BC to use for popup. (#214) - Add Modal Invoke window for info and error invoke types (#217)
Field
: Fixed overwriting the default Ant properties of components. If passed property is not defined then it is removed from commonProps and commonInputProps. (#215)- Exported ownProps interfaces of all
src/components/ui
components (#219)
- New
radio
field type to display radiobutton controls (#202) - Support http codes 409 to warn about conflicting changes and 401 to logout when session expired (#200)
- Support
placeholder
property for fields (#210)
- MultivalueField loses BC while screen changing (#197)
- 🔴 [Deprecation warning]: The description format for screen navigation structure will be changed in 2.0.0 #78. For the purposes of migration, a new
useViewTabs
hook is introduced:
const tabs = useViewTabs(2) // Get tabs for second level menu
return <ul>
{tabs.map(tab =>
<li key={tab.url}>
<a href={tab.url}>{tab.title}</a>
</li>
)}
</ul>
<AssocListPopup />
now have a header showing a list of currently selected tabs (#173).
<AssocTable />
should have a functionalselectAll
checkbox (#193).- Required fields should not restore their previous value when they've been cleared and (#150).
- Missing translation for warning notification (#160).
changeLocation
action should respect default screen when type isRouteType.default
(#186).<TableWidget />
should use respectreadOnly
flag from widgets meta (#189).<TextArea />
should not be recreated on every value change (#191).- When clearing the value of a required input field, the old value is returned after the cursor moves to another field (#150).
- New contract for confirmation postInvokes with two types of confirmation (#170):
confirm
- Simple yes/no confirmationconfirmText
- Confirmation with input for user text that will be send to Tesler API
/**
* The action that will be performed after the user confirms it
*
* @param type Type of postInvokeConfirm action
* @param message Title for modal
* @param messageContent Additional text for modal
*/
export interface OperationPostInvokeConfirm {
type: OperationPostInvokeConfirmType | string,
message: string,
messageContent?: string
}
Previous implementation is now deprecated and will be removed in 2.0.0.
- Widget types are now exposed as
data-widget-type
attribute on default card html node (#174).
AssocListPopup
widget opened formultivalue
field may get out of sync after items removal so the popup and the field erroneously will show different sets of selected items (#171).- Router does not respect
primaryView
parameter of screen meta duringchangeLocation
action (#178). - Missing
popup
existence check in ajax reposnse catch-handler causing application crash (#180).
- Remove unused
groupName
,newRow
,break
properties fromWidgetFieldBase
interface as they were never implemented for Tesler
- Temporary fix for
<Pagination />
component crashing the page with #300 and #310 React invariants after 1.8.4 added i18n tokens (#167).
- Add
suffixClassName
property for<Field />
and<InteractiveInput />
which is passed to input suffix icon (#152). - Export
<ColumnTitle />
component (#152).
<Field />
component throws console warnings for unknown html properties (#164).
- Incorrect condition refactoring fpr required fields check after 1.8.1 may crash the application (#158).
- Missing i18n tokens for
<ColumnTitle />
,<FileUpload />
,<Pagination />
,<PickInput />
,<Popup />
andview
reducer (#161). <TableWidget />
column headers should not break words (#162).
- Drilldown fields crashing the application after 1.8.0 update (#156).
- Dropdown components not showing their icons after 1.8.1 update.
<ColumnSort />
component frequently crash the application due to missing null checks after 1.4.4 update.@types/antd
and@types/axios
replaced with devDependencies as they have a potential of breaking client applications build pipe due to referencing latest versions instead of specified as peerDependencies.
- Use typescript version 3.8.3
- Use antd version 3.26.13
- Table filtration now supports additional field types:
checkbox
,dictionary
,date
,number
,text
,pickList
,multivalue
(#130). - Business components now support predefined filtration, so any BC with the set property of
filterGroups
:
"filterGroups": [
{ name: 'Example PDQ 1', filters: 'someField1.contains=123' },
{ name: 'Example PDQ 2', filters: 'someField1.contains=321&someField2.equalsOneOf=["Confirmed", "Canceled"]'
]
will try to display predefined filters and fetch the data according to them. See FilterGroup class for usage example (#138).
- Following field types will not be shown as sortable as there is no support for this in Tesler API:
multivalue
,multivalueHover
,multifield
,hidden
,fileUpload
,inlinePickList
,hint
(#130). - Padding should be consistent for fields with set
backgroundColor
property whenever they are displayed as part ofmultifield
or as a separate field (#140). - When having an unsaved changes on a widget and calling an operation for another widget, autosave procedure should be initiated for the changes (#144).
- Respect
hidden
field type in<PickListPopup />
(#146).
- Make a datepicker with an empty value to keep the selected locale (#133).
- Pass hierarchy depth level to custom fields (#135).
- Widget meta should reuse existing
description
field instead of introducing newdocumentation
field to avoid adittional work on Tesler API (#126). - Post action operation should not try to access row meta when there isn't one (#129).
- Revert the changes for not sending empty but required forceActive fields introduced in 1.6.0
- New
HistoryField
component which will visualize the difference between the current value of the field and the value from field with key specified insnapshotKey
(andsnapshotFileIdKey
for file fields) of widget meta (#118). - Multivalue record now supports
snapshotState
field which will containt the status of the record:new
,deleted
ornoChange
(#118). - List widget in hierarchy mode now correctly displays all field types.
- List widget now supports full hierarchy mode.
- New
preInvoke
field in operation response, which allows to prompt the user with a confirmation window if he wants to perform another operation (#109) - New
Clear all filters
functionality (#111) - Drilldowns now allow to specify the filters which will be applied after drilldown (#111)
- Fetch parent bc data even if there are no corresponding widgets for those parent business components on active view (#113)
- Optional
documentation
field for widget meta which can be used to document widget usage (#116)
- Required fields no longer highlighted when they are left empty and marked as read-only, as it's confusing for user who has no means to resolve this problem for read-only fields (#118).
- Return previous value if field becomes read-only when we change forceActive and send an operation (#118).
- Validation does not work when we click on actions or change forceActive, if the widget has required fields (#118).
- Unfilled required fields are sent to the backend as modified (value=null) (#118).
- Fix error when custom internationalization language has no matching core dictionary
- Fix table record menu bugs: stuck button, requesting wrong rowMeta (#87).
- Row operations button may stuck on record after operation selected and menu is closed
- Row operations may request wrong rowMeta which leads to incorrect displaying operations and sometime erroneous restore of deleted record
- New action bcFetchDataPages for fetching specific page range of data which should solve the problem of missing pages when working with infinite pagination (#102).
- Remove page reset on table sort (#85).
OperationPostInvoke
should allowtype
field to be a string to correctly support custom postInvokes.
- Template strings for field titles: Table and Form widgets now support templated title in form of
Title {token:defaultValue}
string, wheretoken
is replaced with value of the field with keytoken
of the currently selected record.<TemplatedTitle />
component now exported to support this behaviour is custom widgets (#94). <Pagination />
component now haveonChangePage
callback (#76).
- Hierarchy table should clear active cursor on page change (#76).
- Disable check for the presence of
save
action in row meta for autosave middleware until we investigate the cases when this check fails due to missing cursor (#99).
- Force active fields should not end up in infinite loop when trying to revert changes that were declined by Tesler API (#96).
- Incorrect filtering behaviour:
- Filters and sorting are not applied for bcLoadMore action (#85)
- Page is not respected for sorting (#85)
- Removing filters should reset page (#85)
- When filtering returns 0 rows, then after clicking on "Reset" button the values in the filter are not reset (#91)
- Filtering does not work in Picklists (#91)
- Broken IE11 support due to
markdown
dependency hosted on npm in ES6 format
- Incorrect
isViewNavigationGroup
safeguard falsy reported true for navigation categories (1.4.0).
- Broken navigation structure in 1.4.0.
- New widget type
Text
supporting markdown syntax (#72). - Support Tesler API changes for navigation structure (tesler-platform/tesler#18)
- Expand button for hierarchy records now not be showed if there are no children for the record (#76).
hidden
field type should not be displayed onForm
,List
,DataGrid
widgets (#73).
- Table widget should show drilldown button when cell is in edit mode (#64).
- New record creation should be cancelable from Table widget (#66).
- Required field check crash on autosave caused by drilldown (#63).
- Child elements in the hierarchy should be collapsed by default (#68).
- Changes to HierarchyTable default styling (#68):
- Decrease the indentation in the TreeData cells from 20px to 15px.
- Align the first column and "+" on the top edge.
- Align the data in the 2nd and 3rd columns.
- Required number fields are erroneously cleared on record create/save and on blur if only zero value entered, due to their incorrect work with
undefined
valudes (#58).
- Respect default width of columns for hierarchy tables and disable pagination if not required (#56).
- Disable pagination for PickListPopup with FullHierarchy (#55).
- List widget in hierarchy mode should support drilldown field (#51).
- RowMeta request isn`t sent when the forceActive field changes (#53).
- PickList widget now supports hierarchy tables, i.e. widget options
hierarchy
,hierarchySameBc
andhierarchyFull
now work the same way as in regular Table widgets (#49). - New
hierarchyDisableRoot: boolean
flag added to control if rows on top of hierarchy are selectablable or not (#49).
- Fields shouldn't ignore empty delta value (#46).
- Console error, that appears when trying to check force active fields change on full hierarchy BC without data (#47).
- Change location with cursors change should initiate data fetch even if View was not updated (e.g. drilldown on the same View) (#34).
- Changelog incorrectly referenced #34 instead of #32 in 1.1.4 release.
- Increase indent between multi-value list records (#41)
- Add release workflow
- Remove
limit
andpage
params from full hierarchy data request (#32). - Fix an infinite loop when a business error is received during a change in a force-active field (#35).
- Add pull request pipeline
required
fields validation should be limited to only visible fields, to avoid situations when field is marked as required but user is unable to interact with it (#27).List
widgets erroneously fetched data only for the first level of hierarchy (#25).- Hierarchy widgets positioned expand icon incorrectly.
- Page crash after view change due to missing
Set
polyfill for IE11 (#12). - forceActive fields should not drop all existing validation errors.
- requiredFieldsMiddleware incorrectly checked for effective value which could lead to non-empty fields highlighted as empty.
- Russian translation "Required fields are missing" message fix.
- Webpack config incorrectly referred
LICENSE.MD
instead ofLICENSE
- Non-working readme links on NPM
- Broken npm package
- In addition to
inner
drilldowns, new drilldown types were introduced:relative
,relativeNew
,external
,externalNew
. SeeDrillDownType
interface for description. - Hierarchy-based tables now support full datasource, e.g. all data for hierarchy is fetched in one request, as opposite to a previous hierarchies which fetched data one hierarchy level at a time. See
FullHierarchyTable
for implementation details. - Table widget now supports
readOnly
flag from widget meta (#8). - Support
defaultSort
property for business components (#4). - Support
autoSaveBefore
flag for operations which indicates that before requesting widget operation APIrequired
fields of that widget should be validated for empty values (#1).
- Validation error should be displayed for input and custom fields when rendered on table widget (#1)
- Restore two missing commits that were lost in initial release (#6):
- Pending changes should be considered for widget's showCondition calculation
- Hierarchy list bug fixes
- package.json now includes license
- Update contributing guide with corrections for
Branch organization
section - .md files are now included in npm release
- Public release
[BREAKING CHANGE]
id
field is removed from widget meta in favor ofname
field (asid
is autogenerated after every update and unfit for widget-based business logic). All correspondingwidgetId
properties should be replaced withwidgetName
field.View
andDashboardLayout
no longer requireskipWidgetTypes
property, empty array is provided when missing forDashboardLayout
.