diff --git a/README.md b/README.md index 14b24469a06a..4516f3b2344b 100644 --- a/README.md +++ b/README.md @@ -65,6 +65,7 @@ addon | version | maintainers | summary [web_widget_numeric_step](web_widget_numeric_step/) | 18.0.1.0.2 | rafaelbn yajo | Web Widget Numeric Step [web_widget_one2many_tree_line_duplicate](web_widget_one2many_tree_line_duplicate/) | 18.0.1.0.0 | | Web Widget One2many Tree Line Duplicate [web_widget_open_tab](web_widget_open_tab/) | 18.0.1.0.0 | | Allow to open record from trees on new tab from tree views +[web_widget_popover](web_widget_popover/) | 18.0.1.0.0 | ivantodorovich | Render an icon that displays the field content in a popover [web_widget_product_label_section_and_note_name_visibility](web_widget_product_label_section_and_note_name_visibility/) | 18.0.1.0.1 | carlos-lopez-tecnativa | Alternate the visibility of the product and description. [web_widget_url_advanced](web_widget_url_advanced/) | 18.0.1.0.0 | | This module extends URL widget for displaying anchors with custom labels. [web_widget_x2many_2d_matrix](web_widget_x2many_2d_matrix/) | 18.0.2.0.2 | JasminSForgeFlow DavidJForgeFlow hbrunn | Show list fields as a matrix diff --git a/setup/_metapackage/pyproject.toml b/setup/_metapackage/pyproject.toml index 59f91211c923..278f6846d4cf 100644 --- a/setup/_metapackage/pyproject.toml +++ b/setup/_metapackage/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "odoo-addons-oca-web" -version = "18.0.20251023.0" +version = "18.0.20251104.0" dependencies = [ "odoo-addon-web_calendar_slot_duration==18.0.*", "odoo-addon-web_chatter_position==18.0.*", @@ -46,6 +46,7 @@ dependencies = [ "odoo-addon-web_widget_numeric_step==18.0.*", "odoo-addon-web_widget_one2many_tree_line_duplicate==18.0.*", "odoo-addon-web_widget_open_tab==18.0.*", + "odoo-addon-web_widget_popover==18.0.*", "odoo-addon-web_widget_product_label_section_and_note_name_visibility==18.0.*", "odoo-addon-web_widget_url_advanced==18.0.*", "odoo-addon-web_widget_x2many_2d_matrix==18.0.*", diff --git a/web_form_banner/i18n/it.po b/web_form_banner/i18n/it.po index 98a1d186dbeb..dacbb4b7fd3a 100644 --- a/web_form_banner/i18n/it.po +++ b/web_form_banner/i18n/it.po @@ -6,18 +6,20 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 18.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2025-11-05 16:42+0000\n" +"Last-Translator: mymage \n" "Language-Team: none\n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.10.4\n" #. module: web_form_banner #: model_terms:ir.ui.view,arch_db:web_form_banner.view_web_form_banner_rule_form msgid "//sheet" -msgstr "" +msgstr "//foglio" #. module: web_form_banner #: model_terms:ir.ui.view,arch_db:web_form_banner.view_web_form_banner_rule_form @@ -25,6 +27,8 @@ msgid "" "context_today(ts=None): User-timezone “today” (date) for " "reliable date comparisons." msgstr "" +"context_today(ts=None): Fuso orario utente “oggi” (data) per " +"comparazione data affidabile." #. module: web_form_banner #: model_terms:ir.ui.view,arch_db:web_form_banner.view_web_form_banner_rule_form @@ -32,6 +36,8 @@ msgid "" "ctx: Copy of the current context " "(dict(env.context))." msgstr "" +"ctx: Copia del contesto attuale " +"(dict(env.context))." #. module: web_form_banner #: model_terms:ir.ui.view,arch_db:web_form_banner.view_web_form_banner_rule_form @@ -39,6 +45,9 @@ msgid "" "current_id: Integer id of the record being edited, or False if the form\n" " is creating a new record." msgstr "" +"current_id: ID intero del record in modifica o False se il modulo\n" +" sta creando un nuovo rerord." #. module: web_form_banner #: model_terms:ir.ui.view,arch_db:web_form_banner.view_web_form_banner_rule_form @@ -46,6 +55,8 @@ msgid "" "dateutil: { \"parser\": dateutil.parser, " "\"relativedelta\": dateutil.relativedelta }" msgstr "" +"dateutil: { \"parser\": dateutil.parser, \"relativedelta\"" +": dateutil.relativedelta }" #. module: web_form_banner #: model_terms:ir.ui.view,arch_db:web_form_banner.view_web_form_banner_rule_form @@ -56,11 +67,20 @@ msgid "" " update to a trigger field. It doesn't include any values from complex fields\n" " (one2many/reference, etc)." msgstr "" +"bozza: i valori dei campi persistenti del record ORM (prima " +"dell'applicazione \n" +" delle modifiche non salvate del modulo " +"corrente) + le modifiche non salvate correnti sui campi trigger.\n" +" Da utilizzare al posto di record quando la regola viene attivata dinamicamente da un\n" +" aggiornamento a un campo trigger. Non " +"include valori provenienti da campi complessi\n" +" (one2many/reference, ecc.)." #. module: web_form_banner #: model_terms:ir.ui.view,arch_db:web_form_banner.view_web_form_banner_rule_form msgid "env: Odoo environment for ORM access." -msgstr "" +msgstr "env: ambiente Odoo per accesso ORM." #. module: web_form_banner #: model_terms:ir.ui.view,arch_db:web_form_banner.view_web_form_banner_rule_form @@ -69,6 +89,9 @@ msgid "" "float_round: Odoo float utils for precision-safe " "comparisons/rounding." msgstr "" +"float_compare, float_is_zero, " +"float_round: utilità decimali Odoo per comparazione sicura / " +"arrotondamento." #. module: web_form_banner #: model_terms:ir.ui.view,arch_db:web_form_banner.view_web_form_banner_rule_form @@ -76,21 +99,23 @@ msgid "" "model: Shortcut to the current model " "(env[record._name])." msgstr "" +"model: scorciatoia al modello attuale (env[record._name]" +")." #. module: web_form_banner #: model_terms:ir.ui.view,arch_db:web_form_banner.view_web_form_banner_rule_form msgid "record: Current record (the form's record)." -msgstr "" +msgstr "record: record attuale (il record della maschera)." #. module: web_form_banner #: model_terms:ir.ui.view,arch_db:web_form_banner.view_web_form_banner_rule_form msgid "time, datetime: Standard Python time/datetime modules." -msgstr "" +msgstr "time, datetime: moduli orario/dataoraraio Python standard." #. module: web_form_banner #: model_terms:ir.ui.view,arch_db:web_form_banner.view_web_form_banner_rule_form msgid "timezone: pytz.timezone for TZ handling." -msgstr "" +msgstr "timezone: pytz.timezone per gestione FO." #. module: web_form_banner #: model_terms:ir.ui.view,arch_db:web_form_banner.view_web_form_banner_rule_form @@ -98,120 +123,122 @@ msgid "" "url_for(obj): Helper that returns a backend form URL for " "obj." msgstr "" +"url_for(obj): aiuto che restituisce una maschera backend per " +"obj." #. module: web_form_banner #: model_terms:ir.ui.view,arch_db:web_form_banner.view_web_form_banner_rule_form msgid "user: Current user (env.user)." -msgstr "" +msgstr "user: utente attuale (env.user)." #. module: web_form_banner #: model:ir.model.fields,field_description:web_form_banner.field_web_form_banner_rule__active msgid "Active" -msgstr "" +msgstr "Attivo" #. module: web_form_banner #: model:ir.model.fields.selection,name:web_form_banner.selection__web_form_banner_rule__position__after msgid "After target" -msgstr "" +msgstr "Dopo l'obiettivo" #. module: web_form_banner #: model_terms:ir.ui.view,arch_db:web_form_banner.view_web_form_banner_rule_form #: model_terms:ir.ui.view,arch_db:web_form_banner.view_web_form_banner_rule_search msgid "Archived" -msgstr "" +msgstr "In archivio" #. module: web_form_banner #: model_terms:ir.ui.view,arch_db:web_form_banner.view_web_form_banner_rule_form msgid "Available evaluation context variables are as follows:" -msgstr "" +msgstr "Le valutazioni delle variabili di contesto disponibili sono come segue:" #. module: web_form_banner #: model:ir.model,name:web_form_banner.model_base msgid "Base" -msgstr "" +msgstr "Base" #. module: web_form_banner #: model:ir.model.fields.selection,name:web_form_banner.selection__web_form_banner_rule__position__before msgid "Before target" -msgstr "" +msgstr "Prima dell'obiettivo" #. module: web_form_banner #: model:ir.model.fields,field_description:web_form_banner.field_web_form_banner_rule__create_uid msgid "Created by" -msgstr "" +msgstr "Creato da" #. module: web_form_banner #: model:ir.model.fields,field_description:web_form_banner.field_web_form_banner_rule__create_date msgid "Created on" -msgstr "" +msgstr "Creato il" #. module: web_form_banner #: model:ir.model.fields.selection,name:web_form_banner.selection__web_form_banner_rule__severity__danger msgid "Danger" -msgstr "" +msgstr "Pericolo" #. module: web_form_banner #: model:ir.model.fields,field_description:web_form_banner.field_web_form_banner_rule__severity #: model_terms:ir.ui.view,arch_db:web_form_banner.view_web_form_banner_rule_search msgid "Default Severity" -msgstr "" +msgstr "Gravità predefinita" #. module: web_form_banner #: model:ir.model.fields,help:web_form_banner.field_web_form_banner_rule__severity msgid "Default severity level, can be overridden per-record." -msgstr "" +msgstr "Il livello di gravità predefinito può essere sovrascritto per record." #. module: web_form_banner #: model:ir.model.fields,field_description:web_form_banner.field_web_form_banner_rule__display_name msgid "Display Name" -msgstr "" +msgstr "Nome visualizzato" #. module: web_form_banner #: model_terms:ir.ui.view,arch_db:web_form_banner.view_web_form_banner_rule_form msgid "Example of Message Value Code (model: sale.order)" -msgstr "" +msgstr "Esempio di codice valore messaggio (model: sale.order)" #. module: web_form_banner #: model:ir.model,name:web_form_banner.model_web_form_banner_rule #: model_terms:ir.ui.view,arch_db:web_form_banner.view_web_form_banner_rule_form msgid "Form Banner Rule" -msgstr "" +msgstr "Regola banner maschera" #. module: web_form_banner #: model:ir.actions.act_window,name:web_form_banner.action_web_form_banner_rule #: model:ir.ui.menu,name:web_form_banner.menu_web_form_banner_rules msgid "Form Banner Rules" -msgstr "" +msgstr "Regole banner maschera" #. module: web_form_banner #: model:ir.model.fields,help:web_form_banner.field_web_form_banner_rule__view_ids msgid "Form view where the banner should be injected." -msgstr "" +msgstr "Vista maschera dove deve essere iniettato il banner." #. module: web_form_banner #: model_terms:ir.ui.view,arch_db:web_form_banner.view_web_form_banner_rule_search msgid "Group By" -msgstr "" +msgstr "Raggruppa per" #. module: web_form_banner #: model:ir.model.fields,field_description:web_form_banner.field_web_form_banner_rule__message_is_html msgid "HTML" -msgstr "" +msgstr "HTML" #. module: web_form_banner #: model_terms:ir.ui.view,arch_db:web_form_banner.view_web_form_banner_rule_form msgid "Help" -msgstr "" +msgstr "Aiuto" #. module: web_form_banner #: model_terms:ir.ui.view,arch_db:web_form_banner.view_web_form_banner_rule_form msgid "Help for Message Valude Code" -msgstr "" +msgstr "Aiuto per codice valore messaggio" #. module: web_form_banner #: model:ir.model.fields,field_description:web_form_banner.field_web_form_banner_rule__id msgid "ID" -msgstr "" +msgstr "ID" #. module: web_form_banner #: model:ir.model.fields,help:web_form_banner.field_web_form_banner_rule__message_is_html @@ -219,16 +246,19 @@ msgid "" "If checked, 'message' is treated as raw HTML (no escaping). If not checked, " "the rendered text is escaped and newlines become
." msgstr "" +"Se selezionata, 'message' è trattato come HTML grezzo (senza escape). Se non " +"selezionata, il testo reso usa gli escape e i newline diventano
." #. module: web_form_banner #: model:ir.model.fields,help:web_form_banner.field_web_form_banner_rule__trigger_field_ids msgid "If set, the banner recomputes live when any of these fields change." msgstr "" +"Se impostato, il banner ricalcola al volo quando cambia uno di questi campi." #. module: web_form_banner #: model:ir.model.fields.selection,name:web_form_banner.selection__web_form_banner_rule__severity__info msgid "Info" -msgstr "" +msgstr "Informazioni" #. module: web_form_banner #. odoo-python @@ -237,48 +267,50 @@ msgid "" "Invalid XPath:\n" "%s" msgstr "" +"XPath non valido:\n" +"%s" #. module: web_form_banner #: model:ir.model.fields,field_description:web_form_banner.field_web_form_banner_rule__write_uid msgid "Last Updated by" -msgstr "" +msgstr "Ultimo aggiornamento di" #. module: web_form_banner #: model:ir.model.fields,field_description:web_form_banner.field_web_form_banner_rule__write_date msgid "Last Updated on" -msgstr "" +msgstr "Ultimo aggiornamento il" #. module: web_form_banner #: model:ir.model.fields,field_description:web_form_banner.field_web_form_banner_rule__message msgid "Message" -msgstr "" +msgstr "Messaggio" #. module: web_form_banner #: model:ir.model.fields,field_description:web_form_banner.field_web_form_banner_rule__message_value_code #: model_terms:ir.ui.view,arch_db:web_form_banner.view_web_form_banner_rule_form msgid "Message Value Code" -msgstr "" +msgstr "Codice valore messaggio" #. module: web_form_banner #: model:ir.model.fields,field_description:web_form_banner.field_web_form_banner_rule__model_id #: model_terms:ir.ui.view,arch_db:web_form_banner.view_web_form_banner_rule_search msgid "Model" -msgstr "" +msgstr "Modello" #. module: web_form_banner #: model:ir.model.fields,field_description:web_form_banner.field_web_form_banner_rule__model_name msgid "Model Name" -msgstr "" +msgstr "Nome modello" #. module: web_form_banner #: model:ir.model.fields,field_description:web_form_banner.field_web_form_banner_rule__name msgid "Name" -msgstr "" +msgstr "Nome" #. module: web_form_banner #: model:ir.model.fields,field_description:web_form_banner.field_web_form_banner_rule__position msgid "Position" -msgstr "" +msgstr "Posizione" #. module: web_form_banner #: model:ir.model.fields,help:web_form_banner.field_web_form_banner_rule__message_value_code @@ -287,66 +319,70 @@ msgid "" "Keys: visible(bool, default True), severity(str), values(dict for ${...} in \n" "message), and/or html(str) to override template rendering." msgstr "" +"Espressione Python valutata lato server. Deve restituire un dizionario.\n" +"Chiavi: visible(bool, predefinito True), severity(str), values(dict per " +"${...} in\n" +"message) e/o html(str) per sovrascrivere il rendering del template." #. module: web_form_banner #: model_terms:ir.ui.view,arch_db:web_form_banner.view_web_form_banner_rule_form msgid "Recompute on change (new forms)" -msgstr "" +msgstr "Ricalcola alla modifica (nuove maschere)" #. module: web_form_banner #: model:ir.model.fields,field_description:web_form_banner.field_web_form_banner_rule__sequence msgid "Sequence" -msgstr "" +msgstr "Sequenza" #. module: web_form_banner #: model:web.form.banner.rule,message:web_form_banner.demo_rule_partner_tag_missing msgid "Tag is missing!" -msgstr "" +msgstr "Manca l'etichetta!" #. module: web_form_banner #: model:ir.model.fields,field_description:web_form_banner.field_web_form_banner_rule__target_xpath msgid "Target XPath" -msgstr "" +msgstr "XPath obiettivo" #. module: web_form_banner #: model:ir.model.fields,help:web_form_banner.field_web_form_banner_rule__message msgid "Template with ${placeholders}. If not HTML, it will be escaped." -msgstr "" +msgstr "Modello con ${placeholders}. Se non HTML, si attiverà l'escape." #. module: web_form_banner #: model_terms:ir.ui.view,arch_db:web_form_banner.view_web_form_banner_rule_form msgid "This is a ${severity} message." -msgstr "" +msgstr "Questo è un messaggio ${severity}." #. module: web_form_banner #: model:web.form.banner.rule,message:web_form_banner.demo_rule_partner_email_missing msgid "This partner is missing email!" -msgstr "" +msgstr "A questo partner manca l'e-mail!" #. module: web_form_banner #: model:ir.model.fields,field_description:web_form_banner.field_web_form_banner_rule__trigger_field_ids msgid "Trigger Fields" -msgstr "" +msgstr "Campi attivazione" #. module: web_form_banner #: model:ir.model.fields,field_description:web_form_banner.field_web_form_banner_rule__view_ids msgid "Views" -msgstr "" +msgstr "Viste" #. module: web_form_banner #: model:ir.model.fields.selection,name:web_form_banner.selection__web_form_banner_rule__severity__warning msgid "Warning" -msgstr "" +msgstr "Attenzione" #. module: web_form_banner #: model:ir.model.fields,help:web_form_banner.field_web_form_banner_rule__position msgid "Where to insert the placeholder relative to the first matched node." -msgstr "" +msgstr "Dove inserire il segnaposto relativo al primo nodo corrispondente." #. module: web_form_banner #: model:ir.model.fields,help:web_form_banner.field_web_form_banner_rule__target_xpath msgid "XPath of the node to insert the banner." -msgstr "" +msgstr "XPath del nodo in cui inserire il banner." #. module: web_form_banner #: model_terms:ir.ui.view,arch_db:web_form_banner.view_web_form_banner_rule_form @@ -361,13 +397,23 @@ msgid "" "else:\n" " result = {\"visible\": False}" msgstr "" +"domain = [(\"partner_id\", \"=\", draft.partner_id.id)]\n" +"if record_id:\n" +" domain += [(\"id\", \"<\", record_id)]\n" +"last = model.search(domain, order=\"date_order desc, id desc\", limit=1)\n" +"if last:\n" +" html = \"<strong>Ordine precedente:</strong> <a " +"href='%s'>%s</a>\" % (url_for(last), last.name)\n" +" result = {\"visible\": True, \"html\": html}\n" +"else:\n" +" result = {\"visible\": False}" #. module: web_form_banner #: model_terms:ir.ui.view,arch_db:web_form_banner.view_web_form_banner_rule_form msgid "e.g. Warning on dangerous customers" -msgstr "" +msgstr "es. Attenzione su clienti pericolosi" #. module: web_form_banner #: model_terms:ir.ui.view,arch_db:web_form_banner.view_web_form_banner_rule_tree msgid "return {'visible': True, 'values': {'title': '...'}}" -msgstr "" +msgstr "return {'visible': True, 'values': {'title': '...'}}" diff --git a/web_responsive/i18n/it.po b/web_responsive/i18n/it.po index b3680b446220..ddebaa3be81f 100644 --- a/web_responsive/i18n/it.po +++ b/web_responsive/i18n/it.po @@ -6,15 +6,15 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 17.0\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-07-18 06:35+0000\n" -"Last-Translator: mymage \n" +"PO-Revision-Date: 2025-11-05 19:42+0000\n" +"Last-Translator: Sergio Zanchetta \n" "Language-Team: none\n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.6.2\n" +"X-Generator: Weblate 5.10.4\n" #. module: web_responsive #. odoo-javascript @@ -28,24 +28,24 @@ msgstr "Azione" #: code:addons/web_responsive/static/src/components/menu_canonical_searchbar/searchbar.xml:0 #, python-format msgid "App Icon" -msgstr "Icona app" +msgstr "Icona applicazione" #. module: web_responsive #: model:ir.actions.act_window,name:web_responsive.res_users_view_form_apps_menu_preferences_action msgid "Apps Menu Preferences" -msgstr "Preferenze menu app" +msgstr "Preferenze menu applicazioni" #. module: web_responsive #: model:ir.model.fields,field_description:web_responsive.field_res_users__apps_menu_search_type #: model_terms:ir.ui.view,arch_db:web_responsive.res_users_view_form_apps_menu_preferences msgid "Apps Menu Search Type" -msgstr "Tipo ricerca menu app" +msgstr "Tipo ricerca menu applicazioni" #. module: web_responsive #: model:ir.model.fields,field_description:web_responsive.field_res_users__apps_menu_theme #: model_terms:ir.ui.view,arch_db:web_responsive.res_users_view_form_apps_menu_preferences msgid "Apps Menu Theme" -msgstr "Tema menu app" +msgstr "Tema menu applicazioni" #. module: web_responsive #: model:ir.model.fields.selection,name:web_responsive.selection__res_users__apps_menu_search_type__canonical @@ -57,7 +57,7 @@ msgstr "Canonico" #: model:ir.model.fields.selection,name:web_responsive.selection__res_users__apps_menu_search_type__command_palette #: model_terms:ir.ui.view,arch_db:web_responsive.res_users_view_form_apps_menu_preferences msgid "Command Palette" -msgstr "Tavolozza controllo" +msgstr "Palette comandi" #. module: web_responsive #: model:ir.model.fields.selection,name:web_responsive.selection__res_users__apps_menu_theme__community @@ -82,7 +82,7 @@ msgstr "Uscita" #: model:ir.model.fields.selection,name:web_responsive.selection__res_users__apps_menu_search_type__fuse #: model_terms:ir.ui.view,arch_db:web_responsive.res_users_view_form_apps_menu_preferences msgid "Fuse" -msgstr "Fondi" +msgstr "Ricerca fuzzy" #. module: web_responsive #: model:ir.model,name:web_responsive.model_ir_http @@ -134,7 +134,7 @@ msgstr "Nuovo" #: code:addons/web_responsive/static/src/components/menu_canonical_searchbar/searchbar.xml:0 #, python-format msgid "Nothing to show" -msgstr "Nulla da visualizzare" +msgstr "Nulla da mostrare" #. module: web_responsive #: model:ir.model.fields,field_description:web_responsive.field_res_users__is_redirect_home @@ -161,7 +161,7 @@ msgstr "Tipo ricerca" #. module: web_responsive #: model_terms:ir.ui.view,arch_db:web_responsive.res_users_view_form_apps_menu_preferences msgid "Search Type Help" -msgstr "Aiuto tipo ricerca" +msgstr "Aiuto per tipo ricerca" #. module: web_responsive #. odoo-javascript @@ -169,7 +169,7 @@ msgstr "Aiuto tipo ricerca" #: code:addons/web_responsive/static/src/components/menu_odoo_searchbar/searchbar.xml:0 #, python-format msgid "Search menus..." -msgstr "Menù ricerca..." +msgstr "Ricerca menu..." #. module: web_responsive #. odoo-javascript @@ -191,14 +191,14 @@ msgstr "Utente" #. module: web_responsive #: model_terms:ir.ui.view,arch_db:web_responsive.res_users_view_form_apps_menu_preferences msgid "a new search algorithm is used" -msgstr "è stato utilizzato un nuovo algoritmo di ricerca" +msgstr "viene utilizzato un algoritmo di ricerca innovativo" #. module: web_responsive #: model_terms:ir.ui.view,arch_db:web_responsive.res_users_view_form_apps_menu_preferences msgid "the standard odoo search tool" -msgstr "lo strumento di ricerca standard Odoo" +msgstr "strumento di ricerca standard Odoo" #. module: web_responsive #: model_terms:ir.ui.view,arch_db:web_responsive.res_users_view_form_apps_menu_preferences msgid "uses a standard algorithm" -msgstr "usa un algoritmo standard" +msgstr "utilizza un algoritmo standard" diff --git a/web_widget_popover/README.rst b/web_widget_popover/README.rst new file mode 100644 index 000000000000..22453619ee9b --- /dev/null +++ b/web_widget_popover/README.rst @@ -0,0 +1,104 @@ +.. image:: https://odoo-community.org/readme-banner-image + :target: https://odoo-community.org/get-involved?utm_source=readme + :alt: Odoo Community Association + +================== +Web Widget Popover +================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:e85087d8c8563b533d661d4388f5344a47a389b3dae799dbdc9bc53d6977cc77 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fweb-lightgray.png?logo=github + :target: https://github.com/OCA/web/tree/18.0/web_widget_popover + :alt: OCA/web +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/web-18-0/web-18-0-web_widget_popover + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/web&target_branch=18.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +The field will be rendered as a simple icon, that when hovered will +display the field content as a tooltip. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +Use the ``popover`` widget on ``Char`` or ``Text`` fields. + +.. code:: xml + + + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +------- + +* Camptocamp + +Contributors +------------ + +- Iván Todorovich + +Maintainers +----------- + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +.. |maintainer-ivantodorovich| image:: https://github.com/ivantodorovich.png?size=40px + :target: https://github.com/ivantodorovich + :alt: ivantodorovich + +Current `maintainer `__: + +|maintainer-ivantodorovich| + +This module is part of the `OCA/web `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/web_widget_popover/__init__.py b/web_widget_popover/__init__.py new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/web_widget_popover/__manifest__.py b/web_widget_popover/__manifest__.py new file mode 100644 index 000000000000..324d314cf577 --- /dev/null +++ b/web_widget_popover/__manifest__.py @@ -0,0 +1,20 @@ +# Copyright 2025 Camptocamp SA (https://www.camptocamp.com). +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +{ + "name": "Web Widget Popover", + "summary": "Render an icon that displays the field content in a popover", + "version": "18.0.1.0.0", + "author": "Camptocamp, Odoo Community Association (OCA)", + "maintainers": ["ivantodorovich"], + "website": "https://github.com/OCA/web", + "license": "AGPL-3", + "category": "Web", + "depends": ["web"], + "assets": { + "web.assets_backend": [ + "web_widget_popover/static/src/**/*.js", + "web_widget_popover/static/src/**/*.xml", + ], + }, +} diff --git a/web_widget_popover/i18n/it.po b/web_widget_popover/i18n/it.po new file mode 100644 index 000000000000..b0d0c9c007c8 --- /dev/null +++ b/web_widget_popover/i18n/it.po @@ -0,0 +1,33 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_widget_popover +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 18.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. module: web_widget_popover +#. odoo-javascript +#: code:addons/web_widget_popover/static/src/popover.esm.js:0 +msgid "FontAwesome icon to display" +msgstr "" + +#. module: web_widget_popover +#. odoo-javascript +#: code:addons/web_widget_popover/static/src/popover.esm.js:0 +msgid "Icon" +msgstr "" + +#. module: web_widget_popover +#. odoo-javascript +#: code:addons/web_widget_popover/static/src/popover.esm.js:0 +msgid "Icon Popover" +msgstr "" diff --git a/web_widget_popover/i18n/web_widget_popover.pot b/web_widget_popover/i18n/web_widget_popover.pot new file mode 100644 index 000000000000..3af332bea7e8 --- /dev/null +++ b/web_widget_popover/i18n/web_widget_popover.pot @@ -0,0 +1,32 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_widget_popover +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 18.0\n" +"Report-Msgid-Bugs-To: \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: web_widget_popover +#. odoo-javascript +#: code:addons/web_widget_popover/static/src/popover.esm.js:0 +msgid "FontAwesome icon to display" +msgstr "" + +#. module: web_widget_popover +#. odoo-javascript +#: code:addons/web_widget_popover/static/src/popover.esm.js:0 +msgid "Icon" +msgstr "" + +#. module: web_widget_popover +#. odoo-javascript +#: code:addons/web_widget_popover/static/src/popover.esm.js:0 +msgid "Icon Popover" +msgstr "" diff --git a/web_widget_popover/pyproject.toml b/web_widget_popover/pyproject.toml new file mode 100644 index 000000000000..4231d0cccb3d --- /dev/null +++ b/web_widget_popover/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/web_widget_popover/readme/CONTRIBUTORS.md b/web_widget_popover/readme/CONTRIBUTORS.md new file mode 100644 index 000000000000..45388bedc364 --- /dev/null +++ b/web_widget_popover/readme/CONTRIBUTORS.md @@ -0,0 +1 @@ +- Iván Todorovich \<\> diff --git a/web_widget_popover/readme/DESCRIPTION.md b/web_widget_popover/readme/DESCRIPTION.md new file mode 100644 index 000000000000..b9de948365c0 --- /dev/null +++ b/web_widget_popover/readme/DESCRIPTION.md @@ -0,0 +1 @@ +The field will be rendered as a simple icon, that when hovered will display the field content as a tooltip. diff --git a/web_widget_popover/readme/USAGE.md b/web_widget_popover/readme/USAGE.md new file mode 100644 index 000000000000..b93cbf6de6ea --- /dev/null +++ b/web_widget_popover/readme/USAGE.md @@ -0,0 +1,11 @@ +Use the `popover` widget on `Char` or `Text` fields. + +```xml + +``` diff --git a/web_widget_popover/static/description/icon.png b/web_widget_popover/static/description/icon.png new file mode 100644 index 000000000000..1dcc49c24f36 Binary files /dev/null and b/web_widget_popover/static/description/icon.png differ diff --git a/web_widget_popover/static/description/index.html b/web_widget_popover/static/description/index.html new file mode 100644 index 000000000000..b6c00f307bb5 --- /dev/null +++ b/web_widget_popover/static/description/index.html @@ -0,0 +1,446 @@ + + + + + +README.rst + + + +
+ + + +Odoo Community Association + +
+

Web Widget Popover

+ +

Beta License: AGPL-3 OCA/web Translate me on Weblate Try me on Runboat

+

The field will be rendered as a simple icon, that when hovered will +display the field content as a tooltip.

+

Table of contents

+ +
+

Usage

+

Use the popover widget on Char or Text fields.

+
+<field
+    name="warning_message"
+    widget="popover"
+    icon="fa-warning"
+    class="text-danger"
+    nolabel="1"
+/>
+
+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Camptocamp
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+ +Odoo Community Association + +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

Current maintainer:

+

ivantodorovich

+

This module is part of the OCA/web project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+
+ + diff --git a/web_widget_popover/static/src/popover.esm.js b/web_widget_popover/static/src/popover.esm.js new file mode 100644 index 000000000000..706f8d67b7d6 --- /dev/null +++ b/web_widget_popover/static/src/popover.esm.js @@ -0,0 +1,40 @@ +import {_t} from "@web/core/l10n/translation"; +import {Component} from "@odoo/owl"; +import {registry} from "@web/core/registry"; +import {standardFieldProps} from "@web/views/fields/standard_field_props"; + +export class IconPopoverField extends Component { + static template = "web_widget_popover.IconPopoverField"; + static props = { + ...standardFieldProps, + icon: {type: String, optional: true}, + }; + static defaultProps = { + icon: "fa-info-circle", + }; + get value() { + return this.props.record.data[this.props.name] || ""; + } + get tooltipInfo() { + return JSON.stringify({message: this.value}); + } +} + +export const iconPopoverField = { + component: IconPopoverField, + displayName: _t("Icon Popover"), + supportedTypes: ["char", "text"], + supportedOptions: [ + { + label: _t("Icon"), + name: "icon", + type: "string", + help: _t("FontAwesome icon to display"), + }, + ], + extractProps: ({attrs}) => ({ + icon: attrs.icon, + }), +}; + +registry.category("fields").add("popover", iconPopoverField); diff --git a/web_widget_popover/static/src/popover.xml b/web_widget_popover/static/src/popover.xml new file mode 100644 index 000000000000..5d2e7698a190 --- /dev/null +++ b/web_widget_popover/static/src/popover.xml @@ -0,0 +1,19 @@ + + + + + + + + +
+ +
+
+ +