diff --git a/.eslintrc.yml b/.eslintrc.yml index 99c390e5060..75c52ac1319 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -42,48 +42,50 @@ rules: no-jquery/no-serialize: error promise/always-return: off promise/no-callback-in-promise: off - "@gitlab/no-global-event-off": error + '@gitlab/no-global-event-off': error import/order: - - error - - groups: - - builtin - - external - - internal - - parent - - sibling - - index - pathGroups: - - pattern: ~/** - group: internal - - pattern: emojis/** - group: internal - - pattern: "{ee_,}empty_states/**" - group: internal - - pattern: "{ee_,}icons/**" - group: internal - - pattern: "{ee_,}images/**" - group: internal - - pattern: vendor/** - group: internal - - pattern: shared_queries/** - group: internal - - pattern: "{ee_,}spec/**" - group: internal - - pattern: "{ee_,}jest/**" - group: internal - - pattern: ee_else_ce/** - group: internal - - pattern: ee/** - group: internal - - pattern: ee_component/** - group: internal - - pattern: "{test_,}helpers/**" - group: internal - - pattern: test_fixtures/** - group: internal + - error + - groups: + - builtin + - external + - internal + - parent + - sibling + - index + pathGroups: + - pattern: ~/** + group: internal + - pattern: emojis/** + group: internal + - pattern: '{ee_,}empty_states/**' + group: internal + - pattern: '{ee_,}icons/**' + group: internal + - pattern: '{ee_,}images/**' + group: internal + - pattern: vendor/** + group: internal + - pattern: shared_queries/** + group: internal + - pattern: '{ee_,}spec/**' + group: internal + - pattern: '{ee_,}jest/**' + group: internal + - pattern: ee_else_ce/** + group: internal + - pattern: ee/** + group: internal + - pattern: ee_component/** + group: internal + - pattern: '{test_,}helpers/**' + group: internal + - pattern: test_fixtures/** + group: internal + alphabetize: + order: asc overrides: - files: - '**/spec/**/*' rules: - "@gitlab/require-i18n-strings": off - "@gitlab/no-runtime-template-compiler": off + '@gitlab/require-i18n-strings': off + '@gitlab/no-runtime-template-compiler': off diff --git a/app/assets/javascripts/behaviors/markdown/editor_extensions.js b/app/assets/javascripts/behaviors/markdown/editor_extensions.js index ee50075862a..b512e4dbc8b 100644 --- a/app/assets/javascripts/behaviors/markdown/editor_extensions.js +++ b/app/assets/javascripts/behaviors/markdown/editor_extensions.js @@ -22,27 +22,24 @@ import Heading from './nodes/heading'; import HorizontalRule from './nodes/horizontal_rule'; import Image from './nodes/image'; -import Reference from './nodes/reference'; -import Table from './nodes/table'; -import TableHead from './nodes/table_head'; -import TableBody from './nodes/table_body'; -import TableHeaderRow from './nodes/table_header_row'; -import TableRow from './nodes/table_row'; -import TableCell from './nodes/table_cell'; - -import TableOfContents from './nodes/table_of_contents'; -import TaskList from './nodes/task_list'; -import TaskListItem from './nodes/task_list_item'; -import Video from './nodes/video'; - -import OrderedList from './nodes/ordered_list'; import ListItem from './nodes/list_item'; - +import OrderedList from './nodes/ordered_list'; import OrderedTaskList from './nodes/ordered_task_list'; import Paragraph from './nodes/paragraph'; - +import Reference from './nodes/reference'; import Summary from './nodes/summary'; +import Table from './nodes/table'; +import TableBody from './nodes/table_body'; +import TableCell from './nodes/table_cell'; +import TableHead from './nodes/table_head'; +import TableHeaderRow from './nodes/table_header_row'; +import TableOfContents from './nodes/table_of_contents'; +import TableRow from './nodes/table_row'; + +import TaskList from './nodes/task_list'; +import TaskListItem from './nodes/task_list_item'; import Text from './nodes/text'; +import Video from './nodes/video'; // The filters referenced in lib/banzai/pipeline/gfm_pipeline.rb transform // GitLab Flavored Markdown (GFM) to HTML. diff --git a/app/assets/javascripts/boards/index.js b/app/assets/javascripts/boards/index.js index ac7d8e542c4..15f7e2191a2 100644 --- a/app/assets/javascripts/boards/index.js +++ b/app/assets/javascripts/boards/index.js @@ -1,9 +1,9 @@ import Vue from 'vue'; +import VueApollo from 'vue-apollo'; import { mapActions, mapGetters } from 'vuex'; import 'ee_else_ce/boards/models/issue'; import 'ee_else_ce/boards/models/list'; -import VueApollo from 'vue-apollo'; import BoardSidebar from 'ee_else_ce/boards/components/board_sidebar'; import initNewListDropdown from 'ee_else_ce/boards/components/new_list_dropdown'; import boardConfigToggle from 'ee_else_ce/boards/config_toggle'; @@ -15,33 +15,31 @@ import { } from 'ee_else_ce/boards/ee_functions'; import toggleEpicsSwimlanes from 'ee_else_ce/boards/toggle_epics_swimlanes'; import toggleLabels from 'ee_else_ce/boards/toggle_labels'; - import BoardAddNewColumnTrigger from '~/boards/components/board_add_new_column_trigger.vue'; import BoardContent from '~/boards/components/board_content.vue'; import BoardExtraActions from '~/boards/components/board_extra_actions.vue'; -import { deprecatedCreateFlash as Flash } from '~/flash'; -import createDefaultClient from '~/lib/graphql'; -import { __ } from '~/locale'; import './models/label'; import './models/assignee'; - -import toggleFocusMode from '~/boards/toggle_focus'; -import FilteredSearchBoards from '~/boards/filtered_search_boards'; -import eventHub from '~/boards/eventhub'; -import sidebarEventHub from '~/sidebar/event_hub'; import '~/boards/models/milestone'; import '~/boards/models/project'; +import '~/boards/filters/due_date_filters'; +import BoardAddIssuesModal from '~/boards/components/modal/index.vue'; +import eventHub from '~/boards/eventhub'; +import FilteredSearchBoards from '~/boards/filtered_search_boards'; +import modalMixin from '~/boards/mixins/modal_mixins'; import store from '~/boards/stores'; import boardsStore from '~/boards/stores/boards_store'; import ModalStore from '~/boards/stores/modal_store'; -import modalMixin from '~/boards/mixins/modal_mixins'; -import '~/boards/filters/due_date_filters'; -import BoardAddIssuesModal from '~/boards/components/modal/index.vue'; +import toggleFocusMode from '~/boards/toggle_focus'; +import { deprecatedCreateFlash as Flash } from '~/flash'; +import createDefaultClient from '~/lib/graphql'; import { NavigationType, convertObjectPropsToCamelCase, parseBoolean, } from '~/lib/utils/common_utils'; +import { __ } from '~/locale'; +import sidebarEventHub from '~/sidebar/event_hub'; import mountMultipleBoardsSwitcher from './mount_multiple_boards_switcher'; Vue.use(VueApollo); diff --git a/app/assets/javascripts/commit/pipelines/pipelines_table.vue b/app/assets/javascripts/commit/pipelines/pipelines_table.vue index 4362263b0dd..787152d00ef 100644 --- a/app/assets/javascripts/commit/pipelines/pipelines_table.vue +++ b/app/assets/javascripts/commit/pipelines/pipelines_table.vue @@ -1,13 +1,13 @@ @@ -36,10 +97,10 @@ export default {

