From f7170a8e95d72c783b451d3eb9ff76ddf9c1b132 Mon Sep 17 00:00:00 2001 From: mostafasakhiri Date: Tue, 17 May 2022 12:43:13 +0200 Subject: [PATCH 1/3] fix min height / width handling --- addon/modifiers/autoresize.js | 10 +++-- .../integration/modifiers/autoresize-test.js | 45 +++++++++++++++++++ 2 files changed, 52 insertions(+), 3 deletions(-) diff --git a/addon/modifiers/autoresize.js b/addon/modifiers/autoresize.js index 7ea7ba2..61c2205 100644 --- a/addon/modifiers/autoresize.js +++ b/addon/modifiers/autoresize.js @@ -24,12 +24,16 @@ export default class AutoresizeModifier extends Modifier { } let capitalizeDimension = capitalize(dimension); + let computedStyle = window.getComputedStyle(element); + let minDimension = computedStyle[`min${capitalizeDimension}`]; // height / width must be calculated independently from height / width previously enforced - element.style[dimension] = 'auto'; + // and calculation should start from min height or width when specified + element.style[dimension] = parseInt(minDimension, 10) + ? minDimension + : 'auto'; - let isBorderBox = - window.getComputedStyle(element).boxSizing === 'border-box'; + let isBorderBox = computedStyle.boxSizing === 'border-box'; let requiredDimension = element[`scroll${capitalizeDimension}`]; if (isBorderBox) { diff --git a/tests/integration/modifiers/autoresize-test.js b/tests/integration/modifiers/autoresize-test.js index 85937f6..225c892 100644 --- a/tests/integration/modifiers/autoresize-test.js +++ b/tests/integration/modifiers/autoresize-test.js @@ -6,6 +6,7 @@ import hbs from 'htmlbars-inline-precompile'; module('Integration | Modifier | autoresize', function (hooks) { setupRenderingTest(hooks); + let shortString = 'abc'; let longString; hooks.beforeEach(function () { longString = ''; @@ -42,6 +43,50 @@ module('Integration | Modifier | autoresize', function (hooks) { assert.extendedDom('textarea').doesNotOverflowY(); }); + test('it resizes textarea height to fit input min height on initial render with small value', async function (assert) { + this.set('value', shortString); + + await render( + hbs`