layout.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. 'use strict';
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.BasicProps = undefined;
  6. var _defineProperty2 = require('babel-runtime/helpers/defineProperty');
  7. var _defineProperty3 = _interopRequireDefault(_defineProperty2);
  8. var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');
  9. var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);
  10. var _extends2 = require('babel-runtime/helpers/extends');
  11. var _extends3 = _interopRequireDefault(_extends2);
  12. var _vueTypes = require('../_util/vue-types');
  13. var _vueTypes2 = _interopRequireDefault(_vueTypes);
  14. var _classnames = require('classnames');
  15. var _classnames2 = _interopRequireDefault(_classnames);
  16. var _propsUtil = require('../_util/props-util');
  17. var _configConsumerProps = require('../config-provider/configConsumerProps');
  18. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
  19. var BasicProps = exports.BasicProps = {
  20. prefixCls: _vueTypes2['default'].string,
  21. hasSider: _vueTypes2['default'].boolean,
  22. tagName: _vueTypes2['default'].string
  23. };
  24. function generator(_ref) {
  25. var suffixCls = _ref.suffixCls,
  26. tagName = _ref.tagName,
  27. name = _ref.name;
  28. return function (BasicComponent) {
  29. return {
  30. name: name,
  31. props: BasicComponent.props,
  32. inject: {
  33. configProvider: { 'default': function _default() {
  34. return _configConsumerProps.ConfigConsumerProps;
  35. } }
  36. },
  37. render: function render() {
  38. var h = arguments[0];
  39. var customizePrefixCls = this.$props.prefixCls;
  40. var getPrefixCls = this.configProvider.getPrefixCls;
  41. var prefixCls = getPrefixCls(suffixCls, customizePrefixCls);
  42. var basicComponentProps = {
  43. props: (0, _extends3['default'])({
  44. prefixCls: prefixCls
  45. }, (0, _propsUtil.getOptionProps)(this), {
  46. tagName: tagName
  47. }),
  48. on: (0, _propsUtil.getListeners)(this)
  49. };
  50. return h(
  51. BasicComponent,
  52. basicComponentProps,
  53. [this.$slots['default']]
  54. );
  55. }
  56. };
  57. };
  58. }
  59. var Basic = {
  60. props: BasicProps,
  61. render: function render() {
  62. var h = arguments[0];
  63. var prefixCls = this.prefixCls,
  64. Tag = this.tagName,
  65. $slots = this.$slots;
  66. var divProps = {
  67. 'class': prefixCls,
  68. on: (0, _propsUtil.getListeners)(this)
  69. };
  70. return h(
  71. Tag,
  72. divProps,
  73. [$slots['default']]
  74. );
  75. }
  76. };
  77. var BasicLayout = {
  78. props: BasicProps,
  79. data: function data() {
  80. return {
  81. siders: []
  82. };
  83. },
  84. provide: function provide() {
  85. var _this = this;
  86. return {
  87. siderHook: {
  88. addSider: function addSider(id) {
  89. _this.siders = [].concat((0, _toConsumableArray3['default'])(_this.siders), [id]);
  90. },
  91. removeSider: function removeSider(id) {
  92. _this.siders = _this.siders.filter(function (currentId) {
  93. return currentId !== id;
  94. });
  95. }
  96. }
  97. };
  98. },
  99. render: function render() {
  100. var h = arguments[0];
  101. var prefixCls = this.prefixCls,
  102. $slots = this.$slots,
  103. hasSider = this.hasSider,
  104. Tag = this.tagName;
  105. var divCls = (0, _classnames2['default'])(prefixCls, (0, _defineProperty3['default'])({}, prefixCls + '-has-sider', typeof hasSider === 'boolean' ? hasSider : this.siders.length > 0));
  106. var divProps = {
  107. 'class': divCls,
  108. on: _propsUtil.getListeners
  109. };
  110. return h(
  111. Tag,
  112. divProps,
  113. [$slots['default']]
  114. );
  115. }
  116. };
  117. var Layout = generator({
  118. suffixCls: 'layout',
  119. tagName: 'section',
  120. name: 'ALayout'
  121. })(BasicLayout);
  122. var Header = generator({
  123. suffixCls: 'layout-header',
  124. tagName: 'header',
  125. name: 'ALayoutHeader'
  126. })(Basic);
  127. var Footer = generator({
  128. suffixCls: 'layout-footer',
  129. tagName: 'footer',
  130. name: 'ALayoutFooter'
  131. })(Basic);
  132. var Content = generator({
  133. suffixCls: 'layout-content',
  134. tagName: 'main',
  135. name: 'ALayoutContent'
  136. })(Basic);
  137. Layout.Header = Header;
  138. Layout.Footer = Footer;
  139. Layout.Content = Content;
  140. exports['default'] = Layout;