У меня есть список элементов, которые имеют функцию перетаскивания и в конце элемента списка, я добавил поле ввода, чтобы я мог добавить элемент в список.
Вместо того, чтобы добавлять элемент всегда в конце, я хотел щелкнуть между списком элементов и добавить другой элемент в любое место. Ширина поля ввода всегда должна корректироваться в зависимости от размера экрана.
Когда указатель курсора находится между item2 и item3, когда я нажимаю стрелку вправо, он должен перемещаться между item3 и item4, когда я нажимаю стрелку влево, курсор должен перемещаться между item 1 и item 2.
<!DOCTYPE html>
<html>
<head>
<title>Angularjs Drag and Drop Table Rows Example - ItSolutionStuff.com</title>
<!--<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" />-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.2/angular.min.js"></script>
<script src="http://cdn.jsdelivr.net/g/jquery@1,jquery.ui@1.10%28jquery.ui.core.min.js+jquery.ui.widget.min.js+jquery.ui.mouse.min.js+jquery.ui.sortable.min.js%29,angularjs@1.2,angular.ui-sortable"></script>
<style>
.drag-and-drop-container {
-webkit-appearance: textfield;
padding: 1px;
background-color: #fff;
border: 1px solid #a9a9a9;
box-shadow: 1px 1px 1px 0 #d3d3d3 inset;
}
.drag-and-drop-container-focus {
box-shadow: 0 0 3px 1px rgb(5, 139, 242, .6);
}
.drag-and-drop-ul {
display: flex;
flex-direction: row;
justify-content: flex-start;
list-style-type: none;
flex-wrap: wrap;
margin-left: -35px;
margin-bottom: 5px;
}
.drag-and-drop-ing {
font: 14px 'Helvetica Neue', Helvetica, Arial, sans-serif;
border: 2px solid #F4F4F4;
border-radius: 14px;
padding: 3px 4px 4px 4px;
background: #F4F4F4;
margin: 3px;
cursor: move;
}
.drag-and-drop-ing-name {
color: rgb(60, 61, 54);
font-size: 16px;
padding-left: 3px;
}
.drag-and-drop-input {
border: none;
width: 145px;
margin-left: 5px;
margin-top: 3px;
height: 26px;
font: 14px "Helvetica Neue", Helvetica, Arial, sans-serif;
float: left;
}
</style>
</head>
<body>
<div class="container">
<div ng-app="myApp" ng-controller="mainController">
<div class="global-ingredients-container">
<div class="drag-and-drop-container" name="draganddropcontainer{{$index}}">
<ul ui-sortable ng-model="items" class="drag-and-drop-ul">
<li class="drag-and-drop-li" ng-repeat="item in items">
<label class="drag-and-drop-ing">
<span class="drag-and-drop-ing-name">{{ item }}</span>
</label>
</li>
<input type="text" class="drag-and-drop-input" placeholder="Add an item" ng-model="itemName" ng-keydown="addItemIntoList($event, itemName, $index)" />
</ul>
</div>
</div>
</div>
</div>
<script type="text/javascript">
var myApp = angular.module("myApp", ['ui.sortable']);
myApp.controller("mainController", function($scope) {
$scope.items = ["item1", "item2", "item3", "item4"];
$scope.addItemIntoList = function(event, itemName, index) {
if (event.keyCode == 13 && itemName.length > 2) {
$scope.items.push(itemName);
}
}
});
</script>
</body>
</html>