@hsu-react/ui 0.0.9 → 0.0.10

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 (74) hide show
  1. package/es/components/FormItem/ItemContainer/index.d.ts +2 -0
  2. package/es/components/FormItem/ItemContainer/index.js +4 -15
  3. package/es/components/Search/{_components → SearchAdvanced/_components}/AdvancedFiltersDrawer/index.d.ts +3 -3
  4. package/es/components/Search/{_components → SearchAdvanced/_components}/AdvancedFiltersDrawer/index.js +3 -3
  5. package/es/components/Search/SearchAdvanced/index.js +26 -148
  6. package/es/components/Search/SearchCard/index.js +1 -1
  7. package/es/components/Search/{_components → SearchCollapsible/_components}/CollapseToggle/index.js +2 -2
  8. package/es/components/Search/SearchCollapsible/index.js +17 -138
  9. package/es/components/Search/SearchWithFilter/index.js +4 -143
  10. package/es/components/Search/SearchWithMore/index.js +11 -142
  11. package/es/components/Search/_components/FilterDropdown/index.js +5 -6
  12. package/es/components/Search/_components/SearchBase/index.d.ts +32 -0
  13. package/es/components/Search/_components/SearchBase/index.js +185 -0
  14. package/es/components/Search/_hooks/useSearchCommon.js +5 -11
  15. package/es/components/Search/_hooks/useSearchExpand.js +4 -13
  16. package/es/components/Search/_utils/calculateButtonGroupAndColumnWidth.js +3 -10
  17. package/es/components/Search/_utils/calculateVisibleItems.js +4 -5
  18. package/es/components/Search/_utils/index.d.ts +2 -0
  19. package/es/components/Search/_utils/index.js +3 -1
  20. package/es/components/Search/_utils/measureButtonGroupWidth.d.ts +6 -0
  21. package/es/components/Search/_utils/measureButtonGroupWidth.js +18 -0
  22. package/es/components/Search/_utils/shouldDisplayExtraItem.d.ts +11 -0
  23. package/es/components/Search/_utils/shouldDisplayExtraItem.js +13 -0
  24. package/es/components/Search/index.d.ts +4 -0
  25. package/es/components/Search/index.js +6 -133
  26. package/es/components/Table/_hooks/useTableColumns.js +11 -0
  27. package/lib/components/FormItem/ItemContainer/index.d.ts +2 -0
  28. package/lib/components/FormItem/ItemContainer/index.js +2 -5
  29. package/lib/components/Search/{_components → SearchAdvanced/_components}/AdvancedFiltersDrawer/index.d.ts +3 -3
  30. package/lib/components/Search/{_components → SearchAdvanced/_components}/AdvancedFiltersDrawer/index.js +3 -3
  31. package/lib/components/Search/SearchAdvanced/index.js +19 -134
  32. package/lib/components/Search/SearchCard/index.js +1 -1
  33. package/lib/components/Search/{_components → SearchCollapsible/_components}/CollapseToggle/index.js +2 -2
  34. package/lib/components/Search/SearchCollapsible/index.js +12 -124
  35. package/lib/components/Search/SearchWithFilter/index.js +5 -129
  36. package/lib/components/Search/SearchWithMore/index.js +7 -126
  37. package/lib/components/Search/_components/FilterDropdown/index.js +5 -6
  38. package/lib/components/Search/_components/SearchBase/index.d.ts +32 -0
  39. package/lib/components/Search/_components/SearchBase/index.js +169 -0
  40. package/lib/components/Search/_hooks/useSearchCommon.js +4 -6
  41. package/lib/components/Search/_hooks/useSearchExpand.js +2 -13
  42. package/lib/components/Search/_utils/calculateButtonGroupAndColumnWidth.js +2 -10
  43. package/lib/components/Search/_utils/calculateVisibleItems.js +3 -5
  44. package/lib/components/Search/_utils/index.d.ts +2 -0
  45. package/lib/components/Search/_utils/index.js +15 -1
  46. package/lib/components/Search/_utils/measureButtonGroupWidth.d.ts +6 -0
  47. package/lib/components/Search/_utils/measureButtonGroupWidth.js +24 -0
  48. package/lib/components/Search/_utils/shouldDisplayExtraItem.d.ts +11 -0
  49. package/lib/components/Search/_utils/shouldDisplayExtraItem.js +19 -0
  50. package/lib/components/Search/index.d.ts +4 -0
  51. package/lib/components/Search/index.js +8 -119
  52. package/lib/components/Table/_hooks/useTableColumns.js +11 -0
  53. package/package.json +1 -1
  54. package/src/components/FormItem/ItemContainer/index.tsx +4 -7
  55. package/src/components/Search/{_components → SearchAdvanced/_components}/AdvancedFiltersDrawer/index.tsx +6 -6
  56. package/src/components/Search/SearchAdvanced/index.tsx +25 -164
  57. package/src/components/Search/SearchCard/index.tsx +1 -1
  58. package/src/components/Search/{_components → SearchCollapsible/_components}/CollapseToggle/index.tsx +2 -2
  59. package/src/components/Search/SearchCollapsible/index.tsx +13 -162
  60. package/src/components/Search/SearchWithFilter/index.tsx +2 -164
  61. package/src/components/Search/SearchWithMore/index.tsx +9 -161
  62. package/src/components/Search/_components/FilterDropdown/index.tsx +5 -6
  63. package/src/components/Search/_components/SearchBase/index.tsx +224 -0
  64. package/src/components/Search/_hooks/useSearchCommon.ts +10 -13
  65. package/src/components/Search/_hooks/useSearchExpand.ts +3 -13
  66. package/src/components/Search/_utils/calculateButtonGroupAndColumnWidth.ts +2 -10
  67. package/src/components/Search/_utils/calculateVisibleItems.ts +10 -11
  68. package/src/components/Search/_utils/index.ts +2 -0
  69. package/src/components/Search/_utils/measureButtonGroupWidth.ts +23 -0
  70. package/src/components/Search/_utils/shouldDisplayExtraItem.ts +23 -0
  71. package/src/components/Search/index.tsx +7 -153
  72. package/src/components/Table/_hooks/useTableColumns.tsx +17 -0
  73. /package/es/components/Search/{_components → SearchCollapsible/_components}/CollapseToggle/index.d.ts +0 -0
  74. /package/lib/components/Search/{_components → SearchCollapsible/_components}/CollapseToggle/index.d.ts +0 -0
