extends ../layout block content main.content.content-alt .container .row .col-md-10.col-md-offset-1 h1(ng-non-bindable) #{name || translate(translations.title)} .card(ng-controller="UserMembershipController") .page-header .pull-right(ng-cloak) small(ng-show="groupSize && selectedUsers.length == 0") !{translate("you_have_added_x_of_group_size_y", {addedUsersSize:'{{ users.length }}', groupSize: '{{ groupSize }}'}, ['strong', 'strong'])} a.btn.btn-danger( href, ng-show="selectedUsers.length > 0" ng-click="removeMembers()" ) #{translate(translations.remove)} h3 #{translate(translations.subtitle)} .row-spaced-small div(ng-if="inputs.removeMembers.error", ng-cloak) div.alert.alert-danger(ng-if="inputs.removeMembers.errorMessage") | #{translate('error')}: | {{ inputs.removeMembers.errorMessage }} div.alert.alert-danger(ng-if="!inputs.removeMembers.errorMessage") | #{translate('generic_something_went_wrong')} ul.list-unstyled.structured-list( select-all-list, ng-cloak ) li.container-fluid .row .col-md-4 input.select-all( select-all, type="checkbox" ) span.header #{translate("email")} .col-md-4 span.header #{translate("name")} .col-md-2 span.header #{translate("last_login")} .col-md-2 span.header #{translate("accepted_invite")} li.container-fluid( ng-repeat="user in users | orderBy:'email':true", ng-controller="UserMembershipListItemController" ) .row .col-md-4 input.select-item( select-individual, type="checkbox", ng-model="user.selected" ) span.email {{ user.email }} .col-md-4 span.name {{ user.first_name }} {{ user.last_name }} .col-md-2 span.lastLogin {{ user.last_logged_in_at | formatDate:'Do MMM YYYY' }} .col-md-2 span.registered i.fa.fa-check.text-success(ng-show="!user.invite" aria-hidden="true") span.sr-only(ng-show="!user.invite") #{translate('accepted_invite')} i.fa.fa-times(ng-show="user.invite" aria-hidden="true") span.sr-only(ng-show="user.invite") #{translate('invite_not_accepted')} li( ng-if="users.length == 0", ng-cloak ) .row .col-md-12.text-centered small #{translate("no_members")} hr div(ng-if="!groupSize || users.length < groupSize", ng-cloak) p.small #{translate("add_more_members")} div(ng-if="inputs.addMembers.error", ng-cloak) div.alert.alert-danger(ng-if="inputs.addMembers.errorMessage") | #{translate('error')}: | {{ inputs.addMembers.errorMessage }} div.alert.alert-danger(ng-if="!inputs.addMembers.errorMessage") | #{translate('generic_something_went_wrong')} form.form .row .col-xs-6 input.form-control( name="email", type="text", placeholder="jane@example.com, joe@example.com", ng-model="inputs.addMembers.content", on-enter="addMembers()" aria-describedby="add-members-description" ) .col-xs-4 button.btn.btn-primary(ng-click="addMembers()", ng-disabled="inputs.addMembers.inflightCount > 0") span(ng-show="inputs.addMembers.inflightCount === 0") #{translate("add")} span(ng-show="inputs.addMembers.inflightCount > 0") #{translate("adding")}… .col-xs-2(ng-if="paths.exportMembers", ng-cloak) a(href=paths.exportMembers) #{translate('export_csv')} .row .col-xs-8 span.help-block #{translate('add_comma_separated_emails_help')} div(ng-if="groupSize && users.length >= groupSize && users.length > 0", ng-cloak) .row .col-xs-2.col-xs-offset-10(ng-if="paths.exportMembers", ng-cloak) a(href=paths.exportMembers) #{translate('export_csv')} script(type="text/javascript", nonce=scriptNonce). window.users = !{StringHelper.stringifyJsonForScript(users)}; window.paths = !{StringHelper.stringifyJsonForScript(paths)}; window.groupSize = #{groupSize || 'null'};