Bug Description
The browser raises an error below.
global error: "Uncaught TypeError: Cannot use 'in' operator to search for 'isTable' in null"
TypeError: Cannot use 'in' operator to search for 'isTable' in null
at createInstanceChecker.js:8
at get _table (TableRowBase.js)
at get _tableSelection (TableRowBase.js)
at get _isSelectable (TableRowBase.js)
at TableRow.onBeforeRendering
at renderImmediately (Render.js)
at RenderQueue.process
It prevent users from opening a DatePicker or a Dialog, collapsing the header if renders the Table in a DynamicPage.
In UI5 2.18, isInstanceOfTable was a hand-written guard:
const isInstanceOfTable = (obj) => !!obj && "isTable" in obj && !!obj.isTable;
In UI5 2.19+, it was refactored to use the new shared createInstanceChecker factory at packages/base/src/util/createInstanceChecker.ts:
return (object) => object !== undefined && prop in object && object[prop] === true;
The refactor swapped !!obj for object !== undefined, which does not catch null. So 'isTable' in null now throws, where it previously returned false silently.
Affected Component
No response
Expected Behaviour
The browser should not raise this error.
Isolated Example
https://stackblitz.com/edit/js-quywvaw3?file=index.html
Steps to Reproduce
- navigate to https://stackblitz.com/edit/js-quywvaw3?file=index.html
- click 'Render an orphan row (trigger the bug)' button
Log Output, Stack Trace or Screenshots
No response
Priority
Medium
UI5 Web Components Version
2.19.0
Browser
Chrome
Operating System
No response
Additional Context
No response
Organization
No response
Declaration
Bug Description
The browser raises an error below.
It prevent users from opening a
DatePickeror aDialog, collapsing the header if renders theTablein aDynamicPage.In UI5 2.18, isInstanceOfTable was a hand-written guard:
const isInstanceOfTable = (obj) => !!obj && "isTable" in obj && !!obj.isTable;In UI5 2.19+, it was refactored to use the new shared createInstanceChecker factory at packages/base/src/util/createInstanceChecker.ts:
return (object) => object !== undefined && prop in object && object[prop] === true;The refactor swapped
!!objforobject !== undefined, which does not catch null. So 'isTable' in null now throws, where it previously returned false silently.Affected Component
No response
Expected Behaviour
The browser should not raise this error.
Isolated Example
https://stackblitz.com/edit/js-quywvaw3?file=index.html
Steps to Reproduce
Log Output, Stack Trace or Screenshots
No response
Priority
Medium
UI5 Web Components Version
2.19.0
Browser
Chrome
Operating System
No response
Additional Context
No response
Organization
No response
Declaration