Blame view

components/message/index.js 2.25 KB
7c15ac9e   梁灏   add Message compo...
1
2
3
4
  import Notification from '../base/notification';
  
  const prefixCls = 'ivu-message';
  const iconPrefixCls = 'ivu-icon';
47e58396   梁灏   message component...
5
  const prefixKey = 'ivu_message_key_';
7c15ac9e   梁灏   add Message compo...
6
7
8
9
10
  
  let defaultDuration = 1.5;
  
  let top;
  let messageInstance;
47e58396   梁灏   message component...
11
  let key = 1;
7c15ac9e   梁灏   add Message compo...
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
  
  const iconTypes = {
      'info': 'information-circled',
      'success': 'checkmark-circled',
      'warning': 'android-alert',
      'error': 'close-circled',
      'loading': 'load-c'
  };
  
  function getMessageInstance () {
      messageInstance = messageInstance || Notification.newInstance({
          prefixCls: prefixCls,
          transitionName: 'slide',
          style: {
              top: `${top}px`
          }
      });
  
      return messageInstance;
  }
  
  function notice (content, duration = defaultDuration, type, onClose) {
      if (!onClose) {
          onClose = function () {
  
          }
      }
      let iconType = iconTypes[type];
  
      // if loading
      const loadCls = type === 'loading' ? ' ivu-load-loop' : '';
  
      let instance = getMessageInstance();
  
      instance.notice({
47e58396   梁灏   message component...
47
          key: `${prefixKey}${key}`,
7c15ac9e   梁灏   add Message compo...
48
49
50
51
52
53
54
55
56
57
          duration: duration,
          style: {},
          content: `
              <div class="${prefixCls}-custom-content ${prefixCls}-${type}">
                  <i class="${iconPrefixCls} ${iconPrefixCls}-${iconType}${loadCls}"></i>
                  <span>${content}</span>
              </div>
          `,
          onClose: onClose
      });
47e58396   梁灏   message component...
58
59
60
61
62
63
64
65
66
  
      // 用于手动消除
      return (function () {
          let target = key++;
  
          return function () {
              instance.remove(`${prefixKey}${target}`);
          }
      })();
7c15ac9e   梁灏   add Message compo...
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
  }
  
  export default {
      info (content, duration, onClose) {
          return notice(content, duration, 'info', onClose);
      },
      success (content, duration, onClose) {
          return notice(content, duration, 'success', onClose);
      },
      warning (content, duration, onClose) {
          return notice(content, duration, 'warning', onClose);
      },
      error (content, duration, onClose) {
          return notice(content, duration, 'error', onClose);
      },
      loading (content, duration, onClose) {
          return notice(content, duration, 'loading', onClose);
      },
      config (options) {
          if (options.top) {
              top = options.top;
          }
          if (options.duration) {
              defaultDuration = options.duration;
          }
      }
  }