@symply.io/basic-components 1.0.0-alpha.8 → 1.0.0-beta.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 (123) hide show
  1. package/AlertDialog/index.d.ts +0 -1
  2. package/AlertDialog/index.js +2 -2
  3. package/Autocomplete/index.d.ts +4 -0
  4. package/Autocomplete/index.js +38 -0
  5. package/Autocomplete/types.d.ts +15 -0
  6. package/Autocomplete/types.js +1 -0
  7. package/Autocomplete/useInteractions.d.ts +5 -0
  8. package/Autocomplete/useInteractions.js +9 -0
  9. package/AutocompleteWithFilter/index.d.ts +4 -0
  10. package/AutocompleteWithFilter/index.js +54 -0
  11. package/AutocompleteWithFilter/types.d.ts +16 -0
  12. package/AutocompleteWithFilter/types.js +1 -0
  13. package/BasicModal/Content.d.ts +0 -1
  14. package/BasicModal/Content.js +1 -1
  15. package/BasicModal/index.d.ts +0 -1
  16. package/BasicModal/index.js +3 -6
  17. package/BreadCrumbs/index.d.ts +4 -0
  18. package/BreadCrumbs/index.js +37 -0
  19. package/BreadCrumbs/types.d.ts +9 -0
  20. package/BreadCrumbs/types.js +1 -0
  21. package/CheckBox/CheckBox.d.ts +3 -0
  22. package/CheckBox/CheckBox.js +36 -0
  23. package/CheckBox/CheckBoxGroup.d.ts +3 -0
  24. package/CheckBox/CheckBoxGroup.js +30 -0
  25. package/CheckBox/index.d.ts +3 -0
  26. package/CheckBox/index.js +3 -0
  27. package/CheckBox/types.d.ts +12 -0
  28. package/CheckBox/types.js +1 -0
  29. package/Copyright/index.d.ts +4 -0
  30. package/Copyright/index.js +25 -0
  31. package/Copyright/types.d.ts +5 -0
  32. package/Copyright/types.js +1 -0
  33. package/DateInput/FullDateInput/index.d.ts +5 -0
  34. package/DateInput/FullDateInput/index.js +66 -0
  35. package/DateInput/FullDateInput/types.d.ts +14 -0
  36. package/DateInput/FullDateInput/types.js +1 -0
  37. package/DateInput/FullDateInput/useInteractions.d.ts +8 -0
  38. package/DateInput/FullDateInput/useInteractions.js +20 -0
  39. package/DateInput/MonthDayInput/index.d.ts +5 -0
  40. package/DateInput/MonthDayInput/index.js +54 -0
  41. package/DateInput/MonthDayInput/types.d.ts +14 -0
  42. package/DateInput/MonthDayInput/types.js +1 -0
  43. package/DateInput/MonthDayInput/useInteractions.d.ts +8 -0
  44. package/DateInput/MonthDayInput/useInteractions.js +19 -0
  45. package/DateInput/MonthYearInput/index.d.ts +5 -0
  46. package/DateInput/MonthYearInput/index.js +55 -0
  47. package/DateInput/MonthYearInput/types.d.ts +14 -0
  48. package/DateInput/MonthYearInput/types.js +1 -0
  49. package/DateInput/MonthYearInput/useInteractions.d.ts +8 -0
  50. package/DateInput/MonthYearInput/useInteractions.js +19 -0
  51. package/DateInput/index.d.ts +6 -0
  52. package/DateInput/index.js +6 -0
  53. package/DigitInput/index.d.ts +1 -4
  54. package/DigitInput/index.js +3 -3
  55. package/DigitInput/types.d.ts +2 -1
  56. package/DynamicHeaderBar/HeaderBar.js +1 -1
  57. package/DynamicHeaderBar/HeaderButtons.d.ts +0 -1
  58. package/DynamicHeaderBar/HeaderButtons.js +5 -5
  59. package/DynamicHeaderBar/HeaderLine.js +1 -1
  60. package/DynamicHeaderBar/index.js +2 -2
  61. package/FeinInput/index.d.ts +6 -0
  62. package/FeinInput/index.js +73 -0
  63. package/FeinInput/types.d.ts +9 -0
  64. package/FeinInput/types.js +1 -0
  65. package/FeinInput/useInteractions.d.ts +8 -0
  66. package/FeinInput/useInteractions.js +16 -0
  67. package/FormRadioGroup/index.d.ts +0 -1
  68. package/FormRadioGroup/index.js +3 -3
  69. package/FormSelector/MultipleSelector.d.ts +0 -1
  70. package/FormSelector/MultipleSelector.js +14 -3
  71. package/FormSelector/SimpleSelector.d.ts +0 -1
  72. package/FormSelector/SimpleSelector.js +3 -3
  73. package/FormSelector/types.d.ts +2 -7
  74. package/HelpCaption/index.js +2 -2
  75. package/LoadingModal/index.d.ts +0 -1
  76. package/LoadingModal/index.js +1 -1
  77. package/MenuButtonGroup/MenuItem.d.ts +0 -1
  78. package/MenuButtonGroup/MenuItem.js +1 -1
  79. package/MenuButtonGroup/index.js +2 -2
  80. package/NumberInput/index.d.ts +2 -3
  81. package/NumberInput/index.js +1 -1
  82. package/PasswordInput/ConfirmPassword.d.ts +2 -3
  83. package/PasswordInput/ConfirmPassword.js +1 -1
  84. package/PasswordInput/Password.d.ts +3 -4
  85. package/PasswordInput/Password.js +2 -2
  86. package/PhoneNumberInput/index.d.ts +2 -3
  87. package/PhoneNumberInput/index.js +2 -2
  88. package/README.md +380 -14
  89. package/Sidebar/SidebarItem.d.ts +3 -0
  90. package/Sidebar/SidebarItem.js +62 -0
  91. package/Sidebar/SidebarItemsGroup.d.ts +5 -0
  92. package/Sidebar/SidebarItemsGroup.js +38 -0
  93. package/Sidebar/SidebarLink.d.ts +3 -0
  94. package/Sidebar/SidebarLink.js +37 -0
  95. package/Sidebar/index.d.ts +7 -0
  96. package/Sidebar/index.js +30 -0
  97. package/Sidebar/types.d.ts +31 -0
  98. package/Sidebar/types.js +1 -0
  99. package/SocialInput/index.d.ts +6 -0
  100. package/SocialInput/index.js +76 -0
  101. package/SocialInput/types.d.ts +9 -0
  102. package/SocialInput/types.js +1 -0
  103. package/SocialInput/useInteractions.d.ts +10 -0
  104. package/SocialInput/useInteractions.js +26 -0
  105. package/TabGroup/index.js +10 -5
  106. package/TablePagination/Actions.d.ts +3 -0
  107. package/TablePagination/Actions.js +27 -0
  108. package/TablePagination/index.d.ts +4 -0
  109. package/TablePagination/index.js +30 -0
  110. package/TablePagination/types.d.ts +14 -0
  111. package/TablePagination/types.js +1 -0
  112. package/TablePagination/useInteractions.d.ts +14 -0
  113. package/TablePagination/useInteractions.js +23 -0
  114. package/TextInput/index.d.ts +2 -3
  115. package/TextInput/index.js +13 -3
  116. package/ToastPrompt/Presentation.js +3 -3
  117. package/ToastPrompt/index.js +1 -1
  118. package/VideoPlayerModal/index.d.ts +1 -3
  119. package/VideoPlayerModal/index.js +2 -2
  120. package/VideoPlayerModal/types.d.ts +2 -1
  121. package/index.d.ts +18 -0
  122. package/index.js +18 -0
  123. package/package.json +8 -2
