UNPKG

ovuse

Version:

WPF-inspired Web UI framework

107 lines (106 loc) 4.15 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const _1 = require("."); const __1 = require(".."); const type_id_1 = require("../type-id"); class DataTemplate extends __1.DependencyObject { constructor() { super(...arguments); this._innerXaml = null; this._xamlLoader = null; } setInnerXaml(value) { this._innerXaml = value; } setXamlLoader(loader) { this._xamlLoader = loader; } createElement() { var reader = this._xamlLoader; if (reader == null) reader = new _1.XamlReader(); if (this._innerXaml == null) return null; return reader.Parse(this._innerXaml); } static getTemplateForItem(templates, item, name = null) { if (templates == null || templates.length == 0) return null; var foundTemplate = templates.firstOrDefault(template => { if (name != null && template.name != null && template.name.toLowerCase() == name.toLowerCase()) return true; if (template.targetType == null) return false; var itemToTemplate = item; if (template.targetMember != null && template.targetMember != "") itemToTemplate = itemToTemplate[template.targetMember]; var typeName = typeof itemToTemplate; // if (hasProperty(itemToTemplate, "typeName")) // typeName = itemToTemplate["typeName"]; if (type_id_1.hasTypeId(itemToTemplate)) typeName = __1.getTypeId(itemToTemplate); else { if (itemToTemplate instanceof Date) typeName = "date"; } if (typeName != null && template.targetType != null && template.targetType.toLowerCase() == typeName.toLowerCase()) return true; return false; }, null); if (foundTemplate != null) return foundTemplate; return templates.firstOrDefault(dt => dt.targetType == null, null); } static getTemplateForMedia(templates) { if (templates == null || templates.length == 0) return null; var foundTemplate = templates.firstOrDefault(template => { if (template.media == null || template.media.trim().length == 0) { return true; } return window.matchMedia(template.media).matches; }, null); if (foundTemplate != null) return foundTemplate; return templates.firstOrDefault(dt => dt.targetType == null, null); } get targetType() { return this.getValue(DataTemplate.targetTypeProperty); } set targetType(value) { this.setValue(DataTemplate.targetTypeProperty, value); } get targetMember() { return this.getValue(DataTemplate.targetMemberProperty); } set targetMember(value) { this.setValue(DataTemplate.targetMemberProperty, value); } get media() { return this.getValue(DataTemplate.mediaProperty); } set media(value) { this.setValue(DataTemplate.mediaProperty, value); } get name() { return this.getValue(DataTemplate.nameProperty); } set name(value) { this.setValue(DataTemplate.nameProperty, value); } } ///returns the type datatemplate is suited for ///if null it means it's a generic template usable for any object of any type DataTemplate.targetTypeProperty = __1.DependencyObject.registerProperty(DataTemplate, "TargetType", null); DataTemplate.targetMemberProperty = __1.DependencyObject.registerProperty(DataTemplate, "TargetMember", null); DataTemplate.mediaProperty = __1.DependencyObject.registerProperty(DataTemplate, "Media", null); DataTemplate.nameProperty = __1.DependencyObject.registerProperty(DataTemplate, "Name", null); exports.DataTemplate = DataTemplate;