flipper-ui 0.36.0 → 0.36.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.
Files changed (28) hide show
  1. package/core/data-display/table/table-cell.js +1 -3
  2. package/core/data-display/table-interactive/TableDialogPreferences.d.ts +4 -0
  3. package/core/data-display/table-interactive/TableDialogPreferences.js +63 -0
  4. package/core/data-display/table-interactive/TableInteractive.d.ts +36 -0
  5. package/core/data-display/table-interactive/TableInteractive.js +83 -0
  6. package/core/data-display/table-interactive/TableInteractiveHead.d.ts +4 -0
  7. package/core/data-display/table-interactive/TableInteractiveHead.js +26 -0
  8. package/core/data-display/table-interactive/TableInteractiveHeader.d.ts +4 -0
  9. package/core/data-display/table-interactive/TableInteractiveHeader.js +19 -0
  10. package/core/data-display/table-interactive/TablePaginationActions.d.ts +10 -0
  11. package/core/data-display/table-interactive/TablePaginationActions.js +51 -0
  12. package/core/data-display/table-interactive/index.d.ts +3 -0
  13. package/core/data-display/table-interactive/index.js +43 -0
  14. package/core/data-display/table-interactive/styles.d.ts +8 -0
  15. package/core/data-display/table-interactive/styles.js +14 -0
  16. package/core/data-display/table-interactive/table-interactive.spec.d.ts +1 -0
  17. package/core/data-display/table-interactive/table-interactive.stories.d.ts +6 -0
  18. package/core/data-display/table-interactive/utils.d.ts +18 -0
  19. package/core/data-display/table-interactive/utils.js +50 -0
  20. package/core/feedback/snackbar/index.js +2 -3
  21. package/core/inputs/pin-input/index.js +5 -9
  22. package/core/inputs/text-field/index.js +1 -3
  23. package/core/surfaces/expansion-panel/expansion-panel.spec.d.ts +1 -1
  24. package/core/surfaces/expansion-panel/index.js +6 -12
  25. package/core/surfaces/step-card/step-card-details.js +3 -6
  26. package/icons/specific/IconWorkPermission.js +1 -1
  27. package/package.json +22 -22
  28. package/test/mocks/table-interactive-mock.d.ts +22 -0
