@finsemble/finsemble-ui 7.2.0 → 7.3.0
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/package.json +14 -14
- package/react/assets/css/button.css +34 -6
- package/react/assets/css/contextMenu.css +118 -0
- package/react/assets/css/notificationsCenter.css +3 -214
- package/react/assets/css/userPreferences.css +2 -2
- package/react/components/common/Checkbox.d.ts +3 -2
- package/react/components/common/Checkbox.js +5 -21
- package/react/components/common/Checkbox.js.map +1 -1
- package/react/components/common/ContextMenu.d.ts +13 -0
- package/react/components/common/ContextMenu.js +69 -0
- package/react/components/common/ContextMenu.js.map +1 -0
- package/react/components/common/DropdownButton.d.ts +0 -4
- package/react/components/common/DropdownButton.js +39 -10
- package/react/components/common/DropdownButton.js.map +1 -1
- package/react/components/common/css/FinsembleToggle.css +0 -1
- package/react/components/common/css/application-edit-page.css +3 -4
- package/react/components/common/css/checkbox.css +60 -21
- package/react/components/common/css/icon.css +2 -2
- package/react/components/common/css/toggle.css +4 -1
- package/react/components/common/helpers.js +9 -0
- package/react/components/common/helpers.js.map +1 -1
- package/react/components/common/stories/ContextMenu.stories.d.ts +38 -0
- package/react/components/common/stories/ContextMenu.stories.js +70 -0
- package/react/components/common/stories/ContextMenu.stories.js.map +1 -0
- package/react/components/common/stories/DropdownButton.stories.d.ts +3 -3
- package/react/components/common/stories/DropdownButton.stories.js +11 -10
- package/react/components/common/stories/DropdownButton.stories.js.map +1 -1
- package/react/components/common/tests/Checkbox.spec.js +10 -12
- package/react/components/common/tests/Checkbox.spec.js.map +1 -1
- package/react/components/common/tests/ContextMenu.spec.d.ts +1 -0
- package/react/components/common/tests/ContextMenu.spec.js +108 -0
- package/react/components/common/tests/ContextMenu.spec.js.map +1 -0
- package/react/components/common/tests/DropdownButton.spec.d.ts +1 -0
- package/react/components/common/tests/DropdownButton.spec.js +32 -0
- package/react/components/common/tests/DropdownButton.spec.js.map +1 -0
- package/react/components/fdc3Resolver/ResolverDialog.js +5 -1
- package/react/components/fdc3Resolver/ResolverDialog.js.map +1 -1
- package/react/components/notifications/components/drawer/DrawerHeader.js +3 -3
- package/react/components/notifications/components/drawer/DrawerHeader.js.map +1 -1
- package/react/components/notifications/components/notificationsCenter/NotificationsCenter.js +1 -0
- package/react/components/notifications/components/notificationsCenter/NotificationsCenter.js.map +1 -1
- package/react/components/notifications/components/notificationsToasts/NotificationsToasts.js +2 -0
- package/react/components/notifications/components/notificationsToasts/NotificationsToasts.js.map +1 -1
- package/react/components/notifications/components/shared/IconButton.js +2 -1
- package/react/components/notifications/components/shared/IconButton.js.map +1 -1
- package/react/components/notifications/components/shared/NotificationCardShell.d.ts +2 -0
- package/react/components/notifications/components/shared/NotificationCardShell.js +55 -49
- package/react/components/notifications/components/shared/NotificationCardShell.js.map +1 -1
- package/react/components/notifications/components/shared/notificationCard/NotificationCardBodyShell.js +2 -3
- package/react/components/notifications/components/shared/notificationCard/NotificationCardBodyShell.js.map +1 -1
- package/react/components/notifications/components/shared/notificationCard/NotificationCardHeaderControls.d.ts +4 -0
- package/react/components/notifications/components/shared/notificationCard/NotificationCardHeaderControls.js +92 -13
- package/react/components/notifications/components/shared/notificationCard/NotificationCardHeaderControls.js.map +1 -1
- package/react/components/notifications/components/views/ListView.js +5 -9
- package/react/components/notifications/components/views/ListView.js.map +1 -1
- package/react/components/notifications/css/notification-card.css +165 -0
- package/react/components/notifications/stories/NotificationCardShell.stories.d.ts +14 -0
- package/react/components/notifications/stories/NotificationCardShell.stories.js +108 -0
- package/react/components/notifications/stories/NotificationCardShell.stories.js.map +1 -0
- package/react/components/notifications/tests/NotificationCardShell.spec.d.ts +1 -0
- package/react/components/notifications/tests/NotificationCardShell.spec.js +91 -0
- package/react/components/notifications/tests/NotificationCardShell.spec.js.map +1 -0
- package/react/components/notifications/types.d.ts +4 -2
- package/react/components/notifications/types.js.map +1 -1
- package/react/components/sdd/AddApp.d.ts +3 -3
- package/react/components/sdd/AddApp.js +29 -21
- package/react/components/sdd/AddApp.js.map +1 -1
- package/react/components/sdd/AppEditPage.js +1 -8
- package/react/components/sdd/AppEditPage.js.map +1 -1
- package/react/components/sdd/Appearance.css +2 -1
- package/react/components/sdd/Applications.js +7 -7
- package/react/components/sdd/Applications.js.map +1 -1
- package/react/components/sdd/Navigation.js +2 -4
- package/react/components/sdd/Navigation.js.map +1 -1
- package/react/components/sdd/common/views.js +1 -14
- package/react/components/sdd/common/views.js.map +1 -1
- package/react/components/sdd/css/addApp.css +64 -1
- package/react/components/sdd/css/nav.css +50 -29
- package/react/components/sdd/fixtures/views.js +1 -14
- package/react/components/sdd/fixtures/views.js.map +1 -1
- package/react/components/sdd/tests/AddApp.spec.js +2 -2
- package/react/components/sdd/tests/AddApp.spec.js.map +1 -1
- package/react/components/sdd/tests/AppEditPage.spec.js +5 -8
- package/react/components/sdd/tests/AppEditPage.spec.js.map +1 -1
- package/react/components/sdd/tests/Export.spec.js +11 -11
- package/react/components/sdd/tests/Export.spec.js.map +1 -1
- package/react/components/sdd/tests/ExportZip.spec.js +3 -3
- package/react/components/sdd/tests/ExportZip.spec.js.map +1 -1
- package/react/components/sdd/tests/Navigation.spec.js +3 -2
- package/react/components/sdd/tests/Navigation.spec.js.map +1 -1
- package/react/components/sdd/tests/SmartDesktopDesigner.spec.js +1 -2
- package/react/components/sdd/tests/SmartDesktopDesigner.spec.js.map +1 -1
- package/react/components/toolbar/dashbar/Dashbar.js +18 -14
- package/react/components/toolbar/dashbar/Dashbar.js.map +1 -1
- package/react/components/toolbar/workspaceManagementMenu/components/Workspace.d.ts +9 -1
- package/react/components/toolbar/workspaceManagementMenu/components/Workspace.js +35 -1
- package/react/components/toolbar/workspaceManagementMenu/components/Workspace.js.map +1 -1
- package/react/components/toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore.js +1 -1
- package/react/components/toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore.js.map +1 -1
- package/react/components/userPreferences/components/content/Workspaces.d.ts +3 -1
- package/react/components/userPreferences/components/content/Workspaces.js +20 -3
- package/react/components/userPreferences/components/content/Workspaces.js.map +1 -1
- package/react/components/userPreferences/components/workspaces/WorkspaceItem.d.ts +1 -0
- package/react/components/userPreferences/components/workspaces/WorkspaceItem.js +3 -2
- package/react/components/userPreferences/components/workspaces/WorkspaceItem.js.map +1 -1
- package/react/components/userPreferences/tests/NotificationsPreferencesHome.spec.js +12 -9
- package/react/components/userPreferences/tests/NotificationsPreferencesHome.spec.js.map +1 -1
- package/react/components/userPreferences/tests/UserPreferencesBase.spec.js +2 -0
- package/react/components/userPreferences/tests/UserPreferencesBase.spec.js.map +1 -1
- package/react/components/windowTitleBar/WindowTitleBarShell.d.ts +99 -26
- package/react/components/windowTitleBar/WindowTitleBarShell.js +206 -138
- package/react/components/windowTitleBar/WindowTitleBarShell.js.map +1 -1
- package/react/components/windowTitleBar/components/left/LinkerButton.js +30 -21
- package/react/components/windowTitleBar/components/left/LinkerButton.js.map +1 -1
- package/react/hooks/useNotifications.js +8 -7
- package/react/hooks/useNotifications.js.map +1 -1
- package/react/tsconfig.tsbuildinfo +1 -1
- package/react/components/notifications/components/shared/OverflowMenu.d.ts +0 -16
- package/react/components/notifications/components/shared/OverflowMenu.js +0 -114
- package/react/components/notifications/components/shared/OverflowMenu.js.map +0 -1
- package/react/components/sdd/GettingStarted.d.ts +0 -8
- package/react/components/sdd/GettingStarted.js +0 -25
- package/react/components/sdd/GettingStarted.js.map +0 -1
- package/react/components/sdd/stories/GettingStarted.stories.d.ts +0 -11
- package/react/components/sdd/stories/GettingStarted.stories.js +0 -18
- package/react/components/sdd/stories/GettingStarted.stories.js.map +0 -1
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import React, { useEffect, useRef, useState } from "react";
|
|
2
|
+
import { applyMenuKeyboardNavigation } from "../menu/keyboardNavigation";
|
|
3
|
+
// Hooks
|
|
4
|
+
import { useOutsideClickDetector } from "../../hooks/useOutsideClickDetector";
|
|
5
|
+
// Icons
|
|
6
|
+
import IconButton from "../notifications/components/shared/IconButton";
|
|
7
|
+
// CSS
|
|
8
|
+
import "../../assets/css/contextMenu.css";
|
|
9
|
+
export const renderContextMenuAction = (message, menuAction,
|
|
10
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
11
|
+
isMuted) => {
|
|
12
|
+
if (menuAction.display) {
|
|
13
|
+
return (React.createElement("div", { key: `${message === null || message === void 0 ? void 0 : message.id}_${menuAction.name}`, className: "context-menu__action", tabIndex: 0, title: menuAction === null || menuAction === void 0 ? void 0 : menuAction.label, onClick: () => {
|
|
14
|
+
var _a;
|
|
15
|
+
(_a = menuAction === null || menuAction === void 0 ? void 0 : menuAction.action) === null || _a === void 0 ? void 0 : _a.call(menuAction, message);
|
|
16
|
+
}, onKeyDown: (e) => {
|
|
17
|
+
var _a;
|
|
18
|
+
if (e.key === "Enter") {
|
|
19
|
+
e.stopPropagation();
|
|
20
|
+
(_a = menuAction === null || menuAction === void 0 ? void 0 : menuAction.action) === null || _a === void 0 ? void 0 : _a.call(menuAction, message);
|
|
21
|
+
}
|
|
22
|
+
} }, menuAction === null || menuAction === void 0 ? void 0 :
|
|
23
|
+
menuAction.icon,
|
|
24
|
+
React.createElement("span", { className: "btn-label" }, menuAction === null || menuAction === void 0 ? void 0 : menuAction.label)));
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Context menu component for notifications that will provide a set of actions
|
|
29
|
+
* a user can perform on a notification (e.g. dismiss, snooze)
|
|
30
|
+
*/
|
|
31
|
+
const ContextMenu = ({ closeSelf, children }) => {
|
|
32
|
+
const wrapperRef = useRef(null);
|
|
33
|
+
const [className, setClassName] = useState("context-menu__container");
|
|
34
|
+
useOutsideClickDetector(wrapperRef, () => closeSelf(false));
|
|
35
|
+
const moveElementIntoView = () => {
|
|
36
|
+
var _a;
|
|
37
|
+
const bottomViewPort = window.innerHeight + window.scrollY;
|
|
38
|
+
const domRect = (_a = wrapperRef === null || wrapperRef === void 0 ? void 0 : wrapperRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
|
|
39
|
+
const elementBottom = domRect ? domRect.y + domRect.height + window.scrollY : null;
|
|
40
|
+
const elementLeft = domRect ? domRect.x : null;
|
|
41
|
+
if (elementBottom && elementBottom > bottomViewPort) {
|
|
42
|
+
setClassName("context-menu__container flow-up");
|
|
43
|
+
}
|
|
44
|
+
if (elementLeft && elementLeft < 0) {
|
|
45
|
+
setClassName(`${className} flow-right`);
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
useEffect(() => {
|
|
49
|
+
moveElementIntoView();
|
|
50
|
+
}, [className]);
|
|
51
|
+
useEffect(() => {
|
|
52
|
+
window.addEventListener("blur", () => closeSelf(false));
|
|
53
|
+
return () => {
|
|
54
|
+
window.removeEventListener("blur", () => closeSelf(false));
|
|
55
|
+
};
|
|
56
|
+
}, []);
|
|
57
|
+
applyMenuKeyboardNavigation(window, ".context-menu__action");
|
|
58
|
+
return (React.createElement("div", { ref: wrapperRef, className: className }, children));
|
|
59
|
+
};
|
|
60
|
+
const ContextMenuToggle = ({ menuActions, message = null, isMuteFilterApplied = false, }) => {
|
|
61
|
+
const [contextMenuOpen, setContextMenuOpen] = useState(false);
|
|
62
|
+
const toggleContextMenu = () => {
|
|
63
|
+
setContextMenuOpen(!contextMenuOpen);
|
|
64
|
+
};
|
|
65
|
+
const menuActionsElements = Object.values(menuActions).map((value) => renderContextMenuAction(message, value, isMuteFilterApplied));
|
|
66
|
+
return (React.createElement(IconButton, { iconName: "ff-dots-vert", tooltip: "Options", clickHandler: toggleContextMenu }, contextMenuOpen ? React.createElement(ContextMenu, { closeSelf: setContextMenuOpen }, menuActionsElements) : null));
|
|
67
|
+
};
|
|
68
|
+
export default ContextMenuToggle;
|
|
69
|
+
//# sourceMappingURL=ContextMenu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContextMenu.js","sourceRoot":"","sources":["../../../src/components/common/ContextMenu.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { Dispatch, SetStateAction, useEffect, useRef, useState } from \"react\";\nimport { applyMenuKeyboardNavigation } from \"../menu/keyboardNavigation\";\n\n// Hooks\nimport { useOutsideClickDetector } from \"../../hooks/useOutsideClickDetector\";\n\n// Types\nimport { ContextMenuAction } from \"../notifications/types\";\n\n// Icons\nimport IconButton from \"../notifications/components/shared/IconButton\";\n\n// CSS\nimport \"../../assets/css/contextMenu.css\";\n\nexport interface ContextMenuProps {\n\tmenuActions: {\n\t\t[key: string]: ContextMenuAction;\n\t};\n\tmessage: any;\n\tisMuteFilterApplied: boolean;\n}\n\nexport const renderContextMenuAction = (\n\tmessage: any,\n\tmenuAction: ContextMenuAction,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tisMuted: boolean\n) => {\n\tif (menuAction.display) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tkey={`${message?.id}_${menuAction.name}`}\n\t\t\t\tclassName=\"context-menu__action\"\n\t\t\t\ttabIndex={0}\n\t\t\t\ttitle={menuAction?.label}\n\t\t\t\tonClick={() => {\n\t\t\t\t\tmenuAction?.action?.(message);\n\t\t\t\t}}\n\t\t\t\tonKeyDown={(e) => {\n\t\t\t\t\tif (e.key === \"Enter\") {\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\tmenuAction?.action?.(message);\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{menuAction?.icon}\n\t\t\t\t<span className=\"btn-label\">{menuAction?.label}</span>\n\t\t\t</div>\n\t\t);\n\t}\n};\n/**\n * Context menu component for notifications that will provide a set of actions\n * a user can perform on a notification (e.g. dismiss, snooze)\n */\nconst ContextMenu: React.FunctionComponent<{\n\tcloseSelf: Dispatch<SetStateAction<boolean>>;\n}> = ({ closeSelf, children }) => {\n\tconst wrapperRef = useRef<HTMLDivElement>(null);\n\tconst [className, setClassName] = useState(\"context-menu__container\");\n\tuseOutsideClickDetector(wrapperRef, () => closeSelf(false));\n\n\tconst moveElementIntoView = () => {\n\t\tconst bottomViewPort = window.innerHeight + window.scrollY;\n\t\tconst domRect = wrapperRef?.current?.getBoundingClientRect();\n\t\tconst elementBottom = domRect ? domRect.y + domRect.height + window.scrollY : null;\n\t\tconst elementLeft = domRect ? domRect.x : null;\n\n\t\tif (elementBottom && elementBottom > bottomViewPort) {\n\t\t\tsetClassName(\"context-menu__container flow-up\");\n\t\t}\n\n\t\tif (elementLeft && elementLeft < 0) {\n\t\t\tsetClassName(`${className} flow-right`);\n\t\t}\n\t};\n\n\tuseEffect(() => {\n\t\tmoveElementIntoView();\n\t}, [className]);\n\n\tuseEffect(() => {\n\t\twindow.addEventListener(\"blur\", () => closeSelf(false));\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener(\"blur\", () => closeSelf(false));\n\t\t};\n\t}, []);\n\n\tapplyMenuKeyboardNavigation(window, \".context-menu__action\");\n\treturn (\n\t\t<div ref={wrapperRef} className={className}>\n\t\t\t{children}\n\t\t</div>\n\t);\n};\n\nconst ContextMenuToggle: React.FunctionComponent<ContextMenuProps> = ({\n\tmenuActions,\n\tmessage = null,\n\tisMuteFilterApplied = false,\n}) => {\n\tconst [contextMenuOpen, setContextMenuOpen] = useState(false);\n\tconst toggleContextMenu = () => {\n\t\tsetContextMenuOpen(!contextMenuOpen);\n\t};\n\tconst menuActionsElements = Object.values(menuActions).map((value) =>\n\t\trenderContextMenuAction(message, value, isMuteFilterApplied)\n\t);\n\n\treturn (\n\t\t<IconButton iconName=\"ff-dots-vert\" tooltip=\"Options\" clickHandler={toggleContextMenu}>\n\t\t\t{contextMenuOpen ? <ContextMenu closeSelf={setContextMenuOpen}>{menuActionsElements}</ContextMenu> : null}\n\t\t</IconButton>\n\t);\n};\n\nexport default ContextMenuToggle;\n"]}
|
|
@@ -6,9 +6,5 @@ export interface IFinsembleDropdownActionButtonProps {
|
|
|
6
6
|
buttonOptions: Array<IFinsembleButtonProps>;
|
|
7
7
|
mainAction: Function;
|
|
8
8
|
}
|
|
9
|
-
/**
|
|
10
|
-
* @TODO: Consolidate this and DefaultDropDownButton and change all usages to use DefaultDropDownButton.
|
|
11
|
-
* @deprecated Use DefaultDropDownButton instead.
|
|
12
|
-
*/
|
|
13
9
|
declare const DropdownButton: React.FunctionComponent<IFinsembleDropdownActionButtonProps>;
|
|
14
10
|
export default DropdownButton;
|
|
@@ -1,18 +1,34 @@
|
|
|
1
|
-
import React, { useState, useRef } from "react";
|
|
1
|
+
import React, { useState, useRef, useEffect } from "react";
|
|
2
2
|
import "../../assets/css/button.css";
|
|
3
3
|
import { useOutsideClickDetector } from "../../hooks/useOutsideClickDetector";
|
|
4
|
-
/**
|
|
5
|
-
* @TODO: Consolidate this and DefaultDropDownButton and change all usages to use DefaultDropDownButton.
|
|
6
|
-
* @deprecated Use DefaultDropDownButton instead.
|
|
7
|
-
*/
|
|
8
4
|
const DropdownButton = ({ buttonLabel = "Label", buttonOptions = [], mainAction, }) => {
|
|
9
5
|
const wrapperRef = useRef(null);
|
|
10
6
|
const [expanded, setExpanded] = useState(false);
|
|
7
|
+
const [className, setClassName] = useState("");
|
|
8
|
+
const moveElementIntoView = () => {
|
|
9
|
+
var _a, _b;
|
|
10
|
+
const bottomViewPort = window.innerHeight + window.scrollY;
|
|
11
|
+
const domRect = (_b = (_a = wrapperRef === null || wrapperRef === void 0 ? void 0 : wrapperRef.current) === null || _a === void 0 ? void 0 : _a.querySelector(".finsemble-dropdown-action__btn-options")) === null || _b === void 0 ? void 0 : _b.getBoundingClientRect();
|
|
12
|
+
const elementBottom = domRect ? domRect.y + domRect.height + window.scrollY : null;
|
|
13
|
+
if (elementBottom && elementBottom > bottomViewPort) {
|
|
14
|
+
setClassName("flow-up");
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
if (expanded) {
|
|
19
|
+
moveElementIntoView();
|
|
20
|
+
}
|
|
21
|
+
}, [expanded]);
|
|
11
22
|
useOutsideClickDetector(wrapperRef, () => setExpanded(false));
|
|
12
|
-
const options = buttonOptions.map((option, index) => (React.createElement("div", { key: index, className: "finsemble-dropdown-action__btn-option", onClick: () => {
|
|
23
|
+
const options = buttonOptions.map((option, index) => (React.createElement("div", Object.assign({ key: index, className: "finsemble-dropdown-action__btn-option", role: "button", tabIndex: 0, onClick: () => {
|
|
13
24
|
option.clickHandler();
|
|
14
25
|
setExpanded(false);
|
|
15
|
-
}
|
|
26
|
+
}, onKeyDown: (e) => {
|
|
27
|
+
if (e.key === "Enter") {
|
|
28
|
+
option.clickHandler();
|
|
29
|
+
setExpanded(false);
|
|
30
|
+
}
|
|
31
|
+
} }, (option.buttonLabel ? { "aria-label": option.buttonLabel } : "")), option.buttonLabel)));
|
|
16
32
|
const buttonAction = () => {
|
|
17
33
|
if (expanded) {
|
|
18
34
|
setExpanded(false);
|
|
@@ -27,11 +43,24 @@ const DropdownButton = ({ buttonLabel = "Label", buttonOptions = [], mainAction,
|
|
|
27
43
|
};
|
|
28
44
|
return (React.createElement("div", { ref: wrapperRef, className: "finsemble-dropdown-action__btn-container" },
|
|
29
45
|
React.createElement("div", { className: "finsemble-dropdown-action__btn" },
|
|
30
|
-
React.createElement("span", { className: "btn-label", onClick: buttonAction
|
|
46
|
+
React.createElement("span", Object.assign({ className: "btn-label", role: "button", tabIndex: 0, onClick: buttonAction, onKeyDown: (e) => {
|
|
47
|
+
if (e.key === "Enter") {
|
|
48
|
+
{
|
|
49
|
+
buttonAction;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
} }, (buttonLabel ? { "aria-label": buttonLabel } : "")), buttonLabel),
|
|
31
53
|
React.createElement("span", { className: "separator" }),
|
|
32
|
-
React.createElement("div", { className: "expand-options", onClick: () =>
|
|
54
|
+
React.createElement("div", { className: "expand-options", role: "button", tabIndex: 0, onClick: () => {
|
|
55
|
+
setExpanded(!expanded);
|
|
56
|
+
}, onKeyDown: (e) => {
|
|
57
|
+
if (e.key === "Enter") {
|
|
58
|
+
setExpanded(!expanded);
|
|
59
|
+
moveElementIntoView();
|
|
60
|
+
}
|
|
61
|
+
}, "aria-label": "expand-options" },
|
|
33
62
|
React.createElement("span", { className: "caret" }))),
|
|
34
|
-
expanded ? React.createElement("div", { className:
|
|
63
|
+
expanded ? React.createElement("div", { className: `finsemble-dropdown-action__btn-options ${className}` }, options) : null));
|
|
35
64
|
};
|
|
36
65
|
export default DropdownButton;
|
|
37
66
|
//# sourceMappingURL=DropdownButton.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DropdownButton.js","sourceRoot":"","sources":["../../../src/components/common/DropdownButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"DropdownButton.js","sourceRoot":"","sources":["../../../src/components/common/DropdownButton.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useState, useRef, useEffect } from \"react\";\nimport \"../../assets/css/button.css\";\nimport { useOutsideClickDetector } from \"../../hooks/useOutsideClickDetector\";\nimport { IFinsembleButtonProps } from \"../shared/Button\";\n\nexport interface IFinsembleDropdownActionButtonProps {\n\tbuttonLabel: string;\n\tbuttonOptions: Array<IFinsembleButtonProps>;\n\tmainAction: Function;\n}\n\nconst DropdownButton: React.FunctionComponent<IFinsembleDropdownActionButtonProps> = ({\n\tbuttonLabel = \"Label\",\n\tbuttonOptions = [],\n\tmainAction,\n}: IFinsembleDropdownActionButtonProps) => {\n\tconst wrapperRef = useRef<HTMLDivElement>(null);\n\tconst [expanded, setExpanded] = useState(false);\n\tconst [className, setClassName] = useState(\"\");\n\n\tconst moveElementIntoView = () => {\n\t\tconst bottomViewPort = window.innerHeight + window.scrollY;\n\t\tconst domRect = wrapperRef?.current\n\t\t\t?.querySelector(\".finsemble-dropdown-action__btn-options\")\n\t\t\t?.getBoundingClientRect();\n\t\tconst elementBottom = domRect ? domRect.y + domRect.height + window.scrollY : null;\n\n\t\tif (elementBottom && elementBottom > bottomViewPort) {\n\t\t\tsetClassName(\"flow-up\");\n\t\t}\n\t};\n\n\tuseEffect(() => {\n\t\tif (expanded) {\n\t\t\tmoveElementIntoView();\n\t\t}\n\t}, [expanded]);\n\n\tuseOutsideClickDetector(wrapperRef, () => setExpanded(false));\n\n\tconst options = buttonOptions.map((option, index) => (\n\t\t<div\n\t\t\tkey={index}\n\t\t\tclassName=\"finsemble-dropdown-action__btn-option\"\n\t\t\trole=\"button\"\n\t\t\ttabIndex={0}\n\t\t\tonClick={() => {\n\t\t\t\toption.clickHandler();\n\t\t\t\tsetExpanded(false);\n\t\t\t}}\n\t\t\tonKeyDown={(e) => {\n\t\t\t\tif (e.key === \"Enter\") {\n\t\t\t\t\toption.clickHandler();\n\t\t\t\t\tsetExpanded(false);\n\t\t\t\t}\n\t\t\t}}\n\t\t\t{...(option.buttonLabel ? { \"aria-label\": option.buttonLabel } : \"\")}\n\t\t>\n\t\t\t{option.buttonLabel}\n\t\t</div>\n\t));\n\n\tconst buttonAction = () => {\n\t\tif (expanded) {\n\t\t\tsetExpanded(false);\n\t\t\treturn;\n\t\t}\n\n\t\tif (mainAction) {\n\t\t\tmainAction();\n\t\t} else {\n\t\t\t() => setExpanded(!expanded);\n\t\t}\n\t};\n\n\treturn (\n\t\t<div ref={wrapperRef} className=\"finsemble-dropdown-action__btn-container\">\n\t\t\t<div className=\"finsemble-dropdown-action__btn\">\n\t\t\t\t<span\n\t\t\t\t\tclassName=\"btn-label\"\n\t\t\t\t\trole=\"button\"\n\t\t\t\t\ttabIndex={0}\n\t\t\t\t\tonClick={buttonAction}\n\t\t\t\t\tonKeyDown={(e) => {\n\t\t\t\t\t\tif (e.key === \"Enter\") {\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tbuttonAction;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\t{...(buttonLabel ? { \"aria-label\": buttonLabel } : \"\")}\n\t\t\t\t>\n\t\t\t\t\t{buttonLabel}\n\t\t\t\t</span>\n\t\t\t\t<span className=\"separator\"></span>\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"expand-options\"\n\t\t\t\t\trole=\"button\"\n\t\t\t\t\ttabIndex={0}\n\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\tsetExpanded(!expanded);\n\t\t\t\t\t}}\n\t\t\t\t\tonKeyDown={(e) => {\n\t\t\t\t\t\tif (e.key === \"Enter\") {\n\t\t\t\t\t\t\tsetExpanded(!expanded);\n\t\t\t\t\t\t\tmoveElementIntoView();\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\taria-label=\"expand-options\"\n\t\t\t\t>\n\t\t\t\t\t<span className=\"caret\"></span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t{expanded ? <div className={`finsemble-dropdown-action__btn-options ${className}`}>{options}</div> : null}\n\t\t</div>\n\t);\n};\n\nexport default DropdownButton;\n"]}
|
|
@@ -48,7 +48,6 @@
|
|
|
48
48
|
|
|
49
49
|
.app-edit-fieldset label {
|
|
50
50
|
font-size: 1em;
|
|
51
|
-
overflow: hidden;
|
|
52
51
|
text-overflow: ellipsis;
|
|
53
52
|
user-select: none;
|
|
54
53
|
font-weight: 600;
|
|
@@ -153,7 +152,7 @@ span.unit {
|
|
|
153
152
|
margin-right: 8px;
|
|
154
153
|
}
|
|
155
154
|
|
|
156
|
-
.accordion-edit-block .
|
|
155
|
+
.accordion-edit-block .checkbox-wrapper {
|
|
157
156
|
margin-top: 0;
|
|
158
157
|
}
|
|
159
158
|
|
|
@@ -235,8 +234,8 @@ span.unit {
|
|
|
235
234
|
color: #f5f6f7;
|
|
236
235
|
}
|
|
237
236
|
|
|
238
|
-
.accordion-edit-block .
|
|
239
|
-
.pull-left .
|
|
237
|
+
.accordion-edit-block .checkbox-wrapper,
|
|
238
|
+
.pull-left .checkbox-wrapper {
|
|
240
239
|
margin-left: 0;
|
|
241
240
|
}
|
|
242
241
|
|
|
@@ -1,30 +1,69 @@
|
|
|
1
|
-
.
|
|
2
|
-
display:
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
.checkbox-wrapper label {
|
|
2
|
+
display: grid;
|
|
3
|
+
grid-template-columns: 1em auto;
|
|
4
|
+
gap: 0.5em;
|
|
5
|
+
cursor: pointer;
|
|
6
6
|
}
|
|
7
7
|
|
|
8
|
-
.
|
|
9
|
-
|
|
10
|
-
width: 14px;
|
|
11
|
-
height: 14px;
|
|
12
|
-
margin-right: 8px;
|
|
13
|
-
border: 1px solid var(--core-primary-4);
|
|
14
|
-
display: inline-flex;
|
|
15
|
-
justify-content: center;
|
|
16
|
-
align-items: center;
|
|
8
|
+
.checkbox-wrapper span {
|
|
9
|
+
margin-left: 4px;
|
|
17
10
|
}
|
|
18
11
|
|
|
19
|
-
.
|
|
20
|
-
|
|
12
|
+
.checkbox-wrapper input[type="checkbox"] {
|
|
13
|
+
cursor: pointer;
|
|
14
|
+
|
|
15
|
+
/* Remove native input styles */
|
|
16
|
+
appearance: none;
|
|
17
|
+
margin: 0;
|
|
18
|
+
|
|
19
|
+
/* Mkae it look like a box */
|
|
20
|
+
font: inherit;
|
|
21
|
+
color: var(--font-color);
|
|
22
|
+
width: 16px;
|
|
23
|
+
height: 16px;
|
|
24
|
+
border: 0.12em solid currentcolor;
|
|
25
|
+
border-radius: 5px;
|
|
26
|
+
|
|
27
|
+
/* Bump it down slightly so that the label looks centered */
|
|
28
|
+
transform: translateY(1px);
|
|
29
|
+
|
|
30
|
+
/* Make the checkmark look nice and centered */
|
|
31
|
+
display: grid;
|
|
32
|
+
place-content: center;
|
|
21
33
|
}
|
|
22
34
|
|
|
23
|
-
.
|
|
24
|
-
|
|
25
|
-
|
|
35
|
+
.checkbox-wrapper input[type="checkbox"]::before {
|
|
36
|
+
/* Create checkmark (initially invisible) */
|
|
37
|
+
content: "";
|
|
38
|
+
width: 0.65em;
|
|
39
|
+
height: 0.65em;
|
|
40
|
+
clip-path: polygon(14% 44%, 0 65%, 50% 100%, 100% 16%, 80% 0%, 43% 62%);
|
|
41
|
+
transform: scale(0);
|
|
42
|
+
transform-origin: bottom left;
|
|
43
|
+
transition: 120ms transform ease-in-out;
|
|
44
|
+
box-shadow: inset 1em 1em var(--accent-primary);
|
|
45
|
+
|
|
46
|
+
/* Windows High Contrast Mode */
|
|
47
|
+
background-color: canvastext;
|
|
26
48
|
}
|
|
27
49
|
|
|
28
|
-
.
|
|
29
|
-
color: var(--accent-primary);
|
|
50
|
+
.checkbox-wrapper input[type="checkbox"]:checked {
|
|
51
|
+
border-color: var(--accent-primary);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.checkbox-wrapper input[type="checkbox"]:checked::before {
|
|
55
|
+
/* Set checkmark to visible */
|
|
56
|
+
transform: scale(1);
|
|
57
|
+
background-color: var(--accent-primary);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.checkbox-wrapper input[type="checkbox"]:disabled,
|
|
61
|
+
.checkbox-wrapper input[type="checkbox"]:disabled + span {
|
|
62
|
+
cursor: default;
|
|
63
|
+
opacity: 0.3;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.indent-5px {
|
|
67
|
+
display: flex;
|
|
68
|
+
margin-top: 5px;
|
|
30
69
|
}
|
|
@@ -46,6 +46,8 @@ export const initFSBL = (windowObject) => {
|
|
|
46
46
|
setPreference: () => { },
|
|
47
47
|
getValues: () => { },
|
|
48
48
|
getPreferences: () => { },
|
|
49
|
+
addListener: () => { },
|
|
50
|
+
removeListener: () => { },
|
|
49
51
|
},
|
|
50
52
|
DialogManager: {
|
|
51
53
|
spawnDialog: (obj1) => {
|
|
@@ -72,6 +74,7 @@ export const initFSBL = (windowObject) => {
|
|
|
72
74
|
transmit: () => { },
|
|
73
75
|
addListener: () => { },
|
|
74
76
|
subscribe: () => { },
|
|
77
|
+
removeListener: () => { },
|
|
75
78
|
},
|
|
76
79
|
SearchClient: {
|
|
77
80
|
invokeItemAction: () => { },
|
|
@@ -95,6 +98,12 @@ export const initFSBL = (windowObject) => {
|
|
|
95
98
|
cb(null, null);
|
|
96
99
|
},
|
|
97
100
|
},
|
|
101
|
+
NotificationClient: {
|
|
102
|
+
getPreferences: async () => {
|
|
103
|
+
return { newNotificationHaloPeriodSeconds: 3 };
|
|
104
|
+
},
|
|
105
|
+
performAction: async () => { },
|
|
106
|
+
},
|
|
98
107
|
},
|
|
99
108
|
onShutdown: () => { },
|
|
100
109
|
System: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/components/common/helpers.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/components/common/helpers.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport { FileInputUploadCb } from \"./FileInput\";\nimport { Story } from \"@storybook/react/types-6-0\";\n\nimport { SDServerInfo } from \"../../types/smartDesktopDesignerTypes\";\nimport { Provider } from \"react-redux\";\nimport { createStore } from \"../../store\";\n\nexport const uploadFunction: FileInputUploadCb = (fileObject: File) =>\n\tnew Promise((resolve) => {\n\t\tresolve({\n\t\t\terr: \"\",\n\t\t\tpath: fileObject.name,\n\t\t});\n\t});\n\nexport const initFSBL = (windowObject?: any) => {\n\t// Poor man's global that can take any appendage\n\tconst globalAsAny: any = global;\n\n\tif (!windowObject) {\n\t\twindowObject = globalAsAny.window = {} as any;\n\t} else {\n\t\twindowObject = window;\n\n\t\tsetTimeout(() => {\n\t\t\tconst event = window.document.createEvent(\"Event\");\n\n\t\t\tevent?.initEvent(\"FSBLReady\", true, true);\n\n\t\t\twindow.dispatchEvent(event);\n\t\t});\n\t}\n\n\tglobalAsAny.FSBL = windowObject.FSBL = {\n\t\taddEventListener: (name: String, callback: () => void) => {\n\t\t\tcallback();\n\t\t},\n\t\tgetFSBLInfo: () =>\n\t\t\tnew Promise((resolve) => {\n\t\t\t\tresolve({\n\t\t\t\t\tFSBLVersion: \"1.0.0\",\n\t\t\t\t});\n\t\t\t}),\n\t\tClients: {\n\t\t\tTmpSmartDesktopClient: {\n\t\t\t\tcheckValidURL(url: string) {\n\t\t\t\t\tif (url.length === 0) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\treturn /^https?:\\/\\/[^\\s]+$/.test(url);\n\t\t\t\t},\n\t\t\t\tcheckValidProjectName(name: string) {\n\t\t\t\t\treturn /^[a-zA-Z0-9 \\-_.]{1,}$/.test(name) && /[a-zA-Z0-9]{1,}/.test(name);\n\t\t\t\t},\n\t\t\t} as unknown,\n\t\t\tConfigClient: {\n\t\t\t\tsetPreference: () => {},\n\t\t\t\tgetValues: () => {},\n\t\t\t\tgetPreferences: () => {},\n\t\t\t\taddListener: () => {},\n\t\t\t\tremoveListener: () => {},\n\t\t\t},\n\t\t\tDialogManager: {\n\t\t\t\tspawnDialog: (obj1: any) => {\n\t\t\t\t\tconsole.table(obj1);\n\t\t\t\t},\n\t\t\t\tregisterDialogCallback: () => {},\n\t\t\t\trespondToOpener: () => {},\n\t\t\t},\n\t\t\tLauncherClient: {\n\t\t\t\tshowWindow: () => {},\n\t\t\t},\n\t\t\tLogger: {\n\t\t\t\tlog: () => {},\n\t\t\t\terror: () => {},\n\t\t\t\tsystem: {\n\t\t\t\t\tdebug: () => {},\n\t\t\t\t\tlog: () => {},\n\t\t\t\t\terror: () => {},\n\t\t\t\t\tverbose: () => {},\n\t\t\t\t\tdeprecated: () => {},\n\t\t\t\t},\n\t\t\t},\n\t\t\tRouterClient: {\n\t\t\t\ttransmit: () => {},\n\t\t\t\taddListener: () => {},\n\t\t\t\tsubscribe: () => {},\n\t\t\t\tremoveListener: () => {},\n\t\t\t},\n\t\t\tSearchClient: {\n\t\t\t\tinvokeItemAction: () => {},\n\t\t\t},\n\t\t\tStorageClient: {\n\t\t\t\tsave: () => {},\n\t\t\t\tclearCache: () => {},\n\t\t\t},\n\t\t\tWindowClient: {\n\t\t\t\tfitToDOM: () => {},\n\t\t\t},\n\t\t\tWorkspaceClient: {\n\t\t\t\taddEventListener: () => {},\n\t\t\t\tbringWindowsToFront: () => {},\n\t\t\t\tautoArrange: () => {},\n\t\t\t\tminimizeAll: () => {},\n\t\t\t\tactiveWorkspace: {\n\t\t\t\t\tname: \" \",\n\t\t\t\t},\n\t\t\t\tgetWorkspaceDefinition: (obj: Object, cb: Function) => {\n\t\t\t\t\tcb(null, null);\n\t\t\t\t},\n\t\t\t},\n\t\t\tNotificationClient: {\n\t\t\t\tgetPreferences: async () => {\n\t\t\t\t\treturn { newNotificationHaloPeriodSeconds: 3 };\n\t\t\t\t},\n\t\t\t\tperformAction: async () => {},\n\t\t\t},\n\t\t},\n\t\tonShutdown: () => {},\n\t\tSystem: {\n\t\t\tgetSDServerInfo: () =>\n\t\t\t\tnew Promise((resolve) => {\n\t\t\t\t\tresolve({} as SDServerInfo);\n\t\t\t\t}),\n\t\t},\n\t\tSystemManagerClient: {\n\t\t\tpublishCheckpointState: () => {},\n\t\t},\n\t} as any;\n\n\tglobalAsAny.FSBL.Clients = {\n\t\t...globalAsAny.FSBL.Clients,\n\t\tWindowClient: {\n\t\t\tfitToDOM: () => {},\n\t\t} as any,\n\t};\n\n\tglobalAsAny.finsembleWindow = windowObject.finsembleWindow = {\n\t\tsetAlwaysOnTop: () => {},\n\t\taddEventListener: () => {},\n\t\tremoveEventListener: () => {},\n\t};\n};\n\nexport function createStory<T>(Component: Function, args: T) {\n\tconst template: Story<T> = (props: T) => {\n\t\tinitFSBL(window);\n\n\t\treturn (\n\t\t\t<Provider store={createStore()}>\n\t\t\t\t<Component {...{ ...args, ...props }} />\n\t\t\t</Provider>\n\t\t);\n\t};\n\n\ttemplate.args = args;\n\n\treturn template;\n}\n"]}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { ContextMenuProps } from "../ContextMenu";
|
|
3
|
+
import "../../../assets/css/finsemble.css";
|
|
4
|
+
import "../css/styles.css";
|
|
5
|
+
import { ContextMenuAction } from "../../notifications/types";
|
|
6
|
+
declare const _default: {
|
|
7
|
+
title: string;
|
|
8
|
+
component: React.FunctionComponent<ContextMenuProps>;
|
|
9
|
+
};
|
|
10
|
+
export default _default;
|
|
11
|
+
export declare const BasicContextMenuToggle: import("@storybook/react").Story<{
|
|
12
|
+
menuActions: {
|
|
13
|
+
[key: string]: ContextMenuAction;
|
|
14
|
+
};
|
|
15
|
+
message: null;
|
|
16
|
+
isMuteFilterApplied: boolean;
|
|
17
|
+
}>;
|
|
18
|
+
export declare const ContextMenuToggleBottom: import("@storybook/react").Story<{
|
|
19
|
+
menuActions: {
|
|
20
|
+
[key: string]: ContextMenuAction;
|
|
21
|
+
};
|
|
22
|
+
message: null;
|
|
23
|
+
isMuteFilterApplied: boolean;
|
|
24
|
+
}>;
|
|
25
|
+
export declare const ContextMenuToggleRight: import("@storybook/react").Story<{
|
|
26
|
+
menuActions: {
|
|
27
|
+
[key: string]: ContextMenuAction;
|
|
28
|
+
};
|
|
29
|
+
message: null;
|
|
30
|
+
isMuteFilterApplied: boolean;
|
|
31
|
+
}>;
|
|
32
|
+
export declare const ContextMenuToggleBottomRight: import("@storybook/react").Story<{
|
|
33
|
+
menuActions: {
|
|
34
|
+
[key: string]: ContextMenuAction;
|
|
35
|
+
};
|
|
36
|
+
message: null;
|
|
37
|
+
isMuteFilterApplied: boolean;
|
|
38
|
+
}>;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import ContextMenuToggle from "../ContextMenu";
|
|
3
|
+
import { createStory } from "../helpers";
|
|
4
|
+
import "../../../assets/css/finsemble.css";
|
|
5
|
+
import "../css/styles.css";
|
|
6
|
+
import SnoozeIcon from "../../notifications/icons/SnoozeIcon";
|
|
7
|
+
import EnvelopeCloseIcon from "../../notifications/icons/EnvelopeClose";
|
|
8
|
+
import EnvelopeOpenIcon from "../../notifications/icons/EnvelopeOpen";
|
|
9
|
+
export default {
|
|
10
|
+
title: "Common/ContextMenu",
|
|
11
|
+
component: ContextMenuToggle,
|
|
12
|
+
};
|
|
13
|
+
const contextMenuActions = {
|
|
14
|
+
MARK_AS_UNREAD: {
|
|
15
|
+
name: "MARK_AS_UNREAD",
|
|
16
|
+
icon: React.createElement(EnvelopeCloseIcon, null),
|
|
17
|
+
label: "Mark Unread",
|
|
18
|
+
action: () => {
|
|
19
|
+
console.log("Marked as unread");
|
|
20
|
+
},
|
|
21
|
+
display: true,
|
|
22
|
+
},
|
|
23
|
+
MARK_AS_READ: {
|
|
24
|
+
name: "MARK_AS_READ",
|
|
25
|
+
icon: React.createElement(EnvelopeOpenIcon, null),
|
|
26
|
+
label: "Mark Read",
|
|
27
|
+
action: () => {
|
|
28
|
+
console.log("Marked as read");
|
|
29
|
+
},
|
|
30
|
+
display: true,
|
|
31
|
+
},
|
|
32
|
+
TEST: {
|
|
33
|
+
name: "TEST",
|
|
34
|
+
icon: React.createElement(SnoozeIcon, null),
|
|
35
|
+
label: "Test",
|
|
36
|
+
action: () => {
|
|
37
|
+
console.log("Hello World");
|
|
38
|
+
},
|
|
39
|
+
display: true,
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
const overFlowActions = Object.assign({}, contextMenuActions);
|
|
43
|
+
export const BasicContextMenuToggle = createStory(ContextMenuToggle, {
|
|
44
|
+
menuActions: overFlowActions,
|
|
45
|
+
message: null,
|
|
46
|
+
isMuteFilterApplied: false,
|
|
47
|
+
});
|
|
48
|
+
BasicContextMenuToggle.decorators = [
|
|
49
|
+
(Story) => (React.createElement("div", { style: { position: "absolute", left: "1%" } },
|
|
50
|
+
React.createElement(Story, null))),
|
|
51
|
+
];
|
|
52
|
+
export const ContextMenuToggleBottom = BasicContextMenuToggle.bind({});
|
|
53
|
+
ContextMenuToggleBottom.args = { menuActions: overFlowActions, message: null, isMuteFilterApplied: false };
|
|
54
|
+
ContextMenuToggleBottom.decorators = [
|
|
55
|
+
(Story) => (React.createElement("div", { style: { position: "absolute", bottom: "10%" } },
|
|
56
|
+
React.createElement(Story, null))),
|
|
57
|
+
];
|
|
58
|
+
export const ContextMenuToggleRight = BasicContextMenuToggle.bind({});
|
|
59
|
+
ContextMenuToggleRight.args = { menuActions: overFlowActions, message: null, isMuteFilterApplied: false };
|
|
60
|
+
ContextMenuToggleRight.decorators = [
|
|
61
|
+
(Story) => (React.createElement("div", { style: { position: "absolute", right: "5%" } },
|
|
62
|
+
React.createElement(Story, null))),
|
|
63
|
+
];
|
|
64
|
+
export const ContextMenuToggleBottomRight = BasicContextMenuToggle.bind({});
|
|
65
|
+
ContextMenuToggleBottomRight.args = { menuActions: overFlowActions, message: null, isMuteFilterApplied: false };
|
|
66
|
+
ContextMenuToggleBottomRight.decorators = [
|
|
67
|
+
(Story) => (React.createElement("div", { style: { position: "absolute", right: "5%", bottom: "10%" } },
|
|
68
|
+
React.createElement(Story, null))),
|
|
69
|
+
];
|
|
70
|
+
//# sourceMappingURL=ContextMenu.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContextMenu.stories.js","sourceRoot":"","sources":["../../../../src/components/common/stories/ContextMenu.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport ContextMenuToggle, { ContextMenuProps } from \"../ContextMenu\";\nimport { createStory } from \"../helpers\";\nimport \"../../../assets/css/finsemble.css\";\nimport \"../css/styles.css\";\nimport SnoozeIcon from \"../../notifications/icons/SnoozeIcon\";\nimport EnvelopeCloseIcon from \"../../notifications/icons/EnvelopeClose\";\nimport EnvelopeOpenIcon from \"../../notifications/icons/EnvelopeOpen\";\nimport { ContextMenuAction } from \"../../notifications/types\";\n\nexport default {\n\ttitle: \"Common/ContextMenu\",\n\tcomponent: ContextMenuToggle,\n};\nconst contextMenuActions: { [key: string]: ContextMenuAction } = {\n\tMARK_AS_UNREAD: {\n\t\tname: \"MARK_AS_UNREAD\",\n\t\ticon: <EnvelopeCloseIcon />,\n\t\tlabel: \"Mark Unread\",\n\t\taction: () => {\n\t\t\tconsole.log(\"Marked as unread\");\n\t\t},\n\t\tdisplay: true,\n\t},\n\tMARK_AS_READ: {\n\t\tname: \"MARK_AS_READ\",\n\t\ticon: <EnvelopeOpenIcon />,\n\t\tlabel: \"Mark Read\",\n\t\taction: () => {\n\t\t\tconsole.log(\"Marked as read\");\n\t\t},\n\t\tdisplay: true,\n\t},\n\tTEST: {\n\t\tname: \"TEST\",\n\t\ticon: <SnoozeIcon />,\n\t\tlabel: \"Test\",\n\t\taction: () => {\n\t\t\tconsole.log(\"Hello World\");\n\t\t},\n\t\tdisplay: true,\n\t},\n};\n\nconst overFlowActions = Object.assign({}, contextMenuActions);\n\nexport const BasicContextMenuToggle = createStory(ContextMenuToggle, {\n\tmenuActions: overFlowActions,\n\tmessage: null,\n\tisMuteFilterApplied: false,\n});\nBasicContextMenuToggle.decorators = [\n\t(Story) => (\n\t\t<div style={{ position: \"absolute\", left: \"1%\" }}>\n\t\t\t<Story />\n\t\t</div>\n\t),\n];\n\nexport const ContextMenuToggleBottom = BasicContextMenuToggle.bind({});\nContextMenuToggleBottom.args = { menuActions: overFlowActions, message: null, isMuteFilterApplied: false };\nContextMenuToggleBottom.decorators = [\n\t(Story) => (\n\t\t<div style={{ position: \"absolute\", bottom: \"10%\" }}>\n\t\t\t<Story />\n\t\t</div>\n\t),\n];\n\nexport const ContextMenuToggleRight = BasicContextMenuToggle.bind({});\nContextMenuToggleRight.args = { menuActions: overFlowActions, message: null, isMuteFilterApplied: false };\nContextMenuToggleRight.decorators = [\n\t(Story) => (\n\t\t<div style={{ position: \"absolute\", right: \"5%\" }}>\n\t\t\t<Story />\n\t\t</div>\n\t),\n];\n\nexport const ContextMenuToggleBottomRight = BasicContextMenuToggle.bind({});\nContextMenuToggleBottomRight.args = { menuActions: overFlowActions, message: null, isMuteFilterApplied: false };\nContextMenuToggleBottomRight.decorators = [\n\t(Story) => (\n\t\t<div style={{ position: \"absolute\", right: \"5%\", bottom: \"10%\" }}>\n\t\t\t<Story />\n\t\t</div>\n\t),\n];\n"]}
|
|
@@ -6,13 +6,13 @@ declare const _default: {
|
|
|
6
6
|
component: React.FunctionComponent<import("../DropdownButton").IFinsembleDropdownActionButtonProps>;
|
|
7
7
|
};
|
|
8
8
|
export default _default;
|
|
9
|
-
export declare const
|
|
9
|
+
export declare const DropdownButtonElement: import("@storybook/react").Story<{
|
|
10
10
|
buttonLabel: string;
|
|
11
11
|
buttonOptions: {
|
|
12
12
|
buttonLabel: string;
|
|
13
13
|
}[];
|
|
14
14
|
}>;
|
|
15
|
-
export declare const
|
|
15
|
+
export declare const DefaultDropdownButtonElement: import("@storybook/react").Story<{
|
|
16
16
|
buttonLabel: string;
|
|
17
17
|
buttonOptions: {
|
|
18
18
|
optionLabel: string;
|
|
@@ -20,7 +20,7 @@ export declare const defaultDropdownButton: import("@storybook/react").Story<{
|
|
|
20
20
|
caretLocation: string;
|
|
21
21
|
classNames: string;
|
|
22
22
|
}>;
|
|
23
|
-
export declare const
|
|
23
|
+
export declare const DefaultDropdownButtonWithDefaultElement: import("@storybook/react").Story<{
|
|
24
24
|
buttonLabel: string;
|
|
25
25
|
buttonOptions: {
|
|
26
26
|
optionLabel: string;
|
|
@@ -8,33 +8,34 @@ export default {
|
|
|
8
8
|
title: "Common/DropdownButton",
|
|
9
9
|
component: DropdownButton,
|
|
10
10
|
};
|
|
11
|
-
|
|
11
|
+
const options = [{ optionLabel: "Alpha" }, { optionLabel: "Bravo" }, { optionLabel: "Charlie" }];
|
|
12
|
+
const buttonOptions = [{ buttonLabel: "Alpha" }, { buttonLabel: "Bravo" }, { buttonLabel: "Charlie" }];
|
|
13
|
+
export const DropdownButtonElement = createStory(DropdownButton, {
|
|
12
14
|
buttonLabel: "Label",
|
|
13
|
-
buttonOptions:
|
|
15
|
+
buttonOptions: buttonOptions,
|
|
14
16
|
});
|
|
15
|
-
|
|
17
|
+
DropdownButtonElement.decorators = [
|
|
16
18
|
(Story) => (React.createElement("div", { style: { width: 80 } },
|
|
17
19
|
React.createElement(Story, null))),
|
|
18
20
|
];
|
|
19
|
-
export const
|
|
21
|
+
export const DefaultDropdownButtonElement = createStory(DefaultDropdownButton, {
|
|
20
22
|
buttonLabel: "Label",
|
|
21
|
-
buttonOptions:
|
|
23
|
+
buttonOptions: options,
|
|
22
24
|
caretLocation: "right",
|
|
23
25
|
classNames: "push-right",
|
|
24
26
|
});
|
|
25
|
-
|
|
27
|
+
DefaultDropdownButtonElement.decorators = [
|
|
26
28
|
(Story) => (React.createElement("div", { style: { width: 150 } },
|
|
27
29
|
React.createElement(Story, null))),
|
|
28
30
|
];
|
|
29
|
-
const
|
|
30
|
-
export const defaultDropdownButtonWithDefault = createStory(DefaultDropdownButton, {
|
|
31
|
+
export const DefaultDropdownButtonWithDefaultElement = createStory(DefaultDropdownButton, {
|
|
31
32
|
buttonLabel: "Label",
|
|
32
|
-
buttonOptions:
|
|
33
|
+
buttonOptions: options,
|
|
33
34
|
caretLocation: "right",
|
|
34
35
|
classNames: "push-right",
|
|
35
36
|
defaultSelection: options[1],
|
|
36
37
|
});
|
|
37
|
-
|
|
38
|
+
DefaultDropdownButtonWithDefaultElement.decorators = [
|
|
38
39
|
(Story) => (React.createElement("div", { style: { width: 150 } },
|
|
39
40
|
React.createElement(Story, null))),
|
|
40
41
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DropdownButton.stories.js","sourceRoot":"","sources":["../../../../src/components/common/stories/DropdownButton.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,mBAAmB,CAAC;AAC/C,OAAO,qBAAqB,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,mCAAmC,CAAC;AAC3C,OAAO,mBAAmB,CAAC;AAC3B,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,eAAe;IACd,KAAK,EAAE,uBAAuB;IAC9B,SAAS,EAAE,cAAc;CACzB,CAAC;
|
|
1
|
+
{"version":3,"file":"DropdownButton.stories.js","sourceRoot":"","sources":["../../../../src/components/common/stories/DropdownButton.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,mBAAmB,CAAC;AAC/C,OAAO,qBAAqB,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,mCAAmC,CAAC;AAC3C,OAAO,mBAAmB,CAAC;AAC3B,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,eAAe;IACd,KAAK,EAAE,uBAAuB;IAC9B,SAAS,EAAE,cAAc;CACzB,CAAC;AACF,MAAM,OAAO,GAAG,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;AACjG,MAAM,aAAa,GAAG,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;AAEvG,MAAM,CAAC,MAAM,qBAAqB,GAAG,WAAW,CAAC,cAAc,EAAE;IAChE,WAAW,EAAE,OAAO;IACpB,aAAa,EAAE,aAAa;CAC5B,CAAC,CAAC;AACH,qBAAqB,CAAC,UAAU,GAAG;IAClC,CAAC,KAAK,EAAE,EAAE,CAAC,CACV,6BAAK,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;QACxB,oBAAC,KAAK,OAAG,CACJ,CACN;CACD,CAAC;AACF,MAAM,CAAC,MAAM,4BAA4B,GAAG,WAAW,CAAC,qBAAqB,EAAE;IAC9E,WAAW,EAAE,OAAO;IACpB,aAAa,EAAE,OAAO;IACtB,aAAa,EAAE,OAAO;IACtB,UAAU,EAAE,YAAY;CACxB,CAAC,CAAC;AACH,4BAA4B,CAAC,UAAU,GAAG;IACzC,CAAC,KAAK,EAAE,EAAE,CAAC,CACV,6BAAK,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;QACzB,oBAAC,KAAK,OAAG,CACJ,CACN;CACD,CAAC;AAEF,MAAM,CAAC,MAAM,uCAAuC,GAAG,WAAW,CAAC,qBAAqB,EAAE;IACzF,WAAW,EAAE,OAAO;IACpB,aAAa,EAAE,OAAO;IACtB,aAAa,EAAE,OAAO;IACtB,UAAU,EAAE,YAAY;IACxB,gBAAgB,EAAE,OAAO,CAAC,CAAC,CAAC;CAC5B,CAAC,CAAC;AACH,uCAAuC,CAAC,UAAU,GAAG;IACpD,CAAC,KAAK,EAAE,EAAE,CAAC,CACV,6BAAK,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;QACzB,oBAAC,KAAK,OAAG,CACJ,CACN;CACD,CAAC","sourcesContent":["import DropdownButton from \"../DropdownButton\";\nimport DefaultDropdownButton from \"../../shared/DefaultDropdownButton\";\nimport { createStory } from \"../helpers\";\nimport \"../../../assets/css/finsemble.css\";\nimport \"../css/styles.css\";\nimport React from \"react\";\n\nexport default {\n\ttitle: \"Common/DropdownButton\",\n\tcomponent: DropdownButton,\n};\nconst options = [{ optionLabel: \"Alpha\" }, { optionLabel: \"Bravo\" }, { optionLabel: \"Charlie\" }];\nconst buttonOptions = [{ buttonLabel: \"Alpha\" }, { buttonLabel: \"Bravo\" }, { buttonLabel: \"Charlie\" }];\n\nexport const DropdownButtonElement = createStory(DropdownButton, {\n\tbuttonLabel: \"Label\",\n\tbuttonOptions: buttonOptions,\n});\nDropdownButtonElement.decorators = [\n\t(Story) => (\n\t\t<div style={{ width: 80 }}>\n\t\t\t<Story />\n\t\t</div>\n\t),\n];\nexport const DefaultDropdownButtonElement = createStory(DefaultDropdownButton, {\n\tbuttonLabel: \"Label\",\n\tbuttonOptions: options,\n\tcaretLocation: \"right\",\n\tclassNames: \"push-right\",\n});\nDefaultDropdownButtonElement.decorators = [\n\t(Story) => (\n\t\t<div style={{ width: 150 }}>\n\t\t\t<Story />\n\t\t</div>\n\t),\n];\n\nexport const DefaultDropdownButtonWithDefaultElement = createStory(DefaultDropdownButton, {\n\tbuttonLabel: \"Label\",\n\tbuttonOptions: options,\n\tcaretLocation: \"right\",\n\tclassNames: \"push-right\",\n\tdefaultSelection: options[1],\n});\nDefaultDropdownButtonWithDefaultElement.decorators = [\n\t(Story) => (\n\t\t<div style={{ width: 150 }}>\n\t\t\t<Story />\n\t\t</div>\n\t),\n];\n"]}
|