mirror of
https://github.com/discourse/discourse.git
synced 2025-06-02 16:29:32 +08:00
[WIP] select-box-kit refactoring
This commit is contained in:
@ -11,56 +11,68 @@ function checkSelectBoxIsNotCollapsed(selectBoxSelector) {
|
||||
}
|
||||
|
||||
Ember.Test.registerAsyncHelper('expandSelectBox', function(app, selectBoxSelector) {
|
||||
selectBoxSelector = selectBoxSelector || '.select-box';
|
||||
selectBoxSelector = selectBoxSelector || '.select-box-kit';
|
||||
|
||||
checkSelectBoxIsNotExpanded(selectBoxSelector);
|
||||
|
||||
click(selectBoxSelector + ' .select-box-header');
|
||||
click(selectBoxSelector + ' .select-box-kit-header');
|
||||
});
|
||||
|
||||
Ember.Test.registerAsyncHelper('collapseSelectBox', function(app, selectBoxSelector) {
|
||||
selectBoxSelector = selectBoxSelector || '.select-box';
|
||||
selectBoxSelector = selectBoxSelector || '.select-box-kit';
|
||||
|
||||
checkSelectBoxIsNotCollapsed(selectBoxSelector);
|
||||
|
||||
click(selectBoxSelector + ' .select-box-header');
|
||||
click(selectBoxSelector + ' .select-box-kit-header');
|
||||
});
|
||||
|
||||
Ember.Test.registerAsyncHelper('selectBoxSelectRow', function(app, rowId, options) {
|
||||
Ember.Test.registerAsyncHelper('selectBoxSelectRow', function(app, rowValue, options) {
|
||||
options = options || {};
|
||||
options.selector = options.selector || '.select-box';
|
||||
options.selector = options.selector || '.select-box-kit';
|
||||
|
||||
checkSelectBoxIsNotCollapsed(options.selector);
|
||||
|
||||
click(options.selector + " .select-box-row[data-id='" + rowId + "']");
|
||||
click(options.selector + " .select-box-kit-row[data-value='" + rowValue + "']");
|
||||
});
|
||||
|
||||
Ember.Test.registerAsyncHelper('selectBoxSelectNoneRow', function(app, options) {
|
||||
options = options || {};
|
||||
options.selector = options.selector || '.select-box-kit';
|
||||
|
||||
checkSelectBoxIsNotCollapsed(options.selector);
|
||||
|
||||
click(options.selector + " .select-box-kit-row.none");
|
||||
});
|
||||
|
||||
Ember.Test.registerAsyncHelper('selectBoxFillInFilter', function(app, filter, options) {
|
||||
options = options || {};
|
||||
options.selector = options.selector || '.select-box';
|
||||
options.selector = options.selector || '.select-box-kit';
|
||||
|
||||
checkSelectBoxIsNotCollapsed(options.selector);
|
||||
|
||||
var filterQuerySelector = options.selector + ' .filter-query';
|
||||
var filterQuerySelector = options.selector + ' .select-box-kit-filter-input';
|
||||
fillIn(filterQuerySelector, filter);
|
||||
triggerEvent(filterQuerySelector, 'keyup');
|
||||
});
|
||||
|
||||
function selectBox(selector) { // eslint-disable-line no-unused-vars
|
||||
selector = selector || '.select-box';
|
||||
selector = selector || '.select-box-kit';
|
||||
|
||||
function rowHelper(row) {
|
||||
return {
|
||||
text: function() { return row.find('.text').text().trim(); },
|
||||
name: function() { return row.attr('data-name'); },
|
||||
icon: function() { return row.find('.d-icon'); },
|
||||
title: function() { return row.attr('title'); },
|
||||
el: function() { return row; }
|
||||
value: function() { return row.attr('data-value'); },
|
||||
el: row
|
||||
};
|
||||
}
|
||||
|
||||
function headerHelper(header) {
|
||||
return {
|
||||
text: function() { return header.find('.current-selection').text().trim(); },
|
||||
name: function() {
|
||||
return header.attr('data-name');
|
||||
},
|
||||
icon: function() { return header.find('.icon'); },
|
||||
title: function() { return header.attr('title'); },
|
||||
el: header
|
||||
@ -77,9 +89,8 @@ function selectBox(selector) { // eslint-disable-line no-unused-vars
|
||||
|
||||
function keyboardHelper() {
|
||||
function createEvent(target, keyCode) {
|
||||
if (typeof target !== 'undefined') {
|
||||
selector = find(selector).find(target);
|
||||
}
|
||||
target = target || ".select-box-kit-filter-input";
|
||||
selector = find(selector).find(target);
|
||||
|
||||
andThen(function() {
|
||||
var event = jQuery.Event('keydown');
|
||||
@ -104,18 +115,30 @@ function selectBox(selector) { // eslint-disable-line no-unused-vars
|
||||
|
||||
isHidden: find(selector).hasClass('is-hidden'),
|
||||
|
||||
header: headerHelper(find(selector).find('.select-box-header')),
|
||||
header: headerHelper(find(selector).find('.select-box-kit-header')),
|
||||
|
||||
filter: filterHelper(find(selector).find('.select-box-filter')),
|
||||
filter: filterHelper(find(selector).find('.select-box-kit-filter')),
|
||||
|
||||
rows: find(selector).find('.select-box-row'),
|
||||
rows: find(selector).find('.select-box-kit-row'),
|
||||
|
||||
row: function(id) {
|
||||
return rowHelper(find(selector).find('.select-box-row[data-id="' + id + '"]'));
|
||||
rowByValue: function(value) {
|
||||
return rowHelper(find(selector).find('.select-box-kit-row[data-value="' + value + '"]'));
|
||||
},
|
||||
|
||||
selectedRow: rowHelper(find(selector).find('.select-box-row.is-selected')),
|
||||
rowByName: function(name) {
|
||||
return rowHelper(find(selector).find('.select-box-kit-row[data-name="' + name + '"]'));
|
||||
},
|
||||
|
||||
highlightedRow: rowHelper(find(selector).find('.select-box-row.is-highlighted'))
|
||||
rowByIndex: function(index) {
|
||||
return rowHelper(find(selector).find('.select-box-kit-row:eq(' + index + ')'));
|
||||
},
|
||||
|
||||
el: find(selector),
|
||||
|
||||
noneRow: rowHelper(find(selector).find('.select-box-kit-row.none')),
|
||||
|
||||
selectedRow: rowHelper(find(selector).find('.select-box-kit-row.is-selected')),
|
||||
|
||||
highlightedRow: rowHelper(find(selector).find('.select-box-kit-row.is-highlighted'))
|
||||
};
|
||||
}
|
||||
|
Reference in New Issue
Block a user