blob: 43dfa1a439ca06a0f647347bf944ad63c77a54ed [file]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import angular from 'angular';
import angularBootstrap from 'angular-ui-bootstrap';
import template from './button.html';
const MODULE_NAME = 'core.button';
/**
* @ngdoc directive
* @name brButton
* @module brCore
* @scope
* @restrict E
*
* @description
* HTML button element The data-binding and validation properties of this element are exactly the same as those of the
* button element.
*
* @callback callback
* @param {string=} ngModel Assignable angular expression to data-bind to.
* @param {string=} type Type of the button which is effectively a CSS class name. For more info, see: http://getbootstrap.com/css/#buttons-options
* @param {string=} link The link where this button should link to. If not specified or empty, it won't do anything.
* @param {callback=} on-click The callback function calls when the button is clicked.
*
* @example
* ### Default button
* <example module="br.core">
* <file name="index.html">
* <br-button>Default button</br-button>
* </file>
* </example>
*
* @example
* ### Default button that links to http://google.com
* <example module="br.core">
* <file name="index.html">
* <br-button link="http://google.com">Default button with link</br-button>
* </file>
* </example>
*
* @example
* ### Default button that with a on-click callback
* <example module="myButton">
* <file name="index.html">
* <div ng-controller="myController">
* <br-button on-click="handleClick('Button was clicked!')">Default button with callback</br-button>
* </div>
* </file>
* <file name="script.js">
* angular.module('myButton', ['br.core'])
* .controller('myController', function($scope, $element) {
* $scope.handleClick = function(message) {
* $element.append(message);
* }
* });
* </file>
* </example>
*
* @example
* ### Primary button
* <example module="br.core">
* <file name="index.html">
* <br-button type="btn-primary">Primary button</br-button>
* </file>
* </example>
*
* @example
* ### Accent color button
* <example module="br.core">
* <file name="index.html">
* <br-button type="btn-accent">Accent color button</br-button>
* </file>
* </example>
*
* @example
* ### Success button
* <example module="br.core">
* <file name="index.html">
* <br-button type="btn-success">Success button</br-button>
* </file>
* </example>
*
* @example
* ### Info button
* <example module="br.core">
* <file name="index.html">
* <br-button type="btn-info">Info button</br-button>
* </file>
* </example>
*
* @example
* ### Warning button
* <example module="br.core">
* <file name="index.html">
* <br-button type="btn-warning">Warning button</br-button>
* </file>
* </example>
*
* @example
* ### Danger button
* <example module="br.core">
* <file name="index.html">
* <br-button type="btn-danger">Danger button</br-button>
* </file>
* </example>
*
* @example
* ### Download button
* <example module="br.core">
* <file name="index.html">
* <br-button type="btn-info" is-download="true">Download button</br-button>
* </file>
* </example>
*/
angular.module(MODULE_NAME, [angularBootstrap])
.directive('brButton', brButton);
export default MODULE_NAME;
export function brButton() {
return {
restrict: 'E',
scope: {
type: '@',
link: '@',
click: '&onClick',
isDownload: '<?'
},
transclude: true,
template: template,
replace: true
};
}