view forms changes
This commit is contained in:
parent
19abe2fe4a
commit
db157db76a
@ -42,9 +42,23 @@
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_education_hostel_bed_search" model="ir.ui.view">
|
||||
<field name="name">education.hostel.bed.search</field>
|
||||
<field name="model">education.hostel.bed</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search Beds">
|
||||
<field name="code"/>
|
||||
<field name="bed_number"/>
|
||||
<field name="room_id"/>
|
||||
<field name="status"/>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_hostel_bed_list" model="ir.actions.act_window">
|
||||
<field name="name">Beds</field>
|
||||
<field name="res_model">education.hostel.bed</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
<field name="search_view_id" ref="view_education_hostel_bed_search"/>
|
||||
</record>
|
||||
</odoo>
|
||||
|
||||
@ -70,11 +70,25 @@
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_education_hostel_complaint_search" model="ir.ui.view">
|
||||
<field name="name">education.hostel.complaint.search</field>
|
||||
<field name="model">education.hostel.complaint</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search Complaints">
|
||||
<field name="name"/>
|
||||
<field name="student_id"/>
|
||||
<field name="hostel_id"/>
|
||||
<field name="state"/>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="action_hostel_complaint_list" model="ir.actions.act_window">
|
||||
<field name="name">Hostel Complaints</field>
|
||||
<field name="res_model">education.hostel.complaint</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
<field name="search_view_id" ref="view_education_hostel_complaint_search"/>
|
||||
<field name="context">{'search_default_state': 'submitted'}</field>
|
||||
</record>
|
||||
</odoo>
|
||||
|
||||
@ -36,10 +36,24 @@
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_education_hostel_fee_search" model="ir.ui.view">
|
||||
<field name="name">education.hostel.fee.search</field>
|
||||
<field name="model">education.hostel.fee</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search Fees">
|
||||
<field name="name"/>
|
||||
<field name="student_id"/>
|
||||
<field name="hostel_id"/>
|
||||
<field name="state"/>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_hostel_fee_structure_list" model="ir.actions.act_window">
|
||||
<field name="name">Hostel Fee Structures</field>
|
||||
<field name="res_model">education.hostel.fee.structure</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
<field name="search_view_id" ref="view_education_hostel_fee_search"/>
|
||||
</record>
|
||||
|
||||
<record id="view_hostel_fee_list" model="ir.ui.view">
|
||||
@ -102,5 +116,6 @@
|
||||
<field name="name">Hostel Fees</field>
|
||||
<field name="res_model">education.hostel.fee</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
<field name="search_view_id" ref="view_education_hostel_fee_search"/>
|
||||
</record>
|
||||
</odoo>
|
||||
|
||||
@ -51,9 +51,22 @@
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_education_hostel_floor_search" model="ir.ui.view">
|
||||
<field name="name">education.hostel.floor.search</field>
|
||||
<field name="model">education.hostel.floor</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search Floors">
|
||||
<field name="name"/>
|
||||
<field name="hostel_id"/>
|
||||
<field name="code"/>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_hostel_floor_list" model="ir.actions.act_window">
|
||||
<field name="name">Floors</field>
|
||||
<field name="res_model">education.hostel.floor</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
<field name="search_view_id" ref="view_education_hostel_floor_search"/>
|
||||
</record>
|
||||
</odoo>
|
||||
|
||||
@ -71,9 +71,23 @@
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_education_hostel_room_search" model="ir.ui.view">
|
||||
<field name="name">education.hostel.room.search</field>
|
||||
<field name="model">education.hostel.room</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search Rooms">
|
||||
<field name="name"/>
|
||||
<field name="hostel_id"/>
|
||||
<field name="floor_id"/>
|
||||
<field name="room_type"/>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_hostel_room_list" model="ir.actions.act_window">
|
||||
<field name="name">Rooms</field>
|
||||
<field name="res_model">education.hostel.room</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
<field name="search_view_id" ref="view_education_hostel_room_search"/>
|
||||
</record>
|
||||
</odoo>
|
||||
|
||||
@ -69,10 +69,24 @@
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_education_hostel_visitor_search" model="ir.ui.view">
|
||||
<field name="name">education.hostel.visitor.search</field>
|
||||
<field name="model">education.hostel.visitor</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search Visitors">
|
||||
<field name="name"/>
|
||||
<field name="student_id"/>
|
||||
<field name="hostel_id"/>
|
||||
<field name="state"/>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="action_hostel_visitor_list" model="ir.actions.act_window">
|
||||
<field name="name">Visitor Log</field>
|
||||
<field name="res_model">education.hostel.visitor</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
<field name="search_view_id" ref="view_education_hostel_visitor_search"/>
|
||||
</record>
|
||||
</odoo>
|
||||
|
||||
@ -55,10 +55,24 @@
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_education_transport_assignment_search" model="ir.ui.view">
|
||||
<field name="name">education.transport.assignment.search</field>
|
||||
<field name="model">education.transport.assignment</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search Assignments">
|
||||
<field name="name"/>
|
||||
<field name="student_id"/>
|
||||
<field name="route_id"/>
|
||||
<field name="stop_id"/>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="action_transport_assignment_list" model="ir.actions.act_window">
|
||||
<field name="name">Assignments</field>
|
||||
<field name="res_model">education.transport.assignment</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
<field name="search_view_id" ref="view_education_transport_assignment_search"/>
|
||||
</record>
|
||||
</odoo>
|
||||
|
||||
@ -20,9 +20,62 @@
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_transport_attendance_form" model="ir.ui.view">
|
||||
<field name="name">education.transport.attendance.form</field>
|
||||
<field name="model">education.transport.attendance</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Attendance">
|
||||
<header>
|
||||
<field name="status" widget="statusbar" options="{'clickable': '1'}"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<group>
|
||||
<group>
|
||||
<field name="trip_id"/>
|
||||
<field name="student_id"/>
|
||||
<field name="stop_id"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="boarding_time"/>
|
||||
<field name="drop_time"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Notes">
|
||||
<field name="notes" placeholder="Additional notes..."/>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
<chatter/>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_transport_attendance_search" model="ir.ui.view">
|
||||
<field name="name">education.transport.attendance.search</field>
|
||||
<field name="model">education.transport.attendance</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search Attendance">
|
||||
<field name="trip_id"/>
|
||||
<field name="student_id"/>
|
||||
<field name="stop_id"/>
|
||||
<filter string="Boarded" name="boarded" domain="[('status', '=', 'boarded')]"/>
|
||||
<filter string="Absent" name="absent" domain="[('status', '=', 'absent')]"/>
|
||||
<filter string="Dropped" name="dropped" domain="[('status', '=', 'dropped')]"/>
|
||||
<filter string="Missed" name="missed" domain="[('status', '=', 'missed')]"/>
|
||||
<group>
|
||||
<filter string="Trip" name="group_trip" context="{'group_by':'trip_id'}"/>
|
||||
<filter string="Student" name="group_student" context="{'group_by':'student_id'}"/>
|
||||
<filter string="Status" name="group_status" context="{'group_by':'status'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_transport_attendance_list" model="ir.actions.act_window">
|
||||
<field name="name">Attendance</field>
|
||||
<field name="res_model">education.transport.attendance</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
<field name="search_view_id" ref="view_transport_attendance_search"/>
|
||||
</record>
|
||||
</odoo>
|
||||
|
||||
@ -45,10 +45,24 @@
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_education_transport_driver_search" model="ir.ui.view">
|
||||
<field name="name">education.transport.driver.search</field>
|
||||
<field name="model">education.transport.driver</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search Drivers">
|
||||
<field name="name"/>
|
||||
<field name="license_number"/>
|
||||
<field name="phone"/>
|
||||
<field name="status"/>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="action_transport_driver_list" model="ir.actions.act_window">
|
||||
<field name="name">Drivers</field>
|
||||
<field name="res_model">education.transport.driver</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
<field name="search_view_id" ref="view_education_transport_driver_search"/>
|
||||
</record>
|
||||
</odoo>
|
||||
|
||||
@ -64,9 +64,36 @@
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_transport_incident_search" model="ir.ui.view">
|
||||
<field name="name">education.transport.incident.search</field>
|
||||
<field name="model">education.transport.incident</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search Incidents">
|
||||
<field name="name"/>
|
||||
<field name="trip_id"/>
|
||||
<field name="vehicle_id"/>
|
||||
<field name="driver_id"/>
|
||||
<filter string="Reported" name="reported" domain="[('state', '=', 'reported')]"/>
|
||||
<filter string="Investigating" name="investigating" domain="[('state', '=', 'investigating')]"/>
|
||||
<filter string="Resolved" name="resolved" domain="[('state', '=', 'resolved')]"/>
|
||||
<filter string="Closed" name="closed" domain="[('state', '=', 'closed')]"/>
|
||||
<separator/>
|
||||
<filter string="Critical" name="critical" domain="[('severity', '=', 'critical')]"/>
|
||||
<filter string="High" name="high" domain="[('severity', '=', 'high')]"/>
|
||||
<group>
|
||||
<filter string="Status" name="group_state" context="{'group_by':'state'}"/>
|
||||
<filter string="Severity" name="group_severity" context="{'group_by':'severity'}"/>
|
||||
<filter string="Incident Type" name="group_type" context="{'group_by':'incident_type'}"/>
|
||||
<filter string="Date" name="group_date" context="{'group_by':'incident_date:month'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_transport_incident_list" model="ir.actions.act_window">
|
||||
<field name="name">Incidents</field>
|
||||
<field name="res_model">education.transport.incident</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
<field name="search_view_id" ref="view_transport_incident_search"/>
|
||||
</record>
|
||||
</odoo>
|
||||
|
||||
@ -54,10 +54,24 @@
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_education_transport_route_search" model="ir.ui.view">
|
||||
<field name="name">education.transport.route.search</field>
|
||||
<field name="model">education.transport.route</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search Routes">
|
||||
<field name="name"/>
|
||||
<field name="code"/>
|
||||
<field name="campus_id"/>
|
||||
<field name="direction"/>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="action_transport_route_list" model="ir.actions.act_window">
|
||||
<field name="name">Routes</field>
|
||||
<field name="res_model">education.transport.route</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
<field name="search_view_id" ref="view_education_transport_route_search"/>
|
||||
</record>
|
||||
</odoo>
|
||||
|
||||
@ -39,10 +39,22 @@
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_education_transport_stop_search" model="ir.ui.view">
|
||||
<field name="name">education.transport.stop.search</field>
|
||||
<field name="model">education.transport.stop</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search Stops">
|
||||
<field name="name"/>
|
||||
<field name="code"/>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="action_transport_stop_list" model="ir.actions.act_window">
|
||||
<field name="name">Stops</field>
|
||||
<field name="res_model">education.transport.stop</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
<field name="search_view_id" ref="view_education_transport_stop_search"/>
|
||||
</record>
|
||||
</odoo>
|
||||
|
||||
@ -53,10 +53,25 @@
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_education_transport_trip_search" model="ir.ui.view">
|
||||
<field name="name">education.transport.trip.search</field>
|
||||
<field name="model">education.transport.trip</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search Trips">
|
||||
<field name="name"/>
|
||||
<field name="route_id"/>
|
||||
<field name="vehicle_id"/>
|
||||
<field name="driver_id"/>
|
||||
<field name="state"/>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="action_transport_trip_list" model="ir.actions.act_window">
|
||||
<field name="name">Trips</field>
|
||||
<field name="res_model">education.transport.trip</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
<field name="search_view_id" ref="view_education_transport_trip_search"/>
|
||||
</record>
|
||||
</odoo>
|
||||
|
||||
@ -58,10 +58,24 @@
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_education_transport_vehicle_search" model="ir.ui.view">
|
||||
<field name="name">education.transport.vehicle.search</field>
|
||||
<field name="model">education.transport.vehicle</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search Vehicles">
|
||||
<field name="name"/>
|
||||
<field name="registration_number"/>
|
||||
<field name="status"/>
|
||||
<field name="vehicle_type"/>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="action_transport_vehicle_list" model="ir.actions.act_window">
|
||||
<field name="name">Vehicles</field>
|
||||
<field name="res_model">education.transport.vehicle</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
<field name="search_view_id" ref="view_education_transport_vehicle_search"/>
|
||||
</record>
|
||||
</odoo>
|
||||
|
||||
@ -48,7 +48,7 @@ body.o_web_client:has(.o_sidebar_custom) .o_action_manager {
|
||||
.o_main_navbar {
|
||||
--o-navbar-height: 70px;
|
||||
font-size: 0.975rem;
|
||||
background-color: #eef9f9 !important;
|
||||
background: linear-gradient(135deg, #e6f7f7 0%, #d1f1f1 100%) !important;
|
||||
border-bottom: 1px solid #e2e8f0 !important;
|
||||
box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.05) !important;
|
||||
color: #144d4d !important;
|
||||
@ -221,7 +221,7 @@ body.o_web_client:has(.o_sidebar_custom) .o_action_manager {
|
||||
|
||||
// Input fields (Modern SaaS style - clean gray boxes that highlight)
|
||||
.o_field_widget {
|
||||
input, select, textarea {
|
||||
input:not([type="checkbox"]):not([type="radio"]), select, textarea {
|
||||
background-color: #f8fafc !important;
|
||||
border: 1px solid #e2e8f0 !important;
|
||||
border-radius: 6px !important;
|
||||
@ -291,25 +291,7 @@ body.o_web_client:has(.o_sidebar_custom) .o_action_manager {
|
||||
background-color: transparent !important;
|
||||
border-bottom: none !important;
|
||||
box-shadow: none !important;
|
||||
padding: 20px 28px 8px 28px !important;
|
||||
}
|
||||
|
||||
// Top row: breadcrumb on left, New button on RIGHT
|
||||
.o_control_panel_breadcrumbs_actions {
|
||||
display: flex !important;
|
||||
align-items: center !important;
|
||||
flex-wrap: nowrap !important;
|
||||
gap: 12px !important;
|
||||
}
|
||||
|
||||
.o_control_panel .o_breadcrumb {
|
||||
order: 1 !important; // Always visually FIRST (left side)
|
||||
flex: 1 !important; // Takes all remaining space → pushes button right
|
||||
display: flex !important;
|
||||
align-items: center !important;
|
||||
flex-wrap: wrap !important;
|
||||
gap: 4px !important;
|
||||
min-width: 0 !important;
|
||||
padding: 10px 28px !important;
|
||||
}
|
||||
|
||||
// Small breadcrumb trail (Home > Master Data >)
|
||||
@ -335,14 +317,8 @@ body.o_web_client:has(.o_sidebar_custom) .o_action_manager {
|
||||
color: #cbd5e1 !important;
|
||||
}
|
||||
|
||||
// New button → RIGHT side, teal — uses order:2 to override DOM order
|
||||
// New button style
|
||||
.o_control_panel_main_buttons {
|
||||
order: 2 !important; // Always visually LAST (right side)
|
||||
flex-shrink: 0 !important;
|
||||
display: flex !important;
|
||||
align-items: center !important;
|
||||
gap: 8px !important;
|
||||
|
||||
.btn-primary {
|
||||
background-color: #1f8f8f !important;
|
||||
border-color: #1f8f8f !important;
|
||||
@ -379,11 +355,7 @@ body.o_web_client:has(.o_sidebar_custom) .o_action_manager {
|
||||
|
||||
// Navigation row: search + filters + view switchers + pager
|
||||
.o_control_panel_navigation {
|
||||
display: flex !important;
|
||||
align-items: center !important;
|
||||
gap: 8px !important;
|
||||
padding: 8px 0 0 0 !important;
|
||||
flex-wrap: wrap !important;
|
||||
}
|
||||
|
||||
// ---- SEARCH BAR ----
|
||||
@ -394,8 +366,6 @@ body.o_web_client:has(.o_sidebar_custom) .o_action_manager {
|
||||
padding: 3px 12px !important;
|
||||
box-shadow: 0 1px 4px rgba(0,0,0,0.04) !important;
|
||||
min-height: 36px !important;
|
||||
flex: 1 1 220px !important;
|
||||
max-width: 360px !important;
|
||||
transition: border-color 0.2s, box-shadow 0.2s !important;
|
||||
|
||||
&:focus-within {
|
||||
|
||||
@ -6,23 +6,23 @@
|
||||
|
||||
<t t-if="currentApp and currentApp.name === 'Education'">
|
||||
<div class="o_sidebar_custom d-flex flex-column position-fixed"
|
||||
style="top: 70px; bottom: 0; left: 0; width: 260px; background: white; border-right: 1px solid #e2e8f0; z-index: 90; padding-top: 10px; overflow-y: auto; box-shadow: 2px 0 10px rgba(0,0,0,0.03);">
|
||||
style="top: 70px; bottom: 0; left: 0; width: 260px; background: linear-gradient(135deg, #1f8f8f 0%, #144d4d 55%, #0d3d3d 100%); border-right: 1px solid rgba(255,255,255,0.1); z-index: 90; padding-top: 10px; overflow-y: auto; box-shadow: 2px 0 10px rgba(0,0,0,0.1); color: white;">
|
||||
|
||||
<style>
|
||||
.o_sidebar_custom .sidebar-link {
|
||||
display: flex; align-items: center; padding: 8px 16px;
|
||||
margin: 2px 8px; border-radius: 8px; color: #475569;
|
||||
margin: 2px 8px; border-radius: 8px; color: rgba(255,255,255,0.9);
|
||||
text-decoration: none; font-weight: 600; font-size: 0.9rem;
|
||||
transition: all 0.2s ease; cursor: pointer;
|
||||
}
|
||||
.o_sidebar_custom .sidebar-link:hover { background-color: #eef9f9; color: #144d4d; }
|
||||
.o_sidebar_custom .sidebar-link:hover { background-color: rgba(255,255,255,0.1); color: #ffffff; }
|
||||
.o_sidebar_custom .sidebar-group-header {
|
||||
display: flex; align-items: center; justify-content: space-between;
|
||||
padding: 8px 16px; margin: 2px 8px; border-radius: 8px;
|
||||
color: #475569; font-weight: 600; font-size: 0.9rem;
|
||||
color: rgba(255,255,255,0.9); font-weight: 600; font-size: 0.9rem;
|
||||
cursor: pointer; transition: all 0.2s ease;
|
||||
}
|
||||
.o_sidebar_custom .sidebar-group-header:hover { background-color: #eef9f9; color: #144d4d; }
|
||||
.o_sidebar_custom .sidebar-group-header:hover { background-color: rgba(255,255,255,0.1); color: #ffffff; }
|
||||
.o_sidebar_custom .sidebar-group-header .chevron {
|
||||
font-size: 0.7rem; transition: transform 0.25s ease;
|
||||
}
|
||||
@ -30,26 +30,43 @@
|
||||
.o_sidebar_custom .sidebar-children {
|
||||
display: none; flex-direction: column;
|
||||
margin-left: 24px; padding-left: 12px;
|
||||
border-left: 2px solid #e2e8f0; margin-right: 8px; margin-bottom: 4px;
|
||||
border-left: 1px solid rgba(255,255,255,0.2); margin-right: 8px; margin-bottom: 4px;
|
||||
}
|
||||
.o_sidebar_custom .sidebar-children.open { display: flex; }
|
||||
.o_sidebar_custom .sidebar-child-link {
|
||||
display: flex; align-items: center; padding: 6px 12px;
|
||||
margin: 1px 0; border-radius: 6px; color: #64748b;
|
||||
margin: 1px 0; border-radius: 6px; color: rgba(255,255,255,0.75);
|
||||
text-decoration: none; font-size: 0.85rem; font-weight: 500;
|
||||
transition: all 0.15s ease; cursor: pointer;
|
||||
}
|
||||
.o_sidebar_custom .sidebar-child-link:hover { background-color: #eef9f9; color: #144d4d; }
|
||||
.o_sidebar_custom .sidebar-child-link:hover { background-color: rgba(255,255,255,0.1); color: #ffffff; }
|
||||
.o_sidebar_custom .sidebar-dot {
|
||||
width: 5px; height: 5px; border-radius: 50%;
|
||||
background: #94a3b8; margin-right: 10px; flex-shrink: 0;
|
||||
background: rgba(255,255,255,0.5); margin-right: 10px; flex-shrink: 0;
|
||||
}
|
||||
.o_sidebar_custom .sidebar-child-link:hover .sidebar-dot { background: #ffffff; }
|
||||
|
||||
/* Promo Card */
|
||||
.o_sidebar_custom .sidebar-promo-card {
|
||||
background: linear-gradient(135deg, #e6f7f7 0%, #d1f1f1 100%);
|
||||
border-radius: 16px;
|
||||
padding: 20px 16px;
|
||||
text-align: center;
|
||||
margin: auto 16px 20px 16px;
|
||||
border: 1px solid rgba(31, 143, 143, 0.15);
|
||||
box-shadow: 0 4px 15px rgba(0,0,0,0.1);
|
||||
}
|
||||
.o_sidebar_custom .promo-icon-box {
|
||||
font-size: 2.5rem;
|
||||
color: #1f8f8f;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<!-- App Header -->
|
||||
<div class="px-4 py-3 mb-2 border-bottom d-flex align-items-center">
|
||||
<i class="fa fa-graduation-cap fa-lg me-3" style="color: #1f8f8f;"/>
|
||||
<h5 class="mb-0 fw-bold" style="color: #144d4d;"><t t-esc="currentApp.name"/></h5>
|
||||
<div class="px-4 py-3 mb-2 border-bottom d-flex align-items-center" style="border-color: rgba(255,255,255,0.1) !important;">
|
||||
<i class="fa fa-graduation-cap fa-lg me-3" style="color: #ffffff;"/>
|
||||
<h5 class="mb-0 fw-bold" style="color: #ffffff;"><t t-esc="currentApp.name"/></h5>
|
||||
</div>
|
||||
|
||||
<!-- Menu items loop -->
|
||||
@ -59,16 +76,16 @@
|
||||
<a class="sidebar-link"
|
||||
t-on-click.prevent="() => this.onNavBarDropdownItemSelection(section)"
|
||||
t-att-href="getMenuItemHref(section)">
|
||||
<i class="fa fa-list-ul me-3" style="color: #94a3b8; width: 16px;"/>
|
||||
<i class="fa fa-cube me-3" style="color: rgba(255,255,255,0.7); width: 16px;"/>
|
||||
<t t-esc="section.name"/>
|
||||
</a>
|
||||
</t>
|
||||
|
||||
<t t-else="">
|
||||
<div class="sidebar-group-header"
|
||||
t-on-click="(ev) => { ev.currentTarget.classList.toggle('open'); ev.currentTarget.nextElementSibling.classList.toggle('open'); }">
|
||||
onclick="this.classList.toggle('open'); this.nextElementSibling.classList.toggle('open');">
|
||||
<div class="d-flex align-items-center">
|
||||
<i class="fa fa-folder-o me-3" style="color: #94a3b8; width: 16px;"/>
|
||||
<i class="fa fa-th-large me-3" style="color: rgba(255,255,255,0.7); width: 16px;"/>
|
||||
<t t-esc="section.name"/>
|
||||
</div>
|
||||
<i class="fa fa-chevron-down chevron"/>
|
||||
@ -86,6 +103,16 @@
|
||||
</t>
|
||||
|
||||
</t>
|
||||
|
||||
<!-- Sidebar Promo Card -->
|
||||
<div class="sidebar-promo-card mt-auto">
|
||||
<div class="promo-icon-box">
|
||||
<i class="fa fa-rocket"/>
|
||||
</div>
|
||||
<h6 class="fw-bold mb-1" style="color: #144d4d;">Admin Workspace</h6>
|
||||
<p class="small mb-0" style="color: #4a5568;">Manage your entire</p>
|
||||
<p class="small mb-0" style="color: #4a5568;">institution efficiently.</p>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user