@wavemaker/app-ng-runtime 11.5.4-rc.5521 → 11.5.4-rc.5522

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wavemaker/app-ng-runtime",
3
- "version": "11.5.4-rc.5521",
3
+ "version": "11.5.4-rc.5522",
4
4
  "description": "All modules required for a wavemaker application.",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -965,6 +965,7 @@ $.widget('wm.datatable', {
965
965
  gridElement: null,
966
966
  gridHeader: null,
967
967
  gridBody: null,
968
+ columnClickInfo: {},
968
969
  gridFooter: null,
969
970
  gridSearch: null,
970
971
  tableId: null,
@@ -1663,6 +1664,9 @@ $.widget('wm.datatable', {
1663
1664
  // triggered on capture phase of click listener.
1664
1665
  // sets the selected rowdata on click.
1665
1666
  rowClickHandlerOnCapture: function (e, $row, options) {
1667
+ if(this.getColInfo(e) && (e.target.type != 'checkbox')) {
1668
+ return;
1669
+ }
1666
1670
  $row = $row || $(e.target).closest('tr.app-datagrid-row');
1667
1671
  var gridRow = this.gridElement.find($row);
1668
1672
  // WMS-21139 trigger selectedItems change when the captured click is on the current table but not on child table
@@ -1676,6 +1680,9 @@ $.widget('wm.datatable', {
1676
1680
 
1677
1681
  /* Handles row selection. */
1678
1682
  rowSelectionHandler: function (e, $row, options) {
1683
+ if(this.getColInfo(e) && (e.target.type != 'checkbox')) {
1684
+ return;
1685
+ }
1679
1686
  options = options || {};
1680
1687
  var rowId,
1681
1688
  rowData,
@@ -2685,25 +2692,39 @@ $.widget('wm.datatable', {
2685
2692
  }
2686
2693
  return false;
2687
2694
  },
2695
+ getColInfo: function(event) {
2696
+ var row = $(event.target).closest('tr.app-datagrid-row');
2697
+ var rowId = row.attr('data-row-id');
2698
+ var column = $(event.target).closest('td.app-datagrid-cell');
2699
+ var colId = column.attr('data-col-id');
2700
+ if(this.columnClickInfo && this.columnClickInfo[rowId] && this.columnClickInfo[rowId][colId]) {
2701
+ return this.columnClickInfo[rowId][colId];
2702
+ }
2703
+ return false;
2704
+ },
2688
2705
  /* Attaches all event handlers for the table. */
2689
2706
  attachEventHandlers: function ($htm) {
2690
2707
  var $header = this.gridHeaderElement,
2691
2708
  self = this;
2692
- var isMultiSelect = this.options.multiselect;
2693
2709
 
2694
2710
  if (this.options.enableRowSelection) {
2695
- $htm[0].removeEventListener('click', this.rowClickHandlerOnCapture.bind(this), true);
2711
+ $htm[0].removeEventListener('click', this.rowClickHandlerOnCapture.bind(this));
2696
2712
  $htm.off();
2713
+ $htm[0].addEventListener('click', this.rowClickHandlerOnCapture.bind(this));
2697
2714
  // add js click handler for capture phase in order to first listen on grid and
2698
2715
  // assign selectedItems so that any child actions can have access to the selectedItems.
2699
- $htm[0].addEventListener('click', this.rowClickHandlerOnCapture.bind(this), true);
2700
2716
  $htm.on('click', this.rowSelectionHandler.bind(this));
2701
2717
  $htm.on("click", "td *", function(event) {
2718
+
2702
2719
  // Prevent propagation to parent elements
2703
- if(event.target.type != 'checkbox' && isMultiSelect){
2704
- event.stopPropagation();
2720
+ if(event.target.type != 'checkbox'){
2721
+ var row = $(event.target).closest('tr.app-datagrid-row');
2722
+ var rowId = row.attr('data-row-id');
2723
+ var column = $(event.target).closest('td.app-datagrid-cell');
2724
+ var colId = column.attr('data-col-id');
2725
+ self.columnClickInfo[rowId] = {};
2726
+ self.columnClickInfo[rowId][colId] = true;
2705
2727
  }
2706
-
2707
2728
  });
2708
2729
  $htm.on('dblclick', this.rowDblClickHandler.bind(this));
2709
2730
  $htm.on('keydown', this.onKeyDown.bind(this));