diff --git a/.eslintrc.js b/.eslintrc.js index 66e1c13ae4e..9408c0a0690 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -145,29 +145,26 @@ module.exports = { 'no-implicit-coercion': 'error', //https://eslint.org/docs/rules/no-unneeded-ternary 'no-unneeded-ternary': 'error', - "unicorn/filename-case": [ - "error", + 'unicorn/filename-case': [ + 'error', { - "cases": { - "pascalCase": true + cases: { + pascalCase: true }, - "ignore": [ - "^.*\\.js$" - ] + ignore: ['^.*\\.js$'] } ], 'vue/first-attribute-linebreak': 'error', 'vue/multiline-html-element-content-newline': 'off', 'vue/singleline-html-element-content-newline': 'off', - 'vue/multi-word-component-names': 'off', // TODO enable, align with conventions - 'vue/no-mutating-props': 'off' + 'vue/no-mutating-props': 'off' // TODO: Remove this rule and fix resulting errors }, overrides: [ { files: LEGACY_FILES, rules: { 'no-unused-vars': [ - 'warn', + 'error', { vars: 'all', args: 'none', diff --git a/example/simpleVuePlugin/HelloWorld.vue b/example/simpleVuePlugin/HelloWorld.vue deleted file mode 100644 index dc6b4272cc4..00000000000 --- a/example/simpleVuePlugin/HelloWorld.vue +++ /dev/null @@ -1,19 +0,0 @@ - - - - - diff --git a/example/simpleVuePlugin/plugin.js b/example/simpleVuePlugin/plugin.js deleted file mode 100644 index 9ff73043f8a..00000000000 --- a/example/simpleVuePlugin/plugin.js +++ /dev/null @@ -1,36 +0,0 @@ -import Vue from 'vue'; - -import HelloWorld from './HelloWorld.vue'; - -function SimpleVuePlugin() { - return function install(openmct) { - openmct.types.addType('hello-world', { - name: 'Hello World', - description: 'An introduction object', - creatable: true - }); - openmct.objectViews.addProvider({ - name: 'demo-provider', - key: 'hello-world', - cssClass: 'icon-packet', - canView: function (d) { - return d.type === 'hello-world'; - }, - view: function (domainObject) { - var vm; - - return { - show: function (container) { - vm = new Vue(HelloWorld); - container.appendChild(vm.$mount().$el); - }, - destroy: function (container) { - //vm.$destroy(); - } - }; - } - }); - }; -} - -export default SimpleVuePlugin; diff --git a/package.json b/package.json index 0f18f327b0e..7584141d5b5 100644 --- a/package.json +++ b/package.json @@ -70,6 +70,7 @@ "sass-loader": "13.3.2", "sinon": "15.1.0", "style-loader": "3.3.3", + "tiny-emitter": "2.1.0", "typescript": "5.2.2", "uuid": "9.0.0", "vue": "3.3.4", @@ -85,8 +86,8 @@ "start": "npx webpack serve --config ./.webpack/webpack.dev.js", "start:prod": "npx webpack serve --config ./.webpack/webpack.prod.js", "start:coverage": "npx webpack serve --config ./.webpack/webpack.coverage.js", - "lint:js": "eslint example src e2e --ext .js openmct.js --max-warnings=0", - "lint:vue": "eslint example src --ext .vue", + "lint:js": "eslint \"example/**/*.js\" \"src/**/*.js\" \"e2e/**/*.js\" \"openmct.js\" --max-warnings=0", + "lint:vue": "eslint \"src/**/*.vue\"", "lint:spelling": "cspell \"**/*.{js,md,vue}\" --show-context --gitignore --quiet", "lint": "run-p \"lint:js -- {1}\" \"lint:vue -- {1}\" \"lint:spelling -- {1}\" --", "lint:fix": "eslint example src e2e --ext .js,.vue openmct.js --fix", diff --git a/src/MCT.js b/src/MCT.js index 199e2f61fc7..9fa755d7a3b 100644 --- a/src/MCT.js +++ b/src/MCT.js @@ -33,7 +33,7 @@ define([ './ui/registries/ToolbarRegistry', './ui/router/ApplicationRouter', './ui/router/Browse', - './ui/layout/Layout.vue', + './ui/layout/AppLayout.vue', './ui/preview/plugin', './api/Branding', './plugins/licenses/plugin', diff --git a/src/api/forms/FormController.js b/src/api/forms/FormController.js index eb608e0f7e5..4c946573c95 100644 --- a/src/api/forms/FormController.js +++ b/src/api/forms/FormController.js @@ -3,9 +3,9 @@ import mount from 'utils/mount'; import AutoCompleteField from './components/controls/AutoCompleteField.vue'; import CheckBoxField from './components/controls/CheckBoxField.vue'; import ClockDisplayFormatField from './components/controls/ClockDisplayFormatField.vue'; -import Datetime from './components/controls/Datetime.vue'; +import Datetime from './components/controls/DatetimeField.vue'; import FileInput from './components/controls/FileInput.vue'; -import Locator from './components/controls/Locator.vue'; +import Locator from './components/controls/LocatorField.vue'; import NumberField from './components/controls/NumberField.vue'; import SelectField from './components/controls/SelectField.vue'; import TextAreaField from './components/controls/TextAreaField.vue'; @@ -87,7 +87,7 @@ export default class FormControl { onChange }; }, - template: `` + template: `` }, { element, diff --git a/src/api/forms/FormsAPI.js b/src/api/forms/FormsAPI.js index 367aca18a1d..0564a2cc1cf 100644 --- a/src/api/forms/FormsAPI.js +++ b/src/api/forms/FormsAPI.js @@ -171,7 +171,7 @@ export default class FormsAPI { }; }, template: - '' + '' }, { element, diff --git a/src/api/forms/components/FormProperties.vue b/src/api/forms/components/FormProperties.vue index b4c0676b453..71fc0cb33fa 100644 --- a/src/api/forms/components/FormProperties.vue +++ b/src/api/forms/components/FormProperties.vue @@ -44,7 +44,7 @@ :css-class="row.cssClass" :first="index < 1" :row="row" - @onChange="onChange" + @on-change="onChange" /> @@ -94,6 +94,7 @@ export default { } } }, + emits: ['on-change', 'on-save', 'on-cancel'], data() { return { invalidProperties: {}, @@ -144,13 +145,13 @@ export default { onChange(data) { this.invalidProperties[data.model.key] = data.invalid; - this.$emit('onChange', data); + this.$emit('on-change', data); }, onCancel() { - this.$emit('onCancel'); + this.$emit('on-cancel'); }, onSave() { - this.$emit('onSave'); + this.$emit('on-save'); } } }; diff --git a/src/api/forms/components/FormRow.vue b/src/api/forms/components/FormRow.vue index ccff26a7fbd..1cf2496825f 100644 --- a/src/api/forms/components/FormRow.vue +++ b/src/api/forms/components/FormRow.vue @@ -21,7 +21,7 @@ --> @@ -46,12 +46,13 @@ export default { required: true } }, + emits: ['on-change'], mounted() { this.model.items.forEach((item, index) => (item.key = `${this.model.key}.${index}`)); }, methods: { onChange(data) { - this.$emit('onChange', data); + this.$emit('on-change', data); } } }; diff --git a/src/api/forms/components/controls/CompositeItem.vue b/src/api/forms/components/controls/CompositeItem.vue index 42ab07d025d..c94b26d07e4 100644 --- a/src/api/forms/components/controls/CompositeItem.vue +++ b/src/api/forms/components/controls/CompositeItem.vue @@ -22,7 +22,7 @@