skyline-vue-admin 0.0.14 → 0.0.15

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 (103) hide show
  1. package/dist/components/avatar-input/index.cjs.map +1 -1
  2. package/dist/components/avatar-input/index.mjs.map +1 -1
  3. package/dist/components/create/index.cjs.map +1 -1
  4. package/dist/components/create/index.mjs.map +1 -1
  5. package/dist/components/edit-button/index.cjs.map +1 -1
  6. package/dist/components/edit-button/index.mjs.map +1 -1
  7. package/dist/components/file-multiple-input/index.cjs.map +1 -1
  8. package/dist/components/file-multiple-input/index.mjs.map +1 -1
  9. package/dist/components/image-field/index.cjs.map +1 -1
  10. package/dist/components/image-field/index.mjs.map +1 -1
  11. package/dist/components/link-field/index.cjs.map +1 -1
  12. package/dist/components/link-field/index.mjs.map +1 -1
  13. package/dist/components/radio-button-group-input/index.cjs.map +1 -1
  14. package/dist/components/radio-button-group-input/index.mjs.map +1 -1
  15. package/dist/components/reference-array-field/index.cjs.map +1 -1
  16. package/dist/components/reference-array-field/index.mjs.map +1 -1
  17. package/dist/components/reference-array-input/index.cjs.map +1 -1
  18. package/dist/components/reference-array-input/index.mjs.map +1 -1
  19. package/dist/components/reference-field/index.cjs.map +1 -1
  20. package/dist/components/reference-field/index.mjs.map +1 -1
  21. package/dist/components/reference-image-field/index.cjs.map +1 -1
  22. package/dist/components/reference-image-field/index.mjs.map +1 -1
  23. package/dist/components/show/index.cjs.map +1 -1
  24. package/dist/components/show/index.mjs.map +1 -1
  25. package/dist/components/show-button/index.cjs.map +1 -1
  26. package/dist/components/show-button/index.mjs.map +1 -1
  27. package/dist/components/show-simple-layout/index.cjs.map +1 -1
  28. package/dist/components/show-simple-layout/index.mjs.map +1 -1
  29. package/dist/components/simple-form/index.cjs.map +1 -1
  30. package/dist/components/simple-form/index.mjs.map +1 -1
  31. package/dist/components/single-field-list/index.cjs.map +1 -1
  32. package/dist/components/single-field-list/index.mjs.map +1 -1
  33. package/dist/components/text-input/index.cjs.map +1 -1
  34. package/dist/components/text-input/index.mjs.map +1 -1
  35. package/dist/hooks/useFormGrid.cjs.map +1 -1
  36. package/dist/hooks/useFormGrid.mjs.map +1 -1
  37. package/dist/hooks/useMenu.cjs.map +1 -1
  38. package/dist/hooks/useMenu.mjs.map +1 -1
  39. package/dist/hooks/usePermission.cjs.map +1 -1
  40. package/dist/hooks/usePermission.mjs.map +1 -1
  41. package/dist/hooks/useReferenceArrayField.cjs.map +1 -1
  42. package/dist/hooks/useReferenceArrayField.mjs.map +1 -1
  43. package/dist/hooks/useReferenceArrayInput.cjs.map +1 -1
  44. package/dist/hooks/useReferenceArrayInput.mjs.map +1 -1
  45. package/dist/hooks/useRouteKeepAlive.cjs.map +1 -1
  46. package/dist/hooks/useRouteKeepAlive.mjs.map +1 -1
  47. package/dist/hooks/useShow.cjs.map +1 -1
  48. package/dist/hooks/useShow.mjs.map +1 -1
  49. package/dist/hooks/useSize.cjs.map +1 -1
  50. package/dist/hooks/useSize.mjs.map +1 -1
  51. package/dist/hooks/useTab.cjs.map +1 -1
  52. package/dist/hooks/useTab.mjs.map +1 -1
  53. package/dist/hooks/useTreeWithDetails.cjs.map +1 -1
  54. package/dist/hooks/useTreeWithDetails.mjs.map +1 -1
  55. package/dist/hooks/useUser.cjs.map +1 -1
  56. package/dist/hooks/useUser.mjs.map +1 -1
  57. package/dist/i18n/locales/en.cjs.map +1 -1
  58. package/dist/i18n/locales/en.mjs.map +1 -1
  59. package/dist/i18n/locales/zh-cn.cjs.map +1 -1
  60. package/dist/i18n/locales/zh-cn.mjs.map +1 -1
  61. package/dist/icons/EpDelete.cjs.map +1 -1
  62. package/dist/icons/EpDelete.mjs.map +1 -1
  63. package/dist/icons/EpDocumentAdd.cjs.map +1 -1
  64. package/dist/icons/EpDocumentAdd.mjs.map +1 -1
  65. package/dist/icons/EpDownload.cjs.map +1 -1
  66. package/dist/icons/EpDownload.mjs.map +1 -1
  67. package/dist/icons/EpFullScreen.cjs.map +1 -1
  68. package/dist/icons/EpFullScreen.mjs.map +1 -1
  69. package/dist/icons/EpMoon.cjs.map +1 -1
  70. package/dist/icons/EpMoon.mjs.map +1 -1
  71. package/dist/icons/EpPlus.cjs.map +1 -1
  72. package/dist/icons/EpPlus.mjs.map +1 -1
  73. package/dist/icons/EpRefresh.cjs.map +1 -1
  74. package/dist/icons/EpRefresh.mjs.map +1 -1
  75. package/dist/icons/EpSunny.cjs.map +1 -1
  76. package/dist/icons/EpSunny.mjs.map +1 -1
  77. package/dist/icons/EpSwitchFilled.cjs.map +1 -1
  78. package/dist/icons/EpSwitchFilled.mjs.map +1 -1
  79. package/dist/icons/EpUploadFilled.cjs.map +1 -1
  80. package/dist/icons/EpUploadFilled.mjs.map +1 -1
  81. package/dist/icons/FluentFullScreenMinimize20Regular.cjs.map +1 -1
  82. package/dist/icons/FluentFullScreenMinimize20Regular.mjs.map +1 -1
  83. package/dist/icons/NimbusTextSize.cjs.map +1 -1
  84. package/dist/icons/NimbusTextSize.mjs.map +1 -1
  85. package/dist/icons/SkyMenuCollapse.cjs.map +1 -1
  86. package/dist/icons/SkyMenuCollapse.mjs.map +1 -1
  87. package/dist/icons/SlTrans.cjs.map +1 -1
  88. package/dist/icons/SlTrans.mjs.map +1 -1
  89. package/dist/layouts/default.cjs +1 -1
  90. package/dist/layouts/default.cjs.map +1 -1
  91. package/dist/layouts/default.mjs +35 -33
  92. package/dist/layouts/default.mjs.map +1 -1
  93. package/dist/pages/login.cjs.map +1 -1
  94. package/dist/pages/login.mjs.map +1 -1
  95. package/dist/pages/not-found.cjs.map +1 -1
  96. package/dist/pages/not-found.mjs.map +1 -1
  97. package/dist/pages/welcome.cjs.map +1 -1
  98. package/dist/pages/welcome.mjs.map +1 -1
  99. package/dist/router/index.cjs.map +1 -1
  100. package/dist/router/index.mjs.map +1 -1
  101. package/dist/setup/index.cjs.map +1 -1
  102. package/dist/setup/index.mjs.map +1 -1
  103. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../src/components/avatar-input/index.tsx"],"sourcesContent":["import { EpPlus } from '@/icons/EpPlus'\r\nimport type { GetOneResult, Identifier, SkyUploadRawFile } from '@/provides'\r\nimport {\r\n ElFormItem,\r\n ElIcon,\r\n ElLoadingDirective,\r\n ElUpload,\r\n genFileId,\r\n type FormItemRule,\r\n type UploadFile,\r\n type UploadInstance,\r\n type UploadProps,\r\n type UploadRawFile,\r\n} from 'element-plus'\r\nimport {\r\n cloneVNode,\r\n computed,\r\n defineComponent,\r\n Fragment,\r\n h,\r\n ref,\r\n shallowRef,\r\n useTemplateRef,\r\n withDirectives,\r\n} from 'vue'\r\nimport { useAsyncState } from '@vueuse/core'\r\nimport { useRoute } from 'vue-router'\r\nimport { useForm, useFormGrid, useUpload, type SkyUploadUserFile } from '@/hooks'\r\nimport { skyConfig } from '@/setup'\r\nimport { SkyCanAccess } from '../can-access'\r\nimport type { SkyLayoutRouteMeta } from '@/router'\r\n\r\nexport interface SkyOssAvatarInputProps {\r\n reference: string\r\n source: string\r\n label?: string\r\n rules?: FormItemRule | FormItemRule[]\r\n dataId?: string\r\n dataName?: string\r\n dataUrl?: string\r\n fileList?: SkyUploadUserFile[]\r\n}\r\n\r\nexport const SkyAvatarInput = defineComponent<SkyOssAvatarInputProps & Partial<UploadProps>>({\r\n name: 'SkyAvatarInput',\r\n inheritAttrs: false,\r\n props: {\r\n reference: {\r\n type: String,\r\n required: true,\r\n },\r\n source: {\r\n type: String,\r\n required: true,\r\n },\r\n label: String,\r\n rules: Object,\r\n dataId: {\r\n type: String,\r\n default: 'id',\r\n },\r\n dataName: {\r\n type: String,\r\n default: 'name',\r\n },\r\n dataUrl: {\r\n type: String,\r\n default: 'url',\r\n },\r\n fileList: {\r\n type: Array,\r\n default: () => [],\r\n },\r\n },\r\n setup(props, { slots, attrs }) {\r\n const route = useRoute()\r\n const formGrid = useFormGrid()\r\n const { formData, editData } = useForm()!\r\n const title = computed<string>(() => props.label || props.source)\r\n // init fileList\r\n const { fileList } = useUpload(props.fileList!)\r\n const uploadRef = useTemplateRef<UploadInstance>('uploadRef')\r\n const routeMeta = route.meta as SkyLayoutRouteMeta\r\n\r\n if (editData.value) {\r\n formData[props.source] = editData.value[props.source]\r\n }\r\n\r\n const onExceed = async (files: File[]) => {\r\n uploadRef.value?.clearFiles()\r\n const file = files[0] as UploadRawFile\r\n file.uid = genFileId()\r\n uploadRef.value?.handleStart(file)\r\n uploadRef.value?.submit()\r\n }\r\n\r\n const onSuccess = () => {\r\n const id = fileList.value[0]?.id\r\n if (id) {\r\n formData[props.source] = id\r\n } else {\r\n const raw = fileList.value[0]?.raw as SkyUploadRawFile | undefined\r\n if (raw?.data?.id) {\r\n formData[props.source] = raw.data.id\r\n }\r\n }\r\n }\r\n\r\n let controller: AbortController | undefined\r\n const { isLoading } = useAsyncState<GetOneResult | undefined>(\r\n async () => {\r\n const id = formData[props.source]\r\n if (id) {\r\n controller = new AbortController()\r\n const res = await skyConfig.dataProvider?.getOne?.(props.reference, {\r\n id: id as Identifier,\r\n signal: controller.signal,\r\n })\r\n\r\n if (res?.data) {\r\n fileList.value = [\r\n {\r\n id: res.data[props.dataId!] as Identifier,\r\n name: res.data[props.dataName!] as string,\r\n url: res.data[props.dataUrl!] as string,\r\n },\r\n ]\r\n return res\r\n }\r\n }\r\n },\r\n undefined,\r\n {\r\n immediate: true,\r\n },\r\n )\r\n\r\n const action = ref('')\r\n const data = shallowRef<Record<string, unknown>>()\r\n const headers = shallowRef<Record<string, unknown>>()\r\n const method = ref()\r\n const name = ref<string>()\r\n const beforeUpload = async (rawFile: SkyUploadRawFile) => {\r\n const res = await skyConfig.dataProvider?.getUploadConfig?.({\r\n file: rawFile,\r\n })\r\n if (res?.data) {\r\n action.value = res.data.action\r\n data.value = res.data.data\r\n headers.value = res.data.headers\r\n method.value = res.data.method\r\n name.value = res.data.name\r\n rawFile.data = {\r\n id: res.data.file.id,\r\n name: res.data.file.name,\r\n url: res.data.file.url,\r\n }\r\n }\r\n }\r\n\r\n return () => (\r\n <SkyCanAccess resource={routeMeta.resource} action={['create', 'edit']} column={props.source}>\r\n <ElFormItem\r\n class=\"sky-avatar-input\"\r\n label={title.value}\r\n prop={props.source}\r\n rules={props.rules}\r\n style={formGrid ? `grid-area: ${props.source}` : ''}\r\n >\r\n <ElUpload\r\n ref=\"uploadRef\"\r\n action={action.value}\r\n method={method.value}\r\n name={name.value}\r\n withCredentials={props.withCredentials}\r\n multiple={props.multiple}\r\n limit={1}\r\n beforeUpload={beforeUpload}\r\n onSuccess={onSuccess}\r\n onExceed={onExceed}\r\n headers={headers.value}\r\n data={data.value}\r\n listType=\"picture-card\"\r\n fileList={fileList.value}\r\n onUpdate:file-list={(fs: SkyUploadUserFile[]) => (fileList.value = fs)}\r\n autoUpload={true}\r\n showFileList={false}\r\n disabled={isLoading.value}\r\n // https://developer.mozilla.org/zh-CN/docs/Web/HTML/Reference/Attributes/accept\r\n accept={'image/*'}\r\n {...attrs}\r\n >\r\n {{\r\n default: () =>\r\n fileList.value.length ? (\r\n withDirectives(\r\n <div\r\n class=\"sky-avatar-input__preview\"\r\n style={{ backgroundImage: `url(${fileList.value[0]!.url})` }}\r\n ></div>,\r\n [\r\n [\r\n ElLoadingDirective,\r\n isLoading.value || fileList.value[0]!.status !== 'success',\r\n ],\r\n ],\r\n )\r\n ) : (\r\n <ElIcon>\r\n <EpPlus />\r\n </ElIcon>\r\n ),\r\n file: (scope: { file: UploadFile; index: number }) => {\r\n if (slots.default) {\r\n const vnodes = slots.default()\r\n return h(\r\n Fragment,\r\n vnodes.map((vnode) => cloneVNode(vnode, { ...scope })),\r\n )\r\n }\r\n },\r\n }}\r\n </ElUpload>\r\n </ElFormItem>\r\n </SkyCanAccess>\r\n )\r\n },\r\n})\r\n"],"names":["SkyAvatarInput","defineComponent","name","inheritAttrs","props","reference","type","required","source","label","rules","dataId","default","dataName","dataUrl","fileList","attrs","route","useRoute","formGrid","useFormGrid","editData","title","computed","useUpload","uploadRef","useTemplateRef","routeMeta","formData","onExceed","files","file","id","raw","controller","isLoading","res","skyConfig","url","immediate","action","ref","data","shallowRef","headers","method","beforeUpload","rawFile","onSuccess","fs","vnodes","slots","h","Fragment","vnode","cloneVNode"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/avatar-input/index.tsx"],"sourcesContent":["import { EpPlus } from '@/icons/EpPlus'\nimport type { GetOneResult, Identifier, SkyUploadRawFile } from '@/provides'\nimport {\n ElFormItem,\n ElIcon,\n ElLoadingDirective,\n ElUpload,\n genFileId,\n type FormItemRule,\n type UploadFile,\n type UploadInstance,\n type UploadProps,\n type UploadRawFile,\n} from 'element-plus'\nimport {\n cloneVNode,\n computed,\n defineComponent,\n Fragment,\n h,\n ref,\n shallowRef,\n useTemplateRef,\n withDirectives,\n} from 'vue'\nimport { useAsyncState } from '@vueuse/core'\nimport { useRoute } from 'vue-router'\nimport { useForm, useFormGrid, useUpload, type SkyUploadUserFile } from '@/hooks'\nimport { skyConfig } from '@/setup'\nimport { SkyCanAccess } from '../can-access'\nimport type { SkyLayoutRouteMeta } from '@/router'\n\nexport interface SkyOssAvatarInputProps {\n reference: string\n source: string\n label?: string\n rules?: FormItemRule | FormItemRule[]\n dataId?: string\n dataName?: string\n dataUrl?: string\n fileList?: SkyUploadUserFile[]\n}\n\nexport const SkyAvatarInput = defineComponent<SkyOssAvatarInputProps & Partial<UploadProps>>({\n name: 'SkyAvatarInput',\n inheritAttrs: false,\n props: {\n reference: {\n type: String,\n required: true,\n },\n source: {\n type: String,\n required: true,\n },\n label: String,\n rules: Object,\n dataId: {\n type: String,\n default: 'id',\n },\n dataName: {\n type: String,\n default: 'name',\n },\n dataUrl: {\n type: String,\n default: 'url',\n },\n fileList: {\n type: Array,\n default: () => [],\n },\n },\n setup(props, { slots, attrs }) {\n const route = useRoute()\n const formGrid = useFormGrid()\n const { formData, editData } = useForm()!\n const title = computed<string>(() => props.label || props.source)\n // init fileList\n const { fileList } = useUpload(props.fileList!)\n const uploadRef = useTemplateRef<UploadInstance>('uploadRef')\n const routeMeta = route.meta as SkyLayoutRouteMeta\n\n if (editData.value) {\n formData[props.source] = editData.value[props.source]\n }\n\n const onExceed = async (files: File[]) => {\n uploadRef.value?.clearFiles()\n const file = files[0] as UploadRawFile\n file.uid = genFileId()\n uploadRef.value?.handleStart(file)\n uploadRef.value?.submit()\n }\n\n const onSuccess = () => {\n const id = fileList.value[0]?.id\n if (id) {\n formData[props.source] = id\n } else {\n const raw = fileList.value[0]?.raw as SkyUploadRawFile | undefined\n if (raw?.data?.id) {\n formData[props.source] = raw.data.id\n }\n }\n }\n\n let controller: AbortController | undefined\n const { isLoading } = useAsyncState<GetOneResult | undefined>(\n async () => {\n const id = formData[props.source]\n if (id) {\n controller = new AbortController()\n const res = await skyConfig.dataProvider?.getOne?.(props.reference, {\n id: id as Identifier,\n signal: controller.signal,\n })\n\n if (res?.data) {\n fileList.value = [\n {\n id: res.data[props.dataId!] as Identifier,\n name: res.data[props.dataName!] as string,\n url: res.data[props.dataUrl!] as string,\n },\n ]\n return res\n }\n }\n },\n undefined,\n {\n immediate: true,\n },\n )\n\n const action = ref('')\n const data = shallowRef<Record<string, unknown>>()\n const headers = shallowRef<Record<string, unknown>>()\n const method = ref()\n const name = ref<string>()\n const beforeUpload = async (rawFile: SkyUploadRawFile) => {\n const res = await skyConfig.dataProvider?.getUploadConfig?.({\n file: rawFile,\n })\n if (res?.data) {\n action.value = res.data.action\n data.value = res.data.data\n headers.value = res.data.headers\n method.value = res.data.method\n name.value = res.data.name\n rawFile.data = {\n id: res.data.file.id,\n name: res.data.file.name,\n url: res.data.file.url,\n }\n }\n }\n\n return () => (\n <SkyCanAccess resource={routeMeta.resource} action={['create', 'edit']} column={props.source}>\n <ElFormItem\n class=\"sky-avatar-input\"\n label={title.value}\n prop={props.source}\n rules={props.rules}\n style={formGrid ? `grid-area: ${props.source}` : ''}\n >\n <ElUpload\n ref=\"uploadRef\"\n action={action.value}\n method={method.value}\n name={name.value}\n withCredentials={props.withCredentials}\n multiple={props.multiple}\n limit={1}\n beforeUpload={beforeUpload}\n onSuccess={onSuccess}\n onExceed={onExceed}\n headers={headers.value}\n data={data.value}\n listType=\"picture-card\"\n fileList={fileList.value}\n onUpdate:file-list={(fs: SkyUploadUserFile[]) => (fileList.value = fs)}\n autoUpload={true}\n showFileList={false}\n disabled={isLoading.value}\n // https://developer.mozilla.org/zh-CN/docs/Web/HTML/Reference/Attributes/accept\n accept={'image/*'}\n {...attrs}\n >\n {{\n default: () =>\n fileList.value.length ? (\n withDirectives(\n <div\n class=\"sky-avatar-input__preview\"\n style={{ backgroundImage: `url(${fileList.value[0]!.url})` }}\n ></div>,\n [\n [\n ElLoadingDirective,\n isLoading.value || fileList.value[0]!.status !== 'success',\n ],\n ],\n )\n ) : (\n <ElIcon>\n <EpPlus />\n </ElIcon>\n ),\n file: (scope: { file: UploadFile; index: number }) => {\n if (slots.default) {\n const vnodes = slots.default()\n return h(\n Fragment,\n vnodes.map((vnode) => cloneVNode(vnode, { ...scope })),\n )\n }\n },\n }}\n </ElUpload>\n </ElFormItem>\n </SkyCanAccess>\n )\n },\n})\n"],"names":["SkyAvatarInput","defineComponent","name","inheritAttrs","props","reference","type","required","source","label","rules","dataId","default","dataName","dataUrl","fileList","attrs","route","useRoute","formGrid","useFormGrid","editData","title","computed","useUpload","uploadRef","useTemplateRef","routeMeta","formData","onExceed","files","file","id","raw","controller","isLoading","res","skyConfig","url","immediate","action","ref","data","shallowRef","headers","method","beforeUpload","rawFile","onSuccess","fs","vnodes","slots","h","Fragment","vnode","cloneVNode"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../src/components/avatar-input/index.tsx"],"sourcesContent":["import { EpPlus } from '@/icons/EpPlus'\r\nimport type { GetOneResult, Identifier, SkyUploadRawFile } from '@/provides'\r\nimport {\r\n ElFormItem,\r\n ElIcon,\r\n ElLoadingDirective,\r\n ElUpload,\r\n genFileId,\r\n type FormItemRule,\r\n type UploadFile,\r\n type UploadInstance,\r\n type UploadProps,\r\n type UploadRawFile,\r\n} from 'element-plus'\r\nimport {\r\n cloneVNode,\r\n computed,\r\n defineComponent,\r\n Fragment,\r\n h,\r\n ref,\r\n shallowRef,\r\n useTemplateRef,\r\n withDirectives,\r\n} from 'vue'\r\nimport { useAsyncState } from '@vueuse/core'\r\nimport { useRoute } from 'vue-router'\r\nimport { useForm, useFormGrid, useUpload, type SkyUploadUserFile } from '@/hooks'\r\nimport { skyConfig } from '@/setup'\r\nimport { SkyCanAccess } from '../can-access'\r\nimport type { SkyLayoutRouteMeta } from '@/router'\r\n\r\nexport interface SkyOssAvatarInputProps {\r\n reference: string\r\n source: string\r\n label?: string\r\n rules?: FormItemRule | FormItemRule[]\r\n dataId?: string\r\n dataName?: string\r\n dataUrl?: string\r\n fileList?: SkyUploadUserFile[]\r\n}\r\n\r\nexport const SkyAvatarInput = defineComponent<SkyOssAvatarInputProps & Partial<UploadProps>>({\r\n name: 'SkyAvatarInput',\r\n inheritAttrs: false,\r\n props: {\r\n reference: {\r\n type: String,\r\n required: true,\r\n },\r\n source: {\r\n type: String,\r\n required: true,\r\n },\r\n label: String,\r\n rules: Object,\r\n dataId: {\r\n type: String,\r\n default: 'id',\r\n },\r\n dataName: {\r\n type: String,\r\n default: 'name',\r\n },\r\n dataUrl: {\r\n type: String,\r\n default: 'url',\r\n },\r\n fileList: {\r\n type: Array,\r\n default: () => [],\r\n },\r\n },\r\n setup(props, { slots, attrs }) {\r\n const route = useRoute()\r\n const formGrid = useFormGrid()\r\n const { formData, editData } = useForm()!\r\n const title = computed<string>(() => props.label || props.source)\r\n // init fileList\r\n const { fileList } = useUpload(props.fileList!)\r\n const uploadRef = useTemplateRef<UploadInstance>('uploadRef')\r\n const routeMeta = route.meta as SkyLayoutRouteMeta\r\n\r\n if (editData.value) {\r\n formData[props.source] = editData.value[props.source]\r\n }\r\n\r\n const onExceed = async (files: File[]) => {\r\n uploadRef.value?.clearFiles()\r\n const file = files[0] as UploadRawFile\r\n file.uid = genFileId()\r\n uploadRef.value?.handleStart(file)\r\n uploadRef.value?.submit()\r\n }\r\n\r\n const onSuccess = () => {\r\n const id = fileList.value[0]?.id\r\n if (id) {\r\n formData[props.source] = id\r\n } else {\r\n const raw = fileList.value[0]?.raw as SkyUploadRawFile | undefined\r\n if (raw?.data?.id) {\r\n formData[props.source] = raw.data.id\r\n }\r\n }\r\n }\r\n\r\n let controller: AbortController | undefined\r\n const { isLoading } = useAsyncState<GetOneResult | undefined>(\r\n async () => {\r\n const id = formData[props.source]\r\n if (id) {\r\n controller = new AbortController()\r\n const res = await skyConfig.dataProvider?.getOne?.(props.reference, {\r\n id: id as Identifier,\r\n signal: controller.signal,\r\n })\r\n\r\n if (res?.data) {\r\n fileList.value = [\r\n {\r\n id: res.data[props.dataId!] as Identifier,\r\n name: res.data[props.dataName!] as string,\r\n url: res.data[props.dataUrl!] as string,\r\n },\r\n ]\r\n return res\r\n }\r\n }\r\n },\r\n undefined,\r\n {\r\n immediate: true,\r\n },\r\n )\r\n\r\n const action = ref('')\r\n const data = shallowRef<Record<string, unknown>>()\r\n const headers = shallowRef<Record<string, unknown>>()\r\n const method = ref()\r\n const name = ref<string>()\r\n const beforeUpload = async (rawFile: SkyUploadRawFile) => {\r\n const res = await skyConfig.dataProvider?.getUploadConfig?.({\r\n file: rawFile,\r\n })\r\n if (res?.data) {\r\n action.value = res.data.action\r\n data.value = res.data.data\r\n headers.value = res.data.headers\r\n method.value = res.data.method\r\n name.value = res.data.name\r\n rawFile.data = {\r\n id: res.data.file.id,\r\n name: res.data.file.name,\r\n url: res.data.file.url,\r\n }\r\n }\r\n }\r\n\r\n return () => (\r\n <SkyCanAccess resource={routeMeta.resource} action={['create', 'edit']} column={props.source}>\r\n <ElFormItem\r\n class=\"sky-avatar-input\"\r\n label={title.value}\r\n prop={props.source}\r\n rules={props.rules}\r\n style={formGrid ? `grid-area: ${props.source}` : ''}\r\n >\r\n <ElUpload\r\n ref=\"uploadRef\"\r\n action={action.value}\r\n method={method.value}\r\n name={name.value}\r\n withCredentials={props.withCredentials}\r\n multiple={props.multiple}\r\n limit={1}\r\n beforeUpload={beforeUpload}\r\n onSuccess={onSuccess}\r\n onExceed={onExceed}\r\n headers={headers.value}\r\n data={data.value}\r\n listType=\"picture-card\"\r\n fileList={fileList.value}\r\n onUpdate:file-list={(fs: SkyUploadUserFile[]) => (fileList.value = fs)}\r\n autoUpload={true}\r\n showFileList={false}\r\n disabled={isLoading.value}\r\n // https://developer.mozilla.org/zh-CN/docs/Web/HTML/Reference/Attributes/accept\r\n accept={'image/*'}\r\n {...attrs}\r\n >\r\n {{\r\n default: () =>\r\n fileList.value.length ? (\r\n withDirectives(\r\n <div\r\n class=\"sky-avatar-input__preview\"\r\n style={{ backgroundImage: `url(${fileList.value[0]!.url})` }}\r\n ></div>,\r\n [\r\n [\r\n ElLoadingDirective,\r\n isLoading.value || fileList.value[0]!.status !== 'success',\r\n ],\r\n ],\r\n )\r\n ) : (\r\n <ElIcon>\r\n <EpPlus />\r\n </ElIcon>\r\n ),\r\n file: (scope: { file: UploadFile; index: number }) => {\r\n if (slots.default) {\r\n const vnodes = slots.default()\r\n return h(\r\n Fragment,\r\n vnodes.map((vnode) => cloneVNode(vnode, { ...scope })),\r\n )\r\n }\r\n },\r\n }}\r\n </ElUpload>\r\n </ElFormItem>\r\n </SkyCanAccess>\r\n )\r\n },\r\n})\r\n"],"names":["SkyAvatarInput","defineComponent","name","inheritAttrs","props","reference","type","required","source","label","rules","dataId","default","dataName","dataUrl","fileList","attrs","route","useRoute","formGrid","useFormGrid","editData","title","computed","useUpload","uploadRef","useTemplateRef","routeMeta","formData","onExceed","files","file","id","raw","controller","isLoading","res","skyConfig","url","immediate","action","ref","data","shallowRef","headers","method","beforeUpload","rawFile","onSuccess","fs","vnodes","slots","h","Fragment","vnode","cloneVNode"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../src/components/avatar-input/index.tsx"],"sourcesContent":["import { EpPlus } from '@/icons/EpPlus'\nimport type { GetOneResult, Identifier, SkyUploadRawFile } from '@/provides'\nimport {\n ElFormItem,\n ElIcon,\n ElLoadingDirective,\n ElUpload,\n genFileId,\n type FormItemRule,\n type UploadFile,\n type UploadInstance,\n type UploadProps,\n type UploadRawFile,\n} from 'element-plus'\nimport {\n cloneVNode,\n computed,\n defineComponent,\n Fragment,\n h,\n ref,\n shallowRef,\n useTemplateRef,\n withDirectives,\n} from 'vue'\nimport { useAsyncState } from '@vueuse/core'\nimport { useRoute } from 'vue-router'\nimport { useForm, useFormGrid, useUpload, type SkyUploadUserFile } from '@/hooks'\nimport { skyConfig } from '@/setup'\nimport { SkyCanAccess } from '../can-access'\nimport type { SkyLayoutRouteMeta } from '@/router'\n\nexport interface SkyOssAvatarInputProps {\n reference: string\n source: string\n label?: string\n rules?: FormItemRule | FormItemRule[]\n dataId?: string\n dataName?: string\n dataUrl?: string\n fileList?: SkyUploadUserFile[]\n}\n\nexport const SkyAvatarInput = defineComponent<SkyOssAvatarInputProps & Partial<UploadProps>>({\n name: 'SkyAvatarInput',\n inheritAttrs: false,\n props: {\n reference: {\n type: String,\n required: true,\n },\n source: {\n type: String,\n required: true,\n },\n label: String,\n rules: Object,\n dataId: {\n type: String,\n default: 'id',\n },\n dataName: {\n type: String,\n default: 'name',\n },\n dataUrl: {\n type: String,\n default: 'url',\n },\n fileList: {\n type: Array,\n default: () => [],\n },\n },\n setup(props, { slots, attrs }) {\n const route = useRoute()\n const formGrid = useFormGrid()\n const { formData, editData } = useForm()!\n const title = computed<string>(() => props.label || props.source)\n // init fileList\n const { fileList } = useUpload(props.fileList!)\n const uploadRef = useTemplateRef<UploadInstance>('uploadRef')\n const routeMeta = route.meta as SkyLayoutRouteMeta\n\n if (editData.value) {\n formData[props.source] = editData.value[props.source]\n }\n\n const onExceed = async (files: File[]) => {\n uploadRef.value?.clearFiles()\n const file = files[0] as UploadRawFile\n file.uid = genFileId()\n uploadRef.value?.handleStart(file)\n uploadRef.value?.submit()\n }\n\n const onSuccess = () => {\n const id = fileList.value[0]?.id\n if (id) {\n formData[props.source] = id\n } else {\n const raw = fileList.value[0]?.raw as SkyUploadRawFile | undefined\n if (raw?.data?.id) {\n formData[props.source] = raw.data.id\n }\n }\n }\n\n let controller: AbortController | undefined\n const { isLoading } = useAsyncState<GetOneResult | undefined>(\n async () => {\n const id = formData[props.source]\n if (id) {\n controller = new AbortController()\n const res = await skyConfig.dataProvider?.getOne?.(props.reference, {\n id: id as Identifier,\n signal: controller.signal,\n })\n\n if (res?.data) {\n fileList.value = [\n {\n id: res.data[props.dataId!] as Identifier,\n name: res.data[props.dataName!] as string,\n url: res.data[props.dataUrl!] as string,\n },\n ]\n return res\n }\n }\n },\n undefined,\n {\n immediate: true,\n },\n )\n\n const action = ref('')\n const data = shallowRef<Record<string, unknown>>()\n const headers = shallowRef<Record<string, unknown>>()\n const method = ref()\n const name = ref<string>()\n const beforeUpload = async (rawFile: SkyUploadRawFile) => {\n const res = await skyConfig.dataProvider?.getUploadConfig?.({\n file: rawFile,\n })\n if (res?.data) {\n action.value = res.data.action\n data.value = res.data.data\n headers.value = res.data.headers\n method.value = res.data.method\n name.value = res.data.name\n rawFile.data = {\n id: res.data.file.id,\n name: res.data.file.name,\n url: res.data.file.url,\n }\n }\n }\n\n return () => (\n <SkyCanAccess resource={routeMeta.resource} action={['create', 'edit']} column={props.source}>\n <ElFormItem\n class=\"sky-avatar-input\"\n label={title.value}\n prop={props.source}\n rules={props.rules}\n style={formGrid ? `grid-area: ${props.source}` : ''}\n >\n <ElUpload\n ref=\"uploadRef\"\n action={action.value}\n method={method.value}\n name={name.value}\n withCredentials={props.withCredentials}\n multiple={props.multiple}\n limit={1}\n beforeUpload={beforeUpload}\n onSuccess={onSuccess}\n onExceed={onExceed}\n headers={headers.value}\n data={data.value}\n listType=\"picture-card\"\n fileList={fileList.value}\n onUpdate:file-list={(fs: SkyUploadUserFile[]) => (fileList.value = fs)}\n autoUpload={true}\n showFileList={false}\n disabled={isLoading.value}\n // https://developer.mozilla.org/zh-CN/docs/Web/HTML/Reference/Attributes/accept\n accept={'image/*'}\n {...attrs}\n >\n {{\n default: () =>\n fileList.value.length ? (\n withDirectives(\n <div\n class=\"sky-avatar-input__preview\"\n style={{ backgroundImage: `url(${fileList.value[0]!.url})` }}\n ></div>,\n [\n [\n ElLoadingDirective,\n isLoading.value || fileList.value[0]!.status !== 'success',\n ],\n ],\n )\n ) : (\n <ElIcon>\n <EpPlus />\n </ElIcon>\n ),\n file: (scope: { file: UploadFile; index: number }) => {\n if (slots.default) {\n const vnodes = slots.default()\n return h(\n Fragment,\n vnodes.map((vnode) => cloneVNode(vnode, { ...scope })),\n )\n }\n },\n }}\n </ElUpload>\n </ElFormItem>\n </SkyCanAccess>\n )\n },\n})\n"],"names":["SkyAvatarInput","defineComponent","name","inheritAttrs","props","reference","type","required","source","label","rules","dataId","default","dataName","dataUrl","fileList","attrs","route","useRoute","formGrid","useFormGrid","editData","title","computed","useUpload","uploadRef","useTemplateRef","routeMeta","formData","onExceed","files","file","id","raw","controller","isLoading","res","skyConfig","url","immediate","action","ref","data","shallowRef","headers","method","beforeUpload","rawFile","onSuccess","fs","vnodes","slots","h","Fragment","vnode","cloneVNode"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../src/components/create/index.tsx"],"sourcesContent":["import { useProvideForm, useRouteKeepAlive, useTab, useTreeWithDetails } from '@/hooks'\r\nimport { EpDocumentAdd } from '@/icons/EpDocumentAdd'\r\nimport type { CreateResult } from '@/provides'\r\nimport type { SkyLayoutRouteMeta } from '@/router'\r\nimport { skyConfig } from '@/setup'\r\nimport { useAsyncState } from '@vueuse/core'\r\nimport { ElButton, ElCard, type CardProps } from 'element-plus'\r\nimport { defineComponent } from 'vue'\r\nimport { useI18n } from 'vue-i18n'\r\nimport { useRoute, useRouter } from 'vue-router'\r\nimport { SkyCanAccess } from '../can-access'\r\n\r\nexport const SkyCreate = defineComponent<Partial<CardProps>>({\r\n name: 'SkyCreate',\r\n inheritAttrs: false,\r\n setup(_props, { slots, attrs }) {\r\n const { t } = useI18n()\r\n const route = useRoute()\r\n const router = useRouter()\r\n const { removeTab, lastTab } = useTab()\r\n const { formData, formRef } = useProvideForm()\r\n const treeWithDetails = useTreeWithDetails()\r\n const { removeKeepAlive } = useRouteKeepAlive()\r\n const routeMeta = route.meta as SkyLayoutRouteMeta\r\n\r\n let controller: AbortController | undefined\r\n\r\n const { isLoading: formSubmitLoging, execute } = useAsyncState<\r\n CreateResult | undefined,\r\n [data: Record<string, unknown>]\r\n >(\r\n async (data) => {\r\n controller = new AbortController()\r\n return skyConfig.dataProvider?.create?.(route.meta.resource as string, {\r\n data,\r\n signal: controller.signal,\r\n })\r\n },\r\n undefined,\r\n {\r\n immediate: false,\r\n },\r\n )\r\n\r\n const onSumit = async () => {\r\n if (!formRef.value) {\r\n return\r\n }\r\n const valid = await formRef.value.validate()\r\n if (!valid) {\r\n return\r\n }\r\n const res = await execute(0, { ...formData })\r\n if (res) {\r\n if (treeWithDetails?.createSuccess) {\r\n treeWithDetails.createSuccess(res)\r\n } else {\r\n if (routeMeta.keepAliveName) {\r\n removeKeepAlive(routeMeta.keepAliveName)\r\n }\r\n removeTab(route.name as string)\r\n if (lastTab.value) {\r\n router.replace({ name: lastTab.value.routeName, params: lastTab.value.routeParams })\r\n }\r\n }\r\n }\r\n }\r\n\r\n return () => (\r\n <div class=\"sky-create\">\r\n <SkyCanAccess resource={routeMeta.resource} action=\"create\">\r\n <ElCard {...attrs}>\r\n {{\r\n default: slots.default,\r\n footer: () => (\r\n <div class=\"sky-create__footer\">\r\n <ElButton\r\n type=\"primary\"\r\n icon={EpDocumentAdd}\r\n loading={formSubmitLoging.value}\r\n onClick={onSumit}\r\n >\r\n {t('button.submit')}\r\n </ElButton>\r\n </div>\r\n ),\r\n }}\r\n </ElCard>\r\n </SkyCanAccess>\r\n </div>\r\n )\r\n },\r\n})\r\n"],"names":["_isSlot","s","_isVNode","SkyCreate","defineComponent","name","inheritAttrs","attrs","t","route","useRoute","router","useRouter","lastTab","formRef","treeWithDetails","useTreeWithDetails","removeKeepAlive","routeMeta","controller","isLoading","execute","useAsyncState","data","immediate","onSumit","res","removeTab","params","_createVNode","default","footer","_slot","EpDocumentAdd"],"mappings":"4jCAU4C,SAAAA,EAAAC,EAAA,CAAA,OAAA,OAAAA,GAAA,YAAA,OAAA,UAAA,SAAA,KAAAA,CAAA,IAAA,mBAAA,CAAAC,EAAAA,QAAAD,CAAA,CAAA,CAE5C,MAAAE,EAAAC,EAAAA,gBAAA,CACEC,KAAAA,YACAC,aAAAA,oBACuBC,MAAAA,CAAM,EAAA,OACnBC,EAAAA,eACRC,EAAAC,EAAAA,SAAA,EACAC,EAAAC,EAAAA,UAAA,eACmBC,QAAAA,0BACDC,QAAAA,sBAClBC,EAAAC,EAAAA,mBAAA,GACQC,gBAAAA,yBACRC,EAAAT,EAAA,KAEA,IAAAU,QAEQC,UAAAA,EAA6BC,QAAAA,CAAQ,EAAAC,EAAAA,cAAA,MAAAC,IAKzCJ,EAAAA,IAAAA,0FAIA,CAAA,WAIAK,UAAAA,EACF,CAAA,EAGFC,EAAA,SAAA,IACE,CAAAX,EAAA,iCAKE,OAEF,MAAAY,EAAA,MAAAL,EAAA,EAAA,KAA2C,CAAA,EAC3CK,qBAEIX,EAAAA,cAAAA,CAAAA,oBAGEE,EAAAA,EAAAA,aAAAA,EAEFU,EAAAA,EAAAA,IAAAA,sBAEmBtB,KAAAA,EAAAA,MAAAA,UAA+BuB,OAAAA,EAAAA,MAAAA,WAAkC,CAAA,KAM1F,MAAA,IAAAC,EAAAA,YAAA,MAAA,CAAO,MAAA,iEAEuC,OAAA,QAAA,EAAA,CAAAC,QAAAA,IAAAA,CAAAA,cAAAA,EAAAA,OAAAA,EAAAA,mBAIpCC,OAAAA,IAAAA,CAAQ,IAAAC,EAAA,OAAAH,EAAAA,YAAA,MAAA,CAAA,MAAA,iDAAA,KAAA,UAAA,KAAAI,EAAAA,mFAQiB,CAAA,CAAA,CAAA,CAAA,CAGxB,CAAA,CAAA,KAMb,CACF,CAAA"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/create/index.tsx"],"sourcesContent":["import { useProvideForm, useRouteKeepAlive, useTab, useTreeWithDetails } from '@/hooks'\nimport { EpDocumentAdd } from '@/icons/EpDocumentAdd'\nimport type { CreateResult } from '@/provides'\nimport type { SkyLayoutRouteMeta } from '@/router'\nimport { skyConfig } from '@/setup'\nimport { useAsyncState } from '@vueuse/core'\nimport { ElButton, ElCard, type CardProps } from 'element-plus'\nimport { defineComponent } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport { useRoute, useRouter } from 'vue-router'\nimport { SkyCanAccess } from '../can-access'\n\nexport const SkyCreate = defineComponent<Partial<CardProps>>({\n name: 'SkyCreate',\n inheritAttrs: false,\n setup(_props, { slots, attrs }) {\n const { t } = useI18n()\n const route = useRoute()\n const router = useRouter()\n const { removeTab, lastTab } = useTab()\n const { formData, formRef } = useProvideForm()\n const treeWithDetails = useTreeWithDetails()\n const { removeKeepAlive } = useRouteKeepAlive()\n const routeMeta = route.meta as SkyLayoutRouteMeta\n\n let controller: AbortController | undefined\n\n const { isLoading: formSubmitLoging, execute } = useAsyncState<\n CreateResult | undefined,\n [data: Record<string, unknown>]\n >(\n async (data) => {\n controller = new AbortController()\n return skyConfig.dataProvider?.create?.(route.meta.resource as string, {\n data,\n signal: controller.signal,\n })\n },\n undefined,\n {\n immediate: false,\n },\n )\n\n const onSumit = async () => {\n if (!formRef.value) {\n return\n }\n const valid = await formRef.value.validate()\n if (!valid) {\n return\n }\n const res = await execute(0, { ...formData })\n if (res) {\n if (treeWithDetails?.createSuccess) {\n treeWithDetails.createSuccess(res)\n } else {\n if (routeMeta.keepAliveName) {\n removeKeepAlive(routeMeta.keepAliveName)\n }\n removeTab(route.name as string)\n if (lastTab.value) {\n router.replace({ name: lastTab.value.routeName, params: lastTab.value.routeParams })\n }\n }\n }\n }\n\n return () => (\n <div class=\"sky-create\">\n <SkyCanAccess resource={routeMeta.resource} action=\"create\">\n <ElCard {...attrs}>\n {{\n default: slots.default,\n footer: () => (\n <div class=\"sky-create__footer\">\n <ElButton\n type=\"primary\"\n icon={EpDocumentAdd}\n loading={formSubmitLoging.value}\n onClick={onSumit}\n >\n {t('button.submit')}\n </ElButton>\n </div>\n ),\n }}\n </ElCard>\n </SkyCanAccess>\n </div>\n )\n },\n})\n"],"names":["_isSlot","s","_isVNode","SkyCreate","defineComponent","name","inheritAttrs","attrs","t","route","useRoute","router","useRouter","lastTab","formRef","treeWithDetails","useTreeWithDetails","removeKeepAlive","routeMeta","controller","isLoading","execute","useAsyncState","data","immediate","onSumit","res","removeTab","params","_createVNode","default","footer","_slot","EpDocumentAdd"],"mappings":"4jCAU4C,SAAAA,EAAAC,EAAA,CAAA,OAAA,OAAAA,GAAA,YAAA,OAAA,UAAA,SAAA,KAAAA,CAAA,IAAA,mBAAA,CAAAC,EAAAA,QAAAD,CAAA,CAAA,CAE5C,MAAAE,EAAAC,EAAAA,gBAAA,CACEC,KAAAA,YACAC,aAAAA,oBACuBC,MAAAA,CAAM,EAAA,OACnBC,EAAAA,eACRC,EAAAC,EAAAA,SAAA,EACAC,EAAAC,EAAAA,UAAA,eACmBC,QAAAA,0BACDC,QAAAA,sBAClBC,EAAAC,EAAAA,mBAAA,GACQC,gBAAAA,yBACRC,EAAAT,EAAA,KAEA,IAAAU,QAEQC,UAAAA,EAA6BC,QAAAA,CAAQ,EAAAC,EAAAA,cAAA,MAAAC,IAKzCJ,EAAAA,IAAAA,0FAIA,CAAA,WAIAK,UAAAA,EACF,CAAA,EAGFC,EAAA,SAAA,IACE,CAAAX,EAAA,iCAKE,OAEF,MAAAY,EAAA,MAAAL,EAAA,EAAA,KAA2C,CAAA,EAC3CK,qBAEIX,EAAAA,cAAAA,CAAAA,oBAGEE,EAAAA,EAAAA,aAAAA,EAEFU,EAAAA,EAAAA,IAAAA,sBAEmBtB,KAAAA,EAAAA,MAAAA,UAA+BuB,OAAAA,EAAAA,MAAAA,WAAkC,CAAA,KAM1F,MAAA,IAAAC,EAAAA,YAAA,MAAA,CAAO,MAAA,iEAEuC,OAAA,QAAA,EAAA,CAAAC,QAAAA,IAAAA,CAAAA,cAAAA,EAAAA,OAAAA,EAAAA,mBAIpCC,OAAAA,IAAAA,CAAQ,IAAAC,EAAA,OAAAH,EAAAA,YAAA,MAAA,CAAA,MAAA,iDAAA,KAAA,UAAA,KAAAI,EAAAA,mFAQiB,CAAA,CAAA,CAAA,CAAA,CAGxB,CAAA,CAAA,KAMb,CACF,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../src/components/create/index.tsx"],"sourcesContent":["import { useProvideForm, useRouteKeepAlive, useTab, useTreeWithDetails } from '@/hooks'\r\nimport { EpDocumentAdd } from '@/icons/EpDocumentAdd'\r\nimport type { CreateResult } from '@/provides'\r\nimport type { SkyLayoutRouteMeta } from '@/router'\r\nimport { skyConfig } from '@/setup'\r\nimport { useAsyncState } from '@vueuse/core'\r\nimport { ElButton, ElCard, type CardProps } from 'element-plus'\r\nimport { defineComponent } from 'vue'\r\nimport { useI18n } from 'vue-i18n'\r\nimport { useRoute, useRouter } from 'vue-router'\r\nimport { SkyCanAccess } from '../can-access'\r\n\r\nexport const SkyCreate = defineComponent<Partial<CardProps>>({\r\n name: 'SkyCreate',\r\n inheritAttrs: false,\r\n setup(_props, { slots, attrs }) {\r\n const { t } = useI18n()\r\n const route = useRoute()\r\n const router = useRouter()\r\n const { removeTab, lastTab } = useTab()\r\n const { formData, formRef } = useProvideForm()\r\n const treeWithDetails = useTreeWithDetails()\r\n const { removeKeepAlive } = useRouteKeepAlive()\r\n const routeMeta = route.meta as SkyLayoutRouteMeta\r\n\r\n let controller: AbortController | undefined\r\n\r\n const { isLoading: formSubmitLoging, execute } = useAsyncState<\r\n CreateResult | undefined,\r\n [data: Record<string, unknown>]\r\n >(\r\n async (data) => {\r\n controller = new AbortController()\r\n return skyConfig.dataProvider?.create?.(route.meta.resource as string, {\r\n data,\r\n signal: controller.signal,\r\n })\r\n },\r\n undefined,\r\n {\r\n immediate: false,\r\n },\r\n )\r\n\r\n const onSumit = async () => {\r\n if (!formRef.value) {\r\n return\r\n }\r\n const valid = await formRef.value.validate()\r\n if (!valid) {\r\n return\r\n }\r\n const res = await execute(0, { ...formData })\r\n if (res) {\r\n if (treeWithDetails?.createSuccess) {\r\n treeWithDetails.createSuccess(res)\r\n } else {\r\n if (routeMeta.keepAliveName) {\r\n removeKeepAlive(routeMeta.keepAliveName)\r\n }\r\n removeTab(route.name as string)\r\n if (lastTab.value) {\r\n router.replace({ name: lastTab.value.routeName, params: lastTab.value.routeParams })\r\n }\r\n }\r\n }\r\n }\r\n\r\n return () => (\r\n <div class=\"sky-create\">\r\n <SkyCanAccess resource={routeMeta.resource} action=\"create\">\r\n <ElCard {...attrs}>\r\n {{\r\n default: slots.default,\r\n footer: () => (\r\n <div class=\"sky-create__footer\">\r\n <ElButton\r\n type=\"primary\"\r\n icon={EpDocumentAdd}\r\n loading={formSubmitLoging.value}\r\n onClick={onSumit}\r\n >\r\n {t('button.submit')}\r\n </ElButton>\r\n </div>\r\n ),\r\n }}\r\n </ElCard>\r\n </SkyCanAccess>\r\n </div>\r\n )\r\n },\r\n})\r\n"],"names":["_isSlot","s","_isVNode","SkyCreate","defineComponent","name","inheritAttrs","attrs","t","route","useRoute","router","useRouter","lastTab","formRef","treeWithDetails","useTreeWithDetails","removeKeepAlive","routeMeta","controller","isLoading","execute","useAsyncState","data","immediate","onSumit","res","removeTab","params","_createVNode","default","footer","_slot","EpDocumentAdd"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAU4C,SAAAA,EAAAC,GAAA;AAAA,SAAA,OAAAA,KAAA,cAAA,OAAA,UAAA,SAAA,KAAAA,CAAA,MAAA,qBAAA,CAAAC,EAAAD,CAAA;AAAA;AAE5C,MAAAE,KAAA,gBAAAC,EAAA;AAAA,EACEC,MAAAA;AAAAA,EACAC,cAAAA;AAAAA;;IACuBC,OAAAA;AAAAA,EAAM,GAAA;;MACnBC,GAAAA;AAAAA,aACRC,IAAAC,EAAA,GACAC,IAAAC,EAAA;;MACmBC,SAAAA;AAAAA;;MACDC,SAAAA;AAAAA,aAClBC,IAAAC,EAAA;MACQC,iBAAAA;AAAAA,aACRC,IAAAT,EAAA;AAEA,QAAAU;;MAEQC,WAAAA;AAAAA,MAA6BC,SAAAA;AAAAA,IAAQ,IAAAC,EAAA,OAAAC,OAKzCJ,IAAAA,IAAAA,gBAAAA;;;IAIA,CAAA;MAIAK,WAAAA;AAAAA,IACF,CAAA,GAGFC,IAAA,YAAA;UACE,CAAAX,EAAA;AAKE;AAEF,YAAAY,IAAA,MAAAL,EAAA,GAAA;AAAA;MAA2C,CAAA;AAC3C,MAAAK,yBAEIX,EAAAA,cAAAA,CAAAA,wBAGEE,EAAAA,EAAAA,aAAAA,GAEFU,EAAAA,EAAAA,IAAAA;QAEmBtB,MAAAA,EAAAA,MAAAA;AAAAA,QAA+BuB,QAAAA,EAAAA,MAAAA;AAAAA,MAAkC,CAAA;AAAA;AAM1F,WAAA,MAAAC,EAAA,OAAA;AAAA,MAAO,OAAA;AAAA;;MAEuC,QAAA;AAAA,IAAA,GAAA;AAAA,MAAAC,SAAAA,MAAAA,CAAAA,EAAAA,GAAAA,GAAAA;AAAAA;QAIpCC,QAAAA,MAAAA;AAAQ,cAAAC;AAAA,iBAAAH,EAAA,OAAA;AAAA,YAAA,OAAA;AAAA;YAAA,MAAA;AAAA,YAAA,MAAAI;AAAA;;;;UAQiB,CAAA,CAAA,CAAA;AAAA,QAAA;AAAA,MAGxB,CAAA,CAAA;AAAA;EAMb;AACF,CAAA;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../src/components/create/index.tsx"],"sourcesContent":["import { useProvideForm, useRouteKeepAlive, useTab, useTreeWithDetails } from '@/hooks'\nimport { EpDocumentAdd } from '@/icons/EpDocumentAdd'\nimport type { CreateResult } from '@/provides'\nimport type { SkyLayoutRouteMeta } from '@/router'\nimport { skyConfig } from '@/setup'\nimport { useAsyncState } from '@vueuse/core'\nimport { ElButton, ElCard, type CardProps } from 'element-plus'\nimport { defineComponent } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport { useRoute, useRouter } from 'vue-router'\nimport { SkyCanAccess } from '../can-access'\n\nexport const SkyCreate = defineComponent<Partial<CardProps>>({\n name: 'SkyCreate',\n inheritAttrs: false,\n setup(_props, { slots, attrs }) {\n const { t } = useI18n()\n const route = useRoute()\n const router = useRouter()\n const { removeTab, lastTab } = useTab()\n const { formData, formRef } = useProvideForm()\n const treeWithDetails = useTreeWithDetails()\n const { removeKeepAlive } = useRouteKeepAlive()\n const routeMeta = route.meta as SkyLayoutRouteMeta\n\n let controller: AbortController | undefined\n\n const { isLoading: formSubmitLoging, execute } = useAsyncState<\n CreateResult | undefined,\n [data: Record<string, unknown>]\n >(\n async (data) => {\n controller = new AbortController()\n return skyConfig.dataProvider?.create?.(route.meta.resource as string, {\n data,\n signal: controller.signal,\n })\n },\n undefined,\n {\n immediate: false,\n },\n )\n\n const onSumit = async () => {\n if (!formRef.value) {\n return\n }\n const valid = await formRef.value.validate()\n if (!valid) {\n return\n }\n const res = await execute(0, { ...formData })\n if (res) {\n if (treeWithDetails?.createSuccess) {\n treeWithDetails.createSuccess(res)\n } else {\n if (routeMeta.keepAliveName) {\n removeKeepAlive(routeMeta.keepAliveName)\n }\n removeTab(route.name as string)\n if (lastTab.value) {\n router.replace({ name: lastTab.value.routeName, params: lastTab.value.routeParams })\n }\n }\n }\n }\n\n return () => (\n <div class=\"sky-create\">\n <SkyCanAccess resource={routeMeta.resource} action=\"create\">\n <ElCard {...attrs}>\n {{\n default: slots.default,\n footer: () => (\n <div class=\"sky-create__footer\">\n <ElButton\n type=\"primary\"\n icon={EpDocumentAdd}\n loading={formSubmitLoging.value}\n onClick={onSumit}\n >\n {t('button.submit')}\n </ElButton>\n </div>\n ),\n }}\n </ElCard>\n </SkyCanAccess>\n </div>\n )\n },\n})\n"],"names":["_isSlot","s","_isVNode","SkyCreate","defineComponent","name","inheritAttrs","attrs","t","route","useRoute","router","useRouter","lastTab","formRef","treeWithDetails","useTreeWithDetails","removeKeepAlive","routeMeta","controller","isLoading","execute","useAsyncState","data","immediate","onSumit","res","removeTab","params","_createVNode","default","footer","_slot","EpDocumentAdd"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAU4C,SAAAA,EAAAC,GAAA;AAAA,SAAA,OAAAA,KAAA,cAAA,OAAA,UAAA,SAAA,KAAAA,CAAA,MAAA,qBAAA,CAAAC,EAAAD,CAAA;AAAA;AAE5C,MAAAE,KAAA,gBAAAC,EAAA;AAAA,EACEC,MAAAA;AAAAA,EACAC,cAAAA;AAAAA;;IACuBC,OAAAA;AAAAA,EAAM,GAAA;;MACnBC,GAAAA;AAAAA,aACRC,IAAAC,EAAA,GACAC,IAAAC,EAAA;;MACmBC,SAAAA;AAAAA;;MACDC,SAAAA;AAAAA,aAClBC,IAAAC,EAAA;MACQC,iBAAAA;AAAAA,aACRC,IAAAT,EAAA;AAEA,QAAAU;;MAEQC,WAAAA;AAAAA,MAA6BC,SAAAA;AAAAA,IAAQ,IAAAC,EAAA,OAAAC,OAKzCJ,IAAAA,IAAAA,gBAAAA;;;IAIA,CAAA;MAIAK,WAAAA;AAAAA,IACF,CAAA,GAGFC,IAAA,YAAA;UACE,CAAAX,EAAA;AAKE;AAEF,YAAAY,IAAA,MAAAL,EAAA,GAAA;AAAA;MAA2C,CAAA;AAC3C,MAAAK,yBAEIX,EAAAA,cAAAA,CAAAA,wBAGEE,EAAAA,EAAAA,aAAAA,GAEFU,EAAAA,EAAAA,IAAAA;QAEmBtB,MAAAA,EAAAA,MAAAA;AAAAA,QAA+BuB,QAAAA,EAAAA,MAAAA;AAAAA,MAAkC,CAAA;AAAA;AAM1F,WAAA,MAAAC,EAAA,OAAA;AAAA,MAAO,OAAA;AAAA;;MAEuC,QAAA;AAAA,IAAA,GAAA;AAAA,MAAAC,SAAAA,MAAAA,CAAAA,EAAAA,GAAAA,GAAAA;AAAAA;QAIpCC,QAAAA,MAAAA;AAAQ,cAAAC;AAAA,iBAAAH,EAAA,OAAA;AAAA,YAAA,OAAA;AAAA;YAAA,MAAA;AAAA,YAAA,MAAAI;AAAA;;;;UAQiB,CAAA,CAAA,CAAA;AAAA,QAAA;AAAA,MAGxB,CAAA,CAAA;AAAA;EAMb;AACF,CAAA;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../src/components/edit-button/index.tsx"],"sourcesContent":["import type { SkyLayoutRouteMeta } from '@/router'\r\nimport { skyConfig } from '@/setup'\r\nimport { ElButton, type ButtonProps } from 'element-plus'\r\nimport { computed, defineComponent } from 'vue'\r\nimport { useI18n } from 'vue-i18n'\r\nimport { useRoute, useRouter } from 'vue-router'\r\nimport { SkyCanAccess } from '../can-access'\r\n\r\nexport interface SkyEditButtonProps {\r\n id?: string\r\n row?: Record<string, unknown>\r\n}\r\n\r\nexport const SkyEditButton = defineComponent<SkyEditButtonProps & Partial<ButtonProps>>({\r\n name: 'SkyEditButton',\r\n inheritAttrs: false,\r\n props: {\r\n id: {\r\n type: String,\r\n default: 'id',\r\n },\r\n row: Object,\r\n },\r\n setup(props, { attrs }) {\r\n const { t } = useI18n()\r\n const router = useRouter()\r\n const route = useRoute()\r\n const routeMeta = route.meta as SkyLayoutRouteMeta\r\n const id = computed(() => {\r\n const v = props.row?.[props.id!]\r\n if (v) {\r\n return String(v)\r\n }\r\n })\r\n\r\n const onEdit = () => {\r\n const routeName = skyConfig.getEditRouteName(routeMeta.resource)\r\n if (id.value && router.hasRoute(routeName)) {\r\n router.push({\r\n name: routeName,\r\n params: {\r\n id: id.value,\r\n },\r\n })\r\n }\r\n }\r\n\r\n return () => (\r\n <SkyCanAccess resource={routeMeta.resource} action=\"edit\" row={id.value}>\r\n <ElButton link type=\"primary\" onClick={onEdit} {...attrs}>\r\n {t('button.edit')}\r\n </ElButton>\r\n </SkyCanAccess>\r\n )\r\n },\r\n})\r\n"],"names":["_isSlot","s","_isVNode","SkyEditButton","defineComponent","name","inheritAttrs","props","id","type","default","row","attrs","t","router","useRouter","routeMeta","useRoute","computed","v","params","_slot"],"mappings":"8SAM4C,SAAAA,EAAAC,EAAA,CAAA,OAAA,OAAAA,GAAA,YAAA,OAAA,UAAA,SAAA,KAAAA,CAAA,IAAA,mBAAA,CAAAC,EAAAA,QAAAD,CAAA,CAAA,CAO5C,MAAAE,EAAAC,EAAAA,gBAAA,CACEC,KAAAA,gBACAC,aAAAA,GACAC,MAAAA,CACEC,GAAAA,CACEC,KAAAA,OACAC,QAAAA,MAEFC,IAAAA,iBAEaC,MAAAA,CAAM,EAAA,OACXC,EAAAA,eACRC,EAAAC,EAAAA,UAAA,EAEAC,EADAC,EAAAA,SAAA,EACA,KACAT,EAAAU,EAAAA,SAAA,IAAA,uBAEE,GAAAC,kBAGF,CAAA,0FAMMd,KAAAA,EACAe,OAAAA,WAEA,CACF,CAAA,cAIG,IAAAC,2DACqC,OAAA,OAAA,IAAAb,EAAA,KAA6B,EAAA,CAAAE,QAAAA,IAAAA,CAAAA,cAAAA,EAAAA,SAAAA,EAAAA,WAAAA,CAAA,KAAA,GAAA,KAAA,gEAElD,CAAA,CAAA,CAAA,CAAA,EAIzB,CACF,CAAA"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/edit-button/index.tsx"],"sourcesContent":["import type { SkyLayoutRouteMeta } from '@/router'\nimport { skyConfig } from '@/setup'\nimport { ElButton, type ButtonProps } from 'element-plus'\nimport { computed, defineComponent } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport { useRoute, useRouter } from 'vue-router'\nimport { SkyCanAccess } from '../can-access'\n\nexport interface SkyEditButtonProps {\n id?: string\n row?: Record<string, unknown>\n}\n\nexport const SkyEditButton = defineComponent<SkyEditButtonProps & Partial<ButtonProps>>({\n name: 'SkyEditButton',\n inheritAttrs: false,\n props: {\n id: {\n type: String,\n default: 'id',\n },\n row: Object,\n },\n setup(props, { attrs }) {\n const { t } = useI18n()\n const router = useRouter()\n const route = useRoute()\n const routeMeta = route.meta as SkyLayoutRouteMeta\n const id = computed(() => {\n const v = props.row?.[props.id!]\n if (v) {\n return String(v)\n }\n })\n\n const onEdit = () => {\n const routeName = skyConfig.getEditRouteName(routeMeta.resource)\n if (id.value && router.hasRoute(routeName)) {\n router.push({\n name: routeName,\n params: {\n id: id.value,\n },\n })\n }\n }\n\n return () => (\n <SkyCanAccess resource={routeMeta.resource} action=\"edit\" row={id.value}>\n <ElButton link type=\"primary\" onClick={onEdit} {...attrs}>\n {t('button.edit')}\n </ElButton>\n </SkyCanAccess>\n )\n },\n})\n"],"names":["_isSlot","s","_isVNode","SkyEditButton","defineComponent","name","inheritAttrs","props","id","type","default","row","attrs","t","router","useRouter","routeMeta","useRoute","computed","v","params","_slot"],"mappings":"8SAM4C,SAAAA,EAAAC,EAAA,CAAA,OAAA,OAAAA,GAAA,YAAA,OAAA,UAAA,SAAA,KAAAA,CAAA,IAAA,mBAAA,CAAAC,EAAAA,QAAAD,CAAA,CAAA,CAO5C,MAAAE,EAAAC,EAAAA,gBAAA,CACEC,KAAAA,gBACAC,aAAAA,GACAC,MAAAA,CACEC,GAAAA,CACEC,KAAAA,OACAC,QAAAA,MAEFC,IAAAA,iBAEaC,MAAAA,CAAM,EAAA,OACXC,EAAAA,eACRC,EAAAC,EAAAA,UAAA,EAEAC,EADAC,EAAAA,SAAA,EACA,KACAT,EAAAU,EAAAA,SAAA,IAAA,uBAEE,GAAAC,kBAGF,CAAA,0FAMMd,KAAAA,EACAe,OAAAA,WAEA,CACF,CAAA,cAIG,IAAAC,2DACqC,OAAA,OAAA,IAAAb,EAAA,KAA6B,EAAA,CAAAE,QAAAA,IAAAA,CAAAA,cAAAA,EAAAA,SAAAA,EAAAA,WAAAA,CAAA,KAAA,GAAA,KAAA,gEAElD,CAAA,CAAA,CAAA,CAAA,EAIzB,CACF,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../src/components/edit-button/index.tsx"],"sourcesContent":["import type { SkyLayoutRouteMeta } from '@/router'\r\nimport { skyConfig } from '@/setup'\r\nimport { ElButton, type ButtonProps } from 'element-plus'\r\nimport { computed, defineComponent } from 'vue'\r\nimport { useI18n } from 'vue-i18n'\r\nimport { useRoute, useRouter } from 'vue-router'\r\nimport { SkyCanAccess } from '../can-access'\r\n\r\nexport interface SkyEditButtonProps {\r\n id?: string\r\n row?: Record<string, unknown>\r\n}\r\n\r\nexport const SkyEditButton = defineComponent<SkyEditButtonProps & Partial<ButtonProps>>({\r\n name: 'SkyEditButton',\r\n inheritAttrs: false,\r\n props: {\r\n id: {\r\n type: String,\r\n default: 'id',\r\n },\r\n row: Object,\r\n },\r\n setup(props, { attrs }) {\r\n const { t } = useI18n()\r\n const router = useRouter()\r\n const route = useRoute()\r\n const routeMeta = route.meta as SkyLayoutRouteMeta\r\n const id = computed(() => {\r\n const v = props.row?.[props.id!]\r\n if (v) {\r\n return String(v)\r\n }\r\n })\r\n\r\n const onEdit = () => {\r\n const routeName = skyConfig.getEditRouteName(routeMeta.resource)\r\n if (id.value && router.hasRoute(routeName)) {\r\n router.push({\r\n name: routeName,\r\n params: {\r\n id: id.value,\r\n },\r\n })\r\n }\r\n }\r\n\r\n return () => (\r\n <SkyCanAccess resource={routeMeta.resource} action=\"edit\" row={id.value}>\r\n <ElButton link type=\"primary\" onClick={onEdit} {...attrs}>\r\n {t('button.edit')}\r\n </ElButton>\r\n </SkyCanAccess>\r\n )\r\n },\r\n})\r\n"],"names":["_isSlot","s","_isVNode","SkyEditButton","defineComponent","name","inheritAttrs","props","id","type","default","row","attrs","t","router","useRouter","routeMeta","useRoute","computed","v","params","_slot"],"mappings":";;;;;;;AAM4C,SAAAA,EAAAC,GAAA;AAAA,SAAA,OAAAA,KAAA,cAAA,OAAA,UAAA,SAAA,KAAAA,CAAA,MAAA,qBAAA,CAAAC,EAAAD,CAAA;AAAA;AAO5C,MAAAE,IAAA,gBAAAC,EAAA;AAAA,EACEC,MAAAA;AAAAA,EACAC,cAAAA;AAAAA,EACAC,OAAAA;AAAAA,IACEC,IAAAA;AAAAA,MACEC,MAAAA;AAAAA,MACAC,SAAAA;AAAAA;IAEFC,KAAAA;AAAAA;;IAEaC,OAAAA;AAAAA,EAAM,GAAA;;MACXC,GAAAA;AAAAA,aACRC,IAAAC,EAAA,GAEAC,IADAC,EAAA,EACA,MACAT,IAAAU,EAAA,MAAA;;AAEE,UAAAC;;IAGF,CAAA;;;QAMMd,MAAAA;AAAAA,QACAe,QAAAA;AAAAA;QAEA;AAAA,MACF,CAAA;AAAA;;AAIG,UAAAC;;;QACqC,QAAA;AAAA,QAAA,KAAAb,EAAA;AAAA,MAA6B,GAAA;AAAA,QAAAE,SAAAA,MAAAA,CAAAA,EAAAA,GAAAA,EAAAA;AAAAA,UAAA,MAAA;AAAA,UAAA,MAAA;AAAA;;;QAElD,CAAA,CAAA;AAAA,MAAA,CAAA;AAAA;EAIzB;AACF,CAAA;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../src/components/edit-button/index.tsx"],"sourcesContent":["import type { SkyLayoutRouteMeta } from '@/router'\nimport { skyConfig } from '@/setup'\nimport { ElButton, type ButtonProps } from 'element-plus'\nimport { computed, defineComponent } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport { useRoute, useRouter } from 'vue-router'\nimport { SkyCanAccess } from '../can-access'\n\nexport interface SkyEditButtonProps {\n id?: string\n row?: Record<string, unknown>\n}\n\nexport const SkyEditButton = defineComponent<SkyEditButtonProps & Partial<ButtonProps>>({\n name: 'SkyEditButton',\n inheritAttrs: false,\n props: {\n id: {\n type: String,\n default: 'id',\n },\n row: Object,\n },\n setup(props, { attrs }) {\n const { t } = useI18n()\n const router = useRouter()\n const route = useRoute()\n const routeMeta = route.meta as SkyLayoutRouteMeta\n const id = computed(() => {\n const v = props.row?.[props.id!]\n if (v) {\n return String(v)\n }\n })\n\n const onEdit = () => {\n const routeName = skyConfig.getEditRouteName(routeMeta.resource)\n if (id.value && router.hasRoute(routeName)) {\n router.push({\n name: routeName,\n params: {\n id: id.value,\n },\n })\n }\n }\n\n return () => (\n <SkyCanAccess resource={routeMeta.resource} action=\"edit\" row={id.value}>\n <ElButton link type=\"primary\" onClick={onEdit} {...attrs}>\n {t('button.edit')}\n </ElButton>\n </SkyCanAccess>\n )\n },\n})\n"],"names":["_isSlot","s","_isVNode","SkyEditButton","defineComponent","name","inheritAttrs","props","id","type","default","row","attrs","t","router","useRouter","routeMeta","useRoute","computed","v","params","_slot"],"mappings":";;;;;;;AAM4C,SAAAA,EAAAC,GAAA;AAAA,SAAA,OAAAA,KAAA,cAAA,OAAA,UAAA,SAAA,KAAAA,CAAA,MAAA,qBAAA,CAAAC,EAAAD,CAAA;AAAA;AAO5C,MAAAE,IAAA,gBAAAC,EAAA;AAAA,EACEC,MAAAA;AAAAA,EACAC,cAAAA;AAAAA,EACAC,OAAAA;AAAAA,IACEC,IAAAA;AAAAA,MACEC,MAAAA;AAAAA,MACAC,SAAAA;AAAAA;IAEFC,KAAAA;AAAAA;;IAEaC,OAAAA;AAAAA,EAAM,GAAA;;MACXC,GAAAA;AAAAA,aACRC,IAAAC,EAAA,GAEAC,IADAC,EAAA,EACA,MACAT,IAAAU,EAAA,MAAA;;AAEE,UAAAC;;IAGF,CAAA;;;QAMMd,MAAAA;AAAAA,QACAe,QAAAA;AAAAA;QAEA;AAAA,MACF,CAAA;AAAA;;AAIG,UAAAC;;;QACqC,QAAA;AAAA,QAAA,KAAAb,EAAA;AAAA,MAA6B,GAAA;AAAA,QAAAE,SAAAA,MAAAA,CAAAA,EAAAA,GAAAA,EAAAA;AAAAA,UAAA,MAAA;AAAA,UAAA,MAAA;AAAA;;;QAElD,CAAA,CAAA;AAAA,MAAA,CAAA;AAAA;EAIzB;AACF,CAAA;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../src/components/file-multiple-input/index.tsx"],"sourcesContent":["import { EpPlus } from '@/icons/EpPlus'\r\nimport type { GetManyResult, Identifier, SkyUploadRawFile } from '@/provides'\r\nimport {\r\n ElDialog,\r\n ElFormItem,\r\n ElIcon,\r\n ElLoadingDirective,\r\n ElUpload,\r\n genFileId,\r\n type FormItemRule,\r\n type UploadFile,\r\n type UploadInstance,\r\n type UploadProps,\r\n type UploadRawFile,\r\n} from 'element-plus'\r\nimport {\r\n cloneVNode,\r\n computed,\r\n defineComponent,\r\n Fragment,\r\n h,\r\n ref,\r\n shallowRef,\r\n useTemplateRef,\r\n withDirectives,\r\n} from 'vue'\r\nimport { useRoute } from 'vue-router'\r\nimport { useAsyncState } from '@vueuse/core'\r\nimport { useForm, useFormGrid, type SkyUploadUserFile } from '@/hooks'\r\nimport { skyConfig } from '@/setup'\r\nimport type { SkyLayoutRouteMeta } from '@/router'\r\nimport { SkyCanAccess } from '../can-access'\r\nimport { EpUploadFilled } from '@/icons/EpUploadFilled'\r\nimport { useI18n } from 'vue-i18n'\r\n\r\nexport interface SkyFileMultipleInputProps {\r\n reference: string\r\n source: string\r\n type?: 'file' | 'image'\r\n dataId?: string\r\n dataName?: string\r\n dataUrl?: string\r\n label?: string\r\n rules?: FormItemRule | FormItemRule[]\r\n name?: string\r\n withCredentials?: boolean\r\n limit?: number\r\n fileList?: SkyUploadUserFile[]\r\n autoUpload?: UploadProps['autoUpload']\r\n}\r\n\r\nexport const SkyFileMultipleInput = defineComponent<\r\n SkyFileMultipleInputProps & Partial<UploadProps>\r\n>({\r\n name: 'SkyFileMultipleInput',\r\n inheritAttrs: false,\r\n props: {\r\n reference: {\r\n type: String,\r\n required: true,\r\n },\r\n source: {\r\n type: String,\r\n required: true,\r\n },\r\n type: {\r\n type: String,\r\n default: 'file',\r\n },\r\n dataId: {\r\n type: String,\r\n default: 'id',\r\n },\r\n dataName: {\r\n type: String,\r\n default: 'name',\r\n },\r\n dataUrl: {\r\n type: String,\r\n default: 'url',\r\n },\r\n label: String,\r\n rules: Object,\r\n limit: {\r\n type: Number,\r\n default: 1,\r\n },\r\n fileList: {\r\n type: Array,\r\n default: () => [],\r\n },\r\n autoUpload: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n },\r\n setup(props, { slots, attrs }) {\r\n const { t } = useI18n()\r\n const route = useRoute()\r\n const formGrid = useFormGrid()\r\n const { formData, editData } = useForm()!\r\n const title = computed<string>(() => props.label || props.source)\r\n // init fileList\r\n const fileList = shallowRef<SkyUploadUserFile[]>(props.fileList!)\r\n const uploadRef = useTemplateRef<UploadInstance>('uploadRef')\r\n const routeMeta = route.meta as SkyLayoutRouteMeta\r\n\r\n if (editData.value) {\r\n formData[props.source] = editData.value[props.source]\r\n }\r\n\r\n const onExceed = (files: File[]) => {\r\n if (props.limit === 1) {\r\n uploadRef.value?.clearFiles()\r\n const file = files[0] as UploadRawFile\r\n file.uid = genFileId()\r\n uploadRef.value?.handleStart(file)\r\n if (props.autoUpload) {\r\n uploadRef.value?.submit()\r\n }\r\n }\r\n }\r\n\r\n const onSuccess = () => {\r\n const ids: Identifier[] = []\r\n for (const fl of fileList.value) {\r\n if (fl.id) {\r\n ids.push(fl.id as Identifier)\r\n } else {\r\n const raw = fl.raw as SkyUploadRawFile | undefined\r\n if (raw?.data?.id) {\r\n fl.id = raw.data.id as Identifier\r\n ids.push(raw.data.id as Identifier)\r\n }\r\n }\r\n }\r\n formData[props.source] = ids\r\n }\r\n\r\n const preview = ref(false)\r\n const previewUrl = ref<string>()\r\n const onPreview = (file: UploadFile) => {\r\n previewUrl.value = file.url\r\n preview.value = true\r\n }\r\n\r\n let controller: AbortController | undefined\r\n const { isLoading } = useAsyncState<GetManyResult | undefined>(\r\n async () => {\r\n const ids = formData[props.source]\r\n if (ids) {\r\n controller = new AbortController()\r\n const res = await skyConfig.dataProvider?.getMany?.(props.reference, {\r\n ids: ids as Identifier[],\r\n signal: controller.signal,\r\n })\r\n\r\n if (res?.data) {\r\n fileList.value = res.data.map((d) => ({\r\n id: d[props.dataId!] as Identifier,\r\n name: d[props.dataName!] as string,\r\n url: d[props.dataUrl!] as string,\r\n }))\r\n return res\r\n }\r\n }\r\n },\r\n undefined,\r\n {\r\n immediate: true,\r\n },\r\n )\r\n\r\n const action = ref('')\r\n const data = shallowRef<Record<string, unknown>>()\r\n const headers = shallowRef<Record<string, unknown>>()\r\n const method = ref()\r\n const name = ref<string>()\r\n const beforeUpload = async (rawFile: SkyUploadRawFile) => {\r\n const res = await skyConfig.dataProvider?.getUploadConfig?.({\r\n file: rawFile,\r\n })\r\n if (res?.data) {\r\n action.value = res.data.action\r\n data.value = res.data.data\r\n headers.value = res.data.headers\r\n method.value = res.data.method\r\n name.value = res.data.name\r\n rawFile.data = {\r\n id: res.data.file.id,\r\n name: res.data.file.name,\r\n url: res.data.file.url,\r\n }\r\n }\r\n }\r\n\r\n const accept = computed(() => (props.type === 'image' ? 'image/*' : undefined))\r\n const listType = computed(() => (props.type === 'image' ? 'picture-card' : 'text'))\r\n\r\n return () => (\r\n <SkyCanAccess resource={routeMeta.resource} action={['create', 'edit']} column={props.source}>\r\n <ElFormItem\r\n class={['sky-file-multiple-input', `is-${props.type}`]}\r\n label={title.value}\r\n prop={props.source}\r\n rules={props.rules}\r\n style={formGrid ? `grid-area: ${props.source}` : ''}\r\n >\r\n <ElUpload\r\n ref=\"uploadRef\"\r\n action={action.value}\r\n method={method.value}\r\n name={props.name}\r\n withCredentials={props.withCredentials}\r\n multiple={props.limit! > 1}\r\n limit={props.limit}\r\n beforeUpload={beforeUpload}\r\n onSuccess={onSuccess}\r\n onExceed={onExceed}\r\n headers={headers.value}\r\n data={data.value}\r\n listType={listType.value}\r\n fileList={fileList.value}\r\n onUpdate:file-list={(fs: SkyUploadUserFile[]) => (fileList.value = fs)}\r\n autoUpload={props.autoUpload}\r\n drag={props.type === 'file'}\r\n showFileList\r\n onPreview={onPreview}\r\n // https://developer.mozilla.org/zh-CN/docs/Web/HTML/Reference/Attributes/accept\r\n accept={accept.value}\r\n {...attrs}\r\n >\r\n {{\r\n default: () =>\r\n props.type === 'image' ? (\r\n <ElIcon>\r\n <EpPlus />\r\n </ElIcon>\r\n ) : (\r\n <>\r\n <ElIcon class=\"sky-file-multiple-input__icon\">\r\n <EpUploadFilled />\r\n </ElIcon>\r\n <div class=\"sky-file-multiple-input__text\">\r\n {t('upload.drop')}\r\n <em>{t('upload.click')}</em>\r\n </div>\r\n </>\r\n ),\r\n file: (scope: { file: UploadFile; index: number }) => {\r\n if (slots.default) {\r\n const vnodes = slots.default()\r\n return withDirectives(\r\n h(\r\n Fragment,\r\n vnodes.map((vnode) => cloneVNode(vnode, { ...scope })),\r\n ),\r\n [[ElLoadingDirective, isLoading.value]],\r\n )\r\n }\r\n },\r\n }}\r\n </ElUpload>\r\n <ElDialog\r\n appendToBody\r\n modelValue={preview.value}\r\n onUpdate:modelValue={(v) => (preview.value = v)}\r\n >\r\n <img class=\"sky-file-multiple-input__img\" src={previewUrl.value} />\r\n </ElDialog>\r\n </ElFormItem>\r\n </SkyCanAccess>\r\n )\r\n },\r\n})\r\n"],"names":["SkyFileMultipleInput","defineComponent","name","inheritAttrs","props","reference","type","required","source","default","dataId","dataName","dataUrl","label","rules","limit","fileList","autoUpload","attrs","t","route","useRoute","formGrid","useFormGrid","editData","title","computed","shallowRef","uploadRef","useTemplateRef","routeMeta","formData","file","files","fl","ids","raw","preview","ref","previewUrl","controller","isLoading","res","skyConfig","id","url","immediate","action","data","headers","method","beforeUpload","rawFile","accept","listType","onSuccess","onExceed","fs","onPreview","_createVNode","_Fragment","ElIcon","vnodes","slots","withDirectives","h","Fragment","vnode","cloneVNode","ElLoadingDirective","v"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/file-multiple-input/index.tsx"],"sourcesContent":["import { EpPlus } from '@/icons/EpPlus'\nimport type { GetManyResult, Identifier, SkyUploadRawFile } from '@/provides'\nimport {\n ElDialog,\n ElFormItem,\n ElIcon,\n ElLoadingDirective,\n ElUpload,\n genFileId,\n type FormItemRule,\n type UploadFile,\n type UploadInstance,\n type UploadProps,\n type UploadRawFile,\n} from 'element-plus'\nimport {\n cloneVNode,\n computed,\n defineComponent,\n Fragment,\n h,\n ref,\n shallowRef,\n useTemplateRef,\n withDirectives,\n} from 'vue'\nimport { useRoute } from 'vue-router'\nimport { useAsyncState } from '@vueuse/core'\nimport { useForm, useFormGrid, type SkyUploadUserFile } from '@/hooks'\nimport { skyConfig } from '@/setup'\nimport type { SkyLayoutRouteMeta } from '@/router'\nimport { SkyCanAccess } from '../can-access'\nimport { EpUploadFilled } from '@/icons/EpUploadFilled'\nimport { useI18n } from 'vue-i18n'\n\nexport interface SkyFileMultipleInputProps {\n reference: string\n source: string\n type?: 'file' | 'image'\n dataId?: string\n dataName?: string\n dataUrl?: string\n label?: string\n rules?: FormItemRule | FormItemRule[]\n name?: string\n withCredentials?: boolean\n limit?: number\n fileList?: SkyUploadUserFile[]\n autoUpload?: UploadProps['autoUpload']\n}\n\nexport const SkyFileMultipleInput = defineComponent<\n SkyFileMultipleInputProps & Partial<UploadProps>\n>({\n name: 'SkyFileMultipleInput',\n inheritAttrs: false,\n props: {\n reference: {\n type: String,\n required: true,\n },\n source: {\n type: String,\n required: true,\n },\n type: {\n type: String,\n default: 'file',\n },\n dataId: {\n type: String,\n default: 'id',\n },\n dataName: {\n type: String,\n default: 'name',\n },\n dataUrl: {\n type: String,\n default: 'url',\n },\n label: String,\n rules: Object,\n limit: {\n type: Number,\n default: 1,\n },\n fileList: {\n type: Array,\n default: () => [],\n },\n autoUpload: {\n type: Boolean,\n default: true,\n },\n },\n setup(props, { slots, attrs }) {\n const { t } = useI18n()\n const route = useRoute()\n const formGrid = useFormGrid()\n const { formData, editData } = useForm()!\n const title = computed<string>(() => props.label || props.source)\n // init fileList\n const fileList = shallowRef<SkyUploadUserFile[]>(props.fileList!)\n const uploadRef = useTemplateRef<UploadInstance>('uploadRef')\n const routeMeta = route.meta as SkyLayoutRouteMeta\n\n if (editData.value) {\n formData[props.source] = editData.value[props.source]\n }\n\n const onExceed = (files: File[]) => {\n if (props.limit === 1) {\n uploadRef.value?.clearFiles()\n const file = files[0] as UploadRawFile\n file.uid = genFileId()\n uploadRef.value?.handleStart(file)\n if (props.autoUpload) {\n uploadRef.value?.submit()\n }\n }\n }\n\n const onSuccess = () => {\n const ids: Identifier[] = []\n for (const fl of fileList.value) {\n if (fl.id) {\n ids.push(fl.id as Identifier)\n } else {\n const raw = fl.raw as SkyUploadRawFile | undefined\n if (raw?.data?.id) {\n fl.id = raw.data.id as Identifier\n ids.push(raw.data.id as Identifier)\n }\n }\n }\n formData[props.source] = ids\n }\n\n const preview = ref(false)\n const previewUrl = ref<string>()\n const onPreview = (file: UploadFile) => {\n previewUrl.value = file.url\n preview.value = true\n }\n\n let controller: AbortController | undefined\n const { isLoading } = useAsyncState<GetManyResult | undefined>(\n async () => {\n const ids = formData[props.source]\n if (ids) {\n controller = new AbortController()\n const res = await skyConfig.dataProvider?.getMany?.(props.reference, {\n ids: ids as Identifier[],\n signal: controller.signal,\n })\n\n if (res?.data) {\n fileList.value = res.data.map((d) => ({\n id: d[props.dataId!] as Identifier,\n name: d[props.dataName!] as string,\n url: d[props.dataUrl!] as string,\n }))\n return res\n }\n }\n },\n undefined,\n {\n immediate: true,\n },\n )\n\n const action = ref('')\n const data = shallowRef<Record<string, unknown>>()\n const headers = shallowRef<Record<string, unknown>>()\n const method = ref()\n const name = ref<string>()\n const beforeUpload = async (rawFile: SkyUploadRawFile) => {\n const res = await skyConfig.dataProvider?.getUploadConfig?.({\n file: rawFile,\n })\n if (res?.data) {\n action.value = res.data.action\n data.value = res.data.data\n headers.value = res.data.headers\n method.value = res.data.method\n name.value = res.data.name\n rawFile.data = {\n id: res.data.file.id,\n name: res.data.file.name,\n url: res.data.file.url,\n }\n }\n }\n\n const accept = computed(() => (props.type === 'image' ? 'image/*' : undefined))\n const listType = computed(() => (props.type === 'image' ? 'picture-card' : 'text'))\n\n return () => (\n <SkyCanAccess resource={routeMeta.resource} action={['create', 'edit']} column={props.source}>\n <ElFormItem\n class={['sky-file-multiple-input', `is-${props.type}`]}\n label={title.value}\n prop={props.source}\n rules={props.rules}\n style={formGrid ? `grid-area: ${props.source}` : ''}\n >\n <ElUpload\n ref=\"uploadRef\"\n action={action.value}\n method={method.value}\n name={props.name}\n withCredentials={props.withCredentials}\n multiple={props.limit! > 1}\n limit={props.limit}\n beforeUpload={beforeUpload}\n onSuccess={onSuccess}\n onExceed={onExceed}\n headers={headers.value}\n data={data.value}\n listType={listType.value}\n fileList={fileList.value}\n onUpdate:file-list={(fs: SkyUploadUserFile[]) => (fileList.value = fs)}\n autoUpload={props.autoUpload}\n drag={props.type === 'file'}\n showFileList\n onPreview={onPreview}\n // https://developer.mozilla.org/zh-CN/docs/Web/HTML/Reference/Attributes/accept\n accept={accept.value}\n {...attrs}\n >\n {{\n default: () =>\n props.type === 'image' ? (\n <ElIcon>\n <EpPlus />\n </ElIcon>\n ) : (\n <>\n <ElIcon class=\"sky-file-multiple-input__icon\">\n <EpUploadFilled />\n </ElIcon>\n <div class=\"sky-file-multiple-input__text\">\n {t('upload.drop')}\n <em>{t('upload.click')}</em>\n </div>\n </>\n ),\n file: (scope: { file: UploadFile; index: number }) => {\n if (slots.default) {\n const vnodes = slots.default()\n return withDirectives(\n h(\n Fragment,\n vnodes.map((vnode) => cloneVNode(vnode, { ...scope })),\n ),\n [[ElLoadingDirective, isLoading.value]],\n )\n }\n },\n }}\n </ElUpload>\n <ElDialog\n appendToBody\n modelValue={preview.value}\n onUpdate:modelValue={(v) => (preview.value = v)}\n >\n <img class=\"sky-file-multiple-input__img\" src={previewUrl.value} />\n </ElDialog>\n </ElFormItem>\n </SkyCanAccess>\n )\n },\n})\n"],"names":["SkyFileMultipleInput","defineComponent","name","inheritAttrs","props","reference","type","required","source","default","dataId","dataName","dataUrl","label","rules","limit","fileList","autoUpload","attrs","t","route","useRoute","formGrid","useFormGrid","editData","title","computed","shallowRef","uploadRef","useTemplateRef","routeMeta","formData","file","files","fl","ids","raw","preview","ref","previewUrl","controller","isLoading","res","skyConfig","id","url","immediate","action","data","headers","method","beforeUpload","rawFile","accept","listType","onSuccess","onExceed","fs","onPreview","_createVNode","_Fragment","ElIcon","vnodes","slots","withDirectives","h","Fragment","vnode","cloneVNode","ElLoadingDirective","v"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../src/components/file-multiple-input/index.tsx"],"sourcesContent":["import { EpPlus } from '@/icons/EpPlus'\r\nimport type { GetManyResult, Identifier, SkyUploadRawFile } from '@/provides'\r\nimport {\r\n ElDialog,\r\n ElFormItem,\r\n ElIcon,\r\n ElLoadingDirective,\r\n ElUpload,\r\n genFileId,\r\n type FormItemRule,\r\n type UploadFile,\r\n type UploadInstance,\r\n type UploadProps,\r\n type UploadRawFile,\r\n} from 'element-plus'\r\nimport {\r\n cloneVNode,\r\n computed,\r\n defineComponent,\r\n Fragment,\r\n h,\r\n ref,\r\n shallowRef,\r\n useTemplateRef,\r\n withDirectives,\r\n} from 'vue'\r\nimport { useRoute } from 'vue-router'\r\nimport { useAsyncState } from '@vueuse/core'\r\nimport { useForm, useFormGrid, type SkyUploadUserFile } from '@/hooks'\r\nimport { skyConfig } from '@/setup'\r\nimport type { SkyLayoutRouteMeta } from '@/router'\r\nimport { SkyCanAccess } from '../can-access'\r\nimport { EpUploadFilled } from '@/icons/EpUploadFilled'\r\nimport { useI18n } from 'vue-i18n'\r\n\r\nexport interface SkyFileMultipleInputProps {\r\n reference: string\r\n source: string\r\n type?: 'file' | 'image'\r\n dataId?: string\r\n dataName?: string\r\n dataUrl?: string\r\n label?: string\r\n rules?: FormItemRule | FormItemRule[]\r\n name?: string\r\n withCredentials?: boolean\r\n limit?: number\r\n fileList?: SkyUploadUserFile[]\r\n autoUpload?: UploadProps['autoUpload']\r\n}\r\n\r\nexport const SkyFileMultipleInput = defineComponent<\r\n SkyFileMultipleInputProps & Partial<UploadProps>\r\n>({\r\n name: 'SkyFileMultipleInput',\r\n inheritAttrs: false,\r\n props: {\r\n reference: {\r\n type: String,\r\n required: true,\r\n },\r\n source: {\r\n type: String,\r\n required: true,\r\n },\r\n type: {\r\n type: String,\r\n default: 'file',\r\n },\r\n dataId: {\r\n type: String,\r\n default: 'id',\r\n },\r\n dataName: {\r\n type: String,\r\n default: 'name',\r\n },\r\n dataUrl: {\r\n type: String,\r\n default: 'url',\r\n },\r\n label: String,\r\n rules: Object,\r\n limit: {\r\n type: Number,\r\n default: 1,\r\n },\r\n fileList: {\r\n type: Array,\r\n default: () => [],\r\n },\r\n autoUpload: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n },\r\n setup(props, { slots, attrs }) {\r\n const { t } = useI18n()\r\n const route = useRoute()\r\n const formGrid = useFormGrid()\r\n const { formData, editData } = useForm()!\r\n const title = computed<string>(() => props.label || props.source)\r\n // init fileList\r\n const fileList = shallowRef<SkyUploadUserFile[]>(props.fileList!)\r\n const uploadRef = useTemplateRef<UploadInstance>('uploadRef')\r\n const routeMeta = route.meta as SkyLayoutRouteMeta\r\n\r\n if (editData.value) {\r\n formData[props.source] = editData.value[props.source]\r\n }\r\n\r\n const onExceed = (files: File[]) => {\r\n if (props.limit === 1) {\r\n uploadRef.value?.clearFiles()\r\n const file = files[0] as UploadRawFile\r\n file.uid = genFileId()\r\n uploadRef.value?.handleStart(file)\r\n if (props.autoUpload) {\r\n uploadRef.value?.submit()\r\n }\r\n }\r\n }\r\n\r\n const onSuccess = () => {\r\n const ids: Identifier[] = []\r\n for (const fl of fileList.value) {\r\n if (fl.id) {\r\n ids.push(fl.id as Identifier)\r\n } else {\r\n const raw = fl.raw as SkyUploadRawFile | undefined\r\n if (raw?.data?.id) {\r\n fl.id = raw.data.id as Identifier\r\n ids.push(raw.data.id as Identifier)\r\n }\r\n }\r\n }\r\n formData[props.source] = ids\r\n }\r\n\r\n const preview = ref(false)\r\n const previewUrl = ref<string>()\r\n const onPreview = (file: UploadFile) => {\r\n previewUrl.value = file.url\r\n preview.value = true\r\n }\r\n\r\n let controller: AbortController | undefined\r\n const { isLoading } = useAsyncState<GetManyResult | undefined>(\r\n async () => {\r\n const ids = formData[props.source]\r\n if (ids) {\r\n controller = new AbortController()\r\n const res = await skyConfig.dataProvider?.getMany?.(props.reference, {\r\n ids: ids as Identifier[],\r\n signal: controller.signal,\r\n })\r\n\r\n if (res?.data) {\r\n fileList.value = res.data.map((d) => ({\r\n id: d[props.dataId!] as Identifier,\r\n name: d[props.dataName!] as string,\r\n url: d[props.dataUrl!] as string,\r\n }))\r\n return res\r\n }\r\n }\r\n },\r\n undefined,\r\n {\r\n immediate: true,\r\n },\r\n )\r\n\r\n const action = ref('')\r\n const data = shallowRef<Record<string, unknown>>()\r\n const headers = shallowRef<Record<string, unknown>>()\r\n const method = ref()\r\n const name = ref<string>()\r\n const beforeUpload = async (rawFile: SkyUploadRawFile) => {\r\n const res = await skyConfig.dataProvider?.getUploadConfig?.({\r\n file: rawFile,\r\n })\r\n if (res?.data) {\r\n action.value = res.data.action\r\n data.value = res.data.data\r\n headers.value = res.data.headers\r\n method.value = res.data.method\r\n name.value = res.data.name\r\n rawFile.data = {\r\n id: res.data.file.id,\r\n name: res.data.file.name,\r\n url: res.data.file.url,\r\n }\r\n }\r\n }\r\n\r\n const accept = computed(() => (props.type === 'image' ? 'image/*' : undefined))\r\n const listType = computed(() => (props.type === 'image' ? 'picture-card' : 'text'))\r\n\r\n return () => (\r\n <SkyCanAccess resource={routeMeta.resource} action={['create', 'edit']} column={props.source}>\r\n <ElFormItem\r\n class={['sky-file-multiple-input', `is-${props.type}`]}\r\n label={title.value}\r\n prop={props.source}\r\n rules={props.rules}\r\n style={formGrid ? `grid-area: ${props.source}` : ''}\r\n >\r\n <ElUpload\r\n ref=\"uploadRef\"\r\n action={action.value}\r\n method={method.value}\r\n name={props.name}\r\n withCredentials={props.withCredentials}\r\n multiple={props.limit! > 1}\r\n limit={props.limit}\r\n beforeUpload={beforeUpload}\r\n onSuccess={onSuccess}\r\n onExceed={onExceed}\r\n headers={headers.value}\r\n data={data.value}\r\n listType={listType.value}\r\n fileList={fileList.value}\r\n onUpdate:file-list={(fs: SkyUploadUserFile[]) => (fileList.value = fs)}\r\n autoUpload={props.autoUpload}\r\n drag={props.type === 'file'}\r\n showFileList\r\n onPreview={onPreview}\r\n // https://developer.mozilla.org/zh-CN/docs/Web/HTML/Reference/Attributes/accept\r\n accept={accept.value}\r\n {...attrs}\r\n >\r\n {{\r\n default: () =>\r\n props.type === 'image' ? (\r\n <ElIcon>\r\n <EpPlus />\r\n </ElIcon>\r\n ) : (\r\n <>\r\n <ElIcon class=\"sky-file-multiple-input__icon\">\r\n <EpUploadFilled />\r\n </ElIcon>\r\n <div class=\"sky-file-multiple-input__text\">\r\n {t('upload.drop')}\r\n <em>{t('upload.click')}</em>\r\n </div>\r\n </>\r\n ),\r\n file: (scope: { file: UploadFile; index: number }) => {\r\n if (slots.default) {\r\n const vnodes = slots.default()\r\n return withDirectives(\r\n h(\r\n Fragment,\r\n vnodes.map((vnode) => cloneVNode(vnode, { ...scope })),\r\n ),\r\n [[ElLoadingDirective, isLoading.value]],\r\n )\r\n }\r\n },\r\n }}\r\n </ElUpload>\r\n <ElDialog\r\n appendToBody\r\n modelValue={preview.value}\r\n onUpdate:modelValue={(v) => (preview.value = v)}\r\n >\r\n <img class=\"sky-file-multiple-input__img\" src={previewUrl.value} />\r\n </ElDialog>\r\n </ElFormItem>\r\n </SkyCanAccess>\r\n )\r\n },\r\n})\r\n"],"names":["SkyFileMultipleInput","defineComponent","name","inheritAttrs","props","reference","type","required","source","default","dataId","dataName","dataUrl","label","rules","limit","fileList","autoUpload","attrs","t","route","useRoute","formGrid","useFormGrid","editData","title","computed","shallowRef","uploadRef","useTemplateRef","routeMeta","formData","file","files","fl","ids","raw","preview","ref","previewUrl","controller","isLoading","res","skyConfig","id","url","immediate","action","data","headers","method","beforeUpload","rawFile","accept","listType","onSuccess","onExceed","fs","onPreview","_createVNode","_Fragment","ElIcon","vnodes","slots","withDirectives","h","Fragment","vnode","cloneVNode","ElLoadingDirective","v"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../src/components/file-multiple-input/index.tsx"],"sourcesContent":["import { EpPlus } from '@/icons/EpPlus'\nimport type { GetManyResult, Identifier, SkyUploadRawFile } from '@/provides'\nimport {\n ElDialog,\n ElFormItem,\n ElIcon,\n ElLoadingDirective,\n ElUpload,\n genFileId,\n type FormItemRule,\n type UploadFile,\n type UploadInstance,\n type UploadProps,\n type UploadRawFile,\n} from 'element-plus'\nimport {\n cloneVNode,\n computed,\n defineComponent,\n Fragment,\n h,\n ref,\n shallowRef,\n useTemplateRef,\n withDirectives,\n} from 'vue'\nimport { useRoute } from 'vue-router'\nimport { useAsyncState } from '@vueuse/core'\nimport { useForm, useFormGrid, type SkyUploadUserFile } from '@/hooks'\nimport { skyConfig } from '@/setup'\nimport type { SkyLayoutRouteMeta } from '@/router'\nimport { SkyCanAccess } from '../can-access'\nimport { EpUploadFilled } from '@/icons/EpUploadFilled'\nimport { useI18n } from 'vue-i18n'\n\nexport interface SkyFileMultipleInputProps {\n reference: string\n source: string\n type?: 'file' | 'image'\n dataId?: string\n dataName?: string\n dataUrl?: string\n label?: string\n rules?: FormItemRule | FormItemRule[]\n name?: string\n withCredentials?: boolean\n limit?: number\n fileList?: SkyUploadUserFile[]\n autoUpload?: UploadProps['autoUpload']\n}\n\nexport const SkyFileMultipleInput = defineComponent<\n SkyFileMultipleInputProps & Partial<UploadProps>\n>({\n name: 'SkyFileMultipleInput',\n inheritAttrs: false,\n props: {\n reference: {\n type: String,\n required: true,\n },\n source: {\n type: String,\n required: true,\n },\n type: {\n type: String,\n default: 'file',\n },\n dataId: {\n type: String,\n default: 'id',\n },\n dataName: {\n type: String,\n default: 'name',\n },\n dataUrl: {\n type: String,\n default: 'url',\n },\n label: String,\n rules: Object,\n limit: {\n type: Number,\n default: 1,\n },\n fileList: {\n type: Array,\n default: () => [],\n },\n autoUpload: {\n type: Boolean,\n default: true,\n },\n },\n setup(props, { slots, attrs }) {\n const { t } = useI18n()\n const route = useRoute()\n const formGrid = useFormGrid()\n const { formData, editData } = useForm()!\n const title = computed<string>(() => props.label || props.source)\n // init fileList\n const fileList = shallowRef<SkyUploadUserFile[]>(props.fileList!)\n const uploadRef = useTemplateRef<UploadInstance>('uploadRef')\n const routeMeta = route.meta as SkyLayoutRouteMeta\n\n if (editData.value) {\n formData[props.source] = editData.value[props.source]\n }\n\n const onExceed = (files: File[]) => {\n if (props.limit === 1) {\n uploadRef.value?.clearFiles()\n const file = files[0] as UploadRawFile\n file.uid = genFileId()\n uploadRef.value?.handleStart(file)\n if (props.autoUpload) {\n uploadRef.value?.submit()\n }\n }\n }\n\n const onSuccess = () => {\n const ids: Identifier[] = []\n for (const fl of fileList.value) {\n if (fl.id) {\n ids.push(fl.id as Identifier)\n } else {\n const raw = fl.raw as SkyUploadRawFile | undefined\n if (raw?.data?.id) {\n fl.id = raw.data.id as Identifier\n ids.push(raw.data.id as Identifier)\n }\n }\n }\n formData[props.source] = ids\n }\n\n const preview = ref(false)\n const previewUrl = ref<string>()\n const onPreview = (file: UploadFile) => {\n previewUrl.value = file.url\n preview.value = true\n }\n\n let controller: AbortController | undefined\n const { isLoading } = useAsyncState<GetManyResult | undefined>(\n async () => {\n const ids = formData[props.source]\n if (ids) {\n controller = new AbortController()\n const res = await skyConfig.dataProvider?.getMany?.(props.reference, {\n ids: ids as Identifier[],\n signal: controller.signal,\n })\n\n if (res?.data) {\n fileList.value = res.data.map((d) => ({\n id: d[props.dataId!] as Identifier,\n name: d[props.dataName!] as string,\n url: d[props.dataUrl!] as string,\n }))\n return res\n }\n }\n },\n undefined,\n {\n immediate: true,\n },\n )\n\n const action = ref('')\n const data = shallowRef<Record<string, unknown>>()\n const headers = shallowRef<Record<string, unknown>>()\n const method = ref()\n const name = ref<string>()\n const beforeUpload = async (rawFile: SkyUploadRawFile) => {\n const res = await skyConfig.dataProvider?.getUploadConfig?.({\n file: rawFile,\n })\n if (res?.data) {\n action.value = res.data.action\n data.value = res.data.data\n headers.value = res.data.headers\n method.value = res.data.method\n name.value = res.data.name\n rawFile.data = {\n id: res.data.file.id,\n name: res.data.file.name,\n url: res.data.file.url,\n }\n }\n }\n\n const accept = computed(() => (props.type === 'image' ? 'image/*' : undefined))\n const listType = computed(() => (props.type === 'image' ? 'picture-card' : 'text'))\n\n return () => (\n <SkyCanAccess resource={routeMeta.resource} action={['create', 'edit']} column={props.source}>\n <ElFormItem\n class={['sky-file-multiple-input', `is-${props.type}`]}\n label={title.value}\n prop={props.source}\n rules={props.rules}\n style={formGrid ? `grid-area: ${props.source}` : ''}\n >\n <ElUpload\n ref=\"uploadRef\"\n action={action.value}\n method={method.value}\n name={props.name}\n withCredentials={props.withCredentials}\n multiple={props.limit! > 1}\n limit={props.limit}\n beforeUpload={beforeUpload}\n onSuccess={onSuccess}\n onExceed={onExceed}\n headers={headers.value}\n data={data.value}\n listType={listType.value}\n fileList={fileList.value}\n onUpdate:file-list={(fs: SkyUploadUserFile[]) => (fileList.value = fs)}\n autoUpload={props.autoUpload}\n drag={props.type === 'file'}\n showFileList\n onPreview={onPreview}\n // https://developer.mozilla.org/zh-CN/docs/Web/HTML/Reference/Attributes/accept\n accept={accept.value}\n {...attrs}\n >\n {{\n default: () =>\n props.type === 'image' ? (\n <ElIcon>\n <EpPlus />\n </ElIcon>\n ) : (\n <>\n <ElIcon class=\"sky-file-multiple-input__icon\">\n <EpUploadFilled />\n </ElIcon>\n <div class=\"sky-file-multiple-input__text\">\n {t('upload.drop')}\n <em>{t('upload.click')}</em>\n </div>\n </>\n ),\n file: (scope: { file: UploadFile; index: number }) => {\n if (slots.default) {\n const vnodes = slots.default()\n return withDirectives(\n h(\n Fragment,\n vnodes.map((vnode) => cloneVNode(vnode, { ...scope })),\n ),\n [[ElLoadingDirective, isLoading.value]],\n )\n }\n },\n }}\n </ElUpload>\n <ElDialog\n appendToBody\n modelValue={preview.value}\n onUpdate:modelValue={(v) => (preview.value = v)}\n >\n <img class=\"sky-file-multiple-input__img\" src={previewUrl.value} />\n </ElDialog>\n </ElFormItem>\n </SkyCanAccess>\n )\n },\n})\n"],"names":["SkyFileMultipleInput","defineComponent","name","inheritAttrs","props","reference","type","required","source","default","dataId","dataName","dataUrl","label","rules","limit","fileList","autoUpload","attrs","t","route","useRoute","formGrid","useFormGrid","editData","title","computed","shallowRef","uploadRef","useTemplateRef","routeMeta","formData","file","files","fl","ids","raw","preview","ref","previewUrl","controller","isLoading","res","skyConfig","id","url","immediate","action","data","headers","method","beforeUpload","rawFile","accept","listType","onSuccess","onExceed","fs","onPreview","_createVNode","_Fragment","ElIcon","vnodes","slots","withDirectives","h","Fragment","vnode","cloneVNode","ElLoadingDirective","v"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../src/components/image-field/index.tsx"],"sourcesContent":["import { useHiddenTitle } from '@/hooks'\r\nimport { ElImage, type ImageProps } from 'element-plus'\r\nimport { computed, defineComponent } from 'vue'\r\nimport { useRoute } from 'vue-router'\r\nimport { SkyCanAccess } from '../can-access'\r\nimport type { SkyLayoutRouteMeta } from '@/router'\r\n\r\nexport interface SkyImageFieldProps {\r\n source: string\r\n src?: string\r\n label?: string\r\n row?: Record<string, unknown>\r\n}\r\n\r\nexport const SkyImageField = defineComponent<SkyImageFieldProps & Partial<ImageProps>>({\r\n name: 'SkyImageField',\r\n inheritAttrs: false,\r\n props: {\r\n source: {\r\n type: String,\r\n required: true,\r\n },\r\n src: {\r\n type: String,\r\n default: 'src',\r\n },\r\n label: String,\r\n row: Object,\r\n },\r\n setup(props, { attrs }) {\r\n const route = useRoute()\r\n const hiddenTitle = useHiddenTitle()\r\n const title = computed<string>(() => props.label || props.source)\r\n const routeMeta = route.meta as SkyLayoutRouteMeta\r\n\r\n const field = computed<string>(() => {\r\n const v = props.row?.[props.source]\r\n if (!v) {\r\n return ''\r\n }\r\n if (typeof v !== 'object') {\r\n return String(v)\r\n }\r\n return (v as Record<string, string>)[props.src!] || ''\r\n })\r\n\r\n return () => (\r\n <SkyCanAccess resource={routeMeta.resource} action={['list', 'show']} column={props.source}>\r\n {field.value &&\r\n (hiddenTitle ? (\r\n <ElImage src={field.value} {...attrs} />\r\n ) : (\r\n <div class=\"sky-image-field\">\r\n {title.value && <h4>{title.value}</h4>}\r\n <ElImage src={field.value} {...attrs} />\r\n </div>\r\n ))}\r\n </SkyCanAccess>\r\n )\r\n },\r\n})\r\n"],"names":["SkyImageField","defineComponent","name","inheritAttrs","props","source","type","required","src","default","label","row","attrs","route","useRoute","hiddenTitle","useHiddenTitle","title","computed","routeMeta","field","v","_createVNode","ElImage","_mergeProps"],"mappings":"s3BAcAA,EAAAC,EAAAA,gBAAA,CACEC,KAAAA,gBACAC,aAAAA,GACAC,MAAAA,CACEC,OAAAA,CACEC,KAAAA,OACAC,SAAAA,IAEFC,IAAAA,CACEF,KAAAA,OACAG,QAAAA,OAEFC,MAAAA,OACAC,IAAAA,iBAEaC,MAAAA,CAAM,EAAA,CACnB,MAAAC,EAAAC,EAAAA,SAAA,EACAC,EAAAC,EAAAA,eAAA,EACAC,EAAAC,EAAAA,SAAA,IAAAd,EAAA,OAAAA,EAAA,MAAA,EACAe,EAAAN,EAAA,KAEAO,EAAAF,EAAAA,SAAA,IAAA,oCAKE,OAAAG,GAAA,mBAGAA,EAAAjB,EAAA,GAAA,GAAA,GALE,EAMJ,CAAA,8DAG4C,OAAA,CAAA,OAAA,MAAA,EAA0B,OAAAA,EAAA,MAAsB,EAAA,CAAAK,QAAAA,IAAAA,CAAAA,EAAAA,QAAAA,EAAAA,EAAAA,YAAAA,EAAAA,QAAAA,aAAAA,CAE1E,IAAAW,EAAA,qCAC0B,MAAA,iBAAA,EAAA,CAAAH,EAAA,OAAAK,EAAAA,YAAA,KAAA,KAAA,CAAAL,EAAA,KAAA,CAAA,EAAAK,cAAAC,EAAAA,QAAAC,EAAAA,WAAA,CAGI,IAAAJ,EAAA,qBAMlD,CACF,CAAA"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/image-field/index.tsx"],"sourcesContent":["import { useHiddenTitle } from '@/hooks'\nimport { ElImage, type ImageProps } from 'element-plus'\nimport { computed, defineComponent } from 'vue'\nimport { useRoute } from 'vue-router'\nimport { SkyCanAccess } from '../can-access'\nimport type { SkyLayoutRouteMeta } from '@/router'\n\nexport interface SkyImageFieldProps {\n source: string\n src?: string\n label?: string\n row?: Record<string, unknown>\n}\n\nexport const SkyImageField = defineComponent<SkyImageFieldProps & Partial<ImageProps>>({\n name: 'SkyImageField',\n inheritAttrs: false,\n props: {\n source: {\n type: String,\n required: true,\n },\n src: {\n type: String,\n default: 'src',\n },\n label: String,\n row: Object,\n },\n setup(props, { attrs }) {\n const route = useRoute()\n const hiddenTitle = useHiddenTitle()\n const title = computed<string>(() => props.label || props.source)\n const routeMeta = route.meta as SkyLayoutRouteMeta\n\n const field = computed<string>(() => {\n const v = props.row?.[props.source]\n if (!v) {\n return ''\n }\n if (typeof v !== 'object') {\n return String(v)\n }\n return (v as Record<string, string>)[props.src!] || ''\n })\n\n return () => (\n <SkyCanAccess resource={routeMeta.resource} action={['list', 'show']} column={props.source}>\n {field.value &&\n (hiddenTitle ? (\n <ElImage src={field.value} {...attrs} />\n ) : (\n <div class=\"sky-image-field\">\n {title.value && <h4>{title.value}</h4>}\n <ElImage src={field.value} {...attrs} />\n </div>\n ))}\n </SkyCanAccess>\n )\n },\n})\n"],"names":["SkyImageField","defineComponent","name","inheritAttrs","props","source","type","required","src","default","label","row","attrs","route","useRoute","hiddenTitle","useHiddenTitle","title","computed","routeMeta","field","v","_createVNode","ElImage","_mergeProps"],"mappings":"s3BAcAA,EAAAC,EAAAA,gBAAA,CACEC,KAAAA,gBACAC,aAAAA,GACAC,MAAAA,CACEC,OAAAA,CACEC,KAAAA,OACAC,SAAAA,IAEFC,IAAAA,CACEF,KAAAA,OACAG,QAAAA,OAEFC,MAAAA,OACAC,IAAAA,iBAEaC,MAAAA,CAAM,EAAA,CACnB,MAAAC,EAAAC,EAAAA,SAAA,EACAC,EAAAC,EAAAA,eAAA,EACAC,EAAAC,EAAAA,SAAA,IAAAd,EAAA,OAAAA,EAAA,MAAA,EACAe,EAAAN,EAAA,KAEAO,EAAAF,EAAAA,SAAA,IAAA,oCAKE,OAAAG,GAAA,mBAGAA,EAAAjB,EAAA,GAAA,GAAA,GALE,EAMJ,CAAA,8DAG4C,OAAA,CAAA,OAAA,MAAA,EAA0B,OAAAA,EAAA,MAAsB,EAAA,CAAAK,QAAAA,IAAAA,CAAAA,EAAAA,QAAAA,EAAAA,EAAAA,YAAAA,EAAAA,QAAAA,aAAAA,CAE1E,IAAAW,EAAA,qCAC0B,MAAA,iBAAA,EAAA,CAAAH,EAAA,OAAAK,EAAAA,YAAA,KAAA,KAAA,CAAAL,EAAA,KAAA,CAAA,EAAAK,cAAAC,EAAAA,QAAAC,EAAAA,WAAA,CAGI,IAAAJ,EAAA,qBAMlD,CACF,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../src/components/image-field/index.tsx"],"sourcesContent":["import { useHiddenTitle } from '@/hooks'\r\nimport { ElImage, type ImageProps } from 'element-plus'\r\nimport { computed, defineComponent } from 'vue'\r\nimport { useRoute } from 'vue-router'\r\nimport { SkyCanAccess } from '../can-access'\r\nimport type { SkyLayoutRouteMeta } from '@/router'\r\n\r\nexport interface SkyImageFieldProps {\r\n source: string\r\n src?: string\r\n label?: string\r\n row?: Record<string, unknown>\r\n}\r\n\r\nexport const SkyImageField = defineComponent<SkyImageFieldProps & Partial<ImageProps>>({\r\n name: 'SkyImageField',\r\n inheritAttrs: false,\r\n props: {\r\n source: {\r\n type: String,\r\n required: true,\r\n },\r\n src: {\r\n type: String,\r\n default: 'src',\r\n },\r\n label: String,\r\n row: Object,\r\n },\r\n setup(props, { attrs }) {\r\n const route = useRoute()\r\n const hiddenTitle = useHiddenTitle()\r\n const title = computed<string>(() => props.label || props.source)\r\n const routeMeta = route.meta as SkyLayoutRouteMeta\r\n\r\n const field = computed<string>(() => {\r\n const v = props.row?.[props.source]\r\n if (!v) {\r\n return ''\r\n }\r\n if (typeof v !== 'object') {\r\n return String(v)\r\n }\r\n return (v as Record<string, string>)[props.src!] || ''\r\n })\r\n\r\n return () => (\r\n <SkyCanAccess resource={routeMeta.resource} action={['list', 'show']} column={props.source}>\r\n {field.value &&\r\n (hiddenTitle ? (\r\n <ElImage src={field.value} {...attrs} />\r\n ) : (\r\n <div class=\"sky-image-field\">\r\n {title.value && <h4>{title.value}</h4>}\r\n <ElImage src={field.value} {...attrs} />\r\n </div>\r\n ))}\r\n </SkyCanAccess>\r\n )\r\n },\r\n})\r\n"],"names":["SkyImageField","defineComponent","name","inheritAttrs","props","source","type","required","src","default","label","row","attrs","route","useRoute","hiddenTitle","useHiddenTitle","title","computed","routeMeta","field","v","_createVNode","ElImage","_mergeProps"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAcA,MAAAA,IAAA,gBAAAC,EAAA;AAAA,EACEC,MAAAA;AAAAA,EACAC,cAAAA;AAAAA,EACAC,OAAAA;AAAAA,IACEC,QAAAA;AAAAA,MACEC,MAAAA;AAAAA,MACAC,UAAAA;AAAAA;IAEFC,KAAAA;AAAAA,MACEF,MAAAA;AAAAA,MACAG,SAAAA;AAAAA;IAEFC,OAAAA;AAAAA,IACAC,KAAAA;AAAAA;;IAEaC,OAAAA;AAAAA,EAAM,GAAA;AACnB,UAAAC,IAAAC,EAAA,GACAC,IAAAC,EAAA,GACAC,IAAAC,EAAA,MAAAd,EAAA,SAAAA,EAAA,MAAA,GACAe,IAAAN,EAAA,MAEAO,IAAAF,EAAA,MAAA;;iBAKE,OAAAG,KAAA,uBAGAA,EAAAjB,EAAA,GAAA,KAAA,KALE;AAAA,IAMJ,CAAA;;;MAG4C,QAAA,CAAA,QAAA,MAAA;AAAA,MAA0B,QAAAA,EAAA;AAAA,IAAsB,GAAA;AAAA,MAAAK,SAAAA,MAAAA,CAAAA,EAAAA,UAAAA,IAAAA,EAAAA,GAAAA,EAAAA;AAAAA,QAE1E,KAAAW,EAAA;AAAA;QAC0B,OAAA;AAAA,MAAA,GAAA,CAAAH,EAAA,SAAAK,EAAA,MAAA,MAAA,CAAAL,EAAA,KAAA,CAAA,GAAAK,EAAAC,GAAAC,EAAA;AAAA,QAGI,KAAAJ,EAAA;AAAA;;EAMlD;AACF,CAAA;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../src/components/image-field/index.tsx"],"sourcesContent":["import { useHiddenTitle } from '@/hooks'\nimport { ElImage, type ImageProps } from 'element-plus'\nimport { computed, defineComponent } from 'vue'\nimport { useRoute } from 'vue-router'\nimport { SkyCanAccess } from '../can-access'\nimport type { SkyLayoutRouteMeta } from '@/router'\n\nexport interface SkyImageFieldProps {\n source: string\n src?: string\n label?: string\n row?: Record<string, unknown>\n}\n\nexport const SkyImageField = defineComponent<SkyImageFieldProps & Partial<ImageProps>>({\n name: 'SkyImageField',\n inheritAttrs: false,\n props: {\n source: {\n type: String,\n required: true,\n },\n src: {\n type: String,\n default: 'src',\n },\n label: String,\n row: Object,\n },\n setup(props, { attrs }) {\n const route = useRoute()\n const hiddenTitle = useHiddenTitle()\n const title = computed<string>(() => props.label || props.source)\n const routeMeta = route.meta as SkyLayoutRouteMeta\n\n const field = computed<string>(() => {\n const v = props.row?.[props.source]\n if (!v) {\n return ''\n }\n if (typeof v !== 'object') {\n return String(v)\n }\n return (v as Record<string, string>)[props.src!] || ''\n })\n\n return () => (\n <SkyCanAccess resource={routeMeta.resource} action={['list', 'show']} column={props.source}>\n {field.value &&\n (hiddenTitle ? (\n <ElImage src={field.value} {...attrs} />\n ) : (\n <div class=\"sky-image-field\">\n {title.value && <h4>{title.value}</h4>}\n <ElImage src={field.value} {...attrs} />\n </div>\n ))}\n </SkyCanAccess>\n )\n },\n})\n"],"names":["SkyImageField","defineComponent","name","inheritAttrs","props","source","type","required","src","default","label","row","attrs","route","useRoute","hiddenTitle","useHiddenTitle","title","computed","routeMeta","field","v","_createVNode","ElImage","_mergeProps"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAcA,MAAAA,IAAA,gBAAAC,EAAA;AAAA,EACEC,MAAAA;AAAAA,EACAC,cAAAA;AAAAA,EACAC,OAAAA;AAAAA,IACEC,QAAAA;AAAAA,MACEC,MAAAA;AAAAA,MACAC,UAAAA;AAAAA;IAEFC,KAAAA;AAAAA,MACEF,MAAAA;AAAAA,MACAG,SAAAA;AAAAA;IAEFC,OAAAA;AAAAA,IACAC,KAAAA;AAAAA;;IAEaC,OAAAA;AAAAA,EAAM,GAAA;AACnB,UAAAC,IAAAC,EAAA,GACAC,IAAAC,EAAA,GACAC,IAAAC,EAAA,MAAAd,EAAA,SAAAA,EAAA,MAAA,GACAe,IAAAN,EAAA,MAEAO,IAAAF,EAAA,MAAA;;iBAKE,OAAAG,KAAA,uBAGAA,EAAAjB,EAAA,GAAA,KAAA,KALE;AAAA,IAMJ,CAAA;;;MAG4C,QAAA,CAAA,QAAA,MAAA;AAAA,MAA0B,QAAAA,EAAA;AAAA,IAAsB,GAAA;AAAA,MAAAK,SAAAA,MAAAA,CAAAA,EAAAA,UAAAA,IAAAA,EAAAA,GAAAA,EAAAA;AAAAA,QAE1E,KAAAW,EAAA;AAAA;QAC0B,OAAA;AAAA,MAAA,GAAA,CAAAH,EAAA,SAAAK,EAAA,MAAA,MAAA,CAAAL,EAAA,KAAA,CAAA,GAAAK,EAAAC,GAAAC,EAAA;AAAA,QAGI,KAAAJ,EAAA;AAAA;;EAMlD;AACF,CAAA;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../src/components/link-field/index.tsx"],"sourcesContent":["import { useHiddenTitle } from '@/hooks'\r\nimport type { SkyLayoutRouteMeta } from '@/router'\r\nimport { ElButton, type ButtonProps } from 'element-plus'\r\nimport { computed, defineComponent } from 'vue'\r\nimport { useRoute } from 'vue-router'\r\nimport { SkyCanAccess } from '../can-access'\r\n\r\nexport interface SkyLinkFieldProps {\r\n source: string\r\n label?: string\r\n row?: Record<string, unknown>\r\n}\r\n\r\nexport const SkyLinkField = defineComponent<SkyLinkFieldProps & Partial<ButtonProps>>({\r\n name: 'SkyLinkField',\r\n inheritAttrs: false,\r\n props: {\r\n source: {\r\n type: String,\r\n required: true,\r\n },\r\n label: String,\r\n row: Object,\r\n },\r\n emits: ['click'],\r\n setup(props, { emit, attrs }) {\r\n const route = useRoute()\r\n const hiddenTitle = useHiddenTitle()\r\n const routeMeta = route.meta as SkyLayoutRouteMeta\r\n\r\n const field = computed<string>(() => {\r\n const v = props.row?.[props.source]\r\n if (v) {\r\n return String(v)\r\n }\r\n return ''\r\n })\r\n\r\n const title = computed(() => {\r\n return props.label || props.source\r\n })\r\n\r\n return () => (\r\n <SkyCanAccess resource={routeMeta.resource} action={['list', 'show']} column={props.source}>\r\n {hiddenTitle ? (\r\n <div>\r\n <ElButton type=\"primary\" text bg onClick={() => emit('click', props.row)} {...attrs}>\r\n {field.value}\r\n </ElButton>\r\n </div>\r\n ) : (\r\n <div class=\"sky-link-field\">\r\n <h4>{title.value}</h4>\r\n <ElButton type=\"primary\" text bg onClick={() => emit('click', props.row)} {...attrs}>\r\n {field.value}\r\n </ElButton>\r\n </div>\r\n )}\r\n </SkyCanAccess>\r\n )\r\n },\r\n})\r\n"],"names":["SkyLinkField","defineComponent","name","inheritAttrs","props","source","type","required","label","row","attrs","route","useRoute","hiddenTitle","useHiddenTitle","routeMeta","field","computed","v","title","default","_createVNode"],"mappings":"u3BAaAA,EAAAC,EAAAA,gBAAA,CACEC,KAAAA,eACAC,aAAAA,GACAC,MAAAA,CACEC,OAAAA,CACEC,KAAAA,OACAC,SAAAA,IAEFC,MAAAA,OACAC,IAAAA,wCAGmBC,MAAAA,CAAM,EAAA,CACzB,MAAAC,EAAAC,EAAAA,SAAA,EACAC,EAAAC,EAAAA,eAAA,EACAC,EAAAJ,EAAA,KAEAK,EAAAC,EAAAA,SAAA,IAAA,2BAEE,OAAAC,YAGA,EACF,CAAA,EAEAC,EAAAF,EAAAA,SAAA,IACEb,EAAA,OAAAA,EAAA,MACF,8DAG4C,OAAA,CAAA,OAAA,MAAA,EAA0B,OAAAA,EAAA,MAAsB,EAAA,iFAC5E,KAAA,UAAA,KAAA,GAAA,GAAA,+BAEgE,EAAAM,CAAA,EAAA,CAAWU,QAAAA,IAAAA,CAAAA,EAAAA,KAAAA,CACrE,CAAA,CAAA,CAAA,EAAAC,EAAAA,YAAA,MAAA,CAAA,MAAA,6FAKE,KAAA,UAAA,KAAA,GAAA,GAAA,+BACwD,EAAAX,CAAA,EAAA,CAAWU,QAAAA,IAAAA,CAAAA,EAAAA,KAAAA,QAO7F,CACF,CAAA"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/link-field/index.tsx"],"sourcesContent":["import { useHiddenTitle } from '@/hooks'\nimport type { SkyLayoutRouteMeta } from '@/router'\nimport { ElButton, type ButtonProps } from 'element-plus'\nimport { computed, defineComponent } from 'vue'\nimport { useRoute } from 'vue-router'\nimport { SkyCanAccess } from '../can-access'\n\nexport interface SkyLinkFieldProps {\n source: string\n label?: string\n row?: Record<string, unknown>\n}\n\nexport const SkyLinkField = defineComponent<SkyLinkFieldProps & Partial<ButtonProps>>({\n name: 'SkyLinkField',\n inheritAttrs: false,\n props: {\n source: {\n type: String,\n required: true,\n },\n label: String,\n row: Object,\n },\n emits: ['click'],\n setup(props, { emit, attrs }) {\n const route = useRoute()\n const hiddenTitle = useHiddenTitle()\n const routeMeta = route.meta as SkyLayoutRouteMeta\n\n const field = computed<string>(() => {\n const v = props.row?.[props.source]\n if (v) {\n return String(v)\n }\n return ''\n })\n\n const title = computed(() => {\n return props.label || props.source\n })\n\n return () => (\n <SkyCanAccess resource={routeMeta.resource} action={['list', 'show']} column={props.source}>\n {hiddenTitle ? (\n <div>\n <ElButton type=\"primary\" text bg onClick={() => emit('click', props.row)} {...attrs}>\n {field.value}\n </ElButton>\n </div>\n ) : (\n <div class=\"sky-link-field\">\n <h4>{title.value}</h4>\n <ElButton type=\"primary\" text bg onClick={() => emit('click', props.row)} {...attrs}>\n {field.value}\n </ElButton>\n </div>\n )}\n </SkyCanAccess>\n )\n },\n})\n"],"names":["SkyLinkField","defineComponent","name","inheritAttrs","props","source","type","required","label","row","attrs","route","useRoute","hiddenTitle","useHiddenTitle","routeMeta","field","computed","v","title","default","_createVNode"],"mappings":"u3BAaAA,EAAAC,EAAAA,gBAAA,CACEC,KAAAA,eACAC,aAAAA,GACAC,MAAAA,CACEC,OAAAA,CACEC,KAAAA,OACAC,SAAAA,IAEFC,MAAAA,OACAC,IAAAA,wCAGmBC,MAAAA,CAAM,EAAA,CACzB,MAAAC,EAAAC,EAAAA,SAAA,EACAC,EAAAC,EAAAA,eAAA,EACAC,EAAAJ,EAAA,KAEAK,EAAAC,EAAAA,SAAA,IAAA,2BAEE,OAAAC,YAGA,EACF,CAAA,EAEAC,EAAAF,EAAAA,SAAA,IACEb,EAAA,OAAAA,EAAA,MACF,8DAG4C,OAAA,CAAA,OAAA,MAAA,EAA0B,OAAAA,EAAA,MAAsB,EAAA,iFAC5E,KAAA,UAAA,KAAA,GAAA,GAAA,+BAEgE,EAAAM,CAAA,EAAA,CAAWU,QAAAA,IAAAA,CAAAA,EAAAA,KAAAA,CACrE,CAAA,CAAA,CAAA,EAAAC,EAAAA,YAAA,MAAA,CAAA,MAAA,6FAKE,KAAA,UAAA,KAAA,GAAA,GAAA,+BACwD,EAAAX,CAAA,EAAA,CAAWU,QAAAA,IAAAA,CAAAA,EAAAA,KAAAA,QAO7F,CACF,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../src/components/link-field/index.tsx"],"sourcesContent":["import { useHiddenTitle } from '@/hooks'\r\nimport type { SkyLayoutRouteMeta } from '@/router'\r\nimport { ElButton, type ButtonProps } from 'element-plus'\r\nimport { computed, defineComponent } from 'vue'\r\nimport { useRoute } from 'vue-router'\r\nimport { SkyCanAccess } from '../can-access'\r\n\r\nexport interface SkyLinkFieldProps {\r\n source: string\r\n label?: string\r\n row?: Record<string, unknown>\r\n}\r\n\r\nexport const SkyLinkField = defineComponent<SkyLinkFieldProps & Partial<ButtonProps>>({\r\n name: 'SkyLinkField',\r\n inheritAttrs: false,\r\n props: {\r\n source: {\r\n type: String,\r\n required: true,\r\n },\r\n label: String,\r\n row: Object,\r\n },\r\n emits: ['click'],\r\n setup(props, { emit, attrs }) {\r\n const route = useRoute()\r\n const hiddenTitle = useHiddenTitle()\r\n const routeMeta = route.meta as SkyLayoutRouteMeta\r\n\r\n const field = computed<string>(() => {\r\n const v = props.row?.[props.source]\r\n if (v) {\r\n return String(v)\r\n }\r\n return ''\r\n })\r\n\r\n const title = computed(() => {\r\n return props.label || props.source\r\n })\r\n\r\n return () => (\r\n <SkyCanAccess resource={routeMeta.resource} action={['list', 'show']} column={props.source}>\r\n {hiddenTitle ? (\r\n <div>\r\n <ElButton type=\"primary\" text bg onClick={() => emit('click', props.row)} {...attrs}>\r\n {field.value}\r\n </ElButton>\r\n </div>\r\n ) : (\r\n <div class=\"sky-link-field\">\r\n <h4>{title.value}</h4>\r\n <ElButton type=\"primary\" text bg onClick={() => emit('click', props.row)} {...attrs}>\r\n {field.value}\r\n </ElButton>\r\n </div>\r\n )}\r\n </SkyCanAccess>\r\n )\r\n },\r\n})\r\n"],"names":["SkyLinkField","defineComponent","name","inheritAttrs","props","source","type","required","label","row","attrs","route","useRoute","hiddenTitle","useHiddenTitle","routeMeta","field","computed","v","title","default","_createVNode"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAaA,MAAAA,IAAA,gBAAAC,EAAA;AAAA,EACEC,MAAAA;AAAAA,EACAC,cAAAA;AAAAA,EACAC,OAAAA;AAAAA,IACEC,QAAAA;AAAAA,MACEC,MAAAA;AAAAA,MACAC,UAAAA;AAAAA;IAEFC,OAAAA;AAAAA,IACAC,KAAAA;AAAAA;;;;IAGmBC,OAAAA;AAAAA,EAAM,GAAA;AACzB,UAAAC,IAAAC,EAAA,GACAC,IAAAC,EAAA,GACAC,IAAAJ,EAAA,MAEAK,IAAAC,EAAA,MAAA;;AAEE,aAAAC,gBAGA;AAAA,IACF,CAAA,GAEAC,IAAAF,EAAA,MACEb,EAAA,SAAAA,EAAA,MACF;;;MAG4C,QAAA,CAAA,QAAA,MAAA;AAAA,MAA0B,QAAAA,EAAA;AAAA,IAAsB,GAAA;AAAA;QAC5E,MAAA;AAAA,QAAA,MAAA;AAAA,QAAA,IAAA;AAAA;MAEgE,GAAAM,CAAA,GAAA;AAAA,QAAWU,SAAAA,MAAAA,CAAAA,EAAAA,KAAAA;AAAAA,MACrE,CAAA,CAAA,CAAA,IAAAC,EAAA,OAAA;AAAA,QAAA,OAAA;AAAA;QAKE,MAAA;AAAA,QAAA,MAAA;AAAA,QAAA,IAAA;AAAA;MACwD,GAAAX,CAAA,GAAA;AAAA,QAAWU,SAAAA,MAAAA,CAAAA,EAAAA,KAAAA;AAAAA;;EAO7F;AACF,CAAA;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../src/components/link-field/index.tsx"],"sourcesContent":["import { useHiddenTitle } from '@/hooks'\nimport type { SkyLayoutRouteMeta } from '@/router'\nimport { ElButton, type ButtonProps } from 'element-plus'\nimport { computed, defineComponent } from 'vue'\nimport { useRoute } from 'vue-router'\nimport { SkyCanAccess } from '../can-access'\n\nexport interface SkyLinkFieldProps {\n source: string\n label?: string\n row?: Record<string, unknown>\n}\n\nexport const SkyLinkField = defineComponent<SkyLinkFieldProps & Partial<ButtonProps>>({\n name: 'SkyLinkField',\n inheritAttrs: false,\n props: {\n source: {\n type: String,\n required: true,\n },\n label: String,\n row: Object,\n },\n emits: ['click'],\n setup(props, { emit, attrs }) {\n const route = useRoute()\n const hiddenTitle = useHiddenTitle()\n const routeMeta = route.meta as SkyLayoutRouteMeta\n\n const field = computed<string>(() => {\n const v = props.row?.[props.source]\n if (v) {\n return String(v)\n }\n return ''\n })\n\n const title = computed(() => {\n return props.label || props.source\n })\n\n return () => (\n <SkyCanAccess resource={routeMeta.resource} action={['list', 'show']} column={props.source}>\n {hiddenTitle ? (\n <div>\n <ElButton type=\"primary\" text bg onClick={() => emit('click', props.row)} {...attrs}>\n {field.value}\n </ElButton>\n </div>\n ) : (\n <div class=\"sky-link-field\">\n <h4>{title.value}</h4>\n <ElButton type=\"primary\" text bg onClick={() => emit('click', props.row)} {...attrs}>\n {field.value}\n </ElButton>\n </div>\n )}\n </SkyCanAccess>\n )\n },\n})\n"],"names":["SkyLinkField","defineComponent","name","inheritAttrs","props","source","type","required","label","row","attrs","route","useRoute","hiddenTitle","useHiddenTitle","routeMeta","field","computed","v","title","default","_createVNode"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAaA,MAAAA,IAAA,gBAAAC,EAAA;AAAA,EACEC,MAAAA;AAAAA,EACAC,cAAAA;AAAAA,EACAC,OAAAA;AAAAA,IACEC,QAAAA;AAAAA,MACEC,MAAAA;AAAAA,MACAC,UAAAA;AAAAA;IAEFC,OAAAA;AAAAA,IACAC,KAAAA;AAAAA;;;;IAGmBC,OAAAA;AAAAA,EAAM,GAAA;AACzB,UAAAC,IAAAC,EAAA,GACAC,IAAAC,EAAA,GACAC,IAAAJ,EAAA,MAEAK,IAAAC,EAAA,MAAA;;AAEE,aAAAC,gBAGA;AAAA,IACF,CAAA,GAEAC,IAAAF,EAAA,MACEb,EAAA,SAAAA,EAAA,MACF;;;MAG4C,QAAA,CAAA,QAAA,MAAA;AAAA,MAA0B,QAAAA,EAAA;AAAA,IAAsB,GAAA;AAAA;QAC5E,MAAA;AAAA,QAAA,MAAA;AAAA,QAAA,IAAA;AAAA;MAEgE,GAAAM,CAAA,GAAA;AAAA,QAAWU,SAAAA,MAAAA,CAAAA,EAAAA,KAAAA;AAAAA,MACrE,CAAA,CAAA,CAAA,IAAAC,EAAA,OAAA;AAAA,QAAA,OAAA;AAAA;QAKE,MAAA;AAAA,QAAA,MAAA;AAAA,QAAA,IAAA;AAAA;MACwD,GAAAX,CAAA,GAAA;AAAA,QAAWU,SAAAA,MAAAA,CAAAA,EAAAA,KAAAA;AAAAA;;EAO7F;AACF,CAAA;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../src/components/radio-button-group-input/index.tsx"],"sourcesContent":["import { useForm, useFormGrid } from '@/hooks'\r\nimport type { SkyLayoutRouteMeta } from '@/router'\r\nimport {\r\n ElFormItem,\r\n ElRadio,\r\n ElRadioGroup,\r\n type FormItemRule,\r\n type RadioGroupProps,\r\n} from 'element-plus'\r\nimport { computed, defineComponent, h, type PropType } from 'vue'\r\nimport { useRoute } from 'vue-router'\r\nimport { SkyCanAccess } from '../can-access'\r\n\r\nexport interface SkyRadioButtonGroupInputOptionItem {\r\n value: string | number\r\n label: string\r\n disabled?: boolean\r\n}\r\n\r\nexport interface SkyRadioButtonGroupInputProps {\r\n source: string\r\n label?: string\r\n options: SkyRadioButtonGroupInputOptionItem[]\r\n rules?: FormItemRule | FormItemRule[]\r\n defaultValue?: string | number\r\n}\r\n\r\nexport const SkyRadioButtonGroupInput = defineComponent<\r\n SkyRadioButtonGroupInputProps & Partial<RadioGroupProps>\r\n>({\r\n name: 'SkyRadioButtonGroupInput',\r\n inheritAttrs: false,\r\n props: {\r\n source: {\r\n type: String,\r\n required: true,\r\n },\r\n label: String,\r\n options: Array as PropType<SkyRadioButtonGroupInputOptionItem[]>,\r\n rules: Object,\r\n defaultValue: {\r\n type: [String, Number],\r\n default: '',\r\n },\r\n },\r\n setup(props, { attrs }) {\r\n const route = useRoute()\r\n const formGrid = useFormGrid()\r\n const { formData, editData } = useForm()!\r\n const routeMeta = route.meta as SkyLayoutRouteMeta\r\n\r\n const title = computed<string>(() => props.label || props.source)\r\n\r\n if (typeof formData[props.source] === 'undefined') {\r\n formData[props.source] = props.defaultValue!\r\n }\r\n\r\n if (editData.value) {\r\n formData[props.source] = editData.value[props.source]\r\n }\r\n\r\n return () => (\r\n <SkyCanAccess resource={routeMeta.resource} action={['create', 'edit']} column={props.source}>\r\n <ElFormItem\r\n label={title.value}\r\n prop={props.source}\r\n rules={props.rules}\r\n style={formGrid ? `grid-area: ${props.source}` : ''}\r\n >\r\n <ElRadioGroup\r\n modelValue={formData[props.source] as SkyRadioButtonGroupInputOptionItem['value']}\r\n onUpdate:modelValue={(v) =>\r\n (formData[props.source] = v as SkyRadioButtonGroupInputOptionItem['value'])\r\n }\r\n {...attrs}\r\n >\r\n {props.options.map((option) =>\r\n h(\r\n ElRadio,\r\n { key: option.value, value: option.value },\r\n { default: () => option.label },\r\n ),\r\n )}\r\n </ElRadioGroup>\r\n </ElFormItem>\r\n </SkyCanAccess>\r\n )\r\n },\r\n})\r\n"],"names":["_isSlot","s","_isVNode","SkyRadioButtonGroupInput","defineComponent","name","inheritAttrs","props","source","type","required","label","options","rules","defaultValue","default","attrs","route","useRoute","formGrid","useFormGrid","editData","routeMeta","title","computed","formData","_slot","option","h","ElRadio"],"mappings":"o/BAW4C,SAAAA,EAAAC,EAAA,CAAA,OAAA,OAAAA,GAAA,YAAA,OAAA,UAAA,SAAA,KAAAA,CAAA,IAAA,mBAAA,CAAAC,EAAAA,QAAAD,CAAA,CAAA,CAgB5C,MAAAE,EAAAC,EAAAA,gBAAA,CAGEC,KAAAA,2BACAC,aAAAA,GACAC,MAAAA,CACEC,OAAAA,CACEC,KAAAA,OACAC,SAAAA,IAEFC,MAAAA,OACAC,QAAAA,MACAC,MAAAA,OACAC,aAAAA,CACEL,KAAAA,CAAAA,OAAAA,MAAAA,EACAM,QAAAA,EACF,YAEaC,MAAAA,CAAM,EAAA,CACnB,MAAAC,EAAAC,EAAAA,SAAA,EACAC,EAAAC,EAAAA,YAAA,cACkBC,SAAAA,eAClBC,EAAAL,EAAA,KAEAM,EAAAC,EAAAA,SAAA,IAAAjB,EAAA,OAAAA,EAAA,MAAA,wEAOEkB,EAAAA,EAAAA,MAAAA,EAAAA,EAAAA,MAAAA,EAAAA,MAAAA,QAGK,IAAAC,2DACqC,OAAA,CAAA,SAAA,MAAA,EAA4B,OAAAnB,EAAA,MAAsB,EAAA,CAAAQ,QAAAA,IAAAA,CAAAA,EAAAA,YAAAA,aAAAA,2CAItE,MAAAI,EAAA,cAAAZ,EAAA,MAAA,GAAA,EACiC,EAAA,CAAAQ,QAAAA,IAAAA,CAAAA,cAAAA,EAAAA,aAAAA,EAAAA,WAAAA,CAAA,WAAAU,EAAAlB,EAAA,MAAA,wCAK4B,EAAAS,CAAA,EAAAhB,EAAA0B,EAAAnB,EAAA,QAAA,IAAAoB,GAAAC,EAAAA,EAAAC,UAAA,0BAOhC,EAAA,CACvCd,QAAAA,IAAAA,EAAAA,4BAEL,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAKX,CACF,CAAA"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/radio-button-group-input/index.tsx"],"sourcesContent":["import { useForm, useFormGrid } from '@/hooks'\nimport type { SkyLayoutRouteMeta } from '@/router'\nimport {\n ElFormItem,\n ElRadio,\n ElRadioGroup,\n type FormItemRule,\n type RadioGroupProps,\n} from 'element-plus'\nimport { computed, defineComponent, h, type PropType } from 'vue'\nimport { useRoute } from 'vue-router'\nimport { SkyCanAccess } from '../can-access'\n\nexport interface SkyRadioButtonGroupInputOptionItem {\n value: string | number\n label: string\n disabled?: boolean\n}\n\nexport interface SkyRadioButtonGroupInputProps {\n source: string\n label?: string\n options: SkyRadioButtonGroupInputOptionItem[]\n rules?: FormItemRule | FormItemRule[]\n defaultValue?: string | number\n}\n\nexport const SkyRadioButtonGroupInput = defineComponent<\n SkyRadioButtonGroupInputProps & Partial<RadioGroupProps>\n>({\n name: 'SkyRadioButtonGroupInput',\n inheritAttrs: false,\n props: {\n source: {\n type: String,\n required: true,\n },\n label: String,\n options: Array as PropType<SkyRadioButtonGroupInputOptionItem[]>,\n rules: Object,\n defaultValue: {\n type: [String, Number],\n default: '',\n },\n },\n setup(props, { attrs }) {\n const route = useRoute()\n const formGrid = useFormGrid()\n const { formData, editData } = useForm()!\n const routeMeta = route.meta as SkyLayoutRouteMeta\n\n const title = computed<string>(() => props.label || props.source)\n\n if (typeof formData[props.source] === 'undefined') {\n formData[props.source] = props.defaultValue!\n }\n\n if (editData.value) {\n formData[props.source] = editData.value[props.source]\n }\n\n return () => (\n <SkyCanAccess resource={routeMeta.resource} action={['create', 'edit']} column={props.source}>\n <ElFormItem\n label={title.value}\n prop={props.source}\n rules={props.rules}\n style={formGrid ? `grid-area: ${props.source}` : ''}\n >\n <ElRadioGroup\n modelValue={formData[props.source] as SkyRadioButtonGroupInputOptionItem['value']}\n onUpdate:modelValue={(v) =>\n (formData[props.source] = v as SkyRadioButtonGroupInputOptionItem['value'])\n }\n {...attrs}\n >\n {props.options.map((option) =>\n h(\n ElRadio,\n { key: option.value, value: option.value },\n { default: () => option.label },\n ),\n )}\n </ElRadioGroup>\n </ElFormItem>\n </SkyCanAccess>\n )\n },\n})\n"],"names":["_isSlot","s","_isVNode","SkyRadioButtonGroupInput","defineComponent","name","inheritAttrs","props","source","type","required","label","options","rules","defaultValue","default","attrs","route","useRoute","formGrid","useFormGrid","editData","routeMeta","title","computed","formData","_slot","option","h","ElRadio"],"mappings":"o/BAW4C,SAAAA,EAAAC,EAAA,CAAA,OAAA,OAAAA,GAAA,YAAA,OAAA,UAAA,SAAA,KAAAA,CAAA,IAAA,mBAAA,CAAAC,EAAAA,QAAAD,CAAA,CAAA,CAgB5C,MAAAE,EAAAC,EAAAA,gBAAA,CAGEC,KAAAA,2BACAC,aAAAA,GACAC,MAAAA,CACEC,OAAAA,CACEC,KAAAA,OACAC,SAAAA,IAEFC,MAAAA,OACAC,QAAAA,MACAC,MAAAA,OACAC,aAAAA,CACEL,KAAAA,CAAAA,OAAAA,MAAAA,EACAM,QAAAA,EACF,YAEaC,MAAAA,CAAM,EAAA,CACnB,MAAAC,EAAAC,EAAAA,SAAA,EACAC,EAAAC,EAAAA,YAAA,cACkBC,SAAAA,eAClBC,EAAAL,EAAA,KAEAM,EAAAC,EAAAA,SAAA,IAAAjB,EAAA,OAAAA,EAAA,MAAA,wEAOEkB,EAAAA,EAAAA,MAAAA,EAAAA,EAAAA,MAAAA,EAAAA,MAAAA,QAGK,IAAAC,2DACqC,OAAA,CAAA,SAAA,MAAA,EAA4B,OAAAnB,EAAA,MAAsB,EAAA,CAAAQ,QAAAA,IAAAA,CAAAA,EAAAA,YAAAA,aAAAA,2CAItE,MAAAI,EAAA,cAAAZ,EAAA,MAAA,GAAA,EACiC,EAAA,CAAAQ,QAAAA,IAAAA,CAAAA,cAAAA,EAAAA,aAAAA,EAAAA,WAAAA,CAAA,WAAAU,EAAAlB,EAAA,MAAA,wCAK4B,EAAAS,CAAA,EAAAhB,EAAA0B,EAAAnB,EAAA,QAAA,IAAAoB,GAAAC,EAAAA,EAAAC,UAAA,0BAOhC,EAAA,CACvCd,QAAAA,IAAAA,EAAAA,4BAEL,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAKX,CACF,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../src/components/radio-button-group-input/index.tsx"],"sourcesContent":["import { useForm, useFormGrid } from '@/hooks'\r\nimport type { SkyLayoutRouteMeta } from '@/router'\r\nimport {\r\n ElFormItem,\r\n ElRadio,\r\n ElRadioGroup,\r\n type FormItemRule,\r\n type RadioGroupProps,\r\n} from 'element-plus'\r\nimport { computed, defineComponent, h, type PropType } from 'vue'\r\nimport { useRoute } from 'vue-router'\r\nimport { SkyCanAccess } from '../can-access'\r\n\r\nexport interface SkyRadioButtonGroupInputOptionItem {\r\n value: string | number\r\n label: string\r\n disabled?: boolean\r\n}\r\n\r\nexport interface SkyRadioButtonGroupInputProps {\r\n source: string\r\n label?: string\r\n options: SkyRadioButtonGroupInputOptionItem[]\r\n rules?: FormItemRule | FormItemRule[]\r\n defaultValue?: string | number\r\n}\r\n\r\nexport const SkyRadioButtonGroupInput = defineComponent<\r\n SkyRadioButtonGroupInputProps & Partial<RadioGroupProps>\r\n>({\r\n name: 'SkyRadioButtonGroupInput',\r\n inheritAttrs: false,\r\n props: {\r\n source: {\r\n type: String,\r\n required: true,\r\n },\r\n label: String,\r\n options: Array as PropType<SkyRadioButtonGroupInputOptionItem[]>,\r\n rules: Object,\r\n defaultValue: {\r\n type: [String, Number],\r\n default: '',\r\n },\r\n },\r\n setup(props, { attrs }) {\r\n const route = useRoute()\r\n const formGrid = useFormGrid()\r\n const { formData, editData } = useForm()!\r\n const routeMeta = route.meta as SkyLayoutRouteMeta\r\n\r\n const title = computed<string>(() => props.label || props.source)\r\n\r\n if (typeof formData[props.source] === 'undefined') {\r\n formData[props.source] = props.defaultValue!\r\n }\r\n\r\n if (editData.value) {\r\n formData[props.source] = editData.value[props.source]\r\n }\r\n\r\n return () => (\r\n <SkyCanAccess resource={routeMeta.resource} action={['create', 'edit']} column={props.source}>\r\n <ElFormItem\r\n label={title.value}\r\n prop={props.source}\r\n rules={props.rules}\r\n style={formGrid ? `grid-area: ${props.source}` : ''}\r\n >\r\n <ElRadioGroup\r\n modelValue={formData[props.source] as SkyRadioButtonGroupInputOptionItem['value']}\r\n onUpdate:modelValue={(v) =>\r\n (formData[props.source] = v as SkyRadioButtonGroupInputOptionItem['value'])\r\n }\r\n {...attrs}\r\n >\r\n {props.options.map((option) =>\r\n h(\r\n ElRadio,\r\n { key: option.value, value: option.value },\r\n { default: () => option.label },\r\n ),\r\n )}\r\n </ElRadioGroup>\r\n </ElFormItem>\r\n </SkyCanAccess>\r\n )\r\n },\r\n})\r\n"],"names":["_isSlot","s","_isVNode","SkyRadioButtonGroupInput","defineComponent","name","inheritAttrs","props","source","type","required","label","options","rules","defaultValue","default","attrs","route","useRoute","formGrid","useFormGrid","editData","routeMeta","title","computed","formData","_slot","option","h","ElRadio"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAW4C,SAAAA,EAAAC,GAAA;AAAA,SAAA,OAAAA,KAAA,cAAA,OAAA,UAAA,SAAA,KAAAA,CAAA,MAAA,qBAAA,CAAAC,EAAAD,CAAA;AAAA;AAgB5C,MAAAE,IAAA,gBAAAC,EAAA;AAAA,EAGEC,MAAAA;AAAAA,EACAC,cAAAA;AAAAA,EACAC,OAAAA;AAAAA,IACEC,QAAAA;AAAAA,MACEC,MAAAA;AAAAA,MACAC,UAAAA;AAAAA;IAEFC,OAAAA;AAAAA,IACAC,SAAAA;AAAAA,IACAC,OAAAA;AAAAA,IACAC,cAAAA;AAAAA,MACEL,MAAAA,CAAAA,QAAAA,MAAAA;AAAAA,MACAM,SAAAA;AAAAA,IACF;AAAA;;IAEaC,OAAAA;AAAAA,EAAM,GAAA;AACnB,UAAAC,IAAAC,EAAA,GACAC,IAAAC,EAAA;;MACkBC,UAAAA;AAAAA,aAClBC,IAAAL,EAAA,MAEAM,IAAAC,EAAA,MAAAjB,EAAA,SAAAA,EAAA,MAAA;mFAOEkB,EAAAA,EAAAA,MAAAA,IAAAA,EAAAA,MAAAA,EAAAA,MAAAA;AAGK,UAAAC;;;QACqC,QAAA,CAAA,UAAA,MAAA;AAAA,QAA4B,QAAAnB,EAAA;AAAA,MAAsB,GAAA;AAAA,QAAAQ,SAAAA,MAAAA,CAAAA,EAAAA,GAAAA;AAAAA;;;UAItE,OAAAI,IAAA,cAAAZ,EAAA,MAAA,KAAA;AAAA,QACiC,GAAA;AAAA,UAAAQ,SAAAA,MAAAA,CAAAA,EAAAA,GAAAA,EAAAA;AAAAA,YAAA,YAAAU,EAAAlB,EAAA,MAAA;AAAA;UAK4B,GAAAS,CAAA,GAAAhB,EAAA0B,IAAAnB,EAAA,QAAA,IAAA,CAAAoB,MAAAC,EAAAC,GAAA;AAAA;;UAOhC,GAAA;AAAA,YACvCd,SAAAA,MAAAA,EAAAA;AAAAA;;UAEL,CAAA,CAAA;AAAA,QAAA,CAAA,CAAA;AAAA,MAAA,CAAA;AAAA;EAKX;AACF,CAAA;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../src/components/radio-button-group-input/index.tsx"],"sourcesContent":["import { useForm, useFormGrid } from '@/hooks'\nimport type { SkyLayoutRouteMeta } from '@/router'\nimport {\n ElFormItem,\n ElRadio,\n ElRadioGroup,\n type FormItemRule,\n type RadioGroupProps,\n} from 'element-plus'\nimport { computed, defineComponent, h, type PropType } from 'vue'\nimport { useRoute } from 'vue-router'\nimport { SkyCanAccess } from '../can-access'\n\nexport interface SkyRadioButtonGroupInputOptionItem {\n value: string | number\n label: string\n disabled?: boolean\n}\n\nexport interface SkyRadioButtonGroupInputProps {\n source: string\n label?: string\n options: SkyRadioButtonGroupInputOptionItem[]\n rules?: FormItemRule | FormItemRule[]\n defaultValue?: string | number\n}\n\nexport const SkyRadioButtonGroupInput = defineComponent<\n SkyRadioButtonGroupInputProps & Partial<RadioGroupProps>\n>({\n name: 'SkyRadioButtonGroupInput',\n inheritAttrs: false,\n props: {\n source: {\n type: String,\n required: true,\n },\n label: String,\n options: Array as PropType<SkyRadioButtonGroupInputOptionItem[]>,\n rules: Object,\n defaultValue: {\n type: [String, Number],\n default: '',\n },\n },\n setup(props, { attrs }) {\n const route = useRoute()\n const formGrid = useFormGrid()\n const { formData, editData } = useForm()!\n const routeMeta = route.meta as SkyLayoutRouteMeta\n\n const title = computed<string>(() => props.label || props.source)\n\n if (typeof formData[props.source] === 'undefined') {\n formData[props.source] = props.defaultValue!\n }\n\n if (editData.value) {\n formData[props.source] = editData.value[props.source]\n }\n\n return () => (\n <SkyCanAccess resource={routeMeta.resource} action={['create', 'edit']} column={props.source}>\n <ElFormItem\n label={title.value}\n prop={props.source}\n rules={props.rules}\n style={formGrid ? `grid-area: ${props.source}` : ''}\n >\n <ElRadioGroup\n modelValue={formData[props.source] as SkyRadioButtonGroupInputOptionItem['value']}\n onUpdate:modelValue={(v) =>\n (formData[props.source] = v as SkyRadioButtonGroupInputOptionItem['value'])\n }\n {...attrs}\n >\n {props.options.map((option) =>\n h(\n ElRadio,\n { key: option.value, value: option.value },\n { default: () => option.label },\n ),\n )}\n </ElRadioGroup>\n </ElFormItem>\n </SkyCanAccess>\n )\n },\n})\n"],"names":["_isSlot","s","_isVNode","SkyRadioButtonGroupInput","defineComponent","name","inheritAttrs","props","source","type","required","label","options","rules","defaultValue","default","attrs","route","useRoute","formGrid","useFormGrid","editData","routeMeta","title","computed","formData","_slot","option","h","ElRadio"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAW4C,SAAAA,EAAAC,GAAA;AAAA,SAAA,OAAAA,KAAA,cAAA,OAAA,UAAA,SAAA,KAAAA,CAAA,MAAA,qBAAA,CAAAC,EAAAD,CAAA;AAAA;AAgB5C,MAAAE,IAAA,gBAAAC,EAAA;AAAA,EAGEC,MAAAA;AAAAA,EACAC,cAAAA;AAAAA,EACAC,OAAAA;AAAAA,IACEC,QAAAA;AAAAA,MACEC,MAAAA;AAAAA,MACAC,UAAAA;AAAAA;IAEFC,OAAAA;AAAAA,IACAC,SAAAA;AAAAA,IACAC,OAAAA;AAAAA,IACAC,cAAAA;AAAAA,MACEL,MAAAA,CAAAA,QAAAA,MAAAA;AAAAA,MACAM,SAAAA;AAAAA,IACF;AAAA;;IAEaC,OAAAA;AAAAA,EAAM,GAAA;AACnB,UAAAC,IAAAC,EAAA,GACAC,IAAAC,EAAA;;MACkBC,UAAAA;AAAAA,aAClBC,IAAAL,EAAA,MAEAM,IAAAC,EAAA,MAAAjB,EAAA,SAAAA,EAAA,MAAA;mFAOEkB,EAAAA,EAAAA,MAAAA,IAAAA,EAAAA,MAAAA,EAAAA,MAAAA;AAGK,UAAAC;;;QACqC,QAAA,CAAA,UAAA,MAAA;AAAA,QAA4B,QAAAnB,EAAA;AAAA,MAAsB,GAAA;AAAA,QAAAQ,SAAAA,MAAAA,CAAAA,EAAAA,GAAAA;AAAAA;;;UAItE,OAAAI,IAAA,cAAAZ,EAAA,MAAA,KAAA;AAAA,QACiC,GAAA;AAAA,UAAAQ,SAAAA,MAAAA,CAAAA,EAAAA,GAAAA,EAAAA;AAAAA,YAAA,YAAAU,EAAAlB,EAAA,MAAA;AAAA;UAK4B,GAAAS,CAAA,GAAAhB,EAAA0B,IAAAnB,EAAA,QAAA,IAAA,CAAAoB,MAAAC,EAAAC,GAAA;AAAA;;UAOhC,GAAA;AAAA,YACvCd,SAAAA,MAAAA,EAAAA;AAAAA;;UAEL,CAAA,CAAA;AAAA,QAAA,CAAA,CAAA;AAAA,MAAA,CAAA;AAAA;EAKX;AACF,CAAA;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../src/components/reference-array-field/index.tsx"],"sourcesContent":["import { useProvideHiddenTitle, useProvideReferenceArrayField } from '@/hooks'\r\nimport type { GetManyResult, Identifier } from '@/provides'\r\nimport type { SkyLayoutRouteMeta } from '@/router'\r\nimport { skyConfig } from '@/setup'\r\nimport { useAsyncState } from '@vueuse/core'\r\nimport { computed, defineComponent } from 'vue'\r\nimport { useRoute } from 'vue-router'\r\nimport { SkyCanAccess } from '../can-access'\r\n\r\nexport interface SkyReferenceArrayFieldProps {\r\n source: string\r\n reference: string\r\n label?: string\r\n row?: Record<string, unknown>\r\n}\r\n\r\nexport const SkyReferenceArrayField = defineComponent<SkyReferenceArrayFieldProps>({\r\n name: 'SkyReferenceArrayField',\r\n inheritAttrs: false,\r\n props: {\r\n source: {\r\n type: String,\r\n required: true,\r\n },\r\n reference: {\r\n type: String,\r\n required: true,\r\n },\r\n label: String,\r\n row: Object,\r\n },\r\n setup(props, { slots, attrs }) {\r\n const route = useRoute()\r\n const routeMeta = route.meta as SkyLayoutRouteMeta\r\n\r\n const field = computed<Identifier[]>(() => {\r\n const v = props.row?.[props.source]\r\n if (Array.isArray(v)) {\r\n return v as Identifier[]\r\n }\r\n return []\r\n })\r\n\r\n const title = computed(() => {\r\n return props.label || props.source\r\n })\r\n\r\n let controller: AbortController | undefined\r\n const { state: listData, isLoading: listLoading } = useAsyncState<GetManyResult | undefined>(\r\n async () => {\r\n if (field.value.length) {\r\n controller = new AbortController()\r\n return skyConfig.dataProvider?.getMany?.(props.reference, {\r\n ids: field.value,\r\n signal: controller.signal,\r\n })\r\n }\r\n },\r\n undefined,\r\n {\r\n immediate: true,\r\n },\r\n )\r\n\r\n useProvideReferenceArrayField({\r\n reference: props.reference,\r\n listData,\r\n listLoading,\r\n })\r\n\r\n // 重写useProvideHiddenTitle(provide 是基于父子组件对象的原型链,中途可以设置一些属性,这样就不会继续向上寻找)\r\n useProvideHiddenTitle(true)\r\n\r\n return () => (\r\n <SkyCanAccess resource={routeMeta.resource} action={['list', 'show']} column={props.source}>\r\n <div class=\"sky-reference-array-field\" {...attrs}>\r\n <h4>{title.value}</h4>\r\n {slots.default?.()}\r\n </div>\r\n </SkyCanAccess>\r\n )\r\n },\r\n})\r\n"],"names":["SkyReferenceArrayField","defineComponent","name","inheritAttrs","props","source","type","String","required","reference","label","row","Object","setup","slots","attrs","routeMeta","useRoute","meta","field","computed","v","Array","isArray","title","controller","state","listData","isLoading","listLoading","useAsyncState","value","length","AbortController","skyConfig","dataProvider","getMany","ids","signal","undefined","immediate","useProvideReferenceArrayField","useProvideHiddenTitle","_createVNode","SkyCanAccess","resource","default","_mergeProps"],"mappings":"22BAgBaA,EAAyBC,EAAAA,gBAA6C,CACjFC,KAAM,yBACNC,aAAc,GACdC,MAAO,CACLC,OAAQ,CACNC,KAAMC,OACNC,SAAU,IAEZC,UAAW,CACTH,KAAMC,OACNC,SAAU,IAEZE,MAAOH,OACPI,IAAKC,QAEPC,MAAMT,EAAO,CAAEU,MAAAA,EAAOC,MAAAA,CAAM,EAAG,CAE7B,MAAMC,EADQC,EAAAA,SAAQ,EACEC,KAElBC,EAAQC,EAAAA,SAAuB,IAAM,CACzC,MAAMC,EAAIjB,EAAMO,MAAMP,EAAMC,MAAM,EAClC,OAAIiB,MAAMC,QAAQF,CAAC,EACVA,EAEF,CAAA,CACT,CAAC,EAEKG,EAAQJ,EAAAA,SAAS,IACdhB,EAAMM,OAASN,EAAMC,MAC7B,EAED,IAAIoB,EACJ,KAAM,CAAEC,MAAOC,EAAUC,UAAWC,GAAgBC,EAAAA,cAClD,SAAY,CACV,GAAIX,EAAMY,MAAMC,OACdP,OAAAA,EAAa,IAAIQ,gBACVC,EAAAA,UAAUC,cAAcC,UAAUhC,EAAMK,UAAW,CACxD4B,IAAKlB,EAAMY,MACXO,OAAQb,EAAWa,MACrB,CAAC,CAEL,EACAC,OACA,CACEC,UAAW,EACb,CACF,EAEAC,OAAAA,gCAA8B,CAC5BhC,UAAWL,EAAMK,UACjBkB,SAAAA,EACAE,YAAAA,CACF,CAAC,EAGDa,EAAAA,sBAAsB,EAAI,EAEnB,IAAAC,EAAAA,YAAAC,eAAA,CAAA,SACmB5B,EAAU6B,SAAQ,OAAU,CAAC,OAAQ,MAAM,EAAC,OAAUzC,EAAMC,MAAM,EAAA,CAAAyC,QAAAA,IAAA,CAAAH,oBAAAI,EAAAA,WAAA,CAAA,MAAA,2BAAA,EAC7ChC,CAAK,EAAA,CAAA4B,EAAAA,YAAA,KAAA,KAAA,CACzCnB,EAAMO,KAAK,CAAA,EACfjB,EAAMgC,UAAO,CAAI,CAAA,CAAA,EAAA,CAI1B,CACF,CAAC"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/reference-array-field/index.tsx"],"sourcesContent":["import { useProvideHiddenTitle, useProvideReferenceArrayField } from '@/hooks'\nimport type { GetManyResult, Identifier } from '@/provides'\nimport type { SkyLayoutRouteMeta } from '@/router'\nimport { skyConfig } from '@/setup'\nimport { useAsyncState } from '@vueuse/core'\nimport { computed, defineComponent } from 'vue'\nimport { useRoute } from 'vue-router'\nimport { SkyCanAccess } from '../can-access'\n\nexport interface SkyReferenceArrayFieldProps {\n source: string\n reference: string\n label?: string\n row?: Record<string, unknown>\n}\n\nexport const SkyReferenceArrayField = defineComponent<SkyReferenceArrayFieldProps>({\n name: 'SkyReferenceArrayField',\n inheritAttrs: false,\n props: {\n source: {\n type: String,\n required: true,\n },\n reference: {\n type: String,\n required: true,\n },\n label: String,\n row: Object,\n },\n setup(props, { slots, attrs }) {\n const route = useRoute()\n const routeMeta = route.meta as SkyLayoutRouteMeta\n\n const field = computed<Identifier[]>(() => {\n const v = props.row?.[props.source]\n if (Array.isArray(v)) {\n return v as Identifier[]\n }\n return []\n })\n\n const title = computed(() => {\n return props.label || props.source\n })\n\n let controller: AbortController | undefined\n const { state: listData, isLoading: listLoading } = useAsyncState<GetManyResult | undefined>(\n async () => {\n if (field.value.length) {\n controller = new AbortController()\n return skyConfig.dataProvider?.getMany?.(props.reference, {\n ids: field.value,\n signal: controller.signal,\n })\n }\n },\n undefined,\n {\n immediate: true,\n },\n )\n\n useProvideReferenceArrayField({\n reference: props.reference,\n listData,\n listLoading,\n })\n\n // 重写useProvideHiddenTitle(provide 是基于父子组件对象的原型链,中途可以设置一些属性,这样就不会继续向上寻找)\n useProvideHiddenTitle(true)\n\n return () => (\n <SkyCanAccess resource={routeMeta.resource} action={['list', 'show']} column={props.source}>\n <div class=\"sky-reference-array-field\" {...attrs}>\n <h4>{title.value}</h4>\n {slots.default?.()}\n </div>\n </SkyCanAccess>\n )\n },\n})\n"],"names":["SkyReferenceArrayField","defineComponent","name","inheritAttrs","props","source","type","String","required","reference","label","row","Object","setup","slots","attrs","routeMeta","useRoute","meta","field","computed","v","Array","isArray","title","controller","state","listData","isLoading","listLoading","useAsyncState","value","length","AbortController","skyConfig","dataProvider","getMany","ids","signal","undefined","immediate","useProvideReferenceArrayField","useProvideHiddenTitle","_createVNode","SkyCanAccess","resource","default","_mergeProps"],"mappings":"22BAgBaA,EAAyBC,EAAAA,gBAA6C,CACjFC,KAAM,yBACNC,aAAc,GACdC,MAAO,CACLC,OAAQ,CACNC,KAAMC,OACNC,SAAU,IAEZC,UAAW,CACTH,KAAMC,OACNC,SAAU,IAEZE,MAAOH,OACPI,IAAKC,QAEPC,MAAMT,EAAO,CAAEU,MAAAA,EAAOC,MAAAA,CAAM,EAAG,CAE7B,MAAMC,EADQC,EAAAA,SAAQ,EACEC,KAElBC,EAAQC,EAAAA,SAAuB,IAAM,CACzC,MAAMC,EAAIjB,EAAMO,MAAMP,EAAMC,MAAM,EAClC,OAAIiB,MAAMC,QAAQF,CAAC,EACVA,EAEF,CAAA,CACT,CAAC,EAEKG,EAAQJ,EAAAA,SAAS,IACdhB,EAAMM,OAASN,EAAMC,MAC7B,EAED,IAAIoB,EACJ,KAAM,CAAEC,MAAOC,EAAUC,UAAWC,GAAgBC,EAAAA,cAClD,SAAY,CACV,GAAIX,EAAMY,MAAMC,OACdP,OAAAA,EAAa,IAAIQ,gBACVC,EAAAA,UAAUC,cAAcC,UAAUhC,EAAMK,UAAW,CACxD4B,IAAKlB,EAAMY,MACXO,OAAQb,EAAWa,MACrB,CAAC,CAEL,EACAC,OACA,CACEC,UAAW,EACb,CACF,EAEAC,OAAAA,gCAA8B,CAC5BhC,UAAWL,EAAMK,UACjBkB,SAAAA,EACAE,YAAAA,CACF,CAAC,EAGDa,EAAAA,sBAAsB,EAAI,EAEnB,IAAAC,EAAAA,YAAAC,eAAA,CAAA,SACmB5B,EAAU6B,SAAQ,OAAU,CAAC,OAAQ,MAAM,EAAC,OAAUzC,EAAMC,MAAM,EAAA,CAAAyC,QAAAA,IAAA,CAAAH,oBAAAI,EAAAA,WAAA,CAAA,MAAA,2BAAA,EAC7ChC,CAAK,EAAA,CAAA4B,EAAAA,YAAA,KAAA,KAAA,CACzCnB,EAAMO,KAAK,CAAA,EACfjB,EAAMgC,UAAO,CAAI,CAAA,CAAA,EAAA,CAI1B,CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../src/components/reference-array-field/index.tsx"],"sourcesContent":["import { useProvideHiddenTitle, useProvideReferenceArrayField } from '@/hooks'\r\nimport type { GetManyResult, Identifier } from '@/provides'\r\nimport type { SkyLayoutRouteMeta } from '@/router'\r\nimport { skyConfig } from '@/setup'\r\nimport { useAsyncState } from '@vueuse/core'\r\nimport { computed, defineComponent } from 'vue'\r\nimport { useRoute } from 'vue-router'\r\nimport { SkyCanAccess } from '../can-access'\r\n\r\nexport interface SkyReferenceArrayFieldProps {\r\n source: string\r\n reference: string\r\n label?: string\r\n row?: Record<string, unknown>\r\n}\r\n\r\nexport const SkyReferenceArrayField = defineComponent<SkyReferenceArrayFieldProps>({\r\n name: 'SkyReferenceArrayField',\r\n inheritAttrs: false,\r\n props: {\r\n source: {\r\n type: String,\r\n required: true,\r\n },\r\n reference: {\r\n type: String,\r\n required: true,\r\n },\r\n label: String,\r\n row: Object,\r\n },\r\n setup(props, { slots, attrs }) {\r\n const route = useRoute()\r\n const routeMeta = route.meta as SkyLayoutRouteMeta\r\n\r\n const field = computed<Identifier[]>(() => {\r\n const v = props.row?.[props.source]\r\n if (Array.isArray(v)) {\r\n return v as Identifier[]\r\n }\r\n return []\r\n })\r\n\r\n const title = computed(() => {\r\n return props.label || props.source\r\n })\r\n\r\n let controller: AbortController | undefined\r\n const { state: listData, isLoading: listLoading } = useAsyncState<GetManyResult | undefined>(\r\n async () => {\r\n if (field.value.length) {\r\n controller = new AbortController()\r\n return skyConfig.dataProvider?.getMany?.(props.reference, {\r\n ids: field.value,\r\n signal: controller.signal,\r\n })\r\n }\r\n },\r\n undefined,\r\n {\r\n immediate: true,\r\n },\r\n )\r\n\r\n useProvideReferenceArrayField({\r\n reference: props.reference,\r\n listData,\r\n listLoading,\r\n })\r\n\r\n // 重写useProvideHiddenTitle(provide 是基于父子组件对象的原型链,中途可以设置一些属性,这样就不会继续向上寻找)\r\n useProvideHiddenTitle(true)\r\n\r\n return () => (\r\n <SkyCanAccess resource={routeMeta.resource} action={['list', 'show']} column={props.source}>\r\n <div class=\"sky-reference-array-field\" {...attrs}>\r\n <h4>{title.value}</h4>\r\n {slots.default?.()}\r\n </div>\r\n </SkyCanAccess>\r\n )\r\n },\r\n})\r\n"],"names":["SkyReferenceArrayField","defineComponent","name","inheritAttrs","props","source","type","String","required","reference","label","row","Object","setup","slots","attrs","routeMeta","useRoute","meta","field","computed","v","Array","isArray","title","controller","state","listData","isLoading","listLoading","useAsyncState","value","length","AbortController","skyConfig","dataProvider","getMany","ids","signal","undefined","immediate","useProvideReferenceArrayField","useProvideHiddenTitle","_createVNode","SkyCanAccess","resource","default","_mergeProps"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAgBO,MAAMA,IAAyBC,gBAAAA,EAA6C;AAAA,EACjFC,MAAM;AAAA,EACNC,cAAc;AAAA,EACdC,OAAO;AAAA,IACLC,QAAQ;AAAA,MACNC,MAAMC;AAAAA,MACNC,UAAU;AAAA;IAEZC,WAAW;AAAA,MACTH,MAAMC;AAAAA,MACNC,UAAU;AAAA;IAEZE,OAAOH;AAAAA,IACPI,KAAKC;AAAAA;EAEPC,MAAMT,GAAO;AAAA,IAAEU,OAAAA;AAAAA,IAAOC,OAAAA;AAAAA,EAAM,GAAG;AAE7B,UAAMC,IADQC,EAAQ,EACEC,MAElBC,IAAQC,EAAuB,MAAM;AACzC,YAAMC,IAAIjB,EAAMO,MAAMP,EAAMC,MAAM;AAClC,aAAIiB,MAAMC,QAAQF,CAAC,IACVA,IAEF,CAAA;AAAA,IACT,CAAC,GAEKG,IAAQJ,EAAS,MACdhB,EAAMM,SAASN,EAAMC,MAC7B;AAED,QAAIoB;AACJ,UAAM;AAAA,MAAEC,OAAOC;AAAAA,MAAUC,WAAWC;AAAAA,QAAgBC,EAClD,YAAY;AACV,UAAIX,EAAMY,MAAMC;AACdP,eAAAA,IAAa,IAAIQ,gBAAe,GACzBC,EAAUC,cAAcC,UAAUhC,EAAMK,WAAW;AAAA,UACxD4B,KAAKlB,EAAMY;AAAAA,UACXO,QAAQb,EAAWa;AAAAA,QACrB,CAAC;AAAA,IAEL,GACAC,QACA;AAAA,MACEC,WAAW;AAAA,IACb,CACF;AAEAC,WAAAA,EAA8B;AAAA,MAC5BhC,WAAWL,EAAMK;AAAAA,MACjBkB,UAAAA;AAAAA,MACAE,aAAAA;AAAAA,IACF,CAAC,GAGDa,EAAsB,EAAI,GAEnB,MAAAC,EAAAC,GAAA;AAAA,MAAA,UACmB5B,EAAU6B;AAAAA,MAAQ,QAAU,CAAC,QAAQ,MAAM;AAAA,MAAC,QAAUzC,EAAMC;AAAAA,IAAM,GAAA;AAAA,MAAAyC,SAAAA,MAAA,CAAAH,SAAAI,EAAA;AAAA,QAAA,OAAA;AAAA,MAAA,GAC7ChC,CAAK,GAAA,CAAA4B,EAAA,MAAA,MAAA,CACzCnB,EAAMO,KAAK,CAAA,GACfjB,EAAMgC,UAAO,CAAI,CAAA,CAAA;AAAA,KAAA;AAAA,EAI1B;AACF,CAAC;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../src/components/reference-array-field/index.tsx"],"sourcesContent":["import { useProvideHiddenTitle, useProvideReferenceArrayField } from '@/hooks'\nimport type { GetManyResult, Identifier } from '@/provides'\nimport type { SkyLayoutRouteMeta } from '@/router'\nimport { skyConfig } from '@/setup'\nimport { useAsyncState } from '@vueuse/core'\nimport { computed, defineComponent } from 'vue'\nimport { useRoute } from 'vue-router'\nimport { SkyCanAccess } from '../can-access'\n\nexport interface SkyReferenceArrayFieldProps {\n source: string\n reference: string\n label?: string\n row?: Record<string, unknown>\n}\n\nexport const SkyReferenceArrayField = defineComponent<SkyReferenceArrayFieldProps>({\n name: 'SkyReferenceArrayField',\n inheritAttrs: false,\n props: {\n source: {\n type: String,\n required: true,\n },\n reference: {\n type: String,\n required: true,\n },\n label: String,\n row: Object,\n },\n setup(props, { slots, attrs }) {\n const route = useRoute()\n const routeMeta = route.meta as SkyLayoutRouteMeta\n\n const field = computed<Identifier[]>(() => {\n const v = props.row?.[props.source]\n if (Array.isArray(v)) {\n return v as Identifier[]\n }\n return []\n })\n\n const title = computed(() => {\n return props.label || props.source\n })\n\n let controller: AbortController | undefined\n const { state: listData, isLoading: listLoading } = useAsyncState<GetManyResult | undefined>(\n async () => {\n if (field.value.length) {\n controller = new AbortController()\n return skyConfig.dataProvider?.getMany?.(props.reference, {\n ids: field.value,\n signal: controller.signal,\n })\n }\n },\n undefined,\n {\n immediate: true,\n },\n )\n\n useProvideReferenceArrayField({\n reference: props.reference,\n listData,\n listLoading,\n })\n\n // 重写useProvideHiddenTitle(provide 是基于父子组件对象的原型链,中途可以设置一些属性,这样就不会继续向上寻找)\n useProvideHiddenTitle(true)\n\n return () => (\n <SkyCanAccess resource={routeMeta.resource} action={['list', 'show']} column={props.source}>\n <div class=\"sky-reference-array-field\" {...attrs}>\n <h4>{title.value}</h4>\n {slots.default?.()}\n </div>\n </SkyCanAccess>\n )\n },\n})\n"],"names":["SkyReferenceArrayField","defineComponent","name","inheritAttrs","props","source","type","String","required","reference","label","row","Object","setup","slots","attrs","routeMeta","useRoute","meta","field","computed","v","Array","isArray","title","controller","state","listData","isLoading","listLoading","useAsyncState","value","length","AbortController","skyConfig","dataProvider","getMany","ids","signal","undefined","immediate","useProvideReferenceArrayField","useProvideHiddenTitle","_createVNode","SkyCanAccess","resource","default","_mergeProps"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAgBO,MAAMA,IAAyBC,gBAAAA,EAA6C;AAAA,EACjFC,MAAM;AAAA,EACNC,cAAc;AAAA,EACdC,OAAO;AAAA,IACLC,QAAQ;AAAA,MACNC,MAAMC;AAAAA,MACNC,UAAU;AAAA;IAEZC,WAAW;AAAA,MACTH,MAAMC;AAAAA,MACNC,UAAU;AAAA;IAEZE,OAAOH;AAAAA,IACPI,KAAKC;AAAAA;EAEPC,MAAMT,GAAO;AAAA,IAAEU,OAAAA;AAAAA,IAAOC,OAAAA;AAAAA,EAAM,GAAG;AAE7B,UAAMC,IADQC,EAAQ,EACEC,MAElBC,IAAQC,EAAuB,MAAM;AACzC,YAAMC,IAAIjB,EAAMO,MAAMP,EAAMC,MAAM;AAClC,aAAIiB,MAAMC,QAAQF,CAAC,IACVA,IAEF,CAAA;AAAA,IACT,CAAC,GAEKG,IAAQJ,EAAS,MACdhB,EAAMM,SAASN,EAAMC,MAC7B;AAED,QAAIoB;AACJ,UAAM;AAAA,MAAEC,OAAOC;AAAAA,MAAUC,WAAWC;AAAAA,QAAgBC,EAClD,YAAY;AACV,UAAIX,EAAMY,MAAMC;AACdP,eAAAA,IAAa,IAAIQ,gBAAe,GACzBC,EAAUC,cAAcC,UAAUhC,EAAMK,WAAW;AAAA,UACxD4B,KAAKlB,EAAMY;AAAAA,UACXO,QAAQb,EAAWa;AAAAA,QACrB,CAAC;AAAA,IAEL,GACAC,QACA;AAAA,MACEC,WAAW;AAAA,IACb,CACF;AAEAC,WAAAA,EAA8B;AAAA,MAC5BhC,WAAWL,EAAMK;AAAAA,MACjBkB,UAAAA;AAAAA,MACAE,aAAAA;AAAAA,IACF,CAAC,GAGDa,EAAsB,EAAI,GAEnB,MAAAC,EAAAC,GAAA;AAAA,MAAA,UACmB5B,EAAU6B;AAAAA,MAAQ,QAAU,CAAC,QAAQ,MAAM;AAAA,MAAC,QAAUzC,EAAMC;AAAAA,IAAM,GAAA;AAAA,MAAAyC,SAAAA,MAAA,CAAAH,SAAAI,EAAA;AAAA,QAAA,OAAA;AAAA,MAAA,GAC7ChC,CAAK,GAAA,CAAA4B,EAAA,MAAA,MAAA,CACzCnB,EAAMO,KAAK,CAAA,GACfjB,EAAMgC,UAAO,CAAI,CAAA,CAAA;AAAA,KAAA;AAAA,EAI1B;AACF,CAAC;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../src/components/reference-array-input/index.tsx"],"sourcesContent":["import type { GetListResult } from '@/provides'\r\nimport { useAsyncState } from '@vueuse/core'\r\nimport { defineComponent } from 'vue'\r\nimport { useRoute } from 'vue-router'\r\nimport { SkyCanAccess } from '../can-access'\r\nimport type { SkyLayoutRouteMeta } from '@/router'\r\nimport { skyConfig } from '@/setup'\r\nimport { useProvideReferenceArrayInput } from '@/hooks'\r\n\r\nexport interface SkyReferenceArrayInputProps {\r\n source: string\r\n reference: string\r\n size?: number\r\n}\r\n\r\nexport const SkyReferenceArrayInput = defineComponent<SkyReferenceArrayInputProps>({\r\n name: 'SkyReferenceArrayInput',\r\n props: {\r\n reference: {\r\n type: String,\r\n required: true,\r\n },\r\n size: {\r\n type: Number,\r\n default: 30,\r\n },\r\n source: {\r\n type: String,\r\n required: true,\r\n },\r\n },\r\n setup(props, { slots }) {\r\n const route = useRoute()\r\n const routeMeta = route.meta as SkyLayoutRouteMeta\r\n\r\n let controller: AbortController | undefined\r\n\r\n const {\r\n state: listData,\r\n isLoading: listLoading,\r\n execute,\r\n } = useAsyncState<GetListResult | undefined, [filter?: Record<string, unknown>]>(\r\n async (filter) => {\r\n controller = new AbortController()\r\n return skyConfig.dataProvider?.getList?.(props.reference, {\r\n pagination: { page: 1, perPage: props.size! },\r\n filter,\r\n signal: controller.signal,\r\n })\r\n },\r\n undefined,\r\n {\r\n immediate: false,\r\n },\r\n )\r\n\r\n useProvideReferenceArrayInput({\r\n reference: props.reference,\r\n getList: (filter?: Record<string, unknown>) => execute(0, filter),\r\n listData,\r\n listLoading,\r\n })\r\n\r\n return () => (\r\n <SkyCanAccess resource={routeMeta.resource} action={['create', 'edit']} column={props.source}>\r\n {slots.default?.()}\r\n </SkyCanAccess>\r\n )\r\n },\r\n})\r\n"],"names":["SkyReferenceArrayInput","defineComponent","name","props","reference","type","String","required","size","Number","default","source","setup","slots","routeMeta","useRoute","meta","controller","state","listData","isLoading","listLoading","execute","useAsyncState","filter","AbortController","skyConfig","dataProvider","getList","pagination","page","perPage","signal","undefined","immediate","useProvideReferenceArrayInput","_createVNode","SkyCanAccess","resource"],"mappings":"61BAeaA,EAAyBC,EAAAA,gBAA6C,CACjFC,KAAM,yBACNC,MAAO,CACLC,UAAW,CACTC,KAAMC,OACNC,SAAU,IAEZC,KAAM,CACJH,KAAMI,OACNC,QAAS,IAEXC,OAAQ,CACNN,KAAMC,OACNC,SAAU,EACZ,GAEFK,MAAMT,EAAO,CAAEU,MAAAA,CAAM,EAAG,CAEtB,MAAMC,EADQC,EAAAA,SAAQ,EACEC,KAExB,IAAIC,EAEJ,KAAM,CACJC,MAAOC,EACPC,UAAWC,EACXC,QAAAA,CACF,EAAIC,EAAAA,cACF,MAAOC,IACLP,EAAa,IAAIQ,gBACVC,EAAAA,UAAUC,cAAcC,UAAUzB,EAAMC,UAAW,CACxDyB,WAAY,CAAEC,KAAM,EAAGC,QAAS5B,EAAMK,MACtCgB,OAAAA,EACAQ,OAAQf,EAAWe,MACrB,CAAC,GAEHC,OACA,CACEC,UAAW,EACb,CACF,EAEAC,OAAAA,gCAA8B,CAC5B/B,UAAWD,EAAMC,UACjBwB,QAAUJ,GAAqCF,EAAQ,EAAGE,CAAM,EAChEL,SAAAA,EACAE,YAAAA,CACF,CAAC,EAEM,IAAAe,EAAAA,YAAAC,eAAA,CAAA,SACmBvB,EAAUwB,SAAQ,OAAU,CAAC,SAAU,MAAM,EAAC,OAAUnC,EAAMQ,MAAM,EAAA,CAAAD,QAAAA,IAAA,CACzFG,EAAMH,UAAO,CAAI,EAAA,CAGxB,CACF,CAAC"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/reference-array-input/index.tsx"],"sourcesContent":["import type { GetListResult } from '@/provides'\nimport { useAsyncState } from '@vueuse/core'\nimport { defineComponent } from 'vue'\nimport { useRoute } from 'vue-router'\nimport { SkyCanAccess } from '../can-access'\nimport type { SkyLayoutRouteMeta } from '@/router'\nimport { skyConfig } from '@/setup'\nimport { useProvideReferenceArrayInput } from '@/hooks'\n\nexport interface SkyReferenceArrayInputProps {\n source: string\n reference: string\n size?: number\n}\n\nexport const SkyReferenceArrayInput = defineComponent<SkyReferenceArrayInputProps>({\n name: 'SkyReferenceArrayInput',\n props: {\n reference: {\n type: String,\n required: true,\n },\n size: {\n type: Number,\n default: 30,\n },\n source: {\n type: String,\n required: true,\n },\n },\n setup(props, { slots }) {\n const route = useRoute()\n const routeMeta = route.meta as SkyLayoutRouteMeta\n\n let controller: AbortController | undefined\n\n const {\n state: listData,\n isLoading: listLoading,\n execute,\n } = useAsyncState<GetListResult | undefined, [filter?: Record<string, unknown>]>(\n async (filter) => {\n controller = new AbortController()\n return skyConfig.dataProvider?.getList?.(props.reference, {\n pagination: { page: 1, perPage: props.size! },\n filter,\n signal: controller.signal,\n })\n },\n undefined,\n {\n immediate: false,\n },\n )\n\n useProvideReferenceArrayInput({\n reference: props.reference,\n getList: (filter?: Record<string, unknown>) => execute(0, filter),\n listData,\n listLoading,\n })\n\n return () => (\n <SkyCanAccess resource={routeMeta.resource} action={['create', 'edit']} column={props.source}>\n {slots.default?.()}\n </SkyCanAccess>\n )\n },\n})\n"],"names":["SkyReferenceArrayInput","defineComponent","name","props","reference","type","String","required","size","Number","default","source","setup","slots","routeMeta","useRoute","meta","controller","state","listData","isLoading","listLoading","execute","useAsyncState","filter","AbortController","skyConfig","dataProvider","getList","pagination","page","perPage","signal","undefined","immediate","useProvideReferenceArrayInput","_createVNode","SkyCanAccess","resource"],"mappings":"61BAeaA,EAAyBC,EAAAA,gBAA6C,CACjFC,KAAM,yBACNC,MAAO,CACLC,UAAW,CACTC,KAAMC,OACNC,SAAU,IAEZC,KAAM,CACJH,KAAMI,OACNC,QAAS,IAEXC,OAAQ,CACNN,KAAMC,OACNC,SAAU,EACZ,GAEFK,MAAMT,EAAO,CAAEU,MAAAA,CAAM,EAAG,CAEtB,MAAMC,EADQC,EAAAA,SAAQ,EACEC,KAExB,IAAIC,EAEJ,KAAM,CACJC,MAAOC,EACPC,UAAWC,EACXC,QAAAA,CACF,EAAIC,EAAAA,cACF,MAAOC,IACLP,EAAa,IAAIQ,gBACVC,EAAAA,UAAUC,cAAcC,UAAUzB,EAAMC,UAAW,CACxDyB,WAAY,CAAEC,KAAM,EAAGC,QAAS5B,EAAMK,MACtCgB,OAAAA,EACAQ,OAAQf,EAAWe,MACrB,CAAC,GAEHC,OACA,CACEC,UAAW,EACb,CACF,EAEAC,OAAAA,gCAA8B,CAC5B/B,UAAWD,EAAMC,UACjBwB,QAAUJ,GAAqCF,EAAQ,EAAGE,CAAM,EAChEL,SAAAA,EACAE,YAAAA,CACF,CAAC,EAEM,IAAAe,EAAAA,YAAAC,eAAA,CAAA,SACmBvB,EAAUwB,SAAQ,OAAU,CAAC,SAAU,MAAM,EAAC,OAAUnC,EAAMQ,MAAM,EAAA,CAAAD,QAAAA,IAAA,CACzFG,EAAMH,UAAO,CAAI,EAAA,CAGxB,CACF,CAAC"}