UNPKG

tns-core-modules

Version:

Telerik NativeScript Core Modules

171 lines (170 loc) • 6.42 kB
var observable = require("data/observable"); var view = require("ui/core/view"); var proxy = require("ui/core/proxy"); var dependencyObservable = require("ui/core/dependency-observable"); var color = require("color"); var builder; function ensureBuilder() { if (!builder) { builder = require("ui/builder"); } } var label; function ensureLabel() { if (!label) { label = require("ui/label"); } } var observableArray; function ensureObservableArray() { if (!observableArray) { observableArray = require("data/observable-array"); } } var weakEvents; function ensureWeakEvents() { if (!weakEvents) { weakEvents = require("ui/core/weak-event-listener"); } } var ITEMS = "items"; var ITEMTEMPLATE = "itemTemplate"; var ISSCROLLING = "isScrolling"; var LISTVIEW = "ListView"; var SEPARATORCOLOR = "separatorColor"; var ROWHEIGHT = "rowHeight"; var knownTemplates; (function (knownTemplates) { knownTemplates.itemTemplate = "itemTemplate"; })(knownTemplates = exports.knownTemplates || (exports.knownTemplates = {})); function onItemsPropertyChanged(data) { var listView = data.object; listView._onItemsPropertyChanged(data); } function onItemTemplatePropertyChanged(data) { var listView = data.object; listView.refresh(); } function onRowHeightPropertyChanged(data) { var listView = data.object; listView._onRowHeightPropertyChanged(data); } var ListView = (function (_super) { __extends(ListView, _super); function ListView() { _super.apply(this, arguments); } Object.defineProperty(ListView.prototype, "items", { get: function () { return this._getValue(ListView.itemsProperty); }, set: function (value) { this._setValue(ListView.itemsProperty, value); }, enumerable: true, configurable: true }); Object.defineProperty(ListView.prototype, "itemTemplate", { get: function () { return this._getValue(ListView.itemTemplateProperty); }, set: function (value) { this._setValue(ListView.itemTemplateProperty, value); }, enumerable: true, configurable: true }); Object.defineProperty(ListView.prototype, "isScrolling", { get: function () { return this._getValue(ListView.isScrollingProperty); }, set: function (value) { this._setValue(ListView.isScrollingProperty, value); }, enumerable: true, configurable: true }); Object.defineProperty(ListView.prototype, "separatorColor", { get: function () { return this._getValue(ListView.separatorColorProperty); }, set: function (value) { this._setValue(ListView.separatorColorProperty, value instanceof color.Color ? value : new color.Color(value)); }, enumerable: true, configurable: true }); Object.defineProperty(ListView.prototype, "rowHeight", { get: function () { return this._getValue(ListView.rowHeightProperty); }, set: function (value) { this._setValue(ListView.rowHeightProperty, value); }, enumerable: true, configurable: true }); ListView.prototype.refresh = function () { }; ListView.prototype.scrollToIndex = function (index) { }; ListView.prototype._getItemTemplateContent = function (index) { ensureBuilder(); var v; if (this.itemTemplate && this.items) { v = builder.parse(this.itemTemplate, this); } return v; }; ListView.prototype._prepareItem = function (item, index) { if (item) { var dataItem = this._getDataItem(index); if (!(dataItem instanceof observable.Observable)) { item.bindingContext = null; } item.bindingContext = dataItem; item._inheritProperties(this); } }; ListView.prototype._getDataItem = function (index) { return this.items.getItem ? this.items.getItem(index) : this.items[index]; }; ListView.prototype._getDefaultItemContent = function (index) { ensureLabel(); var lbl = new label.Label(); lbl.bind({ targetProperty: "text", sourceProperty: "$value" }); return lbl; }; ListView.prototype._onItemsPropertyChanged = function (data) { ensureObservableArray(); ensureWeakEvents(); if (data.oldValue instanceof observable.Observable) { weakEvents.removeWeakEventListener(data.oldValue, observableArray.ObservableArray.changeEvent, this._onItemsChanged, this); } if (data.newValue instanceof observable.Observable) { weakEvents.addWeakEventListener(data.newValue, observableArray.ObservableArray.changeEvent, this._onItemsChanged, this); } this.refresh(); }; ListView.prototype._onItemsChanged = function (args) { this.refresh(); }; ListView.prototype._onRowHeightPropertyChanged = function (data) { this.refresh(); }; ListView.prototype._propagateInheritableProperties = function (view) { }; ListView.itemLoadingEvent = "itemLoading"; ListView.itemTapEvent = "itemTap"; ListView.loadMoreItemsEvent = "loadMoreItems"; ListView.separatorColorProperty = new dependencyObservable.Property(SEPARATORCOLOR, LISTVIEW, new proxy.PropertyMetadata(undefined)); ListView.itemsProperty = new dependencyObservable.Property(ITEMS, LISTVIEW, new proxy.PropertyMetadata(undefined, dependencyObservable.PropertyMetadataSettings.AffectsLayout, onItemsPropertyChanged)); ListView.itemTemplateProperty = new dependencyObservable.Property(ITEMTEMPLATE, LISTVIEW, new proxy.PropertyMetadata(undefined, dependencyObservable.PropertyMetadataSettings.AffectsLayout, onItemTemplatePropertyChanged)); ListView.isScrollingProperty = new dependencyObservable.Property(ISSCROLLING, LISTVIEW, new proxy.PropertyMetadata(false, dependencyObservable.PropertyMetadataSettings.None)); ListView.rowHeightProperty = new dependencyObservable.Property(ROWHEIGHT, LISTVIEW, new proxy.PropertyMetadata(-1, dependencyObservable.PropertyMetadataSettings.AffectsLayout, onRowHeightPropertyChanged)); return ListView; }(view.View)); exports.ListView = ListView;