@linagora/twake-mui 15.2.0 → 16.0.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/CHANGELOG.md +32 -0
- package/dist/components/ContactPopover/ContactPopover.stories.d.ts +1 -0
- package/dist/components/ContactPopover/ContactPopover.stories.js +25 -30
- package/dist/components/ContactPopover/ContactPopoverCalendarAction.js +5 -2
- package/dist/components/ContactPopover/ContactPopoverChatAction.js +5 -2
- package/dist/components/ContactPopover/ContactPopoverVideoAction.js +5 -2
- package/dist/components/Dialog/Dialog.stories.d.ts +1 -1
- package/dist/components/Dialog/Dialog.stories.js +1 -1
- package/dist/components/Dialog/index.d.ts +1 -1
- package/dist/components/Dialog/index.js +1 -1
- package/dist/components/Dialogs/ConfirmDialog.d.ts +8 -0
- package/dist/components/Dialogs/ConfirmDialog.js +16 -0
- package/dist/components/Dialogs/DialogBackButton.d.ts +8 -0
- package/dist/components/Dialogs/DialogBackButton.js +14 -0
- package/dist/components/Dialogs/DialogCloseButton.d.ts +8 -0
- package/dist/components/Dialogs/DialogCloseButton.js +14 -0
- package/dist/components/Dialogs/DialogFluidContent.d.ts +12 -0
- package/dist/components/Dialogs/DialogFluidContent.js +11 -0
- package/dist/components/Dialogs/DialogNavButtons.d.ts +9 -0
- package/dist/components/Dialogs/DialogNavButtons.js +14 -0
- package/dist/components/Dialogs/Dialogs.stories.d.ts +33 -0
- package/dist/components/Dialogs/Dialogs.stories.js +177 -0
- package/dist/components/Dialogs/FixedActionsDialog.d.ts +8 -0
- package/dist/components/Dialogs/FixedActionsDialog.js +20 -0
- package/dist/components/Dialogs/FixedDialog.d.ts +8 -0
- package/dist/components/Dialogs/FixedDialog.js +20 -0
- package/dist/components/Dialogs/IllustrationDialog.d.ts +8 -0
- package/dist/components/Dialogs/IllustrationDialog.js +21 -0
- package/dist/components/Dialogs/InstallFlagshipAppDialog.d.ts +13 -0
- package/dist/components/Dialogs/InstallFlagshipAppDialog.js +26 -0
- package/dist/components/Dialogs/PermissionDialog.d.ts +11 -0
- package/dist/components/Dialogs/PermissionDialog.js +15 -0
- package/dist/components/Dialogs/PermissionDialogIcon.d.ts +3 -0
- package/dist/components/Dialogs/PermissionDialogIcon.js +8 -0
- package/dist/components/Dialogs/ShortcutDialog.d.ts +15 -0
- package/dist/components/Dialogs/ShortcutDialog.js +41 -0
- package/dist/components/Dialogs/SlideUpTransition.d.ts +5 -0
- package/dist/components/Dialogs/SlideUpTransition.js +6 -0
- package/dist/components/Dialogs/SpecificDialogs.stories.d.ts +7 -0
- package/dist/components/Dialogs/SpecificDialogs.stories.js +43 -0
- package/dist/components/Dialogs/StandardDialog.d.ts +11 -0
- package/dist/components/Dialogs/StandardDialog.js +21 -0
- package/dist/components/Dialogs/images/appStore.png +0 -0
- package/dist/components/Dialogs/images/installFlagshipAppQrCode.png +0 -0
- package/dist/components/Dialogs/images/playStore.png +0 -0
- package/dist/components/Dialogs/locales/de.json +25 -0
- package/dist/components/Dialogs/locales/en.json +25 -0
- package/dist/components/Dialogs/locales/es.json +25 -0
- package/dist/components/Dialogs/locales/fr.json +25 -0
- package/dist/components/Dialogs/locales/index.d.ts +177 -0
- package/dist/components/Dialogs/locales/index.js +8 -0
- package/dist/components/Dialogs/locales/it.json +25 -0
- package/dist/components/Dialogs/locales/ru.json +25 -0
- package/dist/components/Dialogs/locales/vi.json +25 -0
- package/dist/components/Dialogs/shortcutHelpers.d.ts +19 -0
- package/dist/components/Dialogs/shortcutHelpers.js +49 -0
- package/dist/components/Dialogs/types.d.ts +7 -0
- package/dist/components/Dialogs/types.js +1 -0
- package/dist/components/Dialogs/useDialogLayout.d.ts +40 -0
- package/dist/components/Dialogs/useDialogLayout.js +63 -0
- package/dist/index.d.ts +24 -1
- package/dist/index.js +12 -1
- package/dist/lib/overrides.js +71 -6
- package/package.json +2 -2
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { DialogContent, DialogTitle } from '@mui/material';
|
|
2
|
+
import cx from 'classnames';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import DialogFluidContent from './DialogFluidContent';
|
|
5
|
+
import DialogNavButtons from './DialogNavButtons';
|
|
6
|
+
import { useDialogLayout } from './useDialogLayout';
|
|
7
|
+
import Dialog from '../Dialog';
|
|
8
|
+
/** Dialog whose title is an illustration, centered above a short content */
|
|
9
|
+
const IllustrationDialog = ({ title, content, actions, actionsLayout, ...props }) => {
|
|
10
|
+
const { id, fullScreen, dialogProps, dialogTitleProps, dialogActionsProps, dialogContentProps } = useDialogLayout({
|
|
11
|
+
...props,
|
|
12
|
+
isFluidTitle: true,
|
|
13
|
+
disableTitleAutoPadding: true
|
|
14
|
+
});
|
|
15
|
+
return (React.createElement(Dialog, { ...dialogProps },
|
|
16
|
+
React.createElement(DialogNavButtons, { id: id, fullScreen: fullScreen, onClose: props.onClose, onBack: props.onBack }),
|
|
17
|
+
React.createElement(DialogContent, { ...dialogContentProps },
|
|
18
|
+
React.createElement(DialogFluidContent, { className: "u-pt-1-half", header: title && (React.createElement("div", { className: "dialogTitleFluidContainer" },
|
|
19
|
+
React.createElement(DialogTitle, { ...dialogTitleProps, className: cx('u-flex u-flex-justify-center', dialogTitleProps.className) }, title))), content: content, actions: actions, actionsLayout: actionsLayout, dialogActionsProps: dialogActionsProps }))));
|
|
20
|
+
};
|
|
21
|
+
export default IllustrationDialog;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface InstallFlagshipAppDialogProps {
|
|
3
|
+
onClose?: () => void;
|
|
4
|
+
/** Play Store link of the description */
|
|
5
|
+
playStoreUrl?: string;
|
|
6
|
+
/** App Store link of the description */
|
|
7
|
+
appStoreUrl?: string;
|
|
8
|
+
/** Image of a QR code leading to the download page of the app */
|
|
9
|
+
QRCode?: string;
|
|
10
|
+
}
|
|
11
|
+
/** Invites to install the mobile app, through a QR code or the stores */
|
|
12
|
+
declare const InstallFlagshipAppDialog: ({ onClose, playStoreUrl, appStoreUrl, QRCode }: InstallFlagshipAppDialogProps) => React.ReactElement;
|
|
13
|
+
export default InstallFlagshipAppDialog;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Link, Typography } from '@mui/material';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { useExtendI18n, useI18n } from 'twake-i18n';
|
|
4
|
+
import IllustrationDialog from './IllustrationDialog';
|
|
5
|
+
import appStoreIcon from './images/appStore.png';
|
|
6
|
+
import defaultQrCode from './images/installFlagshipAppQrCode.png';
|
|
7
|
+
import playStoreIcon from './images/playStore.png';
|
|
8
|
+
import { locales } from './locales';
|
|
9
|
+
/** Invites to install the mobile app, through a QR code or the stores */
|
|
10
|
+
const InstallFlagshipAppDialog = ({ onClose, playStoreUrl = 'https://play.google.com/store/apps/details?id=io.cozy.flagship.mobile', appStoreUrl = 'https://apps.apple.com/app/my-cozy/id1600636174', QRCode = defaultQrCode }) => {
|
|
11
|
+
useExtendI18n(locales);
|
|
12
|
+
const { t } = useI18n();
|
|
13
|
+
return (React.createElement(IllustrationDialog, { open: true, size: "small", onClose: onClose, componentsProps: { dialogTitle: { className: 'u-pt-2-half' } }, title: React.createElement(Link, { href: "https://cozy.io/download", target: "_blank", rel: "noopener noreferrer" },
|
|
14
|
+
React.createElement("img", { src: QRCode, width: "100%", alt: "", "aria-hidden": true }),
|
|
15
|
+
React.createElement("span", { className: "u-visuallyhidden" }, t('Dialogs.installFlagshipApp.linkLabel'))), content: React.createElement("div", { className: "u-ta-center" },
|
|
16
|
+
React.createElement(Typography, { gutterBottom: true, variant: "h3", color: "text.primary" }, t('Dialogs.installFlagshipApp.title')),
|
|
17
|
+
React.createElement(Typography, { color: "text.secondary", className: "u-ta-center", dangerouslySetInnerHTML: {
|
|
18
|
+
__html: t('Dialogs.installFlagshipApp.text', {
|
|
19
|
+
androidUrl: playStoreUrl,
|
|
20
|
+
androidIconSrc: playStoreIcon,
|
|
21
|
+
iosUrl: appStoreUrl,
|
|
22
|
+
iosIconSrc: appStoreIcon
|
|
23
|
+
})
|
|
24
|
+
} })) }));
|
|
25
|
+
};
|
|
26
|
+
export default InstallFlagshipAppDialog;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Icon } from '@linagora/twake-icons';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { ConfirmDialogProps } from './ConfirmDialog';
|
|
4
|
+
export interface PermissionDialogProps extends Pick<ConfirmDialogProps, 'open' | 'content' | 'actions' | 'actionsLayout' | 'onClose'> {
|
|
5
|
+
/** Describes the action to be taken */
|
|
6
|
+
icon: React.ComponentProps<typeof Icon>['icon'];
|
|
7
|
+
title: string;
|
|
8
|
+
}
|
|
9
|
+
/** Dialog confirming an action on the system, such as a permission or an authentication */
|
|
10
|
+
declare const PermissionDialog: ({ open, icon, title, content, actions, actionsLayout, onClose }: PermissionDialogProps) => React.ReactElement;
|
|
11
|
+
export default PermissionDialog;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Icon } from '@linagora/twake-icons';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import ConfirmDialog from './ConfirmDialog';
|
|
4
|
+
import PermissionDialogIcon from './PermissionDialogIcon';
|
|
5
|
+
/** Dialog confirming an action on the system, such as a permission or an authentication */
|
|
6
|
+
const PermissionDialog = ({ open, icon, title, content, actions, actionsLayout, onClose }) => (React.createElement(ConfirmDialog, { open: open, size: "small", disableTitleAutoPadding: true, classes: { paper: 'u-ov-visible' }, componentsProps: {
|
|
7
|
+
dialogTitle: {
|
|
8
|
+
className: 'u-flex u-flex-justify-center u-ta-center u-pt-2 u-pb-half'
|
|
9
|
+
},
|
|
10
|
+
dialogContent: { className: 'u-ov-visible' }
|
|
11
|
+
}, title: React.createElement(React.Fragment, null,
|
|
12
|
+
React.createElement(PermissionDialogIcon, { elevation: 2, className: "u-pos-absolute u-bdrs-circle u-flex" },
|
|
13
|
+
React.createElement(Icon, { className: "u-m-auto", icon: icon, size: 48 })),
|
|
14
|
+
title), content: content, actions: actions, actionsLayout: actionsLayout, onClose: onClose }));
|
|
15
|
+
export default PermissionDialog;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/** Round paper floating above the top edge of a permission dialog */
|
|
2
|
+
declare const PermissionDialogIcon: import("@emotion/styled").StyledComponent<import("@mui/material").PaperOwnProps & import("@mui/material/OverridableComponent").CommonProps & Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "style" | "square" | "className" | "elevation" | "children" | "classes" | "sx" | "variant"> & import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, {}, {}>;
|
|
3
|
+
export default PermissionDialogIcon;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Paper, styled } from '@mui/material';
|
|
2
|
+
/** Round paper floating above the top edge of a permission dialog */
|
|
3
|
+
const PermissionDialogIcon = styled(Paper)({
|
|
4
|
+
top: '-2.25rem',
|
|
5
|
+
width: '4.5rem',
|
|
6
|
+
height: '4.5rem'
|
|
7
|
+
});
|
|
8
|
+
export default PermissionDialogIcon;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { SaveShortcut } from './shortcutHelpers';
|
|
3
|
+
export interface ShortcutDialogProps {
|
|
4
|
+
/** Shortcut to edit, which prefills the fields */
|
|
5
|
+
shortcut?: {
|
|
6
|
+
name?: string;
|
|
7
|
+
url?: string;
|
|
8
|
+
};
|
|
9
|
+
/** Called with the file name and the URL of the shortcut */
|
|
10
|
+
onSave: SaveShortcut;
|
|
11
|
+
onClose: () => void;
|
|
12
|
+
}
|
|
13
|
+
/** Creates or edits a shortcut to a URL. Must be rendered within an `AlertProvider` */
|
|
14
|
+
declare const ShortcutDialog: ({ shortcut, onSave, onClose }: ShortcutDialogProps) => React.ReactElement;
|
|
15
|
+
export default ShortcutDialog;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Button, Stack, TextField } from '@mui/material';
|
|
2
|
+
import React, { useState } from 'react';
|
|
3
|
+
import { useExtendI18n, useI18n } from 'twake-i18n';
|
|
4
|
+
import ConfirmDialog from './ConfirmDialog';
|
|
5
|
+
import { locales } from './locales';
|
|
6
|
+
import { checkAndSaveShortcut, makeHumanReadableFileName } from './shortcutHelpers';
|
|
7
|
+
import { useAlert } from '../../providers/AlertProvider/useAlert';
|
|
8
|
+
/** Creates or edits a shortcut to a URL. Must be rendered within an `AlertProvider` */
|
|
9
|
+
const ShortcutDialog = ({ shortcut, onSave, onClose }) => {
|
|
10
|
+
useExtendI18n(locales);
|
|
11
|
+
const { t } = useI18n();
|
|
12
|
+
const { showAlert } = useAlert();
|
|
13
|
+
const isEditing = Boolean(shortcut);
|
|
14
|
+
const [fileName, setFileName] = useState(makeHumanReadableFileName(shortcut?.name ?? ''));
|
|
15
|
+
const [url, setUrl] = useState(shortcut?.url ?? '');
|
|
16
|
+
const saveShortcut = () => {
|
|
17
|
+
void checkAndSaveShortcut({
|
|
18
|
+
fileName,
|
|
19
|
+
url,
|
|
20
|
+
isEditing,
|
|
21
|
+
onSave,
|
|
22
|
+
onClose,
|
|
23
|
+
showAlert,
|
|
24
|
+
t
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
const handleKeyDown = (event) => {
|
|
28
|
+
if (event.key === 'Enter')
|
|
29
|
+
saveShortcut();
|
|
30
|
+
};
|
|
31
|
+
return (React.createElement(ConfirmDialog, { open: true, title: t(isEditing
|
|
32
|
+
? 'Dialogs.shortcut.editTitle'
|
|
33
|
+
: 'Dialogs.shortcut.createTitle'), onClose: onClose, content: React.createElement(Stack, { spacing: 2 },
|
|
34
|
+
React.createElement("div", null,
|
|
35
|
+
React.createElement(TextField, { label: t('Dialogs.shortcut.url'), value: url, id: "shortcuturl", onChange: event => setUrl(event.target.value), onKeyDown: handleKeyDown, autoComplete: "off", fullWidth: true, margin: "normal", autoFocus: true })),
|
|
36
|
+
React.createElement("div", null,
|
|
37
|
+
React.createElement(TextField, { label: t('Dialogs.shortcut.filename'), value: fileName, id: "shortcutfilename", onChange: event => setFileName(event.target.value), onKeyDown: handleKeyDown, autoComplete: "off", fullWidth: true, margin: "normal" }))), actions: React.createElement(React.Fragment, null,
|
|
38
|
+
React.createElement(Button, { variant: "outlined", onClick: onClose }, t('Dialogs.shortcut.cancel')),
|
|
39
|
+
React.createElement(Button, { onClick: saveShortcut }, t(isEditing ? 'Dialogs.shortcut.edit' : 'Dialogs.shortcut.create'))) }));
|
|
40
|
+
};
|
|
41
|
+
export default ShortcutDialog;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { SlideProps } from '@mui/material';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
/** Slides a full screen dialog in from the bottom of the screen */
|
|
4
|
+
declare const SlideUpTransition: React.ForwardRefExoticComponent<Omit<SlideProps, "ref"> & React.RefAttributes<unknown>>;
|
|
5
|
+
export default SlideUpTransition;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Slide } from '@mui/material';
|
|
2
|
+
import React, { forwardRef } from 'react';
|
|
3
|
+
/** Slides a full screen dialog in from the bottom of the screen */
|
|
4
|
+
const SlideUpTransition = forwardRef((props, ref) => (React.createElement(Slide, { ref: ref, direction: "up", ...props })));
|
|
5
|
+
SlideUpTransition.displayName = 'SlideUpTransition';
|
|
6
|
+
export default SlideUpTransition;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
+
declare const meta: Meta;
|
|
3
|
+
export default meta;
|
|
4
|
+
type Story = StoryObj<typeof meta>;
|
|
5
|
+
export declare const Default: Story;
|
|
6
|
+
export declare const InstallFlagshipAppScreenshot: Story;
|
|
7
|
+
export declare const ShortcutScreenshot: Story;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Button, Stack } from '@mui/material';
|
|
2
|
+
import React, { useState } from 'react';
|
|
3
|
+
import InstallFlagshipAppDialog from './InstallFlagshipAppDialog';
|
|
4
|
+
import ShortcutDialog from './ShortcutDialog';
|
|
5
|
+
import AlertProvider from '../../providers/AlertProvider';
|
|
6
|
+
const noop = () => undefined;
|
|
7
|
+
const specificDialogs = {
|
|
8
|
+
InstallFlagshipAppDialog,
|
|
9
|
+
ShortcutDialog: ({ onClose }) => (React.createElement(ShortcutDialog, { onClose: onClose, onSave: noop }))
|
|
10
|
+
};
|
|
11
|
+
const Openers = () => {
|
|
12
|
+
const [opened, setOpened] = useState(null);
|
|
13
|
+
const OpenedDialog = opened && specificDialogs[opened];
|
|
14
|
+
return (React.createElement(Stack, { spacing: 1, sx: { alignItems: 'flex-start' } },
|
|
15
|
+
Object.keys(specificDialogs).map(name => (React.createElement(Button, { key: name, onClick: () => setOpened(name) },
|
|
16
|
+
"Open ",
|
|
17
|
+
name))),
|
|
18
|
+
OpenedDialog && React.createElement(OpenedDialog, { onClose: () => setOpened(null) })));
|
|
19
|
+
};
|
|
20
|
+
const meta = {
|
|
21
|
+
title: 'Dialogs/Specific dialogs',
|
|
22
|
+
parameters: { layout: 'centered' },
|
|
23
|
+
tags: ['autodocs'],
|
|
24
|
+
decorators: [
|
|
25
|
+
(Story) => (React.createElement(AlertProvider, null,
|
|
26
|
+
React.createElement(Story, null)))
|
|
27
|
+
]
|
|
28
|
+
};
|
|
29
|
+
export default meta;
|
|
30
|
+
export const Default = {
|
|
31
|
+
render: () => React.createElement(Openers, null)
|
|
32
|
+
};
|
|
33
|
+
// Visual Regression - one story per dialog, since each one covers the screen
|
|
34
|
+
export const InstallFlagshipAppScreenshot = {
|
|
35
|
+
tags: ['argos'],
|
|
36
|
+
parameters: { layout: 'fullscreen' },
|
|
37
|
+
render: () => React.createElement(InstallFlagshipAppDialog, { onClose: noop })
|
|
38
|
+
};
|
|
39
|
+
export const ShortcutScreenshot = {
|
|
40
|
+
tags: ['argos'],
|
|
41
|
+
parameters: { layout: 'fullscreen' },
|
|
42
|
+
render: () => (React.createElement(ShortcutDialog, { shortcut: { name: 'Twake.url', url: 'https://twake.app' }, onClose: noop, onSave: noop }))
|
|
43
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { DialogSectionsProps } from './types';
|
|
3
|
+
import { DialogLayoutProps } from './useDialogLayout';
|
|
4
|
+
export interface StandardDialogProps extends DialogLayoutProps, DialogSectionsProps {
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Dialog laid out with a title, a content and actions. It is labelled by its
|
|
8
|
+
* title and goes full screen on mobile unless its size is `small`.
|
|
9
|
+
*/
|
|
10
|
+
declare const StandardDialog: ({ title, content, actions, actionsLayout, ...props }: StandardDialogProps) => React.ReactElement;
|
|
11
|
+
export default StandardDialog;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { DialogContent, DialogTitle, Divider } from '@mui/material';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import DialogFluidContent from './DialogFluidContent';
|
|
4
|
+
import DialogNavButtons from './DialogNavButtons';
|
|
5
|
+
import { useDialogLayout } from './useDialogLayout';
|
|
6
|
+
import Dialog from '../Dialog';
|
|
7
|
+
/**
|
|
8
|
+
* Dialog laid out with a title, a content and actions. It is labelled by its
|
|
9
|
+
* title and goes full screen on mobile unless its size is `small`.
|
|
10
|
+
*/
|
|
11
|
+
const StandardDialog = ({ title, content, actions, actionsLayout, ...props }) => {
|
|
12
|
+
const { id, fullScreen, dialogProps, dialogTitleProps, dividerProps, dialogActionsProps, dialogContentProps } = useDialogLayout(props);
|
|
13
|
+
return (React.createElement(Dialog, { ...dialogProps },
|
|
14
|
+
React.createElement(DialogNavButtons, { id: id, fullScreen: fullScreen, onClose: props.onClose, onBack: props.onBack }),
|
|
15
|
+
title && (React.createElement(React.Fragment, null,
|
|
16
|
+
React.createElement(DialogTitle, { ...dialogTitleProps }, title),
|
|
17
|
+
React.createElement(Divider, { ...dividerProps }))),
|
|
18
|
+
React.createElement(DialogContent, { ...dialogContentProps },
|
|
19
|
+
React.createElement(DialogFluidContent, { content: content, actions: actions, actionsLayout: actionsLayout, dialogActionsProps: dialogActionsProps }))));
|
|
20
|
+
};
|
|
21
|
+
export default StandardDialog;
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Dialogs": {
|
|
3
|
+
"closeButton": "Schließen",
|
|
4
|
+
"backButton": "Zurück",
|
|
5
|
+
"installFlagshipApp": {
|
|
6
|
+
"title": "Scannen Sie den QR-Code",
|
|
7
|
+
"text": "oder öffnen Sie direkt den <img src=%{iosIconSrc} /> <a href='%{iosUrl}' class='u-link' target='_blank' rel='noopener'>App Store</a><br>oder den <img src=%{androidIconSrc} /> <a href='%{androidUrl}' class='u-link' target='_blank' rel='noopener'>Play Store</a>, um die App Twake Workplace zu installieren",
|
|
8
|
+
"linkLabel": "Zur Downloadseite der Anwendung Twake Workplace"
|
|
9
|
+
},
|
|
10
|
+
"shortcut": {
|
|
11
|
+
"createTitle": "Verknüpfung erstellen",
|
|
12
|
+
"editTitle": "Verknüpfung bearbeiten",
|
|
13
|
+
"filename": "Name der Verknüpfung",
|
|
14
|
+
"url": "URL",
|
|
15
|
+
"cancel": "Abbrechen",
|
|
16
|
+
"create": "Erstellen",
|
|
17
|
+
"edit": "Speichern",
|
|
18
|
+
"created": "Die Verknüpfung wurde erstellt",
|
|
19
|
+
"edited": "Die Verknüpfung wurde geändert",
|
|
20
|
+
"errored": "Ein Fehler ist aufgetreten",
|
|
21
|
+
"needsInfo": "Eine Verknüpfung benötigt einen Namen und eine URL",
|
|
22
|
+
"urlBadFormat": "Die eingegebene URL hat nicht das richtige Format"
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Dialogs": {
|
|
3
|
+
"closeButton": "Close",
|
|
4
|
+
"backButton": "Back",
|
|
5
|
+
"installFlagshipApp": {
|
|
6
|
+
"title": "Scan the QR Code",
|
|
7
|
+
"text": "or go directly to the <img src=%{iosIconSrc} /> <a href='%{iosUrl}' class='u-link' target='_blank' rel='noopener'>App Store</a><br>or <img src=%{androidIconSrc} /> <a href='%{androidUrl}' class='u-link' target='_blank' rel='noopener'>Play Store</a> to install the Twake Workplace app",
|
|
8
|
+
"linkLabel": "Go to the Twake Workplace application download page"
|
|
9
|
+
},
|
|
10
|
+
"shortcut": {
|
|
11
|
+
"createTitle": "Create a shortcut",
|
|
12
|
+
"editTitle": "Modify a shortcut",
|
|
13
|
+
"filename": "Shortcut name",
|
|
14
|
+
"url": "URL",
|
|
15
|
+
"cancel": "Cancel",
|
|
16
|
+
"create": "Create",
|
|
17
|
+
"edit": "Save",
|
|
18
|
+
"created": "The shortcut has been created",
|
|
19
|
+
"edited": "The shortcut has been modified",
|
|
20
|
+
"errored": "An error occurred",
|
|
21
|
+
"needsInfo": "A shortcut needs a name and a URL",
|
|
22
|
+
"urlBadFormat": "The entered URL is not in the correct format"
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Dialogs": {
|
|
3
|
+
"closeButton": "Cerrar",
|
|
4
|
+
"backButton": "Atrás",
|
|
5
|
+
"installFlagshipApp": {
|
|
6
|
+
"title": "Escanee el código QR",
|
|
7
|
+
"text": "o vaya directamente a <img src=%{iosIconSrc} /> <a href='%{iosUrl}' class='u-link' target='_blank' rel='noopener'>App Store</a><br>o a <img src=%{androidIconSrc} /> <a href='%{androidUrl}' class='u-link' target='_blank' rel='noopener'>Play Store</a> para instalar la app Twake Workplace",
|
|
8
|
+
"linkLabel": "Ir a la página de descarga de la aplicación Twake Workplace"
|
|
9
|
+
},
|
|
10
|
+
"shortcut": {
|
|
11
|
+
"createTitle": "Crear un acceso directo",
|
|
12
|
+
"editTitle": "Modificar un acceso directo",
|
|
13
|
+
"filename": "Nombre del acceso directo",
|
|
14
|
+
"url": "URL",
|
|
15
|
+
"cancel": "Cancelar",
|
|
16
|
+
"create": "Crear",
|
|
17
|
+
"edit": "Guardar",
|
|
18
|
+
"created": "Se ha creado el acceso directo",
|
|
19
|
+
"edited": "Se ha modificado el acceso directo",
|
|
20
|
+
"errored": "Se ha producido un error",
|
|
21
|
+
"needsInfo": "Un acceso directo necesita un nombre y una URL",
|
|
22
|
+
"urlBadFormat": "La URL introducida no tiene el formato correcto"
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Dialogs": {
|
|
3
|
+
"closeButton": "Fermer",
|
|
4
|
+
"backButton": "Retour",
|
|
5
|
+
"installFlagshipApp": {
|
|
6
|
+
"title": "Scannez le QR Code",
|
|
7
|
+
"text": "ou rendez vous directement sur <img src=%{iosIconSrc} /> <a href='%{iosUrl}' class='u-link' target='_blank' rel='noopener'>l’App Store</a><br>ou sur le <img src=%{androidIconSrc} /> <a href='%{androidUrl}' class='u-link' target='_blank' rel='noopener'>Play Store</a> pour installer l’app Twake Workplace",
|
|
8
|
+
"linkLabel": "Aller sur la page de téléchargement de l'application Twake Workplace"
|
|
9
|
+
},
|
|
10
|
+
"shortcut": {
|
|
11
|
+
"createTitle": "Créer un raccourci",
|
|
12
|
+
"editTitle": "Modifier un raccourci",
|
|
13
|
+
"filename": "Nom du raccourci",
|
|
14
|
+
"url": "URL",
|
|
15
|
+
"cancel": "Annuler",
|
|
16
|
+
"create": "Créer",
|
|
17
|
+
"edit": "Sauvegarder",
|
|
18
|
+
"created": "Le raccourci a été créé",
|
|
19
|
+
"edited": "Le raccourci a été modifié",
|
|
20
|
+
"errored": "Une erreur s'est produite",
|
|
21
|
+
"needsInfo": "Un raccourci a besoin d'un nom et d'une URL",
|
|
22
|
+
"urlBadFormat": "L'URL saisie n'est pas dans le bon format"
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
export declare const locales: {
|
|
2
|
+
de: {
|
|
3
|
+
Dialogs: {
|
|
4
|
+
closeButton: string;
|
|
5
|
+
backButton: string;
|
|
6
|
+
installFlagshipApp: {
|
|
7
|
+
title: string;
|
|
8
|
+
text: string;
|
|
9
|
+
linkLabel: string;
|
|
10
|
+
};
|
|
11
|
+
shortcut: {
|
|
12
|
+
createTitle: string;
|
|
13
|
+
editTitle: string;
|
|
14
|
+
filename: string;
|
|
15
|
+
url: string;
|
|
16
|
+
cancel: string;
|
|
17
|
+
create: string;
|
|
18
|
+
edit: string;
|
|
19
|
+
created: string;
|
|
20
|
+
edited: string;
|
|
21
|
+
errored: string;
|
|
22
|
+
needsInfo: string;
|
|
23
|
+
urlBadFormat: string;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
en: {
|
|
28
|
+
Dialogs: {
|
|
29
|
+
closeButton: string;
|
|
30
|
+
backButton: string;
|
|
31
|
+
installFlagshipApp: {
|
|
32
|
+
title: string;
|
|
33
|
+
text: string;
|
|
34
|
+
linkLabel: string;
|
|
35
|
+
};
|
|
36
|
+
shortcut: {
|
|
37
|
+
createTitle: string;
|
|
38
|
+
editTitle: string;
|
|
39
|
+
filename: string;
|
|
40
|
+
url: string;
|
|
41
|
+
cancel: string;
|
|
42
|
+
create: string;
|
|
43
|
+
edit: string;
|
|
44
|
+
created: string;
|
|
45
|
+
edited: string;
|
|
46
|
+
errored: string;
|
|
47
|
+
needsInfo: string;
|
|
48
|
+
urlBadFormat: string;
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
es: {
|
|
53
|
+
Dialogs: {
|
|
54
|
+
closeButton: string;
|
|
55
|
+
backButton: string;
|
|
56
|
+
installFlagshipApp: {
|
|
57
|
+
title: string;
|
|
58
|
+
text: string;
|
|
59
|
+
linkLabel: string;
|
|
60
|
+
};
|
|
61
|
+
shortcut: {
|
|
62
|
+
createTitle: string;
|
|
63
|
+
editTitle: string;
|
|
64
|
+
filename: string;
|
|
65
|
+
url: string;
|
|
66
|
+
cancel: string;
|
|
67
|
+
create: string;
|
|
68
|
+
edit: string;
|
|
69
|
+
created: string;
|
|
70
|
+
edited: string;
|
|
71
|
+
errored: string;
|
|
72
|
+
needsInfo: string;
|
|
73
|
+
urlBadFormat: string;
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
fr: {
|
|
78
|
+
Dialogs: {
|
|
79
|
+
closeButton: string;
|
|
80
|
+
backButton: string;
|
|
81
|
+
installFlagshipApp: {
|
|
82
|
+
title: string;
|
|
83
|
+
text: string;
|
|
84
|
+
linkLabel: string;
|
|
85
|
+
};
|
|
86
|
+
shortcut: {
|
|
87
|
+
createTitle: string;
|
|
88
|
+
editTitle: string;
|
|
89
|
+
filename: string;
|
|
90
|
+
url: string;
|
|
91
|
+
cancel: string;
|
|
92
|
+
create: string;
|
|
93
|
+
edit: string;
|
|
94
|
+
created: string;
|
|
95
|
+
edited: string;
|
|
96
|
+
errored: string;
|
|
97
|
+
needsInfo: string;
|
|
98
|
+
urlBadFormat: string;
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
};
|
|
102
|
+
it: {
|
|
103
|
+
Dialogs: {
|
|
104
|
+
closeButton: string;
|
|
105
|
+
backButton: string;
|
|
106
|
+
installFlagshipApp: {
|
|
107
|
+
title: string;
|
|
108
|
+
text: string;
|
|
109
|
+
linkLabel: string;
|
|
110
|
+
};
|
|
111
|
+
shortcut: {
|
|
112
|
+
createTitle: string;
|
|
113
|
+
editTitle: string;
|
|
114
|
+
filename: string;
|
|
115
|
+
url: string;
|
|
116
|
+
cancel: string;
|
|
117
|
+
create: string;
|
|
118
|
+
edit: string;
|
|
119
|
+
created: string;
|
|
120
|
+
edited: string;
|
|
121
|
+
errored: string;
|
|
122
|
+
needsInfo: string;
|
|
123
|
+
urlBadFormat: string;
|
|
124
|
+
};
|
|
125
|
+
};
|
|
126
|
+
};
|
|
127
|
+
ru: {
|
|
128
|
+
Dialogs: {
|
|
129
|
+
closeButton: string;
|
|
130
|
+
backButton: string;
|
|
131
|
+
installFlagshipApp: {
|
|
132
|
+
title: string;
|
|
133
|
+
text: string;
|
|
134
|
+
linkLabel: string;
|
|
135
|
+
};
|
|
136
|
+
shortcut: {
|
|
137
|
+
createTitle: string;
|
|
138
|
+
editTitle: string;
|
|
139
|
+
filename: string;
|
|
140
|
+
url: string;
|
|
141
|
+
cancel: string;
|
|
142
|
+
create: string;
|
|
143
|
+
edit: string;
|
|
144
|
+
created: string;
|
|
145
|
+
edited: string;
|
|
146
|
+
errored: string;
|
|
147
|
+
needsInfo: string;
|
|
148
|
+
urlBadFormat: string;
|
|
149
|
+
};
|
|
150
|
+
};
|
|
151
|
+
};
|
|
152
|
+
vi: {
|
|
153
|
+
Dialogs: {
|
|
154
|
+
closeButton: string;
|
|
155
|
+
backButton: string;
|
|
156
|
+
installFlagshipApp: {
|
|
157
|
+
title: string;
|
|
158
|
+
text: string;
|
|
159
|
+
linkLabel: string;
|
|
160
|
+
};
|
|
161
|
+
shortcut: {
|
|
162
|
+
createTitle: string;
|
|
163
|
+
editTitle: string;
|
|
164
|
+
filename: string;
|
|
165
|
+
url: string;
|
|
166
|
+
cancel: string;
|
|
167
|
+
create: string;
|
|
168
|
+
edit: string;
|
|
169
|
+
created: string;
|
|
170
|
+
edited: string;
|
|
171
|
+
errored: string;
|
|
172
|
+
needsInfo: string;
|
|
173
|
+
urlBadFormat: string;
|
|
174
|
+
};
|
|
175
|
+
};
|
|
176
|
+
};
|
|
177
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Dialogs": {
|
|
3
|
+
"closeButton": "Chiudi",
|
|
4
|
+
"backButton": "Indietro",
|
|
5
|
+
"installFlagshipApp": {
|
|
6
|
+
"title": "Scansiona il codice QR",
|
|
7
|
+
"text": "oppure vai direttamente su <img src=%{iosIconSrc} /> <a href='%{iosUrl}' class='u-link' target='_blank' rel='noopener'>App Store</a><br>o su <img src=%{androidIconSrc} /> <a href='%{androidUrl}' class='u-link' target='_blank' rel='noopener'>Play Store</a> per installare l'app Twake Workplace",
|
|
8
|
+
"linkLabel": "Vai alla pagina di download dell'applicazione Twake Workplace"
|
|
9
|
+
},
|
|
10
|
+
"shortcut": {
|
|
11
|
+
"createTitle": "Crea un collegamento",
|
|
12
|
+
"editTitle": "Modifica un collegamento",
|
|
13
|
+
"filename": "Nome del collegamento",
|
|
14
|
+
"url": "URL",
|
|
15
|
+
"cancel": "Annulla",
|
|
16
|
+
"create": "Crea",
|
|
17
|
+
"edit": "Salva",
|
|
18
|
+
"created": "Il collegamento è stato creato",
|
|
19
|
+
"edited": "Il collegamento è stato modificato",
|
|
20
|
+
"errored": "Si è verificato un errore",
|
|
21
|
+
"needsInfo": "Un collegamento richiede un nome e un URL",
|
|
22
|
+
"urlBadFormat": "L'URL inserito non è nel formato corretto"
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Dialogs": {
|
|
3
|
+
"closeButton": "Закрыть",
|
|
4
|
+
"backButton": "Назад",
|
|
5
|
+
"installFlagshipApp": {
|
|
6
|
+
"title": "Отсканируйте QR-код",
|
|
7
|
+
"text": "или перейдите напрямую в <img src=%{iosIconSrc} /> <a href='%{iosUrl}' class='u-link' target='_blank' rel='noopener'>App Store</a><br>или <img src=%{androidIconSrc} /> <a href='%{androidUrl}' class='u-link' target='_blank' rel='noopener'>Play Store</a> чтобы установить приложение Twake Workplace",
|
|
8
|
+
"linkLabel": "Перейти на страницу загрузки приложения Twake Workplace"
|
|
9
|
+
},
|
|
10
|
+
"shortcut": {
|
|
11
|
+
"createTitle": "Создать ярлык",
|
|
12
|
+
"editTitle": "Изменить ярлык",
|
|
13
|
+
"filename": "Имя ярлыка",
|
|
14
|
+
"url": "URL",
|
|
15
|
+
"cancel": "Отменить",
|
|
16
|
+
"create": "Создать",
|
|
17
|
+
"edit": "Сохранить",
|
|
18
|
+
"created": "Ярлык был создан",
|
|
19
|
+
"edited": "Ярлык был изменен",
|
|
20
|
+
"errored": "Произошла ошибка",
|
|
21
|
+
"needsInfo": "Для ярлыка нужны имя и URL",
|
|
22
|
+
"urlBadFormat": "Введённый URL имеет неверный формат"
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|