UNPKG

@bimdos/icon

Version:

跨框架图标库,支持 React、Vue、Angular、AngularJS、小程序等多种使用方式

91 lines (79 loc) 3.76 kB
/** * Bimdos 图标指令 - AngularJS 版本 */ (function() { 'use strict'; angular .module('bimdosIcon', []) .directive('bimdosIcon', bimdosIconDirective); /** * 图标指令定义 */ function bimdosIconDirective() { return { restrict: 'E', scope: { name: '@', size: '@', color: '@', className: '@' }, link: function(scope, element, attrs) { /** * 渲染图标 SVG */ function renderIcon() { var iconName = scope.name; if (!iconName) { element.html(''); return; } var iconData = iconMap[iconName]; if (!iconData) { console.warn('Icon "' + iconName + '" not found'); element.html(''); return; } var size = scope.size || '16'; var color = scope.color || 'currentColor'; var className = scope.className || ''; var viewBox = iconData.viewBox || '0 0 1024 1024'; var svgHtml = '<svg class="bimdos-icon ' + className + '" ' + 'width="' + size + '" ' + 'height="' + size + '" ' + 'viewBox="' + viewBox + '" ' + 'fill="' + color + '">' + '<path d="' + iconData.path + '"></path>' + '</svg>'; element.html(svgHtml); } // 监听属性变化 scope.$watch('name', renderIcon); scope.$watch('size', renderIcon); scope.$watch('color', renderIcon); scope.$watch('className', renderIcon); // 初始渲染 renderIcon(); } }; } // 图标数据映射 var iconMap = { 'up': { path: 'M489.373 361.373C501.744 349 521.726 348.877 534.25 361l.377.372 256 256c12.497 12.496 12.497 32.758 0 45.254-12.371 12.372-32.353 12.496-44.877.372l-.377-.372L512 429.255 278.627 662.627C266.256 675 246.274 675.123 233.75 663l-.377-.372C221 650.256 220.877 630.274 233 617.75l.372-.377z', viewBox: '0 0 1024 1024' }, 'right': { path: 'M361.373 233.373C373.744 221 393.726 220.877 406.25 233l.377.372 256 256c12.372 12.371 12.496 32.353.372 44.877l-.372.377-256 256c-12.496 12.497-32.758 12.497-45.254 0-12.373-12.37-12.496-32.352-.373-44.876l.372-.377L594.745 512 361.373 278.627C349 266.256 348.877 246.274 361 233.75z', viewBox: '0 0 1024 1024' }, 'left': { path: 'M617.373 233.373c12.496-12.497 32.758-12.497 45.254 0 12.372 12.371 12.496 32.353.372 44.877l-.372.377L429.255 512l233.372 233.373c12.372 12.371 12.496 32.353.372 44.877l-.372.377C650.256 803 630.274 803.123 617.75 791l-.377-.372-256-256C349 522.256 348.877 502.274 361 489.75l.372-.377z', viewBox: '0 0 1024 1024' }, 'down': { path: 'M745.373 361.373c12.496-12.497 32.758-12.497 45.254 0 12.372 12.371 12.496 32.353.372 44.877l-.372.377-256 256C522.256 675 502.274 675.123 489.75 663l-.377-.372-256-256c-12.497-12.496-12.497-32.758 0-45.254C245.744 349 265.726 348.877 278.25 361l.377.372L512 594.745z', viewBox: '0 0 1024 1024' } }; // 导出到全局(如果需要) if (typeof module !== 'undefined' && module.exports) { module.exports = { iconMap: iconMap, iconNames: [ 'up', 'right', 'left', 'down' ] }; } })();