blob: 59589d8039f2292c40f62efa6936a16c125d9a7f [file] [log] [blame]
// Field menu item
"use strict";
define(['menu/item', 'util'], function (itemClass) {
const loc = KorAP.Locale;
return {
/**
* Create new menu item.
* Pass two parameters: value and type.
* the value may be localized by a name in
* KorAP.Locale with the prefix 'VC_',
* e.g. 'VC_subTitle'.
*/
create : function (params) {
return Object.create(itemClass)
.upgradeTo(this)
._init(params);
},
// Initialize item object
_init : function (params) {
const t = this;
if (params[0] === undefined)
throw new Error("Missing parameters");
t._key = params[0];
t._type = params[1];
const k = t._key;
t._name = loc["VC_" + k] ? loc["VC_" + k] : k;
t._lcField = ' ' + t._name.toLowerCase();
return t;
},
/**
* Override click event by passing all clicks
* to the menu object.
*/
onclick : function (e) {
this.menu().release(
this._key,
this._type
);
e.halt();
},
/**
* Get the name of the item.
* This is a potential localized version
* of the value.
*/
name : function () {
return this._name;
},
/**
* Get the type of the item.
*/
type : function () {
return this._type;
},
/**
* Get the key of the item.
*/
key : function () {
return this._key;
},
/**
* Get the HTML element associated with the item.
*/
element : function () {
const t = this;
// already defined
if (t._element !== undefined)
return t._element;
// Create list item
var li = document.createElement("li");
if (t._type)
li.setAttribute("data-type", t._type);
li.setAttribute("data-key", t._key);
// Connect action
li["onclick"] = t.onclick.bind(t);
li.addT(t._name);
return t._element = li;
}
};
});