Skip to content

Commit 56a7709

Browse files
guiguebBill Guiguekodiakhq[bot]
authored
feat(CodeSnippet): set min number of rows (#8181)
* feat(CodeSnippet): set min number of rows set default min to 100% apply the approprate minHeight collapsed or expanded as needed add props to component and story... - minCollapsedNumberOfRows and minExpandedNumberOfRows * feat(CodeSnippet): set min number of rows use minExpanded when clearing expandedCode minExpanded could be < maxCollapsed Co-authored-by: Bill Guigue <Bill.Guigue@ca.ibm.com> Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
1 parent 8ca2496 commit 56a7709

File tree

4 files changed

+57
-9
lines changed

4 files changed

+57
-9
lines changed

packages/components/src/components/code-snippet/_code-snippet.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@
201201
.#{$prefix}--snippet--multi .#{$prefix}--snippet-container {
202202
position: relative;
203203
order: 1;
204-
min-height: rem(56px);
204+
min-height: 100%;
205205
max-height: 100%;
206206
overflow-y: auto;
207207
transition: max-height $duration--moderate-01 motion(standard, productive);

packages/react/__tests__/__snapshots__/PublicAPI-test.js.snap

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -396,6 +396,12 @@ Map {
396396
"maxExpandedNumberOfRows": Object {
397397
"type": "number",
398398
},
399+
"minCollapsedNumberOfRows": Object {
400+
"type": "number",
401+
},
402+
"minExpandedNumberOfRows": Object {
403+
"type": "number",
404+
},
399405
"onClick": Object {
400406
"type": "func",
401407
},

packages/react/src/components/CodeSnippet/CodeSnippet-story.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,14 @@ const props = () => ({
5858
'maxExpandedNumberOfRows: Specify the maximum number of rows to be shown when in expanded view',
5959
0
6060
),
61+
minCollapsedNumberOfRows: number(
62+
'minCollapsedNumberOfRows: Specify the minimum number of rows to be shown when in collapsed view',
63+
3
64+
),
65+
minExpandedNumberOfRows: number(
66+
'minExpandedNumberOfRows: Specify the minimum number of rows to be shown when in expanded view',
67+
16
68+
),
6169
});
6270

6371
export const inline = () => (

packages/react/src/components/CodeSnippet/CodeSnippet.js

Lines changed: 42 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ const { prefix } = settings;
2323
const rowHeightInPixels = 16;
2424
const defaultMaxCollapsedNumberOfRows = 15;
2525
const defaultMaxExpandedNumberOfRows = 0;
26+
const defaultMinCollapsedNumberOfRows = 3;
27+
const defaultMinExpandedNumberOfRows = 16;
2628

2729
function CodeSnippet({
2830
className,
@@ -42,6 +44,8 @@ function CodeSnippet({
4244
wrapText,
4345
maxCollapsedNumberOfRows = defaultMaxCollapsedNumberOfRows,
4446
maxExpandedNumberOfRows = defaultMaxExpandedNumberOfRows,
47+
minCollapsedNumberOfRows = defaultMinCollapsedNumberOfRows,
48+
minExpandedNumberOfRows = defaultMinExpandedNumberOfRows,
4549
...rest
4650
}) {
4751
const [expandedCode, setExpandedCode] = useState(false);
@@ -106,13 +110,19 @@ function CodeSnippet({
106110

107111
if (
108112
maxCollapsedNumberOfRows > 0 &&
109-
(maxExpandedNumberOfRows === 0 ||
113+
(maxExpandedNumberOfRows <= 0 ||
110114
maxExpandedNumberOfRows > maxCollapsedNumberOfRows) &&
111115
height > maxCollapsedNumberOfRows * rowHeightInPixels
112116
) {
113117
setShouldShowMoreLessBtn(true);
114118
} else {
115119
setShouldShowMoreLessBtn(false);
120+
}
121+
if (
122+
expandedCode &&
123+
minExpandedNumberOfRows > 0 &&
124+
height <= minExpandedNumberOfRows * rowHeightInPixels
125+
) {
116126
setExpandedCode(false);
117127
}
118128
}
@@ -124,7 +134,13 @@ function CodeSnippet({
124134
}
125135
},
126136
},
127-
[type, maxCollapsedNumberOfRows, maxExpandedNumberOfRows, rowHeightInPixels]
137+
[
138+
type,
139+
maxCollapsedNumberOfRows,
140+
maxExpandedNumberOfRows,
141+
minExpandedNumberOfRows,
142+
rowHeightInPixels,
143+
]
128144
);
129145

130146
useEffect(() => {
@@ -175,19 +191,27 @@ function CodeSnippet({
175191

176192
let containerStyle = {};
177193
if (type === 'multi') {
194+
const styles = {};
195+
178196
if (expandedCode) {
179197
if (maxExpandedNumberOfRows > 0) {
180-
containerStyle.style = {
181-
maxHeight: maxExpandedNumberOfRows * rowHeightInPixels,
182-
};
198+
styles.maxHeight = maxExpandedNumberOfRows * rowHeightInPixels;
199+
}
200+
if (minExpandedNumberOfRows > 0) {
201+
styles.minHeight = minExpandedNumberOfRows * rowHeightInPixels;
183202
}
184203
} else {
185204
if (maxCollapsedNumberOfRows > 0) {
186-
containerStyle.style = {
187-
maxHeight: maxCollapsedNumberOfRows * rowHeightInPixels,
188-
};
205+
styles.maxHeight = maxCollapsedNumberOfRows * rowHeightInPixels;
206+
}
207+
if (minCollapsedNumberOfRows > 0) {
208+
styles.minHeight = minCollapsedNumberOfRows * rowHeightInPixels;
189209
}
190210
}
211+
212+
if (Object.keys(styles).length) {
213+
containerStyle.style = styles;
214+
}
191215
}
192216

193217
return (
@@ -313,6 +337,16 @@ CodeSnippet.propTypes = {
313337
*/
314338
maxExpandedNumberOfRows: PropTypes.number,
315339

340+
/**
341+
* Specify the minimum number of rows to be shown when in collapsed view
342+
*/
343+
minCollapsedNumberOfRows: PropTypes.number,
344+
345+
/**
346+
* Specify the minimum number of rows to be shown when in expanded view
347+
*/
348+
minExpandedNumberOfRows: PropTypes.number,
349+
316350
/**
317351
* An optional handler to listen to the `onClick` even fired by the Copy
318352
* Button

0 commit comments

Comments
 (0)