Skip to content

Commit 23a0f11

Browse files
committed
fix(textfield): text area improved resize behavior and alignment wip
Improved resize behavior on text area, and alignment of the validation icon in various scenarios. Adds to the stories for Text area to try and account for more combinations of the options available. An issue still exists with long text within the field label no longer wrapping and preventing the default defined width from being used.
1 parent 8978528 commit 23a0f11

File tree

2 files changed

+53
-31
lines changed

2 files changed

+53
-31
lines changed

components/textfield/index.css

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -452,7 +452,7 @@ governing permissions and limitations under the License.
452452

453453
/* Grid layout for child components */
454454
display: inline-grid;
455-
grid-template-columns: auto auto;
455+
grid-template-columns: minmax(0, auto) minmax(0, auto);
456456
grid-template-rows: auto auto auto;
457457
}
458458

@@ -1264,22 +1264,28 @@ governing permissions and limitations under the License.
12641264

12651265
/*** Text Area ***/
12661266
.spectrum-Textfield--multiline {
1267-
--spectrum-textfield-input-line-height: normal;
1267+
--spectrum-textfield-input-line-height: normal;
12681268

12691269
&.spectrum-Textfield {
1270+
/* Remove fixed inline-size to allow resize behavior. */
12701271
inline-size: unset;
1271-
min-inline-size: max(
1272-
var(--mod-textfield-width, var(--spectrum-textfield-width)),
1273-
var(--mod-text-area-min-inline-size, var(--spectrum-text-area-min-inline-size))
1272+
min-inline-size: var(
1273+
--mod-text-area-min-inline-size,
1274+
var(--spectrum-text-area-min-inline-size)
12741275
);
12751276
}
12761277

12771278
.spectrum-Textfield-input {
12781279
resize: var(--mod-text-area-resize, both);
1279-
min-inline-size: max(
1280+
inline-size: max(
12801281
var(--mod-textfield-width, var(--spectrum-textfield-width)),
12811282
var(--mod-text-area-min-inline-size, var(--spectrum-text-area-min-inline-size))
12821283
);
1284+
min-inline-size: var(
1285+
--mod-text-area-min-inline-size,
1286+
var(--spectrum-text-area-min-inline-size)
1287+
);
1288+
max-inline-size: var(--mod-text-area-max-inline-size, 100%);
12831289
min-block-size: var(
12841290
--mod-text-area-min-block-size,
12851291
var(--spectrum-text-area-min-block-size)

components/textfield/stories/textfield.stories.js

Lines changed: 41 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
// Import the component markup template
22
import { html } from "lit";
3+
import { when } from "lit/directives/when.js";
34
import { Template } from "./template";
45

56
export default {
@@ -205,28 +206,24 @@ const TextFieldGroup = ({
205206
${Template({
206207
...args
207208
})}
208-
${window.isChromatic() ?
209-
Template({
209+
${when(window.isChromatic(), () => html`
210+
${Template({
210211
displayLabel: true,
211212
labelText: "Username",
212-
})
213-
: null }
214-
${window.isChromatic() ?
215-
Template({
213+
})}
214+
${Template({
216215
displayLabel: true,
217216
labelText: "Username that is really long and wraps onto a second line",
218217
isInvalid: true,
219-
})
220-
: null }
221-
${window.isChromatic() ?
222-
Template({
218+
})}
219+
${Template({
223220
displayLabel: true,
224221
labelText: "Username",
225222
labelPosition: 'side',
226223
isValid: true,
227224
value: "username@reallylongemail.com"
228-
})
229-
: null }
225+
})}
226+
`)}
230227
</div>
231228
`;
232229
};
@@ -241,33 +238,52 @@ const TextAreaGroup = ({
241238
multiline: true,
242239
value: "Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt."
243240
})}
244-
${window.isChromatic() ?
245-
Template({
241+
${when(window.isChromatic(), () => html`
242+
${Template({
246243
displayLabel: true,
247244
labelText: "Username",
248245
multiline: true,
249246
value: "Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt.",
250-
})
251-
: null }
252-
${window.isChromatic() ?
253-
Template({
247+
})}
248+
${Template({
254249
displayLabel: true,
255-
labelText: "Username that is really long and wraps onto a second line",
250+
labelText: "Username",
251+
multiline: true,
252+
grows: true,
253+
value: "Grows, with no resize. Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt.",
254+
})}
255+
${Template({
256+
displayLabel: true,
257+
labelText: "Username",
258+
multiline: true,
259+
value: "Example of behavior where Text area gets stretched by default within a flex container with flex-direction: column. Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia volupta.",
260+
customStyles: {
261+
'align-self': 'stretch'
262+
}
263+
})}
264+
${Template({
265+
displayLabel: true,
266+
labelText: "Username",
267+
isInvalid: true,
268+
multiline: true,
269+
value: "Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt.",
270+
})}
271+
${Template({
272+
displayLabel: true,
273+
labelText: "Username that has a really long label and wraps onto a second line. Lorem ipsum dolor sit amet.",
256274
isInvalid: true,
257275
multiline: true,
258276
value: "Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt.",
259-
})
260-
: null }
261-
${window.isChromatic() ?
262-
Template({
277+
})}
278+
${Template({
263279
displayLabel: true,
264280
labelText: "Username",
265281
labelPosition: 'side',
266282
isValid: true,
267283
multiline: true,
268284
value: "Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt.",
269-
})
270-
: null }
285+
})}
286+
`)}
271287
</div>
272288
`;
273289
};

0 commit comments

Comments
 (0)