@vaadin/crud 23.0.4 → 23.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/package.json +12 -12
  2. package/src/vaadin-crud.js +176 -148
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vaadin/crud",
3
- "version": "23.0.4",
3
+ "version": "23.0.7",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -35,22 +35,22 @@
35
35
  "dependencies": {
36
36
  "@open-wc/dedupe-mixin": "^1.3.0",
37
37
  "@polymer/polymer": "^3.0.0",
38
- "@vaadin/button": "^23.0.4",
39
- "@vaadin/component-base": "^23.0.4",
40
- "@vaadin/confirm-dialog": "^23.0.4",
41
- "@vaadin/dialog": "^23.0.4",
42
- "@vaadin/form-layout": "^23.0.4",
43
- "@vaadin/grid": "^23.0.4",
44
- "@vaadin/text-field": "^23.0.4",
38
+ "@vaadin/button": "^23.0.7",
39
+ "@vaadin/component-base": "^23.0.7",
40
+ "@vaadin/confirm-dialog": "^23.0.7",
41
+ "@vaadin/dialog": "^23.0.7",
42
+ "@vaadin/form-layout": "^23.0.7",
43
+ "@vaadin/grid": "^23.0.7",
44
+ "@vaadin/text-field": "^23.0.7",
45
45
  "@vaadin/vaadin-license-checker": "^2.1.0",
46
- "@vaadin/vaadin-lumo-styles": "^23.0.4",
47
- "@vaadin/vaadin-material-styles": "^23.0.4",
48
- "@vaadin/vaadin-themable-mixin": "^23.0.4"
46
+ "@vaadin/vaadin-lumo-styles": "^23.0.7",
47
+ "@vaadin/vaadin-material-styles": "^23.0.7",
48
+ "@vaadin/vaadin-themable-mixin": "^23.0.7"
49
49
  },
50
50
  "devDependencies": {
51
51
  "@esm-bundle/chai": "^4.3.4",
52
52
  "@vaadin/testing-helpers": "^0.3.2",
53
53
  "sinon": "^9.2.1"
54
54
  },
55
- "gitHead": "d8db2046661c42fb5aac09ed683b500bf4613b26"
55
+ "gitHead": "005c2d85db8f50cd3b239dd89ac467add6a71049"
56
56
  }
@@ -19,12 +19,6 @@ import { MediaQueryController } from '@vaadin/component-base/src/media-query-con
19
19
  import { SlotMixin } from '@vaadin/component-base/src/slot-mixin.js';