@@ -1,17 +1,10 @@
1
- import { Form as AntdForm } from "antd";
2
- import FormItem from "../FormItem";
3
- import React, { CSSProperties } from "react";
4
- import classNames from "classnames";
5
- import styles from "./index.module.scss";
6
- import { useSearchCommon } from "./_hooks";
1
+ import React from "react";
7
2
  import SearchCard, { SearchCardProps } from "./SearchCard";
8
3
  import SearchAdvanced from "./SearchAdvanced";
9
4
  import SearchCollapsible from "./SearchCollapsible";
10
5
  import SearchWithFilter from "./SearchWithFilter";
11
6
  import SearchWithMore from "./SearchWithMore";
12
- import { ButtonGroup } from "./_components/ButtonGroup";
13
- import { SearchButtons } from "./_components/SearchButtons";
14
- import { ExpandButton } from "./_components/ExpandButton";
7
+ import SearchBase from "./_components/SearchBase";
15
8
  import { BaseSearchProps } from "./_types";
16
9
  import { ChakraButtonProps } from "../Button";
17
10
 
@@ -43,151 +36,12 @@ export type SearchModePropsMap = {
43
36
  WithMore: React.ComponentProps<SearchFC["WithMore"]>;
44
37
  };
45
38
 
39
+ /**
40
+ * 基础 Search 组件
41
+ * - 标准的搜索表单布局,自适应列数与展开/收起
42
+ */
46
43
  const Search: SearchFC = (props) => {
47
- const {
48
- searchItems = [],
49
- moreSearchItems = [],
50
- className,
51
- onSearch,
52
- onReset,
53
- externalForm,
54
- hasPermi,
55
- columnNum = 4,
56
- beforeButtonGroup,
57
- affterButtonGroup,
58
- searchData,
59
- minLabelWidth,
60
- defaultExpanded = false,
61
- onExpandChange,
62
- autoAdaptWidth = true,
63
- baseWidth,
64
- onValuesChange,
65
- searchDisabled = false,
66
- showAllSearchItems = false,
67
- searchText,
68
- resetText,
69
- columnOffsetWidth = 0,
70
- } = props;
71
-
72
- const [form] = AntdForm.useForm(externalForm);
73
-
74
- const {
75
- containerRef,
76
- buttonGroupRef,
77
- cls,
78
- getLabelWidth,
79
- currentSearchItems,
80
- totalColumnNum,
81
- expand,
82
- toggleExpand,
83
- showExpandButton,
84
- onSearchClick,
85
- onResetClick,
86
- shouldRender,
87
- permitted,
88
- } = useSearchCommon({
89
- form,
90
- searchItems,
91
- moreSearchItems,
92
- searchData,
93
- hasPermi,
94
- beforeButtonGroup,
95
- affterButtonGroup,
96
- columnNum,
97
- autoAdaptWidth,
98
- defaultExpanded,
99
- onExpandChange,
100
- showAllSearchItems,
101
- minLabelWidth,
102
- baseWidth,
103
- onSearch,
104
- onReset,
105
- columnOffsetWidth,
106
- });
107
-
108
- if (!shouldRender) {
109
- return null;
110
- }
111
-
112
- return (
113
- <div
114
- ref={containerRef}
115
- className={classNames(styles.Search, className)}
116
- style={
117
- {
118
- "--column-number": totalColumnNum,
119
- "--column-offset-width": `${columnOffsetWidth}px`,
120
- } as CSSProperties
121
- }
122
- >
123
- <div
124
- className={classNames(styles.searchOption, styles[expand.toString()])}
125
- >
126
- <AntdForm
127
- form={form}
128
- className={classNames(styles.option, cls)}
129
- onValuesChange={onValuesChange}
130
- >
131
- {permitted &&
132
- currentSearchItems?.map((item, idx) => {
133
- const visibleCurrentItems = currentSearchItems.filter(
134
- (i) => i.visible !== false
135
- );
136
- const columnIndex = idx % totalColumnNum;
137
- const sameColumnItems = visibleCurrentItems.filter(
138
- (_, _idx) => _idx % totalColumnNum === columnIndex
139
- );
140
-
141
- return (
142
- <FormItem
143
- {...item}
144
- key={item.name}
145
- className={classNames(styles.item, item.className, {
146
- [styles.unFill]: item.width !== undefined,
147
- })}
148
- labelWidth={
149
- item.width !== undefined
150
- ? undefined
151
- : getLabelWidth(sameColumnItems, undefined, minLabelWidth)
152
- }
153
- />
154
- );
155
- })}
156
- {(beforeButtonGroup?.length ||
157
- affterButtonGroup?.length ||
158
- permitted) && (
159
- <ButtonGroup
160
- beforeButtonGroup={beforeButtonGroup}
161
- affterButtonGroup={affterButtonGroup}
162
- expandButton={
163
- <ExpandButton
164
- expand={expand}
165
- toggleExpand={toggleExpand}
166
- advancedFilters={false}
167
- showExpandButton={showExpandButton}
168
- showAllSearchItems={
169
- showAllSearchItems || !!moreSearchItems?.length
170
- }
171
- />
172
- }
173
- permitted={permitted}
174
- ref={buttonGroupRef}
175
- >
176
- {currentSearchItems.length > 0 && (
177
- <SearchButtons
178
- onSearch={onSearchClick}
179
- onReset={onResetClick}
180
- searchDisabled={searchDisabled}
181
- searchText={searchText}
182
- resetText={resetText}
183
- />
184
- )}
185
- </ButtonGroup>
186
- )}
187
- </AntdForm>
188
- </div>
189
- </div>
190
- );
44
+ return <SearchBase {...props} />;
191
45
  };