@@ -29,9 +29,7 @@ var TableCell = function TableCell(_ref) {
29
29
  active = _useContext.active,
30
30
  direction = _useContext.direction;
31
31
  var handleSort = function handleSort() {
32
- if (onSort) {
33
- onSort(otherProps.name || '');
34
- }
32
+ onSort === null || onSort === void 0 || onSort(otherProps.name || '');
35
33
  };
36
34
  return /*#__PURE__*/_react["default"].createElement(_TableCell["default"], (0, _extends2["default"])({}, otherProps, {
37
35
  style: _objectSpread({
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import type { ITableInteractive } from './TableInteractive';
3
+ export type ITableDialogPreferences = Pick<ITableInteractive, 'open' | 'headers' | 'columnsTemporary' | 'onCancel' | 'onConfirm' | 'setColumnsTemporary'>;
4
+ export declare const TableDialogPreferences: ({ open, headers, columnsTemporary, onCancel, onConfirm, setColumnsTemporary }: ITableDialogPreferences) => React.JSX.Element;
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.TableDialogPreferences = void 0;
8
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
+ var _react = _interopRequireDefault(require("react"));
10
+ var _Switch = _interopRequireDefault(require("@mui/material/Switch"));
11
+ var _dialog = _interopRequireDefault(require("../../feedback/dialog"));
12
+ var _actions = _interopRequireDefault(require("../actions"));
13
+ var _typography = _interopRequireDefault(require("../typography"));
14
+ var _styles = require("./styles");
15
+ var TableDialogPreferences = exports.TableDialogPreferences = function TableDialogPreferences(_ref) {
16
+ var _ref$open = _ref.open,
17
+ open = _ref$open === void 0 ? false : _ref$open,
18
+ headers = _ref.headers,
19
+ _ref$columnsTemporary = _ref.columnsTemporary,
20
+ columnsTemporary = _ref$columnsTemporary === void 0 ? [] : _ref$columnsTemporary,
21
+ onCancel = _ref.onCancel,
22
+ onConfirm = _ref.onConfirm,
23
+ setColumnsTemporary = _ref.setColumnsTemporary;
24
+ var handleChangeTemporaryColumns = function handleChangeTemporaryColumns(name) {
25
+ setColumnsTemporary === null || setColumnsTemporary === void 0 || setColumnsTemporary(function (prev) {
26
+ return prev.includes(name) ? prev.filter(function (col) {
27
+ return col !== name;
28
+ }) : [].concat((0, _toConsumableArray2["default"])(prev), [name]);
29
+ });
30
+ };
31
+ return /*#__PURE__*/_react["default"].createElement(_dialog["default"], {
32
+ fullWidth: true,
33
+ open: open,
34
+ maxWidth: "sm",
35
+ title: "Prefer\xEAncias",
36
+ content: /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_typography["default"], {
37
+ variant: "body1",
38
+ fontWeight: 500,
39
+ margin: "0 0 16px 0"
40
+ }, "Selecione o conte\xFAdo a ser exibido"), headers.map(function (it) {
41
+ return /*#__PURE__*/_react["default"].createElement(_styles.ContentWrapper, {
42
+ key: it.name
43
+ }, /*#__PURE__*/_react["default"].createElement(_typography["default"], null, it.label), /*#__PURE__*/_react["default"].createElement(_Switch["default"], {
44
+ color: "primary",
45
+ name: it.name,
46
+ slotProps: {
47
+ input: {
48
+ 'aria-label': it.label
49
+ }
50
+ },
51
+ checked: columnsTemporary.includes(it.name),
52
+ onChange: function onChange() {
53
+ return handleChangeTemporaryColumns(it.name);
54
+ }
55
+ }));
56
+ })),
57
+ actions: /*#__PURE__*/_react["default"].createElement(_actions["default"], {
58
+ margin: "0 16px 16px 16px",
59
+ onCancel: onCancel,
60
+ onConfirm: onConfirm !== null && onConfirm !== void 0 ? onConfirm : function () {}
61
+ })
62
+ });
63
+ };
@@ -0,0 +1,36 @@
1
+ import React from 'react';
2
+ import type { Dispatch, ReactNode, SetStateAction } from 'react';
3
+ export declare enum Direction {
4
+ ASCENDENT = "asc",
5
+ DESCENDENT = "desc"
6
+ }
7
+ export interface ITableInteractive {
8
+ name: string;
9
+ page?: number;
10
+ open?: boolean;
11
+ total?: number;
12
+ active?: string;
13
+ headers: {
14
+ name: string;
15
+ label: string;
16
+ }[];
17
+ paginated?: boolean;
18
+ rowsPerPage?: number;
19
+ direction?: Direction;
20
+ isInteractive?: boolean;
21
+ isCollapsible?: boolean;
22
+ visibleColumns?: string[];
23
+ columnsTemporary?: string[];
24
+ valuesInvoices?: Record<string, unknown>[];
25
+ headerActions?: React.JSX.Element | undefined;
26
+ onCancel?: () => void;
27
+ onConfirm?: () => void;
28
+ handleOpen?: () => void;
29
+ onSort?(id: string): void;
30
+ setPage?: Dispatch<SetStateAction<number>>;
31
+ setRowsPerPage?: Dispatch<SetStateAction<number>>;
32
+ children?: (item: Record<string, unknown>) => ReactNode;
33
+ setColumnsTemporary?: (value: SetStateAction<string[]>) => void;
34
+ rowsContent: () => React.JSX.Element | React.JSX.Element[] | undefined;
35
+ }
36
+ export declare const TableInteractive: (props: ITableInteractive) => React.JSX.Element;
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.TableInteractive = exports.Direction = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _Box = _interopRequireDefault(require("@mui/material/Box"));
10
+ var _table = _interopRequireDefault(require("../table"));
11
+ var _tableBody = _interopRequireDefault(require("../table/table-body"));
12
+ var _tableFooter = _interopRequireDefault(require("../table/table-footer"));
13
+ var _tablePagination = _interopRequireDefault(require("../table/table-pagination"));
14
+ var _tableRow = _interopRequireDefault(require("../table/table-row"));
15
+ var _TableDialogPreferences = require("./TableDialogPreferences");
16
+ var _TableInteractiveHead = require("./TableInteractiveHead");
17
+ var _TableInteractiveHeader = require("./TableInteractiveHeader");
18
+ var _TablePaginationActions = require("./TablePaginationActions");
19
+ var Direction = exports.Direction = /*#__PURE__*/function (Direction) {
20
+ Direction["ASCENDENT"] = "asc";
21
+ Direction["DESCENDENT"] = "desc";
22
+ return Direction;
23
+ }({});
24
+ var TableInteractive = exports.TableInteractive = function TableInteractive(props) {
25
+ var _props$rowsPerPage, _props$page, _props$rowsPerPage2;
26
+ var handlePageCount = function handlePageCount() {
27
+ if (props.valuesInvoices) {
28
+ return Number(props.valuesInvoices.length);
29
+ }
30
+ return Number(props.total) || 0;
31
+ };
32
+ var count = handlePageCount();
33
+ var rowsPerPage = (_props$rowsPerPage = props.rowsPerPage) !== null && _props$rowsPerPage !== void 0 ? _props$rowsPerPage : 10;
34
+ var maxPage = Math.max(0, Math.ceil(count / rowsPerPage) - 1);
35
+ var page = Math.min((_props$page = props.page) !== null && _props$page !== void 0 ? _props$page : 0, maxPage);
36
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, props.isInteractive && /*#__PURE__*/_react["default"].createElement(_TableInteractiveHeader.TableInteractiveHeader, {
37
+ headerActions: props.headerActions,
38
+ handleOpen: props.handleOpen
39
+ }), /*#__PURE__*/_react["default"].createElement(_Box["default"], {
40
+ sx: {
41
+ overflow: 'auto'
42
+ }
43
+ }, /*#__PURE__*/_react["default"].createElement(_Box["default"], {
44
+ sx: {
45
+ width: '100%',
46
+ display: 'table',
47
+ tableLayout: 'fixed'
48
+ }
49
+ }, /*#__PURE__*/_react["default"].createElement(_table["default"], {
50
+ name: props.name,
51
+ id: 'list-' + props.name
52
+ }, /*#__PURE__*/_react["default"].createElement(_TableInteractiveHead.TableInteractiveHead, {
53
+ active: props.active,
54
+ headers: props.headers,
55
+ children: props.children,
56
+ direction: props.direction,
57
+ isCollapsible: props.isCollapsible,
58
+ visibleColumns: props.visibleColumns || [],
59
+ onSort: props.onSort
60
+ }), /*#__PURE__*/_react["default"].createElement(_tableBody["default"], null, props.rowsContent()), props.paginated && /*#__PURE__*/_react["default"].createElement(_tableFooter["default"], null, /*#__PURE__*/_react["default"].createElement(_tableRow["default"], null, /*#__PURE__*/_react["default"].createElement(_tablePagination["default"], {
61
+ page: page,
62
+ count: count,
63
+ rowsPerPage: (_props$rowsPerPage2 = props.rowsPerPage) !== null && _props$rowsPerPage2 !== void 0 ? _props$rowsPerPage2 : 10,
64
+ rowsPerPageOptions: [10, 25, 50, 100],
65
+ ActionsComponent: _TablePaginationActions.TablePaginationActions,
66
+ onPageChange: function onPageChange(_, page) {
67
+ var _props$setPage;
68
+ (_props$setPage = props.setPage) === null || _props$setPage === void 0 || _props$setPage.call(props, page);
69
+ },
70
+ onRowsPerPageChange: function onRowsPerPageChange(event) {
71
+ var _props$setPage2, _props$setRowsPerPage;
72
+ (_props$setPage2 = props.setPage) === null || _props$setPage2 === void 0 || _props$setPage2.call(props, 0);
73
+ (_props$setRowsPerPage = props.setRowsPerPage) === null || _props$setRowsPerPage === void 0 || _props$setRowsPerPage.call(props, parseInt(event.target.value, 10));
74
+ }
75
+ })))))), /*#__PURE__*/_react["default"].createElement(_TableDialogPreferences.TableDialogPreferences, {
76
+ open: props.open,
77
+ headers: props.headers,
78
+ columnsTemporary: props.columnsTemporary,
79
+ setColumnsTemporary: props.setColumnsTemporary,
80
+ onCancel: props.onCancel,
81
+ onConfirm: props.onConfirm
82
+ }));
83
+ };
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { type ITableInteractive } from './TableInteractive';
3
+ export type ITableInteractiveHead = Pick<ITableInteractive, 'headers' | 'visibleColumns' | 'onSort' | 'active' | 'direction' | 'children' | 'isCollapsible'>;
4
+ export declare const TableInteractiveHead: (props: ITableInteractiveHead) => React.JSX.Element;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.TableInteractiveHead = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _tableCell = _interopRequireDefault(require("../table/table-cell"));
10
+ var _tableHead = _interopRequireDefault(require("../table/table-head"));
11
+ var _tableRow = _interopRequireDefault(require("../table/table-row"));
12
+ var _utils = require("./utils");
13
+ var TableInteractiveHead = exports.TableInteractiveHead = function TableInteractiveHead(props) {
14
+ var visibleColumns = (0, _utils.getVisibleColumns)(props.headers, props.visibleColumns);
15
+ var handleSort = function handleSort(name) {
16
+ var _props$onSort;
17
+ (_props$onSort = props.onSort) === null || _props$onSort === void 0 || _props$onSort.call(props, name);
18
+ };
19
+ return /*#__PURE__*/_react["default"].createElement(_tableHead["default"], {
20
+ active: props.active,
21
+ direction: props.direction,
22
+ onSort: props.onSort && handleSort
23
+ }, /*#__PURE__*/_react["default"].createElement(_tableRow["default"], null, props.headers.map(function (header) {
24
+ return (0, _utils.generateHeader)(header, visibleColumns);
25
+ }), (props.children || props.isCollapsible) && /*#__PURE__*/_react["default"].createElement(_tableCell["default"], null)));
26
+ };
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import type { ITableInteractive } from './TableInteractive';
3
+ export type ITableInteractiveHeader = Pick<ITableInteractive, 'handleOpen' | 'headerActions'>;
4
+ export declare const TableInteractiveHeader: (props: ITableInteractiveHeader) => React.JSX.Element;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.TableInteractiveHeader = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _iconButton = _interopRequireDefault(require("../../inputs/icon-button"));
10
+ var _mui = require("../../../icons/mui");
11
+ var _styles = require("./styles");
12
+ var TableInteractiveHeader = exports.TableInteractiveHeader = function TableInteractiveHeader(props) {
13
+ return /*#__PURE__*/_react["default"].createElement(_styles.TableHeaderContent, null, /*#__PURE__*/_react["default"].createElement("div", null, props.headerActions), /*#__PURE__*/_react["default"].createElement(_iconButton["default"], {
14
+ padding: "4px",
15
+ onClick: props.handleOpen
16
+ }, /*#__PURE__*/_react["default"].createElement(_mui.IconSettings, {
17
+ color: "primary"
18
+ })));
19
+ };
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import type { MouseEvent } from 'react';
3
+ interface TablePaginationActionsProps {
4
+ page: number;
5
+ count: number;
6
+ rowsPerPage: number;
7
+ onPageChange: (event: MouseEvent<HTMLButtonElement>, newPage: number) => void;
8
+ }
9
+ export declare const TablePaginationActions: (props: TablePaginationActionsProps) => React.JSX.Element;
10
+ export {};
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.TablePaginationActions = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _Box = _interopRequireDefault(require("@mui/material/Box"));
10
+ var _iconButton = _interopRequireDefault(require("../../inputs/icon-button"));
11
+ var _mui = require("../../../icons/mui");
12
+ var TablePaginationActions = exports.TablePaginationActions = function TablePaginationActions(props) {
13
+ var count = props.count,
14
+ page = props.page,
15
+ rowsPerPage = props.rowsPerPage,
16
+ onPageChange = props.onPageChange;
17
+ var handleFirstPageButtonClick = function handleFirstPageButtonClick(event) {
18
+ onPageChange(event, 0);
19
+ };
20
+ var handleBackButtonClick = function handleBackButtonClick(event) {
21
+ onPageChange(event, page - 1);
22
+ };
23
+ var handleNextButtonClick = function handleNextButtonClick(event) {
24
+ onPageChange(event, page + 1);
25
+ };
26
+ var handleLastPageButtonClick = function handleLastPageButtonClick(event) {
27
+ onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1));
28
+ };
29
+ return /*#__PURE__*/_react["default"].createElement(_Box["default"], {
30
+ sx: {
31
+ flexShrink: 0,
32
+ margin: '0 0 0 16px'
33
+ }
34
+ }, /*#__PURE__*/_react["default"].createElement(_iconButton["default"], {
35
+ "aria-label": "first page",
36
+ disabled: page === 0,
37
+ onClick: handleFirstPageButtonClick
38
+ }, /*#__PURE__*/_react["default"].createElement(_mui.IconFirstPage, null)), /*#__PURE__*/_react["default"].createElement(_iconButton["default"], {
39
+ "aria-label": "previous page",
40
+ disabled: page === 0,
41
+ onClick: handleBackButtonClick
42
+ }, /*#__PURE__*/_react["default"].createElement(_mui.IconNavigateBefore, null)), /*#__PURE__*/_react["default"].createElement(_iconButton["default"], {
43
+ "aria-label": "next page",
44
+ disabled: page >= Math.ceil(count / rowsPerPage) - 1,
45
+ onClick: handleNextButtonClick
46
+ }, /*#__PURE__*/_react["default"].createElement(_mui.IconNavigateNext, null)), /*#__PURE__*/_react["default"].createElement(_iconButton["default"], {
47
+ "aria-label": "last page",
48
+ disabled: page >= Math.ceil(count / rowsPerPage) - 1,
49
+ onClick: handleLastPageButtonClick
50
+ }, /*#__PURE__*/_react["default"].createElement(_mui.IconLastPage, null)));
51
+ };
@@ -0,0 +1,3 @@
1
+ export { TableInteractive } from './TableInteractive';
2
+ export { getInitialColumns, setVisibleColumns, generateHeader, getVisibleColumns, getOrderedVisibleColumns } from './utils';
3
+ export type { ITableInteractive } from './TableInteractive';
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "TableInteractive", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _TableInteractive.TableInteractive;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "generateHeader", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _utils.generateHeader;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "getInitialColumns", {
19
+ enumerable: true,
20
+ get: function get() {
21
+ return _utils.getInitialColumns;
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "getOrderedVisibleColumns", {
25
+ enumerable: true,
26
+ get: function get() {
27
+ return _utils.getOrderedVisibleColumns;
28
+ }
29
+ });
30
+ Object.defineProperty(exports, "getVisibleColumns", {
31
+ enumerable: true,
32
+ get: function get() {
33
+ return _utils.getVisibleColumns;
34
+ }
35
+ });
36
+ Object.defineProperty(exports, "setVisibleColumns", {
37
+ enumerable: true,
38
+ get: function get() {
39
+ return _utils.setVisibleColumns;
40
+ }
41
+ });
42
+ var _TableInteractive = require("./TableInteractive");
43
+ var _utils = require("./utils");
@@ -0,0 +1,8 @@
1
+ export declare const ContentWrapper: import("@emotion/styled").StyledComponent<{
2
+ theme?: import("@emotion/react").Theme;
3
+ as?: React.ElementType;
4
+ }, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
5
+ export declare const TableHeaderContent: import("@emotion/styled").StyledComponent<{
6
+ theme?: import("@emotion/react").Theme;
7
+ as?: React.ElementType;
8
+ }, 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.TableHeaderContent = exports.ContentWrapper = void 0;
8
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
9
+ var _styled = _interopRequireDefault(require("@emotion/styled"));
10
+ var _theme = require("../../../theme");
11
+ var _templateObject, _templateObject2;
12
+ var gray = _theme.theme.colors.gray;
13
+ var ContentWrapper = exports.ContentWrapper = _styled["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: space-between;\n border-bottom: 2px solid ", ";\n"])), gray[300]);
14
+ var TableHeaderContent = exports.TableHeaderContent = _styled["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n margin: 0 0 8px 0;\n\n & > div {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n }\n"])));
@@ -0,0 +1 @@
1
+ import '@testing-library/jest-dom';
@@ -0,0 +1,6 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { TableInteractive } from '../table-interactive/TableInteractive';
3
+ declare const meta: Meta<typeof TableInteractive>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof TableInteractive>;
6
+ export declare const interactiveTable: Story;
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ import type { ITableInteractive } from './TableInteractive';
3
+ export declare const STORAGE_KEY = "visible-columns";
4
+ export declare const getInitialColumns: (columns: {
5
+ name: string;
6
+ label: string;
7
+ show: boolean;
8
+ }[], key: string) => string[];
9
+ export declare const setVisibleColumns: (columns: string[], key: string) => void;
10
+ export declare const generateHeader: (header: ITableInteractive["headers"][number], visibleColumns?: string[] | undefined) => React.JSX.Element | null;
11
+ export declare const getVisibleColumns: (headers: {
12
+ name: string;
13
+ label: string;
14
+ }[], visibleColumns?: string[] | undefined) => string[];
15
+ export declare const getOrderedVisibleColumns: (headers: {
16
+ name: string;
17
+ label: string;
18
+ }[], visibleColumns?: string[] | undefined) => string[];
@@ -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.setVisibleColumns = exports.getVisibleColumns = exports.getOrderedVisibleColumns = exports.getInitialColumns = exports.generateHeader = exports.STORAGE_KEY = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _tableCell = _interopRequireDefault(require("../table/table-cell"));
10
+ var STORAGE_KEY = exports.STORAGE_KEY = 'visible-columns';
11
+ var getInitialColumns = exports.getInitialColumns = function getInitialColumns(columns, key) {
12
+ var stored = localStorage.getItem(STORAGE_KEY);
13
+ if (stored) {
14
+ var parsed = JSON.parse(stored);
15
+ if (parsed !== null && parsed !== void 0 && parsed[key] && Array.isArray(parsed[key])) {
16
+ return parsed[key];
17
+ }
18
+ }
19
+ return columns.filter(function (col) {
20
+ return col.show;
21
+ }).map(function (col) {
22
+ return col.name;
23
+ });
24
+ };
25
+ var setVisibleColumns = exports.setVisibleColumns = function setVisibleColumns(columns, key) {
26
+ var stored = localStorage.getItem(STORAGE_KEY);
27
+ var parsed = {};
28
+ parsed = stored ? JSON.parse(stored) : {};
29
+ parsed[key] = columns;
30
+ localStorage.setItem(STORAGE_KEY, JSON.stringify(parsed));
31
+ };
32
+ var generateHeader = exports.generateHeader = function generateHeader(header, visibleColumns) {
33
+ if (!(visibleColumns !== null && visibleColumns !== void 0 && visibleColumns.includes(header.name))) return null;
34
+ return /*#__PURE__*/_react["default"].createElement(_tableCell["default"], {
35
+ key: header.name + '-header',
36
+ name: header.name
37
+ }, header.label);
38
+ };
39
+ var getVisibleColumns = exports.getVisibleColumns = function getVisibleColumns(headers, visibleColumns) {
40
+ return visibleColumns !== null && visibleColumns !== void 0 ? visibleColumns : headers.map(function (h) {
41
+ return h.name;
42
+ });
43
+ };
44
+ var getOrderedVisibleColumns = exports.getOrderedVisibleColumns = function getOrderedVisibleColumns(headers, visibleColumns) {
45
+ return headers.filter(function (header) {
46
+ return visibleColumns === null || visibleColumns === void 0 ? void 0 : visibleColumns.includes(header.name);
47
+ }).map(function (header) {
48
+ return header.name;
49
+ });
50
+ };
@@ -64,11 +64,10 @@ var SnackBar = function SnackBar(props) {
64
64
  var Icon = variants[variant].icon;
65
65
  var cursor = onClick ? 'pointer' : undefined;
66
66
  var handleClose = function handleClose(event) {
67
+ var _props$onClose;
67
68
  event.preventDefault();
68
69
  event.stopPropagation();
69
- if (props.onClose) {
70
- props.onClose();
71
- }
70
+ (_props$onClose = props.onClose) === null || _props$onClose === void 0 || _props$onClose.call(props);
72
71
  };
73
72
  return /*#__PURE__*/_react["default"].createElement(_Snackbar["default"], {
74
73
  id: id,
@@ -18,8 +18,6 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
18
18
  function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
19
19
  function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
20
20
  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
21
- var PIN_MIN_VALUE = 0;
22
- var PIN_MAX_VALUE = 9;
23
21
  var BACKSPACE_KEY = 'Backspace';
24
22
  var PinInput = function PinInput(_ref) {
25
23
  var pinLength = _ref.pinLength,
@@ -63,11 +61,11 @@ var PinInput = function PinInput(_ref) {
63
61
  changePinFocus(intValues.length - 1);
64
62
  };
65
63
  var _onChange = function onChange(event, index) {
64
+ var valuesArray = event.target.value.split('');
65
+ var value = valuesArray.pop();
66
66
  if (event.target.value.length > 1) {
67
67
  return;
68
68
  }
69
- var valuesArray = event.target.value.split('');
70
- var value = valuesArray.pop();
71
69
  if (!value || value === ' ' || value === '') {
72
70
  return;
73
71
  }
@@ -75,11 +73,9 @@ var PinInput = function PinInput(_ref) {
75
73
  if (isNaN(pinNumber) || value.length === 0) {
76
74
  return;
77
75
  }
78
- if (pinNumber >= PIN_MIN_VALUE && pinNumber <= PIN_MAX_VALUE) {
79
- onPinChanged(pinNumber, index);
80
- if (index < pinLength - 1) {
81
- changePinFocus(index + 1);
82
- }
76
+ onPinChanged(pinNumber, index);
77
+ if (index < pinLength - 1) {
78
+ changePinFocus(index + 1);
83
79
  }
84
80
  };
85
81
  var _onKeyDown = function onKeyDown(event, index) {
@@ -112,9 +112,7 @@ var TextField = function TextField(_ref3) {
112
112
  endAdornment: renderEndAdornment(otherProps.disabled, onClear)
113
113
  } : {};
114
114
  var handleClick = function handleClick() {
115
- if (onHelperClick) {
116
- onHelperClick();
117
- }
115
+ onHelperClick === null || onHelperClick === void 0 || onHelperClick();
118
116
  };
119
117
  var Wrapper = hasClear ? _styles.StaticTextFieldWrapper : _styles.TextFieldWrapper;
120
118
  var emojiRegex = /(\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])/g;
@@ -1 +1 @@
1
- export {};
1
+ import '@testing-library/jest-dom';
@@ -51,22 +51,16 @@ var ExpansionPanel = function ExpansionPanel(_ref) {
51
51
  }
52
52
  }
53
53
  var handleClick = function handleClick(event) {
54
- if (onHelperClick) {
55
- event.stopPropagation();
56
- onHelperClick();
57
- }
54
+ event.stopPropagation();
55
+ onHelperClick === null || onHelperClick === void 0 || onHelperClick();
58
56
  };
59
57
  var handleEditClick = function handleEditClick(event) {
60
- if (onEditClick) {
61
- event.stopPropagation();
62
- onEditClick();
63
- }
58
+ event.stopPropagation();
59
+ onEditClick === null || onEditClick === void 0 || onEditClick();
64
60
  };
65
61
  var handleSaveClick = function handleSaveClick(event) {
66
- if (onSaveClick) {
67
- event.stopPropagation();
68
- onSaveClick();
69
- }
62
+ event.stopPropagation();
63
+ onSaveClick === null || onSaveClick === void 0 || onSaveClick();
70
64
  };
71
65
  var renderHelper = /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, onHelperClick && /*#__PURE__*/_react["default"].createElement(_textField.HelperBox, {
72
66
  helperIcon: helperIcon,
@@ -21,11 +21,6 @@ var StepsList = function StepsList(_ref) {
21
21
  var steps = _ref.steps,
22
22
  onStepUrlClick = _ref.onStepUrlClick;
23
23
  return /*#__PURE__*/_react["default"].createElement(_List["default"], null, (steps || []).map(function (step, index) {
24
- var handleOnClickStepUrl = function handleOnClickStepUrl() {
25
- if (onStepUrlClick && step.url) {
26
- onStepUrlClick(step.url);
27
- }
28
- };
29
24
  return /*#__PURE__*/_react["default"].createElement(_styles.ListItemContainer, {
30
25
  key: index
31
26
  }, /*#__PURE__*/_react["default"].createElement(_mui.IconCheckCircle, {
@@ -43,7 +38,9 @@ var StepsList = function StepsList(_ref) {
43
38
  style: {
44
39
  backgroundColor: 'unset'
45
40
  },
46
- onClick: handleOnClickStepUrl
41
+ onClick: function onClick() {
42
+ return onStepUrlClick(step.url);
43
+ }
47
44
  }, /*#__PURE__*/_react["default"].createElement(_mui.IconHelp, {
48
45
  fontSize: "small",
49
46
  style: {
@@ -25,7 +25,7 @@ var IconWorkPermission = exports.IconWorkPermission = function IconWorkPermissio
25
25
  fillRule: "evenodd",
26
26
  clipRule: "evenodd",
27
27
  fill: color || primary.main,
28
- "fill-opacity": opacity || '0.1',
28
+ fillOpacity: opacity || '0.1',
29
29
  d: "M24.5449 96.5662L16.2114 99.8265C14.8225 100.251 13.2435 99.8265 12.4833 98.4815L0.363138 78.1009C-0.32401 76.8729 -0.0169863 75.2208 1.12339 74.3582L13.9307 64.665C13.609 62.8229 13.4921 60.8053 13.4921 58.9047C13.4921 57.004 13.7406 54.9718 14.0622 53.1443L1.25497 43.4511C-0.00236628 42.5886 -0.265529 40.995 0.49472 39.7084L12.5417 19.3279C13.302 17.9828 14.881 17.4857 16.2699 17.9828L31.3433 23.8747C34.4281 21.6086 37.8346 19.5764 41.5628 18.0998L43.8289 2.51467C44.0774 1.03803 45.2763 0 46.7968 0H71.0224C72.5429 0 73.8003 1.03803 74.0488 2.51467L76.3149 18.0998C80.0431 19.5764 83.3765 21.5355 86.5344 23.8747L101.608 17.9828C102.997 17.5588 104.576 17.9828 105.336 19.3279L117.456 39.7084C118.143 40.9365 117.836 42.5886 116.696 43.4511L103.889 53.1443C103.962 53.5537 104.02 53.9631 104.079 54.387C103.523 54.7818 102.982 55.235 102.485 55.7467L92.865 65.4545C93.479 62.8814 93.8007 60.2059 93.8007 57.4427C93.8007 38.2756 78.274 22.749 59.107 22.749C39.9399 22.749 24.4133 38.2756 24.4133 57.4427C24.4133 66.1124 27.6005 74.0512 32.8638 80.1332C30.9193 80.718 29.1503 81.7706 27.659 83.2765C25.2759 85.6888 24.0478 88.8029 23.9601 92.1656C23.9162 93.6861 24.1209 95.1773 24.5595 96.5809L24.5449 96.5662ZM60.4813 104.344L42.63 86.3321C41.0218 84.7093 38.9604 83.9344 36.6943 83.9344C34.4135 83.9344 32.3667 84.7093 30.7585 86.3321C29.1503 87.9549 28.39 90.0164 28.3169 92.2679C28.2584 94.5633 28.9894 96.7417 30.6123 98.3791L54.5455 122.532C55.3642 123.35 56.3292 124.008 57.4257 124.403C58.4052 124.754 59.4433 124.929 60.4959 124.929C61.5339 124.929 62.572 124.754 63.5515 124.403C64.648 124.008 65.613 123.35 66.4317 122.532L117.632 70.8493C119.254 69.2119 120 67.1066 120 64.8112C120 62.5158 119.269 60.4252 117.632 58.7877C116.009 57.1502 113.918 56.39 111.623 56.39C109.327 56.39 107.237 57.1502 105.614 58.7877L60.4959 104.33L60.4813 104.344Z"
30
30
  })) : /*#__PURE__*/_react["default"].createElement("svg", {
31
31
  fill: "none",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "flipper-ui",
3
- "version": "0.36.0",
3
+ "version": "0.36.1",
4
4
  "description": "React UI based on the @mui/material toolkit for the web",
5
5
  "main": "dist/index.js",
6
6
  "author": "NG",
@@ -31,7 +31,7 @@
31
31
  },
32
32
  "dependencies": {
33
33
  "@emotion/react": "11.14.0",
34
- "@emotion/styled": "11.14.0",
34
+ "@emotion/styled": "11.14.1",
35
35
  "@mui/icons-material": "6.4.8",
36
36
  "@mui/material": "6.4.8",
37
37
  "@mui/system": "6.4.8",
@@ -40,55 +40,55 @@
40
40
  "react-number-format": "5.4.4"
41
41
  },
42
42
  "devDependencies": {
43
- "@babel/cli": "7.27.2",
44
- "@babel/core": "7.27.1",
45
- "@babel/plugin-transform-runtime": "7.27.1",
46
- "@babel/preset-env": "7.27.2",
43
+ "@babel/cli": "7.28.0",
44
+ "@babel/core": "7.28.0",
45
+ "@babel/plugin-transform-runtime": "7.28.0",
46
+ "@babel/preset-env": "7.28.0",
47
47
  "@babel/preset-react": "7.27.1",
48
48
  "@babel/preset-typescript": "7.27.1",
49
- "@faker-js/faker": "9.7.0",
49
+ "@faker-js/faker": "9.9.0",
50
50
  "@storybook/addon-essentials": "8.6.12",
51
51
  "@storybook/addon-webpack5-compiler-babel": "3.0.6",
52
52
  "@storybook/blocks": "8.6.12",
53
53
  "@storybook/react": "8.6.12",
54
54
  "@storybook/react-webpack5": "8.6.12",
55
- "@stylistic/eslint-plugin": "4.2.0",
55
+ "@stylistic/eslint-plugin": "5.1.0",
56
56
  "@testing-library/dom": "10.4.0",
57
57
  "@testing-library/jest-dom": "6.6.3",
58
58
  "@testing-library/react": "16.3.0",
59
59
  "@testing-library/user-event": "14.6.1",
60
- "@types/jest": "29.5.14",
61
- "@types/node": "22.15.18",
60
+ "@types/jest": "30.0.0",
61
+ "@types/node": "24.0.10",
62
62
  "@types/ramda": "0.30.2",
63
63
  "@types/react": "18.3.12",
64
- "@typescript-eslint/eslint-plugin": "8.32.1",
65
- "@typescript-eslint/parser": "8.32.1",
64
+ "@typescript-eslint/eslint-plugin": "8.35.1",
65
+ "@typescript-eslint/parser": "8.35.1",
66
66
  "babel-loader": "10.0.0",
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.26.0",
70
+ "eslint": "9.30.1",
71
71
  "eslint-config-prettier": "10.1.5",
72
- "eslint-import-resolver-typescript": "4.3.4",
73
- "eslint-plugin-import": "2.31.0",
74
- "eslint-plugin-prettier": "5.4.0",
72
+ "eslint-import-resolver-typescript": "4.4.4",
73
+ "eslint-plugin-import": "2.32.0",
74
+ "eslint-plugin-prettier": "5.5.1",
75
75
  "eslint-plugin-react": "7.37.5",
76
76
  "eslint-plugin-react-hooks": "5.2.0",
77
77
  "fs-extra": "11.3.0",
78
78
  "identity-obj-proxy": "3.0.0",
79
- "jest": "29.7.0",
80
- "jest-environment-jsdom": "29.7.0",
81
- "prettier": "3.5.3",
79
+ "jest": "30.0.4",
80
+ "jest-environment-jsdom": "30.0.4",
81
+ "prettier": "3.6.2",
82
82
  "ramda": "0.30.1",
83
83
  "react": "18.3.1",
84
84
  "react-dom": "18.3.1",
85
85
  "storybook": "8.6.12",
86
- "ts-jest": "29.3.2",
86
+ "ts-jest": "29.4.0",
87
87
  "ts-loader": "9.5.2",
88
88
  "typescript": "5.8.3",
89
- "typescript-eslint": "8.32.1",
89
+ "typescript-eslint": "8.35.1",
90
90
  "uuid": "11.1.0",
91
- "webpack": "5.99.8"
91
+ "webpack": "5.99.9"
92
92
  },
93
93
  "peerDependencies": {
94
94
  "date-fns": "^4.0.0",
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+ import type { ITableInteractive } from '@/core/data-display/table-interactive/TableInteractive';
3
+ interface TableInteractiveWrapperProps extends Partial<ITableInteractive> {
4
+ initialArgs?: Partial<ITableInteractive>;
5
+ onConfirmMock?: jest.Mock;
6
+ onCancelMock?: jest.Mock;
7
+ setPageMock?: jest.Mock;
8
+ setRowsPerPageMock?: jest.Mock;
9
+ setVisibleColumnsMock?: jest.Mock;
10
+ }
11
+ export declare const HEADERS: {
12
+ name: string;
13
+ label: string;
14
+ show: boolean;
15
+ }[];
16
+ export declare const TABLE_DATA: {
17
+ name: string;
18
+ email: string;
19
+ cel: string;
20
+ }[];
21
+ export declare const InteractiveTableWrapper: ({ initialArgs, onConfirmMock, onCancelMock, setVisibleColumnsMock, setPageMock, setRowsPerPageMock, ...props }: TableInteractiveWrapperProps) => React.JSX.Element;
22
+ export {};