mirror of
https://github.com/flarum/framework.git
synced 2025-02-21 02:41:56 +08:00
Bundled output for commit b8e17182e93560a28e8456e44f82c7f77c346bb8
Includes transpiled JS/TS, and Typescript declaration files (typings). [skip ci]
This commit is contained in:
parent
b8e17182e9
commit
e0025df3e7
5
framework/core/js/dist-typings/admin/AdminApplication.d.ts
generated
vendored
5
framework/core/js/dist-typings/admin/AdminApplication.d.ts
generated
vendored
@ -29,6 +29,7 @@ export declare type Extension = {
|
||||
title: string;
|
||||
};
|
||||
};
|
||||
require?: Record<string, string>;
|
||||
};
|
||||
export interface AdminApplicationData extends ApplicationData {
|
||||
extensions: Record<string, Extension>;
|
||||
@ -40,7 +41,9 @@ export interface AdminApplicationData extends ApplicationData {
|
||||
slugDrivers: Record<string, string[]>;
|
||||
searchDrivers: Record<string, string[]>;
|
||||
permissions: Record<string, string[]>;
|
||||
advancedPageEmpty: boolean;
|
||||
maintenanceByConfig: boolean;
|
||||
safeModeExtensions?: string[] | null;
|
||||
safeModeExtensionsConfig?: string[] | null;
|
||||
}
|
||||
export default class AdminApplication extends Application {
|
||||
extensionData: ExtensionData;
|
||||
|
3
framework/core/js/dist-typings/admin/components/AdminPage.d.ts
generated
vendored
3
framework/core/js/dist-typings/admin/components/AdminPage.d.ts
generated
vendored
@ -15,6 +15,8 @@ export interface AdminHeaderOptions {
|
||||
}
|
||||
export declare type SettingsComponentOptions = FieldComponentOptions & {
|
||||
setting: string;
|
||||
json?: boolean;
|
||||
refreshAfterSaving?: boolean;
|
||||
};
|
||||
/**
|
||||
* Valid attrs that can be returned by the `headerInfo` function
|
||||
@ -27,6 +29,7 @@ export declare type SaveSubmitEvent = SubmitEvent & {
|
||||
};
|
||||
export default abstract class AdminPage<CustomAttrs extends IPageAttrs = IPageAttrs> extends Page<CustomAttrs> {
|
||||
settings: MutableSettings;
|
||||
refreshAfterSaving: string[];
|
||||
loading: boolean;
|
||||
view(vnode: Mithril.Vnode<CustomAttrs, this>): Mithril.Children;
|
||||
/**
|
||||
|
4
framework/core/js/dist-typings/admin/components/AdvancedPage.d.ts
generated
vendored
4
framework/core/js/dist-typings/admin/components/AdvancedPage.d.ts
generated
vendored
@ -2,6 +2,7 @@
|
||||
import AdminPage from './AdminPage';
|
||||
import type { IPageAttrs } from '../../common/components/Page';
|
||||
import type Mithril from 'mithril';
|
||||
import ItemList from '../../common/utils/ItemList';
|
||||
export default class AdvancedPage<CustomAttrs extends IPageAttrs = IPageAttrs> extends AdminPage<CustomAttrs> {
|
||||
searchDriverOptions: Record<string, Record<string, string>>;
|
||||
oninit(vnode: Mithril.Vnode<CustomAttrs, this>): void;
|
||||
@ -13,4 +14,7 @@ export default class AdvancedPage<CustomAttrs extends IPageAttrs = IPageAttrs> e
|
||||
};
|
||||
content(): JSX.Element[];
|
||||
driverLocale(): Record<string, Record<string, string>>;
|
||||
sectionItems(): ItemList<Mithril.Children>;
|
||||
searchDrivers(): JSX.Element;
|
||||
maintenance(): JSX.Element;
|
||||
}
|
||||
|
10
framework/core/js/dist-typings/admin/components/AlertWidget.d.ts
generated
vendored
Normal file
10
framework/core/js/dist-typings/admin/components/AlertWidget.d.ts
generated
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
import { AlertAttrs } from '../../common/components/Alert';
|
||||
import DashboardWidget, { type IDashboardWidgetAttrs } from './DashboardWidget';
|
||||
import type Mithril from 'mithril';
|
||||
export interface IAlertWidgetAttrs extends IDashboardWidgetAttrs {
|
||||
alert: AlertAttrs;
|
||||
}
|
||||
export default class AlertWidget<CustomAttrs extends IAlertWidgetAttrs = IAlertWidgetAttrs> extends DashboardWidget<CustomAttrs> {
|
||||
className(): string;
|
||||
content(vnode: Mithril.Vnode<CustomAttrs, this>): JSX.Element;
|
||||
}
|
6
framework/core/js/dist-typings/admin/components/DashboardWidget.d.ts
generated
vendored
6
framework/core/js/dist-typings/admin/components/DashboardWidget.d.ts
generated
vendored
@ -1,9 +1,9 @@
|
||||
import type { Children, Vnode } from 'mithril';
|
||||
import type Mithril from 'mithril';
|
||||
import Component, { ComponentAttrs } from '../../common/Component';
|
||||
export interface IDashboardWidgetAttrs extends ComponentAttrs {
|
||||
}
|
||||
export default class DashboardWidget<CustomAttrs extends IDashboardWidgetAttrs = IDashboardWidgetAttrs> extends Component<CustomAttrs> {
|
||||
view(vnode: Vnode<CustomAttrs, this>): Children;
|
||||
view(vnode: Mithril.Vnode<CustomAttrs, this>): Mithril.Children;
|
||||
className(): string;
|
||||
content(): Children;
|
||||
content(vnode: Mithril.Vnode<CustomAttrs, this>): Mithril.Children;
|
||||
}
|
||||
|
6
framework/core/js/dist-typings/admin/components/DebugWarningWidget.d.ts
generated
vendored
6
framework/core/js/dist-typings/admin/components/DebugWarningWidget.d.ts
generated
vendored
@ -1,6 +0,0 @@
|
||||
/// <reference types="mithril" />
|
||||
import DashboardWidget from './DashboardWidget';
|
||||
export default class DebugWarningWidget extends DashboardWidget {
|
||||
className(): string;
|
||||
content(): JSX.Element;
|
||||
}
|
1
framework/core/js/dist-typings/admin/components/ExtensionPage.d.ts
generated
vendored
1
framework/core/js/dist-typings/admin/components/ExtensionPage.d.ts
generated
vendored
@ -21,6 +21,7 @@ export default class ExtensionPage<Attrs extends ExtensionPageAttrs = ExtensionP
|
||||
oninit(vnode: Mithril.Vnode<Attrs, this>): void;
|
||||
className(): string;
|
||||
view(vnode: Mithril.VnodeDOM<Attrs, this>): JSX.Element | null;
|
||||
body(vnode: Mithril.VnodeDOM<Attrs, this>): JSX.Element;
|
||||
header(): JSX.Element[];
|
||||
sections(vnode: Mithril.VnodeDOM<Attrs, this>): ItemList<unknown>;
|
||||
content(vnode: Mithril.VnodeDOM<Attrs, this>): JSX.Element;
|
||||
|
7
framework/core/js/dist-typings/common/Application.d.ts
generated
vendored
7
framework/core/js/dist-typings/common/Application.d.ts
generated
vendored
@ -92,6 +92,12 @@ export interface RouteResolver<Attrs extends ComponentAttrs, Comp extends Compon
|
||||
*/
|
||||
render?(this: this, vnode: Mithril.Vnode<Attrs, Comp>): Mithril.Children;
|
||||
}
|
||||
export declare enum MaintenanceMode {
|
||||
NO_MAINTENANCE = "none",
|
||||
HIGH_MAINTENANCE = "high",
|
||||
LOW_MAINTENANCE = "low",
|
||||
SAFE_MODE = "safe"
|
||||
}
|
||||
export interface ApplicationData {
|
||||
apiDocument: ApiPayload | null;
|
||||
locale: string;
|
||||
@ -101,6 +107,7 @@ export interface ApplicationData {
|
||||
userId: number;
|
||||
csrfToken: string;
|
||||
};
|
||||
maintenanceMode?: MaintenanceMode;
|
||||
[key: string]: unknown;
|
||||
}
|
||||
/**
|
||||
|
2
framework/core/js/dist-typings/common/components/Dropdown.d.ts
generated
vendored
2
framework/core/js/dist-typings/common/components/Dropdown.d.ts
generated
vendored
@ -3,6 +3,8 @@ import type Mithril from 'mithril';
|
||||
export interface IDropdownAttrs extends ComponentAttrs {
|
||||
/** A class name to apply to the dropdown toggle button. */
|
||||
buttonClassName?: string;
|
||||
/** Additional attributes to apply to the dropdown toggle button. */
|
||||
buttonAttrs?: Record<string, string>;
|
||||
/** A class name to apply to the dropdown menu. */
|
||||
menuClassName?: string;
|
||||
/** The name of an icon to show in the dropdown toggle button. */
|
||||
|
8
framework/core/js/dist-typings/common/components/FormGroup.d.ts
generated
vendored
8
framework/core/js/dist-typings/common/components/FormGroup.d.ts
generated
vendored
@ -48,9 +48,13 @@ export interface SelectFieldComponentOptions extends CommonFieldOptions {
|
||||
* Map of values to their labels
|
||||
*/
|
||||
options: {
|
||||
[value: string]: Mithril.Children;
|
||||
[value: string]: Mithril.Children | {
|
||||
label: Mithril.Children;
|
||||
disabled?: boolean;
|
||||
};
|
||||
};
|
||||
default: string;
|
||||
multiple?: boolean;
|
||||
}
|
||||
/**
|
||||
* Valid options for the setting component builder to generate a Textarea.
|
||||
@ -76,7 +80,7 @@ export interface CustomFieldComponentOptions extends CommonFieldOptions {
|
||||
*/
|
||||
export declare type FieldComponentOptions = HTMLInputFieldComponentOptions | SwitchFieldComponentOptions | SelectFieldComponentOptions | TextareaFieldComponentOptions | ColorPreviewFieldComponentOptions | ImageUploadFieldComponentOptions | CustomFieldComponentOptions;
|
||||
export declare type IFormGroupAttrs = ComponentAttrs & FieldComponentOptions & {
|
||||
bidi?: Stream<any>;
|
||||
stream?: Stream<any>;
|
||||
};
|
||||
/**
|
||||
* Builds a field component based on the provided attributes.
|
||||
|
34
framework/core/js/dist-typings/common/components/MultiSelect.d.ts
generated
vendored
Normal file
34
framework/core/js/dist-typings/common/components/MultiSelect.d.ts
generated
vendored
Normal file
@ -0,0 +1,34 @@
|
||||
import Component, { type ComponentAttrs } from '../Component';
|
||||
import Mithril from 'mithril';
|
||||
export declare type Option = {
|
||||
label: string;
|
||||
disabled?: boolean | ((value: string[]) => boolean);
|
||||
tooltip?: string;
|
||||
};
|
||||
export interface IMultiSelectAttrs extends ComponentAttrs {
|
||||
options: Record<string, string | Option>;
|
||||
onchange?: (value: string[]) => void;
|
||||
value?: string[];
|
||||
disabled?: boolean;
|
||||
wrapperAttrs?: Record<string, string>;
|
||||
}
|
||||
/**
|
||||
* The `MultiSelect` component displays an input with selected elements.
|
||||
* With a dropdown to select multiple options.
|
||||
*
|
||||
* - `options` A map of option values to labels.
|
||||
* - `onchange` A callback to run when the selected value is changed.
|
||||
* - `value` The value of the selected option.
|
||||
* - `disabled` Disabled state for the input.
|
||||
* - `wrapperAttrs` A map of attrs to be passed to the DOM element wrapping the input.
|
||||
*
|
||||
* Other attributes are passed directly to the input element rendered to the DOM.
|
||||
*/
|
||||
export default class MultiSelect<CustomAttrs extends IMultiSelectAttrs = IMultiSelectAttrs> extends Component<CustomAttrs> {
|
||||
protected selected: string[];
|
||||
oninit(vnode: Mithril.Vnode<CustomAttrs, this>): void;
|
||||
view(): JSX.Element;
|
||||
select(value: string): void;
|
||||
unselect(value: string): void;
|
||||
toggle(value: string, e: MouseEvent): void;
|
||||
}
|
2
framework/core/js/dist/admin.js
generated
vendored
2
framework/core/js/dist/admin.js
generated
vendored
File diff suppressed because one or more lines are too long
63
framework/core/js/dist/admin.js.LICENSE.txt
generated
vendored
Normal file
63
framework/core/js/dist/admin.js.LICENSE.txt
generated
vendored
Normal file
@ -0,0 +1,63 @@
|
||||
/*!
|
||||
* quantize.js Copyright 2008 Nick Rabinowitz.
|
||||
* Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php
|
||||
*/
|
||||
|
||||
/*!
|
||||
* Sizzle CSS Selector Engine v2.3.6
|
||||
* https://sizzlejs.com/
|
||||
*
|
||||
* Copyright JS Foundation and other contributors
|
||||
* Released under the MIT license
|
||||
* https://js.foundation/
|
||||
*
|
||||
* Date: 2021-02-16
|
||||
*/
|
||||
|
||||
/*!
|
||||
* Block below copied from Protovis: http://mbostock.github.com/protovis/
|
||||
* Copyright 2010 Stanford Visualization Group
|
||||
* Licensed under the BSD License: http://www.opensource.org/licenses/bsd-license.php
|
||||
*/
|
||||
|
||||
/*!
|
||||
* Color Thief v2.0
|
||||
* by Lokesh Dhakar - http://www.lokeshdhakar.com
|
||||
*
|
||||
* Thanks
|
||||
* ------
|
||||
* Nick Rabinowitz - For creating quantize.js.
|
||||
* John Schulz - For clean up and optimization. @JFSIII
|
||||
* Nathan Spady - For adding drag and drop support to the demo page.
|
||||
*
|
||||
* License
|
||||
* -------
|
||||
* Copyright 2011, 2015 Lokesh Dhakar
|
||||
* Released under the MIT license
|
||||
* https://raw.githubusercontent.com/lokesh/color-thief/master/LICENSE
|
||||
*
|
||||
*/
|
||||
|
||||
/*!
|
||||
* jQuery JavaScript Library v3.6.1
|
||||
* https://jquery.com/
|
||||
*
|
||||
* Includes Sizzle.js
|
||||
* https://sizzlejs.com/
|
||||
*
|
||||
* Copyright OpenJS Foundation and other contributors
|
||||
* Released under the MIT license
|
||||
* https://jquery.org/license
|
||||
*
|
||||
* Date: 2022-08-26T17:52Z
|
||||
*/
|
||||
|
||||
/*!
|
||||
* focus-trap 6.9.4
|
||||
* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE
|
||||
*/
|
||||
|
||||
/*!
|
||||
* tabbable 5.3.3
|
||||
* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE
|
||||
*/
|
2
framework/core/js/dist/admin.js.map
generated
vendored
2
framework/core/js/dist/admin.js.map
generated
vendored
File diff suppressed because one or more lines are too long
201
framework/core/js/dist/common/components/EditUserModal.js
generated
vendored
201
framework/core/js/dist/common/components/EditUserModal.js
generated
vendored
@ -1,201 +1,2 @@
|
||||
"use strict";
|
||||
(self["webpackChunkflarum_core"] = self["webpackChunkflarum_core"] || []).push([["common/components/EditUserModal"],{
|
||||
|
||||
/***/ "./src/common/components/EditUserModal.tsx":
|
||||
/*!*************************************************!*\
|
||||
!*** ./src/common/components/EditUserModal.tsx ***!
|
||||
\*************************************************/
|
||||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||||
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
||||
/* harmony export */ "default": () => (/* binding */ EditUserModal)
|
||||
/* harmony export */ });
|
||||
/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ "../../../js-packages/webpack-config/node_modules/@babel/runtime/helpers/esm/defineProperty.js");
|
||||
/* harmony import */ var _common_app__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../common/app */ "./src/common/app.ts");
|
||||
/* harmony import */ var _common_components_FormModal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../common/components/FormModal */ "./src/common/components/FormModal.tsx");
|
||||
/* harmony import */ var _Button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Button */ "./src/common/components/Button.tsx");
|
||||
/* harmony import */ var _GroupBadge__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./GroupBadge */ "./src/common/components/GroupBadge.tsx");
|
||||
/* harmony import */ var _models_Group__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../models/Group */ "./src/common/models/Group.ts");
|
||||
/* harmony import */ var _utils_extractText__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/extractText */ "./src/common/utils/extractText.ts");
|
||||
/* harmony import */ var _utils_ItemList__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/ItemList */ "./src/common/utils/ItemList.ts");
|
||||
/* harmony import */ var _utils_Stream__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/Stream */ "./src/common/utils/Stream.ts");
|
||||
/* harmony import */ var _Form__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Form */ "./src/common/components/Form.tsx");
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
class EditUserModal extends _common_components_FormModal__WEBPACK_IMPORTED_MODULE_2__["default"] {
|
||||
constructor() {
|
||||
super(...arguments);
|
||||
(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__["default"])(this, "username", void 0);
|
||||
(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__["default"])(this, "email", void 0);
|
||||
(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__["default"])(this, "isEmailConfirmed", void 0);
|
||||
(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__["default"])(this, "setPassword", void 0);
|
||||
(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__["default"])(this, "password", void 0);
|
||||
(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__["default"])(this, "groups", {});
|
||||
}
|
||||
oninit(vnode) {
|
||||
super.oninit(vnode);
|
||||
const user = this.attrs.user;
|
||||
this.username = (0,_utils_Stream__WEBPACK_IMPORTED_MODULE_8__["default"])(user.username() || '');
|
||||
this.email = (0,_utils_Stream__WEBPACK_IMPORTED_MODULE_8__["default"])(user.email() || '');
|
||||
this.isEmailConfirmed = (0,_utils_Stream__WEBPACK_IMPORTED_MODULE_8__["default"])(user.isEmailConfirmed() || false);
|
||||
this.setPassword = (0,_utils_Stream__WEBPACK_IMPORTED_MODULE_8__["default"])(false);
|
||||
this.password = (0,_utils_Stream__WEBPACK_IMPORTED_MODULE_8__["default"])(user.password() || '');
|
||||
const userGroups = user.groups() || [];
|
||||
_common_app__WEBPACK_IMPORTED_MODULE_1__["default"].store.all('groups').filter(group => ![_models_Group__WEBPACK_IMPORTED_MODULE_5__["default"].GUEST_ID, _models_Group__WEBPACK_IMPORTED_MODULE_5__["default"].MEMBER_ID].includes(group.id())).forEach(group => this.groups[group.id()] = (0,_utils_Stream__WEBPACK_IMPORTED_MODULE_8__["default"])(userGroups.includes(group)));
|
||||
}
|
||||
className() {
|
||||
return 'EditUserModal Modal--small';
|
||||
}
|
||||
title() {
|
||||
return _common_app__WEBPACK_IMPORTED_MODULE_1__["default"].translator.trans('core.lib.edit_user.title');
|
||||
}
|
||||
content() {
|
||||
const fields = this.fields().toArray();
|
||||
return m("div", {
|
||||
className: "Modal-body"
|
||||
}, fields.length > 1 ? m(_Form__WEBPACK_IMPORTED_MODULE_9__["default"], null, this.fields().toArray()) : _common_app__WEBPACK_IMPORTED_MODULE_1__["default"].translator.trans('core.lib.edit_user.nothing_available'));
|
||||
}
|
||||
fields() {
|
||||
const items = new _utils_ItemList__WEBPACK_IMPORTED_MODULE_7__["default"]();
|
||||
if (this.attrs.user.canEditCredentials()) {
|
||||
items.add('username', m("div", {
|
||||
className: "Form-group"
|
||||
}, m("label", null, _common_app__WEBPACK_IMPORTED_MODULE_1__["default"].translator.trans('core.lib.edit_user.username_heading')), m("input", {
|
||||
className: "FormControl",
|
||||
placeholder: (0,_utils_extractText__WEBPACK_IMPORTED_MODULE_6__["default"])(_common_app__WEBPACK_IMPORTED_MODULE_1__["default"].translator.trans('core.lib.edit_user.username_label')),
|
||||
bidi: this.username,
|
||||
disabled: this.nonAdminEditingAdmin()
|
||||
})), 40);
|
||||
if (_common_app__WEBPACK_IMPORTED_MODULE_1__["default"].session.user !== this.attrs.user) {
|
||||
items.add('email', m("div", {
|
||||
className: "Form-group"
|
||||
}, m("label", null, _common_app__WEBPACK_IMPORTED_MODULE_1__["default"].translator.trans('core.lib.edit_user.email_heading')), m("input", {
|
||||
className: "FormControl",
|
||||
placeholder: (0,_utils_extractText__WEBPACK_IMPORTED_MODULE_6__["default"])(_common_app__WEBPACK_IMPORTED_MODULE_1__["default"].translator.trans('core.lib.edit_user.email_label')),
|
||||
bidi: this.email,
|
||||
disabled: this.nonAdminEditingAdmin()
|
||||
}), !this.isEmailConfirmed() && this.userIsAdmin(_common_app__WEBPACK_IMPORTED_MODULE_1__["default"].session.user) && m(_Button__WEBPACK_IMPORTED_MODULE_3__["default"], {
|
||||
className: "Button Button--block",
|
||||
loading: this.loading,
|
||||
onclick: this.activate.bind(this)
|
||||
}, _common_app__WEBPACK_IMPORTED_MODULE_1__["default"].translator.trans('core.lib.edit_user.activate_button'))), 30);
|
||||
items.add('password', m("div", {
|
||||
className: "Form-group"
|
||||
}, m("label", null, _common_app__WEBPACK_IMPORTED_MODULE_1__["default"].translator.trans('core.lib.edit_user.password_heading')), m("div", null, m("label", {
|
||||
className: "checkbox"
|
||||
}, m("input", {
|
||||
type: "checkbox",
|
||||
onchange: e => {
|
||||
const target = e.target;
|
||||
this.setPassword(target.checked);
|
||||
m.redraw.sync();
|
||||
if (target.checked) this.$('[name=password]').select();
|
||||
e.redraw = false;
|
||||
},
|
||||
disabled: this.nonAdminEditingAdmin()
|
||||
}), _common_app__WEBPACK_IMPORTED_MODULE_1__["default"].translator.trans('core.lib.edit_user.set_password_label'))), this.setPassword() && m("input", {
|
||||
className: "FormControl",
|
||||
type: "password",
|
||||
name: "password",
|
||||
placeholder: (0,_utils_extractText__WEBPACK_IMPORTED_MODULE_6__["default"])(_common_app__WEBPACK_IMPORTED_MODULE_1__["default"].translator.trans('core.lib.edit_user.password_label')),
|
||||
bidi: this.password,
|
||||
disabled: this.nonAdminEditingAdmin()
|
||||
})), 20);
|
||||
}
|
||||
}
|
||||
if (this.attrs.user.canEditGroups()) {
|
||||
items.add('groups', m("div", {
|
||||
className: "Form-group EditUserModal-groups"
|
||||
}, m("label", null, _common_app__WEBPACK_IMPORTED_MODULE_1__["default"].translator.trans('core.lib.edit_user.groups_heading')), m("div", null, Object.keys(this.groups).map(id => _common_app__WEBPACK_IMPORTED_MODULE_1__["default"].store.getById('groups', id)).filter(Boolean).map(group =>
|
||||
// Necessary because filter(Boolean) doesn't narrow out falsy values.
|
||||
group && m("label", {
|
||||
className: "checkbox"
|
||||
}, m("input", {
|
||||
type: "checkbox",
|
||||
bidi: this.groups[group.id()],
|
||||
disabled: group.id() === _models_Group__WEBPACK_IMPORTED_MODULE_5__["default"].ADMINISTRATOR_ID && (this.attrs.user === _common_app__WEBPACK_IMPORTED_MODULE_1__["default"].session.user || !this.userIsAdmin(_common_app__WEBPACK_IMPORTED_MODULE_1__["default"].session.user))
|
||||
}), m(_GroupBadge__WEBPACK_IMPORTED_MODULE_4__["default"], {
|
||||
group: group,
|
||||
label: null
|
||||
}), " ", group.nameSingular())))), 10);
|
||||
}
|
||||
items.add('submit', m("div", {
|
||||
className: "Form-group Form-controls"
|
||||
}, m(_Button__WEBPACK_IMPORTED_MODULE_3__["default"], {
|
||||
className: "Button Button--primary",
|
||||
type: "submit",
|
||||
loading: this.loading
|
||||
}, _common_app__WEBPACK_IMPORTED_MODULE_1__["default"].translator.trans('core.lib.edit_user.submit_button'))), -10);
|
||||
return items;
|
||||
}
|
||||
activate() {
|
||||
this.loading = true;
|
||||
const data = {
|
||||
username: this.username(),
|
||||
isEmailConfirmed: true
|
||||
};
|
||||
this.attrs.user.save(data, {
|
||||
errorHandler: this.onerror.bind(this)
|
||||
}).then(() => {
|
||||
this.isEmailConfirmed(true);
|
||||
this.loading = false;
|
||||
m.redraw();
|
||||
}).catch(() => {
|
||||
this.loading = false;
|
||||
m.redraw();
|
||||
});
|
||||
}
|
||||
data() {
|
||||
const data = {};
|
||||
const relationships = {};
|
||||
if (this.attrs.user.canEditCredentials() && !this.nonAdminEditingAdmin()) {
|
||||
data.username = this.username();
|
||||
if (_common_app__WEBPACK_IMPORTED_MODULE_1__["default"].session.user !== this.attrs.user) {
|
||||
data.email = this.email();
|
||||
}
|
||||
if (this.setPassword()) {
|
||||
data.password = this.password();
|
||||
}
|
||||
}
|
||||
if (this.attrs.user.canEditGroups()) {
|
||||
relationships.groups = Object.keys(this.groups).filter(id => this.groups[id]()).map(id => _common_app__WEBPACK_IMPORTED_MODULE_1__["default"].store.getById('groups', id)).filter(g => g instanceof _models_Group__WEBPACK_IMPORTED_MODULE_5__["default"]);
|
||||
}
|
||||
data.relationships = relationships;
|
||||
return data;
|
||||
}
|
||||
onsubmit(e) {
|
||||
e.preventDefault();
|
||||
this.loading = true;
|
||||
this.attrs.user.save(this.data(), {
|
||||
errorHandler: this.onerror.bind(this)
|
||||
}).then(this.hide.bind(this)).catch(() => {
|
||||
this.loading = false;
|
||||
m.redraw();
|
||||
});
|
||||
}
|
||||
nonAdminEditingAdmin() {
|
||||
return this.userIsAdmin(this.attrs.user) && !this.userIsAdmin(_common_app__WEBPACK_IMPORTED_MODULE_1__["default"].session.user);
|
||||
}
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
userIsAdmin(user) {
|
||||
return !!((user == null ? void 0 : user.groups()) || []).some(g => (g == null ? void 0 : g.id()) === _models_Group__WEBPACK_IMPORTED_MODULE_5__["default"].ADMINISTRATOR_ID);
|
||||
}
|
||||
}
|
||||
flarum.reg.add('core', 'common/components/EditUserModal', EditUserModal);
|
||||
|
||||
/***/ })
|
||||
|
||||
}]);
|
||||
"use strict";(self.webpackChunkflarum_core=self.webpackChunkflarum_core||[]).push([[841],{4292:(s,t,i)=>{i.r(t),i.d(t,{default:()=>p});var e=i(7905),r=i(7465),a=i(899),n=i(8312),o=i(6697),d=i(7645),l=i(1552),u=i(4041),h=i(6458),c=i(6352);class p extends a.Z{constructor(){super(...arguments),(0,e.Z)(this,"username",void 0),(0,e.Z)(this,"email",void 0),(0,e.Z)(this,"isEmailConfirmed",void 0),(0,e.Z)(this,"setPassword",void 0),(0,e.Z)(this,"password",void 0),(0,e.Z)(this,"groups",{})}oninit(s){super.oninit(s);const t=this.attrs.user;this.username=(0,h.Z)(t.username()||""),this.email=(0,h.Z)(t.email()||""),this.isEmailConfirmed=(0,h.Z)(t.isEmailConfirmed()||!1),this.setPassword=(0,h.Z)(!1),this.password=(0,h.Z)(t.password()||"");const i=t.groups()||[];r.Z.store.all("groups").filter((s=>![d.Z.GUEST_ID,d.Z.MEMBER_ID].includes(s.id()))).forEach((s=>this.groups[s.id()]=(0,h.Z)(i.includes(s))))}className(){return"EditUserModal Modal--small"}title(){return r.Z.translator.trans("core.lib.edit_user.title")}content(){const s=this.fields().toArray();return m("div",{className:"Modal-body"},s.length>1?m(c.Z,null,this.fields().toArray()):r.Z.translator.trans("core.lib.edit_user.nothing_available"))}fields(){const s=new u.Z;return this.attrs.user.canEditCredentials()&&(s.add("username",m("div",{className:"Form-group"},m("label",null,r.Z.translator.trans("core.lib.edit_user.username_heading")),m("input",{className:"FormControl",placeholder:(0,l.Z)(r.Z.translator.trans("core.lib.edit_user.username_label")),bidi:this.username,disabled:this.nonAdminEditingAdmin()})),40),r.Z.session.user!==this.attrs.user&&(s.add("email",m("div",{className:"Form-group"},m("label",null,r.Z.translator.trans("core.lib.edit_user.email_heading")),m("input",{className:"FormControl",placeholder:(0,l.Z)(r.Z.translator.trans("core.lib.edit_user.email_label")),bidi:this.email,disabled:this.nonAdminEditingAdmin()}),!this.isEmailConfirmed()&&this.userIsAdmin(r.Z.session.user)&&m(n.Z,{className:"Button Button--block",loading:this.loading,onclick:this.activate.bind(this)},r.Z.translator.trans("core.lib.edit_user.activate_button"))),30),s.add("password",m("div",{className:"Form-group"},m("label",null,r.Z.translator.trans("core.lib.edit_user.password_heading")),m("div",null,m("label",{className:"checkbox"},m("input",{type:"checkbox",onchange:s=>{const t=s.target;this.setPassword(t.checked),m.redraw.sync(),t.checked&&this.$("[name=password]").select(),s.redraw=!1},disabled:this.nonAdminEditingAdmin()}),r.Z.translator.trans("core.lib.edit_user.set_password_label"))),this.setPassword()&&m("input",{className:"FormControl",type:"password",name:"password",placeholder:(0,l.Z)(r.Z.translator.trans("core.lib.edit_user.password_label")),bidi:this.password,disabled:this.nonAdminEditingAdmin()})),20))),this.attrs.user.canEditGroups()&&s.add("groups",m("div",{className:"Form-group EditUserModal-groups"},m("label",null,r.Z.translator.trans("core.lib.edit_user.groups_heading")),m("div",null,Object.keys(this.groups).map((s=>r.Z.store.getById("groups",s))).filter(Boolean).map((s=>s&&m("label",{className:"checkbox"},m("input",{type:"checkbox",bidi:this.groups[s.id()],disabled:s.id()===d.Z.ADMINISTRATOR_ID&&(this.attrs.user===r.Z.session.user||!this.userIsAdmin(r.Z.session.user))}),m(o.Z,{group:s,label:null})," ",s.nameSingular()))))),10),s.add("submit",m("div",{className:"Form-group Form-controls"},m(n.Z,{className:"Button Button--primary",type:"submit",loading:this.loading},r.Z.translator.trans("core.lib.edit_user.submit_button"))),-10),s}activate(){this.loading=!0;const s={username:this.username(),isEmailConfirmed:!0};this.attrs.user.save(s,{errorHandler:this.onerror.bind(this)}).then((()=>{this.isEmailConfirmed(!0),this.loading=!1,m.redraw()})).catch((()=>{this.loading=!1,m.redraw()}))}data(){const s={},t={};return this.attrs.user.canEditCredentials()&&!this.nonAdminEditingAdmin()&&(s.username=this.username(),r.Z.session.user!==this.attrs.user&&(s.email=this.email()),this.setPassword()&&(s.password=this.password())),this.attrs.user.canEditGroups()&&(t.groups=Object.keys(this.groups).filter((s=>this.groups[s]())).map((s=>r.Z.store.getById("groups",s))).filter((s=>s instanceof d.Z))),s.relationships=t,s}onsubmit(s){s.preventDefault(),this.loading=!0,this.attrs.user.save(this.data(),{errorHandler:this.onerror.bind(this)}).then(this.hide.bind(this)).catch((()=>{this.loading=!1,m.redraw()}))}nonAdminEditingAdmin(){return this.userIsAdmin(this.attrs.user)&&!this.userIsAdmin(r.Z.session.user)}userIsAdmin(s){return!!((null==s?void 0:s.groups())||[]).some((s=>(null==s?void 0:s.id())===d.Z.ADMINISTRATOR_ID))}}flarum.reg.add("core","common/components/EditUserModal",p)}}]);
|
||||
//# sourceMappingURL=EditUserModal.js.map
|
2
framework/core/js/dist/common/components/EditUserModal.js.map
generated
vendored
2
framework/core/js/dist/common/components/EditUserModal.js.map
generated
vendored
File diff suppressed because one or more lines are too long
2
framework/core/js/dist/forum.js
generated
vendored
2
framework/core/js/dist/forum.js
generated
vendored
File diff suppressed because one or more lines are too long
63
framework/core/js/dist/forum.js.LICENSE.txt
generated
vendored
Normal file
63
framework/core/js/dist/forum.js.LICENSE.txt
generated
vendored
Normal file
@ -0,0 +1,63 @@
|
||||
/*!
|
||||
* quantize.js Copyright 2008 Nick Rabinowitz.
|
||||
* Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php
|
||||
*/
|
||||
|
||||
/*!
|
||||
* Sizzle CSS Selector Engine v2.3.6
|
||||
* https://sizzlejs.com/
|
||||
*
|
||||
* Copyright JS Foundation and other contributors
|
||||
* Released under the MIT license
|
||||
* https://js.foundation/
|
||||
*
|
||||
* Date: 2021-02-16
|
||||
*/
|
||||
|
||||
/*!
|
||||
* Block below copied from Protovis: http://mbostock.github.com/protovis/
|
||||
* Copyright 2010 Stanford Visualization Group
|
||||
* Licensed under the BSD License: http://www.opensource.org/licenses/bsd-license.php
|
||||
*/
|
||||
|
||||
/*!
|
||||
* Color Thief v2.0
|
||||
* by Lokesh Dhakar - http://www.lokeshdhakar.com
|
||||
*
|
||||
* Thanks
|
||||
* ------
|
||||
* Nick Rabinowitz - For creating quantize.js.
|
||||
* John Schulz - For clean up and optimization. @JFSIII
|
||||
* Nathan Spady - For adding drag and drop support to the demo page.
|
||||
*
|
||||
* License
|
||||
* -------
|
||||
* Copyright 2011, 2015 Lokesh Dhakar
|
||||
* Released under the MIT license
|
||||
* https://raw.githubusercontent.com/lokesh/color-thief/master/LICENSE
|
||||
*
|
||||
*/
|
||||
|
||||
/*!
|
||||
* jQuery JavaScript Library v3.6.1
|
||||
* https://jquery.com/
|
||||
*
|
||||
* Includes Sizzle.js
|
||||
* https://sizzlejs.com/
|
||||
*
|
||||
* Copyright OpenJS Foundation and other contributors
|
||||
* Released under the MIT license
|
||||
* https://jquery.org/license
|
||||
*
|
||||
* Date: 2022-08-26T17:52Z
|
||||
*/
|
||||
|
||||
/*!
|
||||
* focus-trap 6.9.4
|
||||
* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE
|
||||
*/
|
||||
|
||||
/*!
|
||||
* tabbable 5.3.3
|
||||
* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE
|
||||
*/
|
2
framework/core/js/dist/forum.js.map
generated
vendored
2
framework/core/js/dist/forum.js.map
generated
vendored
File diff suppressed because one or more lines are too long
418
framework/core/js/dist/forum/components/Composer.js
generated
vendored
418
framework/core/js/dist/forum/components/Composer.js
generated
vendored
File diff suppressed because one or more lines are too long
2
framework/core/js/dist/forum/components/Composer.js.map
generated
vendored
2
framework/core/js/dist/forum/components/Composer.js.map
generated
vendored
File diff suppressed because one or more lines are too long
288
framework/core/js/dist/forum/components/DiscussionComposer.js
generated
vendored
288
framework/core/js/dist/forum/components/DiscussionComposer.js
generated
vendored
@ -1,288 +1,2 @@
|
||||
"use strict";
|
||||
(self["webpackChunkflarum_core"] = self["webpackChunkflarum_core"] || []).push([["forum/components/DiscussionComposer"],{
|
||||
|
||||
/***/ "./src/common/components/ConfirmDocumentUnload.js":
|
||||
/*!********************************************************!*\
|
||||
!*** ./src/common/components/ConfirmDocumentUnload.js ***!
|
||||
\********************************************************/
|
||||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||||
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
||||
/* harmony export */ "default": () => (/* binding */ ConfirmDocumentUnload)
|
||||
/* harmony export */ });
|
||||
/* harmony import */ var _Component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Component */ "./src/common/Component.ts");
|
||||
|
||||
|
||||
/**
|
||||
* The `ConfirmDocumentUnload` component can be used to register a global
|
||||
* event handler that prevents closing the browser window/tab based on the
|
||||
* return value of a given callback prop.
|
||||
*
|
||||
* ### Attrs
|
||||
*
|
||||
* - `when` - a callback returning true when the browser should prompt for
|
||||
* confirmation before closing the window/tab
|
||||
*/
|
||||
class ConfirmDocumentUnload extends _Component__WEBPACK_IMPORTED_MODULE_0__["default"] {
|
||||
handler() {
|
||||
return this.attrs.when() || undefined;
|
||||
}
|
||||
oncreate(vnode) {
|
||||
super.oncreate(vnode);
|
||||
this.boundHandler = this.handler.bind(this);
|
||||
$(window).on('beforeunload', this.boundHandler);
|
||||
}
|
||||
onremove(vnode) {
|
||||
super.onremove(vnode);
|
||||
$(window).off('beforeunload', this.boundHandler);
|
||||
}
|
||||
view(vnode) {
|
||||
return m('[', null, vnode.children);
|
||||
}
|
||||
}
|
||||
flarum.reg.add('core', 'common/components/ConfirmDocumentUnload', ConfirmDocumentUnload);
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./src/forum/components/ComposerBody.js":
|
||||
/*!**********************************************!*\
|
||||
!*** ./src/forum/components/ComposerBody.js ***!
|
||||
\**********************************************/
|
||||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||||
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
||||
/* harmony export */ "default": () => (/* binding */ ComposerBody)
|
||||
/* harmony export */ });
|
||||
/* harmony import */ var _common_Component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../common/Component */ "./src/common/Component.ts");
|
||||
/* harmony import */ var _common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../common/components/LoadingIndicator */ "./src/common/components/LoadingIndicator.tsx");
|
||||
/* harmony import */ var _common_components_ConfirmDocumentUnload__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../common/components/ConfirmDocumentUnload */ "./src/common/components/ConfirmDocumentUnload.js");
|
||||
/* harmony import */ var _common_components_TextEditor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../common/components/TextEditor */ "./src/common/components/TextEditor.js");
|
||||
/* harmony import */ var _common_helpers_listItems__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../common/helpers/listItems */ "./src/common/helpers/listItems.tsx");
|
||||
/* harmony import */ var _common_utils_ItemList__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../common/utils/ItemList */ "./src/common/utils/ItemList.ts");
|
||||
/* harmony import */ var _common_utils_classList__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../common/utils/classList */ "./src/common/utils/classList.ts");
|
||||
/* harmony import */ var _common_components_Avatar__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../common/components/Avatar */ "./src/common/components/Avatar.tsx");
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* The `ComposerBody` component handles the body, or the content, of the
|
||||
* composer. Subclasses should implement the `onsubmit` method and override
|
||||
* `headerTimes`.
|
||||
*
|
||||
* ### Attrs
|
||||
*
|
||||
* - `composer`
|
||||
* - `originalContent`
|
||||
* - `submitLabel`
|
||||
* - `placeholder`
|
||||
* - `user`
|
||||
* - `confirmExit`
|
||||
* - `disabled`
|
||||
*
|
||||
* @abstract
|
||||
*/
|
||||
class ComposerBody extends _common_Component__WEBPACK_IMPORTED_MODULE_0__["default"] {
|
||||
oninit(vnode) {
|
||||
super.oninit(vnode);
|
||||
this.composer = this.attrs.composer;
|
||||
|
||||
/**
|
||||
* Whether or not the component is loading.
|
||||
*
|
||||
* @type {Boolean}
|
||||
*/
|
||||
this.loading = false;
|
||||
|
||||
// Let the composer state know to ask for confirmation under certain
|
||||
// circumstances, if the body supports / requires it and has a corresponding
|
||||
// confirmation question to ask.
|
||||
if (this.attrs.confirmExit) {
|
||||
this.composer.preventClosingWhen(() => this.hasChanges(), this.attrs.confirmExit);
|
||||
}
|
||||
this.composer.fields.content(this.attrs.originalContent || '');
|
||||
}
|
||||
view() {
|
||||
var _this$jumpToPreview;
|
||||
return m(_common_components_ConfirmDocumentUnload__WEBPACK_IMPORTED_MODULE_2__["default"], {
|
||||
when: this.hasChanges.bind(this)
|
||||
}, m("div", {
|
||||
className: (0,_common_utils_classList__WEBPACK_IMPORTED_MODULE_6__["default"])('ComposerBody', this.attrs.className)
|
||||
}, m(_common_components_Avatar__WEBPACK_IMPORTED_MODULE_7__["default"], {
|
||||
user: this.attrs.user,
|
||||
className: "ComposerBody-avatar"
|
||||
}), m("div", {
|
||||
className: "ComposerBody-content"
|
||||
}, m("ul", {
|
||||
className: "ComposerBody-header"
|
||||
}, (0,_common_helpers_listItems__WEBPACK_IMPORTED_MODULE_4__["default"])(this.headerItems().toArray())), m("div", {
|
||||
className: "ComposerBody-editor"
|
||||
}, m(_common_components_TextEditor__WEBPACK_IMPORTED_MODULE_3__["default"], {
|
||||
submitLabel: this.attrs.submitLabel,
|
||||
placeholder: this.attrs.placeholder,
|
||||
disabled: this.loading || this.attrs.disabled,
|
||||
composer: this.composer,
|
||||
preview: (_this$jumpToPreview = this.jumpToPreview) == null ? void 0 : _this$jumpToPreview.bind(this),
|
||||
onchange: this.composer.fields.content,
|
||||
onsubmit: this.onsubmit.bind(this),
|
||||
value: this.composer.fields.content()
|
||||
}))), m(_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_1__["default"], {
|
||||
display: "unset",
|
||||
containerClassName: (0,_common_utils_classList__WEBPACK_IMPORTED_MODULE_6__["default"])('ComposerBody-loading', this.loading && 'active'),
|
||||
size: "large"
|
||||
})));
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if there is any unsaved data.
|
||||
*
|
||||
* @return {boolean}
|
||||
*/
|
||||
hasChanges() {
|
||||
const content = this.composer.fields.content();
|
||||
return content && content !== this.attrs.originalContent;
|
||||
}
|
||||
|
||||
/**
|
||||
* Build an item list for the composer's header.
|
||||
*
|
||||
* @return {ItemList<import('mithril').Children>}
|
||||
*/
|
||||
headerItems() {
|
||||
return new _common_utils_ItemList__WEBPACK_IMPORTED_MODULE_5__["default"]();
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle the submit event of the text editor.
|
||||
*
|
||||
* @abstract
|
||||
*/
|
||||
onsubmit() {}
|
||||
|
||||
/**
|
||||
* Stop loading.
|
||||
*/
|
||||
loaded() {
|
||||
this.loading = false;
|
||||
m.redraw();
|
||||
}
|
||||
}
|
||||
flarum.reg.add('core', 'forum/components/ComposerBody', ComposerBody);
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./src/forum/components/DiscussionComposer.js":
|
||||
/*!****************************************************!*\
|
||||
!*** ./src/forum/components/DiscussionComposer.js ***!
|
||||
\****************************************************/
|
||||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||||
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
||||
/* harmony export */ "default": () => (/* binding */ DiscussionComposer)
|
||||
/* harmony export */ });
|
||||
/* harmony import */ var _forum_app__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../forum/app */ "./src/forum/app.ts");
|
||||
/* harmony import */ var _ComposerBody__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ComposerBody */ "./src/forum/components/ComposerBody.js");
|
||||
/* harmony import */ var _common_utils_extractText__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../common/utils/extractText */ "./src/common/utils/extractText.ts");
|
||||
/* harmony import */ var _common_utils_Stream__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../common/utils/Stream */ "./src/common/utils/Stream.ts");
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* The `DiscussionComposer` component displays the composer content for starting
|
||||
* a new discussion. It adds a text field as a header control so the user can
|
||||
* enter the title of their discussion. It also overrides the `submit` and
|
||||
* `willExit` actions to account for the title.
|
||||
*
|
||||
* ### Attrs
|
||||
*
|
||||
* - All of the attrs for ComposerBody
|
||||
* - `titlePlaceholder`
|
||||
*/
|
||||
class DiscussionComposer extends _ComposerBody__WEBPACK_IMPORTED_MODULE_1__["default"] {
|
||||
static initAttrs(attrs) {
|
||||
super.initAttrs(attrs);
|
||||
attrs.placeholder = attrs.placeholder || (0,_common_utils_extractText__WEBPACK_IMPORTED_MODULE_2__["default"])(_forum_app__WEBPACK_IMPORTED_MODULE_0__["default"].translator.trans('core.forum.composer_discussion.body_placeholder'));
|
||||
attrs.submitLabel = attrs.submitLabel || _forum_app__WEBPACK_IMPORTED_MODULE_0__["default"].translator.trans('core.forum.composer_discussion.submit_button');
|
||||
attrs.confirmExit = attrs.confirmExit || (0,_common_utils_extractText__WEBPACK_IMPORTED_MODULE_2__["default"])(_forum_app__WEBPACK_IMPORTED_MODULE_0__["default"].translator.trans('core.forum.composer_discussion.discard_confirmation'));
|
||||
attrs.titlePlaceholder = attrs.titlePlaceholder || (0,_common_utils_extractText__WEBPACK_IMPORTED_MODULE_2__["default"])(_forum_app__WEBPACK_IMPORTED_MODULE_0__["default"].translator.trans('core.forum.composer_discussion.title_placeholder'));
|
||||
attrs.className = 'ComposerBody--discussion';
|
||||
}
|
||||
oninit(vnode) {
|
||||
super.oninit(vnode);
|
||||
this.composer.fields.title = this.composer.fields.title || (0,_common_utils_Stream__WEBPACK_IMPORTED_MODULE_3__["default"])('');
|
||||
|
||||
/**
|
||||
* The value of the title input.
|
||||
*
|
||||
* @type {Function}
|
||||
*/
|
||||
this.title = this.composer.fields.title;
|
||||
}
|
||||
headerItems() {
|
||||
const items = super.headerItems();
|
||||
items.add('title', m("h3", null, _forum_app__WEBPACK_IMPORTED_MODULE_0__["default"].translator.trans('core.forum.composer_discussion.title')), 100);
|
||||
items.add('discussionTitle', m("h3", null, m("input", {
|
||||
className: "FormControl",
|
||||
bidi: this.title,
|
||||
placeholder: this.attrs.titlePlaceholder,
|
||||
disabled: !!this.attrs.disabled,
|
||||
onkeydown: this.onkeydown.bind(this)
|
||||
})));
|
||||
return items;
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle the title input's keydown event. When the return key is pressed,
|
||||
* move the focus to the start of the text editor.
|
||||
*
|
||||
* @param {KeyboardEvent} e
|
||||
*/
|
||||
onkeydown(e) {
|
||||
if (e.which === 13) {
|
||||
// Return
|
||||
e.preventDefault();
|
||||
this.composer.editor.moveCursorTo(0);
|
||||
}
|
||||
e.redraw = false;
|
||||
}
|
||||
hasChanges() {
|
||||
return this.title() || this.composer.fields.content();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the data to submit to the server when the discussion is saved.
|
||||
*
|
||||
* @return {Record<string, unknown>}
|
||||
*/
|
||||
data() {
|
||||
return {
|
||||
title: this.title(),
|
||||
content: this.composer.fields.content()
|
||||
};
|
||||
}
|
||||
onsubmit() {
|
||||
this.loading = true;
|
||||
const data = this.data();
|
||||
_forum_app__WEBPACK_IMPORTED_MODULE_0__["default"].store.createRecord('discussions').save(data).then(discussion => {
|
||||
this.composer.hide();
|
||||
_forum_app__WEBPACK_IMPORTED_MODULE_0__["default"].discussions.refresh();
|
||||
m.route.set(_forum_app__WEBPACK_IMPORTED_MODULE_0__["default"].route.discussion(discussion));
|
||||
}, this.loaded.bind(this));
|
||||
}
|
||||
}
|
||||
flarum.reg.add('core', 'forum/components/DiscussionComposer', DiscussionComposer);
|
||||
|
||||
/***/ })
|
||||
|
||||
}]);
|
||||
"use strict";(self.webpackChunkflarum_core=self.webpackChunkflarum_core||[]).push([[437],{2140:(s,e,t)=>{t.d(e,{Z:()=>h});var o=t(2190),i=t(5226);class r extends o.Z{handler(){return this.attrs.when()||void 0}oncreate(s){super.oncreate(s),this.boundHandler=this.handler.bind(this),$(window).on("beforeunload",this.boundHandler)}onremove(s){super.onremove(s),$(window).off("beforeunload",this.boundHandler)}view(s){return m("[",null,s.children)}}flarum.reg.add("core","common/components/ConfirmDocumentUnload",r);var n=t(4944),a=t(1268),d=t(4041),l=t(3344),c=t(7323);class h extends o.Z{oninit(s){super.oninit(s),this.composer=this.attrs.composer,this.loading=!1,this.attrs.confirmExit&&this.composer.preventClosingWhen((()=>this.hasChanges()),this.attrs.confirmExit),this.composer.fields.content(this.attrs.originalContent||"")}view(){var s;return m(r,{when:this.hasChanges.bind(this)},m("div",{className:(0,l.Z)("ComposerBody",this.attrs.className)},m(c.Z,{user:this.attrs.user,className:"ComposerBody-avatar"}),m("div",{className:"ComposerBody-content"},m("ul",{className:"ComposerBody-header"},(0,a.Z)(this.headerItems().toArray())),m("div",{className:"ComposerBody-editor"},m(n.Z,{submitLabel:this.attrs.submitLabel,placeholder:this.attrs.placeholder,disabled:this.loading||this.attrs.disabled,composer:this.composer,preview:null==(s=this.jumpToPreview)?void 0:s.bind(this),onchange:this.composer.fields.content,onsubmit:this.onsubmit.bind(this),value:this.composer.fields.content()}))),m(i.Z,{display:"unset",containerClassName:(0,l.Z)("ComposerBody-loading",this.loading&&"active"),size:"large"})))}hasChanges(){const s=this.composer.fields.content();return s&&s!==this.attrs.originalContent}headerItems(){return new d.Z}onsubmit(){}loaded(){this.loading=!1,m.redraw()}}flarum.reg.add("core","forum/components/ComposerBody",h)},3829:(s,e,t)=>{t.r(e),t.d(e,{default:()=>a});var o=t(6789),i=t(2140),r=t(1552),n=t(6458);class a extends i.Z{static initAttrs(s){super.initAttrs(s),s.placeholder=s.placeholder||(0,r.Z)(o.Z.translator.trans("core.forum.composer_discussion.body_placeholder")),s.submitLabel=s.submitLabel||o.Z.translator.trans("core.forum.composer_discussion.submit_button"),s.confirmExit=s.confirmExit||(0,r.Z)(o.Z.translator.trans("core.forum.composer_discussion.discard_confirmation")),s.titlePlaceholder=s.titlePlaceholder||(0,r.Z)(o.Z.translator.trans("core.forum.composer_discussion.title_placeholder")),s.className="ComposerBody--discussion"}oninit(s){super.oninit(s),this.composer.fields.title=this.composer.fields.title||(0,n.Z)(""),this.title=this.composer.fields.title}headerItems(){const s=super.headerItems();return s.add("title",m("h3",null,o.Z.translator.trans("core.forum.composer_discussion.title")),100),s.add("discussionTitle",m("h3",null,m("input",{className:"FormControl",bidi:this.title,placeholder:this.attrs.titlePlaceholder,disabled:!!this.attrs.disabled,onkeydown:this.onkeydown.bind(this)}))),s}onkeydown(s){13===s.which&&(s.preventDefault(),this.composer.editor.moveCursorTo(0)),s.redraw=!1}hasChanges(){return this.title()||this.composer.fields.content()}data(){return{title:this.title(),content:this.composer.fields.content()}}onsubmit(){this.loading=!0;const s=this.data();o.Z.store.createRecord("discussions").save(s).then((s=>{this.composer.hide(),o.Z.discussions.refresh(),m.route.set(o.Z.route.discussion(s))}),this.loaded.bind(this))}}flarum.reg.add("core","forum/components/DiscussionComposer",a)}}]);
|
||||
//# sourceMappingURL=DiscussionComposer.js.map
|
2
framework/core/js/dist/forum/components/DiscussionComposer.js.map
generated
vendored
2
framework/core/js/dist/forum/components/DiscussionComposer.js.map
generated
vendored
File diff suppressed because one or more lines are too long
52
framework/core/js/dist/forum/components/DiscussionsUserPage.js
generated
vendored
52
framework/core/js/dist/forum/components/DiscussionsUserPage.js
generated
vendored
@ -1,52 +1,2 @@
|
||||
"use strict";
|
||||
(self["webpackChunkflarum_core"] = self["webpackChunkflarum_core"] || []).push([["forum/components/DiscussionsUserPage"],{
|
||||
|
||||
/***/ "./src/forum/components/DiscussionsUserPage.tsx":
|
||||
/*!******************************************************!*\
|
||||
!*** ./src/forum/components/DiscussionsUserPage.tsx ***!
|
||||
\******************************************************/
|
||||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||||
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
||||
/* harmony export */ "default": () => (/* binding */ DiscussionsUserPage)
|
||||
/* harmony export */ });
|
||||
/* harmony import */ var _UserPage__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./UserPage */ "./src/forum/components/UserPage.tsx");
|
||||
/* harmony import */ var _DiscussionList__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./DiscussionList */ "./src/forum/components/DiscussionList.js");
|
||||
/* harmony import */ var _states_DiscussionListState__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../states/DiscussionListState */ "./src/forum/states/DiscussionListState.ts");
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* The `DiscussionsUserPage` component shows a discussion list inside of a user
|
||||
* page.
|
||||
*/
|
||||
class DiscussionsUserPage extends _UserPage__WEBPACK_IMPORTED_MODULE_0__["default"] {
|
||||
oninit(vnode) {
|
||||
super.oninit(vnode);
|
||||
this.loadUser(m.route.param('username'));
|
||||
}
|
||||
show(user) {
|
||||
super.show(user);
|
||||
this.state = new _states_DiscussionListState__WEBPACK_IMPORTED_MODULE_2__["default"]({
|
||||
filter: {
|
||||
author: user.username()
|
||||
},
|
||||
sort: 'newest'
|
||||
});
|
||||
this.state.refresh();
|
||||
}
|
||||
content() {
|
||||
return m("div", {
|
||||
className: "DiscussionsUserPage"
|
||||
}, m(_DiscussionList__WEBPACK_IMPORTED_MODULE_1__["default"], {
|
||||
state: this.state
|
||||
}));
|
||||
}
|
||||
}
|
||||
flarum.reg.add('core', 'forum/components/DiscussionsUserPage', DiscussionsUserPage);
|
||||
|
||||
/***/ })
|
||||
|
||||
}]);
|
||||
"use strict";(self.webpackChunkflarum_core=self.webpackChunkflarum_core||[]).push([[799],{6466:(s,e,r)=>{r.r(e),r.d(e,{default:()=>u});var t=r(3390),a=r(8421),n=r(1654);class u extends t.Z{oninit(s){super.oninit(s),this.loadUser(m.route.param("username"))}show(s){super.show(s),this.state=new n.Z({filter:{author:s.username()},sort:"newest"}),this.state.refresh()}content(){return m("div",{className:"DiscussionsUserPage"},m(a.Z,{state:this.state}))}}flarum.reg.add("core","forum/components/DiscussionsUserPage",u)}}]);
|
||||
//# sourceMappingURL=DiscussionsUserPage.js.map
|
2
framework/core/js/dist/forum/components/DiscussionsUserPage.js.map
generated
vendored
2
framework/core/js/dist/forum/components/DiscussionsUserPage.js.map
generated
vendored
@ -1 +1 @@
|
||||
{"version":3,"file":"forum/components/DiscussionsUserPage.js","mappings":";;;;;;;;;;;;;;;;AAAkC;AACY;AACkB;AAChE;AACA;AACA;AACA;AACe,kCAAkC,iDAAQ;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,mEAAmB;AACxC;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK,IAAI,uDAAc;AACvB;AACA,KAAK;AACL;AACA;AACA","sources":["webpack://@flarum/core/./src/forum/components/DiscussionsUserPage.tsx"],"sourcesContent":["import UserPage from './UserPage';\nimport DiscussionList from './DiscussionList';\nimport DiscussionListState from '../states/DiscussionListState';\n/**\n * The `DiscussionsUserPage` component shows a discussion list inside of a user\n * page.\n */\nexport default class DiscussionsUserPage extends UserPage {\n oninit(vnode) {\n super.oninit(vnode);\n this.loadUser(m.route.param('username'));\n }\n show(user) {\n super.show(user);\n this.state = new DiscussionListState({\n filter: {\n author: user.username()\n },\n sort: 'newest'\n });\n this.state.refresh();\n }\n content() {\n return m(\"div\", {\n className: \"DiscussionsUserPage\"\n }, m(DiscussionList, {\n state: this.state\n }));\n }\n}\nflarum.reg.add('core', 'forum/components/DiscussionsUserPage', DiscussionsUserPage);"],"names":[],"sourceRoot":""}
|
||||
{"version":3,"file":"forum/components/DiscussionsUserPage.js","mappings":"yKAOe,MAAMA,UAA4B,IAC/CC,OAAOC,GACLC,MAAMF,OAAOC,GACbE,KAAKC,SAASC,EAAEC,MAAMC,MAAM,YAC9B,CACAC,KAAKC,GACHP,MAAMM,KAAKC,GACXN,KAAKO,MAAQ,IAAI,IAAoB,CACnCC,OAAQ,CACNC,OAAQH,EAAKI,YAEfC,KAAM,WAERX,KAAKO,MAAMK,SACb,CACAC,UACE,OAAOX,EAAE,MAAO,CACdY,UAAW,uBACVZ,EAAE,IAAgB,CACnBK,MAAOP,KAAKO,QAEhB,EAEFQ,OAAOC,IAAIC,IAAI,OAAQ,uCAAwCrB,E","sources":["webpack://@flarum/core/./src/forum/components/DiscussionsUserPage.tsx"],"sourcesContent":["import UserPage from './UserPage';\nimport DiscussionList from './DiscussionList';\nimport DiscussionListState from '../states/DiscussionListState';\n/**\n * The `DiscussionsUserPage` component shows a discussion list inside of a user\n * page.\n */\nexport default class DiscussionsUserPage extends UserPage {\n oninit(vnode) {\n super.oninit(vnode);\n this.loadUser(m.route.param('username'));\n }\n show(user) {\n super.show(user);\n this.state = new DiscussionListState({\n filter: {\n author: user.username()\n },\n sort: 'newest'\n });\n this.state.refresh();\n }\n content() {\n return m(\"div\", {\n className: \"DiscussionsUserPage\"\n }, m(DiscussionList, {\n state: this.state\n }));\n }\n}\nflarum.reg.add('core', 'forum/components/DiscussionsUserPage', DiscussionsUserPage);"],"names":["DiscussionsUserPage","oninit","vnode","super","this","loadUser","m","route","param","show","user","state","filter","author","username","sort","refresh","content","className","flarum","reg","add"],"sourceRoot":""}
|
293
framework/core/js/dist/forum/components/EditPostComposer.js
generated
vendored
293
framework/core/js/dist/forum/components/EditPostComposer.js
generated
vendored
@ -1,293 +1,2 @@
|
||||
"use strict";
|
||||
(self["webpackChunkflarum_core"] = self["webpackChunkflarum_core"] || []).push([["forum/components/EditPostComposer"],{
|
||||
|
||||
/***/ "./src/common/components/ConfirmDocumentUnload.js":
|
||||
/*!********************************************************!*\
|
||||
!*** ./src/common/components/ConfirmDocumentUnload.js ***!
|
||||
\********************************************************/
|
||||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||||
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
||||
/* harmony export */ "default": () => (/* binding */ ConfirmDocumentUnload)
|
||||
/* harmony export */ });
|
||||
/* harmony import */ var _Component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Component */ "./src/common/Component.ts");
|
||||
|
||||
|
||||
/**
|
||||
* The `ConfirmDocumentUnload` component can be used to register a global
|
||||
* event handler that prevents closing the browser window/tab based on the
|
||||
* return value of a given callback prop.
|
||||
*
|
||||
* ### Attrs
|
||||
*
|
||||
* - `when` - a callback returning true when the browser should prompt for
|
||||
* confirmation before closing the window/tab
|
||||
*/
|
||||
class ConfirmDocumentUnload extends _Component__WEBPACK_IMPORTED_MODULE_0__["default"] {
|
||||
handler() {
|
||||
return this.attrs.when() || undefined;
|
||||
}
|
||||
oncreate(vnode) {
|
||||
super.oncreate(vnode);
|
||||
this.boundHandler = this.handler.bind(this);
|
||||
$(window).on('beforeunload', this.boundHandler);
|
||||
}
|
||||
onremove(vnode) {
|
||||
super.onremove(vnode);
|
||||
$(window).off('beforeunload', this.boundHandler);
|
||||
}
|
||||
view(vnode) {
|
||||
return m('[', null, vnode.children);
|
||||
}
|
||||
}
|
||||
flarum.reg.add('core', 'common/components/ConfirmDocumentUnload', ConfirmDocumentUnload);
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./src/forum/components/ComposerBody.js":
|
||||
/*!**********************************************!*\
|
||||
!*** ./src/forum/components/ComposerBody.js ***!
|
||||
\**********************************************/
|
||||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||||
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
||||
/* harmony export */ "default": () => (/* binding */ ComposerBody)
|
||||
/* harmony export */ });
|
||||
/* harmony import */ var _common_Component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../common/Component */ "./src/common/Component.ts");
|
||||
/* harmony import */ var _common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../common/components/LoadingIndicator */ "./src/common/components/LoadingIndicator.tsx");
|
||||
/* harmony import */ var _common_components_ConfirmDocumentUnload__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../common/components/ConfirmDocumentUnload */ "./src/common/components/ConfirmDocumentUnload.js");
|
||||
/* harmony import */ var _common_components_TextEditor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../common/components/TextEditor */ "./src/common/components/TextEditor.js");
|
||||
/* harmony import */ var _common_helpers_listItems__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../common/helpers/listItems */ "./src/common/helpers/listItems.tsx");
|
||||
/* harmony import */ var _common_utils_ItemList__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../common/utils/ItemList */ "./src/common/utils/ItemList.ts");
|
||||
/* harmony import */ var _common_utils_classList__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../common/utils/classList */ "./src/common/utils/classList.ts");
|
||||
/* harmony import */ var _common_components_Avatar__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../common/components/Avatar */ "./src/common/components/Avatar.tsx");
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* The `ComposerBody` component handles the body, or the content, of the
|
||||
* composer. Subclasses should implement the `onsubmit` method and override
|
||||
* `headerTimes`.
|
||||
*
|
||||
* ### Attrs
|
||||
*
|
||||
* - `composer`
|
||||
* - `originalContent`
|
||||
* - `submitLabel`
|
||||
* - `placeholder`
|
||||
* - `user`
|
||||
* - `confirmExit`
|
||||
* - `disabled`
|
||||
*
|
||||
* @abstract
|
||||
*/
|
||||
class ComposerBody extends _common_Component__WEBPACK_IMPORTED_MODULE_0__["default"] {
|
||||
oninit(vnode) {
|
||||
super.oninit(vnode);
|
||||
this.composer = this.attrs.composer;
|
||||
|
||||
/**
|
||||
* Whether or not the component is loading.
|
||||
*
|
||||
* @type {Boolean}
|
||||
*/
|
||||
this.loading = false;
|
||||
|
||||
// Let the composer state know to ask for confirmation under certain
|
||||
// circumstances, if the body supports / requires it and has a corresponding
|
||||
// confirmation question to ask.
|
||||
if (this.attrs.confirmExit) {
|
||||
this.composer.preventClosingWhen(() => this.hasChanges(), this.attrs.confirmExit);
|
||||
}
|
||||
this.composer.fields.content(this.attrs.originalContent || '');
|
||||
}
|
||||
view() {
|
||||
var _this$jumpToPreview;
|
||||
return m(_common_components_ConfirmDocumentUnload__WEBPACK_IMPORTED_MODULE_2__["default"], {
|
||||
when: this.hasChanges.bind(this)
|
||||
}, m("div", {
|
||||
className: (0,_common_utils_classList__WEBPACK_IMPORTED_MODULE_6__["default"])('ComposerBody', this.attrs.className)
|
||||
}, m(_common_components_Avatar__WEBPACK_IMPORTED_MODULE_7__["default"], {
|
||||
user: this.attrs.user,
|
||||
className: "ComposerBody-avatar"
|
||||
}), m("div", {
|
||||
className: "ComposerBody-content"
|
||||
}, m("ul", {
|
||||
className: "ComposerBody-header"
|
||||
}, (0,_common_helpers_listItems__WEBPACK_IMPORTED_MODULE_4__["default"])(this.headerItems().toArray())), m("div", {
|
||||
className: "ComposerBody-editor"
|
||||
}, m(_common_components_TextEditor__WEBPACK_IMPORTED_MODULE_3__["default"], {
|
||||
submitLabel: this.attrs.submitLabel,
|
||||
placeholder: this.attrs.placeholder,
|
||||
disabled: this.loading || this.attrs.disabled,
|
||||
composer: this.composer,
|
||||
preview: (_this$jumpToPreview = this.jumpToPreview) == null ? void 0 : _this$jumpToPreview.bind(this),
|
||||
onchange: this.composer.fields.content,
|
||||
onsubmit: this.onsubmit.bind(this),
|
||||
value: this.composer.fields.content()
|
||||
}))), m(_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_1__["default"], {
|
||||
display: "unset",
|
||||
containerClassName: (0,_common_utils_classList__WEBPACK_IMPORTED_MODULE_6__["default"])('ComposerBody-loading', this.loading && 'active'),
|
||||
size: "large"
|
||||
})));
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if there is any unsaved data.
|
||||
*
|
||||
* @return {boolean}
|
||||
*/
|
||||
hasChanges() {
|
||||
const content = this.composer.fields.content();
|
||||
return content && content !== this.attrs.originalContent;
|
||||
}
|
||||
|
||||
/**
|
||||
* Build an item list for the composer's header.
|
||||
*
|
||||
* @return {ItemList<import('mithril').Children>}
|
||||
*/
|
||||
headerItems() {
|
||||
return new _common_utils_ItemList__WEBPACK_IMPORTED_MODULE_5__["default"]();
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle the submit event of the text editor.
|
||||
*
|
||||
* @abstract
|
||||
*/
|
||||
onsubmit() {}
|
||||
|
||||
/**
|
||||
* Stop loading.
|
||||
*/
|
||||
loaded() {
|
||||
this.loading = false;
|
||||
m.redraw();
|
||||
}
|
||||
}
|
||||
flarum.reg.add('core', 'forum/components/ComposerBody', ComposerBody);
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./src/forum/components/EditPostComposer.js":
|
||||
/*!**************************************************!*\
|
||||
!*** ./src/forum/components/EditPostComposer.js ***!
|
||||
\**************************************************/
|
||||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||||
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
||||
/* harmony export */ "default": () => (/* binding */ EditPostComposer)
|
||||
/* harmony export */ });
|
||||
/* harmony import */ var _forum_app__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../forum/app */ "./src/forum/app.ts");
|
||||
/* harmony import */ var _ComposerBody__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ComposerBody */ "./src/forum/components/ComposerBody.js");
|
||||
/* harmony import */ var _common_components_Button__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../common/components/Button */ "./src/common/components/Button.tsx");
|
||||
/* harmony import */ var _common_components_Link__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../common/components/Link */ "./src/common/components/Link.js");
|
||||
/* harmony import */ var _common_components_Icon__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../common/components/Icon */ "./src/common/components/Icon.tsx");
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function minimizeComposerIfFullScreen(e) {
|
||||
if (_forum_app__WEBPACK_IMPORTED_MODULE_0__["default"].composer.isFullScreen()) {
|
||||
_forum_app__WEBPACK_IMPORTED_MODULE_0__["default"].composer.minimize();
|
||||
e.stopPropagation();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* The `EditPostComposer` component displays the composer content for editing a
|
||||
* post. It sets the initial content to the content of the post that is being
|
||||
* edited, and adds a header control to indicate which post is being edited.
|
||||
*
|
||||
* ### Attrs
|
||||
*
|
||||
* - All of the attrs for ComposerBody
|
||||
* - `post`
|
||||
*/
|
||||
class EditPostComposer extends _ComposerBody__WEBPACK_IMPORTED_MODULE_1__["default"] {
|
||||
static initAttrs(attrs) {
|
||||
super.initAttrs(attrs);
|
||||
attrs.submitLabel = attrs.submitLabel || _forum_app__WEBPACK_IMPORTED_MODULE_0__["default"].translator.trans('core.forum.composer_edit.submit_button');
|
||||
attrs.confirmExit = attrs.confirmExit || _forum_app__WEBPACK_IMPORTED_MODULE_0__["default"].translator.trans('core.forum.composer_edit.discard_confirmation');
|
||||
attrs.originalContent = attrs.originalContent || attrs.post.content();
|
||||
attrs.user = attrs.user || attrs.post.user();
|
||||
attrs.post.editedContent = attrs.originalContent;
|
||||
}
|
||||
headerItems() {
|
||||
const items = super.headerItems();
|
||||
const post = this.attrs.post;
|
||||
items.add('title', m("h3", null, m(_common_components_Icon__WEBPACK_IMPORTED_MODULE_4__["default"], {
|
||||
name: 'fas fa-pencil-alt'
|
||||
}), ' ', m(_common_components_Link__WEBPACK_IMPORTED_MODULE_3__["default"], {
|
||||
href: _forum_app__WEBPACK_IMPORTED_MODULE_0__["default"].route.discussion(post.discussion(), post.number()),
|
||||
onclick: minimizeComposerIfFullScreen
|
||||
}, _forum_app__WEBPACK_IMPORTED_MODULE_0__["default"].translator.trans('core.forum.composer_edit.post_link', {
|
||||
number: post.number(),
|
||||
discussion: post.discussion().title()
|
||||
}))));
|
||||
return items;
|
||||
}
|
||||
|
||||
/**
|
||||
* Jump to the preview when triggered by the text editor.
|
||||
*/
|
||||
jumpToPreview(e) {
|
||||
minimizeComposerIfFullScreen(e);
|
||||
m.route.set(_forum_app__WEBPACK_IMPORTED_MODULE_0__["default"].route.post(this.attrs.post));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the data to submit to the server when the post is saved.
|
||||
*
|
||||
* @return {Record<string, unknown>}
|
||||
*/
|
||||
data() {
|
||||
return {
|
||||
content: this.composer.fields.content()
|
||||
};
|
||||
}
|
||||
onsubmit() {
|
||||
const discussion = this.attrs.post.discussion();
|
||||
this.loading = true;
|
||||
const data = this.data();
|
||||
this.attrs.post.save(data).then(post => {
|
||||
// If we're currently viewing the discussion which this edit was made
|
||||
// in, then we can scroll to the post.
|
||||
if (_forum_app__WEBPACK_IMPORTED_MODULE_0__["default"].viewingDiscussion(discussion)) {
|
||||
_forum_app__WEBPACK_IMPORTED_MODULE_0__["default"].current.get('stream').goToNumber(post.number());
|
||||
} else {
|
||||
// Otherwise, we'll create an alert message to inform the user that
|
||||
// their edit has been made, containing a button which will
|
||||
// transition to their edited post when clicked.
|
||||
const alert = _forum_app__WEBPACK_IMPORTED_MODULE_0__["default"].alerts.show({
|
||||
type: 'success',
|
||||
controls: [m(_common_components_Button__WEBPACK_IMPORTED_MODULE_2__["default"], {
|
||||
className: "Button Button--link",
|
||||
onclick: () => {
|
||||
m.route.set(_forum_app__WEBPACK_IMPORTED_MODULE_0__["default"].route.post(post));
|
||||
_forum_app__WEBPACK_IMPORTED_MODULE_0__["default"].alerts.dismiss(alert);
|
||||
}
|
||||
}, _forum_app__WEBPACK_IMPORTED_MODULE_0__["default"].translator.trans('core.forum.composer_edit.view_button'))]
|
||||
}, _forum_app__WEBPACK_IMPORTED_MODULE_0__["default"].translator.trans('core.forum.composer_edit.edited_message'));
|
||||
}
|
||||
this.composer.hide();
|
||||
}, this.loaded.bind(this));
|
||||
}
|
||||
}
|
||||
flarum.reg.add('core', 'forum/components/EditPostComposer', EditPostComposer);
|
||||
|
||||
/***/ })
|
||||
|
||||
}]);
|
||||
"use strict";(self.webpackChunkflarum_core=self.webpackChunkflarum_core||[]).push([[293],{2140:(t,s,e)=>{e.d(s,{Z:()=>u});var o=e(2190),r=e(5226);class i extends o.Z{handler(){return this.attrs.when()||void 0}oncreate(t){super.oncreate(t),this.boundHandler=this.handler.bind(this),$(window).on("beforeunload",this.boundHandler)}onremove(t){super.onremove(t),$(window).off("beforeunload",this.boundHandler)}view(t){return m("[",null,t.children)}}flarum.reg.add("core","common/components/ConfirmDocumentUnload",i);var n=e(4944),a=e(1268),d=e(4041),c=e(3344),l=e(7323);class u extends o.Z{oninit(t){super.oninit(t),this.composer=this.attrs.composer,this.loading=!1,this.attrs.confirmExit&&this.composer.preventClosingWhen((()=>this.hasChanges()),this.attrs.confirmExit),this.composer.fields.content(this.attrs.originalContent||"")}view(){var t;return m(i,{when:this.hasChanges.bind(this)},m("div",{className:(0,c.Z)("ComposerBody",this.attrs.className)},m(l.Z,{user:this.attrs.user,className:"ComposerBody-avatar"}),m("div",{className:"ComposerBody-content"},m("ul",{className:"ComposerBody-header"},(0,a.Z)(this.headerItems().toArray())),m("div",{className:"ComposerBody-editor"},m(n.Z,{submitLabel:this.attrs.submitLabel,placeholder:this.attrs.placeholder,disabled:this.loading||this.attrs.disabled,composer:this.composer,preview:null==(t=this.jumpToPreview)?void 0:t.bind(this),onchange:this.composer.fields.content,onsubmit:this.onsubmit.bind(this),value:this.composer.fields.content()}))),m(r.Z,{display:"unset",containerClassName:(0,c.Z)("ComposerBody-loading",this.loading&&"active"),size:"large"})))}hasChanges(){const t=this.composer.fields.content();return t&&t!==this.attrs.originalContent}headerItems(){return new d.Z}onsubmit(){}loaded(){this.loading=!1,m.redraw()}}flarum.reg.add("core","forum/components/ComposerBody",u)},500:(t,s,e)=>{e.r(s),e.d(s,{default:()=>c});var o=e(6789),r=e(2140),i=e(8312),n=e(6597),a=e(9133);function d(t){o.Z.composer.isFullScreen()&&(o.Z.composer.minimize(),t.stopPropagation())}class c extends r.Z{static initAttrs(t){super.initAttrs(t),t.submitLabel=t.submitLabel||o.Z.translator.trans("core.forum.composer_edit.submit_button"),t.confirmExit=t.confirmExit||o.Z.translator.trans("core.forum.composer_edit.discard_confirmation"),t.originalContent=t.originalContent||t.post.content(),t.user=t.user||t.post.user(),t.post.editedContent=t.originalContent}headerItems(){const t=super.headerItems(),s=this.attrs.post;return t.add("title",m("h3",null,m(a.Z,{name:"fas fa-pencil-alt"})," ",m(n.Z,{href:o.Z.route.discussion(s.discussion(),s.number()),onclick:d},o.Z.translator.trans("core.forum.composer_edit.post_link",{number:s.number(),discussion:s.discussion().title()})))),t}jumpToPreview(t){d(t),m.route.set(o.Z.route.post(this.attrs.post))}data(){return{content:this.composer.fields.content()}}onsubmit(){const t=this.attrs.post.discussion();this.loading=!0;const s=this.data();this.attrs.post.save(s).then((s=>{if(o.Z.viewingDiscussion(t))o.Z.current.get("stream").goToNumber(s.number());else{const t=o.Z.alerts.show({type:"success",controls:[m(i.Z,{className:"Button Button--link",onclick:()=>{m.route.set(o.Z.route.post(s)),o.Z.alerts.dismiss(t)}},o.Z.translator.trans("core.forum.composer_edit.view_button"))]},o.Z.translator.trans("core.forum.composer_edit.edited_message"))}this.composer.hide()}),this.loaded.bind(this))}}flarum.reg.add("core","forum/components/EditPostComposer",c)}}]);
|
||||
//# sourceMappingURL=EditPostComposer.js.map
|
2
framework/core/js/dist/forum/components/EditPostComposer.js.map
generated
vendored
2
framework/core/js/dist/forum/components/EditPostComposer.js.map
generated
vendored
File diff suppressed because one or more lines are too long
129
framework/core/js/dist/forum/components/ForgotPasswordModal.js
generated
vendored
129
framework/core/js/dist/forum/components/ForgotPasswordModal.js
generated
vendored
@ -1,129 +1,2 @@
|
||||
"use strict";
|
||||
(self["webpackChunkflarum_core"] = self["webpackChunkflarum_core"] || []).push([["forum/components/ForgotPasswordModal"],{
|
||||
|
||||
/***/ "./src/forum/components/ForgotPasswordModal.tsx":
|
||||
/*!******************************************************!*\
|
||||
!*** ./src/forum/components/ForgotPasswordModal.tsx ***!
|
||||
\******************************************************/
|
||||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||||
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
||||
/* harmony export */ "default": () => (/* binding */ ForgotPasswordModal)
|
||||
/* harmony export */ });
|
||||
/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ "../../../js-packages/webpack-config/node_modules/@babel/runtime/helpers/esm/defineProperty.js");
|
||||
/* harmony import */ var _forum_app__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../forum/app */ "./src/forum/app.ts");
|
||||
/* harmony import */ var _common_components_FormModal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../common/components/FormModal */ "./src/common/components/FormModal.tsx");
|
||||
/* harmony import */ var _common_components_Button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../common/components/Button */ "./src/common/components/Button.tsx");
|
||||
/* harmony import */ var _common_utils_extractText__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../common/utils/extractText */ "./src/common/utils/extractText.ts");
|
||||
/* harmony import */ var _common_utils_Stream__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../common/utils/Stream */ "./src/common/utils/Stream.ts");
|
||||
/* harmony import */ var _common_utils_ItemList__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../common/utils/ItemList */ "./src/common/utils/ItemList.ts");
|
||||
/* harmony import */ var _common_components_Form__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../common/components/Form */ "./src/common/components/Form.tsx");
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* The `ForgotPasswordModal` component displays a modal which allows the user to
|
||||
* enter their email address and request a link to reset their password.
|
||||
*/
|
||||
class ForgotPasswordModal extends _common_components_FormModal__WEBPACK_IMPORTED_MODULE_2__["default"] {
|
||||
constructor() {
|
||||
super(...arguments);
|
||||
/**
|
||||
* The value of the email input.
|
||||
*/
|
||||
(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__["default"])(this, "email", void 0);
|
||||
(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__["default"])(this, "success", false);
|
||||
}
|
||||
oninit(vnode) {
|
||||
super.oninit(vnode);
|
||||
this.email = (0,_common_utils_Stream__WEBPACK_IMPORTED_MODULE_5__["default"])(this.attrs.email || '');
|
||||
}
|
||||
className() {
|
||||
return 'ForgotPasswordModal Modal--small';
|
||||
}
|
||||
title() {
|
||||
return _forum_app__WEBPACK_IMPORTED_MODULE_1__["default"].translator.trans('core.forum.forgot_password.title');
|
||||
}
|
||||
content() {
|
||||
if (this.success) {
|
||||
return m("div", {
|
||||
className: "Modal-body"
|
||||
}, m(_common_components_Form__WEBPACK_IMPORTED_MODULE_7__["default"], {
|
||||
className: "Form--centered"
|
||||
}, m("p", {
|
||||
className: "helpText"
|
||||
}, _forum_app__WEBPACK_IMPORTED_MODULE_1__["default"].translator.trans('core.forum.forgot_password.email_sent_message')), m("div", {
|
||||
className: "Form-group Form-controls"
|
||||
}, m(_common_components_Button__WEBPACK_IMPORTED_MODULE_3__["default"], {
|
||||
className: "Button Button--primary Button--block",
|
||||
onclick: this.hide.bind(this)
|
||||
}, _forum_app__WEBPACK_IMPORTED_MODULE_1__["default"].translator.trans('core.forum.forgot_password.dismiss_button')))));
|
||||
}
|
||||
return m("div", {
|
||||
className: "Modal-body"
|
||||
}, m(_common_components_Form__WEBPACK_IMPORTED_MODULE_7__["default"], {
|
||||
className: "Form--centered",
|
||||
description: _forum_app__WEBPACK_IMPORTED_MODULE_1__["default"].translator.trans('core.forum.forgot_password.text')
|
||||
}, this.fields().toArray()));
|
||||
}
|
||||
fields() {
|
||||
const items = new _common_utils_ItemList__WEBPACK_IMPORTED_MODULE_6__["default"]();
|
||||
const emailLabel = (0,_common_utils_extractText__WEBPACK_IMPORTED_MODULE_4__["default"])(_forum_app__WEBPACK_IMPORTED_MODULE_1__["default"].translator.trans('core.forum.forgot_password.email_placeholder'));
|
||||
items.add('email', m("div", {
|
||||
className: "Form-group"
|
||||
}, m("input", {
|
||||
className: "FormControl",
|
||||
name: "email",
|
||||
type: "email",
|
||||
placeholder: emailLabel,
|
||||
"aria-label": emailLabel,
|
||||
bidi: this.email,
|
||||
disabled: this.loading
|
||||
})), 50);
|
||||
items.add('submit', m("div", {
|
||||
className: "Form-group Form-controls"
|
||||
}, m(_common_components_Button__WEBPACK_IMPORTED_MODULE_3__["default"], {
|
||||
className: "Button Button--primary Button--block",
|
||||
type: "submit",
|
||||
loading: this.loading
|
||||
}, _forum_app__WEBPACK_IMPORTED_MODULE_1__["default"].translator.trans('core.forum.forgot_password.submit_button'))), -10);
|
||||
return items;
|
||||
}
|
||||
onsubmit(e) {
|
||||
e.preventDefault();
|
||||
this.loading = true;
|
||||
_forum_app__WEBPACK_IMPORTED_MODULE_1__["default"].request({
|
||||
method: 'POST',
|
||||
url: _forum_app__WEBPACK_IMPORTED_MODULE_1__["default"].forum.attribute('apiUrl') + '/forgot',
|
||||
body: this.requestParams(),
|
||||
errorHandler: this.onerror.bind(this)
|
||||
}).then(() => {
|
||||
this.success = true;
|
||||
this.alertAttrs = null;
|
||||
}).catch(() => {}).then(this.loaded.bind(this));
|
||||
}
|
||||
requestParams() {
|
||||
const data = {
|
||||
email: this.email()
|
||||
};
|
||||
return data;
|
||||
}
|
||||
onerror(error) {
|
||||
if (error.status === 404 && error.alert) {
|
||||
error.alert.content = _forum_app__WEBPACK_IMPORTED_MODULE_1__["default"].translator.trans('core.forum.forgot_password.not_found_message');
|
||||
}
|
||||
super.onerror(error);
|
||||
}
|
||||
}
|
||||
flarum.reg.add('core', 'forum/components/ForgotPasswordModal', ForgotPasswordModal);
|
||||
|
||||
/***/ })
|
||||
|
||||
}]);
|
||||
"use strict";(self.webpackChunkflarum_core=self.webpackChunkflarum_core||[]).push([[502],{1839:(r,t,s)=>{s.r(t),s.d(t,{default:()=>c});var o=s(7905),a=s(6789),e=s(899),l=s(8312),i=s(1552),n=s(6458),d=s(4041),u=s(6352);class c extends e.Z{constructor(){super(...arguments),(0,o.Z)(this,"email",void 0),(0,o.Z)(this,"success",!1)}oninit(r){super.oninit(r),this.email=(0,n.Z)(this.attrs.email||"")}className(){return"ForgotPasswordModal Modal--small"}title(){return a.Z.translator.trans("core.forum.forgot_password.title")}content(){return this.success?m("div",{className:"Modal-body"},m(u.Z,{className:"Form--centered"},m("p",{className:"helpText"},a.Z.translator.trans("core.forum.forgot_password.email_sent_message")),m("div",{className:"Form-group Form-controls"},m(l.Z,{className:"Button Button--primary Button--block",onclick:this.hide.bind(this)},a.Z.translator.trans("core.forum.forgot_password.dismiss_button"))))):m("div",{className:"Modal-body"},m(u.Z,{className:"Form--centered",description:a.Z.translator.trans("core.forum.forgot_password.text")},this.fields().toArray()))}fields(){const r=new d.Z,t=(0,i.Z)(a.Z.translator.trans("core.forum.forgot_password.email_placeholder"));return r.add("email",m("div",{className:"Form-group"},m("input",{className:"FormControl",name:"email",type:"email",placeholder:t,"aria-label":t,bidi:this.email,disabled:this.loading})),50),r.add("submit",m("div",{className:"Form-group Form-controls"},m(l.Z,{className:"Button Button--primary Button--block",type:"submit",loading:this.loading},a.Z.translator.trans("core.forum.forgot_password.submit_button"))),-10),r}onsubmit(r){r.preventDefault(),this.loading=!0,a.Z.request({method:"POST",url:a.Z.forum.attribute("apiUrl")+"/forgot",body:this.requestParams(),errorHandler:this.onerror.bind(this)}).then((()=>{this.success=!0,this.alertAttrs=null})).catch((()=>{})).then(this.loaded.bind(this))}requestParams(){return{email:this.email()}}onerror(r){404===r.status&&r.alert&&(r.alert.content=a.Z.translator.trans("core.forum.forgot_password.not_found_message")),super.onerror(r)}}flarum.reg.add("core","forum/components/ForgotPasswordModal",c)}}]);
|
||||
//# sourceMappingURL=ForgotPasswordModal.js.map
|
2
framework/core/js/dist/forum/components/ForgotPasswordModal.js.map
generated
vendored
2
framework/core/js/dist/forum/components/ForgotPasswordModal.js.map
generated
vendored
File diff suppressed because one or more lines are too long
222
framework/core/js/dist/forum/components/LogInModal.js
generated
vendored
222
framework/core/js/dist/forum/components/LogInModal.js
generated
vendored
@ -1,222 +1,2 @@
|
||||
"use strict";
|
||||
(self["webpackChunkflarum_core"] = self["webpackChunkflarum_core"] || []).push([["forum/components/LogInModal"],{
|
||||
|
||||
/***/ "./src/forum/components/LogInModal.tsx":
|
||||
/*!*********************************************!*\
|
||||
!*** ./src/forum/components/LogInModal.tsx ***!
|
||||
\*********************************************/
|
||||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||||
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
||||
/* harmony export */ "default": () => (/* binding */ LogInModal)
|
||||
/* harmony export */ });
|
||||
/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ "../../../js-packages/webpack-config/node_modules/@babel/runtime/helpers/esm/defineProperty.js");
|
||||
/* harmony import */ var _forum_app__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../forum/app */ "./src/forum/app.ts");
|
||||
/* harmony import */ var _common_components_FormModal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../common/components/FormModal */ "./src/common/components/FormModal.tsx");
|
||||
/* harmony import */ var _common_components_Button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../common/components/Button */ "./src/common/components/Button.tsx");
|
||||
/* harmony import */ var _LogInButtons__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./LogInButtons */ "./src/forum/components/LogInButtons.js");
|
||||
/* harmony import */ var _common_utils_extractText__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../common/utils/extractText */ "./src/common/utils/extractText.ts");
|
||||
/* harmony import */ var _common_utils_ItemList__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../common/utils/ItemList */ "./src/common/utils/ItemList.ts");
|
||||
/* harmony import */ var _common_utils_Stream__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../common/utils/Stream */ "./src/common/utils/Stream.ts");
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
class LogInModal extends _common_components_FormModal__WEBPACK_IMPORTED_MODULE_2__["default"] {
|
||||
constructor() {
|
||||
super(...arguments);
|
||||
/**
|
||||
* The value of the identification input.
|
||||
*/
|
||||
(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__["default"])(this, "identification", void 0);
|
||||
/**
|
||||
* The value of the password input.
|
||||
*/
|
||||
(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__["default"])(this, "password", void 0);
|
||||
/**
|
||||
* The value of the remember me input.
|
||||
*/
|
||||
(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__["default"])(this, "remember", void 0);
|
||||
}
|
||||
oninit(vnode) {
|
||||
super.oninit(vnode);
|
||||
this.identification = (0,_common_utils_Stream__WEBPACK_IMPORTED_MODULE_7__["default"])(this.attrs.identification || '');
|
||||
this.password = (0,_common_utils_Stream__WEBPACK_IMPORTED_MODULE_7__["default"])(this.attrs.password || '');
|
||||
this.remember = (0,_common_utils_Stream__WEBPACK_IMPORTED_MODULE_7__["default"])(!!this.attrs.remember);
|
||||
}
|
||||
className() {
|
||||
return 'LogInModal Modal--small';
|
||||
}
|
||||
title() {
|
||||
return _forum_app__WEBPACK_IMPORTED_MODULE_1__["default"].translator.trans('core.forum.log_in.title');
|
||||
}
|
||||
content() {
|
||||
return [m("div", {
|
||||
className: "Modal-body"
|
||||
}, this.body()), m("div", {
|
||||
className: "Modal-footer"
|
||||
}, this.footer())];
|
||||
}
|
||||
body() {
|
||||
return [m(_LogInButtons__WEBPACK_IMPORTED_MODULE_4__["default"], null), m("div", {
|
||||
className: "Form Form--centered"
|
||||
}, this.fields().toArray())];
|
||||
}
|
||||
fields() {
|
||||
const items = new _common_utils_ItemList__WEBPACK_IMPORTED_MODULE_6__["default"]();
|
||||
const identificationLabel = (0,_common_utils_extractText__WEBPACK_IMPORTED_MODULE_5__["default"])(_forum_app__WEBPACK_IMPORTED_MODULE_1__["default"].translator.trans('core.forum.log_in.username_or_email_placeholder'));
|
||||
const passwordLabel = (0,_common_utils_extractText__WEBPACK_IMPORTED_MODULE_5__["default"])(_forum_app__WEBPACK_IMPORTED_MODULE_1__["default"].translator.trans('core.forum.log_in.password_placeholder'));
|
||||
items.add('identification', m("div", {
|
||||
className: "Form-group"
|
||||
}, m("input", {
|
||||
className: "FormControl",
|
||||
name: "identification",
|
||||
type: "text",
|
||||
placeholder: identificationLabel,
|
||||
"aria-label": identificationLabel,
|
||||
bidi: this.identification,
|
||||
disabled: this.loading
|
||||
})), 30);
|
||||
items.add('password', m("div", {
|
||||
className: "Form-group"
|
||||
}, m("input", {
|
||||
className: "FormControl",
|
||||
name: "password",
|
||||
type: "password",
|
||||
autocomplete: "current-password",
|
||||
placeholder: passwordLabel,
|
||||
"aria-label": passwordLabel,
|
||||
bidi: this.password,
|
||||
disabled: this.loading
|
||||
})), 20);
|
||||
items.add('remember', m("div", {
|
||||
className: "Form-group"
|
||||
}, m("div", null, m("label", {
|
||||
className: "checkbox"
|
||||
}, m("input", {
|
||||
type: "checkbox",
|
||||
bidi: this.remember,
|
||||
disabled: this.loading
|
||||
}), _forum_app__WEBPACK_IMPORTED_MODULE_1__["default"].translator.trans('core.forum.log_in.remember_me_label')))), 10);
|
||||
items.add('submit', m("div", {
|
||||
className: "Form-group"
|
||||
}, m(_common_components_Button__WEBPACK_IMPORTED_MODULE_3__["default"], {
|
||||
className: "Button Button--primary Button--block",
|
||||
type: "submit",
|
||||
loading: this.loading
|
||||
}, _forum_app__WEBPACK_IMPORTED_MODULE_1__["default"].translator.trans('core.forum.log_in.submit_button'))), -10);
|
||||
return items;
|
||||
}
|
||||
footer() {
|
||||
return m('[', null, m("p", {
|
||||
className: "LogInModal-forgotPassword"
|
||||
}, m("a", {
|
||||
onclick: this.forgotPassword.bind(this)
|
||||
}, _forum_app__WEBPACK_IMPORTED_MODULE_1__["default"].translator.trans('core.forum.log_in.forgot_password_link'))), _forum_app__WEBPACK_IMPORTED_MODULE_1__["default"].forum.attribute('allowSignUp') && m("p", {
|
||||
className: "LogInModal-signUp"
|
||||
}, _forum_app__WEBPACK_IMPORTED_MODULE_1__["default"].translator.trans('core.forum.log_in.sign_up_text', {
|
||||
a: m("a", {
|
||||
onclick: this.signUp.bind(this)
|
||||
})
|
||||
})));
|
||||
}
|
||||
|
||||
/**
|
||||
* Open the forgot password modal, prefilling it with an email if the user has
|
||||
* entered one.
|
||||
*/
|
||||
forgotPassword() {
|
||||
const email = this.identification();
|
||||
const attrs = email.includes('@') ? {
|
||||
email
|
||||
} : undefined;
|
||||
_forum_app__WEBPACK_IMPORTED_MODULE_1__["default"].modal.show(() => __webpack_require__.e(/*! import() | forum/components/ForgotPasswordModal */ "forum/components/ForgotPasswordModal").then(__webpack_require__.bind(__webpack_require__, /*! ./ForgotPasswordModal */ "./src/forum/components/ForgotPasswordModal.tsx")), attrs);
|
||||
}
|
||||
|
||||
/**
|
||||
* Open the sign up modal, prefilling it with an email/username/password if
|
||||
* the user has entered one.
|
||||
*/
|
||||
signUp() {
|
||||
const identification = this.identification();
|
||||
const attrs = {
|
||||
[identification.includes('@') ? 'email' : 'username']: identification
|
||||
};
|
||||
_forum_app__WEBPACK_IMPORTED_MODULE_1__["default"].modal.show(() => __webpack_require__.e(/*! import() | forum/components/SignUpModal */ "forum/components/SignUpModal").then(__webpack_require__.bind(__webpack_require__, /*! ./SignUpModal */ "./src/forum/components/SignUpModal.tsx")), attrs);
|
||||
}
|
||||
onready() {
|
||||
this.$('[name=' + (this.identification() ? 'password' : 'identification') + ']').trigger('select');
|
||||
}
|
||||
onsubmit(e) {
|
||||
e.preventDefault();
|
||||
this.loading = true;
|
||||
_forum_app__WEBPACK_IMPORTED_MODULE_1__["default"].session.login(this.loginParams(), {
|
||||
errorHandler: this.onerror.bind(this)
|
||||
}).then(() => window.location.reload(), this.loaded.bind(this));
|
||||
}
|
||||
loginParams() {
|
||||
const data = {
|
||||
identification: this.identification(),
|
||||
password: this.password(),
|
||||
remember: this.remember()
|
||||
};
|
||||
return data;
|
||||
}
|
||||
onerror(error) {
|
||||
if (error.status === 401 && error.alert) {
|
||||
error.alert.content = _forum_app__WEBPACK_IMPORTED_MODULE_1__["default"].translator.trans('core.forum.log_in.invalid_login_message');
|
||||
this.password('');
|
||||
}
|
||||
super.onerror(error);
|
||||
}
|
||||
}
|
||||
flarum.reg.add('core', 'forum/components/LogInModal', LogInModal);flarum.reg.addChunkModule('forum/components/ForgotPasswordModal', './src/forum/components/ForgotPasswordModal.tsx', 'core', 'forum/components/ForgotPasswordModal');
|
||||
flarum.reg.addChunkModule('forum/components/SignUpModal', './src/forum/components/SignUpModal.tsx', 'core', 'forum/components/SignUpModal');
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./src/forum/components/LogInButtons.js":
|
||||
/*!**********************************************!*\
|
||||
!*** ./src/forum/components/LogInButtons.js ***!
|
||||
\**********************************************/
|
||||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||||
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
||||
/* harmony export */ "default": () => (/* binding */ LogInButtons)
|
||||
/* harmony export */ });
|
||||
/* harmony import */ var _common_Component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../common/Component */ "./src/common/Component.ts");
|
||||
/* harmony import */ var _common_utils_ItemList__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../common/utils/ItemList */ "./src/common/utils/ItemList.ts");
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* The `LogInButtons` component displays a collection of social login buttons.
|
||||
*/
|
||||
class LogInButtons extends _common_Component__WEBPACK_IMPORTED_MODULE_0__["default"] {
|
||||
view() {
|
||||
return m("div", {
|
||||
className: "LogInButtons"
|
||||
}, this.items().toArray());
|
||||
}
|
||||
|
||||
/**
|
||||
* Build a list of LogInButton components.
|
||||
*
|
||||
* @return {ItemList<import('mithril').Children>}
|
||||
*/
|
||||
items() {
|
||||
return new _common_utils_ItemList__WEBPACK_IMPORTED_MODULE_1__["default"]();
|
||||
}
|
||||
}
|
||||
flarum.reg.add('core', 'forum/components/LogInButtons', LogInButtons);
|
||||
|
||||
/***/ })
|
||||
|
||||
}]);
|
||||
"use strict";(self.webpackChunkflarum_core=self.webpackChunkflarum_core||[]).push([[460],{5049:(o,r,t)=>{t.r(r),t.d(r,{default:()=>u});var s=t(7905),e=t(6789),i=t(899),a=t(8312),n=t(6403),l=t(1552),d=t(4041),c=t(6458);class u extends i.Z{constructor(){super(...arguments),(0,s.Z)(this,"identification",void 0),(0,s.Z)(this,"password",void 0),(0,s.Z)(this,"remember",void 0)}oninit(o){super.oninit(o),this.identification=(0,c.Z)(this.attrs.identification||""),this.password=(0,c.Z)(this.attrs.password||""),this.remember=(0,c.Z)(!!this.attrs.remember)}className(){return"LogInModal Modal--small"}title(){return e.Z.translator.trans("core.forum.log_in.title")}content(){return[m("div",{className:"Modal-body"},this.body()),m("div",{className:"Modal-footer"},this.footer())]}body(){return[m(n.Z,null),m("div",{className:"Form Form--centered"},this.fields().toArray())]}fields(){const o=new d.Z,r=(0,l.Z)(e.Z.translator.trans("core.forum.log_in.username_or_email_placeholder")),t=(0,l.Z)(e.Z.translator.trans("core.forum.log_in.password_placeholder"));return o.add("identification",m("div",{className:"Form-group"},m("input",{className:"FormControl",name:"identification",type:"text",placeholder:r,"aria-label":r,bidi:this.identification,disabled:this.loading})),30),o.add("password",m("div",{className:"Form-group"},m("input",{className:"FormControl",name:"password",type:"password",autocomplete:"current-password",placeholder:t,"aria-label":t,bidi:this.password,disabled:this.loading})),20),o.add("remember",m("div",{className:"Form-group"},m("div",null,m("label",{className:"checkbox"},m("input",{type:"checkbox",bidi:this.remember,disabled:this.loading}),e.Z.translator.trans("core.forum.log_in.remember_me_label")))),10),o.add("submit",m("div",{className:"Form-group"},m(a.Z,{className:"Button Button--primary Button--block",type:"submit",loading:this.loading},e.Z.translator.trans("core.forum.log_in.submit_button"))),-10),o}footer(){return m("[",null,m("p",{className:"LogInModal-forgotPassword"},m("a",{onclick:this.forgotPassword.bind(this)},e.Z.translator.trans("core.forum.log_in.forgot_password_link"))),e.Z.forum.attribute("allowSignUp")&&m("p",{className:"LogInModal-signUp"},e.Z.translator.trans("core.forum.log_in.sign_up_text",{a:m("a",{onclick:this.signUp.bind(this)})})))}forgotPassword(){const o=this.identification(),r=o.includes("@")?{email:o}:void 0;e.Z.modal.show((()=>t.e(502).then(t.bind(t,1839))),r)}signUp(){const o=this.identification(),r={[o.includes("@")?"email":"username"]:o};e.Z.modal.show((()=>t.e(395).then(t.bind(t,8686))),r)}onready(){this.$("[name="+(this.identification()?"password":"identification")+"]").trigger("select")}onsubmit(o){o.preventDefault(),this.loading=!0,e.Z.session.login(this.loginParams(),{errorHandler:this.onerror.bind(this)}).then((()=>window.location.reload()),this.loaded.bind(this))}loginParams(){return{identification:this.identification(),password:this.password(),remember:this.remember()}}onerror(o){401===o.status&&o.alert&&(o.alert.content=e.Z.translator.trans("core.forum.log_in.invalid_login_message"),this.password("")),super.onerror(o)}}flarum.reg.add("core","forum/components/LogInModal",u),flarum.reg.addChunkModule("502","1839","core","forum/components/ForgotPasswordModal"),flarum.reg.addChunkModule("395","8686","core","forum/components/SignUpModal")},6403:(o,r,t)=>{t.d(r,{Z:()=>i});var s=t(2190),e=t(4041);class i extends s.Z{view(){return m("div",{className:"LogInButtons"},this.items().toArray())}items(){return new e.Z}}flarum.reg.add("core","forum/components/LogInButtons",i)}}]);
|
||||
//# sourceMappingURL=LogInModal.js.map
|
2
framework/core/js/dist/forum/components/LogInModal.js.map
generated
vendored
2
framework/core/js/dist/forum/components/LogInModal.js.map
generated
vendored
File diff suppressed because one or more lines are too long
47
framework/core/js/dist/forum/components/NotificationsPage.js
generated
vendored
47
framework/core/js/dist/forum/components/NotificationsPage.js
generated
vendored
@ -1,47 +1,2 @@
|
||||
"use strict";
|
||||
(self["webpackChunkflarum_core"] = self["webpackChunkflarum_core"] || []).push([["forum/components/NotificationsPage"],{
|
||||
|
||||
/***/ "./src/forum/components/NotificationsPage.tsx":
|
||||
/*!****************************************************!*\
|
||||
!*** ./src/forum/components/NotificationsPage.tsx ***!
|
||||
\****************************************************/
|
||||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||||
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
||||
/* harmony export */ "default": () => (/* binding */ NotificationsPage)
|
||||
/* harmony export */ });
|
||||
/* harmony import */ var _forum_app__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../forum/app */ "./src/forum/app.ts");
|
||||
/* harmony import */ var _common_components_Page__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../common/components/Page */ "./src/common/components/Page.tsx");
|
||||
/* harmony import */ var _NotificationList__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./NotificationList */ "./src/forum/components/NotificationList.js");
|
||||
/* harmony import */ var _common_utils_extractText__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../common/utils/extractText */ "./src/common/utils/extractText.ts");
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* The `NotificationsPage` component shows the notifications list. It is only
|
||||
* used on mobile devices where the notifications dropdown is within the drawer.
|
||||
*/
|
||||
class NotificationsPage extends _common_components_Page__WEBPACK_IMPORTED_MODULE_1__["default"] {
|
||||
oninit(vnode) {
|
||||
super.oninit(vnode);
|
||||
_forum_app__WEBPACK_IMPORTED_MODULE_0__["default"].history.push('notifications', (0,_common_utils_extractText__WEBPACK_IMPORTED_MODULE_3__["default"])(_forum_app__WEBPACK_IMPORTED_MODULE_0__["default"].translator.trans('core.forum.notifications.title')));
|
||||
_forum_app__WEBPACK_IMPORTED_MODULE_0__["default"].notifications.load();
|
||||
this.bodyClass = 'App--notifications';
|
||||
}
|
||||
view() {
|
||||
return m("div", {
|
||||
className: "NotificationsPage"
|
||||
}, m(_NotificationList__WEBPACK_IMPORTED_MODULE_2__["default"], {
|
||||
state: _forum_app__WEBPACK_IMPORTED_MODULE_0__["default"].notifications
|
||||
}));
|
||||
}
|
||||
}
|
||||
flarum.reg.add('core', 'forum/components/NotificationsPage', NotificationsPage);
|
||||
|
||||
/***/ })
|
||||
|
||||
}]);
|
||||
"use strict";(self.webpackChunkflarum_core=self.webpackChunkflarum_core||[]).push([[744],{8246:(i,t,o)=>{o.r(t),o.d(t,{default:()=>r});var s=o(6789),a=o(4661),n=o(7297),e=o(1552);class r extends a.Z{oninit(i){super.oninit(i),s.Z.history.push("notifications",(0,e.Z)(s.Z.translator.trans("core.forum.notifications.title"))),s.Z.notifications.load(),this.bodyClass="App--notifications"}view(){return m("div",{className:"NotificationsPage"},m(n.Z,{state:s.Z.notifications}))}}flarum.reg.add("core","forum/components/NotificationsPage",r)}}]);
|
||||
//# sourceMappingURL=NotificationsPage.js.map
|
2
framework/core/js/dist/forum/components/NotificationsPage.js.map
generated
vendored
2
framework/core/js/dist/forum/components/NotificationsPage.js.map
generated
vendored
@ -1 +1 @@
|
||||
{"version":3,"file":"forum/components/NotificationsPage.js","mappings":";;;;;;;;;;;;;;;;;AAAkC;AACc;AACE;AACO;;AAEzD;AACA;AACA;AACA;AACe,gCAAgC,+DAAI;AACnD;AACA;AACA,IAAI,+DAAgB,kBAAkB,qEAAW,CAAC,mEAAoB;AACtE,IAAI,qEAAsB;AAC1B;AACA;AACA;AACA;AACA;AACA,KAAK,IAAI,yDAAgB;AACzB,aAAa,gEAAiB;AAC9B,KAAK;AACL;AACA;AACA","sources":["webpack://@flarum/core/./src/forum/components/NotificationsPage.tsx"],"sourcesContent":["import app from '../../forum/app';\nimport Page from '../../common/components/Page';\nimport NotificationList from './NotificationList';\nimport extractText from '../../common/utils/extractText';\n\n/**\n * The `NotificationsPage` component shows the notifications list. It is only\n * used on mobile devices where the notifications dropdown is within the drawer.\n */\nexport default class NotificationsPage extends Page {\n oninit(vnode) {\n super.oninit(vnode);\n app.history.push('notifications', extractText(app.translator.trans('core.forum.notifications.title')));\n app.notifications.load();\n this.bodyClass = 'App--notifications';\n }\n view() {\n return m(\"div\", {\n className: \"NotificationsPage\"\n }, m(NotificationList, {\n state: app.notifications\n }));\n }\n}\nflarum.reg.add('core', 'forum/components/NotificationsPage', NotificationsPage);"],"names":[],"sourceRoot":""}
|
||||
{"version":3,"file":"forum/components/NotificationsPage.js","mappings":"mLASe,MAAMA,UAA0B,IAC7CC,OAAOC,GACLC,MAAMF,OAAOC,GACb,iBAAiB,iBAAiB,OAAY,qBAAqB,oCACnE,yBACAE,KAAKC,UAAY,oBACnB,CACAC,OACE,OAAOC,EAAE,MAAO,CACdC,UAAW,qBACVD,EAAE,IAAkB,CACrBE,MAAO,oBAEX,EAEFC,OAAOC,IAAIC,IAAI,OAAQ,qCAAsCZ,E","sources":["webpack://@flarum/core/./src/forum/components/NotificationsPage.tsx"],"sourcesContent":["import app from '../../forum/app';\nimport Page from '../../common/components/Page';\nimport NotificationList from './NotificationList';\nimport extractText from '../../common/utils/extractText';\n\n/**\n * The `NotificationsPage` component shows the notifications list. It is only\n * used on mobile devices where the notifications dropdown is within the drawer.\n */\nexport default class NotificationsPage extends Page {\n oninit(vnode) {\n super.oninit(vnode);\n app.history.push('notifications', extractText(app.translator.trans('core.forum.notifications.title')));\n app.notifications.load();\n this.bodyClass = 'App--notifications';\n }\n view() {\n return m(\"div\", {\n className: \"NotificationsPage\"\n }, m(NotificationList, {\n state: app.notifications\n }));\n }\n}\nflarum.reg.add('core', 'forum/components/NotificationsPage', NotificationsPage);"],"names":["NotificationsPage","oninit","vnode","super","this","bodyClass","view","m","className","state","flarum","reg","add"],"sourceRoot":""}
|
590
framework/core/js/dist/forum/components/PostStream.js
generated
vendored
590
framework/core/js/dist/forum/components/PostStream.js
generated
vendored
File diff suppressed because one or more lines are too long
2
framework/core/js/dist/forum/components/PostStream.js.map
generated
vendored
2
framework/core/js/dist/forum/components/PostStream.js.map
generated
vendored
File diff suppressed because one or more lines are too long
339
framework/core/js/dist/forum/components/PostStreamScrubber.js
generated
vendored
339
framework/core/js/dist/forum/components/PostStreamScrubber.js
generated
vendored
File diff suppressed because one or more lines are too long
2
framework/core/js/dist/forum/components/PostStreamScrubber.js.map
generated
vendored
2
framework/core/js/dist/forum/components/PostStreamScrubber.js.map
generated
vendored
File diff suppressed because one or more lines are too long
296
framework/core/js/dist/forum/components/ReplyComposer.js
generated
vendored
296
framework/core/js/dist/forum/components/ReplyComposer.js
generated
vendored
@ -1,296 +1,2 @@
|
||||
"use strict";
|
||||
(self["webpackChunkflarum_core"] = self["webpackChunkflarum_core"] || []).push([["forum/components/ReplyComposer"],{
|
||||
|
||||
/***/ "./src/common/components/ConfirmDocumentUnload.js":
|
||||
/*!********************************************************!*\
|
||||
!*** ./src/common/components/ConfirmDocumentUnload.js ***!
|
||||
\********************************************************/
|
||||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||||
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
||||
/* harmony export */ "default": () => (/* binding */ ConfirmDocumentUnload)
|
||||
/* harmony export */ });
|
||||
/* harmony import */ var _Component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Component */ "./src/common/Component.ts");
|
||||
|
||||
|
||||
/**
|
||||
* The `ConfirmDocumentUnload` component can be used to register a global
|
||||
* event handler that prevents closing the browser window/tab based on the
|
||||
* return value of a given callback prop.
|
||||
*
|
||||
* ### Attrs
|
||||
*
|
||||
* - `when` - a callback returning true when the browser should prompt for
|
||||
* confirmation before closing the window/tab
|
||||
*/
|
||||
class ConfirmDocumentUnload extends _Component__WEBPACK_IMPORTED_MODULE_0__["default"] {
|
||||
handler() {
|
||||
return this.attrs.when() || undefined;
|
||||
}
|
||||
oncreate(vnode) {
|
||||
super.oncreate(vnode);
|
||||
this.boundHandler = this.handler.bind(this);
|
||||
$(window).on('beforeunload', this.boundHandler);
|
||||
}
|
||||
onremove(vnode) {
|
||||
super.onremove(vnode);
|
||||
$(window).off('beforeunload', this.boundHandler);
|
||||
}
|
||||
view(vnode) {
|
||||
return m('[', null, vnode.children);
|
||||
}
|
||||
}
|
||||
flarum.reg.add('core', 'common/components/ConfirmDocumentUnload', ConfirmDocumentUnload);
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./src/forum/components/ComposerBody.js":
|
||||
/*!**********************************************!*\
|
||||
!*** ./src/forum/components/ComposerBody.js ***!
|
||||
\**********************************************/
|
||||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||||
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
||||
/* harmony export */ "default": () => (/* binding */ ComposerBody)
|
||||
/* harmony export */ });
|
||||
/* harmony import */ var _common_Component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../common/Component */ "./src/common/Component.ts");
|
||||
/* harmony import */ var _common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../common/components/LoadingIndicator */ "./src/common/components/LoadingIndicator.tsx");
|
||||
/* harmony import */ var _common_components_ConfirmDocumentUnload__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../common/components/ConfirmDocumentUnload */ "./src/common/components/ConfirmDocumentUnload.js");
|
||||
/* harmony import */ var _common_components_TextEditor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../common/components/TextEditor */ "./src/common/components/TextEditor.js");
|
||||
/* harmony import */ var _common_helpers_listItems__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../common/helpers/listItems */ "./src/common/helpers/listItems.tsx");
|
||||
/* harmony import */ var _common_utils_ItemList__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../common/utils/ItemList */ "./src/common/utils/ItemList.ts");
|
||||
/* harmony import */ var _common_utils_classList__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../common/utils/classList */ "./src/common/utils/classList.ts");
|
||||
/* harmony import */ var _common_components_Avatar__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../common/components/Avatar */ "./src/common/components/Avatar.tsx");
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* The `ComposerBody` component handles the body, or the content, of the
|
||||
* composer. Subclasses should implement the `onsubmit` method and override
|
||||
* `headerTimes`.
|
||||
*
|
||||
* ### Attrs
|
||||
*
|
||||
* - `composer`
|
||||
* - `originalContent`
|
||||
* - `submitLabel`
|
||||
* - `placeholder`
|
||||
* - `user`
|
||||
* - `confirmExit`
|
||||
* - `disabled`
|
||||
*
|
||||
* @abstract
|
||||
*/
|
||||
class ComposerBody extends _common_Component__WEBPACK_IMPORTED_MODULE_0__["default"] {
|
||||
oninit(vnode) {
|
||||
super.oninit(vnode);
|
||||
this.composer = this.attrs.composer;
|
||||
|
||||
/**
|
||||
* Whether or not the component is loading.
|
||||
*
|
||||
* @type {Boolean}
|
||||
*/
|
||||
this.loading = false;
|
||||
|
||||
// Let the composer state know to ask for confirmation under certain
|
||||
// circumstances, if the body supports / requires it and has a corresponding
|
||||
// confirmation question to ask.
|
||||
if (this.attrs.confirmExit) {
|
||||
this.composer.preventClosingWhen(() => this.hasChanges(), this.attrs.confirmExit);
|
||||
}
|
||||
this.composer.fields.content(this.attrs.originalContent || '');
|
||||
}
|
||||
view() {
|
||||
var _this$jumpToPreview;
|
||||
return m(_common_components_ConfirmDocumentUnload__WEBPACK_IMPORTED_MODULE_2__["default"], {
|
||||
when: this.hasChanges.bind(this)
|
||||
}, m("div", {
|
||||
className: (0,_common_utils_classList__WEBPACK_IMPORTED_MODULE_6__["default"])('ComposerBody', this.attrs.className)
|
||||
}, m(_common_components_Avatar__WEBPACK_IMPORTED_MODULE_7__["default"], {
|
||||
user: this.attrs.user,
|
||||
className: "ComposerBody-avatar"
|
||||
}), m("div", {
|
||||
className: "ComposerBody-content"
|
||||
}, m("ul", {
|
||||
className: "ComposerBody-header"
|
||||
}, (0,_common_helpers_listItems__WEBPACK_IMPORTED_MODULE_4__["default"])(this.headerItems().toArray())), m("div", {
|
||||
className: "ComposerBody-editor"
|
||||
}, m(_common_components_TextEditor__WEBPACK_IMPORTED_MODULE_3__["default"], {
|
||||
submitLabel: this.attrs.submitLabel,
|
||||
placeholder: this.attrs.placeholder,
|
||||
disabled: this.loading || this.attrs.disabled,
|
||||
composer: this.composer,
|
||||
preview: (_this$jumpToPreview = this.jumpToPreview) == null ? void 0 : _this$jumpToPreview.bind(this),
|
||||
onchange: this.composer.fields.content,
|
||||
onsubmit: this.onsubmit.bind(this),
|
||||
value: this.composer.fields.content()
|
||||
}))), m(_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_1__["default"], {
|
||||
display: "unset",
|
||||
containerClassName: (0,_common_utils_classList__WEBPACK_IMPORTED_MODULE_6__["default"])('ComposerBody-loading', this.loading && 'active'),
|
||||
size: "large"
|
||||
})));
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if there is any unsaved data.
|
||||
*
|
||||
* @return {boolean}
|
||||
*/
|
||||
hasChanges() {
|
||||
const content = this.composer.fields.content();
|
||||
return content && content !== this.attrs.originalContent;
|
||||
}
|
||||
|
||||
/**
|
||||
* Build an item list for the composer's header.
|
||||
*
|
||||
* @return {ItemList<import('mithril').Children>}
|
||||
*/
|
||||
headerItems() {
|
||||
return new _common_utils_ItemList__WEBPACK_IMPORTED_MODULE_5__["default"]();
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle the submit event of the text editor.
|
||||
*
|
||||
* @abstract
|
||||
*/
|
||||
onsubmit() {}
|
||||
|
||||
/**
|
||||
* Stop loading.
|
||||
*/
|
||||
loaded() {
|
||||
this.loading = false;
|
||||
m.redraw();
|
||||
}
|
||||
}
|
||||
flarum.reg.add('core', 'forum/components/ComposerBody', ComposerBody);
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./src/forum/components/ReplyComposer.js":
|
||||
/*!***********************************************!*\
|
||||
!*** ./src/forum/components/ReplyComposer.js ***!
|
||||
\***********************************************/
|
||||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||||
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
||||
/* harmony export */ "default": () => (/* binding */ ReplyComposer)
|
||||
/* harmony export */ });
|
||||
/* harmony import */ var _forum_app__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../forum/app */ "./src/forum/app.ts");
|
||||
/* harmony import */ var _ComposerBody__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ComposerBody */ "./src/forum/components/ComposerBody.js");
|
||||
/* harmony import */ var _common_components_Button__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../common/components/Button */ "./src/common/components/Button.tsx");
|
||||
/* harmony import */ var _common_components_Link__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../common/components/Link */ "./src/common/components/Link.js");
|
||||
/* harmony import */ var _common_utils_extractText__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../common/utils/extractText */ "./src/common/utils/extractText.ts");
|
||||
/* harmony import */ var _common_components_Icon__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../common/components/Icon */ "./src/common/components/Icon.tsx");
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function minimizeComposerIfFullScreen(e) {
|
||||
if (_forum_app__WEBPACK_IMPORTED_MODULE_0__["default"].composer.isFullScreen()) {
|
||||
_forum_app__WEBPACK_IMPORTED_MODULE_0__["default"].composer.minimize();
|
||||
e.stopPropagation();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* The `ReplyComposer` component displays the composer content for replying to a
|
||||
* discussion.
|
||||
*
|
||||
* ### Attrs
|
||||
*
|
||||
* - All of the attrs of ComposerBody
|
||||
* - `discussion`
|
||||
*/
|
||||
class ReplyComposer extends _ComposerBody__WEBPACK_IMPORTED_MODULE_1__["default"] {
|
||||
static initAttrs(attrs) {
|
||||
super.initAttrs(attrs);
|
||||
attrs.placeholder = attrs.placeholder || (0,_common_utils_extractText__WEBPACK_IMPORTED_MODULE_4__["default"])(_forum_app__WEBPACK_IMPORTED_MODULE_0__["default"].translator.trans('core.forum.composer_reply.body_placeholder'));
|
||||
attrs.submitLabel = attrs.submitLabel || _forum_app__WEBPACK_IMPORTED_MODULE_0__["default"].translator.trans('core.forum.composer_reply.submit_button');
|
||||
attrs.confirmExit = attrs.confirmExit || (0,_common_utils_extractText__WEBPACK_IMPORTED_MODULE_4__["default"])(_forum_app__WEBPACK_IMPORTED_MODULE_0__["default"].translator.trans('core.forum.composer_reply.discard_confirmation'));
|
||||
}
|
||||
headerItems() {
|
||||
const items = super.headerItems();
|
||||
const discussion = this.attrs.discussion;
|
||||
items.add('title', m("h3", null, m(_common_components_Icon__WEBPACK_IMPORTED_MODULE_5__["default"], {
|
||||
name: 'fas fa-reply'
|
||||
}), ' ', m(_common_components_Link__WEBPACK_IMPORTED_MODULE_3__["default"], {
|
||||
href: _forum_app__WEBPACK_IMPORTED_MODULE_0__["default"].route.discussion(discussion),
|
||||
onclick: minimizeComposerIfFullScreen
|
||||
}, discussion.title())));
|
||||
return items;
|
||||
}
|
||||
|
||||
/**
|
||||
* Jump to the preview when triggered by the text editor.
|
||||
*/
|
||||
jumpToPreview(e) {
|
||||
minimizeComposerIfFullScreen(e);
|
||||
m.route.set(_forum_app__WEBPACK_IMPORTED_MODULE_0__["default"].route.discussion(this.attrs.discussion, 'reply'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the data to submit to the server when the reply is saved.
|
||||
*
|
||||
* @return {Record<string, unknown>}
|
||||
*/
|
||||
data() {
|
||||
return {
|
||||
content: this.composer.fields.content(),
|
||||
relationships: {
|
||||
discussion: this.attrs.discussion
|
||||
}
|
||||
};
|
||||
}
|
||||
onsubmit() {
|
||||
const discussion = this.attrs.discussion;
|
||||
this.loading = true;
|
||||
m.redraw();
|
||||
const data = this.data();
|
||||
_forum_app__WEBPACK_IMPORTED_MODULE_0__["default"].store.createRecord('posts').save(data).then(post => {
|
||||
// If we're currently viewing the discussion which this reply was made
|
||||
// in, then we can update the post stream and scroll to the post.
|
||||
if (_forum_app__WEBPACK_IMPORTED_MODULE_0__["default"].viewingDiscussion(discussion)) {
|
||||
const stream = _forum_app__WEBPACK_IMPORTED_MODULE_0__["default"].current.get('stream');
|
||||
stream.update().then(() => stream.goToNumber(post.number()));
|
||||
} else {
|
||||
// Otherwise, we'll create an alert message to inform the user that
|
||||
// their reply has been posted, containing a button which will
|
||||
// transition to their new post when clicked.
|
||||
let alert;
|
||||
const viewButton = m(_common_components_Button__WEBPACK_IMPORTED_MODULE_2__["default"], {
|
||||
className: "Button Button--link",
|
||||
onclick: () => {
|
||||
m.route.set(_forum_app__WEBPACK_IMPORTED_MODULE_0__["default"].route.post(post));
|
||||
_forum_app__WEBPACK_IMPORTED_MODULE_0__["default"].alerts.dismiss(alert);
|
||||
}
|
||||
}, _forum_app__WEBPACK_IMPORTED_MODULE_0__["default"].translator.trans('core.forum.composer_reply.view_button'));
|
||||
alert = _forum_app__WEBPACK_IMPORTED_MODULE_0__["default"].alerts.show({
|
||||
type: 'success',
|
||||
controls: [viewButton]
|
||||
}, _forum_app__WEBPACK_IMPORTED_MODULE_0__["default"].translator.trans('core.forum.composer_reply.posted_message'));
|
||||
}
|
||||
this.composer.hide();
|
||||
}, this.loaded.bind(this));
|
||||
}
|
||||
}
|
||||
flarum.reg.add('core', 'forum/components/ReplyComposer', ReplyComposer);
|
||||
|
||||
/***/ })
|
||||
|
||||
}]);
|
||||
"use strict";(self.webpackChunkflarum_core=self.webpackChunkflarum_core||[]).push([[630],{2140:(s,e,t)=>{t.d(e,{Z:()=>h});var o=t(2190),r=t(5226);class i extends o.Z{handler(){return this.attrs.when()||void 0}oncreate(s){super.oncreate(s),this.boundHandler=this.handler.bind(this),$(window).on("beforeunload",this.boundHandler)}onremove(s){super.onremove(s),$(window).off("beforeunload",this.boundHandler)}view(s){return m("[",null,s.children)}}flarum.reg.add("core","common/components/ConfirmDocumentUnload",i);var n=t(4944),a=t(1268),c=t(4041),l=t(3344),d=t(7323);class h extends o.Z{oninit(s){super.oninit(s),this.composer=this.attrs.composer,this.loading=!1,this.attrs.confirmExit&&this.composer.preventClosingWhen((()=>this.hasChanges()),this.attrs.confirmExit),this.composer.fields.content(this.attrs.originalContent||"")}view(){var s;return m(i,{when:this.hasChanges.bind(this)},m("div",{className:(0,l.Z)("ComposerBody",this.attrs.className)},m(d.Z,{user:this.attrs.user,className:"ComposerBody-avatar"}),m("div",{className:"ComposerBody-content"},m("ul",{className:"ComposerBody-header"},(0,a.Z)(this.headerItems().toArray())),m("div",{className:"ComposerBody-editor"},m(n.Z,{submitLabel:this.attrs.submitLabel,placeholder:this.attrs.placeholder,disabled:this.loading||this.attrs.disabled,composer:this.composer,preview:null==(s=this.jumpToPreview)?void 0:s.bind(this),onchange:this.composer.fields.content,onsubmit:this.onsubmit.bind(this),value:this.composer.fields.content()}))),m(r.Z,{display:"unset",containerClassName:(0,l.Z)("ComposerBody-loading",this.loading&&"active"),size:"large"})))}hasChanges(){const s=this.composer.fields.content();return s&&s!==this.attrs.originalContent}headerItems(){return new c.Z}onsubmit(){}loaded(){this.loading=!1,m.redraw()}}flarum.reg.add("core","forum/components/ComposerBody",h)},2925:(s,e,t)=>{t.r(e),t.d(e,{default:()=>d});var o=t(6789),r=t(2140),i=t(8312),n=t(6597),a=t(1552),c=t(9133);function l(s){o.Z.composer.isFullScreen()&&(o.Z.composer.minimize(),s.stopPropagation())}class d extends r.Z{static initAttrs(s){super.initAttrs(s),s.placeholder=s.placeholder||(0,a.Z)(o.Z.translator.trans("core.forum.composer_reply.body_placeholder")),s.submitLabel=s.submitLabel||o.Z.translator.trans("core.forum.composer_reply.submit_button"),s.confirmExit=s.confirmExit||(0,a.Z)(o.Z.translator.trans("core.forum.composer_reply.discard_confirmation"))}headerItems(){const s=super.headerItems(),e=this.attrs.discussion;return s.add("title",m("h3",null,m(c.Z,{name:"fas fa-reply"})," ",m(n.Z,{href:o.Z.route.discussion(e),onclick:l},e.title()))),s}jumpToPreview(s){l(s),m.route.set(o.Z.route.discussion(this.attrs.discussion,"reply"))}data(){return{content:this.composer.fields.content(),relationships:{discussion:this.attrs.discussion}}}onsubmit(){const s=this.attrs.discussion;this.loading=!0,m.redraw();const e=this.data();o.Z.store.createRecord("posts").save(e).then((e=>{if(o.Z.viewingDiscussion(s)){const s=o.Z.current.get("stream");s.update().then((()=>s.goToNumber(e.number())))}else{let s;const t=m(i.Z,{className:"Button Button--link",onclick:()=>{m.route.set(o.Z.route.post(e)),o.Z.alerts.dismiss(s)}},o.Z.translator.trans("core.forum.composer_reply.view_button"));s=o.Z.alerts.show({type:"success",controls:[t]},o.Z.translator.trans("core.forum.composer_reply.posted_message"))}this.composer.hide()}),this.loaded.bind(this))}}flarum.reg.add("core","forum/components/ReplyComposer",d)}}]);
|
||||
//# sourceMappingURL=ReplyComposer.js.map
|
2
framework/core/js/dist/forum/components/ReplyComposer.js.map
generated
vendored
2
framework/core/js/dist/forum/components/ReplyComposer.js.map
generated
vendored
File diff suppressed because one or more lines are too long
386
framework/core/js/dist/forum/components/SearchModal.js
generated
vendored
386
framework/core/js/dist/forum/components/SearchModal.js
generated
vendored
File diff suppressed because one or more lines are too long
2
framework/core/js/dist/forum/components/SearchModal.js.map
generated
vendored
2
framework/core/js/dist/forum/components/SearchModal.js.map
generated
vendored
File diff suppressed because one or more lines are too long
551
framework/core/js/dist/forum/components/SettingsPage.js
generated
vendored
551
framework/core/js/dist/forum/components/SettingsPage.js
generated
vendored
File diff suppressed because one or more lines are too long
2
framework/core/js/dist/forum/components/SettingsPage.js.map
generated
vendored
2
framework/core/js/dist/forum/components/SettingsPage.js.map
generated
vendored
File diff suppressed because one or more lines are too long
223
framework/core/js/dist/forum/components/SignUpModal.js
generated
vendored
223
framework/core/js/dist/forum/components/SignUpModal.js
generated
vendored
@ -1,223 +1,2 @@
|
||||
"use strict";
|
||||
(self["webpackChunkflarum_core"] = self["webpackChunkflarum_core"] || []).push([["forum/components/SignUpModal"],{
|
||||
|
||||
/***/ "./src/forum/components/SignUpModal.tsx":
|
||||
/*!**********************************************!*\
|
||||
!*** ./src/forum/components/SignUpModal.tsx ***!
|
||||
\**********************************************/
|
||||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||||
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
||||
/* harmony export */ "default": () => (/* binding */ SignUpModal)
|
||||
/* harmony export */ });
|
||||
/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ "../../../js-packages/webpack-config/node_modules/@babel/runtime/helpers/esm/defineProperty.js");
|
||||
/* harmony import */ var _forum_app__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../forum/app */ "./src/forum/app.ts");
|
||||
/* harmony import */ var _common_components_FormModal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../common/components/FormModal */ "./src/common/components/FormModal.tsx");
|
||||
/* harmony import */ var _common_components_Button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../common/components/Button */ "./src/common/components/Button.tsx");
|
||||
/* harmony import */ var _LogInButtons__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./LogInButtons */ "./src/forum/components/LogInButtons.js");
|
||||
/* harmony import */ var _common_utils_extractText__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../common/utils/extractText */ "./src/common/utils/extractText.ts");
|
||||
/* harmony import */ var _common_utils_ItemList__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../common/utils/ItemList */ "./src/common/utils/ItemList.ts");
|
||||
/* harmony import */ var _common_utils_Stream__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../common/utils/Stream */ "./src/common/utils/Stream.ts");
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
class SignUpModal extends _common_components_FormModal__WEBPACK_IMPORTED_MODULE_2__["default"] {
|
||||
constructor() {
|
||||
super(...arguments);
|
||||
/**
|
||||
* The value of the username input.
|
||||
*/
|
||||
(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__["default"])(this, "username", void 0);
|
||||
/**
|
||||
* The value of the email input.
|
||||
*/
|
||||
(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__["default"])(this, "email", void 0);
|
||||
/**
|
||||
* The value of the password input.
|
||||
*/
|
||||
(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__["default"])(this, "password", void 0);
|
||||
}
|
||||
oninit(vnode) {
|
||||
super.oninit(vnode);
|
||||
this.username = (0,_common_utils_Stream__WEBPACK_IMPORTED_MODULE_7__["default"])(this.attrs.username || '');
|
||||
this.email = (0,_common_utils_Stream__WEBPACK_IMPORTED_MODULE_7__["default"])(this.attrs.email || '');
|
||||
this.password = (0,_common_utils_Stream__WEBPACK_IMPORTED_MODULE_7__["default"])(this.attrs.password || '');
|
||||
}
|
||||
className() {
|
||||
return 'Modal--small SignUpModal';
|
||||
}
|
||||
title() {
|
||||
return _forum_app__WEBPACK_IMPORTED_MODULE_1__["default"].translator.trans('core.forum.sign_up.title');
|
||||
}
|
||||
content() {
|
||||
return [m("div", {
|
||||
className: "Modal-body"
|
||||
}, this.body()), m("div", {
|
||||
className: "Modal-footer"
|
||||
}, this.footer())];
|
||||
}
|
||||
isProvided(field) {
|
||||
var _this$attrs$provided$, _this$attrs$provided;
|
||||
return (_this$attrs$provided$ = (_this$attrs$provided = this.attrs.provided) == null ? void 0 : _this$attrs$provided.includes(field)) != null ? _this$attrs$provided$ : false;
|
||||
}
|
||||
body() {
|
||||
return [!this.attrs.token && m(_LogInButtons__WEBPACK_IMPORTED_MODULE_4__["default"], null), m("div", {
|
||||
className: "Form Form--centered"
|
||||
}, this.fields().toArray())];
|
||||
}
|
||||
fields() {
|
||||
const items = new _common_utils_ItemList__WEBPACK_IMPORTED_MODULE_6__["default"]();
|
||||
const usernameLabel = (0,_common_utils_extractText__WEBPACK_IMPORTED_MODULE_5__["default"])(_forum_app__WEBPACK_IMPORTED_MODULE_1__["default"].translator.trans('core.forum.sign_up.username_placeholder'));
|
||||
const emailLabel = (0,_common_utils_extractText__WEBPACK_IMPORTED_MODULE_5__["default"])(_forum_app__WEBPACK_IMPORTED_MODULE_1__["default"].translator.trans('core.forum.sign_up.email_placeholder'));
|
||||
const passwordLabel = (0,_common_utils_extractText__WEBPACK_IMPORTED_MODULE_5__["default"])(_forum_app__WEBPACK_IMPORTED_MODULE_1__["default"].translator.trans('core.forum.sign_up.password_placeholder'));
|
||||
items.add('username', m("div", {
|
||||
className: "Form-group"
|
||||
}, m("input", {
|
||||
className: "FormControl",
|
||||
name: "username",
|
||||
type: "text",
|
||||
placeholder: usernameLabel,
|
||||
"aria-label": usernameLabel,
|
||||
bidi: this.username,
|
||||
disabled: this.loading || this.isProvided('username')
|
||||
})), 30);
|
||||
items.add('email', m("div", {
|
||||
className: "Form-group"
|
||||
}, m("input", {
|
||||
className: "FormControl",
|
||||
name: "email",
|
||||
type: "email",
|
||||
placeholder: emailLabel,
|
||||
"aria-label": emailLabel,
|
||||
bidi: this.email,
|
||||
disabled: this.loading || this.isProvided('email')
|
||||
})), 20);
|
||||
if (!this.attrs.token) {
|
||||
items.add('password', m("div", {
|
||||
className: "Form-group"
|
||||
}, m("input", {
|
||||
className: "FormControl",
|
||||
name: "password",
|
||||
type: "password",
|
||||
autocomplete: "new-password",
|
||||
placeholder: passwordLabel,
|
||||
"aria-label": passwordLabel,
|
||||
bidi: this.password,
|
||||
disabled: this.loading
|
||||
})), 10);
|
||||
}
|
||||
items.add('submit', m("div", {
|
||||
className: "Form-group"
|
||||
}, m(_common_components_Button__WEBPACK_IMPORTED_MODULE_3__["default"], {
|
||||
className: "Button Button--primary Button--block",
|
||||
type: "submit",
|
||||
loading: this.loading
|
||||
}, _forum_app__WEBPACK_IMPORTED_MODULE_1__["default"].translator.trans('core.forum.sign_up.submit_button'))), -10);
|
||||
return items;
|
||||
}
|
||||
footer() {
|
||||
return [m("p", {
|
||||
className: "SignUpModal-logIn"
|
||||
}, _forum_app__WEBPACK_IMPORTED_MODULE_1__["default"].translator.trans('core.forum.sign_up.log_in_text', {
|
||||
a: m("a", {
|
||||
onclick: this.logIn.bind(this)
|
||||
})
|
||||
}))];
|
||||
}
|
||||
|
||||
/**
|
||||
* Open the log in modal, prefilling it with an email/username/password if
|
||||
* the user has entered one.
|
||||
*/
|
||||
logIn() {
|
||||
const attrs = {
|
||||
identification: this.email() || this.username()
|
||||
};
|
||||
_forum_app__WEBPACK_IMPORTED_MODULE_1__["default"].modal.show(() => __webpack_require__.e(/*! import() | forum/components/LogInModal */ "forum/components/LogInModal").then(__webpack_require__.bind(__webpack_require__, /*! ./LogInModal */ "./src/forum/components/LogInModal.tsx")), attrs);
|
||||
}
|
||||
onready() {
|
||||
if (this.attrs.username && !this.attrs.email) {
|
||||
this.$('[name=email]').select();
|
||||
} else {
|
||||
this.$('[name=username]').select();
|
||||
}
|
||||
}
|
||||
onsubmit(e) {
|
||||
e.preventDefault();
|
||||
this.loading = true;
|
||||
const body = this.submitData();
|
||||
_forum_app__WEBPACK_IMPORTED_MODULE_1__["default"].request({
|
||||
url: _forum_app__WEBPACK_IMPORTED_MODULE_1__["default"].forum.attribute('baseUrl') + '/register',
|
||||
method: 'POST',
|
||||
body,
|
||||
errorHandler: this.onerror.bind(this)
|
||||
}).then(() => window.location.reload(), this.loaded.bind(this));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the data that should be submitted in the sign-up request.
|
||||
*/
|
||||
submitData() {
|
||||
const authData = this.attrs.token ? {
|
||||
token: this.attrs.token
|
||||
} : {
|
||||
password: this.password()
|
||||
};
|
||||
const data = {
|
||||
username: this.username(),
|
||||
email: this.email(),
|
||||
...authData
|
||||
};
|
||||
return data;
|
||||
}
|
||||
}
|
||||
flarum.reg.add('core', 'forum/components/SignUpModal', SignUpModal);flarum.reg.addChunkModule('forum/components/LogInModal', './src/forum/components/LogInModal.tsx', 'core', 'forum/components/LogInModal');
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./src/forum/components/LogInButtons.js":
|
||||
/*!**********************************************!*\
|
||||
!*** ./src/forum/components/LogInButtons.js ***!
|
||||
\**********************************************/
|
||||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||||
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
||||
/* harmony export */ "default": () => (/* binding */ LogInButtons)
|
||||
/* harmony export */ });
|
||||
/* harmony import */ var _common_Component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../common/Component */ "./src/common/Component.ts");
|
||||
/* harmony import */ var _common_utils_ItemList__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../common/utils/ItemList */ "./src/common/utils/ItemList.ts");
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* The `LogInButtons` component displays a collection of social login buttons.
|
||||
*/
|
||||
class LogInButtons extends _common_Component__WEBPACK_IMPORTED_MODULE_0__["default"] {
|
||||
view() {
|
||||
return m("div", {
|
||||
className: "LogInButtons"
|
||||
}, this.items().toArray());
|
||||
}
|
||||
|
||||
/**
|
||||
* Build a list of LogInButton components.
|
||||
*
|
||||
* @return {ItemList<import('mithril').Children>}
|
||||
*/
|
||||
items() {
|
||||
return new _common_utils_ItemList__WEBPACK_IMPORTED_MODULE_1__["default"]();
|
||||
}
|
||||
}
|
||||
flarum.reg.add('core', 'forum/components/LogInButtons', LogInButtons);
|
||||
|
||||
/***/ })
|
||||
|
||||
}]);
|
||||
"use strict";(self.webpackChunkflarum_core=self.webpackChunkflarum_core||[]).push([[395],{8686:(s,t,e)=>{e.r(t),e.d(t,{default:()=>h});var a=e(7905),r=e(6789),o=e(899),i=e(8312),n=e(6403),l=e(1552),d=e(4041),u=e(6458);class h extends o.Z{constructor(){super(...arguments),(0,a.Z)(this,"username",void 0),(0,a.Z)(this,"email",void 0),(0,a.Z)(this,"password",void 0)}oninit(s){super.oninit(s),this.username=(0,u.Z)(this.attrs.username||""),this.email=(0,u.Z)(this.attrs.email||""),this.password=(0,u.Z)(this.attrs.password||"")}className(){return"Modal--small SignUpModal"}title(){return r.Z.translator.trans("core.forum.sign_up.title")}content(){return[m("div",{className:"Modal-body"},this.body()),m("div",{className:"Modal-footer"},this.footer())]}isProvided(s){var t,e;return null!=(t=null==(e=this.attrs.provided)?void 0:e.includes(s))&&t}body(){return[!this.attrs.token&&m(n.Z,null),m("div",{className:"Form Form--centered"},this.fields().toArray())]}fields(){const s=new d.Z,t=(0,l.Z)(r.Z.translator.trans("core.forum.sign_up.username_placeholder")),e=(0,l.Z)(r.Z.translator.trans("core.forum.sign_up.email_placeholder")),a=(0,l.Z)(r.Z.translator.trans("core.forum.sign_up.password_placeholder"));return s.add("username",m("div",{className:"Form-group"},m("input",{className:"FormControl",name:"username",type:"text",placeholder:t,"aria-label":t,bidi:this.username,disabled:this.loading||this.isProvided("username")})),30),s.add("email",m("div",{className:"Form-group"},m("input",{className:"FormControl",name:"email",type:"email",placeholder:e,"aria-label":e,bidi:this.email,disabled:this.loading||this.isProvided("email")})),20),this.attrs.token||s.add("password",m("div",{className:"Form-group"},m("input",{className:"FormControl",name:"password",type:"password",autocomplete:"new-password",placeholder:a,"aria-label":a,bidi:this.password,disabled:this.loading})),10),s.add("submit",m("div",{className:"Form-group"},m(i.Z,{className:"Button Button--primary Button--block",type:"submit",loading:this.loading},r.Z.translator.trans("core.forum.sign_up.submit_button"))),-10),s}footer(){return[m("p",{className:"SignUpModal-logIn"},r.Z.translator.trans("core.forum.sign_up.log_in_text",{a:m("a",{onclick:this.logIn.bind(this)})}))]}logIn(){const s={identification:this.email()||this.username()};r.Z.modal.show((()=>e.e(460).then(e.bind(e,5049))),s)}onready(){this.attrs.username&&!this.attrs.email?this.$("[name=email]").select():this.$("[name=username]").select()}onsubmit(s){s.preventDefault(),this.loading=!0;const t=this.submitData();r.Z.request({url:r.Z.forum.attribute("baseUrl")+"/register",method:"POST",body:t,errorHandler:this.onerror.bind(this)}).then((()=>window.location.reload()),this.loaded.bind(this))}submitData(){const s=this.attrs.token?{token:this.attrs.token}:{password:this.password()};return{username:this.username(),email:this.email(),...s}}}flarum.reg.add("core","forum/components/SignUpModal",h),flarum.reg.addChunkModule("460","5049","core","forum/components/LogInModal")},6403:(s,t,e)=>{e.d(t,{Z:()=>o});var a=e(2190),r=e(4041);class o extends a.Z{view(){return m("div",{className:"LogInButtons"},this.items().toArray())}items(){return new r.Z}}flarum.reg.add("core","forum/components/LogInButtons",o)}}]);
|
||||
//# sourceMappingURL=SignUpModal.js.map
|
2
framework/core/js/dist/forum/components/SignUpModal.js.map
generated
vendored
2
framework/core/js/dist/forum/components/SignUpModal.js.map
generated
vendored
File diff suppressed because one or more lines are too long
561
framework/core/js/dist/forum/components/UserSecurityPage.js
generated
vendored
561
framework/core/js/dist/forum/components/UserSecurityPage.js
generated
vendored
File diff suppressed because one or more lines are too long
2
framework/core/js/dist/forum/components/UserSecurityPage.js.map
generated
vendored
2
framework/core/js/dist/forum/components/UserSecurityPage.js.map
generated
vendored
File diff suppressed because one or more lines are too long
Loading…
x
Reference in New Issue
Block a user