<div ng-controller="gnap-progressbar as vm">
<div class="form-group">
<label class="control-label">Progress</label>
<div><input type="text" ng-model="vm.progress"></div>
</div>
<div progressbar class="progress-small progress-striped active" value="vm.progress"></div>
<div progressbar class="progress-small progress-striped" value="vm.workLeft"></div>
</div>
(function () {
angular
.module('gnap-example-app')
.controller('gnap-progressbar', GnapProgressbarController);
GnapProgressbarController.$inject = ['$scope'];
function GnapProgressbarController($scope) {
var vm = this;
vm.progress = 40;
$scope.$watch('vm.progress', function (progress) { vm.workLeft = 100 - progress; });
};
})();
<div ng-controller="gnap-stacked-progressbar as vm">
<input ng-repeat="bar in vm.collection track by $index" type="text" ng-model="bar.value">
<hr>
<div progress class="progress-small progress-striped active">
<div bar ng-repeat="bar in vm.collection track by $index" value="bar.value" type="{{bar.type}}">
<span>{{bar.value}}%</span>
</div>
</div>
</div>
(function () {
angular
.module('gnap-example-app')
.controller('gnap-stacked-progressbar', GnapStackedProgressbarController);
GnapStackedProgressbarController.$inject = [];
function GnapStackedProgressbarController() {
var vm = this;
vm.collection = [];
vm.collection.push({
value: 20,
type: 'success'
});
vm.collection.push({
value: 15,
type: 'warning'
});
vm.collection.push({
value: 25,
type: 'error'
});
};
})();
<button class="btn btn-primary" ng-bootbox-alert="Alert message!">Click Me!</button>
<div ng-controller="gnap-confirm-dialog as vm">
<button class="btn btn-primary"
ng-bootbox-confirm="Are you sure you want to confirm this?"
ng-bootbox-confirm-action="vm.confirm()"
ng-bootbox-confirm-action-cancel="vm.cancel()">
Click Me!
</button>
</div>
(function () {
angular
.module('gnap-example-app')
.controller('gnap-confirm-dialog', GnapConfirmDialogController);
GnapConfirmDialogController.$inject = [];
function GnapConfirmDialogController() {
var vm = this;
vm.confirm = function () {
alert('You were sure!');
};
vm.cancel = function () {
alert('You weren\'t sure!');
};
};
})();
<div ng-controller="gnap-prompt-dialo as vmg">
<button class="btn btn-primary"
ng-bootbox-prompt="Please type in your name"
ng-bootbox-prompt-action="vm.accept(result)"
ng-bootbox-prompt-action-cancel="vm.cancel()">
Prompt
</button>
</div>
(function () {
angular
.module('gnap-example-app')
.controller('gnap-prompt-dialog', GnapPromptDialogController);
GnapPromptDialogController.$inject = [];
function GnapPromptDialogController() {
var vm = this;
vm.accept = function (name) {
alert('Hello ' + name);
};
vm.cancel = function () {
alert('You cancelled!');
};
};
})();
<div ng-controller="gnap-custom-dialog as vm">
<script type="text/ng-template" id="myModalContent.html">
<div class="modal-header">
<h3 class="modal-title">I am a modal!</h3>
</div>
<div class="modal-body">
<ul>
<li ng-repeat="item in vm.items">
<a ng-click="vm.selected.item = item">{{ item }}</a>
</li>
</ul>
Selected: <b>{{ vm.selected.item }}</b>
</div>
<div class="modal-footer">
<button class="btn btn-primary" ng-click="vm.ok()">OK</button>
<button class="btn btn-warning" ng-click="vm.cancel()">Cancel</button>
</div>
</script>
<button class="btn btn-primary" ng-click="vm.open()">click Me!</button>
</div>
(function () {
angular
.module('gnap-example-app')
.controller('gnap-custom-dialog', GnapCustomDialogController)
.controller('gnap-custom-dialog-instance', GnapCustomDialogInstanceController);
GnapCustomDialogController.$inject = ['$modal'];
GnapCustomDialogInstanceController.$inject = ['$modalInstance', 'items'];
function GnapCustomDialogController($modal) {
var vm = this;
vm.items = ['item1', 'item2', 'item3'];
vm.open = function (size) {
var modalInstance = $modal.open({
templateUrl: 'myModalContent.html',
controller: 'gnap-custom-dialog-instance as vm',
resolve: {
items: function () {
return vm.items;
}
}
});
modalInstance.result.then(function (result) {
alert('You selected: ' + result);
}, function () {
alert('You dismissed the dialog!');
});
};
};
function GnapCustomDialogInstanceController($modalInstance, items) {
var vm = this;
vm.items = items;
vm.selected = {
item: vm.items[0]
};
vm.ok = function () {
$modalInstance.close(vm.selected.item);
};
vm.cancel = function () {
$modalInstance.dismiss('cancel');
};
};
})();
<div ng-controller="gnap-alerts as vm">
<div alert ng-repeat="alert in vm.alerts" type="{{alert.type}}" close="vm.closeAlert($index)"><span ng-bind-html="alert.msg"></span></div>
</div>
(function () {
angular
.module('gnap-example-app')
.controller('gnap-alerts', GnapAlertsController);
GnapAlertsController.$inject = ['$sce'];
function GnapAlertsController($sce) {
var vm = this;
vm.alerts = [
{ type: 'danger', msg: $sce.trustAsHtml('<b>Oh snap!</b> Change a few things up and try submitting again.') },
{ type: 'success', msg: $sce.trustAsHtml('<b>Well done!</b> You successfully read this important alert message.') },
{ type: 'warning', msg: $sce.trustAsHtml('<b>Warning!</b> Best check your self, you\'re not looking too good.') },
{ type: 'info', msg: $sce.trustAsHtml('<b>Heads up!</b> This alert needs your attention, but it\'s not super important.') }
];
vm.closeAlert = function (index) {
vm.alerts.splice(index, 1);
};
};
})();
<div ng-controller="gnap-pagination as vm">
<div gnap-pager max-size="0" items-per-page="10" total-items="vm.totalItems" current-page="vm.currentPage"></div>
</div>
(function () {
angular
.module('gnap-example-app')
.controller('gnap-pagination', GnapPaginationController);
GnapPaginationController.$inject = [];
function GnapPaginationController() {
var vm = this;
vm.totalItems = 164;
vm.currentPage = 4;
};
})();
<div ng-controller="gnap-pagination as vm">
<div gnap-pager max-size="5" items-per-page="10" total-items="vm.totalItems" current-page="vm.currentPage"></div>
</div>
(function () {
angular
.module('gnap-example-app')
.controller('gnap-pagination', GnapPaginationController);
GnapPaginationController.$inject = [];
function GnapPaginationController() {
var vm = this;
vm.totalItems = 164;
vm.currentPage = 4;
};
})();
<img src="images/loading.gif" alt="Loading..." />
<i class="icon-unlock"></i>
<span class="label label-primary">Default</span>
<span class="label label-success arrowed">Success</span>
<span class="badge badge-primary">1</span>
<span class="badge badge-success">2</span>
<span class="badge badge-warning">4</span>
<span class="badge badge-danger">6</span>
<span class="badge badge-info">8</span>
<span class="label label-warning">
<i class="icon-warning-sign bigger-120"></i>
Warning
</span>
<span class="label label-lg label-pink arrowed-right">Large</span>
<span class="label label-lg label-purple arrowed">Purple</span>
| Domain | Price | Clicks | Update |
|---|---|---|---|
| {{ domain.domain }} | {{ domain.price }} | {{ domain.clicks }} | {{ domain.update }} |
<div class="table-responsive" ng-controller="gnap-standard-table as vm">
<table class="table table-striped table-bordered table-hover">
<thead>
<tr>
<th>Domain</th>
<th>Price</th>
<th class="hidden-480">Clicks</th>
<th>
<i class="icon-time bigger-110 hidden-480"></i>
Update
</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="domain in vm.domains">
<td>
<a ng-click="vm.view(domain)">{{ domain.domain }}</a>
</td>
<td>{{ domain.price }}</td>
<td class="hidden-480">{{ domain.clicks }}</td>
<td>{{ domain.update }}</td>
</tr>
</tbody>
</table>
</div>
(function () {
angular
.module('gnap-example-app')
.controller('gnap-standard-table', GnapStandardTableController);
GnapStandardTableController.$inject = ['Domain'];
function GnapStandardTableController(Domain) {
var vm = this;
Domain.query(function(domains) {
vm.domains = domains;
});
vm.view = function (domain) {
alert('Going to the view \'' + domain.domain + '\' page ...');
};
};
})();
(function () {
angular
.module('gnap-example-app')
.factory('Domain', Domain);
Domain.$inject = ['$resource'];
function Domain($resource) {
return $resource('app/main/examples/tables/domains.json');
};
})();
[
{
"domain": "app.com",
"price": "$45",
"clicks": "3,330",
"update": "Feb 12",
"status": "Expiring"
},
{
"domain": "base.com",
"price": "$35",
"clicks": "2,595",
"update": "Feb 18",
"status": "Registered"
},
{
"domain": "max.com",
"price": "$60",
"clicks": "4,400",
"update": "Mar 11",
"status": "Expiring"
},
{
"domain": "best.com",
"price": "$75",
"clicks": "6,500",
"update": "Apr 03",
"status": "Flagged"
},
{
"domain": "pro.com",
"price": "$55",
"clicks": "4,250",
"update": "Jan 21",
"status": "Flagged"
}
]
| Domain | Price | Clicks | Update | Status | ||
|---|---|---|---|---|---|---|
| {{ domain.domain }} | {{ domain.price }} | {{ domain.clicks }} | {{ domain.update }} | {{ domain.status }} |
<div class="table-header">
A Table Title
</div>
<div class="table-responsive" ng-controller="gnap-full-table as vm">
<table datatable class="table table-striped table-bordered table-hover">
<thead>
<tr>
<th class="center">
<label>
<input type="checkbox" gnap-header-checkbox class="ace" />
<span class="lbl"></span>
</label>
</th>
<th>Domain</th>
<th>Price</th>
<th class="hidden-480">Clicks</th>
<th>
<i class="icon-time bigger-110 hidden-480"></i>
Update
</th>
<th class="hidden-480">Status</th>
<th></th>
</tr>
</thead>
<tbody>
<tr ng-repeat="domain in vm.domains">
<td class="center">
<label>
<input type="checkbox" class="ace" />
<span class="lbl"></span>
</label>
</td>
<td>
<a ng-click="vm.view(domain)">{{ domain.domain }}</a>
</td>
<td>{{ domain.price }}</td>
<td class="hidden-480">{{ domain.clicks }}</td>
<td>{{ domain.update }}</td>
<td class="hidden-480">{{ domain.status }}</td>
<td>
<div class="visible-md visible-lg hidden-sm hidden-xs action-buttons">
<a class="blue" ng-click="vm.view(domain)">
<i class="icon-zoom-in bigger-130"></i>
</a>
<a class="green" ng-click="vm.edit(domain)">
<i class="icon-pencil bigger-130"></i>
</a>
<a class="red" ng-bootbox-confirm="Can I delete it ?" ng-bootbox-confirm-action="vm.delete(domain)">
<i class="icon-trash bigger-130"></i>
</a>
</div>
<div class="visible-xs visible-sm hidden-md hidden-lg">
<div class="inline position-relative">
<button class="btn btn-minier btn-primary dropdown-toggle" data-toggle="dropdown">
<i class="icon-caret-down icon-only bigger-120"></i>
</button>
<ul class="dropdown-menu dropdown-only-icon pull-right dropdown-caret dropdown-close">
<li>
<a tooltip="View" ng-click="vm.view(domain)">
<span>
<i class="icon-zoom-in bigger-120"></i>
</span>
</a>
</li>
<li>
<a tooltip="Edit" ng-click="vm.edit(domain)">
<span>
<i class="icon-edit bigger-120"></i>
</span>
</a>
</li>
<li>
<a ng-bootbox-confirm="Can I delete it ?" ng-bootbox-confirm-action="vm.delete(domain)">
<span tooltip="Delete">
<i class="icon-trash bigger-120"></i>
</span>
</a>
</li>
</ul>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
(function () {
angular
.module('gnap-example-app')
.controller('gnap-full-table', GnapFullTableController);
GnapFullTableController.$inject = ['Domain'];
function GnapFullTableController(Domain) {
var vm = this;
Domain.query(function(domains) {
vm.domains = domains;
});
vm.view = function(domain) {
alert('Going to the view \'' + domain.domain + '\' page ...');
};
vm.edit = function(domain) {
alert('Going to the edit \'' + domain.domain + '\' page ...');
};
vm['delete'] = function(domain) {
alert('Logic to delete \'' + domain.domain + '\' should be executed now ...');
}
};
})();
(function () {
angular
.module('gnap-example-app')
.factory('Domain', Domain);
Domain.$inject = ['$resource'];
function Domain($resource) {
return $resource('app/main/examples/tables/domains.json');
};
})();
[
{
"domain": "app.com",
"price": "$45",
"clicks": "3,330",
"update": "Feb 12",
"status": "Expiring"
},
{
"domain": "base.com",
"price": "$35",
"clicks": "2,595",
"update": "Feb 18",
"status": "Registered"
},
{
"domain": "max.com",
"price": "$60",
"clicks": "4,400",
"update": "Mar 11",
"status": "Expiring"
},
{
"domain": "best.com",
"price": "$75",
"clicks": "6,500",
"update": "Apr 03",
"status": "Flagged"
},
{
"domain": "pro.com",
"price": "$55",
"clicks": "4,250",
"update": "Jan 21",
"status": "Flagged"
}
]
Here is an example of the basic tabs that we have to use
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean lobortis neque id leo tincidunt, vel interdum tortor egestas. Quisque at massa sit amet nisl placerat euismod sit amet non leo. Suspendisse egestas, leo id scelerisque euismod, massa sapien feugiat mi, at pulvinar lorem est sit amet est.
<div tabset>
<div tab heading="Home">
<p>
Here is an example of the basic tabs that we have to use
</p>
</div>
<div tab heading="Messages">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean lobortis neque id leo tincidunt, vel interdum tortor egestas. Quisque at massa sit amet nisl placerat euismod sit amet non leo. Suspendisse egestas, leo id scelerisque euismod, massa sapien feugiat mi, at pulvinar lorem est sit amet est.</p>
</div>
</div>
<div class="widget-box">
<div class="widget-header widget-header-flat">
<h4 class="smaller">
<i class="icon-quote-left smaller-80"></i>
Some Group
</h4>
</div>
<div class="widget-body">
<div class="widget-main">
This is some grouped content
</div>
</div>
</div>
<div ng-controller="gnap-collapse as vm">
<div class="widget-box">
<div class="widget-header widget-header-flat">
<h5>Some Group</h5>
<div class="widget-toolbar">
<a>
<i class="icon-cog"></i>
</a>
<a>
<i class="icon-refresh"></i>
</a>
<a ng-click="vm.isCollapsed = !vm.isCollapsed">
<i ng-class="{true:'icon-chevron-down', false:'icon-chevron-up'}[vm.isCollapsed]"></i>
</a>
</div>
</div>
<div class="widget-body" collapse="vm.isCollapsed">
<div class="widget-main">
<p class="alert alert-info">
Nunc aliquam enim ut arcu aliquet adipiscing. Fusce dignissim volutpat justo non consectetur. Nulla fringilla eleifend consectetur.
</p>
<p class="alert alert-success">
Raw denim you probably haven't heard of them jean shorts Austin.
</p>
</div>
</div>
</div>
</div>
(function () {
angular
.module('gnap-example-app')
.controller('gnap-collapse', GnapCollapseController);
GnapCollapseController.$inject = [];
function GnapCollapseController() {
var vm = this;
vm.isCollapsed = false;
};
})();
<div ng-controller="gnap-collapse as vm">
<div class="widget-box">
<div class="widget-header widget-header-flat">
<h5>Some Group</h5>
<div class="widget-toolbar">
<a ng-click="vm.isCollapsed = !vm.isCollapsed">
<i class="1 bigger-125" ng-class="{true:'icon-chevron-down', false:'icon-chevron-up'}[vm.isCollapsed]"></i>
</a>
</div>
</div>
<div class="widget-body" collapse="vm.isCollapsed">
<div class="widget-main">
<p class="alert alert-info">
Nunc aliquam enim ut arcu aliquet adipiscing. Fusce dignissim volutpat justo non consectetur. Nulla fringilla eleifend consectetur.
</p>
<p class="alert alert-success">
Raw denim you probably haven't heard of them jean shorts Austin.
</p>
</div>
<div class="widget-toolbox padding-8 clearfix">
<button class="btn btn-xs btn-danger pull-left">
<i class="icon-remove"></i>
<span class="bigger-110">I don't accept</span>
</button>
<button class="btn btn-xs btn-success pull-right">
<span class="bigger-110">I accept</span>
<i class="icon-arrow-right icon-on-right"></i>
</button>
</div>
</div>
</div>
</div>
(function () {
angular
.module('gnap-example-app')
.controller('gnap-collapse', GnapCollapseController);
GnapCollapseController.$inject = [];
function GnapCollapseController() {
var vm = this;
vm.isCollapsed = false;
};
})();
<div ng-controller="gnap-default-notification as vm">
<button class="btn btn-primary" ng-click="vm.notify()">Click Me!</button>
<button class="btn btn-default" ng-click="vm.remove()">Remove Notification</button>
</div>
(function () {
angular
.module('gnap-example-app')
.controller('gnap-default-notification', GnapDefaultNotificationController);
GnapDefaultNotificationController.$inject = ['notification'];
function GnapDefaultNotificationController(notification) {
var vm = this;
vm.notify = function () {
notification.show({
title: 'This is a default notification',
text: 'This will fade out after a certain amount of time. Vivamus eget tincidunt velit. Cum sociis natoque penatibus et, nascetur ridiculus mus.'
});
};
vm.remove = function () {
notification.removeAll();
};
};
})();
<div ng-controller="gnap-success-notification">
<button class="btn btn-primary" ng-click="notify()">Click Me!</button>
<button class="btn btn-default" ng-click="remove()">Remove Notification</button>
</div>
(function () {
angular
.module('gnap-example-app')
.controller('gnap-success-notification', GnapSuccessNotificationController);
GnapSuccessNotificationController.$inject = ['$scope', 'notification'];
function GnapSuccessNotificationController($scope, notification) {
$scope.notify = function () {
notification.show({
type: 'success',
title: 'This is a success notification',
text: 'This will fade out after a certain amount of time. Vivamus eget tincidunt velit. Cum sociis natoque penatibus et, nascetur ridiculus mus.'
});
};
$scope.remove = function () {
notification.removeAll();
};
};
})();
<div ng-controller="gnap-error-notification as vm">
<button class="btn btn-primary" ng-click="vm.notify()">Click Me!</button>
<button class="btn btn-default" ng-click="vm.remove()">Remove Notification</button>
</div>
(function () {
angular
.module('gnap-example-app')
.controller('gnap-error-notification', GnapErrorNotificationController);
GnapErrorNotificationController.$inject = ['notification'];
function GnapErrorNotificationController(notification) {
var vm = this;
vm.notify = function () {
notification.show({
type: 'error',
title: 'This is an error notification',
text: 'This will fade out after a certain amount of time. Vivamus eget tincidunt velit. Cum sociis natoque penatibus et, nascetur ridiculus mus.'
});
};
vm.remove = function () {
notification.removeAll();
};
};
})();
<div ng-controller="gnap-progress as vm">
<button class="btn btn-primary" ng-click="vm.start()">Start!</button>
<button class="btn btn-default" ng-click="vm.set40()">Set 40%</button>
<button class="btn btn-default" ng-click="vm.increment()">Increment</button>
<button class="btn btn-default" ng-click="vm.done()">Done</button>
</div>
(function () {
angular
.module('gnap-example-app')
.controller('gnap-progress', GnapProgressController);
GnapProgressController.$inject = ['ngProgressLite'];
function GnapProgressController(ngProgressLite) {
var vm = this;
vm.start = function () {
ngProgressLite.start();
};
vm.set40 = function () {
ngProgressLite.set(0.4);
};
vm.increment = function () {
ngProgressLite.inc();
};
vm.done = function () {
ngProgressLite.done();
};
};
})();
<form gnap-submit='vm.save()'>
<div gnap-show-validity for="firstName" class="form-group">
<label class="control-label" for="firstName">First Name</label>
<input ng-model="vm.firstName" type="text" class="form-control" id="firstName" name="firstName" required>
<div gnap-validation-messages for="firstName">
<div gnap-validation-message when="required">Enter the first name</div>
</div>
</div>
<div gnap-show-validity for="lastName" class="form-group">
<label class="control-label" for="lastName">Last Name</label>
<input ng-model="vm.lastName" type="text" class="form-control" id="lastName" name="lastName" required>
<div gnap-validation-messages for="lastName">
<div gnap-validation-message when="required">Enter the last name</div>
</div>
</div>
<div gnap-show-validity for="username" class="form-group">
<label class="control-label" for="username">Username</label>
<input ng-model="vm.username" type="text" class="form-control" id="username" name="username" required ng-minlength="4" maxlength="8" gnap-validate="vm.validateUsername()">
<div gnap-validation-messages for="username">
<div gnap-validation-message when="required">Enter the username</div>
<div gnap-validation-message when="unique">The username entered is not unique</div>
<div gnap-validation-message when="minlength">The username must be at least 4 characters in length</div>
</div>
</div>
<div gnap-show-validity for="email" class="form-group">
<label class="control-label" for="email">Email</label>
<input ng-model="vm.email" type="email" class="form-control" id="email" name="email">
<div gnap-validation-messages for="email">
<div gnap-validation-message when="email">Enter a valid email address</div>
</div>
</div>
<div gnap-show-validity for="age" class="form-group">
<label class="control-label" for="age">Age</label>
<input ng-model="vm.age" type="number" class="form-control" id="age" name="age" min="0" max="100" />
<div gnap-validation-messages for="age">
<div gnap-validation-message when="number">Enter a valid age</div>
<div gnap-validation-message when="min">Age must be a number greater than 0</div>
<div gnap-validation-message when="max">Age must be a number less than or equal to 100</div>
</div>
</div>
<button class="btn btn-primary">Save</button>
</form>
(function () {
angular
.module('gnap-example-app')
.controller('gnap-validation', GnapValidationController);
GnapValidationController.$inject = ['$q', 'notification'];
function GnapValidationController($q, notification) {
var vm = this;
vm.save = function() {
notification.show({
type: 'success',
title: 'User Saved',
text: 'The user account was successfully created.'
});
};
vm.validateUsername = function() {
if (angular.isUndefined(vm.username)) {
return {
unique: true
};
}
// simulate remote call
var uniqueDeferred = $q.defer();
setTimeout(function() {
if (vm.username === 'test') {
uniqueDeferred.resolve(false);
} else {
uniqueDeferred.resolve(true);
}
}, 2500);
return {
unique: uniqueDeferred.promise
};
};
}
})();