From bc51dd05cf036656980de584d2367db46054f774 Mon Sep 17 00:00:00 2001 From: Liam DeBeasi Date: Wed, 13 Dec 2023 17:05:30 -0500 Subject: [PATCH] fix(item): label does not expand indefinitely (#28700) Issue number: N/A --------- ## What is the current behavior? While working on an unrelated task, I noticed the list items in the list starter app run off the page. This is due to the text wrapping behavior in v7.6 where we allows the labels to grow/shrink. However, we do not set a limit on how much they can grow. This means that child elements inside of `ion-label` with long text can cause the label container to grow indefinitely. ## What is the new behavior? - Labels in item have a max-width of 100% ## Does this introduce a breaking change? - [ ] Yes - [x] No ## Other information Dev build: `7.6.1-dev.11702498225.1ad6eda6` | before | after | | - | - | | ![localhost_8102_home(Samsung Galaxy S8+)](https://github.com/ionic-team/ionic-framework/assets/2721089/cadf8c5f-5813-4c8d-b236-752fde3d37cc) | ![localhost_8102_home(Samsung Galaxy S8+) (1)](https://github.com/ionic-team/ionic-framework/assets/2721089/ccb4277c-046d-46f8-b7f8-eda63c72fdb9) | --------- Co-authored-by: ionitron --- core/src/components/item/item.scss | 7 ++++ .../components/label/test/a11y/label.e2e.ts | 31 ++++++++++++++++++ ...-item-wrap-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 3403 bytes ...item-wrap-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 4640 bytes ...-item-wrap-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 3016 bytes 5 files changed, 38 insertions(+) create mode 100644 core/src/components/label/test/a11y/label.e2e.ts-snapshots/label-item-wrap-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/label/test/a11y/label.e2e.ts-snapshots/label-item-wrap-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/label/test/a11y/label.e2e.ts-snapshots/label-item-wrap-ios-ltr-Mobile-Safari-linux.png diff --git a/core/src/components/item/item.scss b/core/src/components/item/item.scss index 2f36fe5340..94329434c3 100644 --- a/core/src/components/item/item.scss +++ b/core/src/components/item/item.scss @@ -426,6 +426,13 @@ button, a { // shrink and wrap its text instead of moving to its // own row if there are slotted elements next to it width: min-content; + + /** + * We allow labels in the default + * slot to grow. However, we do not + * want them to grow indefinitely. + */ + max-width: 100%; } // Item Input diff --git a/core/src/components/label/test/a11y/label.e2e.ts b/core/src/components/label/test/a11y/label.e2e.ts index ce84ec0645..00485eb4d3 100644 --- a/core/src/components/label/test/a11y/label.e2e.ts +++ b/core/src/components/label/test/a11y/label.e2e.ts @@ -82,3 +82,34 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { }); }); }); + +configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { + test.describe(title('label: text wrapping in item'), () => { + test('long text should not cause label to expand infinitely', async ({ page }) => { + await page.setContent( + ` + + + + +
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +
+
+
+ `, + config + ); + + const item = page.locator('ion-item'); + + await expect(item).toHaveScreenshot(screenshot(`label-item-wrap`)); + }); + }); +}); diff --git a/core/src/components/label/test/a11y/label.e2e.ts-snapshots/label-item-wrap-ios-ltr-Mobile-Chrome-linux.png b/core/src/components/label/test/a11y/label.e2e.ts-snapshots/label-item-wrap-ios-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..d8e598922b9d415493707e5231e5a60d363d9cd6 GIT binary patch literal 3403 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 CkdRdX literal 0 HcmV?d00001 diff --git a/core/src/components/label/test/a11y/label.e2e.ts-snapshots/label-item-wrap-ios-ltr-Mobile-Firefox-linux.png b/core/src/components/label/test/a11y/label.e2e.ts-snapshots/label-item-wrap-ios-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..f4a4fa890666989c2a8335b59068de79c6f2ca08 GIT binary patch literal 4640 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 Wu^KY2LK1@VLj=<@)T~vvkN7_yp6NsY literal 0 HcmV?d00001 diff --git a/core/src/components/label/test/a11y/label.e2e.ts-snapshots/label-item-wrap-ios-ltr-Mobile-Safari-linux.png b/core/src/components/label/test/a11y/label.e2e.ts-snapshots/label-item-wrap-ios-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..87856ea01deac7b70bebcd8ffe9c01ee7166ef55 GIT binary patch literal 3016 zcmb_eS5%YD)()tkM5;6a!O%p&NdKfu5ySvOs2{~df*@U*K&T>8m8!%50TD<(qzOnj zD8*2vC=f#xgR~fW=*W5f|8sHf&zV_k&s@x!dG_AVe)c3;m>aXR39*4dAa;|RhHwyw zDIVC%pJoQ^3QuAxu&}tmj157@f95M9AqxZoN17PwS%>D)aXzM2c7k1LU-U2E3M=Kl z8)U6wYnYOH>O8j3w2x6aZ`yk*x($b z=Ehe+N_LXJg=DtvGHmWjVui&DB_RtJOr$T-ON#Aw4t1u&S7s-VH>2}6EquZK?Sc{j zCJzP8@jnoMpK{;XU~KwQ^58M&BMA8!Ie? z6b-+`UAFPl61Yx zP`K}SJf;oaQf^DTt$P&5r4hVrjYjVa`@M%?`u0+`c6N?;scAc_Gi1*?x7x6k$tLj) zK7}RbQ@e`l>K@hhmCh~MnVBvsLbbKEr_gl|X4}WcY!f;xt*y6u<*ME~v*EE75Ts!{ ziu3P;UqP&Wye`=;_7mp-4*PfyQ@ z6DI_z0RF+;zx);ka7?Q!3zzj5`?1P%TVG0G0CM9rQ7M83uClo~M`UMf>!m5)i(ENt zQF76Iw5+Q2&8X+M*yy=5;`wMmAyX6{Bi0hK8nsPv?{QWj9c0go=m&f*g4cc^f67Q{2L{>+x#yHt6y;5)=0PKH|r%+sXwSx8jZG;I6==> zb{{A-NKhcLJiZHLJO~dj)$;#w5*N1gMJjHn!m**de`6y6U0Po5O(i|s3Id*Fc?@}_ zpnDq(21i!;etTP3TpTAtW9%;!MCWHqKXGOgxAqqySje>Q{s3zzDJk)sJ7=&QLl^Wh zX@ACk^DVN&(nQB|8PGDNflE!5;r+uoAUBy` zi;E>SHiwIhM@L7&zuR1uAaVQq``vM!orcYcPSCWpGy>twnKR6cx%v71{Q0@LAx6(v zL!3D#H`meGd1`9vimM*?8x|H8Ez#TN<{TF+ORce3>>R*lW`ZT^ggDeb>Y|N}O_^QQ z*nJhClmM)qI>!@6iOP^Hs7TF7&Aqk* z;`5xGeL&~ERC0=oi=A5@o;eQCKbd9DOil$#fo61#GN}&c zsLH*JN4{xKc6Pd;^dA6i;4Ut&jfy<{{0I_6BJt?xs1I|M^V-+h2aCsd*MEFc!peUS z5gZN*3K|;x`+*2~dfHs*1DQsr(E?kh%4{ppw2FqxJ47L2;qaA7^|A z;1eAk-R*b)kz8s!xvLnm;@r!c;Lsd%?|mYEkOhO;DSGsk(X z3r4&EIpL1yreu=3x+adnNp#}Qv?h9M5rc?YdT@cdDO!gR#Bc`g@;NR8(|VxXn}p z5z{gI?L+j3&u-wxk+#RIxAU&8FA)mH>Dyod=*!RZK+hZ*v6dVwL;hbatx2%SJsb}1 z9^h@^JwkdH;PLoB4v*w%huadq9_=j@oGz@dua|;lJ2eH|cs2epG4!{!jm;;-0?@w& zQK{5r8qEq0=h6qdBbxNa)#JTT|F`BK@M&0I3y6)Umsj85AYqXAeCl2+ReI81r!AII2SzzLItmL2Bygd3*C5duB$82P zIlyh8+5zqQlFJqnpApm=gU3r_P1OJ`lCSJY;4B;Uta;vsd^MpQXZ#XbAQc@`yS8) z{GigY=7g+PKOw#Q^FSz_pmrbCIYqS^BM;QVB*rkavv*16TnS_vF?Mq{$ASg`J(9wKZ=*>7z%FVzhZvHj-y~iY(3x?Pjwj z;Vw3FP_S%&C)#ZplG^Tb=x8ZuDmKyPnmJL?>i|8orHDx&r9XlEv^KK)q2 za#APb_z6!^Iu3`+&lmOKiwPx>NVj0HqKY5Uw|E-{tqx?*fMPCX5SFhpfk11;C$5|U tfzB}f7nXY)!7L~gf&MLa83ck;{YEvyMq{rQ@MOm3JPR_Y^T{{@=-&-nlV literal 0 HcmV?d00001