cnhis-design-vue 3.1.23-beta.1 → 3.1.23-beta.11

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 (111) hide show
  1. package/es/components/big-table/index.d.ts +0 -3
  2. package/es/components/big-table/src/BigTable.vue.d.ts +0 -3
  3. package/es/components/big-table/src/BigTable.vue_vue_type_script_setup_true_lang.js +9 -20
  4. package/es/components/big-table/src/utils.d.ts +1 -1
  5. package/es/components/big-table/src/utils2.js +11 -37
  6. package/es/components/fabric-chart/src/components/PopupMenu.js +7 -2
  7. package/es/components/fabric-chart/src/hooks/useCenter2.js +9 -5
  8. package/es/components/fabric-chart/src/hooks/useEvent2.js +40 -8
  9. package/es/components/field-set/index.d.ts +1 -0
  10. package/es/components/field-set/src/FieldSet.js +16 -10
  11. package/es/components/field-set/src/FieldSet.vue.d.ts +1 -0
  12. package/es/components/form-config/index.d.ts +6 -0
  13. package/es/components/form-config/src/FormConfig.vue.d.ts +6 -0
  14. package/es/components/form-config/src/components/FormConfigEdit.vue.d.ts +6 -0
  15. package/es/components/form-render/index2.js +2 -1
  16. package/es/components/form-render/src/components/renderer/index.d.ts +2 -1
  17. package/es/components/form-render/src/components/renderer/index.js +2 -1
  18. package/es/components/form-render/src/components/renderer/index2.js +2 -1
  19. package/es/components/form-render/src/components/renderer/levelSearchCascade.d.ts +86 -0
  20. package/es/components/form-render/src/components/renderer/levelSearchCascade.js +229 -0
  21. package/es/components/form-render/src/components/renderer/search.d.ts +13 -1
  22. package/es/components/form-render/src/components/renderer/search.js +2 -1
  23. package/es/components/form-render/src/components/renderer/{cascader.d.ts → searchCascade.d.ts} +0 -0
  24. package/es/components/form-render/src/components/renderer/{cascader.js → searchCascade.js} +1 -0
  25. package/es/components/form-render/src/components/renderer/select.js +2 -1
  26. package/es/components/form-render/src/hooks/useAsyncQueue2.js +4 -4
  27. package/es/components/form-render/src/hooks/useFieldListAdaptor2.js +11 -4
  28. package/es/components/form-render/src/hooks/useFormRequest.d.ts +2 -0
  29. package/es/components/form-render/src/hooks/useFormRequest2.js +1 -1
  30. package/es/components/form-render/src/types/fieldItem.d.ts +6 -0
  31. package/es/components/form-render/src/utils/schema2.js +1 -4
  32. package/es/components/iho-table/index.d.ts +0 -1
  33. package/es/components/iho-table/src/IhoTable.vue.d.ts +0 -1
  34. package/es/components/iho-table/src/constants/index.d.ts +5 -3
  35. package/es/components/iho-table/src/constants/index.js +1 -1
  36. package/es/components/iho-table/src/constants/index2.js +9 -7
  37. package/es/components/iho-table/src/hooks/tapHooks/index.d.ts +2 -2
  38. package/es/components/iho-table/src/plugins/index.js +4 -1
  39. package/es/components/iho-table/src/plugins/index2.js +4 -1
  40. package/es/components/iho-table/src/plugins/lowCodeFieldAdaptorPlugin/index2.js +11 -8
  41. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/dateRendererPlugin/editDate.d.ts +31 -0
  42. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/dateRendererPlugin/editDate.js +205 -0
  43. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/dateRendererPlugin/index.d.ts +1 -0
  44. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/dateRendererPlugin/index.js +39 -0
  45. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/hooks/useCommon.js +1 -0
  46. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/hooks/useCommon2.js +17 -0
  47. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/index.d.ts +4 -1
  48. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/index.js +4 -1
  49. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/inputRendererPlugin.d.ts +1 -0
  50. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/{inputRendererPlugins.js → inputRendererPlugin.js} +4 -4
  51. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/selectRendererPlugin/editSelect.d.ts +31 -0
  52. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/selectRendererPlugin/editSelect.js +60 -0
  53. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/selectRendererPlugin/index.d.ts +1 -0
  54. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/selectRendererPlugin/index.js +40 -0
  55. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/selectRendererPlugin/selectUtils.d.ts +2 -0
  56. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/selectRendererPlugin/selectUtils.js +1 -0
  57. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/selectRendererPlugin/selectUtils2.js +20 -0
  58. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/separateRendererPlugin/{edit-separate.js → editSeparate.js} +20 -22
  59. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/separateRendererPlugin/{edit-separate.vue.d.ts → editSeparate.vue.d.ts} +1 -17
  60. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/separateRendererPlugin/index.js +13 -9
  61. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/separateRendererPlugin/{separate-utils.d.ts → separateUtils.d.ts} +0 -0
  62. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/separateRendererPlugin/{separate-utils.js → separateUtils.js} +1 -1
  63. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/separateRendererPlugin/{separate-utils2.js → separateUtils2.js} +4 -4
  64. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/timeRendererPlugin/editTime.d.ts +31 -0
  65. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/timeRendererPlugin/editTime.js +60 -0
  66. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/timeRendererPlugin/index.d.ts +1 -0
  67. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/timeRendererPlugin/index.js +39 -0
  68. package/es/components/iho-table/src/plugins/rendererPlugins/index.js +4 -1
  69. package/es/components/iho-table/src/plugins/rowGroupSettingPlugin/index2.js +1 -46
  70. package/es/components/iho-table/src/plugins/rowGroupSettingPlugin/rowGroupUtils.d.ts +11 -0
  71. package/es/components/iho-table/src/plugins/rowGroupSettingPlugin/rowGroupUtils.js +1 -0
  72. package/es/components/iho-table/src/plugins/rowGroupSettingPlugin/rowGroupUtils2.js +50 -0
  73. package/es/components/iho-table/src/types/index.d.ts +0 -3
  74. package/es/components/index.css +1 -1
  75. package/es/components/scale-view/src/hooks/use-component.d.ts +1 -0
  76. package/es/components/search-cascader/index.d.ts +196 -0
  77. package/es/components/search-cascader/index.js +1 -0
  78. package/es/components/search-cascader/index2.js +10 -0
  79. package/es/components/search-cascader/src/SearchCascader.js +168 -0
  80. package/es/components/search-cascader/src/SearchCascader.vue.d.ts +198 -0
  81. package/es/components/search-cascader/src/components/SearchMenu.d.ts +45 -0
  82. package/es/components/search-cascader/src/components/SearchMenu.js +134 -0
  83. package/es/components/search-cascader/src/components/index.d.ts +1 -0
  84. package/es/components/search-cascader/src/components/index.js +1 -0
  85. package/es/components/search-cascader/src/constants/index.d.ts +3 -0
  86. package/es/components/search-cascader/src/constants/index.js +1 -0
  87. package/es/components/search-cascader/src/constants/index2.js +3 -0
  88. package/es/components/search-cascader/src/hooks/index.d.ts +1 -0
  89. package/es/components/search-cascader/src/hooks/index.js +1 -0
  90. package/es/components/search-cascader/src/hooks/useCssVariable.d.ts +3 -0
  91. package/es/components/search-cascader/src/hooks/useCssVariable.js +1 -0
  92. package/es/components/search-cascader/src/hooks/useCssVariable2.js +7 -0
  93. package/es/components/search-cascader/src/utils/index.d.ts +2 -0
  94. package/es/components/search-cascader/src/utils/index.js +1 -0
  95. package/es/components/search-cascader/src/utils/index2.js +11 -0
  96. package/es/components/search-cascader/style/index.css +1 -0
  97. package/es/components/select-label/index.d.ts +1 -0
  98. package/es/components/select-label/src/SelectLabel.vue.d.ts +1 -0
  99. package/es/components/select-label/src/SelectLabel.vue_vue_type_script_setup_true_lang.js +16 -4
  100. package/es/components/shortcut-provider/src/ShortcutProvider.js +2 -1
  101. package/es/components/shortcut-setter/index.d.ts +6 -0
  102. package/es/components/shortcut-setter/src/ShortcutSetter.vue.d.ts +6 -0
  103. package/es/shared/components/no-data/NoData.js +74 -0
  104. package/es/shared/components/no-data/NoData.vue.d.ts +51 -0
  105. package/es/shared/components/no-data/index.d.ts +2 -0
  106. package/es/shared/components/no-data/index.js +1 -0
  107. package/es/shared/components/no-data/index2.js +2 -0
  108. package/es/shared/utils/index.d.ts +1 -1
  109. package/es/shared/utils/index2.js +14 -5
  110. package/package.json +2 -2
  111. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/inputRendererPlugins.d.ts +0 -1