@@ -0,0 +1,30 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx } from "react/jsx-runtime";
13
+ import { Match } from "@reach/router";
14
+ import List from "@mui/material/List";
15
+ import useTheme from "@mui/material/styles/useTheme";
16
+ import ThemeProvider from "@mui/material/styles/ThemeProvider";
17
+ import SidebarItem from "./SidebarItem";
18
+ import SidebarItemsGroup from "./SidebarItemsGroup";
19
+ import SidebarLink from "./SidebarLink";
20
+ function Sidebar(props) {
21
+ var items = props.items;
22
+ var theme = useTheme();
23
+ return (_jsx(ThemeProvider, __assign({ theme: theme }, { children: _jsx(List, { children: items.map(function (i) {
24
+ var children = i.children, path = i.path, icon = i.icon, name = i.name, lock = i.lock, beta = i.beta, titleForLock = i.titleForLock, betaTagColor = i.betaTagColor, primaryColor = i.primaryColor, secondaryColor = i.secondaryColor;
25
+ return children ? (_jsx(SidebarItemsGroup, { item: i }, name)) : (_jsx(Match, __assign({ path: path === "/" ? path : path.concat("/*") }, { children: function (prop) { return (_jsx(SidebarLink, { name: name, path: path, icon: icon, lock: lock, beta: beta, titleForLock: titleForLock, active: prop.match !== null, betaTagColor: betaTagColor, primaryColor: primaryColor, secondaryColor: secondaryColor }, name)); } }), name));
26
+ }) }) })));
27
+ }
28
+ export default Sidebar;
29
+ export { SidebarItem, SidebarItemsGroup };
30
+ export * from "./types";
@@ -0,0 +1,31 @@
1
+ import { CSSProperties, ReactElement } from "react";
2
+ export interface SidebarItemBaseProps {
3
+ path: string;
4
+ name: string;
5
+ lock?: boolean;
6
+ beta?: boolean;
7
+ titleForLock?: string;
8
+ betaTagColor?: CSSProperties["color"];
9
+ primaryColor?: CSSProperties["color"];
10
+ secondaryColor?: CSSProperties["color"];
11
+ icon: ReactElement;
12
+ }
13
+ export interface SidebarBaseProps extends SidebarItemBaseProps {
14
+ children?: Array<SidebarItemBaseProps>;
15
+ }
16
+ export interface SidebarProps {
17
+ items: Array<SidebarBaseProps>;
18
+ }
19
+ export interface SidebarItemProps extends Omit<SidebarItemBaseProps, "path"> {
20
+ active?: boolean;
21
+ expand?: boolean;
22
+ isSub?: boolean;
23
+ hasChildren?: boolean;
24
+ onClick?: () => void;
25
+ }
26
+ export interface SidebarLinkProps extends SidebarItemProps {
27
+ path: string;
28
+ }
29
+ export interface SidebarItemsGroupProps {
30
+ item: SidebarBaseProps;
31
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,6 @@
1
+ import { SocialInputProps } from "./types";
2
+ export declare function SocialInputFormat(str: string): string;
3
+ export declare function verifySocial(socialString: string): boolean;
4
+ declare function SocialInput(props: SocialInputProps): JSX.Element;
5
+ export default SocialInput;
6
+ export * from "./types";
@@ -0,0 +1,76 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __rest = (this && this.__rest) || function (s, e) {
13
+ var t = {};
14
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
15
+ t[p] = s[p];
16
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
17
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
18
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
19
+ t[p[i]] = s[p[i]];
20
+ }
21
+ return t;
22
+ };
23
+ import { jsx as _jsx } from "react/jsx-runtime";
24
+ import { useRifm } from "rifm";
25
+ import ThemeProvider from "@mui/material/styles/ThemeProvider";
26
+ import InputAdornment from "@mui/material/InputAdornment";
27
+ import Visibility from "@mui/icons-material/Visibility";
28
+ import VisibilityOff from "@mui/icons-material/VisibilityOff";
29
+ import IconButton from "@mui/material/IconButton";
30
+ import TextField from "@mui/material/TextField";
31
+ import useInteractions from "./useInteractions";
32
+ import useCustomTheme from "../useCustomTheme";
33
+ export function SocialInputFormat(str) {
34
+ var digits = (str.match(/\d+/g) || []).join("");
35
+ var chars = digits.split("");
36
+ return chars.reduce(function (prev, curr, index) {
37
+ if (index === 3) {
38
+ return "".concat(prev, " - ").concat(curr);
39
+ }
40
+ else if (index === 5) {
41
+ return "".concat(prev, " - ").concat(curr);
42
+ }
43
+ else {
44
+ return "".concat(prev).concat(curr);
45
+ }
46
+ }, "");
47
+ }
48
+ export function verifySocial(socialString) {
49
+ var reg = /^\d{3}\s?-\s?\d{2}\s?-\s?\d{4}$/g;
50
+ return reg.test(socialString);
51
+ }
52
+ function SocialInput(props) {
53
+ var value = props.value, _a = props.helperText, helperText = _a === void 0 ? "Please enter a valid SSN" : _a, error = props.error, verifyFn = props.verifyFn, onChange = props.onChange, primaryColor = props.primaryColor, secondaryColor = props.secondaryColor, rest = __rest(props, ["value", "helperText", "error", "verifyFn", "onChange", "primaryColor", "secondaryColor"]);
54
+ var theme = useCustomTheme({ primaryColor: primaryColor, secondaryColor: secondaryColor });
55
+ var _b = useInteractions({
56
+ value: value
57
+ }), visible = _b.visible, valLength = _b.valLength, addMask = _b.addMask, onSwitching = _b.onSwitching;
58
+ var rifm = useRifm({
59
+ mask: true,
60
+ value: String(value),
61
+ onChange: onChange,
62
+ replace: addMask,
63
+ format: SocialInputFormat
64
+ });
65
+ return (_jsx(ThemeProvider, __assign({ theme: theme }, { children: _jsx(TextField, __assign({ helperText: valLength > 0 && (verifyFn ? !verifyFn(value) : !verifySocial(value))
66
+ ? helperText
67
+ : "", value: rifm.value, onChange: rifm.onChange, type: visible ? "text" : "password", error: error ||
68
+ (valLength > 0 &&
69
+ (verifyFn ? !verifyFn(value) : !verifySocial(value))), InputProps: {
70
+ endAdornment: (_jsx(InputAdornment, __assign({ position: "end" }, { children: valLength === 9 && (_jsx(IconButton, __assign({ "aria-label": "Toggle SSN visibility", onClick: onSwitching }, { children: visible ? _jsx(Visibility, {}) : _jsx(VisibilityOff, {}) }))) })))
71
+ }, InputLabelProps: {
72
+ shrink: true
73
+ } }, rest)) })));
74
+ }
75
+ export default SocialInput;
76
+ export * from "./types";
@@ -0,0 +1,9 @@
1
+ import { CSSProperties } from "react";
2
+ import { TextFieldProps } from "@mui/material/TextField";
3
+ export interface SocialInputProps extends Omit<TextFieldProps, "onChange"> {
4
+ onChange: (value: string) => void;
5
+ verifyFn?: (value?: string) => boolean;
6
+ value: string;
7
+ primaryColor?: CSSProperties["color"];
8
+ secondaryColor?: CSSProperties["color"];
9
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,10 @@
1
+ interface InteractionProps {
2
+ value: string;
3
+ }
4
+ declare function useInteractions(props: InteractionProps): {
5
+ visible: boolean;
6
+ valLength: number;
7
+ addMask: (str: string) => string;
8
+ onSwitching: () => void;
9
+ };
10
+ export default useInteractions;
@@ -0,0 +1,26 @@
1
+ import { useCallback, useMemo, useState, useEffect } from "react";
2
+ function useInteractions(props) {
3
+ var value = props.value;
4
+ var _a = useState(false), visible = _a[0], setVisible = _a[1];
5
+ var valLength = useMemo(function () {
6
+ var digitsArr = String(value).match(/\d/g);
7
+ return digitsArr ? digitsArr.length : 0;
8
+ }, [value]);
9
+ var addMask = useCallback(function (str) {
10
+ var digits = (str.match(/\d+/g) || []).join("");
11
+ var headerCode = digits.slice(0, 3).padEnd(3, "_");
12
+ var middleCode = digits.slice(3, 5).padEnd(2, "_");
13
+ var tailCode = digits.slice(5, 9).padEnd(4, "_");
14
+ return "".concat(headerCode, " - ").concat(middleCode, " - ").concat(tailCode);
15
+ }, []);
16
+ var onSwitching = useCallback(function () {
17
+ setVisible(function (v) { return !v; });
18
+ }, []);
19
+ useEffect(function () {
20
+ if (!visible && valLength !== 9) {
21
+ setVisible(true);
22
+ }
23
+ }, [valLength, visible]);
24
+ return { visible: visible, valLength: valLength, addMask: addMask, onSwitching: onSwitching };
25
+ }
26
+ export default useInteractions;
package/TabGroup/index.js CHANGED
@@ -10,7 +10,7 @@ var __assign = (this && this.__assign) || function () {
10
10
  return __assign.apply(this, arguments);
11
11
  };
12
12
  import { jsx as _jsx } from "react/jsx-runtime";
13
- import { useState, forwardRef, useImperativeHandle } from "react";
13
+ import { useState, useEffect, forwardRef, useImperativeHandle } from "react";
14
14
  import Tab from "@mui/material/Tab";
15
15
  import Tabs from "@mui/material/Tabs";
16
16
  import Typography from "@mui/material/Typography";
@@ -18,30 +18,35 @@ import useMediaQuery from "@mui/material/useMediaQuery";
18
18
  import ThemeProvider from "@mui/material/styles/ThemeProvider";
19
19
  import useCustomTheme from "../useCustomTheme";
20
20
  var TabGroup = forwardRef(function (props, ref) {
21
- var tabs = props.tabs, _a = props.textColor, textColor = _a === void 0 ? "primary" : _a, _b = props.variant, variant = _b === void 0 ? "scrollable" : _b, primaryColor = props.primaryColor, secondaryColor = props.secondaryColor, onTabChange = props.onTabChange, _c = props.currentTabIndex, outerTabIndex = _c === void 0 ? 0 : _c;
21
+ var tabs = props.tabs, _a = props.textColor, textColor = _a === void 0 ? "primary" : _a, _b = props.variant, variant = _b === void 0 ? "scrollable" : _b, primaryColor = props.primaryColor, secondaryColor = props.secondaryColor, onTabChange = props.onTabChange, outerTabIndex = props.currentTabIndex;
22
22
  var theme = useCustomTheme({ primaryColor: primaryColor, secondaryColor: secondaryColor });
23
23
  var mobileViewport = useMediaQuery(theme.breakpoints.down("md"));
24
- var _d = useState(outerTabIndex), currentTabIndex = _d[0], setCurrentTabIndex = _d[1];
24
+ var _c = useState(outerTabIndex || 0), currentTabIndex = _c[0], setCurrentTabIndex = _c[1];
25
25
  var onClick = function (index) {
26
26
  setCurrentTabIndex(index);
27
27
  };
28
28
  useImperativeHandle(ref, function () { return ({
29
29
  tabIndex: currentTabIndex
30
30
  }); });
31
+ useEffect(function () {
32
+ if (outerTabIndex !== undefined && outerTabIndex !== currentTabIndex) {
33
+ setCurrentTabIndex(outerTabIndex);
34
+ }
35
+ }, [outerTabIndex, currentTabIndex]);
31
36
  return (_jsx(ThemeProvider, __assign({ theme: theme }, { children: _jsx(Tabs, __assign({ value: currentTabIndex, TabIndicatorProps: { hidden: true }, variant: mobileViewport ? "scrollable" : variant, textColor: textColor, onChange: function (_, val) {
32
37
  onClick(val);
33
38
  onTabChange(val);
34
39
  } }, { children: tabs.map(function (tab, index) {
35
40
  var text = tab.text, _a = tab.disabled, disabled = _a === void 0 ? false : _a;
36
41
  var active = currentTabIndex === index;
37
- return (_jsx(Tab, { disableFocusRipple: true, disableRipple: true, label: _jsx(Typography, __assign({ variant: "body2" }, { children: text }), void 0), disabled: disabled, sx: {
42
+ return (_jsx(Tab, { disableFocusRipple: true, disableRipple: true, label: _jsx(Typography, __assign({ variant: "body2" }, { children: text })), disabled: disabled, sx: {
38
43
  cursor: disabled ? "not-allowed" : "pointer",
39
44
  margin: theme.spacing(0.75, 0.25),
40
45
  background: active ? "#fff" : undefined,
41
46
  borderRadius: active ? theme.spacing(0.5) : undefined,
42
47
  boxShadow: active ? "0px 4px 6px #acc1c2" : undefined
43
48
  } }, index));
44
- }) }), void 0) }), void 0));
49
+ }) })) })));
45
50
  });
