nutui.js 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  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. const packages = {
  99. Cell,
  100. Dialog,
  101. Icon,
  102. Toast,
  103. ActionSheet,
  104. Tab,
  105. TabPanel,
  106. TabBar,
  107. Calendar,
  108. DatePicker,
  109. NavBar,
  110. NoticeBar,
  111. Switch,
  112. Slider,
  113. Range,
  114. Picker,
  115. Progress,
  116. Price,
  117. Flex,
  118. Col,
  119. Row,
  120. Steps,
  121. Button,
  122. Badge,
  123. Rate,
  124. Swiper,
  125. Menu,
  126. Stepper,
  127. ButtonGroup,
  128. SearchBar,
  129. ImagePicker,
  130. Radio,
  131. RadioGroup,
  132. CheckBox,
  133. CheckBoxGroup,
  134. ShortPassword,
  135. Skeleton,
  136. Scroller,
  137. BackTop,
  138. CountDown,
  139. InfiniteLoading,
  140. Uploader,
  141. TextInput,
  142. TextBox,
  143. Avatar,
  144. Elevator,
  145. Popup
  146. };
  147. const components = {};
  148. const methods = {};
  149. const filters = {};
  150. const directives = {};
  151. pkgList.map(item => {
  152. const pkg = packages[item.name];
  153. if (!pkg) return;
  154. if (item.type == "component") {
  155. if (pkg.name) {
  156. components[pkg.name] = pkg;
  157. } else {
  158. for (let n in pkg) {
  159. components[n] = pkg[n];
  160. }
  161. }
  162. } else if (item.type == "method") {
  163. methods[item.name] = pkg;
  164. } else if (item.type == "filter") {
  165. filters[item.name] = pkg;
  166. } else if (item.type == "directive") {
  167. directives[item.name] = pkg;
  168. }
  169. });
  170. const install = function(Vue, opts = {}) {
  171. if (install.installed) return;
  172. if (opts.locale) {
  173. Vue.config.lang = opts.locale;
  174. }
  175. if (opts.lang) locale(Vue.config.lang, opts.lang);
  176. for (let cptName in methods) {
  177. if (Array.isArray(methods[cptName])) {
  178. Vue.prototype["$" + cptName.toLowerCase()] = methods[cptName][0];
  179. Vue.component(methods[cptName][1].name, methods[cptName][1]);
  180. } else {
  181. Vue.prototype["$" + cptName.toLowerCase()] = methods[cptName];
  182. }
  183. }
  184. for (let cptName in components) {
  185. if (components[cptName] && components[cptName].name) {
  186. Vue.component(components[cptName].name, components[cptName]);
  187. }
  188. }
  189. for (let cptName in filters) {
  190. if (filters[cptName] && filters[cptName].name) {
  191. Vue.filter(cptName, filters[cptName]);
  192. }
  193. }
  194. for (let cptName in directives) {
  195. if (directives[cptName] && directives[cptName].name) {
  196. Vue.directive(directives[cptName].name, directives[cptName]);
  197. }
  198. }
  199. Vue.use(Lazyload, {
  200. lazyComponent: true,
  201. loading:
  202. "//img12.360buyimg.com/imagetools/jfs/t1/73967/28/14561/916/5dc142e4E0666555b/bf33454553c6035e.png"
  203. });
  204. };
  205. if (typeof window !== "undefined" && window.Vue) {
  206. install(window.Vue);
  207. }
  208. export default {
  209. version,
  210. locale,
  211. install,
  212. Lazyload,
  213. ...components,
  214. ...filters,
  215. ...directives,
  216. ...methods
  217. };