blob: 0c2ae97b79c937d2b057f8a3ba6d60293d82531d [file] [log] [blame]
////////////////////////////////////////////////////////////////////////////////
//
// Licensed to the Apache Software Foundation (ASF) under one or more
// contributor license agreements. See the NOTICE file distributed with
// this work for additional information regarding copyright ownership.
// The ASF licenses this file to You under the Apache License, Version 2.0
// (the "License"); you may not use this file except in compliance with
// the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
////////////////////////////////////////////////////////////////////////////////
package org.apache.royale.mdl.itemRenderers
{
import org.apache.royale.html.supportClasses.MXMLItemRenderer;
COMPILE::JS
{
import org.apache.royale.core.WrappedHTMLElement;
import org.apache.royale.html.util.addElementToWrapper;
}
/**
* The MenuItemRenderer class creates a MDL menu item
*
* @langversion 3.0
* @playerversion Flash 10.2
* @playerversion AIR 2.6
* @productversion Royale 0.8
*/
public class MenuItemRenderer extends MXMLItemRenderer
{
/**
* Constructor.
*
* @langversion 3.0
* @playerversion Flash 10.2
* @playerversion AIR 2.6
* @productversion Royale 0.8
*/
public function MenuItemRenderer()
{
super();
typeNames = "mdl-menu__item";
//className = ""; //set to empty string avoid 'undefined' output when no class selector is assigned by user;
}
private var _text:String = "";
/**
* The text of the menu item
*
* @langversion 3.0
* @playerversion Flash 10.2
* @playerversion AIR 2.6
* @productversion Royale 0.8
*/
public function get text():String
{
COMPILE::SWF
{
return _text;
}
COMPILE::JS
{
return textNode.nodeValue;
}
}
public function set text(value:String):void
{
COMPILE::SWF
{
_text = value;
}
COMPILE::JS
{
textNode.nodeValue = value;
}
}
COMPILE::JS
private var textNode:Text;
/**
* Sets the data value and uses the String version of the data for display.
*
* @param Object data The object being displayed by the itemRenderer instance.
*
* @langversion 3.0
* @playerversion Flash 10.2
* @playerversion AIR 2.6
* @productversion Royale 0.8
*/
override public function set data(value:Object):void
{
super.data = value;
var text:String;
if (labelField || dataField)
{
text = String(value[labelField]);
}
else
{
text = String(value);
}
COMPILE::JS
{
if(textNode != null)
{
textNode.nodeValue = text;
}
}
}
/**
* @royaleignorecoercion org.apache.royale.core.WrappedHTMLElement
* @royaleignorecoercion Text
*/
COMPILE::JS
override protected function createElement():WrappedHTMLElement
{
addElementToWrapper(this,'li');
textNode = document.createTextNode('') as Text;
element.appendChild(textNode);
return element;
}
private var _divider:Boolean;
/**
* A boolean flag to activate "mdl-menu__item--full-bleed-divider" effect selector.
* Modifies an item to have a full bleed divider between it and the next list item.
*
* @langversion 3.0
* @playerversion Flash 10.2
* @playerversion AIR 2.6
* @productversion Royale 0.8
*/
public function get divider():Boolean
{
return _divider;
}
public function set divider(value:Boolean):void
{
_divider = value;
COMPILE::JS
{
element.classList.toggle("mdl-menu__item--full-bleed-divider", _divider);
//typeNames = element.className;
}
}
override public function updateRenderer():void
{
// don't change background-color, let mdl library take care of that.
}
protected var _ripple:Boolean = false;
/**
* A boolean flag to activate "mdl-js-ripple-effect" effect selector.
*
* @langversion 3.0
* @playerversion Flash 10.2
* @playerversion AIR 2.6
* @productversion Royale 0.8
*/
public function get ripple():Boolean
{
return _ripple;
}
public function set ripple(value:Boolean):void
{
_ripple = value;
COMPILE::JS
{
element.classList.toggle("mdl-js-ripple-effect", _ripple);
//typeNames = element.className;
}
}
}
}