mirror of
https://github.com/OCA/web.git
synced 2025-02-22 13:21:25 +02:00
[MIG] web_responsive: Migration to 14.0
This commit is contained in:
@@ -7,8 +7,9 @@
|
||||
<t t-jquery=".o_app" t-operation="attributes">
|
||||
<attribute
|
||||
name="t-attf-href"
|
||||
t-translation="off"
|
||||
>#menu_id=#{app.menuID}&action_id=#{app.actionID}</attribute>
|
||||
<attribute name="draggable">false</attribute>
|
||||
<attribute name="draggable" t-translation="off">false</attribute>
|
||||
</t>
|
||||
<!-- App icons should be more than a text -->
|
||||
<t t-jquery=".o_app > t" t-operation="replace">
|
||||
|
||||
47
web_responsive/static/src/xml/attachment_viewer.xml
Normal file
47
web_responsive/static/src/xml/attachment_viewer.xml
Normal file
@@ -0,0 +1,47 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!-- Copyright 2019 Tecnativa - Alexandre Díaz
|
||||
Copyright 2021 Sergey Shebanin
|
||||
License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). -->
|
||||
<template>
|
||||
<t t-inherit="mail.Dialog" t-inherit-mode="extension" owl="1">
|
||||
<xpath expr="//div[hasclass('o_Dialog')]" position="attributes">
|
||||
<attribute
|
||||
name="t-attf-class"
|
||||
t-translation="off"
|
||||
>o_Dialog_{{dialog.record['constructor'].name}}</attribute>
|
||||
</xpath>
|
||||
</t>
|
||||
<t t-inherit="mail.AttachmentViewer" t-inherit-mode="extension" owl="1">
|
||||
<xpath expr="//div[hasclass('o_AttachmentViewer')]" position="attributes">
|
||||
<attribute
|
||||
name="t-att-class"
|
||||
t-translation="off"
|
||||
>state.maximized ? 'o_AttachmentViewer_maximized' : ''</attribute>
|
||||
</xpath>
|
||||
<xpath
|
||||
expr="//div[hasclass('o_AttachmentViewer_header')]/div[hasclass('o-autogrow')]"
|
||||
position="after"
|
||||
>
|
||||
<div
|
||||
t-if="!state.maximized"
|
||||
class="o_AttachmentViewer_headerItem o_AttachmentViewer_headerItemButton o_AttachmentViewer_headerItemButtonMaximize"
|
||||
t-on-click="state.maximized=true"
|
||||
role="button"
|
||||
title="Maximize"
|
||||
aria-label="Maximize"
|
||||
>
|
||||
<i class="fa fa-fw fa-window-maximize" role="img" />
|
||||
</div>
|
||||
<div
|
||||
t-if="state.maximized"
|
||||
class="o_AttachmentViewer_headerItem o_AttachmentViewer_headerItemButton o_AttachmentViewer_headerItemButtonMinimize"
|
||||
t-on-click="state.maximized=false"
|
||||
role="button"
|
||||
title="Minimize"
|
||||
aria-label="Minimize"
|
||||
>
|
||||
<i class="fa fa-fw fa-window-minimize" role="img" />
|
||||
</div>
|
||||
</xpath>
|
||||
</t>
|
||||
</template>
|
||||
146
web_responsive/static/src/xml/control_panel.xml
Normal file
146
web_responsive/static/src/xml/control_panel.xml
Normal file
@@ -0,0 +1,146 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!-- Copyright 2021 Sergey Shebanin
|
||||
License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). -->
|
||||
<templates>
|
||||
<t t-inherit="web.ControlPanel" t-inherit-mode="extension" owl="1">
|
||||
<xpath expr="//nav[hasclass('o_cp_switch_buttons')]" position="replace">
|
||||
<nav
|
||||
t-if="props.views.length gt 1"
|
||||
class="btn-group o_cp_switch_buttons"
|
||||
role="toolbar"
|
||||
aria-label="View switcher"
|
||||
>
|
||||
<t
|
||||
t-set="collapse_switchview"
|
||||
t-value="device.size_class <= device.SIZES.LG"
|
||||
/>
|
||||
<button
|
||||
t-if="collapse_switchview"
|
||||
class="btn btn-link btn-sm"
|
||||
data-toggle="dropdown"
|
||||
aria-expanded="false"
|
||||
>
|
||||
<span
|
||||
t-attf-class="fa fa-lg o_switch_view o_{{ env.view.type }} {{ props.views.filter(view => view.type === env.view.type)[0].icon }}"
|
||||
/>
|
||||
</button>
|
||||
<ul
|
||||
t-if="collapse_switchview"
|
||||
class="dropdown-menu dropdown-menu-right list-inline"
|
||||
>
|
||||
<li t-foreach="props.views" t-as="view" t-key="view.type">
|
||||
<t t-call="web.ViewSwitcherButton" />
|
||||
</li>
|
||||
</ul>
|
||||
<t
|
||||
t-if="!collapse_switchview"
|
||||
t-foreach="props.views"
|
||||
t-as="view"
|
||||
t-key="view.type"
|
||||
>
|
||||
<t t-call="web.ViewSwitcherButton" />
|
||||
</t>
|
||||
</nav>
|
||||
</xpath>
|
||||
<xpath expr="//div[hasclass('o_searchview')]" position="replace">
|
||||
<div
|
||||
t-if="props.withSearchBar"
|
||||
class="o_searchview"
|
||||
t-att-class="state.mobileSearchMode == 'quick' ? 'o_searchview_quick' : 'o_searchview_mobile'"
|
||||
role="search"
|
||||
aria-autocomplete="list"
|
||||
t-on-click.self="state.mobileSearchMode = device.isMobile ? 'quick' : ''"
|
||||
>
|
||||
<t t-if="!device.isMobile">
|
||||
<i
|
||||
class="o_searchview_icon fa fa-search"
|
||||
title="Search..."
|
||||
role="img"
|
||||
aria-label="Search..."
|
||||
/>
|
||||
<SearchBar fields="fields" />
|
||||
</t>
|
||||
<t t-if="device.isMobile and state.mobileSearchMode == 'quick'">
|
||||
<button
|
||||
class="btn btn-link fa fa-arrow-left"
|
||||
t-on-click.stop="state.mobileSearchMode = ''"
|
||||
/>
|
||||
<SearchBar fields="fields" />
|
||||
<button
|
||||
class="btn fa fa-filter"
|
||||
t-on-click.stop="state.mobileSearchMode = 'full'"
|
||||
/>
|
||||
</t>
|
||||
<t
|
||||
t-if="device.isMobile and state.mobileSearchMode == 'full'"
|
||||
t-call="web_responsive.MobileSearchView"
|
||||
/>
|
||||
<t t-if="device.isMobile and state.mobileSearchMode == ''">
|
||||
<button
|
||||
class="btn btn-link fa fa-search"
|
||||
t-on-click.stop="state.mobileSearchMode = 'quick'"
|
||||
/>
|
||||
</t>
|
||||
</div>
|
||||
</xpath>
|
||||
<xpath expr="//div[hasclass('o_cp_top_left')]" position="attributes">
|
||||
<attribute
|
||||
name="t-att-class"
|
||||
t-translation="off"
|
||||
>device.isMobile and state.mobileSearchMode == 'quick' ? 'o_hidden' : ''</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//div[hasclass('o_search_options')]" position="attributes">
|
||||
<attribute name="t-if" t-translation="off">!device.isMobile</attribute>
|
||||
<attribute
|
||||
name="t-att-class"
|
||||
t-translation="off"
|
||||
>device.size_class == device.SIZES.MD ? 'o_search_options_hide_labels' : ''</attribute>
|
||||
</xpath>
|
||||
</t>
|
||||
<t t-name="web_responsive.MobileSearchView" owl="1">
|
||||
<div class="o_mobile_search">
|
||||
<div class="o_mobile_search_header">
|
||||
<span
|
||||
class="o_mobile_search_close float-left mt16 mb16 mr8 ml16"
|
||||
t-on-click.stop="state.mobileSearchMode = 'quick'"
|
||||
>
|
||||
<i class="fa fa-arrow-left" />
|
||||
<strong class="float-right ml8">FILTER</strong>
|
||||
</span>
|
||||
<span
|
||||
class="float-right o_mobile_search_clear_facets mt16 mr16"
|
||||
t-on-click.stop="model.dispatch('clearQuery')"
|
||||
>
|
||||
<t>CLEAR</t>
|
||||
</span>
|
||||
</div>
|
||||
<SearchBar fields="fields" />
|
||||
<div class="o_mobile_search_filter o_search_options mb8 mt8 ml16 mr16">
|
||||
<FilterMenu
|
||||
t-if="props.searchMenuTypes.includes('filter')"
|
||||
class="o_filter_menu"
|
||||
fields="fields"
|
||||
/>
|
||||
<GroupByMenu
|
||||
t-if="props.searchMenuTypes.includes('groupBy')"
|
||||
class="o_group_by_menu"
|
||||
fields="fields"
|
||||
/>
|
||||
<ComparisonMenu
|
||||
t-if="props.searchMenuTypes.includes('comparison') and model.get('filters', f => f.type === 'comparison').length"
|
||||
class="o_comparison_menu"
|
||||
/>
|
||||
<FavoriteMenu
|
||||
t-if="props.searchMenuTypes.includes('favorite')"
|
||||
class="o_favorite_menu"
|
||||
/>
|
||||
</div>
|
||||
<div
|
||||
class="btn btn-primary o_mobile_search_show_result fixed-bottom"
|
||||
t-on-click.stop="state.mobileSearchMode = ''"
|
||||
>
|
||||
<t>SEE RESULT</t>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</templates>
|
||||
@@ -7,9 +7,10 @@
|
||||
t-jquery=".o_mail_discuss_button_multi_user_channel"
|
||||
t-operation="attributes"
|
||||
>
|
||||
<attribute
|
||||
name="class"
|
||||
>btn btn-secondary o_mail_discuss_button_multi_user_channel d-md-block d-none</attribute>
|
||||
<attribute name="class" t-translation="off">
|
||||
btn btn-secondary o_mail_discuss_button_multi_user_channel d-md-block
|
||||
d-none
|
||||
</attribute>
|
||||
</t>
|
||||
</t>
|
||||
</template>
|
||||
|
||||
@@ -1,46 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!-- Copyright 2019 Tecnativa - Alexandre Díaz
|
||||
License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). -->
|
||||
<template>
|
||||
<t t-extend="DocumentViewer">
|
||||
<t t-jquery=".o_modal_fullscreen" t-operation="attributes">
|
||||
<attribute
|
||||
name="class"
|
||||
>modal o_modal_fullscreen o_document_viewer o_responsive_document_viewer</attribute>
|
||||
<attribute name="data-backdrop">false</attribute>
|
||||
</t>
|
||||
</t>
|
||||
<t t-extend="DocumentViewer.Content">
|
||||
<t t-jquery=".o_close_btn" t-operation="replace">
|
||||
<div class="o_buttons float-right mr8">
|
||||
<a
|
||||
role="button"
|
||||
class="mr8 o_maximize_btn"
|
||||
tabindex="0"
|
||||
aria-label="Maximize"
|
||||
title="Maximize"
|
||||
>
|
||||
<i class="fa fa-window-maximize" />
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
class="mr8 o_minimize_btn"
|
||||
tabindex="0"
|
||||
aria-label="Minimize"
|
||||
title="Minimize"
|
||||
>
|
||||
<i class="fa fa-window-minimize" />
|
||||
</a>
|
||||
<a
|
||||
role="button"
|
||||
class="o_close_btn"
|
||||
tabindex="0"
|
||||
aria-label="Close"
|
||||
title="Close"
|
||||
>
|
||||
<i class="fa fa-close" />
|
||||
</a>
|
||||
</div>
|
||||
</t>
|
||||
</t>
|
||||
</template>
|
||||
@@ -98,40 +98,13 @@
|
||||
</t>
|
||||
</t>
|
||||
</t>
|
||||
<t t-extend="Sidebar">
|
||||
<!-- Replace some common sections by icons in mobile -->
|
||||
<t
|
||||
t-jquery=".o_dropdown_toggler_btn t[t-esc='section.label']"
|
||||
t-operation="replace"
|
||||
>
|
||||
<t t-set="label" t-value="section.label" />
|
||||
<t t-if="section.name == 'files'">
|
||||
<t t-call="web_responsive.icon_button">
|
||||
<t t-set="icon" t-value="'paperclip'" />
|
||||
</t>
|
||||
<t t-extend="CalendarView.navigation_buttons">
|
||||
<!-- Add responsive icons to buttons -->
|
||||
<t t-jquery=".o_calendar_button_today" t-operation="inner">
|
||||
<t t-call="web_responsive.icon_button">
|
||||
<t t-set="icon" t-value="'calendar-check-o'" />
|
||||
<t t-set="label">Today</t>
|
||||
</t>
|
||||
<t t-elif="section.name == 'print'">
|
||||
<t t-call="web_responsive.icon_button">
|
||||
<t t-set="icon" t-value="'print'" />
|
||||
</t>
|
||||
</t>
|
||||
<t t-elif="section.name == 'other'">
|
||||
<t t-call="web_responsive.icon_button">
|
||||
<t t-set="icon" t-value="'wrench'" />
|
||||
</t>
|
||||
</t>
|
||||
<t t-else="">
|
||||
<span t-esc="label" />
|
||||
</t>
|
||||
</t>
|
||||
</t>
|
||||
<t t-extend="mail.Chatter">
|
||||
<t t-jquery=".o_chatter_topbar" t-operation="replace">
|
||||
<div class="o_chatter_header_container">
|
||||
<div class="o_chatter_topbar">
|
||||
<div class="o_topbar_right_area" />
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</t>
|
||||
</templates>
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!-- Copyright 2017-2018 Tecnativa - Jairo Llopis
|
||||
License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). -->
|
||||
<template>
|
||||
<templates>
|
||||
<t t-extend="Menu">
|
||||
<t t-jquery=".o_menu_apps" t-operation="after">
|
||||
<!-- Hamburger button to show submenus in sm screens -->
|
||||
@@ -14,4 +14,4 @@
|
||||
</button>
|
||||
</t>
|
||||
</t>
|
||||
</template>
|
||||
</templates>
|
||||
|
||||
53
web_responsive/static/src/xml/search_panel.xml
Normal file
53
web_responsive/static/src/xml/search_panel.xml
Normal file
@@ -0,0 +1,53 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!-- Copyright 2021 Sergey Shebanin
|
||||
License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). -->
|
||||
<templates>
|
||||
<t t-inherit="web.SearchPanel" t-inherit-mode="extension" owl="1">
|
||||
<xpath expr="//div[hasclass('o_search_panel')]" position="inside">
|
||||
<div
|
||||
t-if="device.isMobile"
|
||||
class="o_search_panel_summary"
|
||||
t-on-click.stop="state.mobileSearch = true"
|
||||
>
|
||||
<div class="d-flex flex-wrap align-items-center">
|
||||
<i class="fa fa-fw fa-filter mr-1" />
|
||||
<t t-set="filters" t-value="getActiveSummary()" />
|
||||
<span t-foreach="filters" t-as="filter" class="mx-1">
|
||||
<i
|
||||
t-if="filter.icon"
|
||||
t-attf-class="fa {{ filter.icon }} mr-2"
|
||||
t-att-style="filter.color and ('color: ' + filter.color)"
|
||||
/>
|
||||
<t
|
||||
t-esc="filter.values.join(filter.type == 'category' ? ' / ' : ', ')"
|
||||
/>
|
||||
</span>
|
||||
<t t-if="!filters.length">All</t>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="o_search_panel_content"
|
||||
t-att-class="device.isMobile ? (state.mobileSearch ? 'o_mobile_search' : 'd-none'): ''"
|
||||
/>
|
||||
</xpath>
|
||||
<xpath expr="//div[hasclass('o_search_panel_content')]" position="inside">
|
||||
<div t-if="device.isMobile" class="o_mobile_search_header">
|
||||
<span
|
||||
class="o_mobile_search_close float-left mt16 mb16 mr8 ml16"
|
||||
t-on-click.stop="state.mobileSearch = false"
|
||||
>
|
||||
<i class="fa fa-arrow-left" />
|
||||
<strong class="float-right ml8">FILTER</strong>
|
||||
</span>
|
||||
</div>
|
||||
<xpath expr="//section" position="move" />
|
||||
<div
|
||||
t-if="device.isMobile"
|
||||
class="btn btn-primary o_mobile_search_show_result fixed-bottom"
|
||||
t-on-click.stop="state.mobileSearch = false"
|
||||
>
|
||||
<t>SEE RESULT</t>
|
||||
</div>
|
||||
</xpath>
|
||||
</t>
|
||||
</templates>
|
||||
Reference in New Issue
Block a user