diff --git a/GITLAB_KAS_VERSION b/GITLAB_KAS_VERSION index fbbf04fee7f..ecfb0895868 100644 --- a/GITLAB_KAS_VERSION +++ b/GITLAB_KAS_VERSION @@ -1 +1 @@ -19cdf695f882cf538ff87ab175d9f7b782b5ee75 +1cbd47b2d0b60cd21113a713680c6859450a2db5 diff --git a/GITLAB_ZOEKT_VERSION b/GITLAB_ZOEKT_VERSION index 885415662ff..610e28725be 100644 --- a/GITLAB_ZOEKT_VERSION +++ b/GITLAB_ZOEKT_VERSION @@ -1 +1 @@ -0.21.0 +0.23.1 diff --git a/app/assets/javascripts/admin/groups/index/components/app.vue b/app/assets/javascripts/admin/groups/index/components/app.vue index 5fd871d5bad..e280f678c99 100644 --- a/app/assets/javascripts/admin/groups/index/components/app.vue +++ b/app/assets/javascripts/admin/groups/index/components/app.vue @@ -6,6 +6,7 @@ import { TIMESTAMP_TYPE_CREATED_AT, TIMESTAMP_TYPE_UPDATED_AT, } from '~/vue_shared/components/resource_lists/constants'; +import adminGroupCountsQuery from '../graphql/queries/group_counts.query.graphql'; import { ADMIN_GROUPS_TABS, SORT_OPTIONS, @@ -13,6 +14,7 @@ import { SORT_OPTION_CREATED, FILTERED_SEARCH_TERM_KEY, FILTERED_SEARCH_NAMESPACE, + FIRST_TAB_ROUTE_NAMES, } from '../constants'; export default { @@ -22,11 +24,13 @@ export default { FILTERED_SEARCH_TERM_KEY, FILTERED_SEARCH_NAMESPACE, RECENT_SEARCHES_STORAGE_KEY_GROUPS, + FIRST_TAB_ROUTE_NAMES, timestampTypeMap: { [SORT_OPTION_CREATED.value]: TIMESTAMP_TYPE_CREATED_AT, [SORT_OPTION_UPDATED.value]: TIMESTAMP_TYPE_UPDATED_AT, }, PAGINATION_TYPE_KEYSET, + tabCountsQuery: adminGroupCountsQuery, name: 'AdminGroupsApp', components: { TabsWithList }, }; @@ -44,5 +48,8 @@ export default { :timestamp-type-map="$options.timestampTypeMap" initial-sort="" :pagination-type="$options.PAGINATION_TYPE_KEYSET" + :tab-counts-query="$options.tabCountsQuery" + :tab-counts-query-error-message="__('An error occurred loading the group counts.')" + :first-tab-route-names="$options.FIRST_TAB_ROUTE_NAMES" /> diff --git a/app/assets/javascripts/admin/groups/index/constants.js b/app/assets/javascripts/admin/groups/index/constants.js index ea66059a806..166d92cd1c9 100644 --- a/app/assets/javascripts/admin/groups/index/constants.js +++ b/app/assets/javascripts/admin/groups/index/constants.js @@ -33,6 +33,7 @@ export const ACTIVE_TAB = { text: __('Active'), value: 'active', variables: { active: true }, + countsQueryPath: 'active', }; export const INACTIVE_TAB = { @@ -40,6 +41,7 @@ export const INACTIVE_TAB = { text: __('Inactive'), value: 'inactive', variables: { active: false }, + countsQueryPath: 'inactive', }; export const SORT_OPTION_NAME = { @@ -75,5 +77,7 @@ export const BASE_ROUTE = '/admin/groups'; export const ADMIN_GROUPS_ROUTE_NAME = 'admin-groups'; +export const FIRST_TAB_ROUTE_NAMES = [ADMIN_GROUPS_ROUTE_NAME]; + export const FILTERED_SEARCH_TERM_KEY = 'search'; export const FILTERED_SEARCH_NAMESPACE = 'admin-groups'; diff --git a/app/assets/javascripts/admin/groups/index/graphql/queries/group_counts.query.graphql b/app/assets/javascripts/admin/groups/index/graphql/queries/group_counts.query.graphql new file mode 100644 index 00000000000..f8c8e831aea --- /dev/null +++ b/app/assets/javascripts/admin/groups/index/graphql/queries/group_counts.query.graphql @@ -0,0 +1,10 @@ +# Since GraphQL doesn't support string comparison in @skip(if:) +# we use the naming convention of skip${tabValue} in camelCase +query adminGroupCountsQuery($skipActive: Boolean = false, $skipInactive: Boolean = false) { + active: groups(allAvailable: true, active: true) @skip(if: $skipActive) { + count + } + inactive: groups(allAvailable: true, active: false) @skip(if: $skipInactive) { + count + } +} diff --git a/app/assets/javascripts/boards/components/board_list.vue b/app/assets/javascripts/boards/components/board_list.vue index f1ef83b6754..34a5331a61a 100644 --- a/app/assets/javascripts/boards/components/board_list.vue +++ b/app/assets/javascripts/boards/components/board_list.vue @@ -685,7 +685,10 @@ export default { }); } finally { this.addItemToListInProgress = false; - this.setActiveWorkItem(issuable); + // Only open the drawer if issue creation was successful (default iid of '-1' indicates failure) + if (issuable && issuable?.iid !== '-1') { + this.setActiveWorkItem(issuable); + } } }, setActiveWorkItem(boardItem) { diff --git a/app/assets/javascripts/environments/environment_details/components/kubernetes/kubernetes_agent_info.vue b/app/assets/javascripts/environments/environment_details/components/kubernetes/kubernetes_agent_info.vue index 638615f1e4e..a14d904d039 100644 --- a/app/assets/javascripts/environments/environment_details/components/kubernetes/kubernetes_agent_info.vue +++ b/app/assets/javascripts/environments/environment_details/components/kubernetes/kubernetes_agent_info.vue @@ -1,10 +1,10 @@ diff --git a/app/assets/javascripts/environments/environment_details/components/kubernetes/kubernetes_overview.vue b/app/assets/javascripts/environments/environment_details/components/kubernetes/kubernetes_overview.vue index 10c23c48a49..e9c0274d678 100644 --- a/app/assets/javascripts/environments/environment_details/components/kubernetes/kubernetes_overview.vue +++ b/app/assets/javascripts/environments/environment_details/components/kubernetes/kubernetes_overview.vue @@ -1,13 +1,5 @@ diff --git a/app/assets/javascripts/import_entities/import_groups/components/import_table.vue b/app/assets/javascripts/import_entities/import_groups/components/import_table.vue index 08f28fc465a..30dfc2159e3 100644 --- a/app/assets/javascripts/import_entities/import_groups/components/import_table.vue +++ b/app/assets/javascripts/import_entities/import_groups/components/import_table.vue @@ -246,14 +246,6 @@ export default { return this.filter.length > 0 && !this.hasGroups; }, - statusMessage() { - return this.filter.length === 0 - ? s__('BulkImport|Showing %{start}-%{end} of %{total} that you own from %{link}') - : s__( - 'BulkImport|Showing %{start}-%{end} of %{total} that you own matching filter "%{filter}" from %{link}', - ); - }, - paginationInfo() { const { page, perPage, total } = this.bulkImportSourceGroups?.pageInfo ?? { page: 1, @@ -679,18 +671,21 @@ export default { @@ -745,41 +740,9 @@ export default { -
- - - - - - - - - - - - - - -
-
+
-import { - GlTable, - GlBadge, - GlPagination, - GlDisclosureDropdown, - GlButton, - GlTooltipDirective, -} from '@gitlab/ui'; +import { GlTable, GlBadge, GlPagination, GlButton, GlTooltipDirective } from '@gitlab/ui'; import { __ } from '~/locale'; import PodLogsButton from '~/environments/environment_details/components/kubernetes/pod_logs_button.vue'; import { @@ -21,7 +14,6 @@ export default { GlBadge, GlPagination, PodLogsButton, - GlDisclosureDropdown, GlButton, }, directives: { @@ -69,22 +61,14 @@ export default { this.selectedItem = item; this.$emit('select-item', item); }, - getActions(item) { + getDeleteAction(item) { const actions = item.actions || []; - return actions.map((action) => { - return { - text: action.text, - extraAttrs: { class: action.class }, - action: () => { - this.$emit(action.name, item); - }, - }; - }); + + return actions.find((action) => action.name === 'delete-pod') || null; }, }, i18n: { emptyText: __('No results found'), - actions: __('Actions'), }, WORKLOAD_STATUS_BADGE_VARIANTS, }; @@ -100,17 +84,22 @@ export default { :empty-text="$options.i18n.emptyText" primary-key="name" show-empty - stacked="md" + stacked="lg" > - - diff --git a/app/assets/javascripts/kubernetes_dashboard/constants.js b/app/assets/javascripts/kubernetes_dashboard/constants.js index c02a6ddb72a..bd866410909 100644 --- a/app/assets/javascripts/kubernetes_dashboard/constants.js +++ b/app/assets/javascripts/kubernetes_dashboard/constants.js @@ -73,30 +73,25 @@ export const PODS_TABLE_FIELDS = [ { key: 'name', label: s__('KubernetesDashboard|Name'), - tdClass: 'md:gl-w-1/4 gl-break-anywhere', + tdClass: 'lg:gl-w-1/4 gl-break-anywhere', }, { key: 'status', label: s__('KubernetesDashboard|Status'), - tdClass: 'md:gl-w-1/6', + tdClass: 'lg:gl-w-1/6', }, { key: 'namespace', label: s__('KubernetesDashboard|Namespace'), - tdClass: 'md:gl-w-1/4 gl-break-anywhere', + tdClass: 'lg:gl-w-1/4 gl-break-anywhere', }, { key: 'age', label: s__('KubernetesDashboard|Age'), }, - { - key: 'logs', - label: s__('KubernetesDashboard|Logs'), - sortable: false, - }, { key: 'actions', - label: '', + label: s__('KubernetesDashboard|Actions'), sortable: false, }, ]; diff --git a/app/assets/javascripts/notes/components/note_header.vue b/app/assets/javascripts/notes/components/note_header.vue index 9e277fbc8bd..b8153a60ff1 100644 --- a/app/assets/javascripts/notes/components/note_header.vue +++ b/app/assets/javascripts/notes/components/note_header.vue @@ -156,20 +156,21 @@ export default { data-testid="author-name" v-text="authorName" > - - - + + + + + { if (!uploadFileTriggerEl) return false; - const { targetBranch, originalBranch, canPushCode, canPushToBranch, path, projectPath } = - uploadFileTriggerEl.dataset; + const { + targetBranch, + originalBranch, + canPushCode, + canPushToBranch, + path, + projectPath, + fullName, + } = uploadFileTriggerEl.dataset; return new Vue({ el: uploadFileTriggerEl, - router: createRouter(projectPath, originalBranch), + router: createRouter(projectPath, originalBranch, fullName), provide: { targetBranch, originalBranch, diff --git a/app/assets/javascripts/sidebar/components/assignees/assignee_avatar_link.vue b/app/assets/javascripts/sidebar/components/assignees/assignee_avatar_link.vue index 7c4e9f0e488..b5f3c2ed87b 100644 --- a/app/assets/javascripts/sidebar/components/assignees/assignee_avatar_link.vue +++ b/app/assets/javascripts/sidebar/components/assignees/assignee_avatar_link.vue @@ -1,4 +1,5 @@ @@ -99,23 +103,24 @@ export default {
- - - + + + + +
diff --git a/app/assets/javascripts/work_items/components/notes/work_item_note.vue b/app/assets/javascripts/work_items/components/notes/work_item_note.vue index 31315434134..1e0c13300a3 100644 --- a/app/assets/javascripts/work_items/components/notes/work_item_note.vue +++ b/app/assets/javascripts/work_items/components/notes/work_item_note.vue @@ -1,5 +1,5 @@