跳至內容
選單
此問題已被標幟
1 回覆
778 瀏覽次數

<button name="action_offer_accept"

type="object"

icon="fa-check"

class="btn-success"

string="Accept"

invisible="can_accept == False or state == 'accepted'"

/>

<button name="action_offer_refuse"

type="object"

icon="fa-times"

class="btn-danger"

string="Refuse"

invisible="can_accept == False"

/>

<field name="can_accept" invisible="True"/>


If one of the buttons "action_offer_accept" and "action_offer_refuse" is initially invisible=True and the other is visible, the first one doesn't take any space and no space is reserved for it. After setting invisible=False, it appears in a "second line" in the layout which is visually very unappealing and inconsistent compared to the option that both buttons are initially visible and in one "line". 

How to always "reserve" space for my buttons action_offer_accept and action_offer_refuse?


頭像
捨棄
最佳答案

To reserve space for both buttons and avoid layout shifting when one becomes visible, wrap them in a container like <div> or <group> and use the attrs attribute instead of invisible on the buttons:

<group>

    <button name="action_offer_accept"

            type="object"

            icon="fa-check"

            class="btn-success"

            string="Accept"

            attrs="{'invisible': [('can_accept', '=', False), ('state', '=', 'accepted')]}"/>


    <button name="action_offer_refuse"

            type="object"

            icon="fa-times"

            class="btn-danger"

            string="Refuse"

            attrs="{'invisible': [('can_accept', '=', False)]}"/>

</group>


i hope it is usefull

頭像
捨棄
相關帖文 回覆 瀏覽次數 活動
2
12月 23
12752
3
7月 22
23128
2
6月 21
18574
0
9月 20
3726
0
5月 16
4135