Skip to content

Commit 91f3d86

Browse files
committed
Set card content visibility only once if initially collapsed. Update some accordion tests
1 parent b3be0f9 commit 91f3d86

2 files changed

Lines changed: 19 additions & 14 deletions

File tree

panel/models/card.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,15 @@ export class CardView extends ColumnView {
2222

2323
button_el: HTMLButtonElement
2424
header_el: HTMLElement
25+
initially_collapsed: boolean
2526

2627
readonly collapsed_style = new DOM.InlineStyleSheet()
2728

2829
override connect_signals(): void {
2930
super.connect_signals()
3031

3132
const {active_header_background, collapsed, header_background, header_color, hide_header} = this.model.properties
33+
this.initially_collapsed = this.model.collapsed;
3234
this.on_change(collapsed, () => this._collapse())
3335
this.on_change([header_color, hide_header], () => this.render())
3436

@@ -107,7 +109,10 @@ export class CardView extends ColumnView {
107109
}
108110

109111
for (const child_view of this.child_views.slice(1)) {
110-
child_view.model.visible = child_view.model.visible && !this.model.collapsed
112+
if (this.initially_collapsed) {
113+
child_view.model.visible = false
114+
this.initially_collapsed = false
115+
}
111116
this.shadow_el.appendChild(child_view.el)
112117
child_view.render()
113118
child_view.r_after_render()

panel/tests/ui/layout/test_accordion.py

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@ def accordion_components():
1919
return d0, d1
2020

2121

22-
def is_collapsed(card_object, card_content):
22+
def is_collapsed(card_object, card_content, page):
2323
expect(card_object.locator('svg')).to_have_class("icon icon-tabler icons-tabler-outline icon-tabler-chevron-right")
24-
expect(card_object).not_to_contain_text(card_content)
24+
expect(page.get_by_text(card_content)).to_be_hidden()
2525
return True
2626

2727

@@ -51,8 +51,8 @@ def test_accordion_default(page, accordion_components):
5151
expect(d1_object).to_contain_text(d1.name)
5252

5353
# cards are collapsed and their content is hidden by default
54-
assert is_collapsed(card_object=d0_object, card_content=d0.text)
55-
assert is_collapsed(card_object=d1_object, card_content=d1.text)
54+
assert is_collapsed(card_object=d0_object, card_content=d0.text, page=page)
55+
assert is_collapsed(card_object=d1_object, card_content=d1.text, page=page)
5656

5757
# cards can be expanded simultaneously
5858
d0_object.click()
@@ -94,7 +94,7 @@ def test_accordion_active(page, accordion_components):
9494
# second card is collapsed and its content is hidden
9595
d1_object = accordion_elements.nth(1)
9696
d1_object.wait_for()
97-
assert is_collapsed(card_object=d1_object, card_content=d1.text)
97+
assert is_collapsed(card_object=d1_object, card_content=d1.text, page=page)
9898

9999

100100
def test_accordion_objects(page, accordion_components):
@@ -127,11 +127,11 @@ def test_accordion_toggle(page, accordion_components):
127127
# click to expand the first card, 2nd card is collapsed
128128
d0_object.click()
129129
assert is_expanded(card_object=d0_object, card_content=d0.text)
130-
assert is_collapsed(card_object=d1_object, card_content=d1.text)
130+
assert is_collapsed(card_object=d1_object, card_content=d1.text, page=page)
131131

132132
# click to expand the 2nd card, 1st card is collapsed
133133
d1_object.click()
134-
assert is_collapsed(card_object=d0_object, card_content=d0.text)
134+
assert is_collapsed(card_object=d0_object, card_content=d0.text, page=page)
135135
assert is_expanded(card_object=d1_object, card_content=d1.text)
136136

137137

@@ -150,15 +150,15 @@ def test_accordion_append(page, accordion_components):
150150
expect(accordion_elements).to_have_count(1)
151151
# collapsed by default
152152
d0_object = accordion_elements.nth(0)
153-
assert is_collapsed(card_object=d0_object, card_content=d0.text)
153+
assert is_collapsed(card_object=d0_object, card_content=d0.text, page=page)
154154

155155
# add new element d1
156156
accordion.append(d1)
157157
expect(accordion_elements).to_have_count(2)
158158
d1_object = accordion_elements.nth(1)
159159
# both cards are collapsed
160-
assert is_collapsed(card_object=d0_object, card_content=d0.text)
161-
assert is_collapsed(card_object=d1_object, card_content=d1.text)
160+
assert is_collapsed(card_object=d0_object, card_content=d0.text, page=page)
161+
assert is_collapsed(card_object=d1_object, card_content=d1.text, page=page)
162162

163163

164164
def test_accordion_extend(page, accordion_components):
@@ -179,9 +179,9 @@ def test_accordion_extend(page, accordion_components):
179179
d0_object = accordion_elements.nth(0)
180180
d1_object = accordion_elements.nth(1)
181181
d2_object = accordion_elements.nth(2)
182-
assert is_collapsed(card_object=d0_object, card_content=d0.text)
183-
assert is_collapsed(card_object=d1_object, card_content=d1.text)
184-
assert is_collapsed(card_object=d2_object, card_content=d2.text)
182+
assert is_collapsed(card_object=d0_object, card_content=d0.text, page=page)
183+
assert is_collapsed(card_object=d1_object, card_content=d1.text, page=page)
184+
assert is_collapsed(card_object=d2_object, card_content=d2.text, page=page)
185185

186186

187187
def test_accordion_clear(page, accordion_components):

0 commit comments

Comments
 (0)