@antsoo-lib/core 1.0.17 → 2.0.2

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 (77) hide show
  1. package/.turbo/turbo-build.log +0 -0
  2. package/CHANGELOG.md +16 -0
  3. package/dist/core.css +1 -1
  4. package/dist/index.cjs +4 -8
  5. package/dist/index.js +2367 -49071
  6. package/dist/types/BaseSearch/index.d.ts +59 -0
  7. package/dist/types/{core/src/BaseTable → BaseTable}/index.d.ts +20 -6
  8. package/dist/types/Form/CoreForm.d.ts +82 -0
  9. package/dist/types/Form/types.d.ts +57 -0
  10. package/dist/types/SSelectPage/index.d.ts +102 -0
  11. package/dist/types/index.d.ts +13 -0
  12. package/dist/types/{core/src/BaseTable/renderers → render}/AreaCascader.d.ts +3 -3
  13. package/dist/types/{core/src/BaseTable/renderers → render}/AutoComplete.d.ts +2 -2
  14. package/dist/types/{core/src/BaseTable/renderers → render}/Button.d.ts +2 -2
  15. package/dist/types/{core/src/BaseTable/renderers → render}/Cascader.d.ts +3 -3
  16. package/dist/types/{core/src/BaseTable/renderers → render}/Checkbox.d.ts +2 -2
  17. package/dist/types/{core/src/BaseTable/renderers → render}/CheckboxGroup.d.ts +2 -2
  18. package/dist/types/render/Custom.d.ts +8 -0
  19. package/dist/types/{core/src/BaseTable/renderers → render}/DatePicker.d.ts +2 -2
  20. package/dist/types/{core/src/BaseTable/renderers → render}/Input.d.ts +2 -2
  21. package/dist/types/{core/src/BaseTable/renderers → render}/InputGroup.d.ts +3 -3
  22. package/dist/types/{core/src/BaseTable/renderers → render}/InputNumber.d.ts +2 -2
  23. package/dist/types/{core/src/BaseTable/renderers → render}/InputPassword.d.ts +2 -2
  24. package/dist/types/render/InputRange.d.ts +9 -0
  25. package/dist/types/{core/src/BaseTable/renderers → render}/RadioGroup.d.ts +2 -2
  26. package/dist/types/{core/src/BaseTable/renderers → render}/Select.d.ts +2 -2
  27. package/dist/types/{core/src/BaseTable/renderers → render}/SselectPage.d.ts +2 -2
  28. package/dist/types/{core/src/BaseTable/renderers → render}/Switch.d.ts +2 -2
  29. package/dist/types/render/Tree.d.ts +9 -0
  30. package/dist/types/{core/src/BaseTable/renderers → render}/TreeSelect.d.ts +2 -2
  31. package/dist/types/{core/src/BaseTable/renderers → render}/Upload.d.ts +2 -2
  32. package/dist/types/{core/src/BaseTable/helpers.d.ts → render/helper.d.ts} +2 -1
  33. package/dist/types/{core/src/BaseTable/renderers → render}/index.d.ts +24 -5
  34. package/dist/types/{core/src/BaseTable → render}/types.d.ts +48 -4
  35. package/dist/types/utils/attrMapping.d.ts +26 -0
  36. package/package.json +12 -15
  37. package/src/BaseSearch/index.vue +371 -0
  38. package/src/BaseTable/index.vue +48 -22
  39. package/src/Form/CoreForm.vue +782 -0
  40. package/src/Form/types.ts +86 -0
  41. package/src/SSelectPage/index.vue +607 -0
  42. package/src/index.ts +15 -1
  43. package/src/{BaseTable/renderers → render}/AreaCascader.tsx +3 -3
  44. package/src/{BaseTable/renderers → render}/AutoComplete.tsx +3 -3
  45. package/src/{BaseTable/renderers → render}/Button.tsx +2 -2
  46. package/src/{BaseTable/renderers → render}/Cascader.tsx +3 -3
  47. package/src/{BaseTable/renderers → render}/Checkbox.tsx +2 -2
  48. package/src/{BaseTable/renderers → render}/CheckboxGroup.tsx +2 -2
  49. package/src/render/Custom.tsx +19 -0
  50. package/src/{BaseTable/renderers → render}/DatePicker.tsx +2 -2
  51. package/src/{BaseTable/renderers → render}/Input.tsx +3 -3
  52. package/src/{BaseTable/renderers → render}/InputGroup.tsx +3 -3
  53. package/src/{BaseTable/renderers → render}/InputNumber.tsx +3 -3
  54. package/src/{BaseTable/renderers → render}/InputPassword.tsx +3 -3
  55. package/src/render/InputRange.tsx +154 -0
  56. package/src/{BaseTable/renderers → render}/RadioGroup.tsx +2 -2
  57. package/src/{BaseTable/renderers → render}/Select.tsx +2 -2
  58. package/src/{BaseTable/renderers → render}/SselectPage.tsx +3 -3
  59. package/src/{BaseTable/renderers → render}/Switch.tsx +2 -2
  60. package/src/render/Tree.tsx +136 -0
  61. package/src/{BaseTable/renderers → render}/TreeSelect.tsx +2 -2
  62. package/src/{BaseTable/renderers → render}/Upload.tsx +4 -5
  63. package/src/{BaseTable/utils.tsx → render/helper.tsx} +86 -9
  64. package/src/{BaseTable/renderers → render}/index.ts +45 -4
  65. package/src/{BaseTable → render}/types.ts +62 -2
  66. package/src/utils/attrMapping.ts +106 -0
  67. package/vite.config.ts +15 -2
  68. package/dist/types/core/index.d.ts +0 -6
  69. package/dist/types/core/src/BaseTable/utils.d.ts +0 -8
  70. package/dist/types/core/src/index.d.ts +0 -2
  71. package/index.css +0 -2
  72. package/index.ts +0 -21
  73. package/src/BaseTable/helpers.tsx +0 -91
  74. /package/dist/types/{core/src/BaseTable → render}/registry.d.ts +0 -0
  75. /package/dist/types/{core/src/BaseTable → render}/state.d.ts +0 -0
  76. /package/src/{BaseTable → render}/registry.ts +0 -0
  77. /package/src/{BaseTable → render}/state.ts +0 -0
