flipper-ui 0.36.5 → 0.37.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.
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import type { Dispatch, ReactNode, SetStateAction } from 'react';
3
+ export interface Filter {
4
+ label: ReactNode;
5
+ active: boolean;
6
+ onClick: () => void;
7
+ }
8
+ export interface IProps {
9
+ filters?: Filter[];
10
+ activeMode?: boolean;
11
+ setActiveMode?: Dispatch<SetStateAction<boolean>>;
12
+ }
13
+ declare const ViewMode: (props: IProps) => React.JSX.Element;
14
+ export default ViewMode;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _button = _interopRequireDefault(require("../../inputs/button"));
10
+ var _mui = require("../../../icons/mui");
11
+ var _styles = require("./styles");
12
+ var ViewMode = function ViewMode(props) {
13
+ var filters = props.filters,
14
+ _props$activeMode = props.activeMode,
15
+ activeMode = _props$activeMode === void 0 ? false : _props$activeMode,
16
+ setActiveMode = props.setActiveMode;
17
+ var defaultFilters = [{
18
+ label: /*#__PURE__*/_react["default"].createElement(_mui.IconTableView, {
19
+ fontSize: "small"
20
+ }),
21
+ active: activeMode,
22
+ onClick: function onClick() {
23
+ return setActiveMode === null || setActiveMode === void 0 ? void 0 : setActiveMode(function (prev) {
24
+ return !prev;
25
+ });
26
+ }
27
+ }, {
28
+ label: /*#__PURE__*/_react["default"].createElement(_mui.IconGridView, {
29
+ fontSize: "small"
30
+ }),
31
+ active: !activeMode,
32
+ onClick: function onClick() {
33
+ return setActiveMode === null || setActiveMode === void 0 ? void 0 : setActiveMode(function (prev) {
34
+ return !prev;
35
+ });
36
+ }
37
+ }];
38
+ var currentFilters = filters || defaultFilters;
39
+ return /*#__PURE__*/_react["default"].createElement(_styles.ButtonFilterGroup, {
40
+ size: "small"
41
+ }, currentFilters.map(function (filter, i) {
42
+ return /*#__PURE__*/_react["default"].createElement(_button["default"], {
43
+ key: i,
44
+ color: "primary",
45
+ variant: filter.active ? 'contained' : 'outlined',
46
+ onClick: filter.onClick
47
+ }, filter.label);
48
+ }));
49
+ };
50
+ var _default = exports["default"] = ViewMode;
@@ -0,0 +1,13 @@
1
+ export declare const ButtonFilterGroup: import("@emotion/styled").StyledComponent<import("@mui/material/ButtonGroup").ButtonGroupOwnProps & import("@mui/material/OverridableComponent").CommonProps & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
2
+ ref?: ((instance: HTMLDivElement | null) => void | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES]) | import("react").RefObject<HTMLDivElement> | null | undefined;
3
+ }, "color" | "disabled" | "size" | "children" | "style" | "className" | "classes" | "disableRipple" | "sx" | "disableFocusRipple" | "orientation" | "variant" | "disableElevation" | "fullWidth"> & {
4
+ theme?: import("@emotion/react").Theme;
5
+ }, {}, {}>;
6
+ export declare const WrapperEnd: import("@emotion/styled").StyledComponent<{
7
+ theme?: import("@emotion/react").Theme;
8
+ as?: React.ElementType;
9
+ }, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
10
+ export declare const Cards: import("@emotion/styled").StyledComponent<{
11
+ theme?: import("@emotion/react").Theme;
12
+ as?: React.ElementType;
13
+ }, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.WrapperEnd = exports.Cards = exports.ButtonFilterGroup = void 0;
8
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
9
+ var _styled = _interopRequireDefault(require("@emotion/styled"));
10
+ var _ButtonGroup = _interopRequireDefault(require("@mui/material/ButtonGroup"));
11
+ var _templateObject, _templateObject2, _templateObject3;
12
+ var ButtonFilterGroup = exports.ButtonFilterGroup = (0, _styled["default"])(_ButtonGroup["default"])(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n && {\n display: flex;\n gap: 2px;\n }\n"])));
13
+ var WrapperEnd = exports.WrapperEnd = _styled["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: end;\n margin: 0 0 24px 0;\n"])));
14
+ var Cards = exports.Cards = _styled["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: grid;\n gap: 16px;\n grid-template-columns: repeat(3, minmax(0, 1fr));\n"])));
@@ -0,0 +1 @@
1
+ export declare const useViewMode: (subKey: string) => readonly [boolean, () => void];
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useViewMode = void 0;
8
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
+ var _react = require("react");
10
+ var useViewMode = exports.useViewMode = function useViewMode(subKey) {
11
+ var STORAGE_KEY = 'view-mode';
12
+ var _useState = (0, _react.useState)(function () {
13
+ var sessionData = sessionStorage.getItem(STORAGE_KEY);
14
+ if (sessionData) {
15
+ var parsed = JSON.parse(sessionData);
16
+ if (parsed[subKey] !== undefined) return parsed[subKey];
17
+ }
18
+ var localData = localStorage.getItem(STORAGE_KEY);
19
+ if (localData) {
20
+ var _parsed = JSON.parse(localData);
21
+ if (_parsed[subKey] !== undefined) return _parsed[subKey];
22
+ }
23
+ return false;
24
+ }),
25
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
26
+ activeMode = _useState2[0],
27
+ setActiveMode = _useState2[1];
28
+ var toggleActiveMode = function toggleActiveMode() {
29
+ setActiveMode(function (prev) {
30
+ var newValue = !prev;
31
+ var sessionData = sessionStorage.getItem(STORAGE_KEY);
32
+ var sessionObj = sessionData ? JSON.parse(sessionData) : {};
33
+ sessionObj[subKey] = newValue;
34
+ sessionStorage.setItem(STORAGE_KEY, JSON.stringify(sessionObj));
35
+ var localData = localStorage.getItem(STORAGE_KEY);
36
+ var localObj = localData ? JSON.parse(localData) : {};
37
+ localObj[subKey] = newValue;
38
+ localStorage.setItem(STORAGE_KEY, JSON.stringify(localObj));
39
+ return newValue;
40
+ });
41
+ };
42
+ return [activeMode, toggleActiveMode];
43
+ };
@@ -0,0 +1 @@
1
+ import '@testing-library/jest-dom';
@@ -0,0 +1,7 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import ViewMode from '.';
3
+ declare const meta: Meta<typeof ViewMode>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof ViewMode>;
6
+ export declare const viewMode: Story;
7
+ export declare const viewModeCustom: Story;
@@ -63,6 +63,7 @@ export { default as IconFormatColorText } from '@mui/icons-material/FormatColorT
63
63
  export { default as IconFormatListBulleted } from '@mui/icons-material/FormatListBulleted';
