mirror of https://github.com/zulip/zulip.git
poll_modal: Convert module to TypeScript.
This commit is contained in:
parent
e06b1794a8
commit
1aaedf89ee
|
@ -168,7 +168,7 @@ EXEMPT_FILES = make_set(
|
||||||
"web/src/plotly.js.d.ts",
|
"web/src/plotly.js.d.ts",
|
||||||
"web/src/pm_list.ts",
|
"web/src/pm_list.ts",
|
||||||
"web/src/pm_list_dom.ts",
|
"web/src/pm_list_dom.ts",
|
||||||
"web/src/poll_modal.js",
|
"web/src/poll_modal.ts",
|
||||||
"web/src/poll_widget.ts",
|
"web/src/poll_widget.ts",
|
||||||
"web/src/popover_menus.ts",
|
"web/src/popover_menus.ts",
|
||||||
"web/src/popover_menus_data.js",
|
"web/src/popover_menus_data.js",
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
import $ from "jquery";
|
import $ from "jquery";
|
||||||
import {Sortable} from "sortablejs";
|
import SortableJS from "sortablejs";
|
||||||
|
|
||||||
import render_poll_modal_option from "../templates/poll_modal_option.hbs";
|
import render_poll_modal_option from "../templates/poll_modal_option.hbs";
|
||||||
|
|
||||||
function create_option_row($last_option_row_input) {
|
function create_option_row($last_option_row_input: JQuery): void {
|
||||||
const row = render_poll_modal_option();
|
const row = render_poll_modal_option();
|
||||||
const $row_container = $last_option_row_input.closest(".simplebar-content");
|
const $row_container = $last_option_row_input.closest(".simplebar-content");
|
||||||
$row_container.append(row);
|
$row_container.append(row);
|
||||||
}
|
}
|
||||||
|
|
||||||
function add_option_row(e) {
|
function add_option_row(e: JQuery.TriggeredEvent): void {
|
||||||
// if the option triggering the input event e is not the last,
|
// if the option triggering the input event e is not the last,
|
||||||
// that is, its next sibling has the class `option-row`, we
|
// that is, its next sibling has the class `option-row`, we
|
||||||
// do not add a new option row and return from this function
|
// do not add a new option row and return from this function
|
||||||
|
@ -21,20 +21,20 @@ function add_option_row(e) {
|
||||||
create_option_row($(e.target));
|
create_option_row($(e.target));
|
||||||
}
|
}
|
||||||
|
|
||||||
function delete_option_row(e) {
|
function delete_option_row(e: JQuery.ClickEvent): void {
|
||||||
const $row = $(e.target).closest(".option-row");
|
const $row = $(e.target).closest(".option-row");
|
||||||
$row.remove();
|
$row.remove();
|
||||||
}
|
}
|
||||||
|
|
||||||
export function poll_options_setup() {
|
export function poll_options_setup(): void {
|
||||||
const $poll_options_list = $("#add-poll-form .poll-options-list");
|
const $poll_options_list = $("#add-poll-form .poll-options-list");
|
||||||
const $submit_button = $("#add-poll-modal .dialog_submit_button");
|
const $submit_button = $("#add-poll-modal .dialog_submit_button");
|
||||||
const $question_input = $("#add-poll-form #poll-question-input");
|
const $question_input = $<HTMLInputElement>("#add-poll-form input#poll-question-input");
|
||||||
|
|
||||||
// Disable the submit button if the question is empty.
|
// Disable the submit button if the question is empty.
|
||||||
$submit_button.prop("disabled", true);
|
$submit_button.prop("disabled", true);
|
||||||
$question_input.on("input", () => {
|
$question_input.on("input", () => {
|
||||||
if ($question_input.val().trim() !== "") {
|
if ($question_input.val()!.trim() !== "") {
|
||||||
$submit_button.prop("disabled", false);
|
$submit_button.prop("disabled", false);
|
||||||
} else {
|
} else {
|
||||||
$submit_button.prop("disabled", true);
|
$submit_button.prop("disabled", true);
|
||||||
|
@ -46,8 +46,10 @@ export function poll_options_setup() {
|
||||||
|
|
||||||
// setTimeout is needed to here to give time for simplebar to initialise
|
// setTimeout is needed to here to give time for simplebar to initialise
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
Sortable.create($("#add-poll-form .poll-options-list .simplebar-content")[0], {
|
SortableJS.create($("#add-poll-form .poll-options-list .simplebar-content")[0], {
|
||||||
onUpdate() {},
|
onUpdate() {
|
||||||
|
// Do nothing on drag; the order is only processed on submission.
|
||||||
|
},
|
||||||
// We don't want the last (empty) row to be draggable, as a new row
|
// We don't want the last (empty) row to be draggable, as a new row
|
||||||
// is added on input event of the last row.
|
// is added on input event of the last row.
|
||||||
filter: "input, .option-row:last-child",
|
filter: "input, .option-row:last-child",
|
||||||
|
@ -56,11 +58,11 @@ export function poll_options_setup() {
|
||||||
}, 0);
|
}, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function frame_poll_message_content() {
|
export function frame_poll_message_content(): string {
|
||||||
const question = $("#poll-question-input").val().trim();
|
const question = $<HTMLInputElement>("input#poll-question-input").val()!.trim();
|
||||||
const options = $(".poll-option-input")
|
const options = $<HTMLInputElement>("input.poll-option-input")
|
||||||
.map(function () {
|
.map(function () {
|
||||||
return $(this).val().trim();
|
return $(this).val()!.trim();
|
||||||
})
|
})
|
||||||
.toArray()
|
.toArray()
|
||||||
.filter(Boolean);
|
.filter(Boolean);
|
Loading…
Reference in New Issue