/*
* This file is part of Invenio.
* Copyright (C) 2017 CERN.
*
* Invenio is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* Invenio is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Invenio; if not, write to the Free Software Foundation, Inc.,
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* In applying this license, CERN does not
* waive the privileges and immunities granted to it by virtue of its status
* as an Intergovernmental Organization or submit itself to any jurisdiction.
*/
/**
* @ngdoc directive
* @name invenioSearchLoading
* @description
* The invenioSearchLoading directive
* @namespace invenioSearchLoading
* @example
* Usage:
* <invenio-search-loading
* message='{{ _('Loading') }}'
* template='TEMPLATE_PATH'>
* ... Any children directives
* </invenio-search-loading>
*/
function invenioSearchLoading() {
// Functions
/**
* Force apply the attributes to the scope
* @memberof invenioSearchLoading
* @param {service} scope - The scope of this element.
* @param {service} element - Element that this direcive is assigned to.
* @param {service} attrs - Attribute of this element.
* @param {invenioSearchController} vm - Invenio search controller.
*/
function link(scope, element, attrs, vm) {
scope.loadingMessage = attrs.message;
}
/**
* Choose template for search loading
* @memberof invenioSearchLoading
* @param {service} element - Element that this direcive is assigned to.
* @param {service} attrs - Attribute of this element.
* @example
* Minimal template `template.html` usage
* <div ng-show='vm.invenioSearchLoading'>
* <i class='fa fa-loading'></i> {{ loadingMessage }}
* </div>
*/
function templateUrl(element, attrs) {
return attrs.template;
}
////////////
return {
restrict: 'AE',
require: '^invenioSearch',
templateUrl: templateUrl,
link: link,
};
}
angular.module('invenioSearch.directives')
.directive('invenioSearchLoading', invenioSearchLoading);