tns-core-modules
Version:
Telerik NativeScript Core Modules
85 lines (84 loc) • 3.5 kB
JavaScript
var dependencyObservable = require("ui/core/dependency-observable");
var proxy = require("ui/core/proxy");
var view = require("ui/core/view");
var types = require("utils/types");
var trace = require("trace");
exports.traceCategory = "ListPicker";
var ListPicker = (function (_super) {
__extends(ListPicker, _super);
function ListPicker() {
_super.call(this);
}
Object.defineProperty(ListPicker.prototype, "selectedIndex", {
get: function () {
return this._getValue(ListPicker.selectedIndexProperty);
},
set: function (value) {
this._setValue(ListPicker.selectedIndexProperty, value);
},
enumerable: true,
configurable: true
});
Object.defineProperty(ListPicker.prototype, "items", {
get: function () {
return this._getValue(ListPicker.itemsProperty);
},
set: function (value) {
this._setValue(ListPicker.itemsProperty, value);
},
enumerable: true,
configurable: true
});
ListPicker.prototype._getItemAsString = function (index) {
if (!this.items || !this.items.length) {
return " ";
}
if (types.isDefined(this.items)) {
var item = this.items.getItem ? this.items.getItem(index) : this.items[index];
return types.isString(item) ? item : (types.isDefined(item) ? item.toString() : index.toString());
}
return index.toString();
};
ListPicker.prototype._onSelectedIndexPropertyChanged = function (data) {
trace.write("ListPicker._onSelectedIndexPropertyChanged(" + data.oldValue + " => " + data.newValue + ");", exports.traceCategory);
var index = this.selectedIndex;
if (types.isUndefined(index)) {
return;
}
if (types.isDefined(this.items)) {
if (index < 0 || index >= this.items.length) {
this.selectedIndex = undefined;
throw new Error("selectedIndex should be between [0, items.length - 1]");
}
}
};
ListPicker.prototype._onItemsPropertyChanged = function (data) {
};
ListPicker.prototype._updateSelectedIndexOnItemsPropertyChanged = function (newItems) {
trace.write("ListPicker._updateSelectedIndexOnItemsPropertyChanged(" + newItems + ");", exports.traceCategory);
var newItemsCount = 0;
if (newItems && newItems.length) {
newItemsCount = newItems.length;
}
if (newItemsCount === 0) {
this.selectedIndex = undefined;
}
else if (types.isUndefined(this.selectedIndex) || this.selectedIndex >= newItemsCount) {
this.selectedIndex = 0;
}
};
ListPicker.selectedIndexProperty = new dependencyObservable.Property("selectedIndex", "ListPicker", new proxy.PropertyMetadata(undefined));
ListPicker.itemsProperty = new dependencyObservable.Property("items", "ListPicker", new proxy.PropertyMetadata(undefined));
return ListPicker;
}(view.View));
exports.ListPicker = ListPicker;
function onSelectedIndexPropertyChanged(data) {
var picker = data.object;
picker._onSelectedIndexPropertyChanged(data);
}
function onItemsPropertyChanged(data) {
var picker = data.object;
picker._onItemsPropertyChanged(data);
}
ListPicker.selectedIndexProperty.metadata.onSetNativeValue = onSelectedIndexPropertyChanged;
ListPicker.itemsProperty.metadata.onSetNativeValue = onItemsPropertyChanged;