46
51
  export default TabGroup;
47
52
  export * from "./types";
@@ -0,0 +1,3 @@
1
+ import { TablePaginationActionsProps } from "./types";
2
+ declare function TablePaginationActions(props: TablePaginationActionsProps): JSX.Element;
3
+ export default TablePaginationActions;
@@ -0,0 +1,27 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
+ import Box from "@mui/material/Box";
14
+ import IconButton from "@mui/material/IconButton";
15
+ import FirstPageIcon from "@mui/icons-material/FirstPage";
16
+ import KeyboardArrowLeft from "@mui/icons-material/KeyboardArrowLeft";
17
+ import KeyboardArrowRight from "@mui/icons-material/KeyboardArrowRight";
18
+ import LastPageIcon from "@mui/icons-material/LastPage";
19
+ import useInteractions from "./useInteractions";
20
+ import useCustomTheme from "../useCustomTheme";
21
+ function TablePaginationActions(props) {
22
+ var count = props.count, page = props.page, rowsPerPage = props.rowsPerPage, onPageChange = props.onPageChange;
23
+ var theme = useCustomTheme();
24
+ var _a = useInteractions({ count: count, page: page, rowsPerPage: rowsPerPage, onPageChange: onPageChange }), onBackButtonClick = _a.onBackButtonClick, onNextButtonClick = _a.onNextButtonClick, onLastPageButtonClick = _a.onLastPageButtonClick, onFirstPageButtonClick = _a.onFirstPageButtonClick;
25
+ return (_jsxs(Box, __assign({ sx: { flexShrink: 0, ml: 2.5 } }, { children: [_jsx(IconButton, __assign({ onClick: onFirstPageButtonClick, disabled: page === 0, "aria-label": "first page" }, { children: theme.direction === "rtl" ? _jsx(LastPageIcon, {}) : _jsx(FirstPageIcon, {}) })), _jsx(IconButton, __assign({ onClick: onBackButtonClick, disabled: page === 0, "aria-label": "previous page" }, { children: theme.direction === "rtl" ? (_jsx(KeyboardArrowRight, {})) : (_jsx(KeyboardArrowLeft, {})) })), _jsx(IconButton, __assign({ onClick: onNextButtonClick, disabled: page >= Math.ceil(count / rowsPerPage) - 1, "aria-label": "next page" }, { children: theme.direction === "rtl" ? (_jsx(KeyboardArrowLeft, {})) : (_jsx(KeyboardArrowRight, {})) })), _jsx(IconButton, __assign({ onClick: onLastPageButtonClick, disabled: page >= Math.ceil(count / rowsPerPage) - 1, "aria-label": "last page" }, { children: theme.direction === "rtl" ? _jsx(FirstPageIcon, {}) : _jsx(LastPageIcon, {}) }))] })));
26
+ }
27
+ export default TablePaginationActions;
@@ -0,0 +1,4 @@
1
+ import { TablePaginationProps } from "./types";
2
+ declare function Pagination(props: TablePaginationProps): JSX.Element;
3
+ export default Pagination;
4
+ export * from "./types";
@@ -0,0 +1,30 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx } from "react/jsx-runtime";
13
+ import TableRow from "@mui/material/TableRow";
14
+ import TableFooter from "@mui/material/TableFooter";
15
+ import TablePagination from "@mui/material/TablePagination";
16
+ import ThemeProvider from "@mui/material/styles/ThemeProvider";
17
+ import TablePaginationActions from "./Actions";
18
+ import useCustomTheme from "../useCustomTheme";
19
+ function Pagination(props) {
20
+ var colSpan = props.colSpan, count = props.count, page = props.page, rowsPerPage = props.rowsPerPage, _a = props.rowsPerPageOptions, rowsPerPageOptions = _a === void 0 ? [5, 10, 20, 30] : _a, onPageChange = props.onPageChange, onRowsPerPageChange = props.onRowsPerPageChange, primaryColor = props.primaryColor, secondaryColor = props.secondaryColor;
21
+ var theme = useCustomTheme({ primaryColor: primaryColor, secondaryColor: secondaryColor });
22
+ return (_jsx(ThemeProvider, __assign({ theme: theme }, { children: count && (_jsx(TableFooter, { children: _jsx(TableRow, { children: _jsx(TablePagination, { colSpan: colSpan, count: count, rowsPerPage: rowsPerPage, page: page, SelectProps: {
23
+ inputProps: {
24
+ "aria-label": "rows per page",
25
+ },
26
+ native: true,
27
+ }, rowsPerPageOptions: rowsPerPageOptions, onPageChange: onPageChange, onRowsPerPageChange: onRowsPerPageChange, ActionsComponent: TablePaginationActions }) }) })) })));
28
+ }
29
+ export default Pagination;
30
+ export * from "./types";
@@ -0,0 +1,14 @@
1
+ import { MouseEvent, ChangeEvent, CSSProperties } from "react";
2
+ export interface TablePaginationActionsProps {
3
+ count: number;
4
+ page: number;
5
+ rowsPerPage: number;
6
+ onPageChange: (event: MouseEvent<HTMLButtonElement> | null, newPage: number) => void;
7
+ }
8
+ export interface TablePaginationProps extends TablePaginationActionsProps {
9
+ colSpan: number;
10
+ rowsPerPageOptions?: Array<number>;
11
+ onRowsPerPageChange: (event: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => void;
12
+ primaryColor?: CSSProperties["color"];
13
+ secondaryColor?: CSSProperties["color"];
14
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,14 @@
1
+ import { MouseEvent } from "react";
2
+ interface InteractionProps {
3
+ count: number;
4
+ page: number;
5
+ rowsPerPage: number;
6
+ onPageChange: (event: MouseEvent<HTMLButtonElement> | null, newPage: number) => void;
7
+ }
8
+ declare function useInteractions(props: InteractionProps): {
9
+ onBackButtonClick: (event: MouseEvent<HTMLButtonElement>) => void;
10
+ onNextButtonClick: (event: MouseEvent<HTMLButtonElement>) => void;
11
+ onLastPageButtonClick: (event: MouseEvent<HTMLButtonElement>) => void;
12
+ onFirstPageButtonClick: (event: MouseEvent<HTMLButtonElement>) => void;
13
+ };
14
+ export default useInteractions;
@@ -0,0 +1,23 @@
1
+ import { useCallback } from "react";
2
+ function useInteractions(props) {
3
+ var count = props.count, page = props.page, rowsPerPage = props.rowsPerPage, onPageChange = props.onPageChange;
4
+ var onFirstPageButtonClick = useCallback(function (event) {
5
+ onPageChange(event, 0);
6
+ }, [onPageChange]);
7
+ var onBackButtonClick = useCallback(function (event) {
8
+ onPageChange(event, page - 1);
9
+ }, [onPageChange, page]);
10
+ var onNextButtonClick = useCallback(function (event) {
11
+ onPageChange(event, page + 1);
12
+ }, [onPageChange, page]);
13
+ var onLastPageButtonClick = useCallback(function (event) {
14
+ onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1));
15
+ }, [count, onPageChange, rowsPerPage]);
16
+ return {
17
+ onBackButtonClick: onBackButtonClick,
18
+ onNextButtonClick: onNextButtonClick,
19
+ onLastPageButtonClick: onLastPageButtonClick,
20
+ onFirstPageButtonClick: onFirstPageButtonClick,
21
+ };
22
+ }
23
+ export default useInteractions;
@@ -1,7 +1,6 @@
1
1
  import { CSSProperties } from "react";
