tooltip.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. (function () {
  2. 'use strict';
  3. angular.module('ariaNg').directive('ngTooltip', function () {
  4. return {
  5. restrict: 'A',
  6. scope: {
  7. title: '@ngTooltip'
  8. },
  9. link: function (scope, element, attrs) {
  10. var options = {
  11. ngTooltipIf: true,
  12. ngTooltipPlacement: 'top',
  13. ngTooltipContainer: null,
  14. ngTooltipTrigger: 'hover'
  15. };
  16. angular.extend(options, attrs);
  17. var showTooltip = options.ngTooltipIf === true || options.ngTooltipIf === 'true';
  18. var addTooltip = function () {
  19. angular.element(element).tooltip({
  20. title: scope.title,
  21. placement: options.ngTooltipPlacement,
  22. container: options.ngTooltipContainer,
  23. trigger: options.ngTooltipTrigger,
  24. delay: {
  25. show: 100,
  26. hide: 0
  27. }
  28. });
  29. };
  30. var refreshTooltip = function () {
  31. angular.element(element).attr('title', scope.title).tooltip('fixTitle');
  32. };
  33. var removeTooltip = function () {
  34. angular.element(element).tooltip('destroy');
  35. };
  36. if (showTooltip) {
  37. addTooltip();
  38. }
  39. scope.$watch('title', function () {
  40. if (showTooltip) {
  41. refreshTooltip();
  42. }
  43. });
  44. scope.$watch('ngTooltipIf', function (value) {
  45. if (angular.isUndefined(value)) {
  46. return;
  47. }
  48. value = (value === true || value === 'true');
  49. if (showTooltip === value) {
  50. return;
  51. }
  52. if (value) {
  53. addTooltip();
  54. } else {
  55. removeTooltip();
  56. }
  57. showTooltip = value;
  58. });
  59. }
  60. };
  61. });
  62. }());