Button.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
  2. import _extends from "@babel/runtime/helpers/esm/extends";
  3. import { createVNode as _createVNode } from "vue";
  4. import { computed, defineComponent } from 'vue';
  5. import classNames from '../_util/classNames';
  6. import useConfigInject from '../config-provider/hooks/useConfigInject';
  7. import { initDefaultProps } from '../_util/props-util';
  8. import Element, { skeletonElementProps } from './Element';
  9. import useStyle from './style';
  10. export const skeletonButtonProps = () => {
  11. return _extends(_extends({}, skeletonElementProps()), {
  12. size: String,
  13. block: Boolean
  14. });
  15. };
  16. const SkeletonButton = defineComponent({
  17. compatConfig: {
  18. MODE: 3
  19. },
  20. name: 'ASkeletonButton',
  21. props: initDefaultProps(skeletonButtonProps(), {
  22. size: 'default'
  23. }),
  24. setup(props) {
  25. const {
  26. prefixCls
  27. } = useConfigInject('skeleton', props);
  28. const [wrapSSR, hashId] = useStyle(prefixCls);
  29. const cls = computed(() => classNames(prefixCls.value, `${prefixCls.value}-element`, {
  30. [`${prefixCls.value}-active`]: props.active,
  31. [`${prefixCls.value}-block`]: props.block
  32. }, hashId.value));
  33. return () => {
  34. return wrapSSR(_createVNode("div", {
  35. "class": cls.value
  36. }, [_createVNode(Element, _objectSpread(_objectSpread({}, props), {}, {
  37. "prefixCls": `${prefixCls.value}-button`
  38. }), null)]));
  39. };
  40. }
  41. });
  42. export default SkeletonButton;