mirror of
https://github.com/discourse/discourse.git
synced 2026-07-31 08:38:27 -05:00
DEV: Convert create-invite-bulk modal to component-based API (#22549)
This PR converts the `create-invite-bulk` modal to make use of the new component-based API
This commit is contained in:
@@ -7,4 +7,5 @@
|
||||
submitDisabled=this.submitDisabled
|
||||
startUpload=(action "startUpload")
|
||||
)
|
||||
this.setElement
|
||||
}}
|
||||
@@ -29,4 +29,10 @@ export default Component.extend(UppyUploadMixin, {
|
||||
startUpload() {
|
||||
this._startUpload();
|
||||
},
|
||||
|
||||
@action
|
||||
setElement(element) {
|
||||
this.set("fileInputEl", element);
|
||||
this._initialize();
|
||||
},
|
||||
});
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
<CreateInviteUploader @autoFindInput={{false}} as |uploader setElement|>
|
||||
<DModal
|
||||
@title={{i18n "user.invited.bulk_invite.text"}}
|
||||
class="create-invite-bulk-modal"
|
||||
@closeModal={{@closeModal}}
|
||||
>
|
||||
<:body>
|
||||
{{#if uploader.uploaded}}
|
||||
{{i18n "user.invited.bulk_invite.success"}}
|
||||
{{else}}
|
||||
{{html-safe (i18n "user.invited.bulk_invite.instructions")}}
|
||||
<input
|
||||
id="csv-file"
|
||||
disabled={{uploader.uploading}}
|
||||
type="file"
|
||||
accept=".csv"
|
||||
{{did-insert setElement}}
|
||||
/>
|
||||
{{/if}}
|
||||
</:body>
|
||||
<:footer>
|
||||
{{#unless uploader.uploaded}}
|
||||
<DButton
|
||||
@icon="link"
|
||||
@translatedLabel={{if
|
||||
uploader.uploading
|
||||
(i18n
|
||||
"user.invited.bulk_invite.progress"
|
||||
progress=uploader.uploadProgress
|
||||
)
|
||||
(i18n "user.invited.bulk_invite.text")
|
||||
}}
|
||||
class="btn-primary"
|
||||
@action={{uploader.startUpload}}
|
||||
@disabled={{uploader.submitDisabled}}
|
||||
/>
|
||||
{{/unless}}
|
||||
<DButton @label="close" class="btn-primary" @action={{@closeModal}} />
|
||||
</:footer>
|
||||
</DModal>
|
||||
</CreateInviteUploader>
|
||||
@@ -1,24 +0,0 @@
|
||||
import Controller from "@ember/controller";
|
||||
import { action } from "@ember/object";
|
||||
import ModalFunctionality from "discourse/mixins/modal-functionality";
|
||||
|
||||
export default Controller.extend(ModalFunctionality, {
|
||||
data: null,
|
||||
|
||||
onShow() {
|
||||
this.set("data", null);
|
||||
},
|
||||
|
||||
onClose() {
|
||||
if (this.data) {
|
||||
this.data.abort();
|
||||
this.set("data", null);
|
||||
}
|
||||
},
|
||||
|
||||
@action
|
||||
submit(data) {
|
||||
this.set("data", data);
|
||||
data.submit();
|
||||
},
|
||||
});
|
||||
@@ -11,9 +11,11 @@ import showModal from "discourse/lib/show-modal";
|
||||
import Invite from "discourse/models/invite";
|
||||
import I18n from "I18n";
|
||||
import { inject as service } from "@ember/service";
|
||||
import CreateInviteBulk from "discourse/components/modal/create-invite-bulk";
|
||||
|
||||
export default Controller.extend({
|
||||
dialog: service(),
|
||||
modal: service(),
|
||||
user: null,
|
||||
model: null,
|
||||
filter: null,
|
||||
@@ -77,7 +79,7 @@ export default Controller.extend({
|
||||
|
||||
@action
|
||||
createInviteCsv() {
|
||||
showModal("create-invite-bulk");
|
||||
this.modal.show(CreateInviteBulk);
|
||||
},
|
||||
|
||||
@action
|
||||
|
||||
@@ -35,6 +35,7 @@ export default Mixin.create(UppyS3Multipart, ExtendableUploader, {
|
||||
id: null,
|
||||
uploadRootPath: "/uploads",
|
||||
fileInputSelector: ".hidden-upload-field",
|
||||
autoFindInput: true,
|
||||
|
||||
uploadDone() {
|
||||
warn("You should implement `uploadDone`", {
|
||||
@@ -68,9 +69,13 @@ export default Mixin.create(UppyS3Multipart, ExtendableUploader, {
|
||||
|
||||
@on("didInsertElement")
|
||||
_initialize() {
|
||||
this.setProperties({
|
||||
fileInputEl: this.element.querySelector(this.fileInputSelector),
|
||||
});
|
||||
if (this.autoFindInput) {
|
||||
this.setProperties({
|
||||
fileInputEl: this.element.querySelector(this.fileInputSelector),
|
||||
});
|
||||
} else if (!this.fileInputEl) {
|
||||
return;
|
||||
}
|
||||
this.set("allowMultipleFiles", this.fileInputEl.multiple);
|
||||
this.set("inProgressUploads", []);
|
||||
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
<CreateInviteUploader as |status|>
|
||||
<DModalBody @title="user.invited.bulk_invite.text">
|
||||
{{#if status.uploaded}}
|
||||
{{i18n "user.invited.bulk_invite.success"}}
|
||||
{{else}}
|
||||
{{html-safe (i18n "user.invited.bulk_invite.instructions")}}
|
||||
|
||||
<input
|
||||
id="csv-file"
|
||||
disabled={{status.uploading}}
|
||||
type="file"
|
||||
accept=".csv"
|
||||
/>
|
||||
{{/if}}
|
||||
</DModalBody>
|
||||
|
||||
<div class="modal-footer">
|
||||
{{#unless status.uploaded}}
|
||||
<DButton
|
||||
@icon={{if this.isEmail "envelope" "link"}}
|
||||
@translatedLabel={{if
|
||||
status.uploading
|
||||
(i18n
|
||||
"user.invited.bulk_invite.progress" progress=status.uploadProgress
|
||||
)
|
||||
(i18n "user.invited.bulk_invite.text")
|
||||
}}
|
||||
@class="btn-primary"
|
||||
@action={{status.startUpload}}
|
||||
@disabled={{status.submitDisabled}}
|
||||
/>
|
||||
{{/unless}}
|
||||
|
||||
<DButton
|
||||
@label="close"
|
||||
@class="btn-primary"
|
||||
@action={{route-action "closeModal"}}
|
||||
/>
|
||||
</div>
|
||||
</CreateInviteUploader>
|
||||
Reference in New Issue
Block a user