pengyuthon

This commit is contained in:
李鹏宇
2024-10-31 20:12:01 +08:00
parent 85cf8eecae
commit 283330cfe4
28 changed files with 775 additions and 0 deletions
+1
View File
@@ -0,0 +1 @@
# -*- coding: utf-8 -*-
+50
View File
@@ -0,0 +1,50 @@
# -*- coding: utf-8 -*-
{
'name': "akl_multi_tab_plugin",
'summary': """
akl multi tab plugin for odoo""",
'description': """
akl multi tab plugin
multi tab,
multi tab theme,
odoo theme
""",
'author': 'ylhc',
'website': 'https://www.openerpnext.com',
'live_test_url': 'https://www.openerpnext.com',
'category': 'Backend/Theme',
'version': '17.0.0.3',
'license': 'OPL-1',
'images': ['static/description/banner.png',
'static/description/akl_screenshot.png'],
'depends': ['base', 'web'],
"application": False,
"installable": True,
"auto_install": False,
'price': 200.00,
'currency': 'USD',
'data': [],
'assets': {
'web.assets_backend': [
'akl_multi_tab_plugin/static/src/components/multi_tab/akl_multi_tab.scss',
'akl_multi_tab_plugin/static/src/akl_action_container.scss',
'akl_multi_tab_plugin/static/src/components/multi_tab/akl_multi_tab.js',
'akl_multi_tab_plugin/static/src/components/multi_tab/akl_multi_tab.xml',
'akl_multi_tab_plugin/static/src/akl_action_container.js',
'akl_multi_tab_plugin/static/src/akl_action_service.js',
'akl_multi_tab_plugin/static/src/akl_list_patch.js'
]
}
}
+96
View File
@@ -0,0 +1,96 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * akl_multi_tab_plugin
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-05-19 02:10+0000\n"
"PO-Revision-Date: 2023-05-19 02:10+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: akl_multi_tab_plugin
#. odoo-javascript
#: code:addons/akl_multi_tab_plugin/static/src/akl_action_service.js:0
#, python-format
msgid ""
"A popup window has been blocked. You may need to change your browser "
"settings to allow popup windows for this page."
msgstr ""
#. module: akl_multi_tab_plugin
#. odoo-javascript
#: code:addons/akl_multi_tab_plugin/static/src/components/multi_tab/akl_multi_tab.js:0
#, python-format
msgid "Close All Tabs"
msgstr "关闭所有"
#. module: akl_multi_tab_plugin
#. odoo-javascript
#: code:addons/akl_multi_tab_plugin/static/src/components/multi_tab/akl_multi_tab.js:0
#, python-format
msgid "Close Current Tab"
msgstr "关闭当前"
#. module: akl_multi_tab_plugin
#. odoo-javascript
#: code:addons/akl_multi_tab_plugin/static/src/components/multi_tab/akl_multi_tab.js:0
#, python-format
msgid "Close Other Tabs"
msgstr "关闭其它"
#. module: akl_multi_tab_plugin
#. odoo-javascript
#: code:addons/akl_multi_tab_plugin/static/src/akl_action_service.js:0
#, python-format
msgid "No view of type '%s' could be found in the current action."
msgstr ""
#. module: akl_multi_tab_plugin
#. odoo-javascript
#: code:addons/akl_multi_tab_plugin/static/src/akl_action_service.js:0
#, python-format
msgid "Report"
msgstr "报告"
#. module: akl_multi_tab_plugin
#. odoo-javascript
#: code:addons/akl_multi_tab_plugin/static/src/akl_action_service.js:0
#, python-format
msgid ""
"Unable to find Wkhtmltopdf on this system. The report will be shown in html."
msgstr ""
#. module: akl_multi_tab_plugin
#. odoo-javascript
#: code:addons/akl_multi_tab_plugin/static/src/akl_action_service.js:0
#, python-format
msgid ""
"You need to start Odoo with at least two workers to print a pdf version of "
"the reports."
msgstr ""
#. module: akl_multi_tab_plugin
#. odoo-javascript
#: code:addons/akl_multi_tab_plugin/static/src/akl_action_service.js:0
#, python-format
msgid ""
"You should upgrade your version of Wkhtmltopdf to at least 0.12.0 in order "
"to get a correct display of headers and footers as well as support for "
"table-breaking between pages."
msgstr ""
#. module: akl_multi_tab_plugin
#. odoo-javascript
#: code:addons/akl_multi_tab_plugin/static/src/akl_action_service.js:0
#, python-format
msgid ""
"Your installation of Wkhtmltopdf seems to be broken. The report will be "
"shown in html."
msgstr ""
@@ -0,0 +1,2 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_akl_multitab_plugin_akl_multitab_plugin,akl_multitab_plugin.akl_multitab_plugin,model_akl_multitab_plugin_akl_multitab_plugin,base.group_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_akl_multitab_plugin_akl_multitab_plugin akl_multitab_plugin.akl_multitab_plugin model_akl_multitab_plugin_akl_multitab_plugin base.group_user 1 1 1 1
@@ -0,0 +1,31 @@
// .akl_controller_container {
// overflow-y: hidden;
// .o_view_controller {
// display: flex;
// height: 100%;
// overflow: hidden;
// flex-direction: column;
// .o_content {
// flex: 1 1 auto;
// overflow-y: scroll;
// }
// }
// }
// .o_action {
// display: flex;
// flex-direction: column;
// flex: 1 1 auto;
// height: 100%
// }
.o_action_manager_test {
direction: ltr;
-webkit-box-flex: 1;
-webkit-flex: 1 1 auto;
flex: 1 1 auto;
height: 100%;
overflow: hidden;
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 550 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

@@ -0,0 +1,110 @@
<div class="container">
<div class="oe_styling_v8">
<div class="shadow row my-5 p-3 pb-2 overflow-hidden" style="background-color:#fbfcfd; border-radius: 5px; border: 1px solid #d2caca66;">
<div class="container">
<div class="row">
<p style="width: 100%; font-size: 18px; text-indent:1em;" class="px-sm-4 p-2">
Akl multi tab pulgin is an advanced module that allows you to create multiple tabs in your Odoo backend.
</p>
</div>
</div>
</div>
<h2 class="w-100 text-center mb-3">(Current Release V16.0.0.5 -- 2023.04.22)</h2>
<div class="shadow row my-5 p-3 pb-2 overflow-hidden"
style="background-color:#fbfcfd; border-radius: 5px; border: 1px solid #693d3d66;">
<div class="container">
<div class="pt-4" style="padding-left:20px">
<h3 style="color:#2c3782; font-weight:bold; font-size:22px" class="mb-3">Overview</h3>
</div>
<a href="https://apps.odoo.com/apps/themes/16.0/admin_theme/">
<img src="./description.gif" style="width:100%; " />
</a>
</div>
</div>
<!-- 我们的其它产品 -->
<h2 class="w-100 text-center mb-3">Our other products, Just click the image to visit</h2>
<div class="shadow row my-5 p-3 pb-2 overflow-hidden"
style="background-color:#fbfcfd; border-radius: 5px; border: 1px solid #d2caca66;">
<div class="container">
<h3 style="opacity:1; padding:10px 0px; color:#201111; letter-spacing:0.2em; text-transform:uppercase">
<b>Admin Theme</b>
</h3>
<hr class="mb-4 mt-0">
<a href="https://apps.odoo.com/apps/themes/16.0/admin_theme/">
<img src="./admin_theme.gif" class="img img-fluid mt-3" loading="lazy"/>
</a>
</div>
</div>
<div class="shadow row my-5 p-3 pb-2 overflow-hidden"
style="background-color:#fbfcfd; border-radius: 5px; border: 1px solid #d2caca66;">
<div class="container">
<div class="pt-4" style="padding-left:20px">
<h3 style="color:#2c3782; font-weight:bold; font-size:22px" class="mb-3">Awesome theme</h3>
<p style="font-weight:normal; color:#777; font-size:14px; letter-spacing:1px">
Awesome theme is a theme to enhance your product
</div>
<a href="https://apps.odoo.com/apps/themes/15.0/awesome_theme/">
<img src="./awesome_theme.gif" class="img img-fluid mt-3" loading="lazy"/>
</a>
</div>
</div>
<div class="shadow row my-5 p-3 pb-2 overflow-hidden"
style="background-color:#fbfcfd; border-radius: 5px; border: 1px solid #d2caca66;">
<div class="container">
<h3 style="opacity:1; padding:10px 0px; color:#201111; letter-spacing:0.2em; text-transform:uppercase">
<b>rubbish Modeler</b>
</h3>
<hr class="mb-4 mt-0">
<a href="https://apps.odoo.com/apps/modules/14.0/anita_modeler/">
<img src="./anita_modeler.png" class="img img-fluid mt-3" loading="lazy" />
</a>
</div>
</div>
<div class="shadow row my-5 p-3 pb-2 overflow-hidden"
style="background-color:#fbfcfd; border-radius: 5px; border: 1px solid #d2caca66;">
<div class="container">
<h3 style="opacity:1; padding:10px 0px; color:#201111; letter-spacing:0.2em; text-transform:uppercase">
<b>rubbish List</b>
</h3>
<hr class="mb-4 mt-0">
<a href="https://apps.odoo.com/apps/modules/15.0/anita_list/">
<img src="./anita_list.gif" class="img img-fluid mt-3" loading="lazy"/>
</a>
</div>
</div>
<div class="shadow row my-5 p-3 pb-2 overflow-hidden"
style="background-color:#fbfcfd; border-radius: 5px; border: 1px solid #d2caca66;">
<div class="container">
<h3 style="opacity:1; padding:10px 0px; color:#201111; letter-spacing:0.2em; text-transform:uppercase">
<b>Changelog</b>
</h3>
<div class="col-12">
<hr class="mb-4 mt-0">
<!-- 16.0.0.1 -->
<h2 class="h4 pb-2">
<span style="color:#00A09D" class="pr-2">16.0.0.1</span>-<span class="pl-2">Feb 1, 2023</span>
</h2>
<ul class="list-unstyled">
<li class="d-flex align-items-start mb-3">
<span class="badge badge-warning font-size-sm pt-1 mr-3" style="min-width:60px">update</span>
<div>first version</div>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
File diff suppressed because one or more lines are too long
@@ -0,0 +1,29 @@
.akl_controller_container {
overflow-y: hidden;
flex: 1 1 auto;
.o_view_controller {
display: flex;
height: 100%;
overflow: hidden;
flex-direction: column;
.o_content {
flex: 1 1 auto;
overflow-y: auto;
}
}
.o_action {
display: flex;
flex-direction: column;
height: 100%;
overflow: hidden;
background-color: white;
.o_content {
flex: 1 1 auto;
overflow-y: auto;
background-color: white;
}
}
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,6 @@
/** @odoo-module **/
var a0_0x5b689a=a0_0x2250;
function a0_0x445c(){var _0x598052=['prototype','2208StNOog','20OajDHW','11297UeBxIP','846246BWEOIy','496968ABTLzO','2cfhcWh','891315OhDNgy','209340slCIla','7msdRcI','8EhRpni','142691pwdXlh','486975ZdRObU'];a0_0x445c=function(){return _0x598052;};return a0_0x445c();}(function(_0x486f61,_0xa803e2){var _0x2b6a4e=a0_0x2250,_0x1ff604=_0x486f61();while(!![]){try{var _0x37856e=-parseInt(_0x2b6a4e(0xba))/0x1*(-parseInt(_0x2b6a4e(0xc2))/0x2)+-parseInt(_0x2b6a4e(0xc4))/0x3*(-parseInt(_0x2b6a4e(0xb9))/0x4)+-parseInt(_0x2b6a4e(0xbb))/0x5+-parseInt(_0x2b6a4e(0xc0))/0x6*(parseInt(_0x2b6a4e(0xc5))/0x7)+parseInt(_0x2b6a4e(0xc1))/0x8+parseInt(_0x2b6a4e(0xc3))/0x9*(parseInt(_0x2b6a4e(0xbe))/0xa)+parseInt(_0x2b6a4e(0xbf))/0xb*(-parseInt(_0x2b6a4e(0xbd))/0xc);if(_0x37856e===_0xa803e2)break;else _0x1ff604['push'](_0x1ff604['shift']());}catch(_0x493b3c){_0x1ff604['push'](_0x1ff604['shift']());}}}(a0_0x445c,0x1c15e));
function a0_0x2250(_0x53db8a,_0x46c24d){var _0x445cbc=a0_0x445c();return a0_0x2250=function(_0x22502a,_0x196500){_0x22502a=_0x22502a-0xb9;var _0x1e86bf=_0x445cbc[_0x22502a];return _0x1e86bf;},a0_0x2250(_0x53db8a,_0x46c24d);}
import {patch} from '@web/core/utils/patch';
import {ListRenderer} from '@web/views/list/list_renderer';patch(ListRenderer[a0_0x5b689a(0xbc)],{'freezeColumnWidths'(){if(!$(this['tableRef']['el'])['is'](':visible'))return;super['freezeColumnWidths'](this,arguments);}});
@@ -0,0 +1,8 @@
/** @odoo-module **/
const a0_0x1681c6=a0_0x32e2;
function a0_0x32e2(_0x1e018a,_0x4e6248){const _0x1a0fdb=a0_0x1a0f();return a0_0x32e2=function(_0x32e294,_0x124900){_0x32e294=_0x32e294-0x76;let _0x57aaee=_0x1a0fdb[_0x32e294];return _0x57aaee;},a0_0x32e2(_0x1e018a,_0x4e6248);}(function(_0x2a590c,_0x1aae1c){const _0x36da33=a0_0x32e2,_0x2df6b5=_0x2a590c();while(!![]){try{const _0x1ce317=-parseInt(_0x36da33(0x7a))/0x1*(parseInt(_0x36da33(0x87))/0x2)+-parseInt(_0x36da33(0x7c))/0x3+-parseInt(_0x36da33(0x8f))/0x4+-parseInt(_0x36da33(0x89))/0x5+-parseInt(_0x36da33(0x84))/0x6*(-parseInt(_0x36da33(0x78))/0x7)+parseInt(_0x36da33(0x9a))/0x8+parseInt(_0x36da33(0x91))/0x9;if(_0x1ce317===_0x1aae1c)break;else _0x2df6b5['push'](_0x2df6b5['shift']());}catch(_0x5edea1){_0x2df6b5['push'](_0x2df6b5['shift']());}}}(a0_0x1a0f,0x535cc));
import {Component,useRef} from '@odoo/owl';
import {Dropdown} from '@web/core/dropdown/dropdown';
function a0_0x1a0f(){const _0x5daab9=['_on_multi_tab_prev','display_name','_on_click_tab_close','962724hllhBm','close_action','17115021gRXQdN','position','close_all_action','setup','find','name','_on_multi_tab_next','left','get_menu_label','195824sQDODu','rollPage','_get_display_name','active_action','length','outerWidth','tabContainerRef','children','template','1317071zAkJHp','_close_current_action','7184zqjNpq','action_infos','1497948IOCxfc','querySelector','close_other_action','_get_cur_active_tab','each','indexOf','active','action','6DqyGMA','css','env','118vrlfVU','ref_action','3044975TBqSnX','props','current_action_info'];a0_0x1a0f=function(){return _0x5daab9;};return a0_0x1a0f();}
import {DropdownItem} from '@web/core/dropdown/dropdown_item';
export class AklMultiTab extends Component{[a0_0x1681c6(0x94)](){const _0x52c5bd=a0_0x1681c6;super[_0x52c5bd(0x94)](),this[_0x52c5bd(0xa0)]=useRef('tab_container');}[a0_0x1681c6(0x8e)](_0x3434cf){const _0x2cb209=a0_0x1681c6;this[_0x2cb209(0x8a)][_0x2cb209(0x90)](_0x3434cf);}[a0_0x1681c6(0x7f)](){const _0x33fbc4=a0_0x1681c6;if(this[_0x33fbc4(0x8b)])return this[_0x33fbc4(0x8b)];else return this[_0x33fbc4(0x7b)]['length']>0x0?this[_0x33fbc4(0x7b)][this[_0x33fbc4(0x7b)][_0x33fbc4(0x9e)]-0x1]:null;}get['action_infos'](){const _0x4e521b=a0_0x1681c6;return this[_0x4e521b(0x8a)][_0x4e521b(0x7b)];}get['current_action_info'](){const _0x42eb79=a0_0x1681c6;return this['action_infos'][_0x42eb79(0x95)](_0x26afad=>_0x26afad[_0x42eb79(0x82)]);}[a0_0x1681c6(0x99)](_0x47cf55){const _0x12c1ae=a0_0x1681c6;switch(_0x47cf55){case'Close Current Tab':return this['env']['_t']('Close Current Tab');case'Close Other Tabs':return this[_0x12c1ae(0x86)]['_t']('Close Other Tabs');case'Close All Tabs':return this['env']['_t']('Close All Tabs');}}[a0_0x1681c6(0x8c)](){const _0x572eac=a0_0x1681c6;if(this[_0x572eac(0x7b)][_0x572eac(0x9e)]==0x0)return;var _0x2fa4cd=this[_0x572eac(0x7b)][_0x572eac(0x81)](this[_0x572eac(0x8b)]);_0x2fa4cd=_0x2fa4cd-0x1;if(_0x2fa4cd<0x0){if(this[_0x572eac(0x7b)][_0x572eac(0x9e)]>0x1)_0x2fa4cd=this[_0x572eac(0x7b)]['length']-0x1;else return;}let _0x567478=this[_0x572eac(0x7b)][_0x2fa4cd];this['props']['active_action'](_0x567478),this['rollPage']('auto',_0x2fa4cd);}[a0_0x1681c6(0x97)](){const _0x4222d7=a0_0x1681c6;if(this[_0x4222d7(0x7b)][_0x4222d7(0x9e)]<=0x1)return;var _0x2a9573=this['action_infos']['indexOf'](this[_0x4222d7(0x8b)]);_0x2a9573=_0x2a9573+0x1;_0x2a9573>=this['action_infos'][_0x4222d7(0x9e)]&&(_0x2a9573=0x0);let _0x52dd07=this['action_infos'][_0x2a9573];this['props'][_0x4222d7(0x9d)](_0x52dd07),this['rollPage']('auto',_0x2a9573);}['_on_click_tab_item'](_0x1a8ef4){const _0x48c04e=a0_0x1681c6;var _0x48b327=this[_0x48c04e(0x8a)][_0x48c04e(0x7b)][_0x48c04e(0x81)](_0x1a8ef4);this[_0x48c04e(0x8a)][_0x48c04e(0x9d)](_0x1a8ef4),this[_0x48c04e(0x9b)]('auto',_0x48b327);}[a0_0x1681c6(0x79)](){const _0x5746fe=a0_0x1681c6;this[_0x5746fe(0x8b)]&&this[_0x5746fe(0x8a)][_0x5746fe(0x90)](this['current_action_info']);}['_close_other_action'](){const _0x14dfd0=a0_0x1681c6;this['current_action_info']&&this[_0x14dfd0(0x8a)][_0x14dfd0(0x7e)](this['current_action_info']);}['_close_all_action'](){const _0x10565f=a0_0x1681c6;this[_0x10565f(0x8a)][_0x10565f(0x93)]();}[a0_0x1681c6(0x9c)](_0x4c4356){const _0x387b45=a0_0x1681c6;let _0x4addda=_0x4c4356[_0x387b45(0x83)][_0x387b45(0x88)]||_0x4c4356[_0x387b45(0x83)];while(_0x4addda&&_0x4addda[_0x387b45(0x88)]&&_0x4addda[_0x387b45(0x88)]!==_0x4addda){_0x4addda=_0x4addda[_0x387b45(0x88)];}return _0x4addda[_0x387b45(0x8d)]||_0x4addda[_0x387b45(0x96)]||'New';}[a0_0x1681c6(0x9b)](_0x165669,_0x142840){const _0x297006=a0_0x1681c6;let _0x1a0f61=$(this[_0x297006(0xa0)]['el'][_0x297006(0x7d)]('.akl_page_items')),_0x3f139e=_0x1a0f61[_0x297006(0x76)]('li'),_0x4e4e68=_0x1a0f61[_0x297006(0x9f)](),_0x323ded=parseFloat(_0x1a0f61[_0x297006(0x85)]('left'));if(_0x165669==='left'){if(!_0x323ded&&_0x323ded<=0x0)return;let _0x3a549c=-_0x323ded-_0x4e4e68;_0x3f139e[_0x297006(0x80)](function(_0x5466a3,_0x5ed0ba){const _0x421ad3=_0x297006;let _0x513855=$(_0x5ed0ba),_0x739bf6=_0x513855[_0x421ad3(0x92)]()['left'];if(_0x739bf6>=_0x3a549c)return _0x1a0f61[_0x421ad3(0x85)]('left',-_0x739bf6),![];});}else{if(_0x165669==='auto'){let _0x367137=_0x3f139e['eq'](_0x142840);if(!_0x367137[0x0])return;;let _0x48dfa2=_0x367137[_0x297006(0x92)]()[_0x297006(0x98)];if(_0x48dfa2<-_0x323ded)return _0x1a0f61[_0x297006(0x85)]('left',-_0x48dfa2);if(_0x48dfa2+_0x367137['outerWidth']()>=_0x4e4e68-_0x323ded){let _0x49a814=_0x48dfa2+_0x367137[_0x297006(0x9f)]()-(_0x4e4e68-_0x323ded);_0x3f139e[_0x297006(0x80)](function(_0x6de8d0,_0x3b8397){const _0x57629b=_0x297006;let _0x287525=$(_0x3b8397),_0x4d3d11=_0x287525[_0x57629b(0x92)]()['left'];if(_0x4d3d11+_0x323ded>0x0){if(_0x4d3d11-_0x323ded>_0x49a814)return _0x1a0f61['css']('left',-_0x4d3d11),![];}});}}else _0x3f139e[_0x297006(0x80)](function(_0x4a76e1,_0x2bc12c){const _0x7a02db=_0x297006;let _0x1d7964=$(_0x2bc12c),_0x497596=_0x1d7964['position']()['left'];if(_0x497596+_0x1d7964['outerWidth']()>=_0x4e4e68-_0x323ded)return _0x1a0f61[_0x7a02db(0x85)]('left',-_0x497596),![];});}}};AklMultiTab[a0_0x1681c6(0x8a)]={'action_infos':{'type':Array},'close_action':{'type':Function},'active_action':{'type':Function},'close_other_action':{'type':Function},'close_all_action':{'type':Function}},AklMultiTab['components']={'Dropdown':Dropdown,'DropdownItem':DropdownItem},AklMultiTab[a0_0x1681c6(0x77)]='akl_multi_tab.tab';
@@ -0,0 +1,299 @@
.akl_multi_tab_container {
line-height: 40px;
background-color: #fff;
border-bottom: 1px solid #dee2e6;
box-sizing: border-box;
z-index: 3;
.akl_multi_tab {
position: relative;
padding: 0 80px 0 40px;
height: 40px;
display: flex;
flex-direction: row;
box-sizing: border-box;
.akl_tab_scroll {
width: 100%;
height: 100%;
overflow: hidden;
.akl_page_items {
position: relative;
left: 0px;
;
height: 100%;
flex: 1 1 auto;
background: rgb(255, 255, 255);
overflow: visible;
white-space: nowrap;
padding: 0px;
li {
display: inline-block;
*display: inline;
*zoom: 1;
vertical-align: middle;
font-size: 14px;
transition: all .2s;
-webkit-transition: all .2s;
min-width: 65px;
padding: 0 15px;
text-align: center;
cursor: pointer;
line-height: 40px;
max-width: 160px;
text-overflow: ellipsis;
padding-right: 40px;
overflow: hidden;
border-right: 1px solid #f6f6f6;
vertical-align: top;
position: relative;
white-space: nowrap;
padding: 0px 30px 0px 10px;
user-select: none;
&::after {
content: '';
position: absolute;
top: 0;
left: 0;
width: 0;
height: 2px;
border-radius: 0;
background-color: #292B34;
transition: all .3s;
-webkit-transition: all .3s;
}
&.akl_multi_tab_active {
&::after {
width: 100%;
}
}
&:hover {
background-color: #f6f6f6;
&::after {
width: 100%;
}
}
.akl_tab_close {
position: absolute;
right: 8px;
top: 50%;
margin: -8px 0 0 0;
width: 16px;
height: 16px;
line-height: 16px;
border-radius: 50%;
font-size: 12px;
&:first {
display: none;
}
&:hover {
background-color: #FF5722;
color: #fff;
}
svg {
margin-top: -2px;
}
}
&.active {
background-color: #f6f6f6;
}
}
}
}
.akl_tab_control {
width: 40px;
height: 100%;
text-align: center;
cursor: pointer;
transition: all .3s;
-webkit-transition: all .3s;
box-sizing: border-box;
border-left: 1px solid #f6f6f6;
&:hover {
background-color: #f6f6f6;
}
}
.akl_icon_prev {
border-right: 1px solid #f6f6f6;
color: #666;
line-height: 40px;
margin: 0;
padding: 0;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
-webkit-font-smoothing: antialiased;
-webkit-transition: all .3s;
font-size: 16px;
font-style: normal;
position: absolute;
top: 0;
left: 0;
width: 40px;
height: 100%;
text-align: center;
cursor: pointer;
box-sizing: border-box;
border-left: none;
border-right: 1px solid #f6f6f6;
}
.akl_icon_next {
border-right: 1px solid #f6f6f6;
color: #666;
line-height: 40px;
margin: 0;
padding: 0;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
font-family: layui-icon !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
position: absolute;
top: 0;
width: 40px;
height: 100%;
text-align: center;
cursor: pointer;
-webkit-transition: all .3s;
box-sizing: border-box;
border-left: 1px solid #f6f6f6;
right: 40px;
}
.akl_icon_down {
//right: 1px;
color: #666;
line-height: 40px;
margin: 0;
padding: 0;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
-webkit-transition: all .3s;
font-family: layui-icon !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
position: absolute;
top: 0;
width: 40px;
height: 100%;
text-align: center;
cursor: pointer;
box-sizing: border-box;
border-left: 1px solid #f6f6f6;
right: 0;
.dropdown-toggle {
width: 100%;
height: 100%;
background: none;
border: none;
}
.dropdown-menu {
.dropdown-item {
line-height: 30px;
}
}
}
.akl_multi_tab_active {
background-color: #f6f6f6;
&::after {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 2px;
border-radius: 0;
background-color: #292B34;
transition: all .3s;
-webkit-transition: all .3s;
}
}
}
.dropdown-menu {
z-index: 1000;
}
}
.o_action_manager {
display: flex;
flex-direction: column;
.akl_tab_page_container {
display: flex;
flex-direction: column;
overflow: hidden;
flex: 1 1 auto;
// > div {
// flex: 1 1 auto;
// overflow: auto;
// display: flex;
// flex-direction: column;
// }
.o_view_controller {
display: flex;
flex: 1 1 auto;
flex-direction: column;
overflow: hidden;
height: 100%;
.o_content {
overflow: auto;
}
}
}
}
.o_home_menu_background {
.akl_multi_tab_container {
display: none !important;
}
}
[name='product_template_id'] {
div, span {
width: 100% !important;
display: block !important;
}
span {
white-space: pre-wrap !important;
word-break: break-all !important;
text-overflow: initial !important;
}
}
td[name='product_id'] {
white-space: pre-wrap !important;
word-break: break-all !important;
text-overflow: initial !important;
}
@@ -0,0 +1,68 @@
<?xml version="1.0" encoding="UTF-8"?>
<templates id="template" xml:space="preserve">
<t t-name="akl_multi_tab.tab" owl="1">
<div class="akl_multi_tab_container">
<div class="akl_multi_tab">
<div class="akl_tab_control akl_icon_prev" t-on-click.stop="_on_multi_tab_prev">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20"
height="20">
<path d="M269.25 512l271.53-271.53a32 32 0 0 0-45.25-45.25L201.37 489.38a32 32 0 0 0 0 45.25l294.16 294.16a32 32 0 0 0 45.25-45.25z"
fill="#adb5bd"/>
<path d="M551.1 512l271.53-271.53a32 32 0 0 0-45.26-45.25L483.22 489.38a32 32 0 0 0 0 45.25l294.15 294.16a32 32 0 1 0 45.26-45.25z"
fill="#adb5bd"/>
</svg>
</div>
<div class="akl_tab_control akl_icon_next" t-on-click.stop="_on_multi_tab_next">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20"
height="20">
<path d="M483.22 240.47L754.73 512 483.22 783.53a32 32 0 0 0 45.25 45.25l294.15-294.15a32 32 0 0 0 0-45.26L528.47 195.22a32 32 0 0 0-45.25 45.25z"
fill="#adb5bd"/>
<path d="M540.78 534.63a32 32 0 0 0 0-45.26L246.63 195.22a32 32 0 0 0-45.25 45.25L472.89 512 201.38 783.53a32 32 0 0 0 45.25 45.25z"
fill="#adb5bd"/>
</svg>
</div>
<Dropdown class="'akl_tab_control akl_icon_down'" position="'bottom-end'">
<t t-set-slot="toggler">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20"
height="20">
<path fill="#adb5bd"
d="M830.24 340.688l11.328 11.312a16 16 0 0 1 0 22.624L530.448 685.76a16 16 0 0 1-22.64 0L196.688 374.624a16 16 0 0 1 0-22.624l11.312-11.312a16 16 0 0 1 22.624 0l288.496 288.496 288.512-288.496a16 16 0 0 1 22.624 0z"/>
</svg>
</t>
<DropdownItem class="'akl_close_cur_tab'" onSelected="() => this._close_current_action()">
Close Current Tab
</DropdownItem>
<DropdownItem class="'akl_close_other_tabs'" onSelected="() => this._close_other_action()">
Close Other Tabs
</DropdownItem>
<DropdownItem class="'akl_close_all_tabs'" onSelected="() => this._close_all_action()">
Close All Tabs
</DropdownItem>
</Dropdown>
<div class="akl_tab_scroll">
<ul class="akl_page_items tab_container" t-ref="tab_container">
<li t-foreach="props.action_infos"
t-as="action_info"
t-if="action_info.id"
t-key="action_info.id"
t-att-class="{'active': action_info.active, 'akl_page_tab_item': true}"
t-on-click.stop="() => this._on_click_tab_item(action_info)">
<span><t t-esc="_get_display_name(action_info)" /></span>
<span class="akl_tab_close" t-on-click.stop="() => this._on_click_tab_close(action_info)">
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="14"
height="14">
<path d="M556.8 512l265.6-265.6c12.8-12.8 12.8-32 0-44.8s-32-12.8-44.8 0L512 467.2 246.4 201.6c-12.8-12.8-32-12.8-44.8 0s-12.8 32 0 44.8l265.6 265.6-265.6 265.6c-12.8 12.8-12.8 32 0 44.8 6.4 6.4 12.8 9.6 22.4 9.6s16-3.2 22.4-9.6l265.6-265.6 265.6 265.6c6.4 6.4 16 9.6 22.4 9.6s16-3.2 22.4-9.6c12.8-12.8 12.8-32 0-44.8L556.8 512z"
fill="#bfbfbf"/>
</svg>
</span>
</li>
</ul>
</div>
</div>
</div>
</t>
</templates>