diff --git a/docs/rules/order-in-components.md b/docs/rules/order-in-components.md index 8068a34d6..944862eda 100644 --- a/docs/rules/order-in-components.md +++ b/docs/rules/order-in-components.md @@ -86,6 +86,8 @@ export default { "model", ["props", "propsData"], "emits", + "slots", + "expose", "setup", "asyncData", "data", diff --git a/lib/rules/order-in-components.js b/lib/rules/order-in-components.js index cf9dba9d4..e965c38c5 100644 --- a/lib/rules/order-in-components.js +++ b/lib/rules/order-in-components.js @@ -48,6 +48,8 @@ const defaultOrder = [ 'model', ['props', 'propsData'], 'emits', // for Vue.js 3.x + 'slots', + 'expose', // Note: // The `setup` option is included in the "Composition" category, diff --git a/tests/lib/rules/order-in-components.js b/tests/lib/rules/order-in-components.js index 873df3b0f..315a27785 100644 --- a/tests/lib/rules/order-in-components.js +++ b/tests/lib/rules/order-in-components.js @@ -51,6 +51,8 @@ ruleTester.run('order-in-components', rule, { model, props, propsData, emits, + slots, + expose, setup, data, computed, @@ -943,6 +945,61 @@ ruleTester.run('order-in-components', rule, { line: 5 } ] + }, + { + filename: 'example.vue', + code: ` + export default { + setup, + slots, + expose, + }; + `, + parserOptions, + output: ` + export default { + slots, + setup, + expose, + }; + `, + errors: [ + { + message: + 'The "slots" property should be above the "setup" property on line 3.', + line: 4 + }, + { + message: + 'The "expose" property should be above the "setup" property on line 3.', + line: 5 + } + ] + }, + { + filename: 'example.vue', + code: ` + export default { + slots, + setup, + expose, + }; + `, + parserOptions, + output: ` + export default { + slots, + expose, + setup, + }; + `, + errors: [ + { + message: + 'The "expose" property should be above the "setup" property on line 4.', + line: 5 + } + ] } ] })