nutui.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import { version } from '../package.json';
  2. import { packages } from './config.json';
  3. import { locale } from './locales';
  4. const components = {};
  5. const methods = {};
  6. const filters = {};
  7. const directives = {};
  8. packages.map(item => {
  9. const cptName = item.name.toLowerCase();
  10. const pkg = require('./packages/' + cptName + '/index.js').default;
  11. require('./packages/' + cptName + '/' + cptName + '.scss');
  12. if (!pkg) return;
  13. if (item.type == 'component') {
  14. if (pkg.name) {
  15. components[item.name] = pkg;
  16. } else {
  17. for (let n in pkg) {
  18. components[n] = pkg[n];
  19. }
  20. }
  21. } else if (item.type == 'method') {
  22. methods[item.name] = pkg;
  23. } else if (item.type == 'filter') {
  24. filters[item.name] = pkg;
  25. } else if (item.type == 'directive') {
  26. directives[item.name] = pkg;
  27. }
  28. });
  29. const install = function (Vue, opts = {}) {
  30. if (install.installed) return;
  31. if(opts.locale) {
  32. Vue.config.lang = opts.locale;
  33. }
  34. if(opts.lang) locale(Vue.config.lang, opts.lang);
  35. for (let cptName in methods) {
  36. Vue.prototype['$' + cptName.toLowerCase()] = methods[cptName];
  37. }
  38. for (let cptName in components) {
  39. if (components[cptName] && components[cptName].name) {
  40. Vue.component(components[cptName].name, components[cptName]);
  41. }
  42. }
  43. for (let cptName in filters) {
  44. if (filters[cptName] && filters[cptName].name) {
  45. Vue.filter(cptName, filters[cptName]);
  46. }
  47. }
  48. for (let cptName in directives) {
  49. if (directives[cptName] && directives[cptName].name) {
  50. Vue.directive(directives[cptName].name, directives[cptName]);
  51. }
  52. }
  53. };
  54. if (typeof window !== 'undefined' && window.Vue) {
  55. install(window.Vue);
  56. }
  57. const API = {
  58. version,
  59. locale,
  60. install,
  61. ...components,
  62. ...filters,
  63. ...directives,
  64. ...methods
  65. };
  66. export default API;