@@ -336,34 +336,41 @@ class HotTable extends React.Component<HotTableProps, {}> {
336336 newSettings . editor = this . getEditorClass ( globalEditorNode ) ;
337337
338338 } else {
339- newSettings . editor = void 0 ;
339+ newSettings . editor = this . props . editor || this . props . settings ? this . props . settings . editor : void 0 ;
340340 }
341341
342342 if ( globalRendererNode ) {
343343 newSettings . renderer = this . getRendererWrapper ( globalRendererNode ) ;
344344
345345 } else {
346- newSettings . renderer = void 0 ;
346+ newSettings . renderer = this . props . renderer || this . props . settings ? this . props . settings . renderer : void 0 ;
347347 }
348348
349349 return newSettings ;
350350 }
351351
352352 /**
353353 * Detect if `autoRowSize` or `autoColumnSize` is defined, and if so, throw an incompatibility warning.
354+ *
355+ * @param {Handsontable.GridSettings } newGlobalSettings New global settings passed as Handsontable config.
354356 */
355- displayAutoSizeWarning ( ) : void {
357+ displayAutoSizeWarning ( newGlobalSettings : Handsontable . GridSettings ) : void {
356358 if ( this . hotInstance . getPlugin ( 'autoRowSize' ) . enabled || this . hotInstance . getPlugin ( 'autoColumnSize' ) . enabled ) {
357- const hotSettings = this . hotInstance . getSettings ( ) ;
359+ const _this = this ;
360+ const isNativeRenderer = function ( renderer , column ?) {
361+ return column ? ( _this . props . columns && _this . props . columns [ column ] && _this . props . columns [ column ] . renderer === renderer ) ||
362+ ( _this . props . settings && _this . props . settings . columns && _this . props . settings . columns [ column ] && _this . props . settings . columns [ column ] . renderer === renderer ) :
363+ _this . props . renderer === renderer || _this . props . settings . renderer === renderer ;
364+ } ;
358365 let rendererDefined = false ;
359366
360- if ( hotSettings . renderer ) {
367+ if ( newGlobalSettings . renderer && ! isNativeRenderer ( newGlobalSettings . renderer ) ) {
361368 rendererDefined = true ;
362369 }
363370
364- if ( ! rendererDefined && hotSettings . columns ) {
365- for ( let i = 0 ; i < hotSettings . columns . length ; i ++ ) {
366- if ( hotSettings . columns [ i ] . renderer ) {
371+ if ( ! rendererDefined && newGlobalSettings . columns ) {
372+ for ( let i = 0 ; i < newGlobalSettings . columns . length ; i ++ ) {
373+ if ( newGlobalSettings . columns [ i ] . renderer && ! isNativeRenderer ( newGlobalSettings . columns [ i ] . renderer , i ) ) {
367374 rendererDefined = true ;
368375 break ;
369376 }
@@ -445,8 +452,9 @@ class HotTable extends React.Component<HotTableProps, {}> {
445452 */
446453 componentDidMount ( ) : void {
447454 const hotTableComponent = this ;
455+ const newGlobalSettings = this . createNewGlobalSettings ( ) ;
448456
449- this . hotInstance = new Handsontable . Core ( this . hotElementRef , this . createNewGlobalSettings ( ) ) ;
457+ this . hotInstance = new Handsontable . Core ( this . hotElementRef , newGlobalSettings ) ;
450458
451459 this . hotInstance . addHook ( 'beforeRender' , function ( isForced ) {
452460 hotTableComponent . handsontableBeforeRender ( ) ;
@@ -459,7 +467,7 @@ class HotTable extends React.Component<HotTableProps, {}> {
459467 // `init` missing in Handsontable's type definitions.
460468 ( this . hotInstance as any ) . init ( ) ;
461469
462- this . displayAutoSizeWarning ( ) ;
470+ this . displayAutoSizeWarning ( newGlobalSettings ) ;
463471 }
464472
465473 /**
@@ -474,7 +482,10 @@ class HotTable extends React.Component<HotTableProps, {}> {
474482 * Logic performed after the component update.
475483 */
476484 componentDidUpdate ( ) : void {
477- this . updateHot ( this . createNewGlobalSettings ( ) ) ;
485+ const newGlobalSettings = this . createNewGlobalSettings ( ) ;
486+ this . updateHot ( newGlobalSettings ) ;
487+
488+ this . displayAutoSizeWarning ( newGlobalSettings ) ;
478489 }
479490
480491 /**
0 commit comments