20
20
  import { ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
21
21
 
22
- const HOST_PROPS = {
23
- save: [{ attr: 'disabled', prop: '__isDirty', parseProp: '__isSaveBtnDisabled' }, { prop: 'i18n.saveItem' }],
24
- cancel: [{ prop: 'i18n.cancel' }],
25
- delete: [{ attr: 'hidden', prop: '__isNew', parseProp: (prop) => prop }, { prop: 'i18n.deleteItem' }]
26
- };
27
-
28
22
  /**
29
23
  * `<vaadin-crud>` is a Web Component for [CRUD](https://en.wikipedia.org/wiki/Create,_read,_update_and_delete) operations.
30
24
  *
@@ -324,7 +318,7 @@ class Crud extends SlotMixin(ControllerMixin(ElementMixin(ThemableMixin(PolymerE
324
318
  */
325
319
  _grid: {
326
320
  type: HTMLElement,
327
- observer: '__onGridChange'
321
+ observer: '__gridChanged'
328
322
  },
329
323
 
330
324
  /**
@@ -333,7 +327,7 @@ class Crud extends SlotMixin(ControllerMixin(ElementMixin(ThemableMixin(PolymerE
333
327
  */
334
328
  _form: {
335
329
  type: HTMLElement,
336
- observer: '__onFormChange'
330
+ observer: '__formChanged'
337
331
  },
338
332
 
339
333
  /**
@@ -342,7 +336,7 @@ class Crud extends SlotMixin(ControllerMixin(ElementMixin(ThemableMixin(PolymerE
342
336
  */
343
337
  _saveButton: {
344
338
  type: HTMLElement,
345
- observer: '__onSaveButtonChange'
339
+ observer: '__saveButtonChanged'
346
340
  },
347
341
 
348
342
  /**
@@ -351,7 +345,7 @@ class Crud extends SlotMixin(ControllerMixin(ElementMixin(ThemableMixin(PolymerE
351
345
  */
352
346
  _deleteButton: {
353
347
  type: HTMLElement,
354
- observer: '__onDeleteButtonChange'
348
+ observer: '__deleteButtonChanged'
355
349
  },
356
350
 
357
351
  /**
@@ -360,7 +354,7 @@ class Crud extends SlotMixin(ControllerMixin(ElementMixin(ThemableMixin(PolymerE
360
354
  */
361
355
  _cancelButton: {
362
356
  type: HTMLElement,
363
- observer: '__onCancelButtonChange'
357
+ observer: '__cancelButtonChanged'
364
358
  },
365
359
 
366
360
  /**
@@ -378,7 +372,7 @@ class Crud extends SlotMixin(ControllerMixin(ElementMixin(ThemableMixin(PolymerE
378
372
  items: {
379
373
  type: Array,
380
374
  notify: true,
381
- observer: '__onItemsChange'
375
+ observer: '__itemsChanged'
382
376
  },
383
377
 
384
378
  /**
@@ -387,7 +381,7 @@ class Crud extends SlotMixin(ControllerMixin(ElementMixin(ThemableMixin(PolymerE
387
381
  */
388
382
  editedItem: {
389
383
  type: Object,
390
- observer: '__onItemChange',
384
+ observer: '__editedItemChanged',
391
385
  notify: true
392
386
  },
393
387
 
@@ -405,7 +399,7 @@ class Crud extends SlotMixin(ControllerMixin(ElementMixin(ThemableMixin(PolymerE
405
399
  type: String,
406
400
  value: '',
407
401
  reflectToAttribute: true,
408
- observer: '__onEditorPositionChange'
402
+ observer: '__editorPositionChanged'
409
403
  },
410
404
 
411
405
  /**
@@ -434,7 +428,7 @@ class Crud extends SlotMixin(ControllerMixin(ElementMixin(ThemableMixin(PolymerE
434
428
  */
435
429
  dataProvider: {
436
430
  type: Function,
437
- observer: '__onDataProviderChange'
431
+ observer: '__dataProviderChanged'
438
432
  },
439
433
 
440
434
  /**
@@ -482,7 +476,7 @@ class Crud extends SlotMixin(ControllerMixin(ElementMixin(ThemableMixin(PolymerE
482
476
  type: Boolean,
483
477
  reflectToAttribute: true,
484
478
  notify: true,
485
- observer: '__onOpenedChanged'
479
+ observer: '__editorOpenedChanged'
486
480
  },
487
481
 
488
482
  /**
@@ -607,17 +601,13 @@ class Crud extends SlotMixin(ControllerMixin(ElementMixin(ThemableMixin(PolymerE
607
601
 
608
602
  static get observers() {
609
603
  return [
610
- '__headerNodeChanged(_headerNode, __isNew, i18n.newItem, i18n.editItem)',
611
- '__formChanged(_form, theme, include, exclude)',
612
- '__onI18Change(i18n, _grid)',
613
- '__onEditOnClickChange(editOnClick, _grid)',
614
- '__hostPropsChanged(' +
615
- HOST_PROPS.save.map(({ prop }) => prop).join(',') +
616
- ',' +
617
- HOST_PROPS.cancel.map(({ prop }) => prop).join(',') +
618
- ',' +
619
- HOST_PROPS.delete.map(({ prop }) => prop).join(',') +
620
- ')'
604
+ '__headerPropsChanged(_headerNode, __isNew, i18n.newItem, i18n.editItem)',
605
+ '__formPropsChanged(_form, theme, include, exclude)',
606
+ '__i18nChanged(i18n, _grid)',
607
+ '__editOnClickChanged(editOnClick, _grid)',
608
+ '__saveButtonPropsChanged(_saveButton, i18n.saveItem, __isDirty)',
609
+ '__cancelButtonPropsChanged(_cancelButton, i18n.cancel)',
610
+ '__deleteButtonPropsChanged(_deleteButton, i18n.deleteItem, __isNew)'
621
611
  ];
622
612
  }
623
613
 
@@ -632,6 +622,11 @@ class Crud extends SlotMixin(ControllerMixin(ElementMixin(ThemableMixin(PolymerE
632
622
  }
633
623
  }
634
624
 
625
+ /** @private */
626
+ static _isValidEditorPosition(editorPosition) {
627
+ return ['bottom', 'aside'].indexOf(editorPosition) != -1;
628
+ }
629
+
635
630
  /** @protected */
636
631
  get slots() {
637
632
  // NOTE: order in which the toolbar buttons are listed matters.
@@ -674,18 +669,16 @@ class Crud extends SlotMixin(ControllerMixin(ElementMixin(ThemableMixin(PolymerE
674
669
  /** @protected */
675
670
  ready() {
676
671
  super.ready();
677
- this.__editListener = (e) => this.__onCrudGridEdit(e);
678
- this.__changeListener = (e) => this.__onFormChanges(e);
679
- this.__saveBound = this.__save.bind(this);
680
- this.__cancelBound = this.__cancel.bind(this);
681
- this.__deleteBound = this.__delete.bind(this);
682
- this.__gridSizeListener = this.__onGridSizeChanges.bind(this);
683
- this.__boundEditOnClickListener = this.__editOnClickListener.bind(this);
672
+ this.__save = this.__save.bind(this);
673
+ this.__cancel = this.__cancel.bind(this);
674
+ this.__delete = this.__delete.bind(this);
675
+ this.__onFormChange = this.__onFormChange.bind(this);
676
+ this.__onGridEdit = this.__onGridEdit.bind(this);
677
+ this.__onGridSizeChanged = this.__onGridSizeChanged.bind(this);
678
+ this.__onGridActiveItemChanged = this.__onGridActiveItemChanged.bind(this);
684
679
  this._grid = this.$.grid;
685
- this.$.dialog.$.overlay.addEventListener('vaadin-overlay-outside-click', this.__cancelBound);
686
- this.$.dialog.$.overlay.addEventListener('vaadin-overlay-escape-press', this.__cancelBound);
687
- // Initialize the default buttons
688
- this.__propagateHostAttributes();
680
+ this.$.dialog.$.overlay.addEventListener('vaadin-overlay-outside-click', this.__cancel);
681
+ this.$.dialog.$.overlay.addEventListener('vaadin-overlay-escape-press', this.__cancel);
689
682
 
690
683
  this.addController(
691
684
  new MediaQueryController(this._fullscreenMediaQuery, (matches) => {
@@ -694,31 +687,35 @@ class Crud extends SlotMixin(ControllerMixin(ElementMixin(ThemableMixin(PolymerE
694
687
  );
695
688
  }
696
689
 
697
- /** @private */
690
+ /**
691
+ * @param {boolean} isDirty
692
+ * @private
693
+ */
698
694
  __isSaveBtnDisabled(isDirty) {
699
695
  // Used instead of isDirty property binding in order to enable overriding of the behavior
700
696
  // by overriding the method (i.e. from Flow component)
701
697
  return !isDirty;
702
698
  }
703
699
 
704
- /** @private */
705
- __headerNodeChanged(headerNode, isNew, newItem, editItem) {
700
+ /**
701
+ * @param {HTMLElement | undefined} headerNode
702
+ * @param {boolean} isNew
703
+ * @param {string} i18nNewItem
704
+ * @param {string} i18nEditItem
705
+ * @private
706
+ */
707
+ __headerPropsChanged(headerNode, isNew, i18nNewItem, i18nEditItem) {
706
708
  if (headerNode) {
707
- headerNode.textContent = isNew ? newItem : editItem;
709
+ headerNode.textContent = isNew ? i18nNewItem : i18nEditItem;
708
710
  }
709
711
  }
710
712
 
711
- /** @private */
712
- __formChanged(form, theme, include, exclude) {
713
- if (form) {
714
- form.include = include;
715
- form.exclude = exclude;
716
- form.setAttribute('theme', theme);
717
- }
718
- }
719
-
720
- /** @private */
721
- __onI18Change(i18n, grid) {
713
+ /**
714
+ * @param {CrudI18n} i18n
715
+ * @param {CrudGrid | Grid} grid
716
+ * @private
717
+ */
718
+ __i18nChanged(i18n, grid) {
722
719
  if (!grid) {
723
720
  return;
724
721
  }
@@ -731,7 +728,7 @@ class Crud extends SlotMixin(ControllerMixin(ElementMixin(ThemableMixin(PolymerE
731
728
  }
732
729
 
733
730
  /** @private */
734
- __onEditorPositionChange(editorPosition) {
731
+ __editorPositionChanged(editorPosition) {
735
732
  if (Crud._isValidEditorPosition(editorPosition)) {
736
733
  return;
737
734
  }
@@ -739,16 +736,11 @@ class Crud extends SlotMixin(ControllerMixin(ElementMixin(ThemableMixin(PolymerE
739
736
  }
740
737
 
741
738
  /** @private */
742
- static _isValidEditorPosition(editorPosition) {
743
- return ['bottom', 'aside'].indexOf(editorPosition) != -1;
744
- }
745
-
746
- /** @private */
747
- __onOpenedChanged(opened, old) {
748
- if (!opened && old) {
739
+ __editorOpenedChanged(opened, oldOpened) {
740
+ if (!opened && oldOpened) {
749
741
  this.__closeEditor();
750
742
  } else {
751
- this.__onFormChange(this._form);
743
+ this.__formChanged(this._form);
752
744
  }
753
745
 
754
746
  if (opened) {
@@ -851,9 +843,9 @@ class Crud extends SlotMixin(ControllerMixin(ElementMixin(ThemableMixin(PolymerE
851
843
 
852
844
  if (slotAttributeValue == 'grid') {
853
845
  // Force to remove listener on previous grid first
854
- this.__onEditOnClickChange(false, this._grid);
846
+ this.__editOnClickChanged(false, this._grid);
855
847
  this._grid = node;
856
- this.__onEditOnClickChange(this.editOnClick, this._grid);
848
+ this.__editOnClickChanged(this.editOnClick, this._grid);
857
849
  } else if (slotAttributeValue == 'form') {
858
850
  this._form = node;
859
851
  } else if (slotAttributeValue.indexOf('button') >= 0) {
@@ -863,155 +855,191 @@ class Crud extends SlotMixin(ControllerMixin(ElementMixin(ThemableMixin(PolymerE
863
855
  this._headerNode = node;
864
856
  }
865
857
  });
858
+
859
+ if (this.editorOpened) {
860
+ this.__ensureChildren();
861
+ }
866
862
  }
867
863
 
868
864
  /** @private */
869
- __onCrudGridEdit(e) {
870
- e.stopPropagation();
871
- this.__confirmBeforeChangingEditedItem(e.detail.item);
865
+ __onGridEdit(event) {
866
+ event.stopPropagation();
867
+ this.__confirmBeforeChangingEditedItem(event.detail.item);
872
868
  }
873
869
 
874
870
  /** @private */
875
- __onFormChanges() {
871
+ __onFormChange() {
876
872
  this.__isDirty = true;
877
873
  }
878
874
 
879
875
  /** @private */
880
- __onGridSizeChanges() {
876
+ __onGridSizeChanged() {
881
877
  this._setSize(this._grid.size);
882
878
  }
883
879
 
884
- /** @private */
885
- __onGridChange(grid, old) {
886
- if (old) {
887
- old.removeEventListener('edit', this.__editListener);
888
- old.removeEventListener('size-changed', this.__gridSizeListener);
880
+ /**
881
+ * @param {CrudGrid | Grid} grid
882
+ * @param {CrudGrid | Grid | undefined} oldGrid
883
+ * @private
884
+ */
885
+ __gridChanged(grid, oldGrid) {
886
+ if (oldGrid) {
887
+ oldGrid.removeEventListener('edit', this.__onGridEdit);
888
+ oldGrid.removeEventListener('size-changed', this.__onGridSizeChanged);
889
889
  }
890
890
  if (this.dataProvider) {
891
- this.__onDataProviderChange(this.dataProvider);
891
+ this.__dataProviderChanged(this.dataProvider);
892
892
  }
893
893
  if (this.items) {
894
- this.__onItemsChange(this.items);
894
+ this.__itemsChanged(this.items);
895
895
  }
896
896
  if (this.editedItem) {
897
- this.__onItemChange(this.editedItem);
897
+ this.__editedItemChanged(this.editedItem);
898
898
  }
899
- grid.addEventListener('edit', this.__editListener);
900
- grid.addEventListener('size-changed', this.__gridSizeListener);
901
- this.__onGridSizeChanges();
899
+ grid.addEventListener('edit', this.__onGridEdit);
900
+ grid.addEventListener('size-changed', this.__onGridSizeChanged);
901
+ this.__onGridSizeChanged();
902
902
  }
903
903
 
904
- /** @private */
905
- __onFormChange(form, old) {
906
- if (old && old.parentElement) {
907
- old.parentElement && old.parentElement.removeChild(old);
908
- old.removeEventListener('change', this.__changeListener);
909
- old.removeEventListener('input', this.__changeListener);
904
+ /**
905
+ * @param {HTMLElement | undefined | null} form
906
+ * @param {HTMLElement | undefined | null} oldForm
907
+ * @private
908
+ */
909
+ __formChanged(form, oldForm) {
910
+ if (oldForm && oldForm.parentElement) {
911
+ oldForm.parentElement.removeChild(oldForm);
912
+ oldForm.removeEventListener('change', this.__onFormChange);
913
+ oldForm.removeEventListener('input', this.__onFormChange);
910
914
  }
911
915
  if (!form) {
912
916
  return;
913
917
  }
914
918
  if (this.items) {
915
- this.__onItemsChange(this.items);
919
+ this.__itemsChanged(this.items);
916
920
  }
917
921
  if (this.editedItem) {
918
- this.__onItemChange(this.editedItem);
922
+ this.__editedItemChanged(this.editedItem);
919
923
  }
920
- form.addEventListener('change', this.__changeListener);
921
- form.addEventListener('input', this.__changeListener);
922
- }
923
-
924
- /** @private */
925
- __onSaveButtonChange(save, old) {
926
- this.__setupSlottedButton(save, old, this.__saveBound);
924
+ form.addEventListener('change', this.__onFormChange);
925
+ form.addEventListener('input', this.__onFormChange);
927
926
  }
928
927
 
929
- /** @private */
930
- __onDeleteButtonChange(deleteButton, old) {
931
- this.__setupSlottedButton(deleteButton, old, this.__deleteBound);
928
+ /**
929
+ * @param {HTMLElement | undefined} form
930
+ * @param {string} theme
931
+ * @param {string | string[] | undefined} include
932
+ * @param {string | RegExp} exclude
933
+ * @private
934
+ */
935
+ __formPropsChanged(form, theme, include, exclude) {
936
+ if (form) {
937
+ form.include = include;
938
+ form.exclude = exclude;
939
+ form.setAttribute('theme', theme);
940
+ }
932
941
  }
933
942
 
934
- /** @private */
935
- __onCancelButtonChange(cancel, old) {
936
- this.__setupSlottedButton(cancel, old, this.__cancelBound);
943
+ /**
944
+ * @param {HTMLElement} saveButton
945
+ * @param {HTMLElement | undefined} oldSaveButton
946
+ * @private
947
+ */
948
+ __saveButtonChanged(saveButton, oldSaveButton) {
949
+ this.__setupSlottedButton(saveButton, oldSaveButton, this.__save);
937
950
  }
938
951
 
939
- /** @private */
940
- __setupSlottedButton(slottedButton, currentButton, clickListener) {
941
- if (currentButton && currentButton.parentElement) {
942
- currentButton.parentElement.removeChild(currentButton);
952
+ /**
953
+ * @param {HTMLElement | undefined} saveButton
954
+ * @param {string} i18nLabel
955
+ * @param {boolean} isDirty
956
+ * @private
957
+ */
958
+ __saveButtonPropsChanged(saveButton, i18nLabel, isDirty) {
959
+ if (saveButton) {
960
+ saveButton.toggleAttribute('disabled', this.__isSaveBtnDisabled(isDirty));
961
+ saveButton.textContent = i18nLabel;
943
962
  }
944
-
945
- slottedButton.addEventListener('click', clickListener);
946
963
  }
947
964
 
948
- /** @private */
949
- __hostPropsChanged() {
950
- this.__propagateHostAttributes();
965
+ /**
966
+ * @param {HTMLElement} deleteButton
967
+ * @param {HTMLElement | undefined} oldDeleteButton
968
+ * @private
969
+ */
970
+ __deleteButtonChanged(deleteButton, oldDeleteButton) {
971
+ this.__setupSlottedButton(deleteButton, oldDeleteButton, this.__delete);
951
972
  }
952
973
 
953
- /** @private */
954
- __propagateHostAttributes() {
955
- this.__propagateHostAttributesToButton(this._saveButton, HOST_PROPS.save);
956
- this.__propagateHostAttributesToButton(this._cancelButton, HOST_PROPS.cancel);
957
- this.__propagateHostAttributesToButton(this._deleteButton, HOST_PROPS.delete);
974
+ /**
975
+ * @param {HTMLElement | undefined} deleteButton
976
+ * @param {string} i18nLabel
977
+ * @param {boolean} isNew
978
+ * @private
979
+ */
980
+ __deleteButtonPropsChanged(deleteButton, i18nLabel, isNew) {
981
+ if (deleteButton) {
982
+ deleteButton.textContent = i18nLabel;
983
+ deleteButton.toggleAttribute('hidden', isNew);
984
+ }
958
985
  }
959
986
 
960
- /** @private */
961
- __propagateHostAttributesToButton(button, props) {
962
- // Ensure the slotted button element is present in the DOM.
963
- // This is needed because the observer runs before `ready`.
964
- if (button) {
965
- props.forEach(({ attr, prop, parseProp }) => {
966
- if (prop.indexOf('i18n') >= 0) {
967
- button.textContent = this.i18n[prop.split('.')[1]];
968
- } else {
969
- if (typeof parseProp === 'string') {
970
- this._setOrToggleAttribute(attr, this[parseProp](this[prop]), button);
971
- return;
972
- }
987
+ /**
988
+ * @param {HTMLElement} cancelButton
989
+ * @param {HTMLElement | undefined} oldCancelButton
990
+ * @private
991
+ */
992
+ __cancelButtonChanged(cancelButton, oldCancelButton) {
993
+ this.__setupSlottedButton(cancelButton, oldCancelButton, this.__cancel);
994
+ }
973
995
 
974
- this._setOrToggleAttribute(attr, parseProp(this[prop]), button);
975
- }
976
- });
996
+ /**
997
+ * @param {HTMLElement | undefined} saveButton
998
+ * @param {string} i18nLabel
999
+ * @private
1000
+ */
1001
+ __cancelButtonPropsChanged(cancelButton, i18nLabel) {
1002
+ if (cancelButton) {
1003
+ cancelButton.textContent = i18nLabel;
977
1004
  }
978
1005
  }
979
1006
 
980
- /** @private */
981
- _setOrToggleAttribute(name, value, node) {
982
- if (!name || !node) {
983
- return;
1007
+ /**
1008
+ * @param {HTMLElement} newButton
1009
+ * @param {HTMLElement | undefined | null} oldButton
1010
+ * @param {Function} clickListener
1011
+ * @private
1012
+ */
1013
+ __setupSlottedButton(newButton, oldButton, clickListener) {
1014
+ if (oldButton && oldButton.parentElement) {
1015
+ oldButton.parentElement.removeChild(oldButton);
984
1016
  }
985
1017
 
986
- if (value) {
987
- node.setAttribute(name, typeof value === 'boolean' ? '' : value);
988
- } else {
989
- node.removeAttribute(name);
990
- }
1018
+ newButton.addEventListener('click', clickListener);
991
1019
  }
992
1020
 
993
1021
  /** @private */
994
- __onDataProviderChange(dataProvider) {
1022
+ __dataProviderChanged(dataProvider) {
995
1023
  if (this._grid) {
996
1024
  this._grid.dataProvider = this.__createDataProviderProxy(dataProvider);
997
1025
  }
998
1026
  }
999
1027
 
1000
1028
  /** @private */
1001
- __onEditOnClickChange(rowToEditChange, _grid) {
1029
+ __editOnClickChanged(editOnClick, _grid) {
1002
1030
  if (!_grid) {
1003
1031
  return;
1004
1032
  }
1005
1033
 
1006
- if (rowToEditChange) {
1007
- _grid.addEventListener('active-item-changed', this.__boundEditOnClickListener);
1034
+ if (editOnClick) {
1035
+ _grid.addEventListener('active-item-changed', this.__onGridActiveItemChanged);
1008
1036
  } else {
1009
- _grid.removeEventListener('active-item-changed', this.__boundEditOnClickListener);
1037
+ _grid.removeEventListener('active-item-changed', this.__onGridActiveItemChanged);
1010
1038
  }
1011
1039
  }
1012
1040
 
1013
1041
  /** @private */
1014
- __editOnClickListener(event) {
1042
+ __onGridActiveItemChanged(event) {
1015
1043
  const item = event.detail.value;
1016
1044
  if (this.editorOpened && this.__isDirty) {
1017
1045
  this.__confirmBeforeChangingEditedItem(item);
@@ -1075,7 +1103,7 @@ class Crud extends SlotMixin(ControllerMixin(ElementMixin(ThemableMixin(PolymerE
1075
1103
  }
1076
1104
 
1077
1105
  /** @private */
1078
- __onItemsChange(items) {
1106
+ __itemsChanged(items) {
1079
1107
  if (this.items && this.items[0]) {
1080
1108
  this.__model = items[0];
1081
1109
  }
@@ -1086,7 +1114,7 @@ class Crud extends SlotMixin(ControllerMixin(ElementMixin(ThemableMixin(PolymerE
1086
1114
  }
1087
1115
 
1088
1116
  /** @private */
1089
- __onItemChange(item) {
1117
+ __editedItemChanged(item) {
1090
1118
  if (!this._form) {
1091
1119
  return;
1092
1120
  }