@@ -1,17 +1,19 @@
1
1
  <script lang="ts" setup>
2
- import { Tooltip } from '@antsoo-lib/components'
2
+ import { Button as AButton, Pagination, Popover, Tooltip } from '@antsoo-lib/components'
3
3
  import { QuestionCircleOutlined } from '@antsoo-lib/icons'
4
4
  import type { AnyObject } from '@antsoo-lib/shared'
5
5
  import { PRECISION } from '@antsoo-lib/shared'
6
- import { env, generateUniqueId, isNaN } from '@antsoo-lib/utils'
6
+ import type { env as _env } from '@antsoo-lib/utils'
7
+ import { generateUniqueId, isNaN } from '@antsoo-lib/utils'
7
8
  import { cloneDeep } from 'lodash-es'
8
9
  import type { VxeComponentSizeType } from 'vxe-pc-ui'
9
10
  import type { VxeGridPropTypes, VxeGridProps } from 'vxe-table'
10
11
 
11
12
  import { computed, ref } from 'vue'
12
13
 
13
- import { renderToolbar, useToolbarState } from './utils'
14
- import type { ToolbarConfig } from './utils'
14
+ import { renderToolbar } from '../render/helper'
15
+ import { useToolbarState } from '../render/state'
16
+ import type { ToolbarConfig } from '../render/types'
15
17
 
16
18
  // Props默认值
