Skip to content
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions panel/models/card.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,15 @@ export class CardView extends ColumnView {

button_el: HTMLButtonElement
header_el: HTMLElement
initially_collapsed: boolean

readonly collapsed_style = new DOM.InlineStyleSheet()

override connect_signals(): void {
super.connect_signals()

const {active_header_background, collapsed, header_background, header_color, hide_header} = this.model.properties
this.initially_collapsed = this.model.collapsed
this.on_change(collapsed, () => this._collapse())
this.on_change([header_color, hide_header], () => this.render())

Expand Down Expand Up @@ -106,11 +108,11 @@ export class CardView extends ColumnView {
header.r_after_render()
}

if (this.model.collapsed) {
return
}

for (const child_view of this.child_views.slice(1)) {
if (this.initially_collapsed) {
Comment thread
philippjfr marked this conversation as resolved.
Outdated
child_view.model.visible = false
this.initially_collapsed = false
}
this.shadow_el.appendChild(child_view.el)
child_view.render()
child_view.r_after_render()
Expand Down
1 change: 1 addition & 0 deletions panel/tests/test_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -798,6 +798,7 @@
wait_until(lambda: len(counts) > 0 and max(counts) > 1)


@pytest.mark.flaky(max_runs=3)
def test_server_thread_pool_change_event(server_implementation, threads):
button = Button(name='Click')
button2 = Button(name='Click')
Expand All @@ -823,7 +824,7 @@
button2._server_change(doc, model.ref['id'], None, 'clicks', 0, 1)

# Checks whether Button on_click callback was executed concurrently
wait_until(lambda: len(counts) > 0 and max(counts) > 1)

Check failure on line 827 in panel/tests/test_server.py

View workflow job for this annotation

GitHub Actions / unit:test-314:ubuntu-latest

test_server_thread_pool_change_event[tornado] TimeoutError: wait_until timed out in 5000 milliseconds


def test_server_thread_pool_bokeh_event(server_implementation, threads):
Expand Down
26 changes: 13 additions & 13 deletions panel/tests/ui/layout/test_accordion.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@ def accordion_components():
return d0, d1


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


Expand Down Expand Up @@ -51,8 +51,8 @@ def test_accordion_default(page, accordion_components):
expect(d1_object).to_contain_text(d1.name)

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

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


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

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


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

# add new element d1
accordion.append(d1)
expect(accordion_elements).to_have_count(2)
d1_object = accordion_elements.nth(1)
# both cards are collapsed
assert is_collapsed(card_object=d0_object, card_content=d0.text)
assert is_collapsed(card_object=d1_object, card_content=d1.text)
assert is_collapsed(card_object=d0_object, card_content=d0.text, page=page)
assert is_collapsed(card_object=d1_object, card_content=d1.text, page=page)


def test_accordion_extend(page, accordion_components):
Expand All @@ -179,9 +179,9 @@ def test_accordion_extend(page, accordion_components):
d0_object = accordion_elements.nth(0)
d1_object = accordion_elements.nth(1)
d2_object = accordion_elements.nth(2)
assert is_collapsed(card_object=d0_object, card_content=d0.text)
assert is_collapsed(card_object=d1_object, card_content=d1.text)
assert is_collapsed(card_object=d2_object, card_content=d2.text)
assert is_collapsed(card_object=d0_object, card_content=d0.text, page=page)
assert is_collapsed(card_object=d1_object, card_content=d1.text, page=page)
assert is_collapsed(card_object=d2_object, card_content=d2.text, page=page)


def test_accordion_clear(page, accordion_components):
Expand Down
Loading