@atlassian/aui
Version:
Atlassian User Interface Framework
110 lines (88 loc) • 3.49 kB
JavaScript
(function (global, factory) {
if (typeof define === "function" && define.amd) {
define(['module', 'exports', './underscore', './backbone', './internal/globalize', './result-set'], factory);
} else if (typeof exports !== "undefined") {
factory(module, exports, require('./underscore'), require('./backbone'), require('./internal/globalize'), require('./result-set'));
} else {
var mod = {
exports: {}
};
factory(mod, mod.exports, global.underscore, global.backbone, global.globalize, global.resultSet);
global.resultsList = mod.exports;
}
})(this, function (module, exports, _underscore, _backbone, _globalize, _resultSet) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _underscore2 = _interopRequireDefault(_underscore);
var _backbone2 = _interopRequireDefault(_backbone);
var _globalize2 = _interopRequireDefault(_globalize);
var _resultSet2 = _interopRequireDefault(_resultSet);
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
var ResultsList = _backbone2.default.View.extend({
events: {
'click [data-id]': 'setSelection'
},
initialize: function initialize(options) {
if (!this.model) {
this.model = new _resultSet2.default({ source: options.source });
}
if (!(this.model instanceof _resultSet2.default)) {
throw new Error('model must be set to a ResultSet');
}
this.model.bind('update', this.process, this);
this.render = _underscore2.default.wrap(this.render, function (func) {
this.trigger('rendering');
func.apply(this, arguments);
this.trigger('rendered');
});
},
process: function process() {
if (!this._shouldShow(this.model.get('query'))) {
return;
}
this.show();
},
render: function render() {
var ul = _backbone2.default.$('<ul/>');
this.model.each(function (model) {
var li = _backbone2.default.$('<li/>').attr('data-id', model.id).html(this.renderItem(model)).appendTo(ul);
}, this);
this.$el.html(ul);
return this;
},
renderItem: function renderItem() {
return;
},
setSelection: function setSelection(event) {
var id = event.target.getAttribute('data-id');
var selected = this.model.setActive(id);
this.trigger('selected', selected);
},
show: function show() {
this.lastQuery = this.model.get('query');
this._hiddenQuery = null;
this.render();
this.$el.show();
},
hide: function hide() {
this.$el.hide();
this._hiddenQuery = this.lastQuery;
},
size: function size() {
return this.model.get('length');
},
_shouldShow: function _shouldShow(query) {
return query === '' || !(this._hiddenQuery && this._hiddenQuery === query);
}
});
(0, _globalize2.default)('ResultsList', ResultsList);
exports.default = ResultsList;
module.exports = exports['default'];
});
//# sourceMappingURL=results-list.js.map