DEV: Update linting config and run gjs-codemod (#59)

* DEV: Update linting config and run gjs-codemod

* DEV: Update linting config and run gjs-codemod
This commit is contained in:
Jarek Radosz 2025-06-06 12:57:21 +02:00 committed by GitHub
parent 279871bdfd
commit a2447f34ea
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 572 additions and 1096 deletions

View File

@ -1,3 +1,4 @@
< 3.5.0.beta5-dev: 279871bdfd2e2379ce681e6a621163937eaaab8b
< 3.5.0.beta1-dev: 515cab41e930f195632ddbba442437cbe298dfd1 < 3.5.0.beta1-dev: 515cab41e930f195632ddbba442437cbe298dfd1
< 3.4.0.beta1-dev: 948634fe310ed8c7fbdc21811ef201f4b5c4f306 < 3.4.0.beta1-dev: 948634fe310ed8c7fbdc21811ef201f4b5c4f306
< 3.3.0.beta1-dev: 05a727efd5b398bbae44ff3fef881fa8bcd90a2d < 3.3.0.beta1-dev: 05a727efd5b398bbae44ff3fef881fa8bcd90a2d

View File

@ -14,30 +14,31 @@ GEM
securerandom (>= 0.3) securerandom (>= 0.3)
tzinfo (~> 2.0, >= 2.0.5) tzinfo (~> 2.0, >= 2.0.5)
uri (>= 0.13.1) uri (>= 0.13.1)
ast (2.4.2) ast (2.4.3)
base64 (0.2.0) base64 (0.3.0)
benchmark (0.4.0) benchmark (0.4.1)
bigdecimal (3.1.9) bigdecimal (3.2.1)
concurrent-ruby (1.3.5) concurrent-ruby (1.3.5)
connection_pool (2.5.0) connection_pool (2.5.3)
drb (2.2.1) drb (2.2.3)
i18n (1.14.7) i18n (1.14.7)
concurrent-ruby (~> 1.0) concurrent-ruby (~> 1.0)
json (2.10.2) json (2.12.2)
language_server-protocol (3.17.0.4) language_server-protocol (3.17.0.5)
lint_roller (1.1.0) lint_roller (1.1.0)
logger (1.6.6) logger (1.7.0)
minitest (5.25.5) minitest (5.25.5)
parallel (1.26.3) parallel (1.27.0)
parser (3.3.7.1) parser (3.3.8.0)
ast (~> 2.4.1) ast (~> 2.4.1)
racc racc
prettier_print (1.2.1) prettier_print (1.2.1)
prism (1.4.0)
racc (1.8.1) racc (1.8.1)
rack (3.1.12) rack (3.1.15)
rainbow (3.1.1) rainbow (3.1.1)
regexp_parser (2.10.0) regexp_parser (2.10.0)
rubocop (1.74.0) rubocop (1.76.0)
json (~> 2.3) json (~> 2.3)
language_server-protocol (~> 3.17.0.2) language_server-protocol (~> 3.17.0.2)
lint_roller (~> 1.1.0) lint_roller (~> 1.1.0)
@ -45,11 +46,12 @@ GEM
parser (>= 3.3.0.2) parser (>= 3.3.0.2)
rainbow (>= 2.2.2, < 4.0) rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 2.9.3, < 3.0) regexp_parser (>= 2.9.3, < 3.0)
rubocop-ast (>= 1.38.0, < 2.0) rubocop-ast (>= 1.45.0, < 2.0)
ruby-progressbar (~> 1.7) ruby-progressbar (~> 1.7)
unicode-display_width (>= 2.4.0, < 4.0) unicode-display_width (>= 2.4.0, < 4.0)
rubocop-ast (1.39.0) rubocop-ast (1.45.0)
parser (>= 3.3.1.0) parser (>= 3.3.7.2)
prism (~> 1.4)
rubocop-capybara (2.22.1) rubocop-capybara (2.22.1)
lint_roller (~> 1.1) lint_roller (~> 1.1)
rubocop (~> 1.72, >= 1.72.1) rubocop (~> 1.72, >= 1.72.1)
@ -65,13 +67,13 @@ GEM
rubocop-factory_bot (2.27.1) rubocop-factory_bot (2.27.1)
lint_roller (~> 1.1) lint_roller (~> 1.1)
rubocop (~> 1.72, >= 1.72.1) rubocop (~> 1.72, >= 1.72.1)
rubocop-rails (2.30.3) rubocop-rails (2.32.0)
activesupport (>= 4.2.0) activesupport (>= 4.2.0)
lint_roller (~> 1.1) lint_roller (~> 1.1)
rack (>= 1.1) rack (>= 1.1)
rubocop (>= 1.72.1, < 2.0) rubocop (>= 1.75.0, < 2.0)
rubocop-ast (>= 1.38.0, < 2.0) rubocop-ast (>= 1.44.0, < 2.0)
rubocop-rspec (3.5.0) rubocop-rspec (3.6.0)
lint_roller (~> 1.1) lint_roller (~> 1.1)
rubocop (~> 1.72, >= 1.72.1) rubocop (~> 1.72, >= 1.72.1)
rubocop-rspec_rails (2.31.0) rubocop-rspec_rails (2.31.0)
@ -98,4 +100,4 @@ DEPENDENCIES
syntax_tree syntax_tree
BUNDLED WITH BUNDLED WITH
2.6.6 2.6.9

