mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
DEV: Implement disabled state in Image control (#31324)
This commit is contained in:
@@ -19,7 +19,7 @@ import { authorizesOneOrMoreExtensions } from "discourse/lib/uploads";
|
|||||||
import UppyUpload from "discourse/lib/uppy/uppy-upload";
|
import UppyUpload from "discourse/lib/uppy/uppy-upload";
|
||||||
import { i18n } from "discourse-i18n";
|
import { i18n } from "discourse-i18n";
|
||||||
|
|
||||||
// Args: id, type, imageUrl, placeholderUrl, additionalParams, onUploadDone, onUploadDeleted,
|
// Args: id, type, imageUrl, placeholderUrl, additionalParams, onUploadDone, onUploadDeleted, disabled
|
||||||
export default class UppyImageUploader extends Component {
|
export default class UppyImageUploader extends Component {
|
||||||
@service currentUser;
|
@service currentUser;
|
||||||
@service siteSettings;
|
@service siteSettings;
|
||||||
@@ -58,6 +58,7 @@ export default class UppyImageUploader extends Component {
|
|||||||
|
|
||||||
get disabled() {
|
get disabled() {
|
||||||
return (
|
return (
|
||||||
|
this.args.disabled ||
|
||||||
this.notAllowed ||
|
this.notAllowed ||
|
||||||
this.uppyUpload?.uploading ||
|
this.uppyUpload?.uploading ||
|
||||||
this.uppyUpload?.processing
|
this.uppyUpload?.processing
|
||||||
@@ -167,6 +168,7 @@ export default class UppyImageUploader extends Component {
|
|||||||
<DButton
|
<DButton
|
||||||
@action={{@onUploadDeleted}}
|
@action={{@onUploadDeleted}}
|
||||||
@icon="trash-can"
|
@icon="trash-can"
|
||||||
|
@disabled={{this.disabled}}
|
||||||
class="btn-danger pad-left no-text"
|
class="btn-danger pad-left no-text"
|
||||||
/>
|
/>
|
||||||
<DButton
|
<DButton
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ export default class FKControlImage extends Component {
|
|||||||
@onUploadDone={{this.setImage}}
|
@onUploadDone={{this.setImage}}
|
||||||
@onUploadDeleted={{this.removeImage}}
|
@onUploadDeleted={{this.removeImage}}
|
||||||
@type={{@type}}
|
@type={{@type}}
|
||||||
|
@disabled={{@field.disabled}}
|
||||||
class="form-kit__control-image no-repeat contain-image"
|
class="form-kit__control-image no-repeat contain-image"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { fn } from "@ember/helper";
|
import { fn } from "@ember/helper";
|
||||||
import { click, render } from "@ember/test-helpers";
|
import { click, render } from "@ember/test-helpers";
|
||||||
import { module, test, todo } from "qunit";
|
import { module, test } from "qunit";
|
||||||
import Form from "discourse/components/form";
|
import Form from "discourse/components/form";
|
||||||
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
|
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
|
||||||
import pretender, { response } from "discourse/tests/helpers/create-pretender";
|
import pretender, { response } from "discourse/tests/helpers/create-pretender";
|
||||||
@@ -69,6 +69,24 @@ module(
|
|||||||
assert.form().field("image_url").hasNoValue();
|
assert.form().field("image_url").hasNoValue();
|
||||||
});
|
});
|
||||||
|
|
||||||
todo("when disabled", async function () {});
|
test("when disabled", async function (assert) {
|
||||||
|
const data = { image_url: "/images/discourse-logo-sketch-small.png" };
|
||||||
|
|
||||||
|
await render(<template>
|
||||||
|
<Form @data={{data}} as |form|>
|
||||||
|
<form.Field
|
||||||
|
@name="image_url"
|
||||||
|
@title="Foo"
|
||||||
|
@disabled={{true}}
|
||||||
|
as |field|
|
||||||
|
>
|
||||||
|
<field.Image @type="site_setting" />
|
||||||
|
</form.Field>
|
||||||
|
</Form>
|
||||||
|
</template>);
|
||||||
|
|
||||||
|
assert.dom(".image-upload-controls input[type='file']").isDisabled();
|
||||||
|
assert.dom(".image-upload-controls .btn-danger").isDisabled();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user