From 7c3d8417a3332ceed0ed8a31a2607d7624c1279b Mon Sep 17 00:00:00 2001 From: Georgii Lobko Date: Tue, 26 Nov 2024 14:20:17 +0100 Subject: [PATCH 01/12] chore: Underline styles for popover text trigger --- src/popover/styles.scss | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/popover/styles.scss b/src/popover/styles.scss index 669d44a93b..e1cc87174e 100644 --- a/src/popover/styles.scss +++ b/src/popover/styles.scss @@ -43,7 +43,8 @@ background-color: transparent; cursor: pointer; - border-block-end: awsui.$border-divider-list-width dashed currentColor; + text-decoration: underline dashed currentColor; + text-underline-offset: 0.25em; &:focus { outline: none; From 11f3222ed66e6fc3f66b9a6df6a2a089061b024b Mon Sep 17 00:00:00 2001 From: Georgii Lobko Date: Wed, 4 Dec 2024 14:39:56 +0100 Subject: [PATCH 02/12] chore: Styles adjustment --- src/popover/styles.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/popover/styles.scss b/src/popover/styles.scss index 6dc341f928..52f9ec7fcb 100644 --- a/src/popover/styles.scss +++ b/src/popover/styles.scss @@ -47,7 +47,7 @@ cursor: pointer; text-decoration: underline dashed currentColor; - text-underline-offset: 0.25em; + text-underline-offset: 0.2em; &:focus { outline: none; From cb6a3d3614f88f67946c1fe93b9e6287b44d9891 Mon Sep 17 00:00:00 2001 From: Georgii Lobko Date: Thu, 5 Dec 2024 12:39:55 +0100 Subject: [PATCH 03/12] chore: Add transparent border to keep text trigger's size --- src/popover/styles.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/src/popover/styles.scss b/src/popover/styles.scss index 52f9ec7fcb..e5f32a9c4b 100644 --- a/src/popover/styles.scss +++ b/src/popover/styles.scss @@ -46,6 +46,7 @@ background-color: transparent; cursor: pointer; + border-block-end: awsui.$border-divider-list-width dashed transparent; text-decoration: underline dashed currentColor; text-underline-offset: 0.2em; From f1e42b9004ab4cd0fdd838ff288c5637043ead01 Mon Sep 17 00:00:00 2001 From: Georgii Lobko Date: Thu, 5 Dec 2024 16:05:40 +0100 Subject: [PATCH 04/12] chore: Apply text decoration for child span --- src/popover/styles.scss | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/popover/styles.scss b/src/popover/styles.scss index e5f32a9c4b..d53f477a62 100644 --- a/src/popover/styles.scss +++ b/src/popover/styles.scss @@ -50,6 +50,12 @@ text-decoration: underline dashed currentColor; text-underline-offset: 0.2em; + /* stylelint-disable selector-combinator-disallowed-list, selector-max-type, selector-max-universal */ + & span { + text-decoration: underline dashed currentColor; + text-underline-offset: 0.2em; + } + &:focus { outline: none; } From 45d0a1671cd77e89db103f79909d7a594c1700a6 Mon Sep 17 00:00:00 2001 From: Georgii Lobko Date: Tue, 10 Dec 2024 10:19:00 +0100 Subject: [PATCH 05/12] chore: Handle wrapTriggerText differently --- src/popover/styles.scss | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/popover/styles.scss b/src/popover/styles.scss index d53f477a62..9d7e4ed696 100644 --- a/src/popover/styles.scss +++ b/src/popover/styles.scss @@ -46,14 +46,21 @@ background-color: transparent; cursor: pointer; - border-block-end: awsui.$border-divider-list-width dashed transparent; - text-decoration: underline dashed currentColor; - text-underline-offset: 0.2em; - /* stylelint-disable selector-combinator-disallowed-list, selector-max-type, selector-max-universal */ - & span { + &:not(.overflow-ellipsis) { + border-block-end: awsui.$border-divider-list-width dashed transparent; text-decoration: underline dashed currentColor; - text-underline-offset: 0.2em; + text-underline-offset: 0.25em; + + /* stylelint-disable selector-combinator-disallowed-list, selector-max-type, selector-max-universal */ + & span { + text-decoration: underline dashed currentColor; + text-underline-offset: 0.25em; + } + } + + &.overflow-ellipsis { + border-block-end: awsui.$border-divider-list-width dashed currentColor; } &:focus { From 178c7cee1af06654656e6d24857517cc200b9f21 Mon Sep 17 00:00:00 2001 From: Georgii Lobko Date: Wed, 15 Jan 2025 11:56:08 +0100 Subject: [PATCH 06/12] feat: Introduce unified styles for both text wrapped and unwrapped popover triggers --- src/popover/styles.scss | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/src/popover/styles.scss b/src/popover/styles.scss index 9d7e4ed696..a359873772 100644 --- a/src/popover/styles.scss +++ b/src/popover/styles.scss @@ -12,6 +12,14 @@ @import './container'; @import './motion'; +$trigger-underline-offset: 0.25em; + +@mixin trigger-underline-styles { + text-decoration: underline dashed currentColor; + text-decoration-thickness: awsui.$border-divider-list-width; + text-underline-offset: $trigger-underline-offset; +} + .root { @include styles.styles-reset; color: inherit; @@ -47,20 +55,19 @@ cursor: pointer; - &:not(.overflow-ellipsis) { - border-block-end: awsui.$border-divider-list-width dashed transparent; - text-decoration: underline dashed currentColor; - text-underline-offset: 0.25em; + @include trigger-underline-styles; - /* stylelint-disable selector-combinator-disallowed-list, selector-max-type, selector-max-universal */ - & span { - text-decoration: underline dashed currentColor; - text-underline-offset: 0.25em; - } + &.overflow-ellipsis { + /* + this line-height must be overridden, because of the overflow: hidden, + otherwise the underline styles would be hidden + */ + line-height: calc(1 + #{$trigger-underline-offset} + #{awsui.$border-divider-list-width}); } - &.overflow-ellipsis { - border-block-end: awsui.$border-divider-list-width dashed currentColor; + /* stylelint-disable selector-combinator-disallowed-list, selector-max-type, selector-max-universal */ + & span { + @include trigger-underline-styles; } &:focus { From f3476b8b6a1cd8727302b934a7327f9eda53155a Mon Sep 17 00:00:00 2001 From: Georgii Lobko Date: Wed, 15 Jan 2025 12:22:55 +0100 Subject: [PATCH 07/12] chore: Introduce a transparent border-bottom to maintain space between the trigger and the bottom-positioned popover --- src/popover/styles.scss | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/popover/styles.scss b/src/popover/styles.scss index a359873772..76d2f61e5e 100644 --- a/src/popover/styles.scss +++ b/src/popover/styles.scss @@ -55,12 +55,15 @@ $trigger-underline-offset: 0.25em; cursor: pointer; + /* + This transparent border is necessary to maintain space between the trigger and the bottom-positioned popover. + */ + border-block-end: awsui.$border-divider-list-width dashed transparent; @include trigger-underline-styles; &.overflow-ellipsis { /* - this line-height must be overridden, because of the overflow: hidden, - otherwise the underline styles would be hidden + This line-height needs to be overridden because the overflow: hidden would otherwise conceal the underline styles. */ line-height: calc(1 + #{$trigger-underline-offset} + #{awsui.$border-divider-list-width}); } From 05282ff7658a2299550f9a30b0883905d79c6396 Mon Sep 17 00:00:00 2001 From: Georgii Lobko Date: Mon, 20 Jan 2025 12:00:17 +0100 Subject: [PATCH 08/12] chore: Change styles specificity --- src/popover/styles.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/popover/styles.scss b/src/popover/styles.scss index 76d2f61e5e..5827545d07 100644 --- a/src/popover/styles.scss +++ b/src/popover/styles.scss @@ -69,7 +69,7 @@ $trigger-underline-offset: 0.25em; } /* stylelint-disable selector-combinator-disallowed-list, selector-max-type, selector-max-universal */ - & span { + & * { @include trigger-underline-styles; } From 9ee34f48ebce197f14b57ab1d3d0ac827efc8dc7 Mon Sep 17 00:00:00 2001 From: Georgii Lobko Date: Tue, 21 Jan 2025 11:15:00 +0100 Subject: [PATCH 09/12] chore: Add a comment to explain the css rule to propagate down underline styles --- src/popover/styles.scss | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/popover/styles.scss b/src/popover/styles.scss index 5827545d07..c5f6f00952 100644 --- a/src/popover/styles.scss +++ b/src/popover/styles.scss @@ -68,6 +68,12 @@ $trigger-underline-offset: 0.25em; line-height: calc(1 + #{$trigger-underline-offset} + #{awsui.$border-divider-list-width}); } + /* + These styles override the custom block content inside the popover trigger. + Inline elements automatically inherit the underline styles, whereas block elements do not. + One use case is when the StatusIndicator component is used as the popover trigger. + However, since it has display: inline-block, it does not inherit these styles automatically. + */ /* stylelint-disable selector-combinator-disallowed-list, selector-max-type, selector-max-universal */ & * { @include trigger-underline-styles; From c329d845f59a07803327277c3684d821d0300520 Mon Sep 17 00:00:00 2001 From: Georgii Lobko Date: Wed, 22 Jan 2025 12:53:00 +0100 Subject: [PATCH 10/12] feat: New triggerType in Popover component --- pages/popover/text-wrap.page.tsx | 1 + .../__snapshots__/documenter.test.ts.snap | 4 +- src/popover/interfaces.ts | 5 ++- src/popover/internal.tsx | 4 +- src/popover/styles.scss | 45 +++++++------------ 5 files changed, 26 insertions(+), 33 deletions(-) diff --git a/pages/popover/text-wrap.page.tsx b/pages/popover/text-wrap.page.tsx index 1e21a81c90..e46a4b7bb1 100644 --- a/pages/popover/text-wrap.page.tsx +++ b/pages/popover/text-wrap.page.tsx @@ -26,6 +26,7 @@ const triggerPermutations = createPermutations { - if (triggerType === 'text') { + if (['text', 'text-inline'].includes(triggerType)) { triggerRef.current?.focus(); } else { triggerRef.current && getFirstFocusable(triggerRef.current)?.focus(); @@ -198,7 +198,7 @@ function InternalPopover( }); }} > - {triggerType === 'text' ? ( + {['text', 'text-inline'].includes(triggerType) ? (