@maka/maka-cli 5.123.0 → 5.123.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +64 -64
- package/bundle/typescript/package.json +120 -120
- package/bundle/typescript/src/README.md +64 -64
- package/bundle/typescript/src/commands/aws/aws.command.js +2 -2
- package/bundle/typescript/src/commands/aws/ci.sub.cmd.js +5 -5
- package/bundle/typescript/src/commands/aws/ckp.sub.cmd.js +12 -12
- package/bundle/typescript/src/commands/aws/csg.sub.cmd.js +3 -3
- package/bundle/typescript/src/commands/aws/di.sub.cmd.js +8 -8
- package/bundle/typescript/src/commands/aws/rkp.sub.cmd.js +5 -5
- package/bundle/typescript/src/commands/aws/sth.sub.cmd.js +3 -3
- package/bundle/typescript/src/commands/aws/ti.sub.cmd.js +5 -5
- package/bundle/typescript/src/commands/build/build.js +16 -16
- package/bundle/typescript/src/commands/build/docker.sub.cmd.js +9 -9
- package/bundle/typescript/src/commands/create.js +36 -36
- package/bundle/typescript/src/commands/debug.js +4 -4
- package/bundle/typescript/src/commands/deploy/deploy.command.js +2 -2
- package/bundle/typescript/src/commands/deploy/galaxy.sub.cmd.js +2 -2
- package/bundle/typescript/src/commands/deploy/github.sub.cmd.js +8 -8
- package/bundle/typescript/src/commands/deploy/ubuntu.sub.cmd.js +2 -2
- package/bundle/typescript/src/commands/env/env.command.js +8 -8
- package/bundle/typescript/src/commands/env/set.sub.cmd.js +11 -11
- package/bundle/typescript/src/commands/game/sideQuest/commands/go.js +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/search.js +9 -9
- package/bundle/typescript/src/commands/game/sideQuest/commands/source.js +7 -7
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js +443 -443
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.js +6 -6
- package/bundle/typescript/src/commands/game/sideQuest/game.js +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.js +206 -206
- package/bundle/typescript/src/commands/game/sideQuest/models/room.js +9 -9
- package/bundle/typescript/src/commands/game/sideQuest/scenes/scene1.json +556 -556
- package/bundle/typescript/src/commands/game/sideQuest/scenes/scene2.json +1447 -1447
- package/bundle/typescript/src/commands/game/sideQuest/utilities/ephemeral.js +14 -14
- package/bundle/typescript/src/commands/game/sideQuest-backlog.sub.cmd.js +2 -2
- package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js +2 -2
- package/bundle/typescript/src/commands/generate.js +2 -2
- package/bundle/typescript/src/commands/lint.js +10 -10
- package/bundle/typescript/src/commands/maka.cmd.js +26 -26
- package/bundle/typescript/src/commands/murder.js +14 -14
- package/bundle/typescript/src/commands/proxy.js +13 -13
- package/bundle/typescript/src/commands/remote/reconfig.sub.cmd.js +6 -6
- package/bundle/typescript/src/commands/run/docker.sub.cmd.js +11 -11
- package/bundle/typescript/src/commands/run/run.command.js +24 -24
- package/bundle/typescript/src/commands/set/global.sub.cmd.js +8 -8
- package/bundle/typescript/src/commands/set/local.sub.cmd.js +2 -2
- package/bundle/typescript/src/commands/set/set.command.js +3 -3
- package/bundle/typescript/src/commands/testCmd/test.command.js +2 -2
- package/bundle/typescript/src/exec.js +0 -0
- package/bundle/typescript/src/generators/api.js +11 -11
- package/bundle/typescript/src/generators/collection.js +6 -6
- package/bundle/typescript/src/generators/hook.js +10 -10
- package/bundle/typescript/src/generators/kits/auth/auth.generator.js +2 -2
- package/bundle/typescript/src/generators/kits/auth/auth0-meteor.auth.gen.js +612 -612
- package/bundle/typescript/src/generators/kits/auth/basic-meteor.auth.gen.js +48 -48
- package/bundle/typescript/src/generators/kits/auth/provider.auth.gen.js +12 -12
- package/bundle/typescript/src/generators/kits/esri/esri.generator.js +3 -3
- package/bundle/typescript/src/generators/kits/esri/map.esri.gen.js +7 -7
- package/bundle/typescript/src/generators/kits/frames/frames.generator.js +16 -16
- package/bundle/typescript/src/generators/kits/mui/auth.mui.gen.js +2 -2
- package/bundle/typescript/src/generators/kits/mui/auth0.mui.gen.js +5 -5
- package/bundle/typescript/src/generators/kits/mui/frame.mui.gen.js +4 -4
- package/bundle/typescript/src/generators/kits/mui/mui.generator.js +22 -22
- package/bundle/typescript/src/generators/services/translation.js +5 -5
- package/bundle/typescript/src/templates/aws/cloudformation/create-ec2-instance.template +14 -14
- package/bundle/typescript/src/templates/meteor/api/api.js +20 -20
- package/bundle/typescript/src/templates/meteor/api/api.js.ts +20 -20
- package/bundle/typescript/src/templates/meteor/api/apollo-gateway.js +50 -50
- package/bundle/typescript/src/templates/meteor/api/apollo-gateway.js.ts +55 -55
- package/bundle/typescript/src/templates/meteor/api/graphql-api.js +63 -63
- package/bundle/typescript/src/templates/meteor/api/graphql-api.js.ts +69 -69
- package/bundle/typescript/src/templates/meteor/api/methods.js +39 -39
- package/bundle/typescript/src/templates/meteor/api/methods.js.ts +40 -40
- package/bundle/typescript/src/templates/meteor/api/register-api.js +3 -3
- package/bundle/typescript/src/templates/meteor/api/register-api.js.ts +3 -3
- package/bundle/typescript/src/templates/meteor/api/resolvers.js +9 -9
- package/bundle/typescript/src/templates/meteor/api/resolvers.js.ts +9 -9
- package/bundle/typescript/src/templates/meteor/api/typeDefs.js +6 -6
- package/bundle/typescript/src/templates/meteor/api/typeDefs.js.ts +6 -6
- package/bundle/typescript/src/templates/meteor/app/client/body.html +3 -3
- package/bundle/typescript/src/templates/meteor/app/client/head.html +12 -12
- package/bundle/typescript/src/templates/meteor/app/client/main.js +15 -15
- package/bundle/typescript/src/templates/meteor/app/client/main.js.jsx +15 -15
- package/bundle/typescript/src/templates/meteor/app/client/main.js.ts +17 -17
- package/bundle/typescript/src/templates/meteor/app/client/main.js.tsx +17 -17
- package/bundle/typescript/src/templates/meteor/app/imports/startup/client/index.js +20 -20
- package/bundle/typescript/src/templates/meteor/app/imports/startup/client/index.js.jsx +107 -107
- package/bundle/typescript/src/templates/meteor/app/imports/startup/client/index.js.ts +20 -20
- package/bundle/typescript/src/templates/meteor/app/imports/startup/client/index.js.tsx +108 -108
- package/bundle/typescript/src/templates/meteor/app/imports/startup/client/routes.js +39 -39
- package/bundle/typescript/src/templates/meteor/app/imports/startup/client/routes.js.jsx +33 -33
- package/bundle/typescript/src/templates/meteor/app/imports/startup/client/routes.js.ts +24 -24
- package/bundle/typescript/src/templates/meteor/app/imports/startup/client/routes.js.tsx +33 -33
- package/bundle/typescript/src/templates/meteor/app/imports/startup/client/templates.js +9 -9
- package/bundle/typescript/src/templates/meteor/app/imports/startup/client/templates.js.jsx +9 -9
- package/bundle/typescript/src/templates/meteor/app/imports/startup/client/templates.js.ts +9 -9
- package/bundle/typescript/src/templates/meteor/app/imports/startup/client/templates.js.tsx +9 -9
- package/bundle/typescript/src/templates/meteor/app/imports/startup/lib/index.js +1 -1
- package/bundle/typescript/src/templates/meteor/app/imports/startup/lib/index.js.jsx +20 -20
- package/bundle/typescript/src/templates/meteor/app/imports/startup/lib/index.js.ts +1 -1
- package/bundle/typescript/src/templates/meteor/app/imports/startup/lib/index.js.tsx +20 -20
- package/bundle/typescript/src/templates/meteor/app/imports/startup/lib/routes.js.jsx +28 -28
- package/bundle/typescript/src/templates/meteor/app/imports/startup/lib/routes.js.tsx +28 -28
- package/bundle/typescript/src/templates/meteor/app/imports/startup/server/index.js +1 -1
- package/bundle/typescript/src/templates/meteor/app/imports/startup/server/index.js.jsx +95 -95
- package/bundle/typescript/src/templates/meteor/app/imports/startup/server/index.js.tsx +98 -98
- package/bundle/typescript/src/templates/meteor/app/imports/ui/test-helpers.js +24 -24
- package/bundle/typescript/src/templates/meteor/app/imports/ui/test-helpers.js.ts +24 -24
- package/bundle/typescript/src/templates/meteor/app/lib/main.js +3 -3
- package/bundle/typescript/src/templates/meteor/app/lib/main.js.jsx +3 -3
- package/bundle/typescript/src/templates/meteor/app/lib/main.js.ts +3 -3
- package/bundle/typescript/src/templates/meteor/app/lib/main.js.tsx +3 -3
- package/bundle/typescript/src/templates/meteor/app/maka.d.ts +533 -533
- package/bundle/typescript/src/templates/meteor/app/meteor.d.ts +181 -181
- package/bundle/typescript/src/templates/meteor/app/public/manifest.json +27 -27
- package/bundle/typescript/src/templates/meteor/app/public/sw.js +30 -30
- package/bundle/typescript/src/templates/meteor/app/public/sw.js.jsx +30 -30
- package/bundle/typescript/src/templates/meteor/app/public/sw.js.ts +30 -30
- package/bundle/typescript/src/templates/meteor/app/public/sw.js.tsx +30 -30
- package/bundle/typescript/src/templates/meteor/app/server/helmet-csp.js +179 -179
- package/bundle/typescript/src/templates/meteor/app/server/helmet-csp.js.jsx +179 -179
- package/bundle/typescript/src/templates/meteor/app/server/helmet-csp.js.ts +179 -179
- package/bundle/typescript/src/templates/meteor/app/server/helmet-csp.js.tsx +179 -179
- package/bundle/typescript/src/templates/meteor/app/server/main.js +13 -13
- package/bundle/typescript/src/templates/meteor/app/server/main.js.jsx +13 -13
- package/bundle/typescript/src/templates/meteor/app/server/main.js.ts +14 -14
- package/bundle/typescript/src/templates/meteor/app/server/main.js.tsx +14 -14
- package/bundle/typescript/src/templates/meteor/app/tsconfig.json +42 -42
- package/bundle/typescript/src/templates/meteor/collection/collection.js +51 -51
- package/bundle/typescript/src/templates/meteor/collection/collection.js.ts +55 -55
- package/bundle/typescript/src/templates/meteor/collection/tests.js +27 -27
- package/bundle/typescript/src/templates/meteor/collection/tests.js.ts +27 -27
- package/bundle/typescript/src/templates/meteor/config/deploy.sh.template +101 -101
- package/bundle/typescript/src/templates/meteor/config/docker-compose.yaml +17 -17
- package/bundle/typescript/src/templates/meteor/config/nginx.conf.template +31 -31
- package/bundle/typescript/src/templates/meteor/config/pm2.config.js +27 -27
- package/bundle/typescript/src/templates/meteor/config/process.env +5 -5
- package/bundle/typescript/src/templates/meteor/config/settings.json +11 -11
- package/bundle/typescript/src/templates/meteor/config/ssh.json +6 -6
- package/bundle/typescript/src/templates/meteor/dbc/config.js +70 -70
- package/bundle/typescript/src/templates/meteor/dbc/config.js.ts +70 -70
- package/bundle/typescript/src/templates/meteor/dbc/conn.js +37 -37
- package/bundle/typescript/src/templates/meteor/dbc/conn.js.ts +37 -37
- package/bundle/typescript/src/templates/meteor/dbc/register-dbc.js +3 -3
- package/bundle/typescript/src/templates/meteor/dbc/register-dbc.js.ts +3 -3
- package/bundle/typescript/src/templates/meteor/github/workflows/deploy.yaml +150 -150
- package/bundle/typescript/src/templates/meteor/method/method.js +48 -48
- package/bundle/typescript/src/templates/meteor/method/method.js.ts +48 -48
- package/bundle/typescript/src/templates/meteor/package/package.js +37 -37
- package/bundle/typescript/src/templates/meteor/package/package.js.jsx +37 -37
- package/bundle/typescript/src/templates/meteor/package/package.js.ts +36 -36
- package/bundle/typescript/src/templates/meteor/package/package.js.tsx +37 -37
- package/bundle/typescript/src/templates/meteor/package/tests/client/package.js +5 -5
- package/bundle/typescript/src/templates/meteor/package/tests/client/package.js.jsx +5 -5
- package/bundle/typescript/src/templates/meteor/package/tests/client/package.js.ts +5 -5
- package/bundle/typescript/src/templates/meteor/package/tests/client/package.js.tsx +5 -5
- package/bundle/typescript/src/templates/meteor/package/tests/server/package.js +5 -5
- package/bundle/typescript/src/templates/meteor/package/tests/server/package.js.jsx +5 -5
- package/bundle/typescript/src/templates/meteor/package/tests/server/package.js.ts +5 -5
- package/bundle/typescript/src/templates/meteor/package/tests/server/package.js.tsx +5 -5
- package/bundle/typescript/src/templates/meteor/project/.maka/config.json +29 -29
- package/bundle/typescript/src/templates/meteor/project/README.md +33 -33
- package/bundle/typescript/src/templates/meteor/project/build/README +4 -4
- package/bundle/typescript/src/templates/meteor/project/gitignore +10 -10
- package/bundle/typescript/src/templates/meteor/project/package.json +29 -29
- package/bundle/typescript/src/templates/meteor/publish/publish.js +7 -7
- package/bundle/typescript/src/templates/meteor/publish/publish.js.ts +7 -7
- package/bundle/typescript/src/templates/meteor/service/logger/logger.js +27 -27
- package/bundle/typescript/src/templates/meteor/service/logger/logger.js.ts +27 -27
- package/bundle/typescript/src/templates/meteor/stylesheet/stylesheet.css +5 -5
- package/bundle/typescript/src/templates/meteor/stylesheet/stylesheet.css.less +5 -5
- package/bundle/typescript/src/templates/meteor/template/template-tests.js +1 -1
- package/bundle/typescript/src/templates/meteor/template/template-tests.js.jsx +55 -55
- package/bundle/typescript/src/templates/meteor/template/template-tests.js.ts +1 -1
- package/bundle/typescript/src/templates/meteor/template/template-tests.js.tsx +55 -55
- package/bundle/typescript/src/templates/meteor/template/template.css +3 -3
- package/bundle/typescript/src/templates/meteor/template/template.css.less +3 -3
- package/bundle/typescript/src/templates/meteor/template/template.css.scss +3 -3
- package/bundle/typescript/src/templates/meteor/template/template.html +5 -5
- package/bundle/typescript/src/templates/meteor/template/template.js +20 -20
- package/bundle/typescript/src/templates/meteor/template/template.js.jsx +77 -77
- package/bundle/typescript/src/templates/meteor/template/template.js.ts +1 -1
- package/bundle/typescript/src/templates/meteor/template/template.js.tsx +89 -89
- package/bundle/typescript/src/templates/react/component/component.css +6 -6
- package/bundle/typescript/src/templates/react/component/component.css.less +6 -6
- package/bundle/typescript/src/templates/react/component/component.css.scss +3 -3
- package/bundle/typescript/src/templates/react/component/component.js.jsx +59 -59
- package/bundle/typescript/src/templates/react/component/component.js.tsx +65 -65
- package/bundle/typescript/src/templates/react/hook/hook.css +3 -3
- package/bundle/typescript/src/templates/react/hook/hook.css.scss +3 -3
- package/bundle/typescript/src/templates/react/hook/hook.js.jsx +19 -19
- package/bundle/typescript/src/templates/react/hook/hook.js.tsx +19 -19
- package/bundle/typescript/src/templates/react/kit/auth/provider/authentication-provider.js.jsx +306 -306
- package/bundle/typescript/src/templates/react/kit/auth/provider/authentication-provider.js.tsx +350 -350
- package/bundle/typescript/src/templates/react/kit/auth/service/auth0-client.js.jsx +178 -178
- package/bundle/typescript/src/templates/react/kit/auth/service/auth0-client.js.tsx +178 -178
- package/bundle/typescript/src/templates/react/kit/auth/service/auth0-config.js.jsx +59 -59
- package/bundle/typescript/src/templates/react/kit/auth/service/auth0-config.js.tsx +67 -67
- package/bundle/typescript/src/templates/react/kit/auth/service/auth0-methods.js.jsx +273 -273
- package/bundle/typescript/src/templates/react/kit/auth/service/auth0-methods.js.tsx +275 -275
- package/bundle/typescript/src/templates/react/kit/auth/service/auth0-validator.js.jsx +182 -182
- package/bundle/typescript/src/templates/react/kit/auth/service/auth0-validator.js.tsx +199 -199
- package/bundle/typescript/src/templates/react/kit/auth/service/meteor-auth-service.js.jsx +138 -138
- package/bundle/typescript/src/templates/react/kit/auth/service/meteor-auth-service.js.tsx +153 -153
- package/bundle/typescript/src/templates/react/kit/esri/map/basic-map.js.jsx +29 -29
- package/bundle/typescript/src/templates/react/kit/esri/map/basic-map.js.tsx +32 -32
- package/bundle/typescript/src/templates/react/kit/frames/frames-demo.css +63 -63
- package/bundle/typescript/src/templates/react/kit/frames/frames-demo.jsx +153 -153
- package/bundle/typescript/src/templates/react/kit/frames/frames-demo.tsx +164 -164
- package/bundle/typescript/src/templates/react/kit/frames/workspace-manager.css +105 -105
- package/bundle/typescript/src/templates/react/kit/frames/workspace-manager.jsx +158 -158
- package/bundle/typescript/src/templates/react/kit/frames/workspace-manager.tsx +166 -166
- package/bundle/typescript/src/templates/react/kit/mui/auth/forgot-password/basic-forgot-password-page.js.jsx +34 -34
- package/bundle/typescript/src/templates/react/kit/mui/auth/forgot-password/basic-forgot-password-page.js.tsx +33 -33
- package/bundle/typescript/src/templates/react/kit/mui/auth/login/basic-login-page.js.jsx +53 -53
- package/bundle/typescript/src/templates/react/kit/mui/auth/login/basic-login-page.js.tsx +53 -53
- package/bundle/typescript/src/templates/react/kit/mui/auth/logout/basic-logout-page.js.jsx +25 -25
- package/bundle/typescript/src/templates/react/kit/mui/auth/logout/basic-logout-page.js.tsx +25 -25
- package/bundle/typescript/src/templates/react/kit/mui/auth/password-reset/basic-password-reset-page.js.jsx +41 -41
- package/bundle/typescript/src/templates/react/kit/mui/auth/password-reset/basic-password-reset-page.js.tsx +34 -34
- package/bundle/typescript/src/templates/react/kit/mui/auth/register/basic-register-page.js.jsx +33 -33
- package/bundle/typescript/src/templates/react/kit/mui/auth/register/basic-register-page.js.tsx +33 -33
- package/bundle/typescript/src/templates/react/kit/mui/auth0/auth-callback.js.jsx +71 -71
- package/bundle/typescript/src/templates/react/kit/mui/auth0/auth-callback.js.tsx +71 -71
- package/bundle/typescript/src/templates/react/kit/mui/auth0/auth0-account-settings.js.jsx +123 -123
- package/bundle/typescript/src/templates/react/kit/mui/auth0/auth0-account-settings.js.tsx +123 -123
- package/bundle/typescript/src/templates/react/kit/mui/auth0/auth0-login-button.js.jsx +56 -56
- package/bundle/typescript/src/templates/react/kit/mui/auth0/auth0-login-button.js.tsx +74 -74
- package/bundle/typescript/src/templates/react/kit/mui/frame/app-bars/basic-app-bar.js.jsx +43 -43
- package/bundle/typescript/src/templates/react/kit/mui/frame/app-bars/basic-app-bar.js.tsx +43 -43
- package/bundle/typescript/src/templates/react/kit/mui/frame/drawers/basic-drawer.js.jsx +121 -121
- package/bundle/typescript/src/templates/react/kit/mui/frame/drawers/basic-drawer.js.tsx +117 -117
- package/bundle/typescript/src/templates/react/kit/mui/frame/footers/basic-sticky-footer.js.jsx +41 -41
- package/bundle/typescript/src/templates/react/kit/mui/frame/footers/basic-sticky-footer.js.tsx +41 -41
- package/bundle/typescript/src/templates/react/route/route.js +8 -8
- package/bundle/typescript/src/templates/react/route/route.js.jsx +5 -5
- package/bundle/typescript/src/templates/react/route/route.js.ts +8 -8
- package/bundle/typescript/src/templates/react/route/route.js.tsx +5 -5
- package/bundle/typescript/src/templates/react/test/test.js +1 -1
- package/bundle/typescript/src/templates/react/test/test.js.jsx +40 -40
- package/bundle/typescript/src/templates/react/test/test.js.ts +1 -1
- package/bundle/typescript/src/templates/react/test/test.js.tsx +40 -40
- package/bundle/typescript/src/templates/service/docker/Dockerfile +54 -54
- package/bundle/typescript/src/templates/service/eslint/babel.config.js +16 -16
- package/bundle/typescript/src/templates/service/eslint/config.eslint.js +69 -69
- package/bundle/typescript/src/templates/service/i18n/i18n.js +33 -33
- package/bundle/typescript/src/templates/service/i18n/i18n.js.ts +33 -33
- package/bundle/typescript/src/templates/service/i18n/locales.js +3 -3
- package/bundle/typescript/src/templates/service/i18n/locales.js.ts +3 -3
- package/bundle/typescript/src/templates/service/openssl/openssl.conf +22 -22
- package/bundle/typescript/src/templates/service/test/jest/jest.config.js +24 -24
- package/bundle/typescript/src/templates/service/test/jest/jest.setup.js +7 -7
- package/bundle/typescript/src/tools/mpi/sdk-runtime.d.ts +1 -0
- package/bundle/typescript/src/tools/mpi/sdk-runtime.js +29 -0
- package/bundle/typescript/src/tools/mpi/sdk-runtime.js.map +1 -1
- package/package.json +120 -120
|
@@ -1,166 +1,166 @@
|
|
|
1
|
-
import './<%= fileName %>.css';
|
|
2
|
-
import * as React from 'react';
|
|
3
|
-
import { Component } from 'react';
|
|
4
|
-
import PropTypes from 'prop-types';
|
|
5
|
-
import { WorkspaceManager, WorkspaceStore } from 'meteor/maka:maka-frames';
|
|
6
|
-
|
|
7
|
-
interface <%= className %>Props {
|
|
8
|
-
currentWorkspaceId: string;
|
|
9
|
-
allWorkspaces: any[];
|
|
10
|
-
user?: any;
|
|
11
|
-
onWorkspaceSwitch?: (workspaceId: string) => void;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* <%= className %> Component
|
|
16
|
-
*
|
|
17
|
-
* UI component for managing workspaces in the maka-frames package.
|
|
18
|
-
* Provides controls for creating, switching, renaming, and deleting workspaces.
|
|
19
|
-
*/
|
|
20
|
-
class <%= className %>Component extends Component<<%= className %>Props> {
|
|
21
|
-
static propTypes = {
|
|
22
|
-
currentWorkspaceId: PropTypes.string.isRequired,
|
|
23
|
-
allWorkspaces: PropTypes.array.isRequired,
|
|
24
|
-
user: PropTypes.object,
|
|
25
|
-
onWorkspaceSwitch: PropTypes.func
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
handleCreateWorkspace = () => {
|
|
29
|
-
const { user, onWorkspaceSwitch } = this.props;
|
|
30
|
-
|
|
31
|
-
const workspaceName = prompt('Enter workspace name:', `Workspace ${new Date().toLocaleTimeString()}`);
|
|
32
|
-
if (!workspaceName) return;
|
|
33
|
-
|
|
34
|
-
const workspaceId = `workspace-${Date.now()}`;
|
|
35
|
-
const workspaceData = {
|
|
36
|
-
id: workspaceId,
|
|
37
|
-
name: workspaceName,
|
|
38
|
-
frames: [],
|
|
39
|
-
createdAt: new Date(),
|
|
40
|
-
updatedAt: new Date()
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
// Use WorkspaceManager for logged-in users, WorkspaceStore for anonymous
|
|
44
|
-
if (user) {
|
|
45
|
-
WorkspaceManager.createWorkspace(workspaceData.id, workspaceData.name)
|
|
46
|
-
.then(() => {
|
|
47
|
-
console.log('Workspace created:', workspaceData.id);
|
|
48
|
-
if (onWorkspaceSwitch) onWorkspaceSwitch(workspaceData.id);
|
|
49
|
-
})
|
|
50
|
-
.catch((error: any) => {
|
|
51
|
-
console.error('Error creating workspace:', error);
|
|
52
|
-
});
|
|
53
|
-
} else {
|
|
54
|
-
WorkspaceStore.setWorkspace(workspaceData);
|
|
55
|
-
if (onWorkspaceSwitch) onWorkspaceSwitch(workspaceData.id);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
handleDeleteWorkspace = (workspaceId: string) => {
|
|
60
|
-
const { user, allWorkspaces, onWorkspaceSwitch } = this.props;
|
|
61
|
-
|
|
62
|
-
const workspace = allWorkspaces.find(ws => ws.id === workspaceId);
|
|
63
|
-
if (!workspace) return;
|
|
64
|
-
|
|
65
|
-
const confirmed = confirm(`Are you sure you want to delete "${workspace.name}"?`);
|
|
66
|
-
if (!confirmed) return;
|
|
67
|
-
|
|
68
|
-
// Use WorkspaceManager for logged-in users, WorkspaceStore for anonymous
|
|
69
|
-
if (user) {
|
|
70
|
-
WorkspaceManager.deleteWorkspace(workspaceId)
|
|
71
|
-
.then(() => {
|
|
72
|
-
console.log('Workspace deleted:', workspaceId);
|
|
73
|
-
// Switch to first available workspace
|
|
74
|
-
const remainingWorkspaces = allWorkspaces.filter(ws => ws.id !== workspaceId);
|
|
75
|
-
if (remainingWorkspaces.length > 0 && onWorkspaceSwitch) {
|
|
76
|
-
onWorkspaceSwitch(remainingWorkspaces[0].id);
|
|
77
|
-
}
|
|
78
|
-
})
|
|
79
|
-
.catch((error: any) => {
|
|
80
|
-
// Handle error (e.g., last workspace can't be deleted)
|
|
81
|
-
alert(error.message || 'Cannot delete workspace');
|
|
82
|
-
console.error('Error deleting workspace:', error);
|
|
83
|
-
});
|
|
84
|
-
} else {
|
|
85
|
-
const success = WorkspaceStore.deleteWorkspace(workspaceId);
|
|
86
|
-
if (success) {
|
|
87
|
-
// Switch to first available workspace
|
|
88
|
-
const remainingWorkspaces = allWorkspaces.filter(ws => ws.id !== workspaceId);
|
|
89
|
-
if (remainingWorkspaces.length > 0 && onWorkspaceSwitch) {
|
|
90
|
-
onWorkspaceSwitch(remainingWorkspaces[0].id);
|
|
91
|
-
}
|
|
92
|
-
} else {
|
|
93
|
-
alert('Cannot delete the last workspace');
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
handleRenameWorkspace = (workspaceId: string) => {
|
|
99
|
-
const { user, allWorkspaces } = this.props;
|
|
100
|
-
|
|
101
|
-
const workspace = allWorkspaces.find(ws => ws.id === workspaceId);
|
|
102
|
-
if (!workspace) return;
|
|
103
|
-
|
|
104
|
-
const newName = prompt('Enter new workspace name:', workspace.name);
|
|
105
|
-
if (!newName || newName === workspace.name) return;
|
|
106
|
-
|
|
107
|
-
// Use WorkspaceManager for logged-in users, WorkspaceStore for anonymous
|
|
108
|
-
if (user) {
|
|
109
|
-
WorkspaceManager.updateWorkspace(workspaceId, { name: newName });
|
|
110
|
-
} else {
|
|
111
|
-
const localWorkspace = WorkspaceStore.getWorkspace(workspaceId);
|
|
112
|
-
if (localWorkspace) {
|
|
113
|
-
localWorkspace.name = newName;
|
|
114
|
-
localWorkspace.updatedAt = new Date();
|
|
115
|
-
WorkspaceStore.setWorkspace(localWorkspace);
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
render() {
|
|
121
|
-
const { currentWorkspaceId, allWorkspaces, onWorkspaceSwitch } = this.props;
|
|
122
|
-
|
|
123
|
-
return (
|
|
124
|
-
<div className="<%= fileName %>">
|
|
125
|
-
<div className="workspace-selector">
|
|
126
|
-
<select
|
|
127
|
-
value={currentWorkspaceId}
|
|
128
|
-
onChange={(e) => onWorkspaceSwitch && onWorkspaceSwitch(e.target.value)}
|
|
129
|
-
className="workspace-select"
|
|
130
|
-
>
|
|
131
|
-
{allWorkspaces.map(ws => (
|
|
132
|
-
<option key={ws.id} value={ws.id}>{ws.name}</option>
|
|
133
|
-
))}
|
|
134
|
-
</select>
|
|
135
|
-
</div>
|
|
136
|
-
|
|
137
|
-
<div className="workspace-actions">
|
|
138
|
-
<button
|
|
139
|
-
onClick={this.handleCreateWorkspace}
|
|
140
|
-
className="workspace-btn workspace-create-btn"
|
|
141
|
-
>
|
|
142
|
-
+ New Workspace
|
|
143
|
-
</button>
|
|
144
|
-
|
|
145
|
-
<button
|
|
146
|
-
onClick={() => this.handleRenameWorkspace(currentWorkspaceId)}
|
|
147
|
-
className="workspace-btn workspace-rename-btn"
|
|
148
|
-
>
|
|
149
|
-
Rename Workspace
|
|
150
|
-
</button>
|
|
151
|
-
|
|
152
|
-
{allWorkspaces.length > 1 && (
|
|
153
|
-
<button
|
|
154
|
-
onClick={() => this.handleDeleteWorkspace(currentWorkspaceId)}
|
|
155
|
-
className="workspace-btn workspace-delete-btn"
|
|
156
|
-
>
|
|
157
|
-
Delete Workspace
|
|
158
|
-
</button>
|
|
159
|
-
)}
|
|
160
|
-
</div>
|
|
161
|
-
</div>
|
|
162
|
-
);
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
export { <%= className %>Component };
|
|
1
|
+
import './<%= fileName %>.css';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { Component } from 'react';
|
|
4
|
+
import PropTypes from 'prop-types';
|
|
5
|
+
import { WorkspaceManager, WorkspaceStore } from 'meteor/maka:maka-frames';
|
|
6
|
+
|
|
7
|
+
interface <%= className %>Props {
|
|
8
|
+
currentWorkspaceId: string;
|
|
9
|
+
allWorkspaces: any[];
|
|
10
|
+
user?: any;
|
|
11
|
+
onWorkspaceSwitch?: (workspaceId: string) => void;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* <%= className %> Component
|
|
16
|
+
*
|
|
17
|
+
* UI component for managing workspaces in the maka-frames package.
|
|
18
|
+
* Provides controls for creating, switching, renaming, and deleting workspaces.
|
|
19
|
+
*/
|
|
20
|
+
class <%= className %>Component extends Component<<%= className %>Props> {
|
|
21
|
+
static propTypes = {
|
|
22
|
+
currentWorkspaceId: PropTypes.string.isRequired,
|
|
23
|
+
allWorkspaces: PropTypes.array.isRequired,
|
|
24
|
+
user: PropTypes.object,
|
|
25
|
+
onWorkspaceSwitch: PropTypes.func
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
handleCreateWorkspace = () => {
|
|
29
|
+
const { user, onWorkspaceSwitch } = this.props;
|
|
30
|
+
|
|
31
|
+
const workspaceName = prompt('Enter workspace name:', `Workspace ${new Date().toLocaleTimeString()}`);
|
|
32
|
+
if (!workspaceName) return;
|
|
33
|
+
|
|
34
|
+
const workspaceId = `workspace-${Date.now()}`;
|
|
35
|
+
const workspaceData = {
|
|
36
|
+
id: workspaceId,
|
|
37
|
+
name: workspaceName,
|
|
38
|
+
frames: [],
|
|
39
|
+
createdAt: new Date(),
|
|
40
|
+
updatedAt: new Date()
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
// Use WorkspaceManager for logged-in users, WorkspaceStore for anonymous
|
|
44
|
+
if (user) {
|
|
45
|
+
WorkspaceManager.createWorkspace(workspaceData.id, workspaceData.name)
|
|
46
|
+
.then(() => {
|
|
47
|
+
console.log('Workspace created:', workspaceData.id);
|
|
48
|
+
if (onWorkspaceSwitch) onWorkspaceSwitch(workspaceData.id);
|
|
49
|
+
})
|
|
50
|
+
.catch((error: any) => {
|
|
51
|
+
console.error('Error creating workspace:', error);
|
|
52
|
+
});
|
|
53
|
+
} else {
|
|
54
|
+
WorkspaceStore.setWorkspace(workspaceData);
|
|
55
|
+
if (onWorkspaceSwitch) onWorkspaceSwitch(workspaceData.id);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
handleDeleteWorkspace = (workspaceId: string) => {
|
|
60
|
+
const { user, allWorkspaces, onWorkspaceSwitch } = this.props;
|
|
61
|
+
|
|
62
|
+
const workspace = allWorkspaces.find(ws => ws.id === workspaceId);
|
|
63
|
+
if (!workspace) return;
|
|
64
|
+
|
|
65
|
+
const confirmed = confirm(`Are you sure you want to delete "${workspace.name}"?`);
|
|
66
|
+
if (!confirmed) return;
|
|
67
|
+
|
|
68
|
+
// Use WorkspaceManager for logged-in users, WorkspaceStore for anonymous
|
|
69
|
+
if (user) {
|
|
70
|
+
WorkspaceManager.deleteWorkspace(workspaceId)
|
|
71
|
+
.then(() => {
|
|
72
|
+
console.log('Workspace deleted:', workspaceId);
|
|
73
|
+
// Switch to first available workspace
|
|
74
|
+
const remainingWorkspaces = allWorkspaces.filter(ws => ws.id !== workspaceId);
|
|
75
|
+
if (remainingWorkspaces.length > 0 && onWorkspaceSwitch) {
|
|
76
|
+
onWorkspaceSwitch(remainingWorkspaces[0].id);
|
|
77
|
+
}
|
|
78
|
+
})
|
|
79
|
+
.catch((error: any) => {
|
|
80
|
+
// Handle error (e.g., last workspace can't be deleted)
|
|
81
|
+
alert(error.message || 'Cannot delete workspace');
|
|
82
|
+
console.error('Error deleting workspace:', error);
|
|
83
|
+
});
|
|
84
|
+
} else {
|
|
85
|
+
const success = WorkspaceStore.deleteWorkspace(workspaceId);
|
|
86
|
+
if (success) {
|
|
87
|
+
// Switch to first available workspace
|
|
88
|
+
const remainingWorkspaces = allWorkspaces.filter(ws => ws.id !== workspaceId);
|
|
89
|
+
if (remainingWorkspaces.length > 0 && onWorkspaceSwitch) {
|
|
90
|
+
onWorkspaceSwitch(remainingWorkspaces[0].id);
|
|
91
|
+
}
|
|
92
|
+
} else {
|
|
93
|
+
alert('Cannot delete the last workspace');
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
handleRenameWorkspace = (workspaceId: string) => {
|
|
99
|
+
const { user, allWorkspaces } = this.props;
|
|
100
|
+
|
|
101
|
+
const workspace = allWorkspaces.find(ws => ws.id === workspaceId);
|
|
102
|
+
if (!workspace) return;
|
|
103
|
+
|
|
104
|
+
const newName = prompt('Enter new workspace name:', workspace.name);
|
|
105
|
+
if (!newName || newName === workspace.name) return;
|
|
106
|
+
|
|
107
|
+
// Use WorkspaceManager for logged-in users, WorkspaceStore for anonymous
|
|
108
|
+
if (user) {
|
|
109
|
+
WorkspaceManager.updateWorkspace(workspaceId, { name: newName });
|
|
110
|
+
} else {
|
|
111
|
+
const localWorkspace = WorkspaceStore.getWorkspace(workspaceId);
|
|
112
|
+
if (localWorkspace) {
|
|
113
|
+
localWorkspace.name = newName;
|
|
114
|
+
localWorkspace.updatedAt = new Date();
|
|
115
|
+
WorkspaceStore.setWorkspace(localWorkspace);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
render() {
|
|
121
|
+
const { currentWorkspaceId, allWorkspaces, onWorkspaceSwitch } = this.props;
|
|
122
|
+
|
|
123
|
+
return (
|
|
124
|
+
<div className="<%= fileName %>">
|
|
125
|
+
<div className="workspace-selector">
|
|
126
|
+
<select
|
|
127
|
+
value={currentWorkspaceId}
|
|
128
|
+
onChange={(e) => onWorkspaceSwitch && onWorkspaceSwitch(e.target.value)}
|
|
129
|
+
className="workspace-select"
|
|
130
|
+
>
|
|
131
|
+
{allWorkspaces.map(ws => (
|
|
132
|
+
<option key={ws.id} value={ws.id}>{ws.name}</option>
|
|
133
|
+
))}
|
|
134
|
+
</select>
|
|
135
|
+
</div>
|
|
136
|
+
|
|
137
|
+
<div className="workspace-actions">
|
|
138
|
+
<button
|
|
139
|
+
onClick={this.handleCreateWorkspace}
|
|
140
|
+
className="workspace-btn workspace-create-btn"
|
|
141
|
+
>
|
|
142
|
+
+ New Workspace
|
|
143
|
+
</button>
|
|
144
|
+
|
|
145
|
+
<button
|
|
146
|
+
onClick={() => this.handleRenameWorkspace(currentWorkspaceId)}
|
|
147
|
+
className="workspace-btn workspace-rename-btn"
|
|
148
|
+
>
|
|
149
|
+
Rename Workspace
|
|
150
|
+
</button>
|
|
151
|
+
|
|
152
|
+
{allWorkspaces.length > 1 && (
|
|
153
|
+
<button
|
|
154
|
+
onClick={() => this.handleDeleteWorkspace(currentWorkspaceId)}
|
|
155
|
+
className="workspace-btn workspace-delete-btn"
|
|
156
|
+
>
|
|
157
|
+
Delete Workspace
|
|
158
|
+
</button>
|
|
159
|
+
)}
|
|
160
|
+
</div>
|
|
161
|
+
</div>
|
|
162
|
+
);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
export { <%= className %>Component };
|
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
import React, { useContext } from 'react';
|
|
2
|
-
import { Container, Paper, Typography, TextField, Button } from '@mui/material';
|
|
3
|
-
import { useNavigate } from 'react-router-dom';
|
|
4
|
-
|
|
5
|
-
export const BasicForgotPasswordPage = () => {
|
|
6
|
-
const { forgotPassword } = useContext(AuthContext);
|
|
7
|
-
const navigate = useNavigate();
|
|
8
|
-
|
|
9
|
-
const handleSubmit = async (event) => {
|
|
10
|
-
event.preventDefault();
|
|
11
|
-
const { email } = event.target;
|
|
12
|
-
await forgotPassword(email.value);
|
|
13
|
-
navigate('/');
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
return (
|
|
17
|
-
<Container component="main" maxWidth="xs">
|
|
18
|
-
<Paper elevation={3} style={{ marginTop: '8vh', padding: '20px' }}>
|
|
19
|
-
<Typography component="h1" variant="h5">Forgot Password</Typography>
|
|
20
|
-
<form onSubmit={handleSubmit}>
|
|
21
|
-
{/* Form Field */}
|
|
22
|
-
<TextField id="email" type="email" label="Email*" fullWidth autoFocus margin="normal" />
|
|
23
|
-
<Button type="submit" fullWidth variant="contained" color="primary" style={{ margin: '20px 0' }}>
|
|
24
|
-
Send Password Reset Email
|
|
25
|
-
</Button>
|
|
26
|
-
<Button onClick={() => navigate('/login')} fullWidth>
|
|
27
|
-
Back to Login
|
|
28
|
-
</Button>
|
|
29
|
-
</form>
|
|
30
|
-
</Paper>
|
|
31
|
-
</Container>
|
|
32
|
-
);
|
|
33
|
-
};
|
|
34
|
-
|
|
1
|
+
import React, { useContext } from 'react';
|
|
2
|
+
import { Container, Paper, Typography, TextField, Button } from '@mui/material';
|
|
3
|
+
import { useNavigate } from 'react-router-dom';
|
|
4
|
+
|
|
5
|
+
export const BasicForgotPasswordPage = () => {
|
|
6
|
+
const { forgotPassword } = useContext(AuthContext);
|
|
7
|
+
const navigate = useNavigate();
|
|
8
|
+
|
|
9
|
+
const handleSubmit = async (event) => {
|
|
10
|
+
event.preventDefault();
|
|
11
|
+
const { email } = event.target;
|
|
12
|
+
await forgotPassword(email.value);
|
|
13
|
+
navigate('/');
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
return (
|
|
17
|
+
<Container component="main" maxWidth="xs">
|
|
18
|
+
<Paper elevation={3} style={{ marginTop: '8vh', padding: '20px' }}>
|
|
19
|
+
<Typography component="h1" variant="h5">Forgot Password</Typography>
|
|
20
|
+
<form onSubmit={handleSubmit}>
|
|
21
|
+
{/* Form Field */}
|
|
22
|
+
<TextField id="email" type="email" label="Email*" fullWidth autoFocus margin="normal" />
|
|
23
|
+
<Button type="submit" fullWidth variant="contained" color="primary" style={{ margin: '20px 0' }}>
|
|
24
|
+
Send Password Reset Email
|
|
25
|
+
</Button>
|
|
26
|
+
<Button onClick={() => navigate('/login')} fullWidth>
|
|
27
|
+
Back to Login
|
|
28
|
+
</Button>
|
|
29
|
+
</form>
|
|
30
|
+
</Paper>
|
|
31
|
+
</Container>
|
|
32
|
+
);
|
|
33
|
+
};
|
|
34
|
+
|
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
import React, { useContext } from 'react';
|
|
2
|
-
import { Container, Paper, Typography, TextField, Button } from '@mui/material';
|
|
3
|
-
import { useNavigate } from 'react-router-dom';
|
|
4
|
-
|
|
5
|
-
export const BasicForgotPasswordPage = () => {
|
|
6
|
-
const { forgotPassword } = useContext(AuthContext);
|
|
7
|
-
const navigate = useNavigate();
|
|
8
|
-
|
|
9
|
-
const handleSubmit = async (event) => {
|
|
10
|
-
event.preventDefault();
|
|
11
|
-
const { email } = event.target;
|
|
12
|
-
await forgotPassword(email.value);
|
|
13
|
-
navigate('/');
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
return (
|
|
17
|
-
<Container component="main" maxWidth="xs">
|
|
18
|
-
<Paper elevation={3} style={{ marginTop: '8vh', padding: '20px' }}>
|
|
19
|
-
<Typography component="h1" variant="h5">Forgot Password</Typography>
|
|
20
|
-
<form onSubmit={handleSubmit}>
|
|
21
|
-
{/* Form Field */}
|
|
22
|
-
<TextField id="email" type="email" label="Email*" fullWidth autoFocus margin="normal" />
|
|
23
|
-
<Button type="submit" fullWidth variant="contained" color="primary" style={{ margin: '20px 0' }}>
|
|
24
|
-
Send Password Reset Email
|
|
25
|
-
</Button>
|
|
26
|
-
<Button onClick={() => navigate('/login')} fullWidth>
|
|
27
|
-
Back to Login
|
|
28
|
-
</Button>
|
|
29
|
-
</form>
|
|
30
|
-
</Paper>
|
|
31
|
-
</Container>
|
|
32
|
-
);
|
|
33
|
-
};
|
|
1
|
+
import React, { useContext } from 'react';
|
|
2
|
+
import { Container, Paper, Typography, TextField, Button } from '@mui/material';
|
|
3
|
+
import { useNavigate } from 'react-router-dom';
|
|
4
|
+
|
|
5
|
+
export const BasicForgotPasswordPage = () => {
|
|
6
|
+
const { forgotPassword } = useContext(AuthContext);
|
|
7
|
+
const navigate = useNavigate();
|
|
8
|
+
|
|
9
|
+
const handleSubmit = async (event) => {
|
|
10
|
+
event.preventDefault();
|
|
11
|
+
const { email } = event.target;
|
|
12
|
+
await forgotPassword(email.value);
|
|
13
|
+
navigate('/');
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
return (
|
|
17
|
+
<Container component="main" maxWidth="xs">
|
|
18
|
+
<Paper elevation={3} style={{ marginTop: '8vh', padding: '20px' }}>
|
|
19
|
+
<Typography component="h1" variant="h5">Forgot Password</Typography>
|
|
20
|
+
<form onSubmit={handleSubmit}>
|
|
21
|
+
{/* Form Field */}
|
|
22
|
+
<TextField id="email" type="email" label="Email*" fullWidth autoFocus margin="normal" />
|
|
23
|
+
<Button type="submit" fullWidth variant="contained" color="primary" style={{ margin: '20px 0' }}>
|
|
24
|
+
Send Password Reset Email
|
|
25
|
+
</Button>
|
|
26
|
+
<Button onClick={() => navigate('/login')} fullWidth>
|
|
27
|
+
Back to Login
|
|
28
|
+
</Button>
|
|
29
|
+
</form>
|
|
30
|
+
</Paper>
|
|
31
|
+
</Container>
|
|
32
|
+
);
|
|
33
|
+
};
|
|
@@ -1,53 +1,53 @@
|
|
|
1
|
-
import React, { useContext, useEffect } from 'react';
|
|
2
|
-
import { Container, Paper, Typography, TextField, Button, Grid, Link } from '@mui/material';
|
|
3
|
-
import { useNavigate } from 'react-router-dom';<% if (isSsr) { %>
|
|
4
|
-
import { AuthContext } from '/imports/startup/lib/authentication-provider';<% } else { %>
|
|
5
|
-
import { AuthContext } from '/imports/startup/client/authentication-provider';<% } %>
|
|
6
|
-
|
|
7
|
-
export const BasicLoginPage = () => {
|
|
8
|
-
const { currentUser, login } = useContext(AuthContext);
|
|
9
|
-
const navigate = useNavigate();
|
|
10
|
-
useEffect(() => {
|
|
11
|
-
if (currentUser) {
|
|
12
|
-
navigate('/logout');
|
|
13
|
-
}
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
const handleLogin = async (event) => {
|
|
17
|
-
event.preventDefault();
|
|
18
|
-
const { email, password } = event.target;
|
|
19
|
-
const user = await login({ username: email.value, password: password.value });
|
|
20
|
-
|
|
21
|
-
if (user) {
|
|
22
|
-
navigate('/');
|
|
23
|
-
}
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
return (
|
|
27
|
-
<Container component="main" maxWidth="xs">
|
|
28
|
-
<Paper elevation={3} style={{ marginTop: '8vh', padding: '20px' }}>
|
|
29
|
-
<Typography component="h1" variant="h5">Sign in</Typography>
|
|
30
|
-
<form onSubmit={handleLogin}>
|
|
31
|
-
{/* Form Fields */}
|
|
32
|
-
<TextField id="email" type="email" label="Email Address*" fullWidth autoFocus margin="normal" />
|
|
33
|
-
<TextField id="password" label="Password*" type="password" fullWidth margin="normal" />
|
|
34
|
-
<Button type="submit" fullWidth variant="contained" color="primary" style={{ margin: '20px 0' }}>
|
|
35
|
-
Sign In
|
|
36
|
-
</Button>
|
|
37
|
-
<Grid container>
|
|
38
|
-
<Grid item xs>
|
|
39
|
-
<Link href="#" onClick={() => navigate('/forgot-password')} variant="body2">
|
|
40
|
-
Forgot password?
|
|
41
|
-
</Link>
|
|
42
|
-
</Grid>
|
|
43
|
-
<Grid item>
|
|
44
|
-
<Link href="#" onClick={() => navigate('/register')} variant="body2">
|
|
45
|
-
Don't have an account? Sign Up
|
|
46
|
-
</Link>
|
|
47
|
-
</Grid>
|
|
48
|
-
</Grid>
|
|
49
|
-
</form>
|
|
50
|
-
</Paper>
|
|
51
|
-
</Container>
|
|
52
|
-
);
|
|
53
|
-
};
|
|
1
|
+
import React, { useContext, useEffect } from 'react';
|
|
2
|
+
import { Container, Paper, Typography, TextField, Button, Grid, Link } from '@mui/material';
|
|
3
|
+
import { useNavigate } from 'react-router-dom';<% if (isSsr) { %>
|
|
4
|
+
import { AuthContext } from '/imports/startup/lib/authentication-provider';<% } else { %>
|
|
5
|
+
import { AuthContext } from '/imports/startup/client/authentication-provider';<% } %>
|
|
6
|
+
|
|
7
|
+
export const BasicLoginPage = () => {
|
|
8
|
+
const { currentUser, login } = useContext(AuthContext);
|
|
9
|
+
const navigate = useNavigate();
|
|
10
|
+
useEffect(() => {
|
|
11
|
+
if (currentUser) {
|
|
12
|
+
navigate('/logout');
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
const handleLogin = async (event) => {
|
|
17
|
+
event.preventDefault();
|
|
18
|
+
const { email, password } = event.target;
|
|
19
|
+
const user = await login({ username: email.value, password: password.value });
|
|
20
|
+
|
|
21
|
+
if (user) {
|
|
22
|
+
navigate('/');
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
return (
|
|
27
|
+
<Container component="main" maxWidth="xs">
|
|
28
|
+
<Paper elevation={3} style={{ marginTop: '8vh', padding: '20px' }}>
|
|
29
|
+
<Typography component="h1" variant="h5">Sign in</Typography>
|
|
30
|
+
<form onSubmit={handleLogin}>
|
|
31
|
+
{/* Form Fields */}
|
|
32
|
+
<TextField id="email" type="email" label="Email Address*" fullWidth autoFocus margin="normal" />
|
|
33
|
+
<TextField id="password" label="Password*" type="password" fullWidth margin="normal" />
|
|
34
|
+
<Button type="submit" fullWidth variant="contained" color="primary" style={{ margin: '20px 0' }}>
|
|
35
|
+
Sign In
|
|
36
|
+
</Button>
|
|
37
|
+
<Grid container>
|
|
38
|
+
<Grid item xs>
|
|
39
|
+
<Link href="#" onClick={() => navigate('/forgot-password')} variant="body2">
|
|
40
|
+
Forgot password?
|
|
41
|
+
</Link>
|
|
42
|
+
</Grid>
|
|
43
|
+
<Grid item>
|
|
44
|
+
<Link href="#" onClick={() => navigate('/register')} variant="body2">
|
|
45
|
+
Don't have an account? Sign Up
|
|
46
|
+
</Link>
|
|
47
|
+
</Grid>
|
|
48
|
+
</Grid>
|
|
49
|
+
</form>
|
|
50
|
+
</Paper>
|
|
51
|
+
</Container>
|
|
52
|
+
);
|
|
53
|
+
};
|