calendarnavigator-debug.js revision 9724a6e829470b07523eddcd9df488b799e57a6a
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * Provides a plugin which adds navigation controls to Calendar.
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * @module calendarnavigator
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich CAL_PREV_M = getCN(CALENDARNAV, 'prevmonth'),
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich CAL_NEXT_M = getCN(CALENDARNAV, 'nextmonth'),
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * A plugin class which adds navigation controls to Calendar.
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * @class CalendarNavigator
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * @extends Plugin.Base
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * @namespace Plugin
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich CalendarNavigator.superclass.constructor.apply(this, arguments);
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * The namespace for the plugin. This will be the property on the widget, which will
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * reference the plugin instance, when it's plugged in.
10d8bafc5c24f3a4285cf6060a1935ba5cfc4b85Luke Smith * @property NS
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * @type String
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * @default "navigator"
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * The NAME of the CalendarNavigator class. Used to prefix events generated
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * by the plugin class.
10d8bafc5c24f3a4285cf6060a1935ba5cfc4b85Luke Smith * @property NAME
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * @type String
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * @default "pluginCalendarNavigator"
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen RabinovichCalendarNavigator.NAME = "pluginCalendarNavigator";
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * Static property used to define the default attribute
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * configuration for the plugin.
10d8bafc5c24f3a4285cf6060a1935ba5cfc4b85Luke Smith * @property ATTRS
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * @type Object
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * The number of months to shift by when the control arrows are clicked.
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * @attribute shiftByMonths
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * @type Number
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * @default 1 (months)
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * The CSS classnames for the calendar navigator controls.
10d8bafc5c24f3a4285cf6060a1935ba5cfc4b85Luke Smith * @property CALENDARNAV_STRINGS
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * @type Object
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * The template for the calendar navigator previous month control.
10d8bafc5c24f3a4285cf6060a1935ba5cfc4b85Luke Smith * @property PREV_MONTH_CONTROL_TEMPLATE
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * @type String
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen RabinovichCalendarNavigator.PREV_MONTH_CONTROL_TEMPLATE = '<div class="yui3-u {prev_month_class}" style="width:15px;">' +
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * The template for the calendar navigator next month control.
10d8bafc5c24f3a4285cf6060a1935ba5cfc4b85Luke Smith * @property NEXT_MONTH_CONTROL_TEMPLATE
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * @type String
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen RabinovichCalendarNavigator.NEXT_MONTH_CONTROL_TEMPLATE = '<div class="yui3-u {next_month_class}" style="width:15px;">' +
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen RabinovichY.extend(CalendarNavigator, Y.Plugin.Base, {
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * The initializer lifecycle implementation. Modifies the host widget's
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * render to add navigation controls.
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * @method initializer
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * @param {Object} config The user configuration for the plugin
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich // After the host has rendered its UI, place the navigation cotnrols
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich this.afterHostMethod("renderUI", this._initNavigationControls);
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * The initializer destructor implementation. Responsible for destroying the initialized
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * control mechanisms.
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * @method destructor
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * Private utility method that subtracts months from the host calendar date
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * based on the control click and the shiftByMonths property.
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * @method _subtractMonths
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * @param {Event} ev Click event from the controls
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich host.set("date", ydate.addMonths(oldDate, -1*this.get("shiftByMonths")));
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * Private utility method that adds months to the host calendar date
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * based on the control click and the shiftByMonths property.
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * @method _addMonths
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * @param {Event} ev Click event from the controls
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich host.set("date", ydate.addMonths(oldDate, this.get("shiftByMonths")));
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * Private render assist method that renders the previous month control
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * @method _renderPrevControls
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich var prevControlNode = create(substitute (CalendarNavigator.PREV_MONTH_CONTROL_TEMPLATE,
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich prevControlNode.on("click", this._subtractMonths, this);
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich prevControlNode.on("selectstart", function (ev) {ev.preventDefault();});
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * Private render assist method that renders the next month control
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * @method _renderNextControls
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich var nextControlNode = create(substitute (CalendarNavigator.NEXT_MONTH_CONTROL_TEMPLATE,
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich nextControlNode.on("click", this._addMonths, this);
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich nextControlNode.on("selectstart", function (ev) {ev.preventDefault();});
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * Protected render assist method that initialized and renders the navigation controls.
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich * @method _initNavigationControls
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich var headerCell = host.get(CONTENT_BOX).one("." + CAL_HD);
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich headerCell.prepend(this._renderPrevControls(host));
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen Rabinovich headerCell.append(this._renderNextControls(host));
2f17bc2f9d34cb9377a0c15ea9519471bb83e4ecAllen RabinovichY.namespace("Plugin").CalendarNavigator = CalendarNavigator;
9724a6e829470b07523eddcd9df488b799e57a6aDav Glass}, '@VERSION@' ,{requires:['plugin', 'classnamemanager', 'datatype-date', 'node', 'substitute']});