64
64
  export { default as IconForumOutlined } from '@mui/icons-material/ForumOutlined';
65
65
  export { default as IconFullscreenRounded } from '@mui/icons-material/FullscreenRounded';
66
+ export { default as IconGridView } from '@mui/icons-material/GridViewRounded';
66
67
  export { default as IconHeadset } from '@mui/icons-material/Headset';
67
68
  export { default as IconHelp } from '@mui/icons-material/Help';
68
69
  export { default as IconHelpOutline } from '@mui/icons-material/HelpOutline';
@@ -131,6 +132,7 @@ export { default as IconStar } from '@mui/icons-material/Star';
131
132
  export { default as IconStarBorder } from '@mui/icons-material/StarBorder';
132
133
  export { default as IconSync } from '@mui/icons-material/Sync';
133
134
  export { default as IconSyncProblem } from '@mui/icons-material/SyncProblem';
135
+ export { default as IconTableView } from '@mui/icons-material/TableRows';
134
136
  export { default as IconTextFields } from '@mui/icons-material/TextFields';
135
137
  export { default as IconTimeline } from '@mui/icons-material/Timeline';
136
138
  export { default as IconToday } from '@mui/icons-material/Today';
@@ -394,6 +394,12 @@ Object.defineProperty(exports, "IconFullscreenRounded", {
394
394
  return _FullscreenRounded["default"];
395
395
  }
396
396
  });