17
19
  const props = withDefaults(defineProps<Props>(), {
@@ -29,6 +31,7 @@ const props = withDefaults(defineProps<Props>(), {
29
31
  rToolBarCount: 4,
30
32
  permissions: () => [],
31
33
  getCommonCodeOptions: undefined,
34
+ hoverColor: '#E3FCF7',
32
35
  })
33
36
  // 抛出Emit方法(类型化)
34
37
  const emit = defineEmits<{
@@ -42,7 +45,7 @@ const emit = defineEmits<{
42
45
  (e: 'radioChangeEvent', params: { row: any; rowIndex: number; records: any }): void
43
46
  (e: 'buttonClick', params: { button: Button; row: any; grid: any }): void
44
47
  }>()
45
- const { isDev, isTest } = env()
48
+ const { isDev, isTest } = props.env || {}
46
49
  const showHelpText = isDev || isTest
47
50
 
48
51
  // Interface
@@ -127,6 +130,10 @@ interface Props {
127
130
  permissions?: string[]
128
131
  // Decoupled: Function to get common code options
129
132
  getCommonCodeOptions?: (type: string) => Array<{ code: string; name: string }>
133
+ // 悬浮背景颜色
134
+ hoverColor?: string | null
135
+ // 环境变量
136
+ env?: ReturnType<typeof _env>
130
137
  }
131
138
 
132
139
  // table 实例
@@ -160,7 +167,6 @@ const actionColumn = computed(() => {
160
167
  // 预过滤拥有权限的按钮,减少每行的计算量
161
168
  const permittedButtons = computed(() => {
162
169
  const all = actionColumn.value?.buttons || []
163
- // Decoupled: Use props.permissions
164
170
  return all.filter((b) => !b.permission || props.permissions.includes(b.permission))
165
171
  })
166
172
 
@@ -339,7 +345,16 @@ function handleRowButtonClick(button: any, row: any) {
339
345
  */
340
346
  function goToPage(page: number) {
341
347
  if (paginationRef.value && page >= 1) {
342
- onChange(page, currentPageSize.value)
348
+ onChange(page, paginationPageSize.value)
349
+ }
350
+ }
351
+
352
+ /**
353
+ * 重置分页到第一页
354
+ */
355
+ function resetPageNumber(): void {
356
+ if (paginationRef.value) {
357
+ onChange(1, paginationPageSize.value)
343
358
  }
344
359
  }
345
360
 
@@ -452,8 +467,15 @@ function handleGridColumns() {
452
467
  })
453
468
  }
454
469
  // 递归处理列配置
455
- const processColumn = (column: Column): any => {
470
+ const processColumn = (column: Column, index: number): any => {
456
471
  const { buttons, ...col } = column
472
+ // 仅当缺少 field 且不是特殊类型列时,自动补充唯一 field
473
+ // 避免覆盖已有配置,且不仅限于“操作”列
474
+ if (!col.field && !col.type) {
475
+ // 如果是操作列,优先用 'action'(更具语义),否则用索引生成唯一ID
476
+ col.field = col.title === '操作' ? 'action' : `col_${index}`
477
+ }
478
+
457
479
  // 选择器居中时,若启用了溢出选项,会引起3px的误差
458
480
  if (col.type === 'checkbox' || col.type === 'radio') {
459
481
  return {
@@ -573,7 +595,7 @@ function handleGridColumns() {
573
595
 
574
596
  // 返回处理数据
575
597
  return columns.map((column: Column, idx: number) => {
576
- const baseColumn = processColumn(column)
598
+ const baseColumn = processColumn(column, idx)
577
599
 
578
600
  if (idx === firstNonTypeIndex && props.tree) {
579
601
  baseColumn.treeNode = true
@@ -643,6 +665,13 @@ function getSelectedRecords() {
643
665
  return null
644
666
  }
645
667
 
668
+ /**
669
+ * 获取表格实例
670
+ */
671
+ function getGrid(): unknown {
672
+ return basetable.value
673
+ }
674
+
646
675
  /**
647
676
  * 递归查找列配置
648
677
  * @param columns 列数组
@@ -689,6 +718,8 @@ defineExpose({
689
718
  getLToolBarValues: () => lToolBarState.getAllValues(),
690
719
  getRToolBarValues: () => rToolBarState.getAllValues(),
691
720
  goToPage,
721
+ resetPageNumber,
722
+ getGrid,
692
723
  lToolBarState,
693
724
  rToolBarState,
694
725
  getSelectedRecords,
@@ -701,9 +732,9 @@ defineExpose({
701
732
  v-bind="options"
702
733
  :footer-data="footerRenderData"
703
734
  :style="{
704
- '--vxe-ui-table-row-hover-background-color': '#E3FCF7',
705
- '--vxe-ui-table-column-hover-background-color': '#E3FCF7',
706
- '--vxe-ui-table-row-hover-striped-background-color': '#E3FCF7',
735
+ '--vxe-ui-table-row-hover-background-color': hoverColor,
736
+ '--vxe-ui-table-column-hover-background-color': hoverColor,
737
+ '--vxe-ui-table-row-hover-striped-background-color': hoverColor,
707
738
  }"
708
739
  @cell-click="handleCellClick"
709
740
  @checkbox-all="selectAllChangeEvent"
@@ -739,12 +770,12 @@ defineExpose({
739
770
  :disabled="button.disabled?.(row, basetable)"
740
771
  :loading="isButtonLoading(row, button)"
741
772
  v-bind="button.props"
742
- @click="handleRowButtonClick(button, row)"
773
+ @click.stop="handleRowButtonClick(button, row)"
743
774
  >
744
775
  {{ typeof button.name === 'function' ? button.name(row) : button.name }}
745
776
  </AButton>
746
777
  </template>
747
- <APopover v-if="getVisibleButtons(row).length > 3" placement="bottomRight">
778
+ <Popover v-if="getVisibleButtons(row).length > 3" placement="bottomRight">
748
779
  <template #content>
749
780
  <template v-for="button in getVisibleButtons(row).slice(2)" :key="button.name">
750
781
  <AButton
@@ -754,20 +785,20 @@ defineExpose({
754
785
  :disabled="button.disabled?.(row, basetable)"
755
786
  :loading="isButtonLoading(row, button)"
756
787
  v-bind="button.props"
757
- @click="handleRowButtonClick(button, row)"
788
+ @click.stop="handleRowButtonClick(button, row)"
758
789
  >
759
790
  {{ typeof button.name === 'function' ? button.name(row) : button.name }}
760
791
  </AButton>
761
792
  </template>
762
793
  </template>
763
794
  <AButton type="link" size="small"> 更多 </AButton>
764
- </APopover>
795
+ </Popover>
765
796
  </div>
766
797
  </template>
767
798
  <!-- 分页器 -->
768
799
  <template v-if="pager" #pager>
769
800
  <div class="base-table-pager">
770
- <APagination
801
+ <Pagination
771
802
  ref="paginationRef"
772
803
  size="small"
773
804
  :total="total"
@@ -873,9 +904,4 @@ defineExpose({
873
904
  color: #1288fc;
874
905
  cursor: pointer;
875
906
  }
876
-
877
- /* 斑马纹行悬浮背景颜色 */
878
- :deep(.vxe-table--body .vxe-body--row.row--stripe.row--hover) {
879
- background-color: red !important;
880
- }
881
907
  </style>