API Docs for: 3.0.1.91d25ad1
Show:

File: addon/components/models-table/row-grouping.js

import {className, layout as templateLayout, tagName} from '@ember-decorators/component';
import Component from '@ember/component';
import {computed, get} from '@ember/object';
import {alias, intersect} from '@ember/object/computed';
import layout from '../../templates/components/models-table/row-grouping';

/**
 * Component-row with grouped property value. Used to toggle rows group with needed property value equal to the grouping value
 *
 * You must not override this component and should use [groupingRowComponent](Components.ModelsTable.html#property_groupingRowComponent)
 *
 * By default [row-group-toggle](Components.ModelsTableRowGroupToggle.html) is used
 *
 * @namespace Components
 * @class ModelsTableRowGrouping
 * @extends Ember.Component
 */
export default
@templateLayout(layout)
@tagName('tr')
class RowGroupingComponent extends Component {

  /**
   * @property tagName
   * @type string
   * @default 'tr'
   */

  /**
   * @property themeGroupingRowClass
   * @type string
   * @protected
   */
  @className
  @alias('themeInstance.groupingRow') themeGroupingRowClass;

  /**
   * @property groupedValue
   * @type *
   * @default null
   */
  groupedValue = null;

  /**
   * Determines if rows group is collapsed (bound from the parent component template)
   *
   * @property groupIsCollapsed
   * @type boolean
   * @default null
   */
  groupIsCollapsed = null;

  /**
   * Rows count in the rows group
   *
   * @property groupedLength
   * @type number
   * @default null
   */
  groupedLength = null;

  /**
   * @property cellColspan
   * @type number
   * @default null
   * @protected
   */
  @computed('displayGroupedValueAs', 'visibleProcessedColumns.length', 'additionalColspan')
  get cellColspan() {
    return get(this, 'visibleProcessedColumns.length') + (this.displayGroupedValueAs === 'row' ? 0 : 1) + Number(this.additionalColspan);
  }

  /**
   * Extra colspan used in the internal `td`. Useful in cases with block scope usage when some extra columns are in the table (not only `columns`)
   *
   * @property additionalColspan
   * @type number
   * @default 0
   */
  additionalColspan = 0;

  /**
   * @property groupedItems
   * @type object[]
   * @default null
   */
  groupedItems = null;

  /**
   * @property visibleGroupedItems
   * @type object[]
   * @default null
   */
  visibleGroupedItems = null;

  /**
   * @property selectedGroupedItems
   * @type object[]
   * @default []
   * @protected
   */
  @intersect('selectedItems', 'groupedItems')
  selectedGroupedItems;

  /**
   * @property expandedGroupedItems
   * @type object[]
   * @default []
   * @protected
   */
  @intersect('expandedItems', 'groupedItems')
  expandedGroupedItems;

  /**
   * Bound from [ModelsTable.currentGroupingPropertyName](Components.ModelsTable.html#property_currentGroupingPropertyName)
   *
   * @property currentGroupingPropertyName
   * @type string
   * @default null
   */
  currentGroupingPropertyName = null;

  /**
   * Bound from [ModelsTable.visibleProcessedColumns](Components.ModelsTable.html#property_visibleProcessedColumns)
   *
   * @property visibleProcessedColumns
   * @type Utils.ModelsTableColumn[]
   * @default null
   */
  visibleProcessedColumns = null;

  /**
   * Closure action [ModelsTable.toggleGroupedRows](Components.ModelsTable.html#event_toggleGroupedRows)
   *
   * @event toggleGroupedRows
   */
  toggleGroupedRows = null;

  /**
   * Bound from [ModelsTable.displayGroupedValueAs](Components.ModelsTable.html#property_displayGroupedValueAs)
   *
   * @property displayGroupedValueAs
   * @type string
   * @default null
   */
  displayGroupedValueAs = null;

  /**
   * Bound from [ModelsTable.groupingRowComponent](Components.ModelsTable.html#property_groupingRowComponent)
   *
   * @property groupingRowComponent
   * @type string
   * @default null
   */
  groupingRowComponent = null;

  /**
   * Bound from [ModelsTable.themeInstance](Components.ModelsTable.html#property_themeInstance)
   *
   * @property themeInstance
   * @type object
   * @default null
   */
  themeInstance = null;

  /**
   * Closure action [ModelsTable.toggleGroupedRowsSelection](Components.ModelsTable.html#event_toggleGroupedRowsSelection)
   *
   * @event toggleGroupedRowsSelection
   */
  toggleGroupedRowsSelection = null;

  /**
   * Closure action [ModelsTable.toggleGroupedRowsExpands](Components.ModelsTable.html#event_toggleGroupedRowsExpands)
   *
   * @event toggleGroupedRowsExpands
   */
  toggleGroupedRowsExpands = null;
}