1 <div id="contacts" class="page-layout simple left-sidenav inner-sidenav">
4 class="header md-accent-bg"
6 layout-align="space-between center"
9 <div layout="row" layout-align="start center">
10 <div class="logo" layout="row" layout-align="start center">
11 <span class="logo-icon">
12 <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>
14 <span class="logo-text" translate="CONTACTMANAGER.CONTACTS"
22 <div class="search-input-wrapper" layout="row" layout-align="start center">
24 <md-icon md-font-icon="icon-magnify"></md-icon>
26 <md-input-container md-no-float class="m-0">
29 placeholder="Search for anyone"
31 ng-model="vm.query.filter"
32 ng-model-options="{ debounce: 1000 }"
34 translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE"
44 ng-show="vm.selectedContacts.length > 0"
45 class="selected-bar header animate-slide-down md-accent-bg"
47 layout-align="start center"
49 <div class="close-button-wrapper" ng-click="vm.selectedContacts =[]">
50 <md-button layout="row" layout-align="start center">
51 <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>
52 <span translate="CONTACTMANAGER.BACK">Back</span>
56 <div flex layout="row" layout-align="space-between center">
58 <span class="selected-contacts-count">
59 <span>{{vm.selectedContacts.length}}</span>
60 <span translate="CONTACTMANAGER.SELECTED">selected</span>
63 <md-menu class="select-menu" ng-if="!vm.currentThread">
65 class="md-icon-button"
66 ng-click="$mdOpenMenu($event)"
67 aria-label="multi select toggle"
69 translate-attr-aria-label="CONTACTS.MULTI_SELECT_TOGGLE"
71 <md-icon md-font-icon="icon-menu-down"></md-icon>
73 <md-menu-content width="3">
76 ng-click="vm.selectAllContacts()"
77 translate="CONTACTMANAGER.SELECT_ALL"
84 ng-click="vm.deselectContacts()"
85 translate="CONTACTMANAGER.SELECT_NONE"
94 <div class="multi-select-actions">
96 class="md-icon-button"
97 ng-csv="vm.exportSelectedContacts"
99 filename="contacts.csv"
101 <md-icon md-font-icon="icon-file-excel"></md-icon>
104 ng-if="vm.crudPermissions.canDelete"
105 class="md-icon-button"
106 ng-click="vm.deleteSelectedContacts($event)"
107 aria-label="delete selected"
109 translate-attr-label="CONTACTS.DELETE_SELECTED"
111 <md-icon md-font-icon="icon-delete"></md-icon>
116 <!-- / SELECTED BAR -->
119 <div class="content" md-background-bg layout="row" layout-align="start start">
121 <div class="main scrollable" ms-scroll>
123 <div class="column" flex="20">
127 layout-align="center center"
129 ng-click="vm.selectedList = null; vm.selectedCompany = null; vm.selectedTags = []"
131 <md-icon md-font-icon="icon-refresh"></md-icon>{{
132 'CONTACTMANAGER.ALL_CONTACTS' | translate }}
138 <md-input-container class="md-block" flex-gt-sm="">
139 <label translate="CONTACTMANAGER.SELECT_LIST"
140 >Select a list</label
143 placeholder="Select a list"
144 ng-model="vm.selectedList"
145 ng-disabled="vm.lists.count === 0"
147 <md-option ng-value="null"
148 ><em translate="CONTACTMANAGER.ALL">All</em></md-option
152 ng-repeat="list in vm.lists.rows"
153 >{{list.name}}</md-option
156 </md-input-container>
161 <md-input-container class="md-block" flex-gt-sm="">
162 <label translate="CONTACTMANAGER.SELECT_COMPANY"
163 >Select a company</label
166 placeholder="Select a company"
168 ng-model="vm.selectedCompany"
169 ng-disabled="vm.companies.count === 0"
171 <md-option ng-value="null"
172 ><em translate="CONTACTMANAGER.ALL">All</em></md-option
175 ng-value="company.id"
176 ng-repeat="company in vm.companies.rows"
177 >{{company.name}}</md-option
180 </md-input-container>
185 <md-input-container class="md-block" flex-gt-sm="">
186 <label translate="CONTACTMANAGER.SELECT_TAGS"
187 >Select one or more tags</label
191 placeholder="Select one or more tags"
193 ng-model="vm.query.tag"
194 ng-change="vm.getContacts()"
196 <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows"
197 >{{tag.name}}</md-option
200 </md-input-container>
207 <md-table-container ng-init="vm.getAssignedCompanies()">
212 ng-model="vm.selectedContacts"
213 md-progress="vm.promise"
217 md-order="vm.query.sort"
218 md-on-reorder="vm.getContacts"
221 <th md-column md-order-by="id">ID</th>
222 <th md-column md-order-by="firstName">
223 {{'CONTACTMANAGER.FULLNAME' | translate}}
225 <th md-column md-order-by="phone">
226 {{'CONTACTMANAGER.PHONE' | translate}}
228 <th md-column md-order-by="email">
229 {{'CONTACTMANAGER.EMAIL' | translate}}
231 <th md-column md-order-by="createdAt">
232 {{'CONTACTMANAGER.CREATED_AT' | translate}}
234 <th md-column md-order-by="ListId">
235 {{'CONTACTMANAGER.LIST' | translate}}
237 <th md-column md-order-by="CompanyId">
238 {{'CONTACTMANAGER.COMPANY' | translate}}
240 <th md-column md-order-by="tags">
241 {{'CONTACTMANAGER.TAGS' | translate}}
243 <th md-column width="10px"></th>
247 <tr md-row ng-hide="vm.contacts.rows.length">
248 <td md-cell colspan="8">
249 <div layout="row" layout-align="center center">
250 <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO"
251 >No Available Info</span
260 ng-repeat="contact in vm.contacts.rows"
263 ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)"
270 ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)"
274 {{contact.firstName}} {{contact.lastName}}
277 ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)"
284 ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)"
291 ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)"
295 {{contact.createdAt | date:'medium'}}
298 ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)"
302 {{vm.listsMap[contact.ListId]}}
305 ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)"
309 {{vm.companiesMap[contact.CompanyId]}}
311 <td md-cell class="tag">
312 <div ng-if="contact.Tags.length">
314 ng-if="contact.Tags.length == 1"
316 layout-align="center center"
319 md-font-icon="icon-tag"
320 ng-style="{'color': contact.Tags[0].color }"
322 <span class="text-truncate"
323 >{{contact.Tags[0].name}}</span
327 ng-if="contact.Tags.length > 1"
329 layout-align="center center"
331 <md-tooltip md-direction="left" layout="row">
332 <span ng-repeat="tag in contact.Tags"
333 >{{tag.name}}<span ng-if="!$last">, </span></span
336 <md-icon md-font-icon="icon-tag"></md-icon>
343 ng-if="!vm.crudPermissions.readOnly"
347 class="md-icon-button"
350 translate-attr-aria-label="CONTACTMANAGER.MORE"
351 ng-click="$mdOpenMenu($event)"
353 <md-icon md-font-icon="icon-dots-vertical"></md-icon>
356 <md-menu-content width="3">
357 <md-menu-item ng-if="vm.crudPermissions.canEdit">
359 ng-click="vm.editdialog(contact, ev)"
360 translate="CONTACTMANAGER.EDIT_CONTACT"
365 <md-menu-item ng-if="vm.crudPermissions.canEdit">
367 ng-click="vm.mergeContact(ev, contact)"
368 translate="CONTACTMANAGER.MERGE_CONTACT"
373 <md-menu-item ng-if="vm.crudPermissions.canEdit">
375 ng-click="vm.duplicateContact(ev, contact)"
376 translate="CONTACTMANAGER.DUPLICATE_CONTACT"
382 ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete"
385 <md-menu-item ng-if="vm.crudPermissions.canDelete">
387 ng-click="vm.deleteconfirm(contact, ev)"
388 translate="CONTACTMANAGER.DELETE_CONTACT"
399 </md-table-container>
402 md-label="{page: '{{'CONTACTMANAGER.PAGE' | translate}}:', rowsPerPage: '{{'CONTACTMANAGER.ROWSPERPAGE' | translate}}:', of: '{{'CONTACTMANAGER.OF' | translate}}'}"
403 md-limit="vm.query.limit"
404 md-limit-options="[10, 15, 20, 50, 100, 250]"
405 md-page="vm.query.page"
406 md-total="{{vm.contacts.count}}"
407 md-on-paginate="vm.getContacts"
409 ></md-table-pagination>
411 <!-- / USER TABLE -->
418 <!-- ADD USER BUTTON -->
420 id="add-contact-button"
421 ng-if="vm.crudPermissions.canEdit"
422 ng-hide="vm.options.hidden"
424 md-open="vm.options.isOpen"
425 class="md-scale md-fab"
426 ng-class="{ 'md-hover-full': vm.options.hover }"
427 ng-mouseenter="vm.options.isOpen=true"
428 ng-mouseleave="vm.options.isOpen=false"
431 <md-button aria-label="menu" class="md-fab md-accent">
432 <md-icon md-font-icon="icon-plus"></md-icon>
437 class="md-fab md-mini md-warn"
439 flow-init="vm.ngFlowOptions"
440 flow-files-submitted="$flow.upload()"
441 flow-file-success="vm.importContacts($file, $message, $flow)"
442 flow-file-added="vm.fileAdded($file)"
443 aria-label="Select File"
445 translate-attr-aria-label="CONTACTMANAGER.IMPORT_CONTACTS"
449 md-visible="tooltipVisible"
452 {{'CONTACTMANAGER.IMPORT_CONTACTS' | translate}}
454 <md-icon md-font-icon="icon-upload"></md-icon>
457 class="md-fab md-mini md-accent"
458 ng-click="vm.createOrEditContact($event)"
459 aria-label="add contact"
461 translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT"
465 md-visible="tooltipVisible"
468 {{'CONTACTMANAGER.ADD_CONTACT' | translate}}
470 <md-icon md-font-icon="icon-account-plus"></md-icon>
474 <!-- / ADD USER BUTTON -->