index.tsx 817 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. import { PropType, defineComponent } from "vue";
  2. import styles from "./index.module.less";
  3. import TheIcon from "/src/components/The-icon";
  4. export default defineComponent({
  5. name: "TheBtn",
  6. props: {
  7. icon: {
  8. type: String,
  9. default: "",
  10. },
  11. name: {
  12. type: String,
  13. default: "",
  14. },
  15. showName: {
  16. type: Boolean,
  17. default: true,
  18. },
  19. active: {
  20. type: Boolean,
  21. default: false,
  22. },
  23. size: {
  24. type: Array as PropType<string[]>,
  25. default: ["1em", "1em"],
  26. }
  27. },
  28. setup(props) {
  29. return () => (
  30. <div class={[styles.btn, props.active && styles.active]} title={props.name}>
  31. <div class={styles.icon}>
  32. <TheIcon iconClassName={props.icon} size={props.size} />
  33. </div>
  34. {props.showName && <div class={styles.name}>{props.name}</div>}
  35. </div>
  36. );
  37. },
  38. });