JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<script src="https://rawgit.com/marceljuenemann/angular-drag-and-drop-lists/master/angular-drag-and-drop-lists.min.js"></script>
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
<div ng-app="app">
<div ng-controller="homeCtrl" class="drop-layout">
<h1>Grid:</h1>
<grid htmlstring="html_string" pageelements="page_elements"></grid>
<script type="text/ng-template" id="snippet.html">
<div class="item">{{item.snippet}} {{item.position}}</div>
</script>
<h1>Compile dynamic HTML</h1><h5>How to live preview of filled by elements html?</h5>
<textarea ng-model="html_string" rows="5" cols="100"></textarea>
<p>Assign elements to .grid-cells: <pre>{{page_elements}}</pre></p>
</div>
</div>
CSS
.item {
min-height: 50px;
padding-left: 0px;
}
.drop-layout .layout-grid {
margin-bottom: 15px;
}
.drop-layout .layout-grid [class^=col-] {
background-color: #eee;
background-color: rgba(86, 61, 124, .15);
border: 1px solid #ddd;
border: 1px solid rgba(86, 61, 124, .2);
}
.drop-layout div[dnd-list], .drop-layout div[dnd-list] > div {
position: relative;
}
.drop-layout .drop-area div[dnd-list] {
min-height: 50px;
padding-left: 0px;
}
.drop-layout .drop-area div {
background-color: #eee;
border: 1px solid #ddd;
display: block;
padding: 0px;
}
.drop-layout .drop-area .dndDragging {
opacity: 0.7;
}
.drop-layout .drop-area .dndDraggingSource {
display: none;
}
.drop-layout .drop-area .dndPlaceholder {
background-color: #ddd;
background-color: rgba(86, 61, 124, .2);
min-height: 48px;
display: block;
position: relative;
}
JavaScript
var app = angular.module('app', ['dndLists']);
app.controller('homeCtrl', function ($scope) {
$scope.html_string = "<div class='container'><div class='row'><div class='col-xs-12'><div class='row'><div class='col-xs-4 grid-cell'></div><div class='col-xs-4 grid-cell'></div><div class='col-xs-4 grid-cell'></div></div><div class='row'><div class='col-xs-4 grid-cell'></div><div class='col-xs-4 grid-cell'></div><div class='col-xs-4 grid-cell'></div></div></div></div></div>";
$scope.page_elements = [{
"grid_id": 0,
"position": 0,
"snippet": "<h4>First Grid 0</h4>",
"template": "snippet"
}, {
"grid_id": 0,
"position": 1,
"snippet": "<h2>Second Grid 0</h2>",
"template": "snippet"
}, {
"grid_id": 1,
"position": 0,
"snippet": "<h2>First Grid 1</h2>",
"template": "snippet"
}, {
"grid_id": 1,
"position": 1,
"snippet": "<h2>Second Grid 1</h2>",
"template": "snippet"
}, {
"grid_id": 2,
"position": 0,
"snippet": "<h1>First Grid 2</h1>",
"template": "snippet"
}, {
"grid_id": 2,
"position": 1,
"snippet": "<h2>Second Grid 0</h2>",
"template": "snippet"
}, {
"grid_id": 2,
"position": 2,
"snippet": "<h2>Third Grid 0</h2>",
"template": "snippet"
}, {
"grid_id": 5,
"position": 0,
"snippet": "<h2>Before Last</h2>",
"template": "snippet"
}, {
"grid_id": 5,
"position": 1,
"snippet": "<h2>Last</h2>",
"template": "snippet"
}];
$scope.page_elements_pretty = angular.toJson($scope.page_elements, true);
$scope.rmElement = function (i) {
debugger
};
})
.directive('grid', function ($compile) {
return {
restrict: 'E',
replace: true,
scope: {
...