When an object is passed to an iframe method and kendo.observable is called on it, an error is thrown. This error is new in the latest kendo releases and appears to be from a change to how kendo decides if something is an object. Kendo now uses { Object.getPrototypeOf(value) === Object.getPrototypeOf({})) } which it did not do in prior releases. This test fails when the object tested is passed in from another frame.
You can repo this issue on the test site we setup: Kendo UI Snippet (sixdisciplines.com)
Click the 'Call IFrame' button and notice the following error thrown:
Uncaught TypeError: e.bind is not a function
at init.wrap (kendo.all.js:318535:21)
at kendo.all.js:318535:21
at Array.forEach (<anonymous>)
at new init (kendo.all.js:318535:21)
at n.observable (kendo.all.js:318535:21)
at iframeMethod (iframetest.html?5:14:25)
at callIFrame (test.html:17:55)
at HTMLButtonElement.onclick (test.html:21:34)
Following is the source used for this repo. I have also attached the html files.
Test.html:
<html>
<head>
<meta charset="utf-8"/>
<title>Kendo UI Snippet</title>
<link rel="stylesheet" href="https://kendo.cdn.telerik.com/themes/6.2.0/default/default-ocean-blue.css"/>
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<script src="https://kendo.cdn.telerik.com/2023.1.314/js/kendo.all.min.js"></script>
</head>
<body>
<script>
function callIFrame(){
debugger;
var obj = new Object({ p1: 1, p2: 2, child: new Object({ c1: 1, c2: 2 }) });
document.getElementById('targetFrame').contentWindow.iframeMethod(obj);
}
</script>
<button onclick="callIFrame()">Call IFrame</button>
<iframe id='targetFrame' src='iframetest.html?5'></iframe>
</body>
</html>
iframetest.html
<html>
<head>
<meta charset="utf-8"/>
<link rel="stylesheet" href="https://kendo.cdn.telerik.com/themes/6.2.0/default/default-ocean-blue.css"/>
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<script src="https://kendo.cdn.telerik.com/2023.1.314/js/kendo.all.min.js"></script>
</head>
<body>
<script>
function iframeMethod(obj){
debugger;
var observable = kendo.observable(obj);
alert('called')
}
</script>
IFrame with kendo
</body>
</html>
I see this most often in the All Day slot of the Timeline view. I do not believe it is isolated to just that though. Here's using the native code:
Here's the same page with the code fixed:
Please note that two events are covered up: recur3 and an event that is NOT an all day event starting at 2pm. That's what the gap is. So yes, this gap is correct. Also note: In the first window I can press F12 to open the inspector, and manually delete the event elements which reveal the missing ones underneath. They are overlaid on top of each other.
After some debugging, here is the fix. The file, version, method, and line numbers are all here for you. The fix is highlighted on line 2855. The highlighted "start" should be "end".
Hi,
If Kendo grid column has enumerated values, menu filter extra condition values is not populated.
Please, see example code in dojo at https://dojo.telerik.com/oXIwobEh
Thank you.
Error when trying to run npm run dev
X [ERROR] Unterminated string literal
node_modules/@progress/kendo-ui/umd/kendo.all.min.js.map:1:5961245:
download project from ticket : 1597960 01 Mar 2023
npm ci
npm run dev
an error is observer
the site runs without errors
use the following import
import '@progress/kendo-ui/esm/kendo.all.js'
Exporting to excel cells with empty values and zeros is not correct
A Problem is that if there is an item with the real value "0" in the data source, the item would also be exported with an empty string.
We have use cases where the value "0" has a different meaning than an empty value.
https://codesandbox.io/s/brave-northcutt-pe21l9?file=/src/main.vue:2996-3346
no difference between the empty value and the 0
there should be a difference between the empty value and the 0
ticket: 1598649
Hi Support,
I have some issues with the copySelectionToClipboard Method for the Grid widget.
In the first one, the copy function of the table seems to have a problem with locked columns. In the dojo of the first problem the table headers are displayed shifted.
Secondly, grouped table headers are not copied. To see in the second dojo.
Lastly, it should be mentioned that the definition for the copy method is not included in the kendo-ui npm packet.
Problem 1:
https://dojo.telerik.com/OBOQemUm
Copy result in Excel:
Problem 2:
https://dojo.telerik.com/OBOQemUm/2
Copy result in Excel:
Best regards,
Jonas
Test Environment:
Browser: Edge Anaheim 107.0.1387.2 (Official build) dev (64-bit
OS: OS version (OS Build 25203.1000)
Screen reader: Narrator
URL: WPG - Home
Credentials: V- ID
Screen Reader: Narrator
1. Open given URL - WPG - Results (fungates.azurewebsites.net) in Edge and turn on Narrator.
2. WPG Home page will open.
3. Navigate on “Dates" dropdown and activate it.
4. Now navigate to "within dates" split button and observe the issue.
The Kendo UI ListView widget supports setting the selected items via the select method. Up to version 2022.2.802, calling select() triggered a change event. This is no longer the case.
You can see the different behaviors in these two DOJOS: 2022.2.802 vs 2023.1.117 (the item gets selected after a second to make sure the dataSource has finished loading).
Describe the bug
Kendo ComboBox and DropDownList controls are conflicting with kendo PanelBar.
If ComboBox or DropDownList control is included inside a kendo PanelBar, the the dropdown elements of both controls are detached from the combobox or dropdownlist inputs respectively.
To reproduce
In order to reproduce the behaviour:
Expected behavior
ComboBox or DropDownList controls should work correctly and the dropdown elements of controls should not be detached.
When a Kendo widget is initialized in a navigatable Drawer and the user clicks in the intiialized component an error Uncaught TypeError: Cannot read properties of undefined (reading 'attr')
is thrown
An error: Uncaught TypeError: Cannot read properties of undefined (reading 'attr') is thrown
No error should be trhown even if the 'drawer-item' attribute is missing
Apparently the dark theme we are using adds the glass.png to tabs. Great. Looks good. However it also seems to be applying to the area inside the tab as well.
It's a little hard to see on most of our popups with tabs but it's visible through gaps in the controls. I have removed the top layer in this image so you can see it. Underneath is the html for one of the pages affected so you can see we aren't setting them up incorrectly. This is the kendo black theme.
@using DispatchCrude.Models;
@model OriginEditModel
@* NOTE: This script section must be at the top of the page for the pop-up to function properly. It cannot be moved to the bottom of the page. *@
<div>
@Html.HiddenFor(x => x.ID)
<ul class="gridErrors NullValidator"></ul>
@(Html.Kendo().TabStrip()
.Name("tabstrip")
.Items(tabstrip =>
{
tabstrip.Add().Text("General").Selected(true).Content(@<text>
<div class="popup-editor-container">
<div class="popup-editor-column-sm">
<div class="popup-editor-label">
@Html.LabelFor(model => model.TimeZoneID).IsRequired()
</div>
<div class="popup-editor-field">
@Html.EditorFor(model => model.TimeZoneID, new { htmlAttributes = new { style = "width:120px; height:30px;" } })
</div>
</div>
<div class="popup-editor-column-sm">
<div class="popup-editor-label">
@Html.LabelFor(model => model.RegionID).IsRequired()
</div>
<div class="popup-editor-field">
@Html.EditorFor(model => model.RegionID)
</div>
<script>
function filterDestination() {
var dataItem = getGridEditRowModel();
let shipperIds = (dataItem.Products != null) ? dataItem.Products.map(x => x.ID).join(',') : -1;
let productIds = (dataItem.Shippers != null) ? dataItem.Shippers.map(x => x.ID).join(',') : -1;
return {
"regionid": dataItem.RegionID || -1,
"terminalid": dataItem.TerminalID || -1,
"productids": (shipperIds != '') ? shipperIds : '-1',
"shipperids": (productIds != '') ? productIds : '-1'
}
}
</script>
<div class="popup-editor-field">
@Html.EditorFor(model => model.PreferredDestinationID, new { table = "GetPreferredDestinations", controller = "origins", filter = "filterDestination()" })
</div>
</div>
</div>
</text>);
tabstrip.Add().Text("Oil Field").Content(@<text>
<div class="popup-editor-container">
<div class="popup-editor-column-sm">
<div class="popup-editor-label">
@Html.LabelFor(model => model.LeaseName).IsRequired()
</div>
<div class="popup-editor-field">
@Html.EditorFor(model => model.LeaseName)
</div>
<div class="popup-editor-label">
@Html.LabelFor(model => model.LegalDescription)
</div>
<div class="popup-editor-field">
@Html.EditorFor(model => model.LegalDescription)
</div>
</div>
</div>
</text>);
tabstrip.Add().Text("GPS").Content(@<text>
<div>
<div class="popup-editor-column-lg">
<div class="popup-editor-label">
@Html.LabelFor(model => model.GeoFenceRadiusMeters)
</div>
<div class="popup-editor-field">
@Html.EditorFor(model => model.GeoFenceRadiusMeters, new { htmlAttributes = new { style = "" } })
</div>
</div>
</div>
</text>);
})
)
</div>
<script>
$("#RegionID,#TerminalID").on("change", function () { refreshDestinations(); });
</script>
When a decimal number has 8 digits after the decimal separator and '#' is used for formatting the precision is lost and the number is rounded.
kendo.toString(0.00000015,"###.########"
returns 0.0000002
The number should not be rounded and the precision should not be lost. The results should be the same with kendo.toString(0.00000015,"n8")
and kendo.toString(0.00000015,"0.00000000")
kendo-ui-license.js
button.Clicking on the kendo-ui-license.js
button attempts to download multiple files of the same type:
Clicking on the kendo-ui-license.js
button should not attempt to download multiple files of the same type at once
I have a number of DataSource items in the event editor template. They are small JSON objects and it would be dumb to read them from the server each time. They do not change and are part of the page load. You can see here I am just serializing them into the page itself:
This works 9 out of 10 times. But sometimes the dataset is empty. Which is crazy because I am always filling it. I managed to find a work around on the event edit event that gets called but this seems strange to do. Not sure if there is a true bug here or not. Feels like it because this code should not have been needed:
I have an event template. Inside this template I am using a MultiSelect. It is defined like: <select data-down-Arrow="true"… . The downArrow property does not work. I discovered via debugging the kendo.all.js file the problem. Fortunately this one is fixable outside that file:
I have some client events for creating/updating events.
They are currently the same and call the same method:
Due to JSON serialization, I end up with dates being serialized as ticks when sent to the client. This function converts these ticks to a proper JavaScript Date() object. The code works perfectly fine.
We run into an error on random occasions. This happens maybe once a day per user. It is not repeatable but it was fixable. This code is from the Kendo.all.js file. The highlighted lines were added:
99% of the time things work fine. But sometimes this convertData() method is called before the client methods are called. Perhaps a threading or AJAX or promise issue? Perhaps there is one scenario where the client method is not being called? The real bug here is that convertData() can sometimes get called before the client’s event where I would have corrected by dates. This is another case where it is tough to upgrade Kendo versions because I need to port this as minified JavaScript to the custom downloaded minified file.
Here is the text from the browser’s F12 window when we hit this error (If I have not applied the fix above):
kendo?v=Brdc2jM0hzOFDq3Kj04CDAYP5xcGXPDm3x-vN4slHho1:1 Uncaught TypeError: f.start.getTimezoneOffset is not a function
at ai (kendo?v=Brdc2jM0hzOFDq3Kj04CDAYP5xcGXPDm3x-vN4slHho1:1:1182628)
at init.data (kendo?v=Brdc2jM0hzOFDq3Kj04CDAYP5xcGXPDm3x-vN4slHho1:1:1182352)
at init._readData (kendo?v=Brdc2jM0hzOFDq3Kj04CDAYP5xcGXPDm3x-vN4slHho1:1:96753)
at init._push (kendo?v=Brdc2jM0hzOFDq3Kj04CDAYP5xcGXPDm3x-vN4slHho1:1:90345)
at init._pushUpdate (kendo?v=Brdc2jM0hzOFDq3Kj04CDAYP5xcGXPDm3x-vN4slHho1:1:90237)
at init.e (jquery?v=9zl6bqYAmbr9FSUZX0T1VSNbWQ5Gc01X9-RaVvSk-7A1:1:95021)
at init.a (signalr?v=4OffKgJP3BKl-a0HMCu8SoFYj-iqmWy-1sbyLwYhtvk1:1:36810)
at init.dispatch (jquery?v=9zl6bqYAmbr9FSUZX0T1VSNbWQ5Gc01X9-RaVvSk-7A1:1:55579)
at y.handle (jquery?v=9zl6bqYAmbr9FSUZX0T1VSNbWQ5Gc01X9-RaVvSk-7A1:1:53581)
at Object.trigger (jquery?v=9zl6bqYAmbr9FSUZX0T1VSNbWQ5Gc01X9-RaVvSk-7A1:1:78599)
In my application, when a user changes their view date on the scheduler, there are two other schedulers on the other two tabs of the tab strip that are not visible. The dates here get changed too. This happens in a navigate event. They end up in a broken state from this. It seems the issue is that they are not visible so rendering is not happening. I found a hacky way to work around this. I am adding a newDate property and a needRefresh property to the scheduler. When a tab is activated, the scheduler in that tab is checked. If it needs a refresh, it is refreshed. If it has a new date, that is also set.