qidian-vue-ui 1.2.79 → 1.2.80
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.
|
@@ -1,48 +1,48 @@
|
|
|
1
|
-
.qd-crud-tabs-table[data-v-
|
|
1
|
+
.qd-crud-tabs-table[data-v-40fa9a71] {
|
|
2
2
|
width: 100%;
|
|
3
3
|
height: 100%;
|
|
4
4
|
display: flex;
|
|
5
5
|
flex-direction: column;
|
|
6
6
|
}
|
|
7
|
-
.qd-crud-tabs-table__nav[data-v-
|
|
7
|
+
.qd-crud-tabs-table__nav[data-v-40fa9a71] {
|
|
8
8
|
width: 100%;
|
|
9
9
|
border-top-left-radius: var(--td-radius-medium);
|
|
10
10
|
border-top-right-radius: var(--td-radius-medium);
|
|
11
11
|
overflow: hidden;
|
|
12
12
|
}
|
|
13
|
-
.qd-crud-tabs-table__nav[data-v-
|
|
13
|
+
.qd-crud-tabs-table__nav[data-v-40fa9a71] .t-tabs__content {
|
|
14
14
|
display: none;
|
|
15
15
|
}
|
|
16
|
-
.qd-crud-tabs-table__shared-search[data-v-
|
|
16
|
+
.qd-crud-tabs-table__shared-search[data-v-40fa9a71] {
|
|
17
17
|
border-top-left-radius: 0;
|
|
18
18
|
border-top-right-radius: 0;
|
|
19
19
|
}
|
|
20
|
-
.qd-crud-tabs-table__shared-search + .qd-crud-tabs-table__content[data-v-
|
|
20
|
+
.qd-crud-tabs-table__shared-search + .qd-crud-tabs-table__content[data-v-40fa9a71] {
|
|
21
21
|
margin-top: var(--td-comp-margin-l);
|
|
22
22
|
}
|
|
23
|
-
.qd-crud-tabs-table__shared-search + .qd-crud-tabs-table__content[data-v-
|
|
23
|
+
.qd-crud-tabs-table__shared-search + .qd-crud-tabs-table__content[data-v-40fa9a71] .qd-crud-table__body {
|
|
24
24
|
border-top-left-radius: var(--td-radius-medium);
|
|
25
25
|
border-top-right-radius: var(--td-radius-medium);
|
|
26
26
|
}
|
|
27
|
-
.qd-crud-tabs-table__content[data-v-
|
|
27
|
+
.qd-crud-tabs-table__content[data-v-40fa9a71] {
|
|
28
28
|
flex: auto;
|
|
29
29
|
background-color: transparent;
|
|
30
30
|
}
|
|
31
|
-
.qd-crud-tabs-table__content[data-v-
|
|
31
|
+
.qd-crud-tabs-table__content[data-v-40fa9a71] .t-tabs__header {
|
|
32
32
|
display: none;
|
|
33
33
|
}
|
|
34
|
-
.qd-crud-tabs-table__content[data-v-
|
|
34
|
+
.qd-crud-tabs-table__content[data-v-40fa9a71] .t-tabs__content {
|
|
35
35
|
height: 100%;
|
|
36
36
|
}
|
|
37
|
-
.qd-crud-tabs-table__content[data-v-
|
|
37
|
+
.qd-crud-tabs-table__content[data-v-40fa9a71] .t-tab-panel {
|
|
38
38
|
height: 100%;
|
|
39
39
|
}
|
|
40
|
-
.qd-crud-tabs-table__content[data-v-
|
|
41
|
-
.qd-crud-tabs-table__content[data-v-
|
|
40
|
+
.qd-crud-tabs-table__content[data-v-40fa9a71] .qd-crud-table .qd-crud-search,
|
|
41
|
+
.qd-crud-tabs-table__content[data-v-40fa9a71] .qd-crud-table__body {
|
|
42
42
|
border-top-left-radius: 0;
|
|
43
43
|
border-top-right-radius: 0;
|
|
44
44
|
}
|
|
45
|
-
.qd-crud-tabs-table__content[data-v-
|
|
45
|
+
.qd-crud-tabs-table__content[data-v-40fa9a71] .qd-crud-table .qd-crud-search + .qd-crud-table__body {
|
|
46
46
|
border-top-left-radius: var(--td-radius-medium);
|
|
47
47
|
border-top-right-radius: var(--td-radius-medium);
|
|
48
48
|
}
|
|
@@ -2,7 +2,7 @@ import './index.css'
|
|
|
2
2
|
import _sfc_main from "./index.vue2.mjs";
|
|
3
3
|
/* empty css */
|
|
4
4
|
import _export_sfc from "../../../_virtual/_plugin-vue_export-helper.mjs";
|
|
5
|
-
const index = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
5
|
+
const index = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-40fa9a71"]]);
|
|
6
6
|
export {
|
|
7
7
|
index as default
|
|
8
8
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.vue2.mjs","sources":["../../../../src/components/crud/tabs-table/index.vue"],"sourcesContent":["<template>\n <div class=\"qd-crud-tabs-table\">\n <t-tabs class=\"qd-crud-tabs-table__nav\" v-model=\"activeTab\">\n <template v-if=\"$slots['tab-action']\" #action=\"slotProps\">\n <slot name=\"tab-action\" v-bind=\"slotProps\" />\n </template>\n\n <t-tab-panel\n v-for=\"tab in reProps.tabs\"\n :key=\"tab.value\"\n :value=\"tab.value\"\n :label=\"tab.label\"\n destroy-on-hide\n lazy\n >\n <template v-if=\"$slots['tab-label']\" #label>\n <slot name=\"tab-label\" v-bind=\"tab\" />\n </template>\n </t-tab-panel>\n </t-tabs>\n\n <qd-crud-search\n v-if=\"reProps.sharedSearch && activeTabItem?.searchOptions?.items?.length\"\n class=\"qd-crud-tabs-table__shared-search\"\n ref=\"sharedSearch\"\n v-model:data=\"searchData\"\n v-bind=\"activeTabItem.searchOptions\"\n @search=\"handleSharedSearch\"\n @reset=\"handleResetSharedSearch\"\n >\n <template\n v-for=\"item in extractSlotsWithPrefix($slots, 'search')\"\n #[item.filterName]=\"slotProps\"\n >\n <slot :name=\"item.originalName\" v-bind=\"slotProps\" />\n </template>\n </qd-crud-search>\n\n <t-tabs class=\"qd-crud-tabs-table__content\" v-model=\"activeTab\">\n <t-tab-panel\n v-for=\"(tab, tabIdx) in reProps.tabs\"\n :key=\"tab.value\"\n :value=\"tab.value\"\n :label=\"tab.label\"\n :destroy-on-hide=\"reProps.sharedSearch\"\n lazy\n >\n <qd-crud-table\n v-if=\"reProps.sharedSearch\"\n :ref=\"(el) => tableRefs.set(el, tabIdx)\"\n v-model:search-data=\"searchData\"\n v-bind=\"tab.crudOptions\"\n >\n <template v-for=\"name in extractSlotsWithoutPrefix($slots, 'tab')\" #[name]=\"slotProps\">\n <slot :name=\"name\" v-bind=\"slotProps\" />\n </template>\n </qd-crud-table>\n\n <qd-crud-table\n v-else\n :ref=\"(el) => tableRefs.set(el, tabIdx)\"\n :search=\"tab.searchOptions\"\n v-bind=\"tab.crudOptions\"\n >\n <template v-for=\"name in extractSlotsWithoutPrefix($slots, 'tab')\" #[name]=\"slotProps\">\n <slot :name=\"name\" v-bind=\"slotProps\" />\n </template>\n </qd-crud-table>\n </t-tab-panel>\n </t-tabs>\n </div>\n</template>\n\n<script\n setup\n lang=\"ts\"\n generic=\"\n D extends TableRowData = TableRowData,\n R = unknown,\n P = ServicePageParams,\n TP = P,\n Pag extends ServicePagination = ServicePagination\n \"\n>\n import { useVModels } from '@vueuse/core'\n import type { ServiceMaybePageParams, ServicePageParams, ServicePagination } from 'qidian-shared'\n import {\n createExposeProxy,\n extractSlotsWithoutPrefix,\n extractSlotsWithPrefix,\n useTplRefsList\n } from 'qidian-shared'\n import type { TableRowData } from 'tdesign-vue-next'\n import { TabPanel as TTabPanel, Tabs as TTabs } from 'tdesign-vue-next'\n import type { ToRefs } from 'vue'\n import { computed, nextTick, useTemplateRef } from 'vue'\n\n import { QdCrudSearch } from '../search'\n import type { QdCrudTableInstanceFunctions, QdCrudTableProps } from '../table'\n import { QdCrudTable } from '../table'\n import { qdCrudTabsTableProps } from './props'\n import type {\n QdCrudTabsTableBaseProps,\n QdCrudTabsTableInstanceFunctions,\n QdCrudTabsTableProps\n } from './types'\n\n defineOptions({\n name: 'QdCrudTabsTable'\n })\n\n type Props = QdCrudTabsTableProps<D, R, P, TP, Pag>\n\n const props = withDefaults(defineProps<Props>(), qdCrudTabsTableProps)\n const emit = defineEmits<{\n 'update:activeTab': [Props['activeTab']]\n 'update:searchData': [Props['searchData']]\n }>()\n\n const { activeTab, searchData } = useVModels(props, emit, {\n passive: true\n }) as unknown as Required<ToRefs<Pick<Props, 'activeTab' | 'searchData'>>>\n\n const reProps = computed(() => {\n const {\n tabs,\n activeTab: inActive,\n buildTabOptions,\n sharedSearch,\n syncServiceKey,\n ...baseTableOptions\n } = props\n\n const reTabs = tabs.map((item) => {\n const crudOptions = buildCrudOptions(item, baseTableOptions) as QdCrudTableProps<\n D,\n R,\n P,\n TP,\n Pag\n >\n\n const { search: searchOptions, ...otherOptions } = crudOptions\n\n return {\n ...item,\n searchOptions,\n crudOptions: otherOptions\n }\n })\n\n return {\n tabs: reTabs,\n buildTabOptions,\n sharedSearch,\n syncServiceKey,\n baseTableOptions,\n models: {\n inActive\n }\n }\n })\n\n const activeTabItem = computed(() =>\n reProps.value.tabs.find((item) => item.value === activeTab.value)\n )\n\n const sharedSearchRef = useTemplateRef('sharedSearch')\n\n const tableRefs = useTplRefsList<QdCrudTableInstanceFunctions>(false)\n const activeTableRef = computed(() => {\n const fIdx = reProps.value.tabs.findIndex((tab) => tab.value === activeTab.value)\n if (fIdx === -1) return\n\n return tableRefs.value[fIdx]\n })\n\n function initActiveTab() {\n if (!reProps.value.tabs.length || activeTab.value) return\n\n activeTab.value = reProps.value.tabs[0].value\n }\n\n function buildCrudOptions(\n tab: Props['tabs'][number],\n baseOptions: QdCrudTabsTableBaseProps<D, R, P, TP, Pag>\n ) {\n const mergeOptions = {\n ...baseOptions,\n ...props.buildTabOptions?.(tab)\n }\n\n const reTransformParams = (params: ServiceMaybePageParams<Pag>) => {\n const merged = { ...params } as ServiceMaybePageParams<Pag>\n const { syncServiceKey } = props\n\n if (syncServiceKey) {\n ;(merged as Record<string, unknown>)[syncServiceKey] = tab.value\n }\n\n if (mergeOptions.transformParams) return mergeOptions.transformParams(merged)\n return merged\n }\n\n return {\n ...mergeOptions,\n transformParams: reTransformParams\n }\n }\n\n async function handleSharedSearch() {\n const res = await sharedSearchRef.value?.submit()\n if (res?.validateResult !== true) return\n\n activeTableRef.value?.changeCurrent(1)\n }\n\n async function handleResetSharedSearch() {\n sharedSearchRef.value?.reset()\n await nextTick()\n const res = await sharedSearchRef.value?.submit()\n if (res?.validateResult !== true) return\n\n activeTableRef.value?.changeCurrent(1)\n }\n\n function refreshAll() {\n tableRefs.value.forEach((item) => item?.refresh())\n }\n\n function changeAllCurrent(current: number) {\n tableRefs.value.forEach((item) => item?.changeCurrent(current))\n }\n\n initActiveTab()\n\n defineExpose(\n createExposeProxy(\n { refreshAll, changeAllCurrent },\n activeTableRef\n ) as unknown as QdCrudTabsTableInstanceFunctions<D, R, P, TP, Pag>\n )\n</script>\n\n<style lang=\"less\" scoped>\n .qd-crud-tabs-table {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n\n &__nav {\n width: 100%;\n border-top-left-radius: var(--td-radius-medium);\n border-top-right-radius: var(--td-radius-medium);\n overflow: hidden;\n\n :deep(.t-tabs__content) {\n display: none;\n }\n }\n\n &__shared-search {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n\n & + .qd-crud-tabs-table__content {\n margin-top: var(--td-comp-margin-l);\n\n :deep(.qd-crud-table__body) {\n border-top-left-radius: var(--td-radius-medium);\n border-top-right-radius: var(--td-radius-medium);\n }\n }\n }\n\n &__content {\n flex: auto;\n background-color: transparent;\n\n :deep(.t-tabs) {\n &__header {\n display: none;\n }\n\n &__content {\n height: 100%;\n }\n }\n\n :deep(.t-tab-panel) {\n height: 100%;\n }\n\n :deep(.qd-crud-table) {\n .qd-crud-search,\n &__body {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n\n .qd-crud-search + .qd-crud-table__body {\n border-top-left-radius: var(--td-radius-medium);\n border-top-right-radius: var(--td-radius-medium);\n }\n }\n }\n }\n</style>\n"],"names":["_openBlock","_createElementBlock","_createVNode","_unref","TTabs","_Fragment","_renderList","_createBlock","TTabPanel","$slots","_renderSlot","_mergeProps","_withCtx","_createSlots"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.vue2.mjs","sources":["../../../../src/components/crud/tabs-table/index.vue"],"sourcesContent":["<template>\n <div class=\"qd-crud-tabs-table\">\n <t-tabs class=\"qd-crud-tabs-table__nav\" v-model=\"activeTab\">\n <template v-if=\"$slots['tab-action']\" #action=\"slotProps\">\n <slot name=\"tab-action\" v-bind=\"slotProps\" />\n </template>\n\n <t-tab-panel\n v-for=\"tab in reProps.tabs\"\n :key=\"tab.value\"\n :value=\"tab.value\"\n :label=\"tab.label\"\n destroy-on-hide\n lazy\n >\n <template v-if=\"$slots['tab-label']\" #label>\n <slot name=\"tab-label\" v-bind=\"tab\" />\n </template>\n </t-tab-panel>\n </t-tabs>\n\n <qd-crud-search\n v-if=\"reProps.sharedSearch && activeTabItem?.searchOptions?.items?.length\"\n class=\"qd-crud-tabs-table__shared-search\"\n ref=\"sharedSearch\"\n v-model:data=\"searchData\"\n v-bind=\"activeTabItem.searchOptions\"\n @search=\"handleSharedSearch\"\n @reset=\"handleResetSharedSearch\"\n >\n <template\n v-for=\"item in extractSlotsWithPrefix($slots, 'search')\"\n #[item.filterName]=\"slotProps\"\n >\n <slot :name=\"item.originalName\" v-bind=\"slotProps\" />\n </template>\n </qd-crud-search>\n\n <t-tabs class=\"qd-crud-tabs-table__content\" v-model=\"activeTab\">\n <t-tab-panel\n v-for=\"(tab, tabIdx) in reProps.tabs\"\n :key=\"tab.value\"\n :value=\"tab.value\"\n :label=\"tab.label\"\n :destroy-on-hide=\"reProps.sharedSearch\"\n lazy\n >\n <qd-crud-table\n v-if=\"reProps.sharedSearch\"\n :ref=\"(el) => tableRefs.set(el, tabIdx)\"\n v-model:search-data=\"searchData\"\n v-bind=\"tab.crudOptions\"\n >\n <template v-for=\"name in extractSlotsWithoutPrefix($slots, 'tab')\" #[name]=\"slotProps\">\n <slot :name=\"name\" v-bind=\"slotProps\" />\n </template>\n </qd-crud-table>\n\n <qd-crud-table\n v-else\n :ref=\"(el) => tableRefs.set(el, tabIdx)\"\n :search=\"tab.searchOptions\"\n v-bind=\"tab.crudOptions\"\n >\n <template v-for=\"name in extractSlotsWithoutPrefix($slots, 'tab')\" #[name]=\"slotProps\">\n <slot :name=\"name\" v-bind=\"slotProps\" />\n </template>\n </qd-crud-table>\n </t-tab-panel>\n </t-tabs>\n </div>\n</template>\n\n<script\n setup\n lang=\"ts\"\n generic=\"\n D extends TableRowData = TableRowData,\n R = unknown,\n P = ServicePageParams,\n TP = P,\n Pag extends ServicePagination = ServicePagination\n \"\n>\n import { useVModels } from '@vueuse/core'\n import type { ServiceMaybePageParams, ServicePageParams, ServicePagination } from 'qidian-shared'\n import {\n createExposeProxy,\n extractSlotsWithoutPrefix,\n extractSlotsWithPrefix,\n useTplRefsList\n } from 'qidian-shared'\n import type { TableRowData } from 'tdesign-vue-next'\n import { TabPanel as TTabPanel, Tabs as TTabs } from 'tdesign-vue-next'\n import type { ToRefs } from 'vue'\n import { computed, nextTick, useTemplateRef } from 'vue'\n\n import { QdCrudSearch } from '../search'\n import type { QdCrudTableInstanceFunctions, QdCrudTableProps } from '../table'\n import { QdCrudTable } from '../table'\n import { qdCrudTabsTableProps } from './props'\n import type {\n QdCrudTabsTableBaseProps,\n QdCrudTabsTableInstanceFunctions,\n QdCrudTabsTableProps\n } from './types'\n\n defineOptions({\n name: 'QdCrudTabsTable'\n })\n\n type Props = QdCrudTabsTableProps<D, R, P, TP, Pag>\n\n const props = withDefaults(defineProps<Props>(), qdCrudTabsTableProps)\n const emit = defineEmits<{\n 'update:activeTab': [Props['activeTab']]\n 'update:searchData': [Props['searchData']]\n }>()\n\n const { activeTab, searchData } = useVModels(props, emit, {\n passive: true\n }) as unknown as Required<ToRefs<Pick<Props, 'activeTab' | 'searchData'>>>\n\n const reProps = computed(() => {\n const {\n tabs,\n activeTab: inActive,\n buildTabOptions,\n sharedSearch,\n syncServiceKey,\n searchData: _searchData,\n ...baseTableOptions\n } = props\n\n const reTabs = tabs.map((item) => {\n const crudOptions = buildCrudOptions(item, baseTableOptions) as QdCrudTableProps<\n D,\n R,\n P,\n TP,\n Pag\n >\n\n const { search: searchOptions, ...otherOptions } = crudOptions\n\n return {\n ...item,\n searchOptions,\n crudOptions: otherOptions\n }\n })\n\n return {\n tabs: reTabs,\n buildTabOptions,\n sharedSearch,\n syncServiceKey,\n baseTableOptions,\n models: {\n inActive\n }\n }\n })\n\n const activeTabItem = computed(() =>\n reProps.value.tabs.find((item) => item.value === activeTab.value)\n )\n\n const sharedSearchRef = useTemplateRef('sharedSearch')\n\n const tableRefs = useTplRefsList<QdCrudTableInstanceFunctions>(false)\n const activeTableRef = computed(() => {\n const fIdx = reProps.value.tabs.findIndex((tab) => tab.value === activeTab.value)\n if (fIdx === -1) return\n\n return tableRefs.value[fIdx]\n })\n\n function initActiveTab() {\n if (!reProps.value.tabs.length || activeTab.value) return\n\n activeTab.value = reProps.value.tabs[0].value\n }\n\n function buildCrudOptions(\n tab: Props['tabs'][number],\n baseOptions: QdCrudTabsTableBaseProps<D, R, P, TP, Pag>\n ) {\n const mergeOptions = {\n ...baseOptions,\n ...props.buildTabOptions?.(tab)\n }\n\n const reTransformParams = (params: ServiceMaybePageParams<Pag>) => {\n const merged = { ...params } as ServiceMaybePageParams<Pag>\n const { syncServiceKey } = props\n\n if (syncServiceKey) {\n ;(merged as Record<string, unknown>)[syncServiceKey] = tab.value\n }\n\n if (mergeOptions.transformParams) return mergeOptions.transformParams(merged)\n return merged\n }\n\n return {\n ...mergeOptions,\n transformParams: reTransformParams\n }\n }\n\n async function handleSharedSearch() {\n const res = await sharedSearchRef.value?.submit()\n if (res?.validateResult !== true) return\n\n activeTableRef.value?.changeCurrent(1)\n }\n\n async function handleResetSharedSearch() {\n sharedSearchRef.value?.reset()\n await nextTick()\n const res = await sharedSearchRef.value?.submit()\n if (res?.validateResult !== true) return\n\n activeTableRef.value?.changeCurrent(1)\n }\n\n function refreshAll() {\n tableRefs.value.forEach((item) => item?.refresh())\n }\n\n function changeAllCurrent(current: number) {\n tableRefs.value.forEach((item) => item?.changeCurrent(current))\n }\n\n initActiveTab()\n\n defineExpose(\n createExposeProxy(\n { refreshAll, changeAllCurrent },\n activeTableRef\n ) as unknown as QdCrudTabsTableInstanceFunctions<D, R, P, TP, Pag>\n )\n</script>\n\n<style lang=\"less\" scoped>\n .qd-crud-tabs-table {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n\n &__nav {\n width: 100%;\n border-top-left-radius: var(--td-radius-medium);\n border-top-right-radius: var(--td-radius-medium);\n overflow: hidden;\n\n :deep(.t-tabs__content) {\n display: none;\n }\n }\n\n &__shared-search {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n\n & + .qd-crud-tabs-table__content {\n margin-top: var(--td-comp-margin-l);\n\n :deep(.qd-crud-table__body) {\n border-top-left-radius: var(--td-radius-medium);\n border-top-right-radius: var(--td-radius-medium);\n }\n }\n }\n\n &__content {\n flex: auto;\n background-color: transparent;\n\n :deep(.t-tabs) {\n &__header {\n display: none;\n }\n\n &__content {\n height: 100%;\n }\n }\n\n :deep(.t-tab-panel) {\n height: 100%;\n }\n\n :deep(.qd-crud-table) {\n .qd-crud-search,\n &__body {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n\n .qd-crud-search + .qd-crud-table__body {\n border-top-left-radius: var(--td-radius-medium);\n border-top-right-radius: var(--td-radius-medium);\n }\n }\n }\n }\n</style>\n"],"names":["_openBlock","_createElementBlock","_createVNode","_unref","TTabs","_Fragment","_renderList","_createBlock","TTabPanel","$slots","_renderSlot","_mergeProps","_withCtx","_createSlots"],"mappings":"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"}
|