Two specific questions:
1. Does react kendo grid support a filter button in the same cell as the header cell? As in the jquery demo here: https://demos.telerik.com/kendo-ui/grid/filter-menu-customization. I could not find a filterable.mode property in the kendo components.
2. Does the react kendo grid support multi-column support? As in the jquery demo here: https://demos.telerik.com/kendo-ui/grid/multicolumnheaders
A more general question:
3. Are there other known limitations between the different implementations? I realize that's a complicated question.
Hello,
Straight to the problem:
My parent component prepares the data for the Gantt
async componentDidMount() {
const items = await
this
.utility.GetListItems();
const taskDataSourceWithInformation = await
this
.utility.GetKendoGanttDataSource(items);
this
.setState({
data: taskDataSourceWithInformation,
allProjects: items
});
}
const result =
this
.state.data ? (
<div>
<IconButton onClick={() =>
this
.setState({showPanel:
true
})}
/>
<GanttContainer data={
this
.state.data} />
</div>
) :
null
;
return
result;
}
First problem: When I click the button, that sets the showPanel variable to true (it does only that), the Gantt loses all its data, then when I click one of the Gantt view buttons, the data shows back.
However, i managed to workaround that with this method (i am not proud of it). I will appreciate it, if you give me better solution.
private onFilterButtonClick = async () => {
this
.selected = $(
"li.k-state-selected"
);
this
.setState(
{
showPanel:
true
},
() => {
$(
"li."
+
this
.selected[0].classList[1]).click();
}
);
};
Ok. Now i want to filter my Gantt data. When i pass different, filtered data source to the "GanttContainer" components (which contains the Gantt), it does not update.
I tried to set it with setDataSource, but i dont know where that must happen and how to do it.
Can you help me with both my problems please.
Best Regards!
Hello,
Is it possible to use functional HOC for CustomGridDetailRow like the one provided in the documentation (below) which is not leading to extra rendering of GridDetailRow?
Or it's a must to use only an instance of React.Component class/GridDetailRow class?
class CustomGridDetailRow extends GridDetailRow {
render() {
const detailData = this.props.dataItem.MasterField2;
return (
<div> This is detail template with another grid inside it <Grid scrollable="none" data={detailData} /></div>
);
}
}
<Grid data={this.state.data} detail={CustomGridDetailRow} >
<GridColumn field="MasterField1" />
</Grid>
The point is that if I try to use functional HOC inside detail prop (or just a function returning CustomGridComponent) there're some issues with rendering DetailRow (like additional re-rendering during scrolling). It seems that this variable inside detail property should be an instance of React.Component/GridDetailRow class, otherwise Grid component can't perform some internal logic based on lifecycle hooks.
Thanks in advance for any response.
I'm using the Kendo React Grid and Kendo React DateInput in an application and both, upon replacing the wrapped grid/DateInput components began causing my Jest tests to fail, not even rendering the mounted component.
Every test suite that mounts a component with a DateInput or Grid in the component tree fails with this error:
TypeError: _this.element.setCustomValidity is not a function
124 | ...passedProps,
125 | } as any;
> 126 | wrapper = Enzyme.mount(
| ^
127 | <
Provider
store={store}>
128 | <
MyComponent
{...props} />
129 | </
Provider
>
at DateInput._this.setValidity (node_modules/@progress/kendo-react-dateinputs/src/dateinput/DateInput.tsx:387:26)
at DateInput.Object.<
anonymous
>.DateInput.componentDidMount (node_modules/@progress/kendo-react-dateinputs/src/dateinput/DateInput.tsx:150:14)
at commitLifeCycles (node_modules/react-dom/cjs/react-dom.development.js:14685:22)
at commitAllLifeCycles (node_modules/react-dom/cjs/react-dom.development.js:15905:7)
at HTMLUnknownElement.callCallback (node_modules/react-dom/cjs/react-dom.development.js:145:14)
at invokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:193:27)
at HTMLUnknownElementImpl._dispatch (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:119:9)
at HTMLUnknownElementImpl.dispatchEvent (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:82:17)
at HTMLUnknownElementImpl.dispatchEvent (node_modules/jsdom/lib/jsdom/living/nodes/HTMLElement-impl.js:30:27)
at HTMLUnknownElement.dispatchEvent (node_modules/jsdom/lib/jsdom/living/generated/EventTarget.js:157:21)
at Object.invokeGuardedCallbackDev (node_modules/react-dom/cjs/react-dom.development.js:195:16)
at invokeGuardedCallback (node_modules/react-dom/cjs/react-dom.development.js:248:31)
at commitRoot (node_modules/react-dom/cjs/react-dom.development.js:16075:7)
at completeRoot (node_modules/react-dom/cjs/react-dom.development.js:17463:3)
at performWorkOnRoot (node_modules/react-dom/cjs/react-dom.development.js:17391:9)
at performWork (node_modules/react-dom/cjs/react-dom.development.js:17295:7)
at performSyncWork (node_modules/react-dom/cjs/react-dom.development.js:17267:3)
at requestWork (node_modules/react-dom/cjs/react-dom.development.js:17155:5)
at scheduleWork (node_modules/react-dom/cjs/react-dom.development.js:16949:5)
at scheduleRootUpdate (node_modules/react-dom/cjs/react-dom.development.js:17637:3)
at updateContainerAtExpirationTime (node_modules/react-dom/cjs/react-dom.development.js:17664:10)
at updateContainer (node_modules/react-dom/cjs/react-dom.development.js:17691:10)
at ReactRoot.Object.<
anonymous
>.ReactRoot.render (node_modules/react-dom/cjs/react-dom.development.js:17957:3)
at node_modules/react-dom/cjs/react-dom.development.js:18097:14
at unbatchedUpdates (node_modules/react-dom/cjs/react-dom.development.js:17518:10)
at legacyRenderSubtreeIntoContainer (node_modules/react-dom/cjs/react-dom.development.js:18093:5)
at Object.render (node_modules/react-dom/cjs/react-dom.development.js:18152:12)
at Object.render (node_modules/enzyme-adapter-react-16/build/ReactSixteenAdapter.js:314:114)
at new ReactWrapper (node_modules/enzyme/build/ReactWrapper.js:119:16)
at Object.mount (node_modules/enzyme/build/mount.js:21:10)
at generateMountedWrapper (ts/apps/myApp/components/MyComponent.test.tsx:126:20)
at Object.<
anonymous
> (ts/apps/myApp/components/MyComponent.test.tsx:330:5)
I just upgraded to use the react editor wrapper. The editor is showing up but not all options are available. These are the options I am passing, but it looks like it is just showing the default options. Any ideas?
options: {
tools: [
'bold',
'italic',
'underline',
'strikethrough',
{
name: 'foreColor',
palette: [
'24282D',
'F4F4F4',
'FFD200',
'F04C3E',
'00B050',
'363A3F',
'74777D',
'E4E5E7',
'F2C700',
'EB2D1E',
'FFFFFF',
'237932',
'33373b',
'676A6F',
'D9DADB',
'E5BD00',
'D71E0F',
'21852E',
'0070C0',
'44494F',
'81858B'
]
},
{
name: 'backColor',
palette: [
'24282D',
'F4F4F4',
'FFD200',
'F04C3E',
'00B050',
'363A3F',
'74777D',
'E4E5E7',
'F2C700',
'EB2D1E',
'FFFFFF',
'237932',
'33373b',
'676A6F',
'D9DADB',
'E5BD00',
'D71E0F',
'21852E',
'0070C0',
'44494F',
'81858B'
]
},
'formatting',
'fontSize',
'subscript',
'superscript',
'justifyLeft',
'justifyCenter',
'justifyRight',
'justifyFull',
'insertUnorderedList',
'insertOrderedList',
'indent',
'outdent',
'createLink',
'createTable',
'addColumnLeft',
'addColumnRight',
'addRowAbove',
'addRowBelow',
'deleteRow',
'deleteColumn',
'cleanFormatting',
'print'
],
pasteCleanup: {
all: false,
css: false,
keepNewLines: false,
msAllFormatting: true,
msConvertLists: true,
msTags: true,
none: false,
span: false
}
}
Can anyone confirm if the Kendo React Grids are supposed to be compatible with the Kendo Less Styles? When I attempt to use them with a compiled set of styles from the Kendo LESS sources in the @progress/kendo-ui package, the react grids filter blocks render in a broken, inoperable way as the Less style rules react badly with the classes on the filter cells.
The SASS themes work with it, but don't work with the Relerik Reports views.
I will sometimes see the wrong tooltip label in cells on my grid. I want the tooltip to appear on the hover anywhere in a particular td that has messages to display. These messages are based on props of the dataItem being available. There are a few problems.
1 & 2 are visible/reproducible in my stackblitz. I have been unable to replicate 3 in stackblitz so I was wondering if it was related to my splitter (not implemented in stackblitz to save time..)
Ideally I would only have one <Tooltip component for my grid but it becomes unnatural to me to have to iterate state from the Grid component instead of at the cell level. I do want the tooltip to be interacted with via the icon when in edit mode as well but I have not implemented that here. Is there a better approach that preferably avoids the use of globals?