button-group.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
  2. import { createVNode as _createVNode } from "vue";
  3. import { computed, defineComponent } from 'vue';
  4. import { flattenChildren } from '../_util/props-util';
  5. import useConfigInject from '../_util/hooks/useConfigInject';
  6. import UnreachableException from '../_util/unreachableException';
  7. export var buttonGroupProps = function buttonGroupProps() {
  8. return {
  9. prefixCls: String,
  10. size: {
  11. type: String
  12. }
  13. };
  14. };
  15. export default defineComponent({
  16. compatConfig: {
  17. MODE: 3
  18. },
  19. name: 'AButtonGroup',
  20. props: buttonGroupProps(),
  21. setup: function setup(props, _ref) {
  22. var slots = _ref.slots;
  23. var _useConfigInject = useConfigInject('btn-group', props),
  24. prefixCls = _useConfigInject.prefixCls,
  25. direction = _useConfigInject.direction;
  26. var classes = computed(function () {
  27. var _ref2;
  28. var size = props.size;
  29. // large => lg
  30. // small => sm
  31. var sizeCls = '';
  32. switch (size) {
  33. case 'large':
  34. sizeCls = 'lg';
  35. break;
  36. case 'small':
  37. sizeCls = 'sm';
  38. break;
  39. case 'middle':
  40. case undefined:
  41. break;
  42. default:
  43. // eslint-disable-next-line no-console
  44. console.warn(new UnreachableException(size).error);
  45. }
  46. return _ref2 = {}, _defineProperty(_ref2, "".concat(prefixCls.value), true), _defineProperty(_ref2, "".concat(prefixCls.value, "-").concat(sizeCls), sizeCls), _defineProperty(_ref2, "".concat(prefixCls.value, "-rtl"), direction.value === 'rtl'), _ref2;
  47. });
  48. return function () {
  49. var _slots$default;
  50. return _createVNode("div", {
  51. "class": classes.value
  52. }, [flattenChildren((_slots$default = slots.default) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots))]);
  53. };
  54. }
  55. });