nutui.js 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. import { version } from '../package.json';
  2. import { packages as pkgList } from './config.json';
  3. import { locale } from './locales';
  4. import Cell from './packages/cell/index.js';
  5. import './packages/cell/cell.scss';
  6. import Dialog from './packages/dialog/index.js';
  7. import './packages/dialog/dialog.scss';
  8. import Icon from './packages/icon/index.js';
  9. import './packages/icon/icon.scss';
  10. import Toast from './packages/toast/index.js';
  11. import './packages/toast/toast.scss';
  12. import ActionSheet from './packages/actionsheet/index.js';
  13. import './packages/actionsheet/actionsheet.scss';
  14. import Tab from './packages/tab/index.js';
  15. import './packages/tab/tab.scss';
  16. import TabPanel from './packages/tabpanel/index.js';
  17. import './packages/tabpanel/tabpanel.scss';
  18. import TabBar from './packages/tabbar/index.js';
  19. import './packages/tabbar/tabbar.scss';
  20. import Calendar from './packages/calendar/index.js';
  21. import './packages/calendar/calendar.scss';
  22. import DatePicker from './packages/datepicker/index.js';
  23. import './packages/datepicker/datepicker.scss';
  24. import NavBar from './packages/navbar/index.js';
  25. import './packages/navbar/navbar.scss';
  26. import NoticeBar from './packages/noticebar/index.js';
  27. import './packages/noticebar/noticebar.scss';
  28. import Switch from './packages/switch/index.js';
  29. import './packages/switch/switch.scss';
  30. import Picker from './packages/picker/index.js';
  31. import './packages/picker/picker.scss';
  32. import Col from './packages/col/index.js';
  33. import './packages/col/col.scss';
  34. import Row from './packages/row/index.js';
  35. import './packages/row/row.scss';
  36. import Steps from './packages/steps/index.js';
  37. import './packages/steps/steps.scss';
  38. import Button from './packages/button/index.js';
  39. import './packages/button/button.scss';
  40. import Rate from './packages/rate/index.js';
  41. import './packages/rate/rate.scss';
  42. import Stepper from './packages/stepper/index.js';
  43. import './packages/stepper/stepper.scss';
  44. import SearchBar from './packages/searchbar/index.js';
  45. import './packages/searchbar/searchbar.scss';
  46. import Radio from './packages/radio/index.js';
  47. import './packages/radio/radio.scss';
  48. import RadioGroup from './packages/radiogroup/index.js';
  49. import './packages/radiogroup/radiogroup.scss';
  50. import CheckBox from './packages/checkbox/index.js';
  51. import './packages/checkbox/checkbox.scss';
  52. import Skeleton from './packages/skeleton/index.js';
  53. import './packages/skeleton/skeleton.scss';
  54. import Uploader from './packages/uploader/index.js';
  55. import './packages/uploader/uploader.scss';
  56. import Avatar from './packages/avatar/index.js';
  57. import './packages/avatar/avatar.scss';
  58. import Popup from './packages/popup/index.js';
  59. import LeftSlip from './packages/leftslip/index.js';
  60. import './packages/leftslip/leftslip.scss';
  61. import TabSelect from './packages/tabselect/index.js';
  62. import './packages/tabselect/tabselect.scss';
  63. import './packages/popup/popup.scss';
  64. import SideNavBar from './packages/sidenavbar/index.js';
  65. import './packages/sidenavbar/sidenavbar.scss';
  66. import SubSideNavBar from './packages/subsidenavbar/index.js';
  67. import './packages/subsidenavbar/subsidenavbar.scss';
  68. import SideNavBarItem from './packages/sidenavbaritem/index.js';
  69. import './packages/sidenavbaritem/sidenavbaritem.scss';
  70. import Address from './packages/address/index.js';
  71. import './packages/address/address.scss';
  72. import Tag from './packages/tag/index.js';
  73. import './packages/tag/tag.scss';
  74. import Swiper from './packages/swiper/index.js';
  75. import './packages/swiper/swiper.scss';
  76. import Menu from './packages/menu/index.js';
  77. import './packages/menu/menu.scss';
  78. import ImagePreview from './packages/imagepreview/index.js';
  79. import './packages/imagepreview/imagepreview.scss';
  80. import Badge from './packages/badge/index.js';
  81. import './packages/badge/badge.scss';
  82. import Field from './packages/field/index.js';
  83. import './packages/field/field.scss';
  84. import Card from './packages/card/index.js';
  85. import './packages/card/card.scss';
  86. import Infiniteloading from './packages/infiniteloading/index.js';
  87. import './packages/infiniteloading/infiniteloading.scss';
  88. import Scroll from './packages/scroll/index.js';
  89. import './packages/scroll/scroll.scss';
  90. const packages = {
  91. Cell,
  92. Dialog,
  93. Icon,
  94. Toast,
  95. ActionSheet,
  96. Tab,
  97. TabPanel,
  98. TabBar,
  99. Calendar,
  100. DatePicker,
  101. NavBar,
  102. NoticeBar,
  103. Switch,
  104. Range,
  105. Picker,
  106. Col,
  107. Row,
  108. Steps,
  109. Button,
  110. Rate,
  111. Stepper,
  112. SearchBar,
  113. Radio,
  114. RadioGroup,
  115. CheckBox,
  116. Skeleton,
  117. Uploader,
  118. Avatar,
  119. Popup,
  120. LeftSlip,
  121. TabSelect,
  122. SideNavBar,
  123. SubSideNavBar,
  124. SideNavBarItem,
  125. Address,
  126. Tag,
  127. Swiper,
  128. Menu,
  129. ImagePreview,
  130. Badge,
  131. Field,
  132. Card,
  133. Infiniteloading,
  134. Scroll,
  135. };
  136. const components = {};
  137. const methods = {};
  138. const filters = {};
  139. const directives = {};
  140. pkgList.map((item) => {
  141. const pkg = packages[item.name];
  142. if (!pkg) return;
  143. if (item.type == 'component') {
  144. if (pkg.name) {
  145. components[pkg.name] = pkg;
  146. }
  147. } else if (item.type == 'method') {
  148. methods[item.name] = pkg;
  149. } else if (item.type == 'filter') {
  150. filters[item.name] = pkg;
  151. } else if (item.type == 'directive') {
  152. directives[item.name] = pkg;
  153. }
  154. });
  155. const install = function (Vue, opts = {}) {
  156. if (install.installed) return;
  157. if (opts.locale) {
  158. Vue.config.lang = opts.locale;
  159. }
  160. if (opts.lang) locale(Vue.config.lang, opts.lang);
  161. for (let cptName in methods) {
  162. if (Array.isArray(methods[cptName])) {
  163. Vue.prototype['$' + cptName.toLowerCase()] = methods[cptName][0];
  164. Vue.component(methods[cptName][1].name, methods[cptName][1]);
  165. } else {
  166. Vue.prototype['$' + cptName.toLowerCase()] = methods[cptName];
  167. }
  168. }
  169. for (let cptName in components) {
  170. if (components[cptName] && components[cptName].name) {
  171. components[cptName].install(Vue);
  172. // Vue.component(components[cptName].name, components[cptName]);
  173. }
  174. }
  175. for (let cptName in filters) {
  176. if (filters[cptName] && filters[cptName].name) {
  177. Vue.filter(cptName, filters[cptName]);
  178. }
  179. }
  180. for (let cptName in directives) {
  181. if (directives[cptName] && directives[cptName].name) {
  182. Vue.directive(directives[cptName].name, directives[cptName]);
  183. }
  184. }
  185. };
  186. if (typeof window !== 'undefined' && window.Vue) {
  187. install(window.Vue);
  188. }
  189. export default {
  190. version,
  191. locale,
  192. install,
  193. ...components,
  194. ...filters,
  195. ...directives,
  196. ...methods,
  197. };