View File

@ -0,0 +1,128 @@
import Component, { Input } from "@ember/component";
import { fn, hash } from "@ember/helper";
import { on } from "@ember/modifier";
import EmberObject, { action } from "@ember/object";
import { service } from "@ember/service";
import { isBlank } from "@ember/utils";
import DButton from "discourse/components/d-button";
import DModal from "discourse/components/d-modal";
import { i18n } from "discourse-i18n";
import MultiSelect from "select-kit/components/multi-select";
export default class DiscoursePlaceholderBuilder extends Component {
@service dialog;
form = EmberObject.create({
key: null,
description: null,
values: [],
});
@action
updateKey(event) {
this.form.set("key", event.target.value);
}
@action
updateDescription(event) {
this.form.set("description", event.target.value);
}
@action
insertPlaceholder() {
if (isBlank(this.form.key)) {
this.dialog.alert(i18n(themePrefix("builder.errors.no_key")));
return;
}
let output = `[wrap=placeholder key="${this.form.key}"`;
if (this.form.description) {
output += ` description="${this.form.description}"`;
}
if (this.form.values.length) {
if (this.form.values.length === 1) {
output += ` default="${this.form.values.firstObject}"`;
} else {
output += ` defaults="${this.form.values.join(",")}"`;
}
}
output += "][/wrap]";
this.model.toolbarEvent.addText(output);
this.closeModal();
}
<template>
<DModal
@title={{i18n (themePrefix "builder.title")}}
@closeModal={{@closeModal}}
@tagName="form"
class="placeholder-builder"
>
<:body>
<div class="control">
<span class="label">
{{i18n (themePrefix "builder.key.label")}}
</span>
<div class="input">
<Input
{{on "input" this.updateKey}}
@value={{readonly this.form.key}}
class="placeholder-builder__key"
/>
</div>
<p class="description">{{i18n
(themePrefix "builder.key.description")
}}</p>
</div>
<div class="control">
<span class="label">
{{i18n (themePrefix "builder.description.label")}}
</span>
<div class="input">
<Input
{{on "input" this.updateDescription}}
@value={{readonly this.form.description}}
class="placeholder-builder__description"
/>
</div>
<p class="description">
{{i18n (themePrefix "builder.description.description")}}
</p>
</div>
<div class="control">
<span class="label">
{{i18n (themePrefix "builder.values.label")}}
</span>
<div class="input">
<MultiSelect
@valueProperty={{null}}
@nameProperty={{null}}
@value={{this.form.values}}
@content={{this.form.values}}
@options={{hash allowAny=true placementStrategy="absolute"}}
@onChange={{fn (mut this.form.values)}}
class="placeholder-builder__default-values"
/>
</div>
<p class="description">{{i18n
(themePrefix "builder.values.description")
}}</p>
</div>
</:body>
<:footer>
<DButton
@action={{this.insertPlaceholder}}
@label={{themePrefix "builder.insert"}}
class="btn-primary"
/>
</:footer>
</DModal>
</template>
}

