layout.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.default = exports.basicProps = exports.Header = exports.Footer = exports.Content = void 0;
  7. var _vue = require("vue");
  8. var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
  9. var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
  10. var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
  11. var _useConfigInject3 = _interopRequireDefault(require("../_util/hooks/useConfigInject"));
  12. var _injectionKey = require("./injectionKey");
  13. var basicProps = function basicProps() {
  14. return {
  15. prefixCls: String,
  16. hasSider: {
  17. type: Boolean,
  18. default: undefined
  19. },
  20. tagName: String
  21. };
  22. };
  23. exports.basicProps = basicProps;
  24. function generator(_ref) {
  25. var suffixCls = _ref.suffixCls,
  26. tagName = _ref.tagName,
  27. name = _ref.name;
  28. return function (BasicComponent) {
  29. var Adapter = (0, _vue.defineComponent)({
  30. compatConfig: {
  31. MODE: 3
  32. },
  33. name: name,
  34. props: basicProps(),
  35. setup: function setup(props, _ref2) {
  36. var slots = _ref2.slots;
  37. var _useConfigInject = (0, _useConfigInject3.default)(suffixCls, props),
  38. prefixCls = _useConfigInject.prefixCls;
  39. return function () {
  40. var basicComponentProps = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, props), {}, {
  41. prefixCls: prefixCls.value,
  42. tagName: tagName
  43. });
  44. return (0, _vue.createVNode)(BasicComponent, basicComponentProps, slots);
  45. };
  46. }
  47. });
  48. return Adapter;
  49. };
  50. }
  51. var Basic = (0, _vue.defineComponent)({
  52. compatConfig: {
  53. MODE: 3
  54. },
  55. props: basicProps(),
  56. setup: function setup(props, _ref3) {
  57. var slots = _ref3.slots;
  58. return function () {
  59. return (0, _vue.createVNode)(props.tagName, {
  60. class: props.prefixCls
  61. }, slots);
  62. };
  63. }
  64. });
  65. var BasicLayout = (0, _vue.defineComponent)({
  66. compatConfig: {
  67. MODE: 3
  68. },
  69. props: basicProps(),
  70. setup: function setup(props, _ref4) {
  71. var slots = _ref4.slots;
  72. var _useConfigInject2 = (0, _useConfigInject3.default)('', props),
  73. direction = _useConfigInject2.direction;
  74. var siders = (0, _vue.ref)([]);
  75. var siderHookProvider = {
  76. addSider: function addSider(id) {
  77. siders.value = [].concat((0, _toConsumableArray2.default)(siders.value), [id]);
  78. },
  79. removeSider: function removeSider(id) {
  80. siders.value = siders.value.filter(function (currentId) {
  81. return currentId !== id;
  82. });
  83. }
  84. };
  85. (0, _vue.provide)(_injectionKey.SiderHookProviderKey, siderHookProvider);
  86. var divCls = (0, _vue.computed)(function () {
  87. var _ref5;
  88. var prefixCls = props.prefixCls,
  89. hasSider = props.hasSider;
  90. return _ref5 = {}, (0, _defineProperty2.default)(_ref5, "".concat(prefixCls), true), (0, _defineProperty2.default)(_ref5, "".concat(prefixCls, "-has-sider"), typeof hasSider === 'boolean' ? hasSider : siders.value.length > 0), (0, _defineProperty2.default)(_ref5, "".concat(prefixCls, "-rtl"), direction.value === 'rtl'), _ref5;
  91. });
  92. return function () {
  93. var tagName = props.tagName;
  94. return (0, _vue.createVNode)(tagName, {
  95. class: divCls.value
  96. }, slots);
  97. };
  98. }
  99. });
  100. var Layout = generator({
  101. suffixCls: 'layout',
  102. tagName: 'section',
  103. name: 'ALayout'
  104. })(BasicLayout);
  105. var Header = generator({
  106. suffixCls: 'layout-header',
  107. tagName: 'header',
  108. name: 'ALayoutHeader'
  109. })(Basic);
  110. exports.Header = Header;
  111. var Footer = generator({
  112. suffixCls: 'layout-footer',
  113. tagName: 'footer',
  114. name: 'ALayoutFooter'
  115. })(Basic);
  116. exports.Footer = Footer;
  117. var Content = generator({
  118. suffixCls: 'layout-content',
  119. tagName: 'main',
  120. name: 'ALayoutContent'
  121. })(Basic);
  122. exports.Content = Content;
  123. var _default = Layout;
  124. exports.default = _default;