The same way it is possible to make the search case-insensitive by setting columns.filterable.ignoreCase to true, it would be great if there was a way to add a custom filter (e.g. make the search diacritics-insensitive, with a custom function or as part of provided functionality). Thanks in advance.
It will be really useful if we could include a new 'filtering mode' in which operators like 'and' or 'or' are allowed in the filtering input box.
For instance, using the "doesnotcontain" with 'march or july or september' will allow users to exclude multiple conditions in a single filter
In my application, I have grids with dozens of hidden fields.
It would be beneficial if I could filter the available columns similar to what's available in the Windows Forms column chooser:
Hi,
We have some multiselect controls which can have a large number of values, and selected values. This causes an issue where the height becomes unreasonably large compared to other controls.
For a typical example of the issue, see here: Multiselect height issue | Kendo UI Dojo
As can also be seen in the provided example, setting max-height with an overflow isn't a viable solution as then it becomes very difficult to see what has been selected - the vertical scroll is much too quick (at least it is using my mouse which has discrete scroll values). Also, there are both dropdown buttons and scroll buttons which is ugly and confusing for end users.
Our suggestion to resolve this would be to add an option for a "single line mode" so that functionality is not broken for other clients. When using this mode, all the items will be kept in a line. In the event of an overflow, then you could either a) cut off the items with an ellipsis "..." or b) enable horizontal scrolling (ideally without a visible scrollbar).
See this example in the DevExpress controls for an example of horizontal scrolling in "Single line mode".
JavaScript/jQuery Tag Box - Overview | jQuery/JS Example
You can see that when all the items are selected, the height is kept consistent. It is still reasonably easy to read as you can easily scroll along.
Something similar to this solution would be ideal for us.
Would like to request that the ability to set a 'CenterTemplate' be added to the Radial and Linear Gauge charts. We show a percentage based label using jquery by appending to the chart wrap a label to show 'x of y (z%)'. What we've seen is that when you go to export the chart, this label doesn't follow with it.
When using other charting types, for example the Arc Gauge or Circular Gauge, they do have a property called 'CenterTemplate' which allows us to do labels like above and have it export correctly.
Can the property be added to other Charts so that we can customize a label to show information such as percentage based text?
When using a grid against a large table with server side filtering (ToDataSourceResult) ToDataSourceResult builds a SQL query that converts the search string to UPPER() and therefore prevents the database from using its indexes. As SQL comparison is case insensitive that LOWER() is unnecessary. As we have may grids where this is an issue it would be time consuming to build out manual filters for each grid instead of using ToDataSourceResult This was discussed here and there was no solution at the time: https://www.telerik.com/forums/grid-filtering-on-text-using-lower-in-sql I would liek to request an option to tell ToDataSourceResult() not to use LOWER() in the sql? See ticket #1339310
Bug report
Line Chart Crosshair doesn't display on iPad iOS 17
Reproduction of the problem
Dojo: https://dojo.telerik.com/mGtuUvac
Expected/desired behavior
Crosshair shall display on tap
Environment
Browser: [all]
Kendo UI supports PDF export. It would be great if you could add glyph mirroring support to it as well (https://github.com/mozilla/pdf.js/blob/master/src/core/bidi.js). PDF export of RTL languages such as Arabic and Persian need this trick to work properly.
Hello,
We're interested in a date input wheel (see attached images) as it is a feature that is especially for useful for mobile users. Telerik's technical support directed us here since the date widget doesn't offer this feature currently.
Kind regards
Original ticket:
START
As title says, when a list box is both draggable and multiple select is enabled the behavior is unpredictable. Sometimes when you click and drag on an item it will create the selection box when you are trying to simply drag the item, and other times the opposite. As far as I can tell there is no way to force one behavior or another.
$("#pdfPreviewList").kendoListBox({
draggable: true,
connectWith: "proposal",
selectable: "multiple",
dropSources: ["proposal"],
template: `
<div id='#:file#'>
#:pn#
</div>`,
toolbar: {
tools: ["moveUp", "moveDown", "transferTo"]
},
change: (e) => {
let f = e.sender.select()[0].getElementsByTagName("div")[0].id;
displayPdfPrview(f)
}
});
Data source is 2 -3 items, so there is white space below the list items.
END
I think there should be a dragToSelect option like there is in grid. That way you can still have multiple select work with key modifiers like control and shift and can also have dragging without worrying about the box select interfering with it.
maybe something like
select: "multiple" // normal selection *without* box selection
select: "dragToSelect" // selection with box selection and all the other features of "multiple" such as key modifiers
Also potentially a warning if dragToSelect and draggable are active at the same time to notify the developer that this combination may lead to unexpected behavior.
Thank you
Expose a Cron-Like Scheduler following an example found here https://crontab.guru/.
var datepicker = $("#datepicker").data("kendoDatePicker").reset();
Currently, the Grid provides autoFitColumn and autoFitColumns methods, while the Treelist provides built-in only the autoFitColumn. I would like to have built-in support for the TreeList components, so the behavior to be equivalent to the Grid - example.
dataBound: function(e) {
e.sender.autoFitColumns();
},
I am running into an issue with allowing copy/paste of dates into the filter and cell input fields. Currently, the date fields have validation to support MM/dd/yyyy, and users of the app may be trying to copy dates in that are MM/dd/yy. I would expect Kendo to auto format the date to MM/dd/yyyy after the paste happens, or at least allow support for that, but it doesn't seem to happen.
In the cell, when putting in MM/dd/yy, a validation message appears saying the date is invalid, and there doesn't appear to be a way to override that. In the filter, when putting in MM/dd/yy and submitting the filter, it doesn't stick and completely ignores the date put in.
Steps to reproduce (filter):
Steps to reproduce (cell edit):
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();
};
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); } });