2
2
  import { TextFieldProps } from "@mui/material/TextField";
3
- declare type TextProps = Omit<TextFieldProps, "onChange">;
4
- export interface TextInputProps {
3
+ export interface TextInputProps extends Omit<TextFieldProps, "onChange"> {
5
4
  onChange: (value: string) => void;
6
5
  value: string;
7
6
  tooltip?: TextFieldProps;
@@ -10,5 +9,5 @@ export interface TextInputProps {
10
9
  primaryColor?: CSSProperties["color"];
11
10
  secondaryColor?: CSSProperties["color"];
12
11
  }
13
- declare const TextInput: (props: TextInputProps & TextProps) => JSX.Element;
12
+ declare const TextInput: (props: TextInputProps) => JSX.Element;
14
13
  export default TextInput;
@@ -27,12 +27,22 @@ import ThemeProvider from "@mui/material/styles/ThemeProvider";
27
27
  import useInteractions from "./useInteractions";
28
28
  import useCustomTheme from "../useCustomTheme";
29
29
  var TextInput = function (props) {
30
- var _a = props.type, type = _a === void 0 ? "text" : _a, onChange = props.onChange, value = props.value, _b = props.size, size = _b === void 0 ? "small" : _b, tooltip = props.tooltip, _c = props.maxLength, maxLength = _c === void 0 ? 999 : _c, _d = props.minLength, minLength = _d === void 0 ? 0 : _d, primaryColor = props.primaryColor, secondaryColor = props.secondaryColor, rest = __rest(props, ["type", "onChange", "value", "size", "tooltip", "maxLength", "minLength", "primaryColor", "secondaryColor"]);
30
+ var _a = props.type, type = _a === void 0 ? "text" : _a, onChange = props.onChange, value = props.value, _b = props.size, size = _b === void 0 ? "small" : _b, tooltip = props.tooltip, _c = props.maxLength, maxLength = _c === void 0 ? 999 : _c, _d = props.minLength, minLength = _d === void 0 ? 0 : _d, primaryColor = props.primaryColor, secondaryColor = props.secondaryColor, onBlur = props.onBlur, onFocus = props.onFocus, rest = __rest(props, ["type", "onChange", "value", "size", "tooltip", "maxLength", "minLength", "primaryColor", "secondaryColor", "onBlur", "onFocus"]);
31
31
  var theme = useCustomTheme({ primaryColor: primaryColor, secondaryColor: secondaryColor });
32
32
  var _e = useInteractions(), tooltipOpen = _e.tooltipOpen, onOpenTooltip = _e.onOpenTooltip, onCloseTooltip = _e.onCloseTooltip;
33
- return (_jsx(ThemeProvider, __assign({ theme: theme }, { children: _jsx(Tooltip, __assign({ title: tooltip !== null && tooltip !== void 0 ? tooltip : "", open: !!tooltip && tooltipOpen }, { children: _jsx(Field, __assign({ size: size, margin: "dense", type: type, value: value, onFocus: onOpenTooltip, onBlur: onCloseTooltip, onChange: function (event) {
33
+ return (_jsx(ThemeProvider, __assign({ theme: theme }, { children: _jsx(Tooltip, __assign({ title: tooltip !== null && tooltip !== void 0 ? tooltip : "", open: !!tooltip && tooltipOpen }, { children: _jsx(Field, __assign({ size: size, margin: "dense", type: type, value: value, onFocus: function (event) {
34
+ onOpenTooltip();
35
+ if (onFocus) {
36
+ onFocus(event);
37
+ }
38
+ }, onBlur: function (event) {
39
+ onCloseTooltip();
40
+ if (onBlur) {
41
+ onBlur(event);
42
+ }
43
+ }, onChange: function (event) {
34
44
  event.preventDefault();
35
45
  onChange(event.target.value);
36
- }, inputProps: { maxLength: maxLength, minLength: minLength } }, rest), void 0) }), void 0) }), void 0));
46
+ }, inputProps: { maxLength: maxLength, minLength: minLength } }, rest)) })) })));
37
47
  };
38
48
  export default TextInput;
@@ -34,7 +34,7 @@ import { green, amber, red, blue } from "@mui/material/colors";
34
34
  import useCustomTheme from "../useCustomTheme";
35
35
  var ToastPrompt = function (props) {
36
36
  var _a;
37
- var _b = props.open, open = _b === void 0 ? false : _b, _c = props.vertical, vertical = _c === void 0 ? "top" : _c, _d = props.horizontal, horizontal = _d === void 0 ? "center" : _d, _e = props.timeout, timeout = _e === void 0 ? 3000 : _e, onClose = props.onClose, _f = props.transitionDirection, transitionDirection = _f === void 0 ? "down" : _f, _g = props.message, message = _g === void 0 ? "Unknown message" : _g, _h = props.icon, icon = _h === void 0 ? _jsx(_Fragment, {}, void 0) : _h, _j = props.variant, variant = _j === void 0 ? "info" : _j, other = __rest(props, ["open", "vertical", "horizontal", "timeout", "onClose", "transitionDirection", "message", "icon", "variant"]);
37
+ var _b = props.open, open = _b === void 0 ? false : _b, _c = props.vertical, vertical = _c === void 0 ? "top" : _c, _d = props.horizontal, horizontal = _d === void 0 ? "center" : _d, _e = props.timeout, timeout = _e === void 0 ? 3000 : _e, onClose = props.onClose, _f = props.transitionDirection, transitionDirection = _f === void 0 ? "down" : _f, _g = props.message, message = _g === void 0 ? "Unknown message" : _g, _h = props.icon, icon = _h === void 0 ? _jsx(_Fragment, {}) : _h, _j = props.variant, variant = _j === void 0 ? "info" : _j, other = __rest(props, ["open", "vertical", "horizontal", "timeout", "onClose", "transitionDirection", "message", "icon", "variant"]);
38
38
  var theme = useCustomTheme();
39
39
  var styles = {
40
40
  success: {
@@ -51,7 +51,7 @@ var ToastPrompt = function (props) {
51
51
  }
52
52
  };
53
53
  var Transition = function (args) {
54
- return _jsx(Slide, __assign({}, args, { direction: transitionDirection }), void 0);
54
+ return _jsx(Slide, __assign({}, args, { direction: transitionDirection }));
55
55
  };
56
56
  var VariantIcon = {
57
57
  success: SuccessIcon,
@@ -76,6 +76,6 @@ var ToastPrompt = function (props) {
76
76
  fontSize: 20,
77
77
  opacity: 0.9,
78
78
  marginRight: theme.spacing(1)
79
- } }, void 0)) : (_jsx(_Fragment, { children: icon }, void 0)), message] }), void 0) }, other), void 0) }), "".concat(Date.now() * Math.round(Math.random()))) }), void 0));
79
+ } })) : (_jsx(_Fragment, { children: icon })), message] })) }, other)) }), "".concat(Date.now() * Math.round(Math.random()))) })));
80
80
  };
