@cynnie/ui-shadcn 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/README.md +49 -0
  2. package/dist/Checkbox-DswwIgpU.js +38 -0
  3. package/dist/Checkbox-DswwIgpU.js.map +1 -0
  4. package/dist/DialogTitle-CCJNart2.js +107 -0
  5. package/dist/DialogTitle-CCJNart2.js.map +1 -0
  6. package/dist/Input-BQYIq9cS.js +24 -0
  7. package/dist/Input-BQYIq9cS.js.map +1 -0
  8. package/dist/Loader-DZyMmrI8.js +19 -0
  9. package/dist/Loader-DZyMmrI8.js.map +1 -0
  10. package/dist/ProButton-BQWpTTCy.js +84 -0
  11. package/dist/ProButton-BQWpTTCy.js.map +1 -0
  12. package/dist/ProCheckboxGroup-DX6c9gx-.js +71 -0
  13. package/dist/ProCheckboxGroup-DX6c9gx-.js.map +1 -0
  14. package/dist/ProConfirmButton-zcvp7NcN.js +175 -0
  15. package/dist/ProConfirmButton-zcvp7NcN.js.map +1 -0
  16. package/dist/ProDescriptions-B1znLzkY.js +45 -0
  17. package/dist/ProDescriptions-B1znLzkY.js.map +1 -0
  18. package/dist/ProFormBuilder-CsNShZ0y.js +1138 -0
  19. package/dist/ProFormBuilder-CsNShZ0y.js.map +1 -0
  20. package/dist/ProInput-D20F1Xx-.js +91 -0
  21. package/dist/ProInput-D20F1Xx-.js.map +1 -0
  22. package/dist/ProModal-DsIFQ8y5.js +109 -0
  23. package/dist/ProModal-DsIFQ8y5.js.map +1 -0
  24. package/dist/ProRadioGroup-CTxqLQjw.js +138 -0
  25. package/dist/ProRadioGroup-CTxqLQjw.js.map +1 -0
  26. package/dist/ProSelect-DT0zjDjT.js +90 -0
  27. package/dist/ProSelect-DT0zjDjT.js.map +1 -0
  28. package/dist/ProTable-CP1Mc52q.js +349 -0
  29. package/dist/ProTable-CP1Mc52q.js.map +1 -0
  30. package/dist/SelectValue-CWl9zUW3.js +163 -0
  31. package/dist/SelectValue-CWl9zUW3.js.map +1 -0
  32. package/dist/button-BQVT6mY3.js +60 -0
  33. package/dist/button-BQVT6mY3.js.map +1 -0
  34. package/dist/components/ProButton/ProCountdownButton.vue.d.ts +28 -0
  35. package/dist/components/ProButton/index.js +2 -0
  36. package/dist/components/ProButton/index.vue.d.ts +31 -0
  37. package/dist/components/ProCheckboxGroup/index.js +2 -0
  38. package/dist/components/ProCheckboxGroup/index.vue.d.ts +18 -0
  39. package/dist/components/ProConfirmButton/index.js +2 -0
  40. package/dist/components/ProConfirmButton/index.vue.d.ts +43 -0
  41. package/dist/components/ProDescriptions/index.js +2 -0
  42. package/dist/components/ProDescriptions/index.vue.d.ts +40 -0
  43. package/dist/components/ProFormBuilder/index.js +2 -0
  44. package/dist/components/ProFormBuilder/index.vue.d.ts +43 -0
  45. package/dist/components/ProInput/index.js +2 -0
  46. package/dist/components/ProInput/index.vue.d.ts +27 -0
  47. package/dist/components/ProModal/index.js +2 -0
  48. package/dist/components/ProModal/index.vue.d.ts +45 -0
  49. package/dist/components/ProRadioGroup/index.js +2 -0
  50. package/dist/components/ProRadioGroup/index.vue.d.ts +20 -0
  51. package/dist/components/ProSelect/index.js +2 -0
  52. package/dist/components/ProSelect/index.vue.d.ts +28 -0
  53. package/dist/components/ProTable/ProTableForm.vue.d.ts +91 -0
  54. package/dist/components/ProTable/index.js +2 -0
  55. package/dist/components/ProTable/index.vue.d.ts +36 -0
  56. package/dist/components/index.d.ts +12 -0
  57. package/dist/components/ui/alert/Alert.vue.d.ts +22 -0
  58. package/dist/components/ui/alert/index.d.ts +6 -0
  59. package/dist/components/ui/button/Button.vue.d.ts +27 -0
  60. package/dist/components/ui/button/index.d.ts +7 -0
  61. package/dist/components/ui/checkbox/Checkbox.vue.d.ts +11 -0
  62. package/dist/components/ui/checkbox/index.d.ts +1 -0
  63. package/dist/components/ui/dialog/Dialog.vue.d.ts +22 -0
  64. package/dist/components/ui/dialog/DialogClose.vue.d.ts +18 -0
  65. package/dist/components/ui/dialog/DialogContent.vue.d.ts +36 -0
  66. package/dist/components/ui/dialog/DialogDescription.vue.d.ts +22 -0
  67. package/dist/components/ui/dialog/DialogFooter.vue.d.ts +21 -0
  68. package/dist/components/ui/dialog/DialogHeader.vue.d.ts +21 -0
  69. package/dist/components/ui/dialog/DialogTitle.vue.d.ts +22 -0
  70. package/dist/components/ui/dialog/DialogTrigger.vue.d.ts +18 -0
  71. package/dist/components/ui/dialog/index.d.ts +8 -0
  72. package/dist/components/ui/index.d.ts +12 -0
  73. package/dist/components/ui/input/Input.vue.d.ts +13 -0
  74. package/dist/components/ui/input/index.d.ts +1 -0
  75. package/dist/components/ui/label/Label.vue.d.ts +24 -0
  76. package/dist/components/ui/label/index.d.ts +1 -0
  77. package/dist/components/ui/loader/Loader.vue.d.ts +6 -0
  78. package/dist/components/ui/loader/index.d.ts +1 -0
  79. package/dist/components/ui/popover/Popover.vue.d.ts +22 -0
  80. package/dist/components/ui/popover/PopoverContent.vue.d.ts +38 -0
  81. package/dist/components/ui/popover/PopoverTrigger.vue.d.ts +18 -0
  82. package/dist/components/ui/popover/index.d.ts +3 -0
  83. package/dist/components/ui/radio-group/RadioGroup.vue.d.ts +22 -0
  84. package/dist/components/ui/radio-group/RadioGroupItem.vue.d.ts +7 -0
  85. package/dist/components/ui/radio-group/index.d.ts +2 -0
  86. package/dist/components/ui/select/Select.vue.d.ts +19 -0
  87. package/dist/components/ui/select/SelectContent.vue.d.ts +32 -0
  88. package/dist/components/ui/select/SelectItem.vue.d.ts +22 -0
  89. package/dist/components/ui/select/SelectTrigger.vue.d.ts +21 -0
  90. package/dist/components/ui/select/SelectValue.vue.d.ts +21 -0
  91. package/dist/components/ui/select/index.d.ts +5 -0
  92. package/dist/components/ui/table/Table.vue.d.ts +21 -0
  93. package/dist/components/ui/table/TableBody.vue.d.ts +21 -0
  94. package/dist/components/ui/table/TableCell.vue.d.ts +21 -0
  95. package/dist/components/ui/table/TableHead.vue.d.ts +21 -0
  96. package/dist/components/ui/table/TableHeader.vue.d.ts +21 -0
  97. package/dist/components/ui/table/TableRow.vue.d.ts +21 -0
  98. package/dist/components/ui/table/index.d.ts +6 -0
  99. package/dist/components/ui/textarea/Textarea.vue.d.ts +13 -0
  100. package/dist/components/ui/textarea/index.d.ts +1 -0
  101. package/dist/index.d.ts +8 -0
  102. package/dist/index.js +65 -0
  103. package/dist/index.js.map +1 -0
  104. package/dist/lib/utils.d.ts +3 -0
  105. package/dist/openDialog-CVp3qAfm.js +95 -0
  106. package/dist/openDialog-CVp3qAfm.js.map +1 -0
  107. package/dist/utils/openDialog.d.ts +25 -0
  108. package/dist/utils/openDialog.js +2 -0
  109. package/dist/utils/uiMessage.d.ts +8 -0
  110. package/dist/utils-Dg1mr-yh.js +8 -0
  111. package/dist/utils-Dg1mr-yh.js.map +1 -0
  112. package/package.json +108 -0
  113. package/src/style.css +14 -0
  114. package/src/tailwind.preset.css +139 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProConfirmButton-zcvp7NcN.js","names":["$attrs","title","cancelText","danger","okText"],"sources":["../src/components/ui/popover/Popover.vue","../src/components/ui/popover/Popover.vue","../src/components/ui/popover/PopoverContent.vue","../src/components/ui/popover/PopoverContent.vue","../src/components/ui/popover/PopoverTrigger.vue","../src/components/ui/popover/PopoverTrigger.vue","../src/components/ProConfirmButton/index.vue","../src/components/ProConfirmButton/index.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { PopoverRoot, type PopoverRootEmits, type PopoverRootProps, useForwardPropsEmits } from \"reka-ui\";\n\nconst props = defineProps<PopoverRootProps>();\nconst emits = defineEmits<PopoverRootEmits>();\n\nconst forwarded = useForwardPropsEmits(props, emits);\n</script>\n\n<template>\n <PopoverRoot data-slot=\"popover\" v-bind=\"forwarded\">\n <slot />\n </PopoverRoot>\n</template>\n","<script lang=\"ts\" setup>\nimport { PopoverRoot, type PopoverRootEmits, type PopoverRootProps, useForwardPropsEmits } from \"reka-ui\";\n\nconst props = defineProps<PopoverRootProps>();\nconst emits = defineEmits<PopoverRootEmits>();\n\nconst forwarded = useForwardPropsEmits(props, emits);\n</script>\n\n<template>\n <PopoverRoot data-slot=\"popover\" v-bind=\"forwarded\">\n <slot />\n </PopoverRoot>\n</template>\n","<script lang=\"ts\" setup>\nimport type { HTMLAttributes } from \"vue\";\nimport { PopoverContent, type PopoverContentEmits, type PopoverContentProps, PopoverPortal, useForwardPropsEmits } from \"reka-ui\";\nimport { cn } from \"../../../lib/utils\";\n\nconst props = withDefaults(defineProps<PopoverContentProps & { class?: HTMLAttributes[\"class\"] }>(), {\n sideOffset: 4,\n});\nconst emits = defineEmits<PopoverContentEmits>();\n\nconst delegatedProps = useForwardPropsEmits(props, emits);\n</script>\n\n<template>\n <PopoverPortal>\n <PopoverContent\n data-slot=\"popover-content\"\n v-bind=\"delegatedProps\"\n :class=\"\n cn(\n 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-[1100] w-72 origin-(--reka-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden',\n props.class,\n )\n \"\n >\n <slot />\n </PopoverContent>\n </PopoverPortal>\n</template>\n","<script lang=\"ts\" setup>\nimport type { HTMLAttributes } from \"vue\";\nimport { PopoverContent, type PopoverContentEmits, type PopoverContentProps, PopoverPortal, useForwardPropsEmits } from \"reka-ui\";\nimport { cn } from \"../../../lib/utils\";\n\nconst props = withDefaults(defineProps<PopoverContentProps & { class?: HTMLAttributes[\"class\"] }>(), {\n sideOffset: 4,\n});\nconst emits = defineEmits<PopoverContentEmits>();\n\nconst delegatedProps = useForwardPropsEmits(props, emits);\n</script>\n\n<template>\n <PopoverPortal>\n <PopoverContent\n data-slot=\"popover-content\"\n v-bind=\"delegatedProps\"\n :class=\"\n cn(\n 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-[1100] w-72 origin-(--reka-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden',\n props.class,\n )\n \"\n >\n <slot />\n </PopoverContent>\n </PopoverPortal>\n</template>\n","<script lang=\"ts\" setup>\nimport { PopoverTrigger, type PopoverTriggerProps } from \"reka-ui\";\n\nconst props = defineProps<PopoverTriggerProps>();\n</script>\n\n<template>\n <PopoverTrigger data-slot=\"popover-trigger\" v-bind=\"props\">\n <slot />\n </PopoverTrigger>\n</template>\n","<script lang=\"ts\" setup>\nimport { PopoverTrigger, type PopoverTriggerProps } from \"reka-ui\";\n\nconst props = defineProps<PopoverTriggerProps>();\n</script>\n\n<template>\n <PopoverTrigger data-slot=\"popover-trigger\" v-bind=\"props\">\n <slot />\n </PopoverTrigger>\n</template>\n","<script lang=\"ts\">\nimport { CircleAlertIcon } from \"lucide-vue-next\";\nexport default { components: { CircleAlertIcon } };\n</script>\n\n<script setup lang=\"ts\">\nimport { ref } from \"vue\";\nimport { Button } from \"../ui/button\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../ui/popover\";\nimport { Loader } from \"../ui/loader\";\n\ndefineOptions({\n name: \"ProConfirmButton\",\n inheritAttrs: false,\n});\n\nconst props = withDefaults(\n defineProps<{\n /** 气泡确认框标题 */\n title?: string;\n /** 确认执行函数:返回 Promise 时确认按钮自动进入 loading */\n onConfirm?: () => Promise<any> | any;\n /** 按钮风格,对齐 antd 的 type */\n type?: \"primary\" | \"default\" | \"dashed\" | \"text\" | \"link\";\n /** 危险按钮(红色) */\n danger?: boolean;\n /** 确认按钮文案 */\n okText?: string;\n /** 取消按钮文案 */\n cancelText?: string;\n }>(),\n {\n title: \"确定执行此操作吗?\",\n type: \"default\",\n danger: false,\n okText: \"确 定\",\n cancelText: \"取 消\",\n },\n);\n\nconst isLoading = ref(false);\nconst popOpen = ref(false);\n\nconst variant = props.danger ? \"destructive\" : props.type === \"primary\" ? \"default\" : \"outline\";\n\nasync function handleConfirm() {\n if (!props.onConfirm) {\n popOpen.value = false;\n return;\n }\n const result = props.onConfirm();\n if (result instanceof Promise) {\n isLoading.value = true;\n try {\n await result;\n } finally {\n isLoading.value = false;\n popOpen.value = false;\n }\n } else {\n popOpen.value = false;\n }\n}\n</script>\n\n<template>\n <Popover v-model:open=\"popOpen\">\n <PopoverTrigger as-child>\n <Button :variant=\"variant\" v-bind=\"{ ...$attrs, class: undefined }\" :class=\"($attrs.class as any)\">\n <slot></slot>\n </Button>\n </PopoverTrigger>\n <PopoverContent class=\"w-auto max-w-[280px] p-4\">\n <div class=\"flex items-start gap-2\">\n <CircleAlertIcon class=\"mt-0.5 size-4 text-amber-500 shrink-0\" />\n <div class=\"text-sm\">{{ title }}</div>\n </div>\n <div class=\"mt-4 flex justify-end gap-2\">\n <Button size=\"sm\" variant=\"outline\" @click=\"popOpen = false\">{{ cancelText }}</Button>\n <Button size=\"sm\" :variant=\"danger ? 'destructive' : 'default'\" :disabled=\"isLoading || undefined\" @click=\"handleConfirm\">\n <Loader v-if=\"isLoading\" class=\"text-current\" />\n {{ okText }}\n </Button>\n </div>\n </PopoverContent>\n </Popover>\n</template>\n","<script lang=\"ts\">\nimport { CircleAlertIcon } from \"lucide-vue-next\";\nexport default { components: { CircleAlertIcon } };\n</script>\n\n<script setup lang=\"ts\">\nimport { ref } from \"vue\";\nimport { Button } from \"../ui/button\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../ui/popover\";\nimport { Loader } from \"../ui/loader\";\n\ndefineOptions({\n name: \"ProConfirmButton\",\n inheritAttrs: false,\n});\n\nconst props = withDefaults(\n defineProps<{\n /** 气泡确认框标题 */\n title?: string;\n /** 确认执行函数:返回 Promise 时确认按钮自动进入 loading */\n onConfirm?: () => Promise<any> | any;\n /** 按钮风格,对齐 antd 的 type */\n type?: \"primary\" | \"default\" | \"dashed\" | \"text\" | \"link\";\n /** 危险按钮(红色) */\n danger?: boolean;\n /** 确认按钮文案 */\n okText?: string;\n /** 取消按钮文案 */\n cancelText?: string;\n }>(),\n {\n title: \"确定执行此操作吗?\",\n type: \"default\",\n danger: false,\n okText: \"确 定\",\n cancelText: \"取 消\",\n },\n);\n\nconst isLoading = ref(false);\nconst popOpen = ref(false);\n\nconst variant = props.danger ? \"destructive\" : props.type === \"primary\" ? \"default\" : \"outline\";\n\nasync function handleConfirm() {\n if (!props.onConfirm) {\n popOpen.value = false;\n return;\n }\n const result = props.onConfirm();\n if (result instanceof Promise) {\n isLoading.value = true;\n try {\n await result;\n } finally {\n isLoading.value = false;\n popOpen.value = false;\n }\n } else {\n popOpen.value = false;\n }\n}\n</script>\n\n<template>\n <Popover v-model:open=\"popOpen\">\n <PopoverTrigger as-child>\n <Button :variant=\"variant\" v-bind=\"{ ...$attrs, class: undefined }\" :class=\"($attrs.class as any)\">\n <slot></slot>\n </Button>\n </PopoverTrigger>\n <PopoverContent class=\"w-auto max-w-[280px] p-4\">\n <div class=\"flex items-start gap-2\">\n <CircleAlertIcon class=\"mt-0.5 size-4 text-amber-500 shrink-0\" />\n <div class=\"text-sm\">{{ title }}</div>\n </div>\n <div class=\"mt-4 flex justify-end gap-2\">\n <Button size=\"sm\" variant=\"outline\" @click=\"popOpen = false\">{{ cancelText }}</Button>\n <Button size=\"sm\" :variant=\"danger ? 'destructive' : 'default'\" :disabled=\"isLoading || undefined\" @click=\"handleConfirm\">\n <Loader v-if=\"isLoading\" class=\"text-current\" />\n {{ okText }}\n </Button>\n </div>\n </PopoverContent>\n </Popover>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;ECMA,MAAM,YAAY,qBAHJ,SACA,OAEsC;;uBAIlD,YAEc,MAAA,YAAA,EAFd,WAEc,EAFD,aAAU,WAAS,EAAS,MAAA,UAAS,CAAA,EAAA;2BACxC,CAAR,WAAQ,KAAA,QAAA,UAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EENZ,MAAM,QAAQ;EAKd,MAAM,iBAAiB,qBAAqB,OAF9B,OAE2C;;uBAIvD,YAagB,MAAA,cAAA,EAAA,MAAA;2BADG,CAXjB,YAWiB,MAAA,eAAA,EAXjB,WAWiB,EAVf,aAAU,mBAAiB,EACnB,MAAA,eAAc,EAAA,EACrB,OAAgB,MAAA,GAAE,CAAA,qeAA2f,MAAM,MAAA,EAAA,CAAA,EAAA;4BAO5gB,CAAR,WAAQ,KAAA,QAAA,UAAA,CAAA,CAAA;;;;;;;;;;;;;;;EEtBd,MAAM,QAAQ;;uBAIZ,YAEiB,MAAA,eAAA,EAFjB,WAEiB,EAFD,aAAU,mBAAiB,EAAS,MAAK,EAAA;2BAC/C,CAAR,WAAQ,KAAA,QAAA,UAAA,CAAA,CAAA;;;;;;;;;;CENK,YAAY,EAAE,iBAAiB;;;;;;;;;;;;;;;;EAchD,MAAM,QAAQ;EAwBd,MAAM,YAAY,IAAI,MAAM;EAC5B,MAAM,UAAU,IAAI,MAAM;EAE1B,MAAM,UAAU,MAAM,SAAS,gBAAgB,MAAM,SAAS,YAAY,YAAY;EAEtF,eAAe,gBAAgB;AAC7B,OAAI,CAAC,MAAM,WAAW;AACpB,YAAQ,QAAQ;AAChB;;GAEF,MAAM,SAAS,MAAM,WAAW;AAChC,OAAI,kBAAkB,SAAS;AAC7B,cAAU,QAAQ;AAClB,QAAI;AACF,WAAM;cACE;AACR,eAAU,QAAQ;AAClB,aAAQ,QAAQ;;SAGlB,SAAQ,QAAQ;;;uBAMlB,YAmBU,MAAA,gBAAA,EAAA;IAnBO,MAAM,QAAA;mEAAO,QAAA;;2BAKX,CAJjB,YAIiB,MAAA,uBAAA,EAAA,EAJD,YAAA,IAAQ,EAAA;4BAGb,CAFT,YAES,MAAA,eAAA,EAFT,WAES,EAFA,SAAS,MAAA,QAAO,EAAA,EAAA;MAAA,GAAeA,KAAAA;MAAM,OAAS,KAAA;MAAS,EAAA,EAAK,OAAQA,KAAAA,OAAO,OAAA,CAAA,EAAA;6BACrE,CAAb,WAAa,KAAA,QAAA,UAAA,CAAA,CAAA;;;;QAGjB,YAYiB,MAAA,uBAAA,EAAA,EAZD,OAAM,4BAA0B,EAAA;4BAIxC,CAHN,mBAGM,OAHN,YAGM,CAFJ,YAAiE,MAAA,gBAAA,EAAA,EAAhD,OAAM,yCAAuC,CAAA,EAC9D,mBAAsC,OAAtC,YAAsC,gBAAdC,KAAAA,MAAK,EAAA,EAAA,CAAA,CAAA,EAE/B,mBAMM,OANN,YAMM,CALJ,YAAsF,MAAA,eAAA,EAAA;MAA9E,MAAK;MAAK,SAAQ;MAAW,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,QAAA,QAAO;;6BAA0B,CAAA,gBAAA,gBAAbC,KAAAA,WAAU,EAAA,EAAA,CAAA,CAAA;;SAC1E,YAGS,MAAA,eAAA,EAAA;MAHD,MAAK;MAAM,SAASC,KAAAA,SAAM,gBAAA;MAA+B,UAAU,UAAA,SAAa,KAAA;MAAY,SAAO;;6BACzD,CAAlC,UAAA,SAAA,WAAA,EAAd,YAAgD,MAAA,eAAA,EAAA;;OAAvB,OAAM;0DAAiB,MAChD,gBAAGC,KAAAA,OAAM,EAAA,EAAA,CAAA,CAAA"}