@@ -1,7 +1,7 @@
1
1
  import { getStringWidth } from '../../../../../../../shared/utils/index2.js';
2
2
  import { isNumber, isArray, cloneDeep, isString } from 'lodash-es';
3
3
  import { nextTick, unref } from 'vue';
4
- import { INPUT_TYPE } from '../../../../constants/index2.js';
4
+ import { EDITABLE_WIDGET_TYPE } from '../../../../constants/index2.js';
5
5
 
6
6
  function getColumnInfoMaxLength(parsedRowDataInfo) {
7
7
  return Math.max(...parsedRowDataInfo.map((r) => r.data.length), 1);
@@ -29,8 +29,8 @@ function generateSeparateRowData(parsedRowDataInfo, index) {
29
29
  function contentSeparate(value, field, width) {
30
30
  if (isArray(value)) {
31
31
  return value.map((row) => {
32
- var _a, _b, _c;
33
- return (_c = (_b = (_a = field.context) == null ? void 0 : _a.separateFormatter) == null ? void 0 : _b.call(_a, cloneDeep(row))) != null ? _c : row;
32
+ var _a, _b, _c, _d;
33
+ return (_d = (_c = (_b = (_a = field.editRender) == null ? void 0 : _a.props) == null ? void 0 : _b.separateFormatter) == null ? void 0 : _c.call(_b, cloneDeep(row))) != null ? _d : row;
34
34
  });
35
35
  }
36
36
  if (!isString(value) || !isNumber(width))
@@ -48,7 +48,7 @@ function contentSeparate(value, field, width) {
48
48
  }
49
49
  function isSeparateColumn(field) {
50
50
  var _a;
51
- return field.field && ((_a = field.editRender) == null ? void 0 : _a.name) === INPUT_TYPE.SEPARATE;
51
+ return field.field && ((_a = field.editRender) == null ? void 0 : _a.name) === EDITABLE_WIDGET_TYPE.SEPARATE;
52
52
  }
53
53
 
54
54
  export { contentSeparate, generateSeparateRowData, getColumnInfoMaxLength, getColumnRenderWidth, isSeparateColumn };
@@ -0,0 +1,31 @@
1
+ import { PropType } from 'vue';
2
+ import { IhoTableFieldItem } from '../../../../../../../../es/components/iho-table';
3
+ import { AnyObject } from '../../../../../../../../es/shared/types';
4
+ declare const _default: import("vue").DefineComponent<{
5
+ column: {
6
+ type: PropType<IhoTableFieldItem>;
7
+ required: true;
8
+ };
9
+ row: {
10
+ type: PropType<AnyObject>;
11
+ required: true;
12
+ };
13
+ index: {
14
+ type: NumberConstructor;
15
+ required: true;
16
+ };
17
+ }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
18
+ column: {
19
+ type: PropType<IhoTableFieldItem>;
20
+ required: true;
21
+ };
22
+ row: {
23
+ type: PropType<AnyObject>;
24
+ required: true;
25
+ };
26
+ index: {
27
+ type: NumberConstructor;
28
+ required: true;
29
+ };
30
+ }>>, {}>;
31
+ export default _default;
@@ -0,0 +1,60 @@
1
+ import { defineComponent, inject, createVNode, mergeProps } from 'vue';
2
+ import { NTimePicker } from 'naive-ui';
3
+ import { InjectionIhoTableEmits } from '../../../../constants/index2.js';
4
+ import { useCommon } from '../hooks/useCommon2.js';
5
+
6
+ var EditTime = defineComponent({
7
+ name: "EditTime",
8
+ inheritAttrs: false,
9
+ components: {
10
+ NTimePicker
11
+ },
12
+ props: {
13
+ column: {
14
+ type: Object,
15
+ required: true
16
+ },
17
+ row: {
18
+ type: Object,
19
+ required: true
20
+ },
21
+ index: {
22
+ type: Number,
23
+ required: true
24
+ }
25
+ },
26
+ setup(props, {
27
+ attrs,
28
+ emit
29
+ }) {
30
+ const globEmit = inject(InjectionIhoTableEmits);
31
+ const {
32
+ formRef,
33
+ isShow
34
+ } = useCommon();
35
+ const onUpdateValue = (value) => {
36
+ globEmit("formChange", {
37
+ value,
38
+ row: props.row,
39
+ column: props.column,
40
+ index: props.index
41
+ });
42
+ };
43
+ const timeConfig = {
44
+ placeholder: attrs.placeholder || "\u8BF7\u9009\u62E9",
45
+ valueFormat: attrs.valueFormat || "HH:mm",
46
+ format: attrs.valueFormat || "yyyy-MM-dd HH:mm:ss",
47
+ ...attrs,
48
+ onUpdateFormattedValue: onUpdateValue
49
+ };
50
+ return () => createVNode(NTimePicker, mergeProps({
51
+ "ref": formRef,
52
+ "show": isShow.value,
53
+ "onUpdate:show": ($event) => isShow.value = $event,
54
+ "formattedValue": props.row[props.column.field],
55
+ "onUpdate:formattedValue": ($event) => props.row[props.column.field] = $event
56
+ }, timeConfig), null);
57
+ }
58
+ });
59
+
60
+ export { EditTime as default };
@@ -0,0 +1 @@
1
+ export declare function timeRendererPlugin(): import("../../../../../../../../es/components/iho-table").TablePlugin;
@@ -0,0 +1,39 @@
1
+ import { createVNode, mergeProps } from 'vue';
2
+ import '../../../../../index2.js';
3
+ import { EDITABLE_WIDGET_TYPE } from '../../../../constants/index2.js';
4
+ import EditTime from './editTime.js';
5
+ import { defineTablePlugin } from '../../../../hooks/useTablePlugin2.js';
6
+
7
+ function timeRendererPlugin() {
8
+ const pluginName = "timeRendererPlugin";
9
+ return defineTablePlugin({
10
+ name: pluginName,
11
+ vxe(instance) {
12
+ instance.renderer.add(EDITABLE_WIDGET_TYPE.TIME, {
13
+ renderCell({
14
+ props
15
+ }, {
16
+ row,
17
+ column
18
+ }) {
19
+ return [createVNode("span", null, [row[column.field]])];
20
+ },
21
+ renderEdit({
22
+ props
23
+ }, {
24
+ row,
25
+ column,
26
+ $rowIndex
27
+ }) {
28
+ return [createVNode(EditTime, mergeProps((props == null ? void 0 : props.componentProps) || {}, {
29
+ "column": column,
30
+ "row": row,
31
+ "index": $rowIndex
32
+ }), null)];
33
+ }
34
+ });
35
+ }
36
+ });
37
+ }
38
+
39
+ export { timeRendererPlugin };
@@ -4,5 +4,8 @@ export { colorRendererPlugin } from './widgets/colorRendererPlugin.js';
4
4
  export { seqRendererPlugin } from './widgets/seqRendererPlugin.js';
5
5
  export { checkRendererPlugin } from './widgets/checkRendererPlugin.js';
6
6
  export { pictureRendererPlugin } from './widgets/pictureRendererPlugin.js';
7
- export { inputRendererPlugins } from './editableWidgets/inputRendererPlugins.js';
7
+ export { inputRendererPlugin } from './editableWidgets/inputRendererPlugin.js';
8
8
  export { separateRendererPlugins } from './editableWidgets/separateRendererPlugin/index.js';
9
+ export { selectRendererPlugin } from './editableWidgets/selectRendererPlugin/index.js';
10
+ export { dateRendererPlugin } from './editableWidgets/dateRendererPlugin/index.js';
11
+ export { timeRendererPlugin } from './editableWidgets/timeRendererPlugin/index.js';
@@ -1,7 +1,6 @@
1
1
  import { isObject } from '@vue/shared';
2
- import { isArray, isString } from 'lodash-es';
3
2
  import '../../../index2.js';
4
- import { IhoTableRowGroupSequence } from '../../constants/index2.js';
3
+ import { groupTraverser, createRowGroupList } from './rowGroupUtils2.js';
5
4
  import { defineTablePlugin } from '../../hooks/useTablePlugin2.js';
6
5
 
7
6
  function rowGroupSettingPlugin() {
@@ -24,49 +23,5 @@ function rowGroupSettingPlugin() {
24
23
  function fieldSearcher(fieldName, fieldList) {
25
24
  return fieldList.find((field) => field.field === fieldName);
26
25
  }
27
- function createRowGroupList(rowGroupSetting, fieldList) {
28
- const result = fieldList.map((field) => field.field);
29
- IhoTableRowGroupSequence.some((sequence) => {
30
- const currentLevelGroup = rowGroupSetting[sequence];
31
- if (!isArray(currentLevelGroup))
32
- return true;
33
- currentLevelGroup.forEach((groupSetting) => {
34
- if (!isArray(groupSetting.list) || !groupSetting.list.length)
35
- return;
36
- const children = [];
37
- groupSetting.list.forEach((fieldName, idx) => {
38
- const groupIdx = groupIndexSearcher(fieldName, result);
39
- if (!~groupIdx)
40
- return;
41
- children.push(result[groupIdx]);
42
- if (idx === 0) {
43
- result.splice(groupIdx, 1, { fieldName: groupSetting.title, children });
44
- } else {
45
- result.splice(groupIdx, 1);
46
- }
47
- });
48
- });
49
- });
50
- return result;
51
- function groupIndexSearcher(fieldName, groupList) {
52
- return groupList.findIndex((group) => (isObject(group) ? group.fieldName : group) === fieldName);
53
- }
54
- }
55
- function groupTraverser(groupList, replacer) {
56
- return groupList.reduce((result, group) => {
57
- if (isString(group)) {
58
- const item = replacer(group);
59
- item && result.push(item);
60
- }
61
- if (isObject(group) && group.children) {
62
- const item = replacer(group.fieldName, true);
63
- if (item) {
64
- item.children = groupTraverser(group.children, replacer);
65
- result.push(item);
66
- }
67
- }
68
- return result;
69
- }, []);
70
- }
71
26
 
72
27
  export { rowGroupSettingPlugin };
@@ -0,0 +1,11 @@
1
+ import { NotNull, Nullable } from '../../../../../../es/shared/types';
2
+ import { IhoTableConfig, IhoTableFieldItem } from '../../../../../../es/components/iho-table';
3
+ declare type GroupItem = string | {
4
+ fieldName: string;
5
+ children?: GroupItem[];
6
+ };
7
+ export declare function createRowGroupList(rowGroupSetting: NotNull<IhoTableConfig['rowGroupSetting']>, fieldList: IhoTableFieldItem[], getKey?: (field: IhoTableFieldItem) => string): GroupItem[];
8
+ export declare function groupTraverser<T extends Nullable<{
9
+ children?: T[];
10
+ }>>(groupList: GroupItem[], replacer: (fieldName: string, isBlock?: boolean) => T): NotNull<T>[];
11
+ export {};
@@ -0,0 +1 @@
1
+ export { createRowGroupList, groupTraverser } from './rowGroupUtils2.js';
@@ -0,0 +1,50 @@
1
+ import { isObject } from '@vue/shared';
2
+ import { isArray, isString } from 'lodash-es';
3
+ import { IhoTableRowGroupSequence } from '../../constants/index2.js';
4
+
5
+ function createRowGroupList(rowGroupSetting, fieldList, getKey = (field) => field.field) {
6
+ const result = fieldList.map((field) => getKey(field));
7
+ IhoTableRowGroupSequence.some((sequence) => {
8
+ const currentLevelGroup = rowGroupSetting[sequence];
9
+ if (!isArray(currentLevelGroup))
10
+ return true;
11
+ currentLevelGroup.forEach((groupSetting) => {
12
+ if (!isArray(groupSetting.list) || !groupSetting.list.length)
13
+ return;
14
+ const children = [];
15
+ groupSetting.list.forEach((fieldName, idx) => {
16
+ const groupIdx = groupIndexSearcher(fieldName, result);
17
+ if (!~groupIdx)
18
+ return;
19
+ children.push(result[groupIdx]);
20
+ if (idx === 0) {
21
+ result.splice(groupIdx, 1, { fieldName: groupSetting.title, children });
22
+ } else {
23
+ result.splice(groupIdx, 1);
24
+ }
25
+ });
26
+ });
27
+ });
28
+ return result;
29
+ function groupIndexSearcher(fieldName, groupList) {
30
+ return groupList.findIndex((group) => (isObject(group) ? group.fieldName : group) === fieldName);
31
+ }
32
+ }
33
+ function groupTraverser(groupList, replacer) {
34
+ return groupList.reduce((result, group) => {
35
+ if (isString(group)) {
36
+ const item = replacer(group);
37
+ item && result.push(item);
38
+ }
39
+ if (isObject(group) && group.children) {
40
+ const item = replacer(group.fieldName, true);
41
+ if (item) {
42
+ item.children = groupTraverser(group.children, replacer);
43
+ result.push(item);
44
+ }
45
+ }
46
+ return result;
47
+ }, []);
48
+ }
49
+
50
+ export { createRowGroupList, groupTraverser };
@@ -21,8 +21,6 @@ export declare type IhoTableConfig = VxeTableProps & Partial<{
21
21
  }>;
22
22
  export declare type IhoTableFieldItem = {
23
23
  [K in keyof VxeTableDefines.ColumnInfo]?: K extends 'children' ? IhoTableFieldItem[] : K extends keyof VxeTableDefines.ColumnInfo ? VxeTableDefines.ColumnInfo[K] : never;
24
- } & {
25
- context?: AnyObject;
26
24
  } & {
27
25
  [K: string]: unknown;
28
26
  };
@@ -39,7 +37,6 @@ export declare type LowCodeTableFieldItem = {
39
37
  title: string;
40
38
  colWidth: string | number;
41
39
  settingObj: LowCodeTableSettingObj;
42
- context: AnyObject;
43
40
  }>;
44
41
  export declare type IhoFormChangePayload = {
45
42
  column: VxeTableDefines.ColumnInfo;