View File

@ -1,64 +0,0 @@
<DModal
@title={{i18n (theme-prefix "builder.title")}}
@closeModal={{@closeModal}}
@tagName="form"
class="placeholder-builder"
>
<:body>
<div class="control">
<span class="label">
{{theme-i18n "builder.key.label"}}
</span>
<div class="input">
<Input
{{on "input" this.updateKey}}
@value={{readonly this.form.key}}
class="placeholder-builder__key"
/>
</div>
<p class="description">{{theme-i18n "builder.key.description"}}</p>
</div>
<div class="control">
<span class="label">
{{theme-i18n "builder.description.label"}}
</span>
<div class="input">
<Input
{{on "input" this.updateDescription}}
@value={{readonly this.form.description}}
class="placeholder-builder__description"
/>
</div>
<p class="description">
{{theme-i18n "builder.description.description"}}
</p>
</div>
<div class="control">
<span class="label">
{{theme-i18n "builder.values.label"}}
</span>
<div class="input">
<MultiSelect
@valueProperty={{null}}
@nameProperty={{null}}
@value={{this.form.values}}
@content={{this.form.values}}
@options={{hash allowAny=true placementStrategy="absolute"}}
@onChange={{fn (mut this.form.values)}}
class="placeholder-builder__default-values"
/>
</div>
<p class="description">{{theme-i18n "builder.values.description"}}</p>
</div>
</:body>
<:footer>
<DButton
@action={{this.insertPlaceholder}}
@label={{theme-prefix "builder.insert"}}
class="btn-primary"
/>
</:footer>
</DModal>

View File

@ -1,52 +0,0 @@
import Component from "@ember/component";
import EmberObject, { action } from "@ember/object";
import { service } from "@ember/service";
import { isBlank } from "@ember/utils";
import { i18n } from "discourse-i18n";
export default class DiscoursePlaceholderBuilder extends Component {
@service dialog;
form = EmberObject.create({
key: null,
description: null,
values: [],
});
@action
updateKey(event) {
this.form.set("key", event.target.value);
}
@action
updateDescription(event) {
this.form.set("description", event.target.value);
}
@action
insertPlaceholder() {
if (isBlank(this.form.key)) {
this.dialog.alert(i18n(themePrefix("builder.errors.no_key")));
return;
}
let output = `[wrap=placeholder key="${this.form.key}"`;
if (this.form.description) {
output += ` description="${this.form.description}"`;
}
if (this.form.values.length) {
if (this.form.values.length === 1) {
output += ` default="${this.form.values.firstObject}"`;
} else {
output += ` defaults="${this.form.values.join(",")}"`;
}
}
output += "][/wrap]";
this.model.toolbarEvent.addText(output);
this.closeModal();
}
}

View File

@ -1,11 +1,11 @@
{ {
"private": true, "private": true,
"devDependencies": { "devDependencies": {
"@discourse/lint-configs": "2.11.1", "@discourse/lint-configs": "2.25.0",
"ember-template-lint": "7.0.1", "ember-template-lint": "7.8.1",
"eslint": "9.22.0", "eslint": "9.28.0",
"prettier": "3.5.3", "prettier": "3.5.3",
"stylelint": "16.16.0" "stylelint": "16.20.0"
}, },
"engines": { "engines": {
"node": ">= 22", "node": ">= 22",

1371
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff