index.js 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  1. import Affix from './components/affix';
  2. import Alert from './components/alert';
  3. import Anchor from './components/anchor';
  4. import AnchorLink from './components/anchor-link';
  5. import AutoComplete from './components/auto-complete';
  6. import Avatar from './components/avatar';
  7. import BackTop from './components/back-top';
  8. import Badge from './components/badge';
  9. import Breadcrumb from './components/breadcrumb';
  10. import Button from './components/button';
  11. import Card from './components/card';
  12. import Carousel from './components/carousel';
  13. import Cascader from './components/cascader';
  14. import Cell from './components/cell';
  15. import Checkbox from './components/checkbox';
  16. import Circle from './components/circle';
  17. import Collapse from './components/collapse';
  18. import ColorPicker from './components/color-picker';
  19. import Content from './components/content';
  20. import DatePicker from './components/date-picker';
  21. import Divider from './components/divider';
  22. import Drawer from './components/drawer';
  23. import Dropdown from './components/dropdown';
  24. import Footer from './components/footer';
  25. import Form from './components/form';
  26. import Header from './components/header';
  27. import Icon from './components/icon';
  28. import Input from './components/input';
  29. import InputNumber from './components/input-number';
  30. import Scroll from './components/scroll';
  31. import Split from './components/split';
  32. import Layout from './components/layout';
  33. import List from './components/list';
  34. import LoadingBar from './components/loading-bar';
  35. import Menu from './components/menu';
  36. import Message from './components/message';
  37. import Modal from './components/modal';
  38. import Notice from './components/notice';
  39. import Page from './components/page';
  40. import Poptip from './components/poptip';
  41. import Progress from './components/progress';
  42. import Radio from './components/radio';
  43. import Rate from './components/rate';
  44. import Sider from './components/sider';
  45. import Slider from './components/slider';
  46. import Spin from './components/spin';
  47. import Steps from './components/steps';
  48. import Switch from './components/switch';
  49. import Table from './components/table';
  50. import Tabs from './components/tabs';
  51. import Tag from './components/tag';
  52. import Time from './components/time';
  53. import Timeline from './components/timeline';
  54. import TimePicker from './components/time-picker';
  55. import Tooltip from './components/tooltip';
  56. import Transfer from './components/transfer';
  57. import Tree from './components/tree';
  58. import Upload from './components/upload';
  59. import {Row, Col} from './components/grid';
  60. import {Select, Option, OptionGroup} from './components/select';
  61. import locale from './locale/index';
  62. const components = {
  63. Affix,
  64. Alert,
  65. Anchor,
  66. AnchorLink,
  67. AutoComplete,
  68. Avatar,
  69. BackTop,
  70. Badge,
  71. Breadcrumb,
  72. BreadcrumbItem: Breadcrumb.Item,
  73. Button,
  74. ButtonGroup: Button.Group,
  75. Card,
  76. Carousel,
  77. CarouselItem: Carousel.Item,
  78. Cascader,
  79. Cell,
  80. CellGroup: Cell.Group,
  81. Checkbox,
  82. CheckboxGroup: Checkbox.Group,
  83. Col,
  84. Collapse,
  85. ColorPicker,
  86. Content: Content,
  87. DatePicker,
  88. Divider,
  89. Drawer,
  90. Dropdown,
  91. DropdownItem: Dropdown.Item,
  92. DropdownMenu: Dropdown.Menu,
  93. Footer: Footer,
  94. Form,
  95. FormItem: Form.Item,
  96. Header: Header,
  97. Icon,
  98. Input,
  99. InputNumber,
  100. Scroll,
  101. Sider: Sider,
  102. Split,
  103. Submenu: Menu.Sub,
  104. Layout: Layout,
  105. List,
  106. ListItem: List.Item,
  107. ListItemMeta: List.Item.Meta,
  108. LoadingBar,
  109. Menu,
  110. MenuGroup: Menu.Group,
  111. MenuItem: Menu.Item,
  112. Message,
  113. Modal,
  114. Notice,
  115. Option: Option,
  116. OptionGroup,
  117. Page,
  118. Panel: Collapse.Panel,
  119. Poptip,
  120. Progress,
  121. Radio,
  122. RadioGroup: Radio.Group,
  123. Rate,
  124. Row,
  125. Select,
  126. Slider,
  127. Spin,
  128. Step: Steps.Step,
  129. Steps,
  130. Table,
  131. Tabs: Tabs,
  132. TabPane: Tabs.Pane,
  133. Tag,
  134. Time,
  135. Timeline,
  136. TimelineItem: Timeline.Item,
  137. TimePicker,
  138. Tooltip,
  139. Transfer,
  140. Tree,
  141. Upload
  142. };
  143. const iview = {
  144. ...components,
  145. iButton: Button,
  146. iCircle: Circle,
  147. iCol: Col,
  148. iContent: Content,
  149. iForm: Form,
  150. iFooter: Footer,
  151. iHeader: Header,
  152. iInput: Input,
  153. iMenu: Menu,
  154. iOption: Option,
  155. iProgress: Progress,
  156. iSelect: Select,
  157. iSwitch: Switch,
  158. iTable: Table,
  159. iTime: Time
  160. };
  161. const install = function(Vue, opts = {}) {
  162. if (install.installed) return;
  163. locale.use(opts.locale);
  164. locale.i18n(opts.i18n);
  165. Object.keys(iview).forEach(key => {
  166. Vue.component(key, iview[key]);
  167. });
  168. Vue.prototype.$IVIEW = {
  169. size: opts.size || '',
  170. transfer: 'transfer' in opts ? opts.transfer : '',
  171. capture: 'capture' in opts ? opts.capture : true,
  172. select: {
  173. arrow: opts.select ? opts.select.arrow ? opts.select.arrow : '' : '',
  174. customArrow: opts.select ? opts.select.customArrow ? opts.select.customArrow : '' : '',
  175. arrowSize: opts.select ? opts.select.arrowSize ? opts.select.arrowSize : '' : ''
  176. },
  177. cell: {
  178. arrow: opts.cell ? opts.cell.arrow ? opts.cell.arrow : '' : '',
  179. customArrow: opts.cell ? opts.cell.customArrow ? opts.cell.customArrow : '' : '',
  180. arrowSize: opts.cell ? opts.cell.arrowSize ? opts.cell.arrowSize : '' : ''
  181. },
  182. menu: {
  183. arrow: opts.menu ? opts.menu.arrow ? opts.menu.arrow : '' : '',
  184. customArrow: opts.menu ? opts.menu.customArrow ? opts.menu.customArrow : '' : '',
  185. arrowSize: opts.menu ? opts.menu.arrowSize ? opts.menu.arrowSize : '' : ''
  186. },
  187. tree: {
  188. arrow: opts.tree ? opts.tree.arrow ? opts.tree.arrow : '' : '',
  189. customArrow: opts.tree ? opts.tree.customArrow ? opts.tree.customArrow : '' : '',
  190. arrowSize: opts.tree ? opts.tree.arrowSize ? opts.tree.arrowSize : '' : ''
  191. },
  192. cascader: {
  193. arrow: opts.cascader ? opts.cascader.arrow ? opts.cascader.arrow : '' : '',
  194. customArrow: opts.cascader ? opts.cascader.customArrow ? opts.cascader.customArrow : '' : '',
  195. arrowSize: opts.cascader ? opts.cascader.arrowSize ? opts.cascader.arrowSize : '' : '',
  196. itemArrow: opts.cascader ? opts.cascader.itemArrow ? opts.cascader.itemArrow : '' : '',
  197. customItemArrow: opts.cascader ? opts.cascader.customItemArrow ? opts.cascader.customItemArrow : '' : '',
  198. itemArrowSize: opts.cascader ? opts.cascader.itemArrowSize ? opts.cascader.itemArrowSize : '' : ''
  199. },
  200. colorPicker: {
  201. arrow: opts.colorPicker ? opts.colorPicker.arrow ? opts.colorPicker.arrow : '' : '',
  202. customArrow: opts.colorPicker ? opts.colorPicker.customArrow ? opts.colorPicker.customArrow : '' : '',
  203. arrowSize: opts.colorPicker ? opts.colorPicker.arrowSize ? opts.colorPicker.arrowSize : '' : ''
  204. },
  205. datePicker: {
  206. icon: opts.datePicker ? opts.datePicker.icon ? opts.datePicker.icon : '' : '',
  207. customIcon: opts.datePicker ? opts.datePicker.customIcon ? opts.datePicker.customIcon : '' : '',
  208. iconSize: opts.datePicker ? opts.datePicker.iconSize ? opts.datePicker.iconSize : '' : ''
  209. },
  210. timePicker: {
  211. icon: opts.timePicker ? opts.timePicker.icon ? opts.timePicker.icon : '' : '',
  212. customIcon: opts.timePicker ? opts.timePicker.customIcon ? opts.timePicker.customIcon : '' : '',
  213. iconSize: opts.timePicker ? opts.timePicker.iconSize ? opts.timePicker.iconSize : '' : ''
  214. },
  215. tabs: {
  216. closeIcon: opts.tabs ? opts.tabs.closeIcon ? opts.tabs.closeIcon : '' : '',
  217. customCloseIcon: opts.tabs ? opts.tabs.customCloseIcon ? opts.tabs.customCloseIcon : '' : '',
  218. closeIconSize: opts.tabs ? opts.tabs.closeIconSize ? opts.tabs.closeIconSize : '' : ''
  219. },
  220. modal: {
  221. maskClosable: opts.modal ? 'maskClosable' in opts.modal ? opts.modal.maskClosable : '' : ''
  222. }
  223. };
  224. Vue.prototype.$Loading = LoadingBar;
  225. Vue.prototype.$Message = Message;
  226. Vue.prototype.$Modal = Modal;
  227. Vue.prototype.$Notice = Notice;
  228. Vue.prototype.$Spin = Spin;
  229. };
  230. // auto install
  231. if (typeof window !== 'undefined' && window.Vue) {
  232. install(window.Vue);
  233. }
  234. const API = {
  235. version: process.env.VERSION, // eslint-disable-line no-undef
  236. locale: locale.use,
  237. i18n: locale.i18n,
  238. install,
  239. Circle,
  240. Switch,
  241. ...components
  242. };
  243. API.lang = (code) => {
  244. const langObject = window['iview/locale'].default;
  245. if (code === langObject.i.locale) locale.use(langObject);
  246. else console.log(`The ${code} language pack is not loaded.`); // eslint-disable-line no-console
  247. };
  248. module.exports.default = module.exports = API; // eslint-disable-line no-undef