nutui.js 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294
  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 Slider from './packages/slider/index.js';
  31. import './packages/slider/slider.scss';
  32. import Range from './packages/range/index.js';
  33. import './packages/range/range.scss';
  34. import Picker from './packages/picker/index.js';
  35. import './packages/picker/picker.scss';
  36. import Progress from './packages/progress/index.js';
  37. import './packages/progress/progress.scss';
  38. import Price from './packages/price/index.js';
  39. import './packages/price/price.scss';
  40. import Flex from './packages/flex/index.js';
  41. import './packages/flex/flex.scss';
  42. import Col from './packages/col/index.js';
  43. import './packages/col/col.scss';
  44. import Row from './packages/row/index.js';
  45. import './packages/row/row.scss';
  46. import Steps from './packages/steps/index.js';
  47. import './packages/steps/steps.scss';
  48. import Button from './packages/button/index.js';
  49. import './packages/button/button.scss';
  50. import Badge from './packages/badge/index.js';
  51. import './packages/badge/badge.scss';
  52. import Rate from './packages/rate/index.js';
  53. import './packages/rate/rate.scss';
  54. import Swiper from './packages/swiper/index.js';
  55. import './packages/swiper/swiper.scss';
  56. import Menu from './packages/menu/index.js';
  57. import './packages/menu/menu.scss';
  58. import Stepper from './packages/stepper/index.js';
  59. import './packages/stepper/stepper.scss';
  60. import ButtonGroup from './packages/buttongroup/index.js';
  61. import './packages/buttongroup/buttongroup.scss';
  62. import SearchBar from './packages/searchbar/index.js';
  63. import './packages/searchbar/searchbar.scss';
  64. import ImagePicker from './packages/imagepicker/index.js';
  65. import './packages/imagepicker/imagepicker.scss';
  66. import Radio from './packages/radio/index.js';
  67. import './packages/radio/radio.scss';
  68. import RadioGroup from './packages/radiogroup/index.js';
  69. import './packages/radiogroup/radiogroup.scss';
  70. import CheckBox from './packages/checkbox/index.js';
  71. import './packages/checkbox/checkbox.scss';
  72. import CheckBoxGroup from './packages/checkboxgroup/index.js';
  73. import './packages/checkboxgroup/checkboxgroup.scss';
  74. import ShortPassword from './packages/shortpassword/index.js';
  75. import './packages/shortpassword/shortpassword.scss';
  76. import Skeleton from './packages/skeleton/index.js';
  77. import './packages/skeleton/skeleton.scss';
  78. import Scroller from './packages/scroller/index.js';
  79. import './packages/scroller/scroller.scss';
  80. import BackTop from './packages/backtop/index.js';
  81. import './packages/backtop/backtop.scss';
  82. import CountDown from './packages/countdown/index.js';
  83. import './packages/countdown/countdown.scss';
  84. import InfiniteLoading from './packages/infiniteloading/index.js';
  85. import './packages/infiniteloading/infiniteloading.scss';
  86. import Uploader from './packages/uploader/index.js';
  87. import './packages/uploader/uploader.scss';
  88. import TextInput from './packages/textinput/index.js';
  89. import './packages/textinput/textinput.scss';
  90. import Avatar from './packages/avatar/index.js';
  91. import './packages/avatar/avatar.scss';
  92. import Lazyload from './packages/lazyload/index.js';
  93. import './packages/textbox/textbox.scss';
  94. import TextBox from './packages/textbox/index.js';
  95. import Elevator from './packages/elevator/index.js';
  96. import './packages/elevator/elevator.scss';
  97. import Popup from './packages/popup/index.js';
  98. import LeftSlip from './packages/leftslip/index.js';
  99. import './packages/leftslip/leftslip.scss';
  100. import TabSelect from './packages/tabselect/index.js';
  101. import './packages/tabselect/tabselect.scss';
  102. import './packages/popup/popup.scss';
  103. import LuckDraw from './packages/luckdraw/index.js';
  104. import './packages/luckdraw/luckdraw.scss';
  105. import Video from './packages/video/index.js';
  106. import './packages/video/video.scss';
  107. import Signature from './packages/signature/index.js';
  108. import './packages/signature/signature.scss';
  109. import CircleProgress from './packages/circleprogress/index.js';
  110. import './packages/circleprogress/circleprogress.scss';
  111. import TimeLine from './packages/timeline/index.js';
  112. import './packages/timeline/timeline.scss';
  113. import TimeLineItem from './packages/timelineitem/index.js';
  114. import './packages/timelineitem/timelineitem.scss';
  115. import SideNavBar from './packages/sidenavbar/index.js';
  116. import './packages/sidenavbar/sidenavbar.scss';
  117. import SubSideNavBar from './packages/subsidenavbar/index.js';
  118. import './packages/subsidenavbar/subsidenavbar.scss';
  119. import SideNavBarItem from './packages/sidenavbaritem/index.js';
  120. import './packages/sidenavbaritem/sidenavbaritem.scss';
  121. import Drag from './packages/drag/index.js';
  122. import './packages/drag/drag.scss'; // import VueQr from "./packages/qart/index.js";
  123. // import "./packages/qart/qart.scss";
  124. import Address from './packages/address/index.js';
  125. import './packages/address/address.scss';
  126. import Notify from './packages/notify/index.js';
  127. import './packages/notify/notify.scss';
  128. import CountUp from './packages/countup/index.js';
  129. import './packages/countup/countup.scss';
  130. import FixedNav from './packages/fixednav/index.js';
  131. import './packages/fixednav/fixednav.scss'; // import Gesture from './packages/gesture/index.js';
  132. // import './packages/gesture/gesture.scss';
  133. import Collapse from './packages/collapse/index.js';
  134. import './packages/collapse/collapse.scss';
  135. import Luckycard from "./packages/luckycard/index.js";
  136. import "./packages/luckycard/luckycard.scss";
  137. import NumberKeyboard from './packages/numberkeyboard/index.js';
  138. import './packages/numberkeyboard/numberkeyboard.scss';
  139. const packages = {
  140. Cell,
  141. Dialog,
  142. Icon,
  143. Toast,
  144. ActionSheet,
  145. Tab,
  146. TabPanel,
  147. TabBar,
  148. Calendar,
  149. DatePicker,
  150. NavBar,
  151. NoticeBar,
  152. Switch,
  153. Slider,
  154. Range,
  155. Picker,
  156. Progress,
  157. Price,
  158. Flex,
  159. Col,
  160. Row,
  161. Steps,
  162. Button,
  163. Badge,
  164. Rate,
  165. Swiper,
  166. Menu,
  167. Stepper,
  168. ButtonGroup,
  169. SearchBar,
  170. ImagePicker,
  171. Radio,
  172. RadioGroup,
  173. CheckBox,
  174. CheckBoxGroup,
  175. ShortPassword,
  176. Skeleton,
  177. Scroller,
  178. BackTop,
  179. CountDown,
  180. InfiniteLoading,
  181. Uploader,
  182. TextInput,
  183. TextBox,
  184. Avatar,
  185. Elevator,
  186. Popup,
  187. LeftSlip,
  188. TabSelect,
  189. LuckDraw,
  190. Video,
  191. Signature,
  192. CircleProgress,
  193. TimeLine,
  194. TimeLineItem,
  195. SideNavBar,
  196. SubSideNavBar,
  197. SideNavBarItem,
  198. Drag,
  199. Address,
  200. Notify,
  201. CountUp,
  202. FixedNav,
  203. // Gesture: Gesture
  204. Collapse: Collapse,
  205. Luckycard: Luckycard,
  206. NumberKeyboard: NumberKeyboard
  207. };
  208. const components = {};
  209. const methods = {};
  210. const filters = {};
  211. const directives = {};
  212. pkgList.map(item => {
  213. const pkg = packages[item.name];
  214. if (!pkg) return;
  215. if (item.type == 'component') {
  216. if (pkg.name) {
  217. components[pkg.name] = pkg;
  218. } else {
  219. for (let n in pkg) {
  220. components[n] = pkg[n];
  221. }
  222. }
  223. } else if (item.type == 'method') {
  224. methods[item.name] = pkg;
  225. } else if (item.type == 'filter') {
  226. filters[item.name] = pkg;
  227. } else if (item.type == 'directive') {
  228. directives[item.name] = pkg;
  229. }
  230. });
  231. const install = function(Vue, opts = {}) {
  232. if (install.installed) return;
  233. if (opts.locale) {
  234. Vue.config.lang = opts.locale;
  235. }
  236. if (opts.lang) locale(Vue.config.lang, opts.lang);
  237. for (let cptName in methods) {
  238. if (Array.isArray(methods[cptName])) {
  239. Vue.prototype['$' + cptName.toLowerCase()] = methods[cptName][0];
  240. Vue.component(methods[cptName][1].name, methods[cptName][1]);
  241. } else {
  242. Vue.prototype['$' + cptName.toLowerCase()] = methods[cptName];
  243. }
  244. }
  245. for (let cptName in components) {
  246. if (components[cptName] && components[cptName].name) {
  247. Vue.component(components[cptName].name, components[cptName]);
  248. }
  249. }
  250. for (let cptName in filters) {
  251. if (filters[cptName] && filters[cptName].name) {
  252. Vue.filter(cptName, filters[cptName]);
  253. }
  254. }
  255. for (let cptName in directives) {
  256. if (directives[cptName] && directives[cptName].name) {
  257. Vue.directive(directives[cptName].name, directives[cptName]);
  258. }
  259. }
  260. Vue.use(Lazyload, {
  261. lazyComponent: true,
  262. loading: '//img12.360buyimg.com/imagetools/jfs/t1/73967/28/14561/916/5dc142e4E0666555b/bf33454553c6035e.png'
  263. });
  264. };
  265. if (typeof window !== 'undefined' && window.Vue) {
  266. install(window.Vue);
  267. }
  268. export default {
  269. version,
  270. locale,
  271. install,
  272. Lazyload,
  273. // VueQr,
  274. ...components,
  275. ...filters,
  276. ...directives,
  277. ...methods
  278. };