SliderLeft.tsx 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. import { useEditor } from "@/modules/editor";
  2. import { ICompKeys } from "@/modules/editor/typings";
  3. import { Radio } from "ant-design-vue";
  4. import { defineUI } from "queenjs";
  5. import { Container, Draggable } from "vue-dndrop";
  6. import { css } from "@linaria/core";
  7. import * as basicUI from "../../CompUI/basicUI";
  8. import * as customUI from "../../CompUI/customUI";
  9. import { CompCtrl } from "../../CompUI/CompController";
  10. export default defineUI({
  11. setup() {
  12. const editor = useEditor();
  13. return () => (
  14. <div class="h-full flex flex-col">
  15. <div class="p-16px border-bottom !border-2px">资源中心</div>
  16. <div class="m-16px flex-1 flex flex-col h-0">
  17. <Radio.Group>
  18. <Radio.Button>模板</Radio.Button>
  19. <Radio.Button>组件</Radio.Button>
  20. </Radio.Group>
  21. <div class="text-16px font-bold my-16px">基础组件</div>
  22. <Container
  23. class={basicStyle}
  24. orientation="horizontal"
  25. behaviour="copy"
  26. group-name="canvas"
  27. get-child-payload={(index: number) => {
  28. return Object.keys(basicUI)[index];
  29. }}
  30. >
  31. {Object.entries(basicUI).map(([compKey]) => {
  32. const ComType = CompCtrl.getCompType(compKey) as any;
  33. return (
  34. <Draggable key={compKey}>
  35. <div
  36. class="draggable-item text-center"
  37. onClick={() =>
  38. editor.actions.addCompToDesign(compKey as ICompKeys)
  39. }
  40. >
  41. <img
  42. class="w-full rounded-2px pointer-events-none"
  43. src={ComType.thumbnail}
  44. alt="封面图"
  45. />
  46. {ComType.name}
  47. </div>
  48. </Draggable>
  49. );
  50. })}
  51. </Container>
  52. <div class="text-16px font-bold my-16px">模块组件</div>
  53. <Container
  54. class="-mx-16px p-16px space-y-10px flex-1 scrollbar"
  55. behaviour="copy"
  56. group-name="canvas"
  57. get-child-payload={(index: number) => {
  58. return Object.keys(customUI)[index];
  59. }}
  60. >
  61. {Object.entries(customUI).map(([compKey]) => {
  62. const ComType = CompCtrl.getCompType(compKey) as any;
  63. return (
  64. <Draggable>
  65. <div
  66. class="text-center leading-50px bg-dark-50 rounded draggable-item"
  67. key={compKey}
  68. onClick={() =>
  69. editor.actions.addCompToDesign(compKey as ICompKeys)
  70. }
  71. >
  72. <img
  73. class="w-full rounded pointer-events-none"
  74. src={ ComType.thumbnail }
  75. alt="封面图"
  76. />
  77. {/* {ComType.name} */}
  78. </div>
  79. </Draggable>
  80. );
  81. })}
  82. </Container>
  83. </div>
  84. </div>
  85. );
  86. },
  87. });
  88. const basicStyle = css`
  89. margin: -10px;
  90. border-spacing: 10px;
  91. `;