diff --git a/app/assets/javascripts/discourse/app/controllers/create-invite.js b/app/assets/javascripts/discourse/app/controllers/create-invite.js index 4ee612ddf3e..9107bbb7063 100644 --- a/app/assets/javascripts/discourse/app/controllers/create-invite.js +++ b/app/assets/javascripts/discourse/app/controllers/create-invite.js @@ -128,8 +128,16 @@ export default Controller.extend( }, @discourseComputed("buffered.expires_at") - expiresAtRelative(expires_at) { - return moment.duration(moment(expires_at) - moment()).humanize(); + expiresAtLabel(expires_at) { + const expiresAt = moment(expires_at); + + return expiresAt.isBefore() + ? I18n.t("user.invited.invite.expired_at_time", { + time: expiresAt.format("LLL"), + }) + : I18n.t("user.invited.invite.expires_in_time", { + time: moment.duration(expiresAt - moment()).humanize(), + }); }, @discourseComputed("type", "buffered.email") diff --git a/app/assets/javascripts/discourse/app/templates/modal/create-invite.hbs b/app/assets/javascripts/discourse/app/templates/modal/create-invite.hbs index ef093240db1..b1d0834b5fe 100644 --- a/app/assets/javascripts/discourse/app/templates/modal/create-invite.hbs +++ b/app/assets/javascripts/discourse/app/templates/modal/create-invite.hbs @@ -9,7 +9,7 @@ {{copy-button selector="input.invite-link" copied=(action "copied")}} -

{{i18n "user.invited.invite.expires_at_time" time=expiresAtRelative}}

+

{{expiresAtLabel}}

diff --git a/app/assets/javascripts/discourse/app/templates/user-invited-show.hbs b/app/assets/javascripts/discourse/app/templates/user-invited-show.hbs index 4d4faf57d97..de6c651abd9 100644 --- a/app/assets/javascripts/discourse/app/templates/user-invited-show.hbs +++ b/app/assets/javascripts/discourse/app/templates/user-invited-show.hbs @@ -85,35 +85,6 @@ {{/each}} - {{else if inviteExpired}} - - - - - - - - - - - {{#each model.invites as |invite|}} - - - - - - - {{/each}} - -
{{i18n "user.invited.invited_via"}}{{i18n "user.invited.sent"}}{{i18n "user.invited.expires_at"}}
- {{#if invite.email}} - {{invite.email}} - {{else}} - {{i18n "user.invited.invited_via_link" count=invite.redemption_count max=invite.max_redemptions_allowed}} - {{/if}} - {{raw-date invite.updated_at}}{{raw-date invite.expires_at}} - {{d-button icon="trash-alt" class="cancel" action=(action "destroyInvite" invite) title=(if invite.destroyed "user.invited.removed" "user.invited.remove")}} -
{{else}} @@ -130,7 +101,8 @@ {{#each model.invites as |invite|}} - {{#if currentUser.staff}} - {{/if}} - - + - diff --git a/app/assets/stylesheets/desktop/user.scss b/app/assets/stylesheets/desktop/user.scss index 988be6e14ba..7e21774f3c6 100644 --- a/app/assets/stylesheets/desktop/user.scss +++ b/app/assets/stylesheets/desktop/user.scss @@ -84,16 +84,22 @@ margin-right: 0px; } -.user-invite-list { +table.user-invite-list { width: 100%; margin-top: 15px; + tr { td { padding: 0.667em; - &.actions { + + &.invite-actions { white-space: nowrap; width: 100px; } + + .label { + display: none; + } } } } diff --git a/app/assets/stylesheets/mobile/user.scss b/app/assets/stylesheets/mobile/user.scss index 693d0777f61..832ba613d30 100644 --- a/app/assets/stylesheets/mobile/user.scss +++ b/app/assets/stylesheets/mobile/user.scss @@ -315,24 +315,50 @@ padding: 0; } } - table { - tr:first-of-type { + + table.user-invite-list { + thead { display: none; } + tr { - display: flex; - flex-wrap: wrap; - margin-bottom: 1em; + display: grid; + grid-template-columns: repeat(2, 1fr); + padding: 0.25em; } - td:first-of-type { - margin-right: 1em; - } - td:nth-of-type(n + 3) { + + .label { display: block; - width: 50%; - padding: 0.25em 0 1em 0; + color: var(--primary-medium); + font-size: $font-down-1; + margin: 0.5em 0 0.15em 0; + } + + td.invite-type { + grid-column-start: 1; + grid-column-end: -2; + order: 1; + vertical-align: middle; + } + + td.invite-actions { + order: 2; + align-self: center; + text-align: right; + } + + td.invite-groups { + grid-column-start: 1; + grid-column-end: -1; + order: 3; + } + + td.invite-updated-at, + td.invite-expires-at { + order: 4; } } + .user-invite-none { margin-top: 1em; } diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index f317a7a2a91..56a66288b62 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -1498,7 +1498,8 @@ en: instructions: "Share this link to instantly grant access to this site:" copy_link: "copy link" - expires_at_time: "Expires in %{time}." + expires_in_time: "Expires in %{time}." + expired_at_time: "Expired at %{time}." show_advanced: "Show Advanced Options" hide_advanced: "Hide Advanced Options"
+ +
{{i18n "user.invited.invited_via"}}
{{#if invite.email}} {{invite.email}} {{else}} @@ -138,7 +110,8 @@ {{/if}}
+ +
{{i18n "user.invited.groups"}}
{{#each invite.groups as |g|}} {{g.name}} {{else}} @@ -146,15 +119,21 @@ {{/each}}
{{format-date invite.updated_at}} - {{#if invite.expired}} + +
{{i18n "user.invited.sent"}}
+ {{format-date invite.updated_at}} +
+
{{i18n "user.invited.expires_at"}}
+ {{#if inviteExpired}} + {{raw-date invite.expires_at}} + {{else if invite.expired}} {{i18n "user.invited.expired"}} {{else}} {{raw-date invite.expires_at}} {{/if}}
+ {{d-button icon="pencil-alt" action=(action "editInvite" invite) title="user.invited.edit"}} {{d-button icon="trash-alt" class="cancel" action=(action "destroyInvite" invite) title=(if invite.destroyed "user.invited.removed" "user.invited.remove")}}