/** * @class Ext.slider.Tip * @extends Ext.tip.Tip * Simple plugin for using an Ext.tip.Tip with a slider to show the slider value. In general this * class is not created directly, instead pass the {@link Ext.slider.Multi#useTips} and * {@link Ext.slider.Multi#tipText} configuration options to the slider directly. * {@img Ext.slider.Tip/Ext.slider.Tip1.png Ext.slider.Tip component} * Example usage: <pre> Ext.create('Ext.slider.Single', { width: 214, minValue: 0, maxValue: 100, useTips: true, renderTo: Ext.getBody() }); </pre> * Optionally provide your own tip text by passing tipText: <pre> new Ext.slider.Single({ width: 214, minValue: 0, maxValue: 100, useTips: true, tipText: function(thumb){ return Ext.String.format('<b>{0}% complete</b>', thumb.value); } }); </pre> * @xtype slidertip */ Ext.define('Ext.slider.Tip', { extend: 'Ext.tip.Tip', minWidth: 10, alias: 'widget.slidertip', offsets : [0, -10], isSliderTip: true, init: function(slider) { var me = this; slider.on({ scope : me, dragstart: me.onSlide, drag : me.onSlide, dragend : me.hide, destroy : me.destroy }); }, /** * @private * Called whenever a dragstart or drag event is received on the associated Thumb. * Aligns the Tip with the Thumb's new position. * @param {Ext.slider.MultiSlider} slider The slider * @param {Ext.EventObject} e The Event object * @param {Ext.slider.Thumb} thumb The thumb that the Tip is attached to */ onSlide : function(slider, e, thumb) { var me = this; me.show(); me.update(me.getText(thumb)); me.doComponentLayout(); me.el.alignTo(thumb.el, 'b-t?', me.offsets); }, /** * Used to create the text that appears in the Tip's body. By default this just returns * the value of the Slider Thumb that the Tip is attached to. Override to customize. * @param {Ext.slider.Thumb} thumb The Thumb that the Tip is attached to * @return {String} The text to display in the tip */ getText : function(thumb) { return String(thumb.value); } });