- {{ s__('ProfilePreferences|Integrations') }} + {{ $options.i18n.integrations }}

- {{ s__('ProfilePreferences|Customize integrations with third party services.') }} + {{ $options.i18n.integrationsDescription }}

@@ -52,5 +113,19 @@ export default { :config="$options.integrationViewConfigs[view.name]" />
+
+
+
+ + {{ $options.i18n.saveChanges }} + +
+
diff --git a/app/assets/javascripts/profile/preferences/constants.js b/app/assets/javascripts/profile/preferences/constants.js new file mode 100644 index 00000000000..ea8464ba065 --- /dev/null +++ b/app/assets/javascripts/profile/preferences/constants.js @@ -0,0 +1,22 @@ +import { s__, __ } from '~/locale'; + +export const INTEGRATION_VIEW_CONFIGS = { + sourcegraph: { + title: s__('Preferences|Sourcegraph'), + label: s__('Preferences|Enable integrated code intelligence on code views'), + formName: 'sourcegraph_enabled', + }, + gitpod: { + title: s__('Preferences|Gitpod'), + label: s__('Preferences|Enable Gitpod integration'), + formName: 'gitpod_enabled', + }, +}; + +export const i18n = { + saveChanges: __('Save changes'), + defaultSuccess: __('Preferences saved.'), + defaultError: s__('Preferences|Failed to save preferences.'), + integrations: s__('Preferences|Integrations'), + integrationsDescription: s__('Preferences|Customize integrations with third party services.'), +}; diff --git a/app/assets/javascripts/profile/preferences/profile_preferences_bundle.js b/app/assets/javascripts/profile/preferences/profile_preferences_bundle.js index 744e0174a4e..6520e68d41c 100644 --- a/app/assets/javascripts/profile/preferences/profile_preferences_bundle.js +++ b/app/assets/javascripts/profile/preferences/profile_preferences_bundle.js @@ -3,16 +3,20 @@ import ProfilePreferences from './components/profile_preferences.vue'; export default () => { const el = document.querySelector('#js-profile-preferences-app'); - const shouldParse = ['integrationViews', 'userFields']; + const formEl = document.querySelector('#profile-preferences-form'); + const shouldParse = ['integrationViews', 'themes', 'userFields']; - const provide = Object.keys(el.dataset).reduce((memo, key) => { - let value = el.dataset[key]; - if (shouldParse.includes(key)) { - value = JSON.parse(value); - } + const provide = Object.keys(el.dataset).reduce( + (memo, key) => { + let value = el.dataset[key]; + if (shouldParse.includes(key)) { + value = JSON.parse(value); + } - return { ...memo, [key]: value }; - }, {}); + return { ...memo, [key]: value }; + }, + { formEl }, + ); return new Vue({ el, diff --git a/app/assets/javascripts/repository/components/preview/index.vue b/app/assets/javascripts/repository/components/preview/index.vue index e2c3f3b81ee..b74c2333148 100644 --- a/app/assets/javascripts/repository/components/preview/index.vue +++ b/app/assets/javascripts/repository/components/preview/index.vue @@ -1,8 +1,8 @@