block append variables - var messageThreads = [ { name: 'Antony Hopkins', avatar: { img: `team/2.jpg`, size: 'xl', status: 'online' }, class: 'active', messages: [ { sender: { name: 'Antony', img: 2 }, message: 'Yes, in an organization stature, this is a must. Besides, we need to quickly establish all other professional appearances, e.g., having a website where members’ profile will be displayed along with additional organizational information. Providing services to existing members is more important than attracting new members at this moment, in my opinion..', time: { day: 'Mon', hour: '11:54 am', date: 'May 5, 2019' } }, { sender: { name: 'Antony', img: 2 }, message: 'What are you doing?', time: { day: 'Thu', hour: '11:54 am', date: 'May 5, 2019' } }, { sender: { name: 'Me', img: 3 }, message: `

I took this pic

`, status: 'seen', time: { day: 'Tue', hour: '11:54 am', date: 'May 5, 2019' } }, { sender: { name: 'Me', img: 3 }, message: 'Nothing!', status: 'seen', time: { day: 'Wed', hour: '11:54 am', date: 'May 5, 2019' } }, { sender: { name: 'Antony', img: 2 }, message: 'How are you?', time: { day: 'Mon', hour: '11:54 am', date: 'May 6, 2019' } }, { sender: { name: 'Me', img: 3 }, message: 'Fine', status: 'delivered', time: { day: 'Mon', hour: '11:54 am', date: 'May 6, 2019' } }, { sender: { name: 'Me', img: 3 }, type: 'gallery', message: `
`, status: 'sent', time: { day: 'Mon', hour: '11:54 am', date: 'May 7, 2019' } }, { sender: { name: 'Antony', img: 2 }, message: "I took some excellent images yesterday.", time: { day: 'Mon', hour: '11:54 am', date: 'May 7, 2019' } }, { sender: { name: 'Me', img: 2 }, message: "Give me the images.", time: { day: 'Mon', hour: '11:54 am', date: 'May 8, 2019' } }, { sender: { name: 'Antony', img: 2 }, type: 'gallery', message: `
`, messageType: 'attachment', status: '6 photos', time: { day: 'Tue', hour: '11:54 am', date: 'May 8, 2019' } }, ] }, { name: 'Avengers', type: 'group', avatar: { img: [`team/1.jpg`, 'team/2.jpg', 'team/3.jpg'], size: 'xl', type: 'group' }, members: [ { name: 'Antony Hopkins', designation: 'Admin', avatar: { img: 'team/2.jpg', size: 'xl', status: 'online' } }, { name: 'Emma Watson', designation: 'Member', avatar: { img: 'team/1.jpg', size: 'xl', } }, { name: 'Anna Karinina', designation: 'Member', avatar: { img: 'team/3.jpg', size: 'xl', status: 'online' } }, { name: 'John Lee', designation: 'Member', avatar: { img: 'team/4.jpg', size: 'xl', status: 'online' } }, { name: 'Bucky Robert', designation: 'Member', avatar: { img: 'team/5.jpg', size: 'xl', } } ], messages: [ { sender: { name: 'Anna', img: 13 }, message: 'In an organisation stature, this is a must. Besides, we need to quickly establish all other professional appearances, e.g. having a website where members’ profile will be displayed along with other organisational information. Providing services to existing members is more important than attracting new members at this moment, in my opinion.', time: { day: 'Mon', hour: '11:54 am', date: 'May 5, 2019' } }, { sender: { name: 'Me', img: 3 }, message: 'Your are right 👍', status: 'seen', time: { day: 'Sun', hour: '11:54 am', date: 'May 5, 2019' } }, { sender: { name: 'Antony', img: 2 }, message: 'We should divide the tasks among all other members.', status: 'seen', time: { day: 'Sun', hour: '11:54 am', date: 'May 5, 2019' } }, { sender: { name: 'John', img: 4 }, message: 'I will make a list of all the tasks.', status: 'seen', time: { day: 'Sun', hour: '11:54 am', date: 'May 5, 2019' } }, { sender: { name: 'Me', img: 3 }, message: 'I can help you to do this.', status: 'seen', time: { day: 'Sun', hour: '11:54 am', date: 'May 7, 2019' } }, { sender: { name: 'Emma', img: 1 }, message: 'It will be a great opportunity if I can contribute to this task 😊', status: 'seen', time: { day: 'Sun', hour: '11:54 am', date: 'May 7, 2019' } }, { sender: { name: 'Bucky', img: 5 }, message: `Wow, it will be great!`, status: 'seen', time: { day: 'Sun', hour: '11:54 am', date: 'May 7, 2019' } }, { sender: { name: 'Bucky', img: 5 }, message: `@Emma What do you think about the plan?`, status: 'seen', time: { day: 'Sun', hour: '11:54 am', date: 'May 7, 2019' } }, ] }, { name: 'Emma Watson', avatar: { img: `team/1.jpg`, size: 'xl', }, messages: [ { sender: { name: 'Me', img: 3 }, message: 'Hello', status: 'seen', time: { day: 'Mon', hour: '11:54 am', date: 'May 5, 2019' } }, { sender: { name: 'Me', img: 3 }, message: '🙂', status: 'seen', time: { day: 'Sun', hour: '11:54 am', date: 'May 5, 2019' } }, ] }, { name: 'Anna Karinina', avatar: { img: `team/13.jpg`, size: 'xl', status: 'online' }, class: 'unread-message', messages: [ { sender: { name: 'Me', img: 3 }, message: 'Hello', status: 'sent', time: { day: 'Mon', hour: '11:54 am', date: 'May 5, 2019' } }, { sender: { name: 'Anna', img: 13 }, message: 'What are you doing?', time: { day: 'Sat', hour: '11:54 am', date: 'May 5, 2019' } }, ] }, { name: 'John Lee', avatar: { img: `team/4.jpg`, size: 'xl', status: 'online' }, class: 'unread-message', messages: [ { sender: { name: 'John', img: 4 }, message: "What's Up!", time: { day: 'Mon', hour: '11:54 am', date: 'May 5, 2019' } }, { sender: { name: 'Me', img: 3 }, message: 'Hey!', status: 'sent', time: { day: 'Mon', hour: '11:54 am', date: 'May 5, 2019' } }, { sender: { name: 'John', img: 4 }, message: 'How are you?', time: { day: 'Mon', hour: '11:54 am', date: 'May 5, 2019' } }, ] }, { name: 'Bucky Robert', avatar: { name: 'Bucky Robert', size: 'xl', status: 'online' }, messages: [ { sender: { name: 'Bucky', img: 5 }, message: "What's Up!", time: { day: 'Mon', hour: '11:54 am', date: 'May 5, 2019' } }, { sender: { name: 'Me', img: 3 }, message: 'Hey!', status: 'sent', time: { day: 'Mon', hour: '11:54 am', date: 'May 5, 2019' } }, { sender: { name: 'Me', img: 3 }, message: '👋', status: 'sent', time: { day: 'Wed', hour: '11:54 am', date: 'May 5, 2019' } }, ] }, { name: 'John Bradley', avatar: { img: `team/10.jpg`, size: 'xl', status: 'online' }, messages: [ { sender: { name: 'Bradley', img: 10 }, message: "What's Up!", time: { day: 'Mon', hour: '11:54 am', date: 'May 5, 2019' } }, { sender: { name: 'Me', img: 3 }, message: 'Hey!', status: 'sent', time: { day: 'Mon', hour: '11:54 am', date: 'May 5, 2019' } }, { sender: { name: 'Bradley', img: 10 }, message: 'Hello!', time: { day: 'Fri', hour: '11:54 am', date: 'May 5, 2019' } }, ] }, { name: 'Rory McCann', avatar: { img: `team/11.jpg`, size: 'xl', status: 'online' }, messages: [ { sender: { name: 'Rory', img: 11 }, message: "I got my visa", time: { day: 'Mon', hour: '11:54 am', date: 'May 5, 2019' } }, { sender: { name: 'Rory', img: 11 }, message: `Let's have fun`, time: { day: 'Mon', hour: '11:54 am', date: 'May 5, 2019' } }, { sender: { name: 'Me', img: 3 }, message: '😮', status: 'sent', time: { day: 'Sun', hour: '11:54 am', date: 'May 5, 2019' } }, ] }, { name: 'Joe Bempsie', avatar: { img: `team/12.jpg`, size: 'xl', }, messages: [ { sender: { name: 'Joe', img: 12 }, message: "What's Up!", time: { day: 'Mon', hour: '11:54 am', date: 'May 5, 2019' } }, { sender: { name: 'Me', img: 3 }, message: 'Hey!', status: 'sent', time: { day: 'Mon', hour: '11:54 am', date: 'May 5, 2019' } }, { sender: { name: 'Joe', img: 12 }, message: 'Hello!', time: { day: 'Wed', hour: '11:54 am', date: 'May 5, 2019' } }, ] }, { name: 'Diana Rigg', avatar: { img: `team/22.jpg`, size: 'xl', }, messages: [ { sender: { name: 'Diana', img: 22 }, message: "What's Up!", time: { day: 'Mon', hour: '11:54 am', date: 'May 5, 2019' } }, { sender: { name: 'Me', img: 3 }, message: 'Hey!', status: 'sent', time: { day: 'Mon', hour: '11:54 am', date: 'May 5, 2019' } }, { sender: { name: 'Me', img: 3 }, message: 'Yes, in an organization stature, this is a must. Besides, we need to quickly establish all other professional appearances, e.g., having a website where members’ profile will be displayed along with additional organizational information. Providing services to existing members is more important than attracting new members at this moment, in my opinion..', status: 'sent', time: { day: 'Mon', hour: '11:54 am', date: 'May 5, 2019' } }, ] }, { name: 'Gemma Whelan', avatar: { img: `team/23.jpg`, size: 'xl', }, messages: [] }, ]; mixin ChatDropdownOptions(config) ul.hover-actions.position-relative.list-inline.mb-0.text-400&attributes(attributes) li.list-inline-item a.chat-option(href="#!" data-bs-toggle="tooltip" data-bs-placement="top" title="Forward") span.fas.fa-share li.list-inline-item a.chat-option(href="#!" data-bs-toggle="tooltip" data-bs-placement="top" title="Archive") span.fas.fa-archive li.list-inline-item a.chat-option(href="#!" data-bs-toggle="tooltip" data-bs-placement="top" title="Edit") span.fas.fa-edit li.list-inline-item a.chat-option(href="#!" data-bs-toggle="tooltip" data-bs-placement="top" title="Remove") span.fas.fa-trash-alt mixin MessageLeft(config, type) .d-flex.p-3 +Avatar({img: `team/${config.sender.img}.jpg`, size: 'l'}).me-2 .flex-1 .w-xxl-75 .hover-actions-trigger.d-flex.align-items-center if(config.type === 'gallery') .chat-message.chat-gallery!=config.message else .chat-message.bg-200.p-2.rounded-2!=config.message +ChatDropdownOptions({ 'optionsDropdownId': config.optionsDropdownId, }).ms-2 .text-400.fs-11 if(type === 'group') span.fw-semi-bold.me-2=config.sender.name span=config.time.hour mixin MessageRight(config) .d-flex.p-3 .flex-1.d-flex.justify-content-end .w-100.w-xxl-75 .hover-actions-trigger.d-flex.flex-end-center +ChatDropdownOptions({ type:"dropdown-menu-end", 'optionsDropdownId': config.optionsDropdownId, }).me-2 if(config.type === 'gallery') .chat-message.chat-gallery!=config.message else .bg-primary.text-white.p-2.rounded-2.chat-message(data-bs-theme="light") !=config.message .text-400.fs-11.text-end=config.time.hour if(config.status === 'sent') span.fas.fa-check.ms-2 else if(config.status === 'delivered') span.fas.fa-check-double.ms-2 else if(config.status === 'seen') span.fas.fa-check.ms-2.text-success mixin ConversationInfo(thread, index) .conversation-info(data-index=`${index}`) .h-100.overflow-auto.scrollbar .d-flex.position-relative.align-items-center.p-3.border-bottom +Avatar(thread.avatar) .flex-1.ms-2.d-flex.flex-between-center h6.mb-0 a(href=`${CWD}${paths['user-profile']}`).text-decoration-none.stretched-link.text-700=thread.name .dropdown.z-1 button.btn.btn-link.btn-sm.text-400.dropdown-toggle.dropdown-caret-none.me-n3(type='button', id=`profile-dropdown-${index}` data-bs-toggle='dropdown' aria-haspopup='true' aria-expanded='false') span.fas.fa-cog .dropdown-menu.dropdown-menu-end.border.py-2(aria-labelledby=`profile-dropdown-${index}`) a(href="#!").dropdown-item Mute .dropdown-divider a(href="#!").dropdown-item Archive a(href="#!").dropdown-item.text-danger Delete .px-3.pt-2 .nav.flex-column.font-sans-serif.fw-medium a(href="#!").nav-link.d-flex.align-items-center.py-1.px-0.text-600 span.conversation-info-icon span.fas.fa-search.me-1(data-fa-transform="shrink-1 down-3") | Search in Conversation a(href="#!").nav-link.d-flex.align-items-center.py-1.px-0.text-600 span.conversation-info-icon span.fas.fa-pencil-alt.me-1(data-fa-transform="shrink-1") | Edit Nicknames a(href="#!").nav-link.d-flex.align-items-center.py-1.px-0.text-600 span.conversation-info-icon span.fas.fa-palette.me-1(data-fa-transform="shrink-1") span Change Color a(href="#!").nav-link.d-flex.align-items-center.py-1.px-0.text-600 span.conversation-info-icon span.fas.fa-thumbs-up.me-1(data-fa-transform="shrink-1") | Change Emoji a(href="#!").nav-link.d-flex.align-items-center.py-1.px-0.text-600 span.conversation-info-icon span.fas.fa-bell.me-1(data-fa-transform="shrink-1") | Notifications hr.my-2 .px-3(id=`others-info-${index}`) if thread.type === 'group' .title(id=`member-title-${index}`) a.btn.btn-link.btn-accordion.hover-text-decoration-none.dropdown-indicator(href=`#members-${index}` data-bs-toggle='collapse' aria-expanded='false', aria-controls=`members-${index}`) | Members .collapse(id=`members-${index}` aria-labelledby=`member-title-${index}`, data-parent=`#others-info-${index}`) each member, i in thread.members .d-flex.align-items-center.py-2.hover-actions-trigger +Avatar(member.avatar) .flex-1.ms-2.d-flex.justify-content-between div h6.mb-0 a(href=`${CWD}${paths['user-profile']}`).text-700=member.name .fs-11.text-400=member.designation .dropdown.hover-actions.position-relative.dropdown-active-trigger.z-1 button.btn.btn-link.btn-sm.text-400.dropdown-toggle.dropdown-caret-none(type='button', id=`user-settings-dropdown-${i}`, data-bs-toggle='dropdown' aria-haspopup='true' aria-expanded='false') span.fas.fa-ellipsis-h .dropdown-menu.dropdown-menu-end.py-2.border(aria-labelledby=`user-settings-dropdown-${i}`) a(href="#!").dropdown-item Message a(href="#!").dropdown-item View Profile .title(id=`shared-media-title-${index}`) a.btn.btn-link.btn-accordion.hover-text-decoration-none.dropdown-indicator(href=`#shared-media-${index}` data-bs-toggle='collapse' aria-expanded='false', aria-controls=`shared-media-${index}`) | Shared media .collapse(id=`shared-media-${index}` aria-labelledby=`shared-media-title-${index}`, data-parent=`#others-info-${index}`) .row.mx-n1 .col-6.col-md-4.px-1 a(href=`${CWD}assets/img/chat/1.jpg` data-gallery="images-1") img(src=`${CWD}assets/img/chat/1.jpg`, alt="").img-fluid.rounded-1.mb-2 .col-6.col-md-4.px-1 a(href=`${CWD}assets/img/chat/2.jpg` data-gallery="images-1") img(src=`${CWD}assets/img/chat/2.jpg`, alt="").img-fluid.rounded-1.mb-2 .col-6.col-md-4.px-1 a(href=`${CWD}assets/img/chat/3.jpg` data-gallery="images-1") img(src=`${CWD}assets/img/chat/3.jpg`, alt="").img-fluid.rounded-1.mb-2 .col-6.col-md-4.px-1 a(href=`${CWD}assets/img/chat/4.jpg` data-gallery="images-1") img(src=`${CWD}assets/img/chat/4.jpg`, alt="").img-fluid.rounded-1.mb-2 .col-6.col-md-4.px-1 a(href=`${CWD}assets/img/chat/5.jpg` data-gallery="images-1") img(src=`${CWD}assets/img/chat/5.jpg`, alt="").img-fluid.rounded-1.mb-2 .col-6.col-md-4.px-1 a(href=`${CWD}assets/img/chat/6.jpg` data-gallery="images-1") img(src=`${CWD}assets/img/chat/6.jpg`, alt="").img-fluid.rounded-1.mb-2 mixin ChatContent(thread, index) .tab-pane.card-chat-pane( class=`${index === 0 ? 'active': ''}` id=`chat-${index}` role="tabpanel" aria-labelledby=`chat-link-${index}` ) .chat-content-header .row.flex-between-center .col-6.col-sm-8.d-flex.align-items-center a(href="#!").pe-3.text-700.d-md-none.contacts-list-show .fas.fa-chevron-left .min-w-0 h5.mb-0.text-truncate.fs-9=thread.name .fs-11.text-400 if thread.avatar.status === 'online' | Active On Chat else | Active 7h ago .col-auto button(type="button" data-index=`${index}` data-bs-toggle="tooltip" data-bs-placement="top" title="Start a Call").btn.btn-sm.btn-falcon-primary.me-2 span.fas.fa-phone button(type="button" data-index=`${index}` data-bs-toggle="tooltip" data-bs-placement="top" title="Start a Video Call").btn.btn-sm.btn-falcon-primary.me-2 span.fas.fa-video button(type="button" data-index=`${index}` data-bs-toggle="tooltip" data-bs-placement="top" title="Conversation Information").btn.btn-sm.btn-falcon-primary.btn-chat-info span.fas.fa-info .chat-content-body(style="display: inherit;") +ConversationInfo(thread, index) - var day = ''; .chat-content-scroll-area.scrollbar .d-flex.position-relative.p-3.border-bottom.mb-3.align-items-center +Avatar(Object.assign(thread.avatar, {size: '2xl'})).me-3 .flex-1 h6.mb-0 a(href=`${CWD}${paths['user-profile']}`).text-decoration-none.stretched-link.text-700=thread.name p.mb-0 if thread.avatar.type === 'group' | You are a member of #{thread.name}. Say hi to start conversation to the group. else | You friends with #{thread.name}. Say hi to start the conversation if thread.messages.length each message in thread.messages if(day !== message.time.date) - day = message.time.date .text-center.fs-11.text-500 span=message.time.date |, =message.time.hour if(message.sender.name === 'Me') +MessageRight(message) else +MessageLeft(message, thread.type) mixin ChatContact(config) if config.messages - var length = config.messages.length; - var lastMessage = config.messages[config.messages.length - 1]; = '\n' .hover-actions-trigger.chat-contact.nav-item(class=config.class ? config.class : false role="presentation")&attributes(attributes) .d-md-none.d-lg-block .dropdown.dropdown-active-trigger.dropdown-chat button.hover-actions.btn.btn-link.btn-sm.text-400.dropdown-caret-none.dropdown-toggle.end-0.fs-9.mt-4.me-1.z-1.pb-2.mb-n2( type='button' id=config.dropdownId data-boundary="viewport" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false" ) span.fas.fa-cog(data-fa-transform="shrink-3 down-4") .dropdown-menu.dropdown-menu-end.border.py-2.rounded-2(aria-labelledby=config.dropdownId) a(href='#!').dropdown-item Mute .dropdown-divider a(href='#!').dropdown-item Archive a(href='#!').dropdown-item.text-danger Delete .dropdown-divider a(href='#!').dropdown-item Mark as Unread a(href='#!').dropdown-item Something's Wrong a(href='#!').dropdown-item Ignore Messsages a(href='#!').dropdown-item Block Messages .d-flex.p-3 if config.avatar +Avatar(config.avatar && Object.assign({size: '3xl'}, config.avatar)) .flex-1.chat-contact-body.ms-2.d-md-none.d-lg-block .d-flex.justify-content-between h6.mb-0.chat-contact-title!=config.name if lastMessage span.message-time.fs-11=lastMessage.time.day .min-w-0 .chat-contact-content.pe-3 if lastMessage if lastMessage.sender.name === 'Me' | You: else if config.type === 'group' | #{lastMessage.sender.name}: if lastMessage.messageType === 'attachment' | #{lastMessage.sender.name} | sent | #{lastMessage.status} else !=lastMessage.message else | Say hi to your new friend .position-absolute.bottom-0.end-0.hover-hide if lastMessage if(lastMessage.status === 'sent') span.fas.fa-check.text-400(data-fa-transform="shrink-5 down-4" ) else if(lastMessage.status === 'delivered') span.fas.fa-check-double.text-400(data-fa-transform="shrink-5 down-4") else if(lastMessage.status === 'seen') span.fas.fa-check.text-success(data-fa-transform="shrink-5 down-4") mixin ChatSidebar .chat-sidebar .contacts-list.scrollbar-overlay .nav.nav-tabs.border-0.flex-column(role='tablist' aria-orientation='vertical') each thread, index in messageThreads +ChatContact(thread)( id=`chat-link-${index}` data-bs-toggle="tab" data-bs-target=`#chat-${index}` role="tab" aria-controls=`chat-${index}` aria-selected=index === 0 ? 'true' : 'false' ) form.contacts-search-wrapper .form-group.mb-0.position-relative.d-md-none.d-lg-block.w-100.h-100 input.form-control.form-control-sm.chat-contacts-search.border-0.h-100(type="text" placeholder="Search contacts ...") span.fas.fa-search.contacts-search-icon button.btn.btn-sm.btn-transparent.d-none.d-md-inline-block.d-lg-none span.fas.fa-search.fs-10