Commit 7bd7eb8
authored
feat(TextArea): add auto-grow functionality with minRows/maxRows (#22)
* feat(TextArea): add auto-grow functionality with minRows/maxRows
Add auto-grow behavior to TextArea component that automatically adjusts height based on content. Users can set minRows for starting height and maxRows to limit growth. When maxRows is exceeded, the textarea becomes scrollable.
- Add minRows and maxRows props to enable auto-grow behavior
- Implement height adjustment logic using useLayoutEffect and refs
- Default resize to 'none' when auto-grow is enabled
- Add mergeRefs utility to handle forwarded and internal refs
- Update component to use forwardRef for better ref handling
- Add comprehensive auto-grow stories and examples
- Update documentation with auto-grow usage and best practices
* fix(TextArea): neutralize CSS min-height to prevent scrollHeight inflation
Reset textarea min-height to 0 before measuring scrollHeight during
auto-grow calculation, then restore it afterward. This prevents CSS
min-height from inflating the measured scrollHeight, which caused
incorrect sizing when minRows equals maxRows.
Add story example for minRows=1, maxRows=1 edge case.1 parent 400f2e8 commit 7bd7eb8
File tree
4 files changed
+306
-14
lines changed- packages
- baukasten/src/components/TextArea
- website
- public
- src/app/components/textarea
4 files changed
+306
-14
lines changedLines changed: 92 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
54 | 54 | | |
55 | 55 | | |
56 | 56 | | |
57 | | - | |
| 57 | + | |
58 | 58 | | |
59 | 59 | | |
60 | 60 | | |
61 | 61 | | |
62 | 62 | | |
63 | 63 | | |
64 | | - | |
| 64 | + | |
65 | 65 | | |
66 | 66 | | |
67 | 67 | | |
68 | 68 | | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
69 | 77 | | |
70 | 78 | | |
71 | 79 | | |
| |||
192 | 200 | | |
193 | 201 | | |
194 | 202 | | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
195 | 273 | | |
196 | 274 | | |
197 | 275 | | |
| |||
402 | 480 | | |
403 | 481 | | |
404 | 482 | | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
405 | 495 | | |
406 | 496 | | |
407 | 497 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
| 1 | + | |
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
| |||
31 | 31 | | |
32 | 32 | | |
33 | 33 | | |
| 34 | + | |
34 | 35 | | |
35 | 36 | | |
36 | 37 | | |
37 | 38 | | |
38 | 39 | | |
39 | | - | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
40 | 43 | | |
41 | 44 | | |
42 | 45 | | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
43 | 87 | | |
44 | 88 | | |
45 | 89 | | |
| |||
77 | 121 | | |
78 | 122 | | |
79 | 123 | | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
80 | 128 | | |
81 | 129 | | |
82 | 130 | | |
| |||
85 | 133 | | |
86 | 134 | | |
87 | 135 | | |
88 | | - | |
| 136 | + | |
89 | 137 | | |
90 | 138 | | |
91 | 139 | | |
92 | | - | |
| 140 | + | |
93 | 141 | | |
| 142 | + | |
| 143 | + | |
94 | 144 | | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
95 | 148 | | |
96 | | - | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
97 | 206 | | |
98 | 207 | | |
99 | 208 | | |
100 | 209 | | |
101 | 210 | | |
102 | 211 | | |
103 | | - | |
104 | | - | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
105 | 218 | | |
106 | 219 | | |
107 | 220 | | |
108 | 221 | | |
109 | 222 | | |
110 | | - | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
0 commit comments