index.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. 'use strict';
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.ResultProps = exports.ExceptionMap = exports.IconMap = undefined;
  6. var _vueTypes = require('../_util/vue-types');
  7. var _vueTypes2 = _interopRequireDefault(_vueTypes);
  8. var _propsUtil = require('../_util/props-util');
  9. var _configConsumerProps = require('../config-provider/configConsumerProps');
  10. var _icon = require('../icon');
  11. var _icon2 = _interopRequireDefault(_icon);
  12. var _base = require('../base');
  13. var _base2 = _interopRequireDefault(_base);
  14. var _noFound = require('./noFound');
  15. var _noFound2 = _interopRequireDefault(_noFound);
  16. var _serverError = require('./serverError');
  17. var _serverError2 = _interopRequireDefault(_serverError);
  18. var _unauthorized = require('./unauthorized');
  19. var _unauthorized2 = _interopRequireDefault(_unauthorized);
  20. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
  21. var IconMap = exports.IconMap = {
  22. success: 'check-circle',
  23. error: 'close-circle',
  24. info: 'exclamation-circle',
  25. warning: 'warning'
  26. };
  27. var ExceptionMap = exports.ExceptionMap = {
  28. '404': _noFound2['default'],
  29. '500': _serverError2['default'],
  30. '403': _unauthorized2['default']
  31. };
  32. // ExceptionImageMap keys
  33. var ExceptionStatus = Object.keys(ExceptionMap);
  34. var ResultProps = exports.ResultProps = {
  35. prefixCls: _vueTypes2['default'].string,
  36. icon: _vueTypes2['default'].any,
  37. status: _vueTypes2['default'].oneOf(['success', 'error', 'info', 'warning', '404', '403', '500']).def('info'),
  38. title: _vueTypes2['default'].any,
  39. subTitle: _vueTypes2['default'].any,
  40. extra: _vueTypes2['default'].any
  41. };
  42. var renderIcon = function renderIcon(h, prefixCls, _ref) {
  43. var status = _ref.status,
  44. icon = _ref.icon;
  45. if (ExceptionStatus.includes('' + status)) {
  46. var SVGComponent = ExceptionMap[status];
  47. return h(
  48. 'div',
  49. { 'class': prefixCls + '-icon ' + prefixCls + '-image' },
  50. [h(SVGComponent)]
  51. );
  52. }
  53. // prop `icon` require slot or VNode
  54. var iconString = IconMap[status];
  55. var iconNode = icon || h(_icon2['default'], {
  56. attrs: { type: iconString, theme: 'filled' }
  57. });
  58. return h(
  59. 'div',
  60. { 'class': prefixCls + '-icon' },
  61. [iconNode]
  62. );
  63. };
  64. var renderExtra = function renderExtra(h, prefixCls, extra) {
  65. return extra && h(
  66. 'div',
  67. { 'class': prefixCls + '-extra' },
  68. [extra]
  69. );
  70. };
  71. var Result = {
  72. name: 'AResult',
  73. props: ResultProps,
  74. inject: {
  75. configProvider: { 'default': function _default() {
  76. return _configConsumerProps.ConfigConsumerProps;
  77. } }
  78. },
  79. render: function render(h) {
  80. var customizePrefixCls = this.prefixCls,
  81. status = this.status;
  82. var getPrefixCls = this.configProvider.getPrefixCls;
  83. var prefixCls = getPrefixCls('result', customizePrefixCls);
  84. var title = (0, _propsUtil.getComponentFromProp)(this, 'title');
  85. var subTitle = (0, _propsUtil.getComponentFromProp)(this, 'subTitle');
  86. var icon = (0, _propsUtil.getComponentFromProp)(this, 'icon');
  87. var extra = (0, _propsUtil.getComponentFromProp)(this, 'extra');
  88. return h(
  89. 'div',
  90. { 'class': prefixCls + ' ' + prefixCls + '-' + status },
  91. [renderIcon(h, prefixCls, { status: status, icon: icon }), h(
  92. 'div',
  93. { 'class': prefixCls + '-title' },
  94. [title]
  95. ), subTitle && h(
  96. 'div',
  97. { 'class': prefixCls + '-subtitle' },
  98. [subTitle]
  99. ), this.$slots['default'] && h(
  100. 'div',
  101. { 'class': prefixCls + '-content' },
  102. [this.$slots['default']]
  103. ), renderExtra(h, prefixCls, extra)]
  104. );
  105. }
  106. };
  107. /* add resource */
  108. Result.PRESENTED_IMAGE_403 = ExceptionMap[403];
  109. Result.PRESENTED_IMAGE_404 = ExceptionMap[404];
  110. Result.PRESENTED_IMAGE_500 = ExceptionMap[500];
  111. /* istanbul ignore next */
  112. Result.install = function (Vue) {
  113. Vue.use(_base2['default']);
  114. Vue.component(Result.name, Result);
  115. };
  116. exports['default'] = Result;