diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-10-01 18:12:53 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-10-01 18:12:53 +0300 |
commit | 63fc59f6fdf8c61e7e342f89aecaf565b645960d (patch) | |
tree | 340075f94a18cd02899e6f77f1651f63adccd353 /app/assets | |
parent | 6c7d90ede4d2890b2ca740239cd9a5338f12ba34 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/assets')
7 files changed, 22 insertions, 95 deletions
diff --git a/app/assets/javascripts/members/components/table/expires_at.vue b/app/assets/javascripts/members/components/table/expires_at.vue deleted file mode 100644 index c91de061b50..00000000000 --- a/app/assets/javascripts/members/components/table/expires_at.vue +++ /dev/null @@ -1,66 +0,0 @@ -<script> -import { GlSprintf, GlTooltipDirective } from '@gitlab/ui'; -import { - approximateDuration, - differenceInSeconds, - formatDate, - getDayDifference, -} from '~/lib/utils/datetime_utility'; -import { DAYS_TO_EXPIRE_SOON } from '../../constants'; - -export default { - name: 'ExpiresAt', - components: { GlSprintf }, - directives: { - GlTooltip: GlTooltipDirective, - }, - props: { - date: { - type: String, - required: false, - default: null, - }, - }, - computed: { - noExpirationSet() { - return this.date === null; - }, - parsed() { - return new Date(this.date); - }, - differenceInSeconds() { - return differenceInSeconds(new Date(), this.parsed); - }, - isExpired() { - return this.differenceInSeconds <= 0; - }, - inWords() { - return approximateDuration(this.differenceInSeconds); - }, - formatted() { - return formatDate(this.parsed); - }, - expiresSoon() { - return getDayDifference(new Date(), this.parsed) < DAYS_TO_EXPIRE_SOON; - }, - cssClass() { - return { - 'gl-text-red-500': this.isExpired, - 'gl-text-orange-500': this.expiresSoon, - }; - }, - }, -}; -</script> - -<template> - <span v-if="noExpirationSet">{{ s__('Members|No expiration set') }}</span> - <span v-else v-gl-tooltip.hover :title="formatted" :class="cssClass"> - <template v-if="isExpired">{{ s__('Members|Expired') }}</template> - <gl-sprintf v-else :message="s__('Members|in %{time}')"> - <template #time> - {{ inWords }} - </template> - </gl-sprintf> - </span> -</template> diff --git a/app/assets/javascripts/members/components/table/members_table.vue b/app/assets/javascripts/members/components/table/members_table.vue index debc3fc31f6..3caecdd1d4b 100644 --- a/app/assets/javascripts/members/components/table/members_table.vue +++ b/app/assets/javascripts/members/components/table/members_table.vue @@ -10,7 +10,6 @@ import RemoveGroupLinkModal from '../modals/remove_group_link_modal.vue'; import RemoveMemberModal from '../modals/remove_member_modal.vue'; import CreatedAt from './created_at.vue'; import ExpirationDatepicker from './expiration_datepicker.vue'; -import ExpiresAt from './expires_at.vue'; import MemberActionButtons from './member_action_buttons.vue'; import MemberAvatar from './member_avatar.vue'; import MemberSource from './member_source.vue'; @@ -24,7 +23,6 @@ export default { GlPagination, MemberAvatar, CreatedAt, - ExpiresAt, MembersTableCell, MemberSource, MemberActionButtons, @@ -182,10 +180,6 @@ export default { <created-at :date="createdAt" /> </template> - <template #cell(expires)="{ item: { expiresAt } }"> - <expires-at :date="expiresAt" /> - </template> - <template #cell(maxRole)="{ item: member }"> <members-table-cell #default="{ permissions }" :member="member"> <role-dropdown v-if="permissions.canUpdate" :permissions="permissions" :member="member" /> diff --git a/app/assets/javascripts/members/constants.js b/app/assets/javascripts/members/constants.js index 6f465245d20..54d4442d5ce 100644 --- a/app/assets/javascripts/members/constants.js +++ b/app/assets/javascripts/members/constants.js @@ -38,12 +38,6 @@ export const FIELDS = [ tdClass: 'col-meta', }, { - key: 'expires', - label: __('Access expires'), - thClass: 'col-meta', - tdClass: 'col-meta', - }, - { key: 'maxRole', label: __('Max role'), thClass: 'col-max-role', diff --git a/app/assets/javascripts/pages/groups/group_members/index.js b/app/assets/javascripts/pages/groups/group_members/index.js index 0137ff87979..01a371920f8 100644 --- a/app/assets/javascripts/pages/groups/group_members/index.js +++ b/app/assets/javascripts/pages/groups/group_members/index.js @@ -11,7 +11,7 @@ import { MEMBER_TYPES } from '~/members/constants'; import { groupLinkRequestFormatter } from '~/members/utils'; import UsersSelect from '~/users_select'; -const SHARED_FIELDS = ['account', 'expires', 'maxRole', 'expiration', 'actions']; +const SHARED_FIELDS = ['account', 'maxRole', 'expiration', 'actions']; initMembersApp(document.querySelector('.js-group-members-list-app'), { [MEMBER_TYPES.user]: { diff --git a/app/assets/javascripts/pages/projects/pipeline_schedules/shared/components/timezone_dropdown.js b/app/assets/javascripts/pages/projects/pipeline_schedules/shared/components/timezone_dropdown.js index 16c4a6191b2..e92b9b30fa4 100644 --- a/app/assets/javascripts/pages/projects/pipeline_schedules/shared/components/timezone_dropdown.js +++ b/app/assets/javascripts/pages/projects/pipeline_schedules/shared/components/timezone_dropdown.js @@ -27,19 +27,22 @@ export const findTimezoneByIdentifier = (tzList = [], identifier = null) => { }; export default class TimezoneDropdown { - constructor({ $dropdownEl, $inputEl, onSelectTimezone, displayFormat } = defaults) { + constructor({ + $dropdownEl, + $inputEl, + onSelectTimezone, + displayFormat, + allowEmpty = false, + } = defaults) { this.$dropdown = $dropdownEl; this.$dropdownToggle = this.$dropdown.find('.dropdown-toggle-text'); this.$input = $inputEl; - this.timezoneData = this.$dropdown.data('data'); + this.timezoneData = this.$dropdown.data('data') || []; this.onSelectTimezone = onSelectTimezone; this.displayFormat = displayFormat || defaults.displayFormat; + this.allowEmpty = allowEmpty; - this.initialTimezone = - findTimezoneByIdentifier(this.timezoneData, this.$input.val()) || defaultTimezone; - - this.initDefaultTimezone(); this.initDropdown(); } @@ -52,24 +55,25 @@ export default class TimezoneDropdown { search: { fields: ['name'], }, - clicked: (cfg) => this.updateInputValue(cfg), + clicked: (cfg) => this.handleDropdownChange(cfg), text: (item) => formatTimezone(item), }); - this.setDropdownToggle(this.displayFormat(this.initialTimezone)); - } + const initialTimezone = findTimezoneByIdentifier(this.timezoneData, this.$input.val()); - initDefaultTimezone() { - if (!this.$input.val()) { - this.$input.val(defaultTimezone.name); + if (initialTimezone !== null) { + this.setDropdownValue(initialTimezone); + } else if (!this.allowEmpty) { + this.setDropdownValue(defaultTimezone); } } - setDropdownToggle(dropdownText) { - this.$dropdownToggle.text(dropdownText); + setDropdownValue(timezone) { + this.$dropdownToggle.text(this.displayFormat(timezone)); + this.$input.val(timezone.name); } - updateInputValue({ selectedObj, e }) { + handleDropdownChange({ selectedObj, e }) { e.preventDefault(); this.$input.val(selectedObj.identifier); if (this.onSelectTimezone) { diff --git a/app/assets/javascripts/pages/projects/project_members/index.js b/app/assets/javascripts/pages/projects/project_members/index.js index 0b662c945c6..947bbdacf2c 100644 --- a/app/assets/javascripts/pages/projects/project_members/index.js +++ b/app/assets/javascripts/pages/projects/project_members/index.js @@ -26,7 +26,7 @@ initInviteMembersForm(); new UsersSelect(); // eslint-disable-line no-new -const SHARED_FIELDS = ['account', 'expires', 'maxRole', 'expiration', 'actions']; +const SHARED_FIELDS = ['account', 'maxRole', 'expiration', 'actions']; initMembersApp(document.querySelector('.js-project-members-list-app'), { [MEMBER_TYPES.user]: { tableFields: SHARED_FIELDS.concat(['source', 'granted']), diff --git a/app/assets/javascripts/profile/profile.js b/app/assets/javascripts/profile/profile.js index c49ade2bbb8..ff9b47cdcd6 100644 --- a/app/assets/javascripts/profile/profile.js +++ b/app/assets/javascripts/profile/profile.js @@ -21,6 +21,7 @@ export default class Profile { $inputEl: this.$inputEl, $dropdownEl: $('.js-timezone-dropdown'), displayFormat: (selectedItem) => formatTimezone(selectedItem), + allowEmpty: true, }); } |