397
+ Object.defineProperty(exports, "IconGridView", {
398
+ enumerable: true,
399
+ get: function get() {
400
+ return _GridViewRounded["default"];
401
+ }
402
+ });
397
403
  Object.defineProperty(exports, "IconHeadset", {
398
404
  enumerable: true,
399
405
  get: function get() {
@@ -796,6 +802,12 @@ Object.defineProperty(exports, "IconSyncProblem", {
796
802
  return _SyncProblem["default"];
797
803
  }
798
804
  });
805
+ Object.defineProperty(exports, "IconTableView", {
806
+ enumerable: true,
807
+ get: function get() {
808
+ return _TableRows["default"];
809
+ }
810
+ });
799
811
  Object.defineProperty(exports, "IconTextFields", {
800
812
  enumerable: true,
801
813
  get: function get() {
@@ -927,6 +939,7 @@ var _FormatColorText = _interopRequireDefault(require("@mui/icons-material/Forma
927
939
  var _FormatListBulleted = _interopRequireDefault(require("@mui/icons-material/FormatListBulleted"));
928
940
  var _ForumOutlined = _interopRequireDefault(require("@mui/icons-material/ForumOutlined"));
929
941
  var _FullscreenRounded = _interopRequireDefault(require("@mui/icons-material/FullscreenRounded"));
942
+ var _GridViewRounded = _interopRequireDefault(require("@mui/icons-material/GridViewRounded"));
930
943
  var _Headset = _interopRequireDefault(require("@mui/icons-material/Headset"));
931
944
  var _Help = _interopRequireDefault(require("@mui/icons-material/Help"));
932
945
  var _HelpOutline = _interopRequireDefault(require("@mui/icons-material/HelpOutline"));
@@ -995,6 +1008,7 @@ var _Star = _interopRequireDefault(require("@mui/icons-material/Star"));
995
1008
  var _StarBorder = _interopRequireDefault(require("@mui/icons-material/StarBorder"));
996
1009
  var _Sync = _interopRequireDefault(require("@mui/icons-material/Sync"));
997
1010
  var _SyncProblem = _interopRequireDefault(require("@mui/icons-material/SyncProblem"));
1011
+ var _TableRows = _interopRequireDefault(require("@mui/icons-material/TableRows"));
998
1012
  var _TextFields = _interopRequireDefault(require("@mui/icons-material/TextFields"));
999
1013
  var _Timeline = _interopRequireDefault(require("@mui/icons-material/Timeline"));
1000
1014
  var _Today = _interopRequireDefault(require("@mui/icons-material/Today"));
package/index.d.ts CHANGED
@@ -23,6 +23,8 @@ export { default as TableRow } from './core/data-display/table/table-row';
23
23
  export { default as TableFooter } from './core/data-display/table/table-footer';
24
24
  export { default as TablePagination } from './core/data-display/table/table-pagination';
25
25
  export { default as Typography } from './core/data-display/typography';
26
+ export { default as ViewMode } from './core/data-display/view-mode';
27
+ export { useViewMode } from './core/data-display/view-mode/useViewMode';
26
28
  export { default as Collapse } from './core/feedback/collapse';
27
29
  export { default as Dialog } from './core/feedback/dialog';
28
30
  export { default as Fade } from './core/feedback/fade';
package/index.js CHANGED
@@ -27,6 +27,8 @@ var _exportNames = {
27
27
  TableFooter: true,
28
28
  TablePagination: true,
29
29
  Typography: true,
30
+ ViewMode: true,
31
+ useViewMode: true,
30
32
  Collapse: true,
31
33
  Dialog: true,
32
34
  Fade: true,
@@ -440,6 +442,18 @@ Object.defineProperty(exports, "ValidationDialog", {
440
442
  return _validationDialog["default"];
441
443
  }
442
444
  });
445
+ Object.defineProperty(exports, "ViewMode", {
446
+ enumerable: true,
447
+ get: function get() {
448
+ return _viewMode["default"];
449
+ }
450
+ });
451
+ Object.defineProperty(exports, "useViewMode", {
452
+ enumerable: true,
453
+ get: function get() {
454
+ return _useViewMode.useViewMode;
455
+ }
456
+ });
443
457
  var _dataTable = require("./core/data-display/data-table");
444
458
  Object.keys(_dataTable).forEach(function (key) {
445
459
  if (key === "default" || key === "__esModule") return;
@@ -498,6 +512,8 @@ var _tableRow = _interopRequireDefault(require("./core/data-display/table/table-
498
512
  var _tableFooter = _interopRequireDefault(require("./core/data-display/table/table-footer"));
499
513
  var _tablePagination = _interopRequireDefault(require("./core/data-display/table/table-pagination"));
500
514
  var _typography = _interopRequireDefault(require("./core/data-display/typography"));
515
+ var _viewMode = _interopRequireDefault(require("./core/data-display/view-mode"));
516
+ var _useViewMode = require("./core/data-display/view-mode/useViewMode");
501
517
  var _collapse = _interopRequireDefault(require("./core/feedback/collapse"));
502
518
  var _dialog = _interopRequireDefault(require("./core/feedback/dialog"));
503
519
  var _fade = _interopRequireDefault(require("./core/feedback/fade"));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "flipper-ui",
3
- "version": "0.36.5",
3
+ "version": "0.37.0",
4
4
  "description": "React UI based on the @mui/material toolkit for the web",
5
5
  "main": "dist/index.js",
6
6
  "author": "NG",
@@ -53,8 +53,8 @@
53
53
  "@storybook/react": "8.6.12",
54
54
  "@storybook/react-webpack5": "8.6.12",
55
55
  "@stylistic/eslint-plugin": "5.2.2",
56
- "@testing-library/dom": "10.4.0",
57
- "@testing-library/jest-dom": "6.6.3",
56
+ "@testing-library/dom": "10.4.1",
57
+ "@testing-library/jest-dom": "6.6.4",
58
58
  "@testing-library/react": "16.3.0",
59
59
  "@testing-library/user-event": "14.6.1",
60
60
  "@types/jest": "30.0.0",
@@ -67,7 +67,7 @@
67
67
  "babel-plugin-import": "1.13.8",
68
68
  "babel-plugin-module-resolver": "5.0.2",
69
69
  "date-fns": "4.1.0",
70
- "eslint": "9.31.0",
70
+ "eslint": "9.32.0",
71
71
  "eslint-config-prettier": "10.1.8",
72
72
  "eslint-import-resolver-typescript": "4.4.4",
73
73
  "eslint-plugin-import": "2.32.0",
@@ -88,7 +88,7 @@
88
88
  "typescript": "5.8.3",
89
89
  "typescript-eslint": "8.38.0",
90
90
  "uuid": "11.1.0",
91
- "webpack": "5.100.2"
91
+ "webpack": "5.101.0"
92
92
  },
93
93
  "peerDependencies": {
94
94
  "date-fns": "^4.0.0",