Hello!
I was recommended to submit a feature request for this in this feature request. I also commented on a similar forum question.
Dynamically adding/removing tiles via the setOptions method works, however in my case I'm using the containers/tiles to display other widgets (like charts and data grids) in a dashboard. Re-initializing the TileLayout via setOptions forces me to recreate my data widgets, some of which are loading fairly large datasets.
I've been able to work around this using the internal source code for the kendoUI TileLayout, which I dislike doing and am always just one update away from my solution breaking. So far it works - I can add/remove tiles without destroying and re-initializing. I did run into some trouble with resizing and reordering, but I think I've gotten around that.
It seems a common usage for the TileLayout is to display dashboards/remote data. I do think implementing a solution to add/remove tiles without re-initializing would be beneficial for many developers using this widget.
Thank you,
-Alexa
/**
* At the time of this writing, the only kosher way to dynamically add/remove tiles to a kendoUI TileLayout is
* to use the `setOptions` method and pushing/slicing the `containers` array. However, doing this destroys the
* TileLayout and re-initializes it. We would have to re-initialize all the data widgets and submit requests to
* the server all over again. So... I lifted this from the KendoUI TileLayout source code and modified it to
* suit our needs.
* It seems to work, but it just one update away from breaking. I guess I like living on the edge.
*
* @deprecated
* @param options {Object} the kendo.ui.TileLayout `containers` item configuration
* @param idx {Number} the index of the tile to add
* @param kendoTileLayout {kendo.ui.TileLayout} the kendo tile layout instance
*/
const addContainer = (options, idx, kendoTileLayout) => {
const body = $(`<div></div>`).addClass('k-tilelayout-item-body k-card-body');
const headerSettings = options.header;
const id = kendo.guid();
const container = $(`<div></div>`)
.addClass('k-tilelayout-item k-card')
.attr({
id: id,
role: 'listitem',
'aria-keyshortcuts': 'Enter',
});
if (headerSettings && (headerSettings.template || headerSettings.text)) {
const header = $('<div></div>').addClass('k-tilelayout-item-header k-card-header');
const headerContent = headerSettings.text ? `<div class="k-card-title">${headerSettings.text}</div>` : null;
if (kendoTileLayout.options.reorderable) {
header.addClass('k-cursor-move');
}
header.append(headerContent || kendo.template(headerSettings.template)({}));
header.appendTo(container);
}
body.append(kendo.template(options.bodyTemplate)({}));
body.appendTo(container);
container.appendTo(kendoTileLayout.element);
kendoTileLayout._addContainer(container, options, idx, id);
};
/**
* @deprecated
* This also is using KendoUI internal source code. If/when the folks at Telerik decide to implement a different
* solution for dynamically adding/removing tiles, that should be used instead and this should be removed.
*
* @param widgetId {Number} the id of the widget to remove
* @param kendoTileLayout {kendo.ui.TileLayout} the kendo tile layout instance
*/
const removeContainer = (widgetId, kendoTileLayout) => {
const widgetRegex = new RegExp(`${widgetId}`);
const matchedContainer = kendoTileLayout.options.containers.find(container => container.bodyTemplate.match(widgetRegex));
const containerGuid = matchedContainer.id;
const containerItem = kendoTileLayout.itemsMap[containerGuid];
const containerItemIdx = kendoTileLayout.items.indexOf(containerItem);
kendoTileLayout.options.containers.splice(containerItemIdx, 1);
delete kendoTileLayout.itemsMap[containerGuid];
kendoTileLayout.items.splice(containerItemIdx, 1);
$(`#widget-${widgetId}`).closest('.k-tilelayout-item.k-card').remove();
kendoTileLayout._updateContainers();
// I've got a bad feeling about this.
kendoTileLayout.element.off('mousemove'); // after removing a container, the resize handles weren't working.
kendoTileLayout.resizable.destroy();
kendoTileLayout.element.find('.k-resize-handle').remove();
kendoTileLayout.resizeHandle = null;
kendoTileLayout._resizable();
};
i've tried to apply autoFitColumn method for treelist accordingly to the documentation, https://docs.telerik.com/kendo-ui/api/javascript/ui/treelist/methods/autofitcolumn#autofitcolumn , and seems it assumes only "simple" columns structure, i.e. no nested headers.
In the jquery scrollView component https://docs.telerik.com/kendo-ui/api/javascript/ui/scrollview there is no current way to enableto 'endless' or 'wrap around' option like the react component has
ref: https://www.telerik.com/kendo-react-ui/components/scrollview/endless-scrolling/
Requesting that this feature be added.
For my SPECIFIC my use case (which will probably not work for everyone), I did add a workaround for now
(not fond of it as it relies on the implementation details of the current version)
In our SCSS, I added an override to force the previous/next buttons to always be visible, even after the control hides them
...
&.k-scrollview {
.k-scrollview-prev, .k-scrollview-next {
//Prevent the control from hiding these buttons when it reaches the 'end'
//We will be using some custom logic to force the 'wrap around'
display:flex !important;
...
Then I subscribed click events and did some manual handling on the buttons
//After the page load & scroll view is initialized... //note: $slides is a jquery instance that the scrollView is attached to let scrollView = $slides.data("kendoScrollView"); let $prev = $slides.find('.k-scrollview-prev'); let $next = $slides.find('.k-scrollview-next'); $prev.on("click", function (e) { // NOTE: Here we are looking at an 'internal' variable, this is dependent on the version of Kendo we are using - may need to change // in the future // I figured this out by looking at the implementation in the source // \src\js\kendo.scrollview.js let pageCount = scrollView._content.pageCount; let currentPage = scrollView._content.page; if (pageCount > 1 && currentPage === 0) { e.preventDefault(); e.stopPropagation(); scrollView.scrollTo(pageCount-1); } }); $next.on("click", function (e) { let pageCount = scrollView._content.pageCount; let currentPage = scrollView._content.page; if (pageCount > 1 && currentPage === pageCount - 1) { e.preventDefault(); e.stopPropagation(); scrollView.scrollTo(0); } });
See https://demos.telerik.com/kendo-ui/menu/scrollable
When you hover over the left or right arrow on the menu, the menu scrolls.
Our client *hates* that, and only wants the menu to scroll when you actually click on the left/right arrow.
Request:
Add an option so that we can turn OFF the scrolling on hover on the left/right scroll buttons in the menu.
Support ticket related: https://www.telerik.com/account/support-center/view-ticket/1662811
We are currently utilizing Telerik's Spreadsheet functionality across two different technologies:
- KendoUI for jQuery: This is being used by our FrontEnd users.
- .NET Assembly of Telerik: This is employed for backend processing and interfaces.
Both Spreadsheet implementations allow us to populate data; however, we've observed a discrepancy between the two. Specifically, there is a misalignment in the available functions, where some functions accessible in KendoUI are not available in the .NET Assembly. To address this inconsistency, we request the following enhancements:
1. Unified Function List: We would like an official list of functions that are consistently supported by both the jQuery library and the .NET assembly. Currently, the frontend offers a broader range of functions than the backend. Since our system relies on both for computations, consistency is crucial.
2. Function Usage Detection: We request an event or function in both the JS and .NET implementations that can detect the functions used within a formula. This will allow us to identify discrepancies early on.
3. Backend Validation: An event that triggers when a formula entered on the frontend is valid there but would fail on the backend due to unsupported functions would be invaluable. This will help prevent issues caused by discrepancies between the frontend and backend function implementations.
4. Enhanced Backend Functionality: We also request additional functions or exposed properties on the backend to perform similar checks as described above. This is particularly important for our customizations that allow formulas to be entered directly on the backend, bypassing the spreadsheet UI.
5. Specific Error Handling: On the backend, it would be helpful to introduce a specific error type, distinct from the generic error, that indicates a calculation failure due to an unsupported function in a formula. Currently, the generic error type could indicate multiple issues, making it difficult to diagnose the root cause.
I have custom messages for my filter, these values replace the and/or values instead of just the visual after switching the and/or once.
Reproducer: https://dojo.telerik.com/AdOGEQey
When initially running you will see "en/of" (and/or), if you than press any of them the text below will insert the message value of the button rather than the underlaying value of "and/or".
When typing in the search input a value that does not match any item of the Filemanager's content view, while a subfolder is selected, the expand arrow disappears.
The expand arrow disappears.
The arrow should not disappear and the search to work correctly.
treelist
- has filterable mode 'row',
- some columns are not filterable,
- columns reordering is allowed
drag-n-drop of columns raises error in console
demo: https://dojo.telerik.com/aFIkOPUp
try to move column "position" left or right
Bug report
TreeList with multi-column headers and row filtering throws an error when user tries to reorder a column.
Reproduction of the problem
Open the Dojo - https://dojo.telerik.com/aFIkOPUp/3
Try to move column "position" left or right
Current behavior
Error is thrown
Uncaught TypeError: Cannot read properties of undefined (reading 'locked')
Expected/desired behavior
Rerdering shall be allowed
Environment
jQuery version: 3.4.1
Kendo UI version: [all]
Browser: [all ]
Dear Kendo UI Team,
I am writing to request the implementation of a mention user feature for the Kendo UI TextArea component. This functionality would significantly enhance the user experience and collaboration capabilities of our .NET application.
Similar to popular social media platforms, the ability to mention users within a text area would allow for efficient communication, tagging, and collaboration among users. This feature could be implemented by enabling users to type an '@' symbol followed by a partial username, which would then trigger a dropdown list of matching user suggestions.
By incorporating this feature, Kendo UI would further solidify its position as a leading UI component library, providing developers with the tools to create more engaging and interactive applications.
Thank you for considering this feature request. We look forward to your response.
Sincerely,
Nasif Ishtiaque Islam
Software Engineer
I'm seeing an error in the Chrome console when the filter menu is clicked on in a kendo grid: https://demos.telerik.com/kendo-ui/grid/filter-menu-customization
You can see the example in the link above by opening your console in Chrome and clicking on the filter button.
Here is the error:
Blocked aria-hidden on a <a> element because the element that just received focus must not be hidden from assistive technology users. Avoid using aria-hidden on a focused element or its ancestor. Consider using the inert attribute instead, which will also prevent focus. For more details, see the aria-hidden section of the WAI-ARIA specification at https://w3c.github.io/aria/#aria-hidden.
There is an issue with the .k-sorted class being applied to the last column in the grid when the actual column is not visible. It also is not updating the k-sorted when a sort is applied after the grid was created.
This seems to be an issue in the latest release if the column sorted on is hidden, the last column in the grid gets the class. I also noticed that sorting a column does not apply the k-sorted class to the correct column: https://dojo.telerik.com/@dojolee/eFIbaSUn
Hi,
We have recently upgraded our Kendo MVC version to 2024.2.514.462. The normal upgrade works fine but I was trying to implement the `CSP template` after removing the `unsafe-eval` from the tag as it was announced in 2023 version.
I was following the example given in CSP template and tried changing the template defined in treeview (also as shown in the documentation):-
sideNavList.kendoTreeView({
/*template: "<span id='#= item.id #' class='navText'> #= item.text# </span>",*/
template: ({ items }) => `<span id='kendo.htmlEncode(items.id)' class='navText'> kendo.htmlEncode(items.text) </span>`,
dataSource: hierarchicalLeftNavData,
It is not throwing error but it's not able to recognize the `item` and rendering the template as:-
<span id="kendo.htmlEncode(items.id)" class="navText"> kendo.htmlEncode(items.text) </span>
Am I missing anything?
Build Dates & Run Dates range picker don't highlight days
Pre-Requisites (if any)
1. Go to system settings.
2. Navigate to 'Accessibility' and activate it.
3. Navigate to 'Contrast theme' and activate it.
4. Select 'Desert/Aquatic' High Contrast theme in the combo box.
Repro-Steps:
1. Open URL PowerGates Graph in Edge Dev.
2. Navigate to Build Date dropdown button using tab key and activate it.
3. Navigate to the ‘Within range ’calendar picker button and activate it.
4. Observe that issue.
Actual Result:
The Build Dates & Run Dates range picker both don't highlight the currently selected date does not outline the current date, as it does without contrast. Occurs in both Aquatic (High Contrast Black) and Desert (High Contrast White) modes.
Hello,
- I reproduced my problem on this DOJO https://dojo.telerik.com/EpUVIxek , columns are not on the same position with the category because I have 5 column series and 4 of them are 0 in one category.
The observed appearance is due to the data with zero value for each series. Even if the value for a series/bar is zero still there is a placeholder in the Chart for the respective bar. Hiding the data points with 0 value is not supported in the Kendo UI Chart and I am afraid I could not suggest a possible approach for achieving such an appearance.
Can something be implemented so the columns with 0 value to not take place?
Best regards.
I am trying to upgrade my Kendo UI JQuery installation from 2022 to 2024 and it is not going smoothly. One issue I'm having is that now my grids with locked columns do not span the whole width of their container. In the old version, the k-grid-table would expand to fill the width of the k-grid-content but now it seems that the columns retain their width, rather than growing like they used to. So now there is a large white space between the last column and the vertical scrollbar. I did notice that if I remove the inline style in the developer tools that is applied to the k-grid-table in the unlocked section, it fixes it. It should continue to expand all columns evenly to fill the available width like it did in versions past or this should be an option that the user can set. To leave that space without any user choice is a bug.
Old Version:
New Version:
Note, I reported this in a forum post. I know I can write code as a workaround but that is cumbersome, especially when I have many grids and multiple developers working on the project.