Hi,
We've noticed a discrepancy between the Theme Builder and the Angular Grid component regarding size options.Dear Telerik Support Team,
would it be possible to add Constrained Mode support for the TreeList, given that it already exists for the Grid?
The Grid's resizable input accepts "boolean | ResizeMode", so resizable="constrained" keeps the overall table width fixed while resizing. The TreeList's resizable input is boolean only, and we could not find an equivalent option.
In our application, Grid and TreeList are wrapped by two components that are supposed to look and behave identically. Without constrained mode, shrinking a TreeList column leaves empty space to the right of the table whenever no horizontal scroll bar is present; the table stops filling the available width, whereas a grid next to it still does.
We are currently working around this issue by adding an additional spacer column, but that relies on internal DOM details of the TreeList and is likely to break with future updates. Native support would allow us to remove the workaround.
Tested with version 23.4.0; the public API docs suggest this is still the case in the latest release.
Thanks a lot in advance!
If we format kendo-datepicker to (MMMM/dd/yyyy) and if we enter number of month in input then it is not reflecting and shows month in input field.
As you can see in screenshot, I called (valueChange) event to see the changed value, I have enter 10 in month input field so it shows two value in console, first one is when 1 is press and second is when 0 is pressed after 1 so it gives null and in input field it shows month instead of October.
It is working if we enter first letter of month but it should work if we enter month in number.
Please fix this issue asap.
Thanks.
Add built-in support for importing and preserving native Excel tables in the Spreadsheet component.
When an XLSX file contains a table created through Excel’s Insert > Table feature, the Spreadsheet should parse and retain the table definition, including its metadata, style, structured references, automatic expansion, and filter buttons.
When the workbook is exported, the corresponding native Excel table parts should be written back to the XLSX file so the table remains a functional Excel Table.
Hi,
It will be a nice addition to the component if a resizeStart and resizeEnd events are introduced to the component. These events will fire once and will be useful for API calls or other operations that need to be called once as the current resize event fires multiple times.
Thank you for your consideration.
As the FilterInputWrapperComponents set currentOperator(value: string) uses a hard coded list of operator values (isnull isempty isnotnull isnotemty), it is impossible to create a custom FilterOperator that has no search string - so we can't have isnullorempty isnotnullorempty (or isblank/isnotblank).
Please introduce a requiresSearchValue on the FilterOperatorBase class and make sure FilterInputWrapperComponents does decisions based on that.
Please introduce a isnullorempty/isnotnullorempty filter operator (for strings).
Additional context/sample usage:
<kendo-grid-column title="Employee / Prospect" field="Name" width="160">
<ng-template kendoGridCellTemplate let-field let-value let-dataItem>
<span *ngIf="dataItem.IsProspect" class="pull-left">{{dataItem.Name}}
<p class="prospect-indicator pull-right" data-letters="P"></p>
</span>
<span *ngIf="!dataItem.IsProspect">{{dataItem.Name}}</span>
</ng-template>
<ng-template kendoGridHeaderTemplate let-column>
<span title={{column.title}}>{{column.title}}</span>
</ng-template>
<ng-template kendoGridFilterMenuTemplate let-filter let-column="column" let-filterService="filterService">
<kendo-grid-string-filter-menu
[column]="column"
[filter]="filter"
[filterService]="filterService">
<kendo-filter-eq-operator></kendo-filter-eq-operator>
<kendo-filter-neq-operator></kendo-filter-neq-operator>
<kendo-filter-contains-operator></kendo-filter-contains-operator>
<kendo-filter-not-contains-operator></kendo-filter-not-contains-operator>
<kendo-filter-startswith-operator></kendo-filter-startswith-operator>
<kendo-filter-endswith-operator></kendo-filter-endswith-operator>
<kendo-filter-isblank-operator></kendo-filter-isblank-operator>
<kendo-filter-isnotblank-operator></kendo-filter-isnotblank-operator>
<kendo-filter-isempty-operator text="xIs blank"></kendo-filter-isempty-operator>
<kendo-filter-isnotempty-operator text="xIs not blank"></kendo-filter-isnotempty-operator>
</kendo-grid-string-filter-menu>
</ng-template>
</kendo-grid-column>
Hi,
The tree view enables us to drag and drop one item at a time. we have a scenario where i want to drag and drop multiple items. tree view also enables multiple selection of items but not supporting drag and drop of multiple items. Could you please provide some solution to dag and drop multiple items
Thanks& regards,
Ramesh M
Hi,
When a task is collapsed, how can I show the child tasks overlapped ontop of each other, rather than just a blank skinny line? When collapsed, I'd like to see all my tasks (and their templates/bars/titles) side-by-side or overlapping (if their startDates and endDates overlap)?
thanks
Currently, the row pinning functionality of the Grid duplicates the pinned rows in both the pinned section and the normal row section.
Provide a way to avoid this duplication and have the pinned rows displayed only in the pinned section.
`@progress/kendo-intl` incorrectly formats timezone offsets whose minute component is non-zero.
For example, a JavaScript `Date` with the historical Warsaw offset `UTC+01:24` is formatted as `+01:04` instead of `+01:24`.
This affects all tested `Z`, `X`, and `x` timezone format variants.
- `@progress/kendo-angular-intl`: `24.2.0`
- `@progress/kendo-intl`: `3.2.1`
- Browser/Node timezone: `Europe/Warsaw`
- Operating system: Windows
- Format: `yyyy-MM-ddTHH:mm:ssZZZZZ`
The same formatting implementation appears in `@progress/kendo-intl` versions `3.1.2` and `3.2.1`.
const { formatDate } = require('@progress/kendo-intl');
process.env.TZ = 'Europe/Warsaw';
const date = new Date(1900, 0, 1, 16, 0, 0);
console.log(date.toString());
console.log(date.getTimezoneOffset());
console.log(formatDate(date, 'yyyy-MM-ddTHH:mm:ssZZZZZ'));Mon Jan 01 1900 16:00:00 GMT+0124
-84
1900-01-01T16:00:00+01:041900-01-01T16:00:00+01:24Date#getTimezoneOffset() returns -84, meaning the local timezone is 84 minutes ahead of UTC:
84 minutes = 1 hour 24 minutesThe issue is not limited to positive offsets:
getTimezoneOffset() | Expected | Actual |
|---|---|---|
-84 | +01:24 | +01:04 |
210 | -03:30 | -03:05 |
UTC is also formatted differently depending on the token, but that behavior may be intentional:
| Offset | Expected ISO representation | ZZZZZ result |
|---|---|---|
0 | +00:00 or Z | Z |
All applicable format variants use the same incorrect minute calculation:
Z -> +0104
ZZ -> +0104
ZZZ -> +0104
ZZZZ -> GMT+01:04
ZZZZZ -> +01:04
X -> +0104
XX -> +0104
XXX -> +01:04
XXXX -> +0104
XXXXX -> +01:04
x -> +0104
xxx -> +01:04
xxxxx -> +01:04Changing from ZZZZZ to XXXXX or XXX therefore does not resolve the problem.
The current formatter appears to perform approximately this calculation:
const offset = date.getTimezoneOffset() / 60;
const hoursMinutes = Math.abs(offset).toString().split('.');
const minutes = hoursMinutes[1] || 0;For an 84-minute offset:
84 / 60 = 1.4The decimal portion "4" is then treated as four minutes and padded to "04".
However, the fractional part represents a fraction of an hour:
0.4 hours * 60 = 24 minutesLikewise, for 210 minutes:
210 / 60 = 3.5The formatter produces 03:05, although 0.5 hours is 30 minutes.
Timezone offsets should remain integer minute values throughout formatting:
function formatTimeZone(date, info, options) {
const totalMinutes = date.getTimezoneOffset();
const absoluteMinutes = Math.abs(totalMinutes);
const hours = Math.floor(absoluteMinutes / 60);
const minutes = absoluteMinutes % 60;
const sign = totalMinutes <= 0 ? '+' : '-';
// Continue applying shortHours, separator, optionalMinutes,
// localizedName and zZeroOffset options using hours and minutes.
}The important calculations are:
const hours = Math.floor(Math.abs(offsetMinutes) / 60);
const minutes = Math.abs(offsetMinutes) % 60;Converting the offset to a decimal hour and splitting its string representation is not reliable.
it('formats a positive timezone offset with minutes', () => {
const date = new Date(2024, 5, 25, 12, 7, 5);
vi.spyOn(date, 'getTimezoneOffset').mockReturnValue(-84);
expect(formatDate(date, 'yyyy-MM-ddTHH:mm:ssZZZZZ'))
.toBe('2024-06-25T12:07:05+01:24');
});
it('formats a negative timezone offset with minutes', () => {
const date = new Date(2024, 5, 25, 12, 7, 5);
vi.spyOn(date, 'getTimezoneOffset').mockReturnValue(210);
expect(formatDate(date, 'yyyy-MM-ddTHH:mm:ssZZZZZ'))
.toBe('2024-06-25T12:07:05-03:30');
});Other useful cases include:
-345 -> +05:45
-330 -> +05:30
210 -> -03:30
0 -> Z or +00:00, depending on the selected token
This can corrupt serialized date-time values when they are passed to systems that honor the emitted offset, including .NET DateTimeOffset.
Example:
Intended: 1900-01-01T16:00:00+01:24
Emitted: 1900-01-01T16:00:00+01:04These values represent instants 20 minutes apart.
The issue affects:
Date implementation returning a non-whole-hour offset.Examples of modern fractional offsets include UTC+05:30, UTC+05:45, UTC+09:30, and UTC-03:30.
We initially encountered this with Europe/Warsaw and 1900-01-01. The JavaScript runtime correctly reports Warsaw's historical offset as UTC+01:24. The incorrect UTC+01:04 value is introduced only during Kendo formatting.
We have implemented a temporary application-level workaround that formats the date portion with Kendo and calculates the timezone offset directly from integer minutes.
Hello,
I have prepared an example, here's how you reproduce the bug (https://stackblitz.com/edit/angular-2nwrn7db?file=src%2Fapp%2Fapp.component.ts):
1. Move the Product Name column between the Category and Unit Price columns
2. Save the Grid state using the Save State button
3. Reload the page
4. Restore the saved state using the Load State button
5. The multi-column Test (k-grid0-col4) has the wrong OrderIndex (0 instead of 4)
Best regards,
Igor
Currently, there is no public API to customize the visible month window. The built-in header buttons move the months window by a two-month span.
Provide a way in the MultiViewCalendar to programmatically shift the displayed months by one month backward or forward. For example:
Due to the internal mechanism by which the Scheduler displays events per day, some events are shrunk without reason, because others are shrunk due to overlap.
In the following screenshot, the Scheduler Event 1 has enough space to occupy the entire column, but is shrunk the same as Event 2 (which is shrunk due to the overlap with Event 3). Internally, each day use column separation logic to distribute the events. Since all three events fall into the same slot, the entire column is divided by 3 and events are distributed among them. Since Event 1 is the first event, it has been shown in the first 1/3. This isn't optimal, as this case proves it.
Here is how Kendo Scheduler behaves compared to Google Calendar in this case
Google Calendar