UNPKG

toloframework

Version:

Javascript/HTML/CSS compiler for Firefox OS or nodewebkit apps using modules in the nodejs style.

260 lines (220 loc) 6.92 kB
"use strict"; /** @module tfw.view.checkbox */ require('tfw.view.checkbox', function (require, module, exports) { var _ = function () { var D = { "en": {}, "fr": {} }, X = require("$").intl; function _() { return X(D, arguments); } _.all = D; return _; }(); "use strict"; var CODE_BEHIND = { init: init, on: on, onKeyUp: onKeyUp }; var PM = require("tfw.binding.property-manager"); var Touchable = require("tfw.touchable"); function on(action) { PM(this).on("value", action); } function onKeyUp(evt) { if (["enter", "space"].indexOf(evt.code.toLowerCase()) > -1) { this.value = !this.value; } } function init() { new Touchable(this.$); } //=============================== // XJS:View autogenerated code. try { module.exports = function () { //-------------------- // Dependent modules. var $ = require('dom'); var PM = require('tfw.binding.property-manager'); var Tag = require('tfw.view').Tag; var Link = require('tfw.binding.link'); var View = require('tfw.view'); ; var Converters = require('tfw.binding.converters'); //------------------------------------------------------- // Check if needed functions are defined in code behind. View.ensureCodeBehind(CODE_BEHIND, "on", "init", "onKeyUp"); //------------------- // Global functions. function defVal(args, attName, attValue) { return args[attName] === undefined ? attValue : args[attName]; } ; function addClassIfTrue(element, className, value) { if (value) $.addClass(element, className);else $.removeClass(element, className); } ; ; function addClassIfFalse(element, className, value) { if (value) $.removeClass(element, className);else $.addClass(element, className); } ; ; //------------------- // Global variables. var conv_boolean = Converters.get('boolean'); var conv_string = Converters.get('string'); //------------------- // Class definition. var ViewClass = function ViewClass(args) { try { if (typeof args === 'undefined') args = {}; this.$elements = {}; var that = this; var pm = PM(this); //-------------------- // Create attributes. pm.create("value", { cast: conv_boolean }); pm.create("inverted", { cast: conv_boolean }); pm.create("visible", { cast: conv_boolean }); pm.create("wide", { cast: conv_boolean }); pm.create("content", { cast: conv_string }); //------------------ // Create elements. var e_ = new Tag('BUTTON', ["class"]); var e_0 = new Tag('DIV', ["class"]); var e_bar = new Tag('DIV', ["class"]); this.$elements.bar = e_bar; var e_btn = new Tag('DIV', ["class"]); this.$elements.btn = e_btn; $.add(e_0, e_bar, e_btn); var e_3 = new Tag('DIV', ["class"]); $.add(e_, e_0, e_3); //----------------------- // Declare root element. Object.defineProperty(this, '$', { value: e_.$, writable: false, enumerable: false, configurable: false }); //--------- // Events. View.events(e_, { "tap": function tap(v) { that.value = that.value ? false : true; }, "keyup": CODE_BEHIND.onKeyUp.bind(this) }); //------- // Links new Link({ A: { obj: that, name: 'value' }, B: { action: function action(v) { addClassIfTrue(e_, "ok", v); } }, name: "value > undefined" }); new Link({ A: { obj: that, name: 'inverted' }, B: { action: function action(v) { addClassIfTrue(e_, "inverted", v); } }, name: "inverted > undefined" }); new Link({ A: { obj: that, name: 'wide' }, B: { action: function action(v) { addClassIfTrue(e_, "wide", v); } }, name: "wide > undefined" }); new Link({ A: { obj: that, name: 'visible' }, B: { action: function action(v) { addClassIfFalse(e_, "hide", v); } }, name: "visible > undefined" }); new Link({ A: { obj: that, name: 'value' }, B: { action: function action(v) { addClassIfTrue(e_bar, "thm-bgSL", v); addClassIfFalse(e_bar, "thm-bg0", v); } }, name: "value > undefined" }); new Link({ A: { obj: that, name: 'value' }, B: { action: function action(v) { addClassIfTrue(e_btn, "thm-bgS", v); addClassIfFalse(e_btn, "thm-bg0", v); } }, name: "value > undefined" }); //----------------------- // On attribute changed. pm.on('content', function (v) { $.clear(e_3, v); }); //---------------------- // Initialize elements. e_.class = "tfw-view-checkbox"; e_0.class = "pin"; e_bar.class = "bar thm-ele2"; e_btn.class = "btn thm-ele2"; e_3.class = "txt"; //------------------------ // Initialize attributes. this.value = defVal(args, "value", false); this.inverted = defVal(args, "inverted", false); this.visible = defVal(args, "visible", true); this.wide = defVal(args, "wide", true); this.content = defVal(args, "content", "Checkbox"); // Initialization. CODE_BEHIND.init.call(this); $.addClass(this, 'view', 'custom'); } catch (ex) { console.error('mod/tfw.view.checkbox.js', ex); throw Error('Instantiation error in XJS of "mod/tfw.view.checkbox.js":\n' + ex); } }; //------------------ // Static members.. ViewClass.prototype.on = CODE_BEHIND.on; return ViewClass; }(); } catch (ex) { throw Error('Definition error in XJS of "mod/tfw.view.checkbox.js"\n' + ex); } module.exports._ = _; });