UNPKG

nativescript-sectioned-list-view

Version:
220 lines (219 loc) 9.59 kB
"use strict"; var __extends = (this && this.__extends) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; 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 ITEMS = "items"; var ITEMTEMPLATE = "itemTemplate"; var HEADER_TEMPLATE = "headerTemplate"; var ISSCROLLING = "isScrolling"; var LISTVIEW = "SectionedListView"; var SEPARATORCOLOR = "separatorColor"; var ROWHEIGHT = "rowHeight"; var HEADER_HEIGHT = "headerHeight"; var knownTemplates; (function (knownTemplates) { knownTemplates.itemTemplate = "itemTemplate"; knownTemplates.headerTemplate = "headerTemplate"; })(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 SectionedListView = (function (_super) { __extends(SectionedListView, _super); function SectionedListView() { _super.apply(this, arguments); } Object.defineProperty(SectionedListView.prototype, "items", { get: function () { return this._getValue(SectionedListView.itemsProperty); }, set: function (value) { this._setValue(SectionedListView.itemsProperty, value); }, enumerable: true, configurable: true }); Object.defineProperty(SectionedListView.prototype, "itemTemplate", { get: function () { return this._getValue(SectionedListView.itemTemplateProperty); }, set: function (value) { this._setValue(SectionedListView.itemTemplateProperty, value); }, enumerable: true, configurable: true }); Object.defineProperty(SectionedListView.prototype, "headerTemplate", { get: function () { return this._getValue(SectionedListView.headerTemplateProperty); }, set: function (value) { this._setValue(SectionedListView.headerTemplateProperty, value); }, enumerable: true, configurable: true }); Object.defineProperty(SectionedListView.prototype, "isScrolling", { get: function () { return this._getValue(SectionedListView.isScrollingProperty); }, set: function (value) { this._setValue(SectionedListView.isScrollingProperty, value); }, enumerable: true, configurable: true }); Object.defineProperty(SectionedListView.prototype, "separatorColor", { get: function () { return this._getValue(SectionedListView.separatorColorProperty); }, set: function (value) { this._setValue(SectionedListView.separatorColorProperty, value instanceof color.Color ? value : new color.Color(value)); }, enumerable: true, configurable: true }); Object.defineProperty(SectionedListView.prototype, "rowHeight", { get: function () { return this._getValue(SectionedListView.rowHeightProperty); }, set: function (value) { this._setValue(SectionedListView.rowHeightProperty, value); }, enumerable: true, configurable: true }); Object.defineProperty(SectionedListView.prototype, "headerHeight", { get: function () { return this._getValue(SectionedListView.headerHeightProperty); }, set: function (value) { this._setValue(SectionedListView.headerHeightProperty, value); }, enumerable: true, configurable: true }); SectionedListView.prototype.refresh = function () { }; SectionedListView.prototype.scrollToIndex = function (index) { }; SectionedListView.prototype._getItemTemplateContent = function (row, section) { if (section === void 0) { section = 0; } var v; if (this.itemTemplate && this.items) { var builder = require("ui/builder"); v = builder.parse(this.itemTemplate, this); } return v; }; SectionedListView.prototype._getHeaderTemplateContent = function (section) { if (section === void 0) { section = 0; } var v; if (this.headerTemplate) { var builder = require("ui/builder"); v = builder.parse(this.headerTemplate, this); } return v; }; SectionedListView.prototype._prepareItem = function (item, row, section) { if (item) { var dataItem = this._getDataItem(row, section); if (!(dataItem instanceof observable.Observable)) { item.bindingContext = null; } item.bindingContext = dataItem; item._inheritProperties(this); } }; SectionedListView.prototype._prepareHeader = function (item, section) { if (item) { var dataItem = this._getHeaderItem(section); if (!(dataItem instanceof observable.Observable)) { item.bindingContext = null; } item.bindingContext = dataItem; item._inheritProperties(this); } }; SectionedListView.prototype._getDataItem = function (row, section) { if (section === void 0) { section = 0; } if (this.items.getNoOfSections) { return this.items.getItem(row, section); } return this.items.getItem ? this.items.getItem(row) : this.items[row]; }; SectionedListView.prototype._getHeaderItem = function (section) { if (this.items && this.items.getTitle) { return this.items.getTitle(section); } return ""; }; SectionedListView.prototype._getDefaultItemContent = function (row, section) { if (section === void 0) { section = 0; } var label = require("ui/label"); var lbl = new label.Label(); lbl.bind({ targetProperty: "text", sourceProperty: "$value" }); return lbl; }; SectionedListView.prototype._getDefaultHeaderContent = function (row, section) { if (section === void 0) { section = 0; } var label = require("ui/label"); var lbl = new label.Label(); lbl.bind({ targetProperty: "text", sourceProperty: "$value" }); return lbl; }; SectionedListView.prototype._onItemsPropertyChanged = function (data) { var observableArray = require("data/observable-array"); var weakEvents = require("ui/core/weak-event-listener"); 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(); }; SectionedListView.prototype._onItemsChanged = function (args) { this.refresh(); }; SectionedListView.prototype._onRowHeightPropertyChanged = function (data) { this.refresh(); }; SectionedListView.prototype._propagateInheritableProperties = function (view) { }; SectionedListView.itemLoadingEvent = "itemLoading"; SectionedListView.headerLoadingEvent = "headerLoading"; SectionedListView.itemTapEvent = "itemTap"; SectionedListView.loadMoreItemsEvent = "loadMoreItems"; SectionedListView.separatorColorProperty = new dependencyObservable.Property(SEPARATORCOLOR, LISTVIEW, new proxy.PropertyMetadata(undefined)); SectionedListView.itemsProperty = new dependencyObservable.Property(ITEMS, LISTVIEW, new proxy.PropertyMetadata(undefined, dependencyObservable.PropertyMetadataSettings.AffectsLayout, onItemsPropertyChanged)); SectionedListView.itemTemplateProperty = new dependencyObservable.Property(ITEMTEMPLATE, LISTVIEW, new proxy.PropertyMetadata(undefined, dependencyObservable.PropertyMetadataSettings.AffectsLayout, onItemTemplatePropertyChanged)); SectionedListView.headerTemplateProperty = new dependencyObservable.Property(HEADER_TEMPLATE, LISTVIEW, new proxy.PropertyMetadata(undefined, dependencyObservable.PropertyMetadataSettings.AffectsLayout, onItemTemplatePropertyChanged)); SectionedListView.isScrollingProperty = new dependencyObservable.Property(ISSCROLLING, LISTVIEW, new proxy.PropertyMetadata(false, dependencyObservable.PropertyMetadataSettings.None)); SectionedListView.rowHeightProperty = new dependencyObservable.Property(ROWHEIGHT, LISTVIEW, new proxy.PropertyMetadata(-1, dependencyObservable.PropertyMetadataSettings.AffectsLayout, onRowHeightPropertyChanged)); SectionedListView.headerHeightProperty = new dependencyObservable.Property(HEADER_HEIGHT, LISTVIEW, new proxy.PropertyMetadata(28, dependencyObservable.PropertyMetadataSettings.AffectsLayout, onRowHeightPropertyChanged)); return SectionedListView; }(view.View)); exports.SectionedListView = SectionedListView;