192
46
 
193
47
  Search.Card = SearchCard;
@@ -23,6 +23,8 @@ import { PaginationProps } from "../_components/Pagination";
23
23
  const MEASURE_ALIGN_FONT_SIZE = 14;
24
24
  // Canvas measureText 仅返回 advance width,较 DOM 实际渲染偏窄约 1px,补 2px 缓冲避免最宽行被挤压
25
25
  const MEASURE_ALIGN_BUFFER_PX = 2;
26
+ // 单元格左右内边距合计(--td-padding: 4px 8px),用于把列宽抬到能放下定宽内容块
27
+ const MEASURE_ALIGN_CELL_PADDING_PX = 16;
26
28
 
27
29
  // 计算 measureAlign 列的定宽(取本列所有行展示文本的最大像素宽)
28
30
  const getMeasureAlignWidth = <T extends AnyObject>(
@@ -159,6 +161,21 @@ const useTableColumns = <T extends AnyObject>(
159
161
  item.width = Math.max(titleWidth, dataIndexWidth) + 32;
160
162
  }
161
163
 
164
+ // measureAlign 列:列宽须容得下最宽行的定宽内容块 + 单元格左右内边距,
165
+ // 否则出现超长值(如 +3357.52%)时内容会被列宽截断;声明的 width 只作下限。
166
+ if (item.measureAlign && typeof item.width === "number") {
167
+ const measured = getMeasureAlignWidth(
168
+ item as ColumnType<T>,
169
+ dataSource
170
+ );
171
+ if (measured > 0) {
172
+ item.width = Math.max(
173
+ item.width,
174
+ measured + MEASURE_ALIGN_CELL_PADDING_PX
175
+ );
176
+ }
177
+ }
178
+
162
179
  return item;
163
180
  })
164
181
  ?.map((item) => {