mirror of
https://github.com/flarum/core.git
synced 2025-10-23 04:36:08 +02:00
* Update frontend to Mithril 2 - Update Mithril version to v2.0.4 - Add Typescript typings for Mithril - Rename "props" to "attrs"; "initProps" to "initAttrs"; "m.prop" to "m.stream"; "m.withAttr" to "utils/withAttr". - Use Mithril 2's new lifecycle hooks - SubtreeRetainer has been rewritten to be more useful for the new system - Utils for forcing page re-initializations have been added (force attr in links, setRouteWithForcedRefresh util) - Other mechanical changes, following the upgrade guide - Remove some of the custom stuff in our Component base class - Introduce "fragments" for non-components that control their own DOM - Remove Mithril patches, introduce a few new ones (route attrs in <a>; - Redesign AlertManagerState `show` with 3 overloads: `show(children)`, `show(attrs, children)`, `show(componentClass, attrs, children)` - The `affixedSidebar` util has been replaced with an `AffixedSidebar` component Challenges: - `children` and `tag` are now reserved, and can not be used as attr names - Behavior of links to current page changed in Mithril. If moving to a page that is handled by the same component, the page component WILL NOT be re-initialized by default. Additional code to keep track of the current url is needed (See IndexPage, DiscussionPage, and UserPage for examples) - Native Promise rejections are shown on console when not handled - Instances of components can no longer be stored. The state pattern should be used instead. Refs #1821. Co-authored-by: Alexander Skvortsov <sasha.skvortsov109@gmail.com> Co-authored-by: Matthew Kilgore <tankerkiller125@gmail.com> Co-authored-by: Franz Liedke <franz@develophp.org>
152 lines
7.3 KiB
JavaScript
152 lines
7.3 KiB
JavaScript
import compat from '../common/compat';
|
|
|
|
import PostControls from './utils/PostControls';
|
|
import KeyboardNavigatable from './utils/KeyboardNavigatable';
|
|
import slidable from './utils/slidable';
|
|
import History from './utils/History';
|
|
import DiscussionControls from './utils/DiscussionControls';
|
|
import alertEmailConfirmation from './utils/alertEmailConfirmation';
|
|
import UserControls from './utils/UserControls';
|
|
import Pane from './utils/Pane';
|
|
import ComposerState from './states/ComposerState';
|
|
import DiscussionListState from './states/DiscussionListState';
|
|
import GlobalSearchState from './states/GlobalSearchState';
|
|
import NotificationListState from './states/NotificationListState';
|
|
import PostStreamState from './states/PostStreamState';
|
|
import SearchState from './states/SearchState';
|
|
import AffixedSidebar from './components/AffixedSidebar';
|
|
import DiscussionPage from './components/DiscussionPage';
|
|
import LogInModal from './components/LogInModal';
|
|
import ComposerBody from './components/ComposerBody';
|
|
import ForgotPasswordModal from './components/ForgotPasswordModal';
|
|
import Notification from './components/Notification';
|
|
import LogInButton from './components/LogInButton';
|
|
import DiscussionsUserPage from './components/DiscussionsUserPage';
|
|
import Composer from './components/Composer';
|
|
import SessionDropdown from './components/SessionDropdown';
|
|
import HeaderPrimary from './components/HeaderPrimary';
|
|
import PostEdited from './components/PostEdited';
|
|
import PostStream from './components/PostStream';
|
|
import ChangePasswordModal from './components/ChangePasswordModal';
|
|
import IndexPage from './components/IndexPage';
|
|
import DiscussionRenamedNotification from './components/DiscussionRenamedNotification';
|
|
import DiscussionsSearchSource from './components/DiscussionsSearchSource';
|
|
import HeaderSecondary from './components/HeaderSecondary';
|
|
import ComposerButton from './components/ComposerButton';
|
|
import DiscussionList from './components/DiscussionList';
|
|
import ReplyPlaceholder from './components/ReplyPlaceholder';
|
|
import TextEditor from './components/TextEditor';
|
|
import TextEditorButton from './components/TextEditorButton';
|
|
import AvatarEditor from './components/AvatarEditor';
|
|
import Post from './components/Post';
|
|
import SettingsPage from './components/SettingsPage';
|
|
import TerminalPost from './components/TerminalPost';
|
|
import ChangeEmailModal from './components/ChangeEmailModal';
|
|
import NotificationsDropdown from './components/NotificationsDropdown';
|
|
import UserPage from './components/UserPage';
|
|
import PostUser from './components/PostUser';
|
|
import UserCard from './components/UserCard';
|
|
import UsersSearchSource from './components/UsersSearchSource';
|
|
import NotificationGrid from './components/NotificationGrid';
|
|
import PostPreview from './components/PostPreview';
|
|
import EventPost from './components/EventPost';
|
|
import DiscussionHero from './components/DiscussionHero';
|
|
import PostMeta from './components/PostMeta';
|
|
import EditUserModal from './components/EditUserModal';
|
|
import SearchSource from './components/SearchSource';
|
|
import DiscussionRenamedPost from './components/DiscussionRenamedPost';
|
|
import DiscussionComposer from './components/DiscussionComposer';
|
|
import LogInButtons from './components/LogInButtons';
|
|
import NotificationList from './components/NotificationList';
|
|
import WelcomeHero from './components/WelcomeHero';
|
|
import SignUpModal from './components/SignUpModal';
|
|
import CommentPost from './components/CommentPost';
|
|
import ComposerPostPreview from './components/ComposerPostPreview';
|
|
import ReplyComposer from './components/ReplyComposer';
|
|
import NotificationsPage from './components/NotificationsPage';
|
|
import PostStreamScrubber from './components/PostStreamScrubber';
|
|
import EditPostComposer from './components/EditPostComposer';
|
|
import RenameDiscussionModal from './components/RenameDiscussionModal';
|
|
import Search from './components/Search';
|
|
import DiscussionListItem from './components/DiscussionListItem';
|
|
import LoadingPost from './components/LoadingPost';
|
|
import PostsUserPage from './components/PostsUserPage';
|
|
import routes from './routes';
|
|
import ForumApplication from './ForumApplication';
|
|
|
|
export default Object.assign(compat, {
|
|
'utils/PostControls': PostControls,
|
|
'utils/KeyboardNavigatable': KeyboardNavigatable,
|
|
'utils/slidable': slidable,
|
|
'utils/History': History,
|
|
'utils/DiscussionControls': DiscussionControls,
|
|
'utils/alertEmailConfirmation': alertEmailConfirmation,
|
|
'utils/UserControls': UserControls,
|
|
'utils/Pane': Pane,
|
|
'states/ComposerState': ComposerState,
|
|
'states/DiscussionListState': DiscussionListState,
|
|
'states/GlobalSearchState': GlobalSearchState,
|
|
'states/NotificationListState': NotificationListState,
|
|
'states/PostStreamState': PostStreamState,
|
|
'states/SearchState': SearchState,
|
|
'components/AffixedSidebar': AffixedSidebar,
|
|
'components/DiscussionPage': DiscussionPage,
|
|
'components/LogInModal': LogInModal,
|
|
'components/ComposerBody': ComposerBody,
|
|
'components/ForgotPasswordModal': ForgotPasswordModal,
|
|
'components/Notification': Notification,
|
|
'components/LogInButton': LogInButton,
|
|
'components/DiscussionsUserPage': DiscussionsUserPage,
|
|
'components/Composer': Composer,
|
|
'components/SessionDropdown': SessionDropdown,
|
|
'components/HeaderPrimary': HeaderPrimary,
|
|
'components/PostEdited': PostEdited,
|
|
'components/PostStream': PostStream,
|
|
'components/ChangePasswordModal': ChangePasswordModal,
|
|
'components/IndexPage': IndexPage,
|
|
'components/DiscussionRenamedNotification': DiscussionRenamedNotification,
|
|
'components/DiscussionsSearchSource': DiscussionsSearchSource,
|
|
'components/HeaderSecondary': HeaderSecondary,
|
|
'components/ComposerButton': ComposerButton,
|
|
'components/DiscussionList': DiscussionList,
|
|
'components/ReplyPlaceholder': ReplyPlaceholder,
|
|
'components/TextEditor': TextEditor,
|
|
'components/TextEditorButton': TextEditorButton,
|
|
'components/AvatarEditor': AvatarEditor,
|
|
'components/Post': Post,
|
|
'components/SettingsPage': SettingsPage,
|
|
'components/TerminalPost': TerminalPost,
|
|
'components/ChangeEmailModal': ChangeEmailModal,
|
|
'components/NotificationsDropdown': NotificationsDropdown,
|
|
'components/UserPage': UserPage,
|
|
'components/PostUser': PostUser,
|
|
'components/UserCard': UserCard,
|
|
'components/UsersSearchSource': UsersSearchSource,
|
|
'components/NotificationGrid': NotificationGrid,
|
|
'components/PostPreview': PostPreview,
|
|
'components/EventPost': EventPost,
|
|
'components/DiscussionHero': DiscussionHero,
|
|
'components/PostMeta': PostMeta,
|
|
'components/EditUserModal': EditUserModal,
|
|
'components/SearchSource': SearchSource,
|
|
'components/DiscussionRenamedPost': DiscussionRenamedPost,
|
|
'components/DiscussionComposer': DiscussionComposer,
|
|
'components/LogInButtons': LogInButtons,
|
|
'components/NotificationList': NotificationList,
|
|
'components/WelcomeHero': WelcomeHero,
|
|
'components/SignUpModal': SignUpModal,
|
|
'components/CommentPost': CommentPost,
|
|
'components/ComposerPostPreview': ComposerPostPreview,
|
|
'components/ReplyComposer': ReplyComposer,
|
|
'components/NotificationsPage': NotificationsPage,
|
|
'components/PostStreamScrubber': PostStreamScrubber,
|
|
'components/EditPostComposer': EditPostComposer,
|
|
'components/RenameDiscussionModal': RenameDiscussionModal,
|
|
'components/Search': Search,
|
|
'components/DiscussionListItem': DiscussionListItem,
|
|
'components/LoadingPost': LoadingPost,
|
|
'components/PostsUserPage': PostsUserPage,
|
|
routes: routes,
|
|
ForumApplication: ForumApplication,
|
|
});
|