StickyCells
Feature
A feature which pins cell content to the top of the grid while the row scrolls off the top but is still visible. Very similar to native position: sticky, which because of Grid's multiple-region setup unfortunately cannot be used to achieve the same effect.
When a row is partially scrolled off the top of the viewport, the content of each sticky cell is translated downward to remain visible. When the remaining visible row height is less than the content height, the content scrolls out naturally.
const grid = new Grid({ appendTo : targetElement, height : 300, rowHeight : 200, features : { stickyCells : true }, data : DataGenerator.generateData(10), columns : [ { field : 'name', text : 'Name', flex : 1 }, { field : 'city', text : 'City', flex : 1 }, { field : 'food', text : 'Favorite food', flex : 1 } ] }); All columns have sticky content by default when this feature is enabled. To opt out a specific column, set stickyContent to false.
For example:
new Grid({
features : {
stickyCells : true
},
columns : [
{ field : 'name', text : 'Name' },
{ field : 'age', text : 'Age', stickyContent : false } // Opt out of stickiness
]
});
Note that if you have custom CSS targeting cell content, you may need to adjust it to account for the additional wrapper element added by this feature when stickyContent is true. The wrapper has the class .b-sticky-cell-content. The DOM structure of a sticky cell looks like this:
<!-- Without StickyCells or with stickyContent: false -->
<div data-column-id="name">
Alice
</div>
<!-- With StickyCells and stickyContent: true -->
<div data-column-id="name">
<div>
Alice
</div>
</div>
This feature is disabled by default.
See also
- MergeCells - Merge consecutive equal-value cells
- Column - Base column class
Configs
Configs are options you supply in a configuration object when creating an instance of this class-
Deprecated:
7.3.0 Use the per-column stickyContent config instead
A CSS selector identifying child elements within cells to pin. Applied to all columns that do not specify their own stickyContent value.
-
Internal listeners, that cannot be removed by the user.
-
The widget which this plugin is to attach to.
Has a corresponding runtime client property.
-
Set to
falseto disable localization of this object.
Properties
Properties are getters/setters or publicly accessible variables on this class-
Identifies an object as an instance of Events class, or subclass thereof.
-
Identifies an object as an instance of Localizable class, or subclass thereof.
-
Identifies an object as an instance of StickyCells class, or subclass thereof.
-
A class property getter for the default values of internal properties for this class.
-
An empty array that can be used as a default value.
-
An empty object that can be used as a default value.
-
Identifies an object as an instance of InstancePlugin class, or subclass thereof.
-
Identifies an object as an instance of StickyCells class, or subclass thereof.
-
Returns a copy of the full configuration which was used to configure this object.
-
This property is set to
truebefore theconstructorreturns. -
This property is set to
trueon entry to the destroy method. It remains on the objects after returning fromdestroy(). If isDestroyed istrue, this property will also betrue, so there is no need to test for both (for example,comp.isDestroying || comp.isDestroyed). -
The Widget which was passed into the constructor, which is the Widget we are providing extra services for.
Has a corresponding client config.
-
Get the global LocaleHelper
-
Get the global LocaleManager
Functions
Functions are methods available for calling on the class-
This optional class method is called when a class is mixed in using the mixin() method.
-
Registers this class type with its Factory
-
cancelScrollAnimations( )private
Cancels all active scroll-driven animations.
Animation.cancel()removes the animation effect, restoring elements to their un-animated state. -
clearAllTranslations( )private
Clears all sticky translations from all visible rows.
-
onTotalHeightChange( )private
Handles virtual scroll height changes that may shift row positions without changing the top row. Recreates animations so their scroll ranges stay in sync.
-
setupListeners( )private
Attaches scroll listener. Called from both construct and doDisable(false).
-
Internal function used to hook destroy() calls when using thisObj
-
Internal function used restore hooked destroy() calls when using thisObj
-
Auto detaches listeners registered from start, if set as detachable
-
Internal function used to run a callback function after an event is triggered
-
Removes all listeners registered to this object by the application.
-
This will merge a feature's (subclass of InstancePlugin) keyMap with it's client's keyMap.