From f7d90c419df12c695ef7dcd54174f95125e5a7bb Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 26 Dec 2025 07:22:42 +0000 Subject: [PATCH 1/4] Initial plan From d269d655aeda20908ef193322ce9028592d9db35 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 26 Dec 2025 07:28:21 +0000 Subject: [PATCH 2/4] fix(popover): arrow color now matches background theme color Co-authored-by: Wesley-0808 <69622989+Wesley-0808@users.noreply.github.com> --- packages/components/popover/popover.less | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/components/popover/popover.less b/packages/components/popover/popover.less index 40e474764..e07dd3120 100644 --- a/packages/components/popover/popover.less +++ b/packages/components/popover/popover.less @@ -284,7 +284,7 @@ @color: 'popover-@{theme}-color'; @bgColor: 'popover-@{theme}-bg-color'; - .@{prefix}-popover--@{theme} { + .@{prefix}-popover__content.@{prefix}-popover--@{theme} { color: @@color; background: @@bgColor; From df863c4b4676b22c019377de94f5e4c13b648b84 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 26 Dec 2025 07:31:44 +0000 Subject: [PATCH 3/4] Update progress: tests passing Co-authored-by: Wesley-0808 <69622989+Wesley-0808@users.noreply.github.com> --- .../components/calendar/__test__/demo.test.js | 11 +---------- packages/components/input/__test__/demo.test.js | 15 +-------------- 2 files changed, 2 insertions(+), 24 deletions(-) diff --git a/packages/components/calendar/__test__/demo.test.js b/packages/components/calendar/__test__/demo.test.js index a3535c961..aec1cab9d 100644 --- a/packages/components/calendar/__test__/demo.test.js +++ b/packages/components/calendar/__test__/demo.test.js @@ -5,16 +5,7 @@ import path from 'path'; import simulate from 'miniprogram-simulate'; -const mapper = [ - 'base', - 'custom-range', - 'custom-text', - 'local-text', - 'multiple', - 'range', - 'switch-mode', - 'without-popup', -]; +const mapper = ['base', 'custom-range', 'custom-text', 'local-text', 'multiple', 'range', 'switch-mode', 'without-popup']; describe('Calendar', () => { mapper.forEach((demoName) => { diff --git a/packages/components/input/__test__/demo.test.js b/packages/components/input/__test__/demo.test.js index 62a9443dc..633000761 100644 --- a/packages/components/input/__test__/demo.test.js +++ b/packages/components/input/__test__/demo.test.js @@ -5,20 +5,7 @@ import path from 'path'; import simulate from 'miniprogram-simulate'; -const mapper = [ - 'align', - 'banner', - 'base', - 'bordered', - 'custom', - 'label', - 'layout', - 'maxlength', - 'prefix', - 'special', - 'status', - 'suffix', -]; +const mapper = ['align', 'banner', 'base', 'bordered', 'custom', 'label', 'layout', 'maxlength', 'prefix', 'special', 'status', 'suffix']; describe('Input', () => { mapper.forEach((demoName) => { From 4c699785b981d308778b945d080abfb41255a241 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 26 Dec 2025 07:50:51 +0000 Subject: [PATCH 4/4] fix(popover): arrow inherits background color, use class-based placement selectors 1. Arrow now inherits background-color from content via color property - Arrow has color:inherit to get parent's color value - Content sets color to background-color value for arrow to inherit - Direct children reset text color to theme text color - This allows arrow to match any custom background-color set by developers 2. Replace data-placement attribute selectors with class-based selectors - Added placement classes to root element (.t-popover--placement-{placement}) - Updated all CSS selectors to use classes instead of [data-placement] - Miniprogram doesn't support attribute selectors properly Co-authored-by: Wesley-0808 <69622989+Wesley-0808@users.noreply.github.com> --- packages/components/popover/popover.less | 66 +++++++++++++++--------- packages/components/popover/popover.wxml | 2 +- 2 files changed, 43 insertions(+), 25 deletions(-) diff --git a/packages/components/popover/popover.less b/packages/components/popover/popover.less index e07dd3120..f1a6bef92 100644 --- a/packages/components/popover/popover.less +++ b/packages/components/popover/popover.less @@ -59,6 +59,7 @@ border-style: solid; border-color: transparent; border-width: @popover-arrow-width; + color: inherit; } // 主题 @@ -93,7 +94,9 @@ .arrow-placement-right(); .content-placement-top { - .@{prefix}-popover[data-placement^='top'] { + .@{prefix}-popover.@{prefix}-popover--placement-top, + .@{prefix}-popover.@{prefix}-popover--placement-top-start, + .@{prefix}-popover.@{prefix}-popover--placement-top-end { .@{prefix}-popover__content { margin-bottom: @popover-content-margin; } @@ -104,7 +107,9 @@ } .content-placement-bottom { - .@{prefix}-popover[data-placement^='bottom'] { + .@{prefix}-popover.@{prefix}-popover--placement-bottom, + .@{prefix}-popover.@{prefix}-popover--placement-bottom-start, + .@{prefix}-popover.@{prefix}-popover--placement-bottom-end { .@{prefix}-popover__content { margin-top: @popover-content-margin; } @@ -115,7 +120,9 @@ } .content-placement-left { - .@{prefix}-popover[data-placement^='left'] { + .@{prefix}-popover.@{prefix}-popover--placement-left, + .@{prefix}-popover.@{prefix}-popover--placement-left-start, + .@{prefix}-popover.@{prefix}-popover--placement-left-end { .@{prefix}-popover__content { margin-right: @popover-content-margin; } @@ -126,7 +133,9 @@ } .content-placement-right { - .@{prefix}-popover[data-placement^='right'] { + .@{prefix}-popover.@{prefix}-popover--placement-right, + .@{prefix}-popover.@{prefix}-popover--placement-right-start, + .@{prefix}-popover.@{prefix}-popover--placement-right-end { .@{prefix}-popover__content { margin-left: @popover-content-margin; } @@ -137,7 +146,9 @@ } .arrow-placement-top() { - .@{prefix}-popover[data-placement^='top'] { + .@{prefix}-popover.@{prefix}-popover--placement-top, + .@{prefix}-popover.@{prefix}-popover--placement-top-start, + .@{prefix}-popover.@{prefix}-popover--placement-top-end { .@{prefix}-popover__arrow { bottom: 0; border-top-color: currentColor; @@ -146,7 +157,7 @@ } } - .@{prefix}-popover[data-placement='top'] { + .@{prefix}-popover.@{prefix}-popover--placement-top { transform-origin: 50% 100%; .@{prefix}-popover__arrow { @@ -155,7 +166,7 @@ } } - .@{prefix}-popover[data-placement='top-start'] { + .@{prefix}-popover.@{prefix}-popover--placement-top-start { transform-origin: 0 100%; .@{prefix}-popover__arrow { @@ -163,7 +174,7 @@ } } - .@{prefix}-popover[data-placement='top-end'] { + .@{prefix}-popover.@{prefix}-popover--placement-top-end { transform-origin: 100% 100%; .@{prefix}-popover__arrow { @@ -173,7 +184,9 @@ } .arrow-placement-left() { - .@{prefix}-popover[data-placement^='left'] { + .@{prefix}-popover.@{prefix}-popover--placement-left, + .@{prefix}-popover.@{prefix}-popover--placement-left-start, + .@{prefix}-popover.@{prefix}-popover--placement-left-end { .@{prefix}-popover__arrow { right: 0; border-right-width: 0; @@ -182,7 +195,7 @@ } } - .@{prefix}-popover[data-placement='left'] { + .@{prefix}-popover.@{prefix}-popover--placement-left { transform-origin: 100% 50%; .@{prefix}-popover__arrow { @@ -191,7 +204,7 @@ } } - .@{prefix}-popover[data-placement='left-start'] { + .@{prefix}-popover.@{prefix}-popover--placement-left-start { transform-origin: 100% 0; .@{prefix}-popover__arrow { @@ -199,7 +212,7 @@ } } - .@{prefix}-popover[data-placement='left-end'] { + .@{prefix}-popover.@{prefix}-popover--placement-left-end { transform-origin: 100% 100%; .@{prefix}-popover__arrow { @@ -209,7 +222,9 @@ } .arrow-placement-bottom() { - .@{prefix}-popover[data-placement^='bottom'] { + .@{prefix}-popover.@{prefix}-popover--placement-bottom, + .@{prefix}-popover.@{prefix}-popover--placement-bottom-start, + .@{prefix}-popover.@{prefix}-popover--placement-bottom-end { .@{prefix}-popover__arrow { top: 0; border-top-width: 0; @@ -218,7 +233,7 @@ } } - .@{prefix}-popover[data-placement='bottom'] { + .@{prefix}-popover.@{prefix}-popover--placement-bottom { transform-origin: 50% 0; .@{prefix}-popover__arrow { @@ -227,7 +242,7 @@ } } - .@{prefix}-popover[data-placement='bottom-start'] { + .@{prefix}-popover.@{prefix}-popover--placement-bottom-start { transform-origin: 0 0; .@{prefix}-popover__arrow { @@ -235,7 +250,7 @@ } } - .@{prefix}-popover[data-placement='bottom-end'] { + .@{prefix}-popover.@{prefix}-popover--placement-bottom-end { transform-origin: 100% 0; .@{prefix}-popover__arrow { @@ -245,7 +260,9 @@ } .arrow-placement-right() { - .@{prefix}-popover[data-placement^='right'] { + .@{prefix}-popover.@{prefix}-popover--placement-right, + .@{prefix}-popover.@{prefix}-popover--placement-right-start, + .@{prefix}-popover.@{prefix}-popover--placement-right-end { .@{prefix}-popover__arrow { left: 0; border-right-color: currentColor; @@ -254,7 +271,7 @@ } } - .@{prefix}-popover[data-placement='right'] { + .@{prefix}-popover.@{prefix}-popover--placement-right { transform-origin: 0 50%; .@{prefix}-popover__arrow { @@ -263,7 +280,7 @@ } } - .@{prefix}-popover[data-placement='right-start'] { + .@{prefix}-popover.@{prefix}-popover--placement-right-start { transform-origin: 0 0; .@{prefix}-popover__arrow { @@ -271,7 +288,7 @@ } } - .@{prefix}-popover[data-placement='right-end'] { + .@{prefix}-popover.@{prefix}-popover--placement-right-end { transform-origin: 0 100%; .@{prefix}-popover__arrow { @@ -285,11 +302,12 @@ @bgColor: 'popover-@{theme}-bg-color'; .@{prefix}-popover__content.@{prefix}-popover--@{theme} { - color: @@color; background: @@bgColor; - - .@{prefix}-popover__arrow { - color: @@bgColor; + color: @@bgColor; // Set color to background so arrow can inherit it via currentColor + + // Reset text color for content + & > view, & > text, & > * { + color: @@color; } } } diff --git a/packages/components/popover/popover.wxml b/packages/components/popover/popover.wxml index cac5a49c7..01ac61db5 100644 --- a/packages/components/popover/popover.wxml +++ b/packages/components/popover/popover.wxml @@ -16,7 +16,7 @@ wx:if="{{realVisible}}" id="{{classPrefix}}-content" style="{{style}} {{contentStyle}} {{customStyle}}" - class="{{class}} {{classPrefix}} {{transitionClass}} {{prefix}}-class {{fixed ? classPrefix + '--fixed' : ''}}" + class="{{class}} {{classPrefix}} {{classPrefix}}--placement-{{_placement}} {{transitionClass}} {{prefix}}-class {{fixed ? classPrefix + '--fixed' : ''}}" data-placement="{{_placement}}" >