Skip to content
Merged
Show file tree
Hide file tree
Changes from 43 commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
c949bf3
build(eslint): replace local rules with naming conventions
iOvergaard Aug 7, 2025
cf47838
revert relative js extension imports
iOvergaard Aug 7, 2025
8337192
remove unused local rule
iOvergaard Aug 7, 2025
10e75cf
build(eslint): uses recommended setup for import plugin
iOvergaard Aug 7, 2025
b298101
chore(eslint): conver const to function to follow naming conventions
iOvergaard Aug 7, 2025
dc59ddd
chore: removes old file
iOvergaard Aug 7, 2025
dc73dac
build(eslint): allows Ufm as prefix
iOvergaard Aug 7, 2025
5c4ad31
build(eslint): allows 'name' and 'extensions' as exports (umbraco-pac…
iOvergaard Aug 7, 2025
813f366
build(eslint): typescript rules should ignore storybook
iOvergaard Aug 7, 2025
62c35ed
chore(eslint): ignores eslint for vite definitions
iOvergaard Aug 7, 2025
f74bd3b
build(eslint): allows UPPER_CASE for properties
iOvergaard Aug 7, 2025
3d610ed
build(eslint): ignores umbraco-package.ts files (unconventional exports)
iOvergaard Aug 7, 2025
411685f
chore(storybook): fixes property editor stylesheet picker
iOvergaard Aug 7, 2025
e19007a
build(eslint): allows Manifest as prefix on interfaces
iOvergaard Aug 7, 2025
6f5247c
build(eslint): allows underscore on protected members
iOvergaard Aug 7, 2025
d0fae4b
build(eslint): allows Meta as prefix on interfaces
iOvergaard Aug 7, 2025
b7ba94a
build(eslint): allows PascalCase for public members
iOvergaard Aug 7, 2025
d15e8a3
build(eslint): disables enforcement of booleans with verbs for now as…
iOvergaard Aug 7, 2025
d9c89b1
chore(eslint): add private modifiers as required
iOvergaard Aug 7, 2025
a40a1e0
deprecates invalid constant name to replace with Umb prefix
iOvergaard Aug 7, 2025
2ac08a9
renames MediaValueType to comply with naming conventions
iOvergaard Aug 7, 2025
10bbb49
chore(eslint): disable naming conventions for local router-slot package
iOvergaard Aug 7, 2025
ad8cc75
chore(eslint): follow naming conventions
iOvergaard Aug 7, 2025
ecdfa89
chore(eslint): disable naming conventions for property editor interfaces
iOvergaard Aug 7, 2025
25ca728
chore(eslint): follow naming conventions
iOvergaard Aug 7, 2025
7ce7af8
chore(storybook): fix story
iOvergaard Aug 7, 2025
d281cc2
chore(eslint): follow naming conventions
iOvergaard Aug 7, 2025
5a8b855
build(eslint): allows `_host` as public variable
iOvergaard Aug 7, 2025
d042c6a
chore(eslint): follow naming conventions
iOvergaard Aug 7, 2025
58c144f
build(eslint): allows double leading underscore on public members
iOvergaard Aug 7, 2025
6e098a5
build(eslint): matches #private and public modifiers
iOvergaard Aug 7, 2025
ca32cdb
build(eslint): ignores language files
iOvergaard Aug 7, 2025
1d4ca5f
chore(eslint): ignores umbraco package file
iOvergaard Aug 7, 2025
6f77b26
chore(eslint): follow naming conventions
iOvergaard Aug 7, 2025
87d8908
storybook lang
iOvergaard Aug 7, 2025
4814093
chore(eslint): follow naming conventions
iOvergaard Aug 7, 2025
cc44879
Merge remote-tracking branch 'origin/main' into v16/chore/eslint-nami…
iOvergaard Aug 7, 2025
7786e34
chore(eslint): follow naming conventions
iOvergaard Aug 7, 2025
0d4defd
chore(eslint): make _manager a little more open
iOvergaard Aug 7, 2025
34cf1f4
chore(eslint): some properties should be protected
iOvergaard Aug 7, 2025
6f0ffd9
Update src/Umbraco.Web.UI.Client/src/packages/media/media/components/…
iOvergaard Aug 7, 2025
a7b14c9
Update src/Umbraco.Web.UI.Client/src/packages/media/media/components/…
iOvergaard Aug 7, 2025
d2dec76
Update src/Umbraco.Web.UI.Client/src/packages/media/media/components/…
iOvergaard Aug 7, 2025
07a1b4c
proxy type for UrlParametersRecord
nielslyngsoe Aug 8, 2025
3ee209b
_items deprecated property
nielslyngsoe Aug 8, 2025
5b0e842
bring back ConditionTypes type
nielslyngsoe Aug 8, 2025
53208a3
bring back _items for trash bulk action
nielslyngsoe Aug 8, 2025
86eee33
ignorer deprecated proxies
nielslyngsoe Aug 8, 2025
7ae9026
keep settingsDataContentTypeKey for satefy
nielslyngsoe Aug 8, 2025
dbd92da
Merge branch 'main' into v16/chore/eslint-naming-conventions
nielslyngsoe Aug 8, 2025
5d07422
fix disable line
nielslyngsoe Aug 8, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/Umbraco.Web.UI.Client/.storybook/preview.js
Original file line number Diff line number Diff line change
Expand Up @@ -140,10 +140,10 @@ class UmbStoryBookElement extends UmbLitElement {
new UmbModalManagerContext(this);
new UmbNotificationContext(this);

umbLocalizationRegistry.loadLanguage('en-us'); // register default language
umbLocalizationRegistry.loadLanguage('en'); // register default language

this.consumeContext(UMB_APP_LANGUAGE_CONTEXT, (appLanguageContext) => {
appLanguageContext.setLanguage('en-us'); // set default language
appLanguageContext?.setLanguage('en'); // set default language
});
}

Expand Down
31 changes: 0 additions & 31 deletions src/Umbraco.Web.UI.Client/devops/eslint/rules/bad-type-import.cjs

This file was deleted.

This file was deleted.

This file was deleted.

28 changes: 0 additions & 28 deletions src/Umbraco.Web.UI.Client/devops/eslint/rules/umb-class-prefix.cjs

This file was deleted.

8 changes: 0 additions & 8 deletions src/Umbraco.Web.UI.Client/eslint-local-rules.cjs
Original file line number Diff line number Diff line change
@@ -1,27 +1,19 @@
'use strict';

const badTypeImportRule = require('./devops/eslint/rules/bad-type-import.cjs');
const enforceElementSuffixOnElementClassNameRule = require('./devops/eslint/rules/enforce-element-suffix-on-element-class-name.cjs');
const enforceUmbPrefixOnElementNameRule = require('./devops/eslint/rules/enforce-umb-prefix-on-element-name.cjs');
const enforceUmbracoExternalImportsRule = require('./devops/eslint/rules/enforce-umbraco-external-imports.cjs');
const ensureRelativeImportUseJsExtensionRule = require('./devops/eslint/rules/ensure-relative-import-use-js-extension.cjs');
const exportedStringConstantNaming = require('./devops/eslint/rules/exported-string-constant-naming.cjs');
const noDirectApiImportRule = require('./devops/eslint/rules/no-direct-api-import.cjs');
const preferImportAliasesRule = require('./devops/eslint/rules/prefer-import-aliases.cjs');
const preferStaticStylesLastRule = require('./devops/eslint/rules/prefer-static-styles-last.cjs');
const umbClassPrefixRule = require('./devops/eslint/rules/umb-class-prefix.cjs');
const noRelativeImportToImportMapModule = require('./devops/eslint/rules/no-relative-import-to-import-map-module.cjs');

module.exports = {
'bad-type-import': badTypeImportRule,
'enforce-element-suffix-on-element-class-name': enforceElementSuffixOnElementClassNameRule,
'enforce-umb-prefix-on-element-name': enforceUmbPrefixOnElementNameRule,
'enforce-umbraco-external-imports': enforceUmbracoExternalImportsRule,
'ensure-relative-import-use-js-extension': ensureRelativeImportUseJsExtensionRule,
'exported-string-constant-naming': exportedStringConstantNaming,
'no-direct-api-import': noDirectApiImportRule,
'prefer-import-aliases': preferImportAliasesRule,
'prefer-static-styles-last': preferStaticStylesLastRule,
'umb-class-prefix': umbClassPrefixRule,
'no-relative-import-to-import-map-module': noRelativeImportToImportMapModule,
};
96 changes: 84 additions & 12 deletions src/Umbraco.Web.UI.Client/eslint.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,12 @@ import jsdoc from 'eslint-plugin-jsdoc';
export default [
// Recommended config applied to all files
js.configs.recommended,
importPlugin.flatConfigs.recommended,
...tseslint.configs.recommended,
wcPlugin.configs['flat/recommended'],
litPlugin.configs['flat/recommended'], // We use the non typescript version to allow types to be defined in the jsdoc comments. This will allow js docs as an alternative to typescript types.
jsdoc.configs['flat/recommended'],
...storybook.configs['flat/recommended'],
localRules.configs.all,
eslintPluginPrettierRecommended,

Expand All @@ -39,35 +41,24 @@ export default [
// Global config
{
plugins: {
import: importPlugin,
'local-rules': localRules,
},
rules: {
semi: ['warn', 'always'],
'prettier/prettier': ['warn', { endOfLine: 'auto' }],
'no-unused-vars': 'off', //Let '@typescript-eslint/no-unused-vars' catch the errors to allow unused function parameters (ex: in interfaces)
'no-var': 'error',
...importPlugin.configs.recommended.rules,
'import/namespace': 'off',
'import/no-unresolved': 'off',
'import/order': ['warn', { groups: ['builtin', 'parent', 'sibling', 'index', 'external'] }],
'import/no-self-import': 'error',
'import/no-cycle': ['error', { maxDepth: 6, allowUnsafeDynamicCyclicDependency: true }],
'import/no-named-as-default': 'off', // Does not work with eslint 9
'import/no-named-as-default-member': 'off', // Does not work with eslint 9
'local-rules/prefer-static-styles-last': 'warn',
'local-rules/enforce-umbraco-external-imports': [
'error',
{
exceptions: ['@umbraco-cms', '@open-wc/testing', '@storybook', 'msw', '.', 'vite', 'uuid', 'diff'],
},
],
'local-rules/exported-string-constant-naming': [
'error',
{
excludedFileNames: ['umbraco-package'],
},
],
'jsdoc/check-tag-names': [
'warn',
{
Expand All @@ -81,6 +72,7 @@ export default [
// Pattern-specific overrides
{
files: ['**/*.ts'],
ignores: ['.storybook', '**/*.stories.ts', '**/umbraco-package.ts', 'src/assets/lang/*.ts'],
languageOptions: {
parserOptions: {
project: true,
Expand All @@ -90,14 +82,95 @@ export default [
...globals.browser,
},
},
...importPlugin.flatConfigs.typescript,
rules: {
'no-unused-vars': 'off', //Let '@typescript-eslint/no-unused-vars' catch the errors to allow unused function parameters (ex: in interfaces)
'@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_', varsIgnorePattern: '^_' }],
'@typescript-eslint/no-non-null-assertion': 'off',
'@typescript-eslint/no-explicit-any': 'warn',
'@typescript-eslint/no-unused-vars': 'error',
'@typescript-eslint/consistent-type-exports': 'error',
'@typescript-eslint/consistent-type-imports': 'error',
'@typescript-eslint/no-import-type-side-effects': 'warn',
'@typescript-eslint/no-deprecated': 'warn',
'@typescript-eslint/naming-convention': [
'error',
// All private members should be camelCase with leading underscore
// This is to ensure that private members are not used outside the class, as they
// are not part of the public API.
// Example NOT OK: private myPrivateVariable
// Example OK: private _myPrivateVariable
{
selector: 'memberLike',
modifiers: ['private'],
format: ['camelCase'],
leadingUnderscore: 'require',
trailingUnderscore: 'forbid',
},
// All public members and variables should be camelCase without leading underscore
// Example: myPublicVariable, myPublicMethod
{
selector: ['variableLike', 'memberLike'],
modifiers: ['public'],
filter: {
regex: '^_host$',
match: false,
},
format: ['camelCase', 'UPPER_CASE', 'PascalCase'],
leadingUnderscore: 'allowDouble',
trailingUnderscore: 'forbid',
},
// All #private members and variables should be camelCase without leading underscore
// Example: #myPublicVariable, #myPublicMethod
{
selector: ['variableLike', 'memberLike'],
modifiers: ['#private'],
format: ['camelCase', 'UPPER_CASE', 'PascalCase'],
leadingUnderscore: 'allowDouble',
trailingUnderscore: 'forbid',
},
// All protected members and variables should be camelCase with optional leading underscore (if needed to be pseudo-private)
// Example: protected myPublicVariable, protected _myPublicMethod
{
selector: ['variableLike', 'memberLike'],
modifiers: ['protected'],
format: ['camelCase'],
leadingUnderscore: 'allow',
trailingUnderscore: 'forbid',
},
// Allow quoted properties, as they are often used in JSON or when the property name is not a valid identifier
// This is to ensure that properties can be used in JSON or when the property name
// is not a valid identifier (e.g. contains spaces or special characters)
// Example: { "umb-some-component": UmbSomeComponent }
{
selector: ['objectLiteralProperty', 'typeProperty', 'enumMember'],
modifiers: ['requiresQuotes'],
format: null,
},
// All (exported) types should be PascalCase with leading 'Umb' or 'Example'
// Example: UmbExampleType, ExampleTypeLike
{
selector: 'typeLike',
modifiers: ['exported'],
format: ['PascalCase'],
prefix: ['Umb', 'Ufm', 'Manifest', 'Meta', 'Example']
},
// All exported string constants should be UPPER_CASE with leading 'UMB_'
// Example: UMB_EXAMPLE_CONSTANT
{
selector: 'variable',
modifiers: ['exported', 'const'],
types: ['string', 'number', 'boolean'],
format: ['UPPER_CASE'],
prefix: ['UMB_'],
},
// Allow destructured variables to be named as they are in the object
{
selector: "variable",
modifiers: ["destructured"],
format: null,
},
],
},
},
{
Expand All @@ -109,5 +182,4 @@ export default [
},
},
},
...storybook.configs['flat/recommended'],
];
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import type { UmbProblemDetails } from '@umbraco-cms/backoffice/resources';
@customElement('umb-installer-error')
export class UmbInstallerErrorElement extends UmbLitElement {
@state()
_error?: UmbProblemDetails;
private _error?: UmbProblemDetails;

private _installerContext?: UmbInstallerContext;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ export class UmbUpgraderViewElement extends LitElement {

<p>Simply click <strong>continue</strong> below to be guided through the rest of the upgrade.</p>

<form id="authorizeUpgradeForm" @submit=${this._handleSubmit}>
<form id="authorizeUpgradeForm" @submit=${this.#handleSubmit}>
<p>
<uui-button
data-test="continue-button"
Expand Down Expand Up @@ -80,7 +80,7 @@ export class UmbUpgraderViewElement extends LitElement {
return html` ${this.fetching ? html`<div class="center"><uui-loader></uui-loader></div>` : this._renderLayout()} `;
}

_handleSubmit = async (e: SubmitEvent) => {
#handleSubmit = async (e: SubmitEvent) => {
e.preventDefault();
this.dispatchEvent(new CustomEvent('onAuthorizeUpgrade', { detail: e, bubbles: true }));
};
Expand Down
Loading
Loading