seitime-frappe/frappe/public/less/chat.less
Achilles Rasquinha 005cfe3dc8 🎉 NEW Frappe Chat (#4612)
* added doctypes, created frappe chat ui

* added component layout with state-like abilities, added apis

* updated user doctype, moved from state-like feature and component abstraction

* added room component

* fixed publish_realtime with after_commit = True

* created room component and searchbar

* minor fix

* functional message parsing

* update

* Added Chat Profile

* added chat message

* more changes into chat room

* fixed APIs, added client side scripting

* added chat message attachements, more doc updates

* Brand New UI with socket io room integration

* completed socketio integration. off to room subscription and publish

* realtime room update

* raw update

* initialized docs, added p2p connection for call tests

* updated docs

* added coverage, updated api for ease of use

* raw commit

* added test cases

* Chat Room updates and new room creation

* added chat group creation

* added collapsible plugin

* toggable room view

* updated

* [RAW]

* updated UI for chat

* Deleted Previous Chat Page

* moved from frappe.Chat.Widget to frappe.Chat

* modularized frappe-fab

* added more docstrings

* tried adding conversation tones

* Added conversation_tones and refurbished chat popper

* modified frappe.ui.Dialog, moved from AppBar to ActionBar, responsive for Mobile 💃

* moved RoomList item namespace

* Configurable Desktop update, moved profile updates to on_update

* added state change listeners

* removed AppBar to ActionBar customizable 💃

* added destroy method

* removed coverage, refactored group creation

* Successful Chat Rooms and Group creation

* sort rows based on last_message_timestamp or creation

* added frappe._.compare

* removed redundant less variables

* Chat Room back button with custom routing and destroy methods

* Added EmojiPicker

* fixed multiple dialog render

* setup quick access

* added chat chime, functional chat message list updates at room list

* deleted package-lock.json

* realtime date updates

* updated chat message list

* functional message render and updates

* added track seen

* added typing status

* updated typing status

* valid typing statuses and quick search

* Functional Quick Search

* reverted fix

* some more cleanup and promisifed

* fixed hints close on click

* updated fab boldness

* close popper on click panel

* close popper on click panel

* reverted octicon-lg, fixed popper heading click

* new frappe capture

* removed webcamjs

* added uploader and capture

* removed chat FAB, added as notification instead

* on message update
2017-12-28 18:58:43 +05:30

225 lines
No EOL
4.1 KiB
Text

// variables
@color-white: #FFF; //
@font-weight-bold: 700; //
@font-weight-heavy: 900; //
@frappe-chat-popper-panel-width: 350px; //
@frappe-chat-popper-panel-height: 500px; //
@frappe-chat-form-font-size: 12px;
@frappe-fab-width: 48px;
@frappe-fab-height: 48px;
@frappe-fab-lg: 56px;
@frappe-fab-sm: 40px;
// https://github.com/twbs/bootstrap/blob/v3.3.7/less/variables.less#L278
// Keep z-index of the FAB button higher than others, lower than modal background.
@frappe-fab-box-shadow: 0px 3px 6px 0px rgba(0,0,0,.25);
@frappe-fab-box-shadow-hover: 0px 5px 9px 0px rgba(0,0,0,.25);
@frappe-chat-panel-heading-box-shadow: 0px 2px 2px 0px rgba(0,0,0,.14); //
@frappe-chat-panel-body-padding: 10px;
@frappe-chat-panel-heading-action-padding: 5px;
@frappe-chat-popper-z-index: 1035;
@frappe-chat-popper-margin: 20px;
@frappe-chat-popper-panel-box-shadow: @frappe-fab-box-shadow;
// z-index greater than FAB, lesser than modal.
@frappe-chat-popper-panel-span-z-index: 1037;
@frappe-chat-form-list-group-height: 150px;
@frappe-chat-form-menu-border-radius: 4px;
@frappe-chat-emoji-width: 250px;
@frappe-chat-emoji-height: 300px;
.font-bold
{
font-weight: @font-weight-bold;
}
.font-heavy
{
font-weight: @font-weight-heavy;
}
.cursor-pointer
{
cursor: pointer;
}
.avatar
{
padding: 1px;
}
.frappe-fab
{
width: @frappe-fab-width;
height: @frappe-fab-height;
border-radius: 50%;
box-shadow: @frappe-fab-box-shadow;
&:hover
{
box-shadow: @frappe-fab-box-shadow-hover;
};
&.frappe-fab-sm
{
width: @frappe-fab-sm;
height: @frappe-fab-sm;
};
&.frappe-fab-lg
{
width: @frappe-fab-lg;
height: @frappe-fab-lg;
};
};
.frappe-chat
{
.panel
{
margin-bottom: 0px !important;
.panel-heading
{
box-shadow: @frappe-chat-panel-heading-box-shadow;
}
.panel-body
{
padding: @frappe-chat-panel-body-padding;
}
.frappe-chat-room-footer
{
position: absolute;
bottom: 0px;
}
}
.frappe-chat-form
{
.form-control
{
font-size: @frappe-chat-form-font-size;
}
.dropdown-menu
{
border-radius: @frappe-chat-form-menu-border-radius;
}
.btn
{
border-radius: 0px !important;
}
.list-group
{
margin-bottom: 0px !important;
max-height: @frappe-chat-form-list-group-height;
overflow-y: auto;
.list-group-item:first-child, .list-group-item:last-child
{
border-radius: 0px !important;
}
}
}
}
.frappe-chat-popper
{
position: fixed;
bottom: 0px;
right: 0px;
margin: @frappe-chat-popper-margin;
z-index: @frappe-chat-popper-z-index;
.frappe-chat-popper-collapse
{
position: fixed;
bottom: 0px;
right: 0px;
margin: @frappe-chat-popper-margin;
// margin-bottom: calc(@frappe-chat-popper-margin + 50px);
& > .panel
{
position: relative;
box-shadow: @frappe-chat-popper-panel-box-shadow;
width: @frappe-chat-popper-panel-width;
height: @frappe-chat-popper-panel-height;
overflow-y: auto;
.panel-body
{
width: @frappe-chat-popper-panel-width;
height: @frappe-chat-popper-panel-height;
overflow-y: auto;
}
& > .panel-heading
{
box-shadow: @frappe-chat-panel-heading-box-shadow;
.action
{
padding: @frappe-chat-panel-heading-action-padding;
}
a
{
color: @color-white;
}
.text-muted
{
color: @color-white !important;
}
}
};
.panel-span
{
position: fixed;
width: 100%;
height: 100%;
top: 0px;
left: 0px;
bottom: 0px;
right: 0px;
z-index: @frappe-chat-popper-panel-span-z-index;
overflow: auto;
border-radius: none;
};
};
};
.frappe-chat-emoji
{
.dropdown-menu
{
min-width: @frappe-chat-emoji-width;
background: none !important;
border: none !important;
}
.panel
{
margin-bottom: 0 !important;
height: @frappe-chat-emoji-height;
.form-group
{
margin-bottom: 0 !important;
}
}
};