index.vue 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <template>
  2. <table class="w-1/1 h-1/1 kvTable">
  3. <colgroup>
  4. <col class="kvKeyCol" />
  5. <col class="kvValueCol" />
  6. </colgroup>
  7. <tbody>
  8. <tr>
  9. <td class="kvKey kvKeyValue" colspan="1">{{ props.label }}</td>
  10. <td class="kvValue kvKeyValue" colspan="1">{{ props.value }}</td>
  11. </tr>
  12. </tbody>
  13. </table>
  14. </template>
  15. <script setup lang="ts">
  16. const props = defineProps({
  17. fontFamily: {
  18. type: String,
  19. default: ''
  20. },
  21. fontSize: {
  22. type: Number,
  23. default: 15
  24. },
  25. label: {
  26. type: String,
  27. default: ''
  28. },
  29. labelWidth: {
  30. type: Number,
  31. default: 50
  32. },
  33. value: {
  34. type: String,
  35. default: ''
  36. },
  37. valueWidth: {
  38. type: Number,
  39. default: 50
  40. },
  41. color: {
  42. type: String,
  43. default: ''
  44. },
  45. border: {
  46. type: Boolean,
  47. default: true
  48. },
  49. borderColor: {
  50. type: String,
  51. default: ''
  52. }
  53. })
  54. </script>
  55. <style scoped>
  56. .kvTable {
  57. border: v-bind('`${props.border?1:0}px solid ${props.borderColor}`');
  58. table-layout: fixed;
  59. border-collapse: collapse;
  60. }
  61. .kvKeyCol {
  62. width: v-bind('`${props.labelWidth}px`');
  63. }
  64. .kvValueCol {
  65. width: v-bind('`${props.valueWidth}px`');
  66. }
  67. .kvKeyValue {
  68. font-family: v-bind('`${props.fontFamily}`');
  69. font-size: v-bind('`${props.fontSize}px`');
  70. color: v-bind('`${props.color}`');
  71. overflow: hidden;
  72. white-space: nowrap;
  73. text-overflow: ellipsis;
  74. }
  75. .kvKey {
  76. border-right: v-bind('`${props.border?1:0}px`') solid v-bind('`${props.borderColor}`') !important;
  77. }
  78. </style>