@@ -0,0 +1,45 @@
1
+ import { t as cn } from "./utils-Dg1mr-yh.js";
2
+ import { Fragment, computed, createElementBlock, createElementVNode, createTextVNode, defineComponent, mergeProps, normalizeClass, openBlock, renderList, renderSlot, toDisplayString, unref } from "vue";
3
+ var ProDescriptions_default = /* @__PURE__ */ defineComponent({
4
+ name: "ProDescriptions",
5
+ inheritAttrs: false,
6
+ __name: "index",
7
+ props: {
8
+ items: {},
9
+ data: {},
10
+ emptyText: {},
11
+ bordered: { type: Boolean },
12
+ column: {}
13
+ },
14
+ setup(__props) {
15
+ const props = __props;
16
+ const rows = computed(() => props.items.map((item) => ({
17
+ label: item.label,
18
+ value: renderValue(item)
19
+ })));
20
+ function renderValue(item) {
21
+ const value = props.data?.[item.key];
22
+ if (item.render) return item.render(value, props.data);
23
+ if (value === void 0 || value === null || value === "") return props.emptyText ?? "-";
24
+ return value;
25
+ }
26
+ return (_ctx, _cache) => {
27
+ return openBlock(), createElementBlock("div", mergeProps({
28
+ ..._ctx.$attrs,
29
+ class: void 0,
30
+ style: void 0
31
+ }, {
32
+ class: unref(cn)("grid gap-x-8 gap-y-0 text-sm", _ctx.$attrs.class),
33
+ style: _ctx.$attrs.style
34
+ }), [(openBlock(true), createElementBlock(Fragment, null, renderList(rows.value, (row) => {
35
+ return openBlock(), createElementBlock(Fragment, { key: row.label }, [createElementVNode("div", { class: normalizeClass(["py-3 text-muted-foreground text-sm", _ctx.bordered ? "border-b px-4 bg-muted/40" : "border-b"]) }, toDisplayString(row.label), 3), createElementVNode("div", { class: normalizeClass(["py-3 border-b", _ctx.bordered ? "px-4" : ""]) }, [renderSlot(_ctx.$slots, "value", {
36
+ label: row.label,
37
+ value: row.value
38
+ }, () => [createTextVNode(toDisplayString(row.value), 1)])], 2)], 64);
39
+ }), 128))], 16);
40
+ };
41
+ }
42
+ });
43
+ export { ProDescriptions_default as t };
44
+
45
+ //# sourceMappingURL=ProDescriptions-B1znLzkY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProDescriptions-B1znLzkY.js","names":["$attrs","bordered"],"sources":["../src/components/ProDescriptions/index.vue","../src/components/ProDescriptions/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport { cn } from \"../../lib/utils\";\n\ndefineOptions({\n name: \"ProDescriptions\",\n inheritAttrs: false,\n});\n\nexport interface DescriptionItem {\n /** 标签 */\n label: string;\n /** 字段名 */\n key: string;\n /** 自定义渲染,返回字符串或 vnode */\n render?: (value: any, record: Record<string, any>) => any;\n}\n\nconst props = defineProps<{\n /** 描述项配置 */\n items: DescriptionItem[];\n /** 数据对象 */\n data: Record<string, any>;\n /** 空值占位符 */\n emptyText?: string;\n /** 是否带边框(对齐 antd 的 bordered) */\n bordered?: boolean;\n /** 每行列数 */\n column?: string | number;\n}>();\n\nconst rows = computed(() =>\n props.items.map((item) => ({\n label: item.label,\n value: renderValue(item),\n })),\n);\n\nfunction renderValue(item: DescriptionItem) {\n const value = props.data?.[item.key];\n if (item.render) return item.render(value, props.data);\n if (value === undefined || value === null || value === \"\") return props.emptyText ?? \"-\";\n return value;\n}\n</script>\n\n<template>\n <div v-bind=\"{ ...$attrs, class: undefined, style: undefined }\" :class=\"cn('grid gap-x-8 gap-y-0 text-sm', ($attrs.class as any))\" :style=\"($attrs.style as any)\">\n <template v-for=\"row in rows\" :key=\"row.label\">\n <div\n class=\"py-3 text-muted-foreground text-sm\"\n :class=\"bordered ? 'border-b px-4 bg-muted/40' : 'border-b'\"\n >\n {{ row.label }}\n </div>\n <div class=\"py-3 border-b\" :class=\"bordered ? 'px-4' : ''\">\n <slot name=\"value\" :label=\"row.label\" :value=\"row.value\">\n {{ row.value }}\n </slot>\n </div>\n </template>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport { cn } from \"../../lib/utils\";\n\ndefineOptions({\n name: \"ProDescriptions\",\n inheritAttrs: false,\n});\n\nexport interface DescriptionItem {\n /** 标签 */\n label: string;\n /** 字段名 */\n key: string;\n /** 自定义渲染,返回字符串或 vnode */\n render?: (value: any, record: Record<string, any>) => any;\n}\n\nconst props = defineProps<{\n /** 描述项配置 */\n items: DescriptionItem[];\n /** 数据对象 */\n data: Record<string, any>;\n /** 空值占位符 */\n emptyText?: string;\n /** 是否带边框(对齐 antd 的 bordered) */\n bordered?: boolean;\n /** 每行列数 */\n column?: string | number;\n}>();\n\nconst rows = computed(() =>\n props.items.map((item) => ({\n label: item.label,\n value: renderValue(item),\n })),\n);\n\nfunction renderValue(item: DescriptionItem) {\n const value = props.data?.[item.key];\n if (item.render) return item.render(value, props.data);\n if (value === undefined || value === null || value === \"\") return props.emptyText ?? \"-\";\n return value;\n}\n</script>\n\n<template>\n <div v-bind=\"{ ...$attrs, class: undefined, style: undefined }\" :class=\"cn('grid gap-x-8 gap-y-0 text-sm', ($attrs.class as any))\" :style=\"($attrs.style as any)\">\n <template v-for=\"row in rows\" :key=\"row.label\">\n <div\n class=\"py-3 text-muted-foreground text-sm\"\n :class=\"bordered ? 'border-b px-4 bg-muted/40' : 'border-b'\"\n >\n {{ row.label }}\n </div>\n <div class=\"py-3 border-b\" :class=\"bordered ? 'px-4' : ''\">\n <slot name=\"value\" :label=\"row.label\" :value=\"row.value\">\n {{ row.value }}\n </slot>\n </div>\n </template>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;ECkBA,MAAM,QAAQ;EAad,MAAM,OAAO,eACX,MAAM,MAAM,KAAK,UAAU;GACzB,OAAO,KAAK;GACZ,OAAO,YAAY,KAAK;GACzB,EAAE,CACJ;EAED,SAAS,YAAY,MAAuB;GAC1C,MAAM,QAAQ,MAAM,OAAO,KAAK;AAChC,OAAI,KAAK,OAAQ,QAAO,KAAK,OAAO,OAAO,MAAM,KAAK;AACtD,OAAI,UAAU,KAAA,KAAa,UAAU,QAAQ,UAAU,GAAI,QAAO,MAAM,aAAa;AACrF,UAAO;;;uBAKP,mBAcM,OAdN,WAcM;IAAA,GAdYA,KAAAA;IAAM,OAAS,KAAA;IAAS,OAAS,KAAA;IAAS,EAAA;IAAK,OAAO,MAAA,GAAE,CAAA,gCAAkCA,KAAAA,OAAO,MAAK;IAAY,OAAQA,KAAAA,OAAO;0BACjJ,mBAYW,UAAA,MAAA,WAZa,KAAA,QAAP,QAAG;4DAAgB,IAAI,OAAA,EAAA,CACtC,mBAKM,OAAA,EAJJ,OAAK,eAAA,CAAC,sCACEC,KAAAA,WAAQ,8BAAA,WAAA,CAAA,EAAA,EAAA,gBAEb,IAAI,MAAK,EAAA,EAAA,EAEd,mBAIM,OAAA,EAJD,OAAK,eAAA,CAAC,iBAAwBA,KAAAA,WAAQ,SAAA,GAAA,CAAA,EAAA,EAAA,CACzC,WAEO,KAAA,QAAA,SAAA;KAFa,OAAO,IAAI;KAAQ,OAAO,IAAI;aAE3C,CAAA,gBAAA,gBADF,IAAI,MAAK,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,EAAA,GAAA"}