81
81
  export default ToastPrompt;
@@ -22,7 +22,7 @@ export var PromptProvider = function (props) {
22
22
  var _a = ((toastRef === null || toastRef === void 0 ? void 0 : toastRef.current) || {}).show, show = _a === void 0 ? function () { } : _a;
23
23
  show(type, message, timeout);
24
24
  }
25
- return (_jsx(PromptContext.Provider, __assign({ value: { showPrompt: showPrompt } }, { children: _jsxs(_Fragment, { children: [children, _jsx(Logics, __assign({ ref: toastRef }, { children: _jsx(ToastPrompt, {}, void 0) }), void 0)] }, void 0) }), void 0));
25
+ return (_jsx(PromptContext.Provider, __assign({ value: { showPrompt: showPrompt } }, { children: _jsxs(_Fragment, { children: [children, _jsx(Logics, __assign({ ref: toastRef }, { children: _jsx(ToastPrompt, {}) }))] }) })));
26
26
  };
27
27
  export function usePrompt() {
28
28
  return useContext(PromptContext);
@@ -1,6 +1,4 @@
1
- /// <reference types="react" />
2
- import { ReactPlayerProps } from "react-player";
3
1
  import { VideoPlayerModalProps } from "./types";
4
- declare function VideoPlayerModal(props: VideoPlayerModalProps & ReactPlayerProps): JSX.Element;
2
+ declare function VideoPlayerModal(props: VideoPlayerModalProps): JSX.Element;
5
3
  export default VideoPlayerModal;
6
4
  export * from "./types";
@@ -35,9 +35,9 @@ function VideoPlayerModal(props) {
35
35
  var url = props.url, _a = props.pip, pip = _a === void 0 ? false : _a, _b = props.open, open = _b === void 0 ? false : _b, title = props.title, onClose = props.onClose, _c = props.extraButtons, extraButtons = _c === void 0 ? [] : _c, primaryColor = props.primaryColor, secondaryColor = props.secondaryColor, playerProps = __rest(props, ["url", "pip", "open", "title", "onClose", "extraButtons", "primaryColor", "secondaryColor"]);
36
36
  var theme = useCustomTheme();
37
37
  var fullScreen = useMediaQuery(theme.breakpoints.down("sm"));
38
- return (_jsx(ThemeProvider, __assign({ theme: theme }, { children: _jsxs(Dialog, __assign({ open: open, fullScreen: fullScreen, onClose: onClose, fullWidth: true, maxWidth: "lg", "aria-labelledby": "react-video-dialog" }, { children: [title && _jsx(DialogTitle, { children: title }, void 0), _jsx(DialogContent, { children: _jsx(ReactPlayer, __assign({ controls: true, url: url, style: { minHeight: "480px" }, width: "100%", config: {
38
+ return (_jsx(ThemeProvider, __assign({ theme: theme }, { children: _jsxs(Dialog, __assign({ open: open, fullScreen: fullScreen, onClose: onClose, fullWidth: true, maxWidth: "lg", "aria-labelledby": "react-video-dialog" }, { children: [title && _jsx(DialogTitle, { children: title }), _jsx(DialogContent, { children: _jsx(ReactPlayer, __assign({ controls: true, url: url, style: { minHeight: "480px" }, width: "100%", config: {
39
39
  file: { attributes: { disablePictureInPicture: !pip } }
40
- } }, playerProps), void 0) }, void 0), _jsxs(DialogActions, { children: [extraButtons.map(function (buttonProps, index) { return (_jsx(Grid, __assign({ item: true, xs: 12, md: 3, lg: 2 }, { children: _jsx(Button, __assign({}, buttonProps), void 0) }), "extraButton_".concat(index))); }), _jsx(Button, __assign({ variant: "outlined", color: "secondary", onClick: onClose }, { children: "Close" }), void 0)] }, void 0)] }), void 0) }), void 0));
40
+ } }, playerProps)) }), _jsxs(DialogActions, { children: [extraButtons.map(function (buttonProps, index) { return (_jsx(Grid, __assign({ item: true, xs: 12, md: 3, lg: 2 }, { children: _jsx(Button, __assign({}, buttonProps)) }), "extraButton_".concat(index))); }), _jsx(Button, __assign({ variant: "outlined", color: "secondary", onClick: onClose }, { children: "Close" }))] })] })) })));
41
41
  }
42
42
  export default VideoPlayerModal;
43
43
  export * from "./types";
@@ -1,6 +1,7 @@
1
1
  import { CSSProperties } from "react";
2
2
  import { ButtonProps } from "@mui/material/Button";
3
- export interface VideoPlayerModalProps {
3
+ import { ReactPlayerProps } from "react-player";
4
+ export interface VideoPlayerModalProps extends ReactPlayerProps {
4
5
  title?: string;
5
6
  open: boolean;
6
7
  pip?: boolean;
package/index.d.ts CHANGED
@@ -1,7 +1,14 @@
1
1
  export * from "./AlertDialog";
2
+ export * from "./Autocomplete";
3
+ export * from "./AutocompleteWithFilter";
2
4
  export * from "./BasicModal";
5
+ export * from "./BreadCrumbs";
6
+ export * from "./CheckBox";
7
+ export * from "./Copyright";
8
+ export * from "./DateInput";
3
9
  export * from "./DigitInput";
4
10
  export * from "./DynamicHeaderBar";
11
+ export * from "./FeinInput";
5
12
  export * from "./FormRadioGroup";
6
13
  export * from "./FormSelector";
7
14
  export * from "./HelpCaption";
@@ -10,20 +17,31 @@ export * from "./MenuButtonGroup";
10
17
  export * from "./NumberInput";
11
18
  export * from "./PasswordInput";
12
19
  export * from "./PhoneNumberInput";
20
+ export * from "./Sidebar";
21
+ export * from "./SocialInput";
13
22
  export * from "./TabGroup";
23
+ export * from "./TablePagination";
14
24
  export * from "./TextInput";
15
25
  export * from "./ToastPrompt";
16
26
  export * from "./VideoPlayerModal";
17
27
  export { default as AlertDialog } from "./AlertDialog";
28
+ export { default as Autocomplete } from "./Autocomplete";
29
+ export { default as AutocompleteWithFilter } from "./AutocompleteWithFilter";
18
30
  export { default as BasicModal } from "./BasicModal";
31
+ export { default as BreadCrumbs } from "./BreadCrumbs";
32
+ export { default as Copyright } from "./Copyright";
19
33
  export { default as DigitInput } from "./DigitInput";
20
34
  export { default as DynamicHeaderBar } from "./DynamicHeaderBar";
35
+ export { default as FeinInput } from "./FeinInput";
21
36
  export { default as FormRadioGroup } from "./FormRadioGroup";
22
37
  export { default as HelpCaption } from "./HelpCaption";
23
38
  export { default as LoadingModal } from "./LoadingModal";
24
39
  export { default as MenuButtonGroup } from "./MenuButtonGroup";
25
40
  export { default as NumberInput } from "./NumberInput";
26
41
  export { default as PhoneNumberInput } from "./PhoneNumberInput";
42
+ export { default as Sidebar } from "./Sidebar";
43
+ export { default as SocialInput } from "./SocialInput";
27
44
  export { default as TabGroup } from "./TabGroup";
45
+ export { default as TablePagination } from "./TablePagination";
28
46
  export { default as TextInput } from "./TextInput";
29
47
  export { default as VideoPlayerModal } from "./VideoPlayerModal";
package/index.js CHANGED
@@ -1,7 +1,14 @@
1
1
  export * from "./AlertDialog";
2
+ export * from "./Autocomplete";
3
+ export * from "./AutocompleteWithFilter";
2
4
  export * from "./BasicModal";
5
+ export * from "./BreadCrumbs";
6
+ export * from "./CheckBox";
7
+ export * from "./Copyright";
8
+ export * from "./DateInput";
3
9
  export * from "./DigitInput";
4
10
  export * from "./DynamicHeaderBar";
11
+ export * from "./FeinInput";
5
12
  export * from "./FormRadioGroup";
6
13
  export * from "./FormSelector";
7
14
  export * from "./HelpCaption";
@@ -10,20 +17,31 @@ export * from "./MenuButtonGroup";
10
17
  export * from "./NumberInput";
11
18
  export * from "./PasswordInput";
12
19
  export * from "./PhoneNumberInput";
20
+ export * from "./Sidebar";
21
+ export * from "./SocialInput";
13
22
  export * from "./TabGroup";
23
+ export * from "./TablePagination";
14
24
  export * from "./TextInput";
15
25
  export * from "./ToastPrompt";
16
26
  export * from "./VideoPlayerModal";
17
27
  export { default as AlertDialog } from "./AlertDialog";
28
+ export { default as Autocomplete } from "./Autocomplete";
29
+ export { default as AutocompleteWithFilter } from "./AutocompleteWithFilter";
18
30
  export { default as BasicModal } from "./BasicModal";
31
+ export { default as BreadCrumbs } from "./BreadCrumbs";
32
+ export { default as Copyright } from "./Copyright";
19
33
  export { default as DigitInput } from "./DigitInput";
20
34
  export { default as DynamicHeaderBar } from "./DynamicHeaderBar";
35
+ export { default as FeinInput } from "./FeinInput";
21
36
  export { default as FormRadioGroup } from "./FormRadioGroup";
22
37
  export { default as HelpCaption } from "./HelpCaption";
23
38
  export { default as LoadingModal } from "./LoadingModal";
24
39
  export { default as MenuButtonGroup } from "./MenuButtonGroup";
25
40
  export { default as NumberInput } from "./NumberInput";
26
41
  export { default as PhoneNumberInput } from "./PhoneNumberInput";
42
+ export { default as Sidebar } from "./Sidebar";
43
+ export { default as SocialInput } from "./SocialInput";
27
44
  export { default as TabGroup } from "./TabGroup";
45
+ export { default as TablePagination } from "./TablePagination";
28
46
  export { default as TextInput } from "./TextInput";
29
47
  export { default as VideoPlayerModal } from "./VideoPlayerModal";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@symply.io/basic-components",
3
- "version": "1.0.0-alpha.8",
3
+ "version": "1.0.0-beta.1",
4
4
  "description": "Basic and reusable components for all frontend of Symply apps",
5
5
  "keywords": [
6
6
  "react",
@@ -44,10 +44,11 @@
44
44
  ],
45
45
  "devDependencies": {
46
46
  "@types/body-parser": "^1.19.2",
47
+ "@types/reach__router": "^1.3.10",
47
48
  "@types/react": "^17.0.27",
48
49
  "@types/react-dom": "^17.0.9",
49
50
  "babel-loader": "^8.2.2",
50
- "typescript": "^4.5.5"
51
+ "typescript": "~4.6.3"
51
52
  },
52
53
  "dependencies": {
53
54
  "@emotion/react": "^11.7.1",
@@ -55,10 +56,15 @@
55
56
  "@mui/icons-material": "^5.4.2",
56
57
  "@mui/material": "^5.4.2",
57
58
  "@mui/system": "^5.4.2",
59
+ "@reach/router": "^1.3.4",
58
60
  "color-alpha": "^1.1.3",
59
61
  "react-player": "^2.9.0",
60
62
  "rifm": "^0.12.1"
61
63
  },
64
+ "resolutions": {
65
+ "@types/react": "17.0.27",
66
+ "@types/react-dom": "17.0.9"
67
+ },
62
68
  "scripts": {
63
69
  "build": "./node_modules/.bin/tsc"
64
70
  },