Skip to content

Commit

Permalink
[JENKINS-33822] Create a new item using the keyboard
Browse files Browse the repository at this point in the history
  • Loading branch information
recena committed Apr 10, 2016
1 parent 8ff2ca4 commit ece6606
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 12 deletions.
4 changes: 2 additions & 2 deletions core/src/main/resources/hudson/model/View/newJob.jelly
Expand Up @@ -37,15 +37,15 @@ THE SOFTWARE.
<div class="header">
<div class="add-item-name">
<label for="name">${%ItemName.label}</label>
<input name="name" id="name" type="text" />
<input name="name" id="name" type="text" tabindex="0" />
<div class="input-help">&#187; ${%ItemName.help}</div>
<div id="itemname-required" class="input-validation-message input-message-disabled">&#187; ${%ItemName.validation.required}</div>
<div id="itemname-invalid" class="input-validation-message input-message-disabled"></div>
<div id="itemtype-required" class="input-validation-message input-message-disabled">&#187; ${%ItemType.validation.required}</div>
</div>
</div>

<div class="categories flat" />
<div class="categories flat" role="radiogroup" aria-labelledby="Items"/>

<j:if test="${!empty(app.itemMap)}">
<div class="item-copy">
Expand Down
35 changes: 25 additions & 10 deletions war/src/main/js/add-item.js
Expand Up @@ -13,7 +13,7 @@ var getItems = function(){

var jRoot = $('head').attr('data-rooturl');

$.when(getItems()).done(function(data){
$.when(getItems()).done(function(data) {
$(function() {

//////////////////////////
Expand Down Expand Up @@ -87,7 +87,7 @@ $.when(getItems()).done(function(data){

function drawCategory(category) {
var $category = $('<div/>').addClass('category').attr('id', 'j-add-item-type-' + cleanClassName(category.id));
var $items = $('<ul"/>').addClass('j-item-options');
var $items = $('<ul/>').addClass('j-item-options');
var $catHeader = $('<div class="header" />');
var title = '<h2>' + category.name + '</h2>';
var description = '<p>' + category.description + '</p>';
Expand All @@ -107,23 +107,38 @@ $.when(getItems()).done(function(data){

function drawItem(elem) {
var desc = checkForLink(elem.description);
var $item = $(['<li class="', cleanClassName(elem.class), '"><label><input type="radio" name="mode" value="',
var $item = $(['<li tabindex="0" role="radio" aria-checked="false" class="', cleanClassName(elem.class), '"><label><input type="radio" name="mode" value="',
elem.class ,'"/> <span class="label">', elem.displayName, '</span></label></li>'].join('')).append(['<div class="desc">', desc, '</div>'].join('')).append(drawIcon(elem));

function setSelectState(e) {
function select(e) {
e.preventDefault();
var $this = $(this).closest('li');
$this.closest('.categories').find('input[type="radio"][name="mode"]').removeAttr('checked');
$this.closest('.categories').find('.active').removeClass('active');
$this.addClass('active');
$this.find('input[type="radio"][name="mode"]').prop('checked', true);
$('li[role="radio"]').attr("aria-checked", "false");
$(this).find('input[type="radio"][name="mode"]').removeAttr('checked');
$(this).parents().find('.active').removeClass('active');

$(this).attr("aria-checked", "true");
$(this).find('input[type="radio"][name="mode"]').prop('checked', true);
$(this).addClass('active');

$('input[type="text"][name="from"]', '#createItem').val('');
cleanValidationMessages('.add-item-copy');
if (isItemNameEmpty()) {
activateValidationMessage('#itemname-required', '.add-item-name');
}
}
$item.click(setSelectState);

$item.click(select);

$item.keypress(function(e) {
switch (e.keyCode) {
case 0:
case 13:
case 32:
$(this).trigger('click');
break;
}
e.stopPropagation();
});

return $item;
}
Expand Down
1 change: 1 addition & 0 deletions war/src/main/js/widgets/add/addform.less
Expand Up @@ -286,6 +286,7 @@
li:hover, li:focus {
border-color: #cccccc;
background: rgba(255, 255, 255, 0.65);
outline: 0;
}

li.active {
Expand Down

0 comments on commit ece6606

Please sign in to comment.