@webiny/ui 0.0.0-unstable.8c4d9f045a → 0.0.0-unstable.97a151f74d

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 (79) hide show
  1. package/Accordion/Accordion.d.ts +1 -1
  2. package/Accordion/Accordion.js +1 -5
  3. package/Accordion/Accordion.js.map +1 -1
  4. package/Accordion/AccordionItem.d.ts +18 -2
  5. package/Accordion/AccordionItem.js +49 -50
  6. package/Accordion/AccordionItem.js.map +1 -1
  7. package/Accordion/AccordionItemActions.d.ts +8 -0
  8. package/Accordion/AccordionItemActions.js +36 -0
  9. package/Accordion/AccordionItemActions.js.map +1 -0
  10. package/Alert/Alert.d.ts +1 -1
  11. package/Alert/Alert.js +1 -1
  12. package/Alert/Alert.js.map +1 -1
  13. package/Button/Button.d.ts +30 -1
  14. package/Button/Button.js +2 -3
  15. package/Button/Button.js.map +1 -1
  16. package/CodeEditor/CodeEditor.d.ts +2 -0
  17. package/CodeEditor/CodeEditor.js +4 -0
  18. package/CodeEditor/CodeEditor.js.map +1 -1
  19. package/DataTable/DataTable.d.ts +22 -0
  20. package/DataTable/DataTable.js +162 -0
  21. package/DataTable/DataTable.js.map +1 -0
  22. package/DataTable/DataTable.stories.d.ts +1 -0
  23. package/DataTable/DataTable.stories.js +77 -0
  24. package/DataTable/DataTable.stories.js.map +1 -0
  25. package/DataTable/README.md +72 -0
  26. package/DataTable/index.d.ts +1 -0
  27. package/DataTable/index.js +18 -0
  28. package/DataTable/index.js.map +1 -0
  29. package/DataTable/styled.d.ts +2 -0
  30. package/DataTable/styled.js +18 -0
  31. package/DataTable/styled.js.map +1 -0
  32. package/DelayedOnChange/DelayedOnChange.d.ts +40 -0
  33. package/DelayedOnChange/DelayedOnChange.js +129 -0
  34. package/DelayedOnChange/DelayedOnChange.js.map +1 -0
  35. package/DelayedOnChange/index.d.ts +2 -0
  36. package/DelayedOnChange/index.js +23 -0
  37. package/DelayedOnChange/index.js.map +1 -0
  38. package/DelayedOnChange/withDelayedOnChange.d.ts +3 -0
  39. package/DelayedOnChange/withDelayedOnChange.js +37 -0
  40. package/DelayedOnChange/withDelayedOnChange.js.map +1 -0
  41. package/Dialog/Dialog.js +5 -2
  42. package/Dialog/Dialog.js.map +1 -1
  43. package/Image/Image.js +3 -1
  44. package/Image/Image.js.map +1 -1
  45. package/ImageUpload/styled.d.ts +3 -3
  46. package/Input/Input.d.ts +1 -1
  47. package/Input/Input.js.map +1 -1
  48. package/List/DataList/Loader.d.ts +2 -2
  49. package/List/DataList/Loader.js +35 -49
  50. package/List/DataList/Loader.js.map +1 -1
  51. package/Menu/Menu.js +5 -1
  52. package/Menu/Menu.js.map +1 -1
  53. package/Skeleton/README.md +21 -0
  54. package/Skeleton/Skeleton.d.ts +4 -0
  55. package/Skeleton/Skeleton.js +25 -0
  56. package/Skeleton/Skeleton.js.map +1 -0
  57. package/Skeleton/Skeleton.stories.d.ts +1 -0
  58. package/Skeleton/Skeleton.stories.js +28 -0
  59. package/Skeleton/Skeleton.stories.js.map +1 -0
  60. package/Skeleton/index.d.ts +1 -0
  61. package/Skeleton/index.js +18 -0
  62. package/Skeleton/index.js.map +1 -0
  63. package/Switch/Switch.d.ts +1 -1
  64. package/Switch/Switch.js.map +1 -1
  65. package/Tabs/Tab.d.ts +1 -0
  66. package/Tabs/Tab.js +4 -1
  67. package/Tabs/Tab.js.map +1 -1
  68. package/Tabs/Tabs.d.ts +1 -0
  69. package/Tabs/Tabs.js +8 -1
  70. package/Tabs/Tabs.js.map +1 -1
  71. package/Tags/Tags.d.ts +8 -15
  72. package/Tags/Tags.js +83 -112
  73. package/Tags/Tags.js.map +1 -1
  74. package/Typography/Typography.d.ts +2 -2
  75. package/Typography/Typography.js.map +1 -1
  76. package/package.json +19 -17
  77. package/styles.scss +2 -3
  78. package/types.d.ts +3 -3
  79. package/types.js.map +1 -1
@@ -5,7 +5,7 @@ export interface AccordionProps {
5
5
  /**
6
6
  * Element displayed when accordion is expanded.
7
7
  */
8
- children: React.ReactElement<typeof ListItem>[] | React.ReactElement<typeof AccordionItem>[];
8
+ children: React.ReactElement<typeof ListItem>[] | React.ReactElement<typeof AccordionItem> | React.ReactElement<typeof AccordionItem>[];
9
9
  /**
10
10
  * Elevation number, default set to 2
11
11
  */
@@ -20,11 +20,7 @@ var _emotion = require("emotion");
20
20
  var _classnames = _interopRequireDefault(require("classnames"));
21
21
 
22
22
  var _excluded = ["children", "elevation", "className"];
23
- var listStyle = /*#__PURE__*/(0, _emotion.css)({
24
- "&.mdc-list": {
25
- padding: 0
26
- }
27
- }, "label:listStyle;");
23
+ var listStyle = /*#__PURE__*/(0, _emotion.css)("&.mdc-list{padding:0;&.mdc-list--two-line .mdc-list-item{height:48px;padding:8px 20px;}}label:listStyle;");
28
24
 
29
25
  var Accordion = function Accordion(props) {
30
26
  var children = props.children,
@@ -1 +1 @@
1
- {"version":3,"names":["listStyle","css","padding","Accordion","props","children","elevation","className","other","classNames"],"sources":["Accordion.tsx"],"sourcesContent":["import React from \"react\";\nimport { List, ListItem } from \"../List\";\nimport { AccordionItem } from \"./AccordionItem\";\nimport { Elevation } from \"../Elevation\";\nimport { css } from \"emotion\";\nimport classNames from \"classnames\";\n\nexport interface AccordionProps {\n /**\n * Element displayed when accordion is expanded.\n */\n children: React.ReactElement<typeof ListItem>[] | React.ReactElement<typeof AccordionItem>[];\n\n /**\n * Elevation number, default set to 2\n */\n elevation?: number;\n\n /**\n * Append a class name\n */\n className?: string;\n}\n\nconst listStyle = css({\n \"&.mdc-list\": {\n padding: 0\n }\n});\n\nconst Accordion: React.FC<AccordionProps> = props => {\n const { children, elevation = 2, className, ...other } = props;\n return (\n <Elevation z={elevation} className={classNames(\"webiny-ui-accordion\", className)}>\n <List twoLine className={listStyle} {...other}>\n {children}\n </List>\n </Elevation>\n );\n};\n\nexport { Accordion };\n"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AAEA;;AACA;;AACA;;;AAmBA,IAAMA,SAAS,gBAAG,IAAAC,YAAA,EAAI;EAClB,cAAc;IACVC,OAAO,EAAE;EADC;AADI,CAAJ,qBAAlB;;AAMA,IAAMC,SAAmC,GAAG,SAAtCA,SAAsC,CAAAC,KAAK,EAAI;EACjD,IAAQC,QAAR,GAAyDD,KAAzD,CAAQC,QAAR;EAAA,uBAAyDD,KAAzD,CAAkBE,SAAlB;EAAA,IAAkBA,SAAlB,iCAA8B,CAA9B;EAAA,IAAiCC,SAAjC,GAAyDH,KAAzD,CAAiCG,SAAjC;EAAA,IAA+CC,KAA/C,0CAAyDJ,KAAzD;EACA,oBACI,6BAAC,oBAAD;IAAW,CAAC,EAAEE,SAAd;IAAyB,SAAS,EAAE,IAAAG,mBAAA,EAAW,qBAAX,EAAkCF,SAAlC;EAApC,gBACI,6BAAC,UAAD;IAAM,OAAO,MAAb;IAAc,SAAS,EAAEP;EAAzB,GAAwCQ,KAAxC,GACKH,QADL,CADJ,CADJ;AAOH,CATD"}
1
+ {"version":3,"names":["listStyle","css","Accordion","props","children","elevation","className","other","classNames"],"sources":["Accordion.tsx"],"sourcesContent":["import React from \"react\";\nimport { List, ListItem } from \"../List\";\nimport { AccordionItem } from \"./AccordionItem\";\nimport { Elevation } from \"../Elevation\";\nimport { css } from \"emotion\";\nimport classNames from \"classnames\";\n\nexport interface AccordionProps {\n /**\n * Element displayed when accordion is expanded.\n */\n children:\n | React.ReactElement<typeof ListItem>[]\n | React.ReactElement<typeof AccordionItem>\n | React.ReactElement<typeof AccordionItem>[];\n\n /**\n * Elevation number, default set to 2\n */\n elevation?: number;\n\n /**\n * Append a class name\n */\n className?: string;\n}\n\nconst listStyle = css`\n &.mdc-list {\n padding: 0;\n &.mdc-list--two-line .mdc-list-item {\n height: 48px;\n padding: 8px 20px;\n }\n }\n`;\n\nconst Accordion: React.FC<AccordionProps> = props => {\n const { children, elevation = 2, className, ...other } = props;\n return (\n <Elevation z={elevation} className={classNames(\"webiny-ui-accordion\", className)}>\n <List twoLine className={listStyle} {...other}>\n {children}\n </List>\n </Elevation>\n );\n};\n\nexport { Accordion };\n"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AAEA;;AACA;;AACA;;;AAsBA,IAAMA,SAAS,oBAAGC,YAAH,6GAAf;;AAUA,IAAMC,SAAmC,GAAG,SAAtCA,SAAsC,CAAAC,KAAK,EAAI;EACjD,IAAQC,QAAR,GAAyDD,KAAzD,CAAQC,QAAR;EAAA,uBAAyDD,KAAzD,CAAkBE,SAAlB;EAAA,IAAkBA,SAAlB,iCAA8B,CAA9B;EAAA,IAAiCC,SAAjC,GAAyDH,KAAzD,CAAiCG,SAAjC;EAAA,IAA+CC,KAA/C,0CAAyDJ,KAAzD;EACA,oBACI,6BAAC,oBAAD;IAAW,CAAC,EAAEE,SAAd;IAAyB,SAAS,EAAE,IAAAG,mBAAA,EAAW,qBAAX,EAAkCF,SAAlC;EAApC,gBACI,6BAAC,UAAD;IAAM,OAAO,MAAb;IAAc,SAAS,EAAEN;EAAzB,GAAwCO,KAAxC,GACKH,QADL,CADJ,CADJ;AAOH,CATD"}
@@ -1,5 +1,16 @@
1
+ /// <reference types="web" />
1
2
  import React from "react";
3
+ import { AccordionItemAction, AccordionItemActions } from "./AccordionItemActions";
4
+ declare const Divider: import("@emotion/styled-base").StyledComponent<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, Pick<React.ClassAttributes<HTMLSpanElement> & React.HTMLAttributes<HTMLSpanElement>, keyof React.HTMLAttributes<HTMLSpanElement>>, object>;
2
5
  export interface AccordionItemProps {
6
+ /**
7
+ * Can user toggle the accordion item by clicking it? Defaults to `true`.
8
+ */
9
+ interactive?: boolean;
10
+ /**
11
+ * Actions to show on the right side of the accordion item
12
+ */
13
+ actions?: React.ReactElement | null;
3
14
  /**
4
15
  * Left side icon
5
16
  */
@@ -29,5 +40,10 @@ export interface AccordionItemProps {
29
40
  */
30
41
  iconClassName?: string;
31
42
  }
32
- declare const AccordionItem: React.FC<AccordionItemProps>;
33
- export { AccordionItem };
43
+ declare type AccordionItem = React.FC<AccordionItemProps> & {
44
+ Divider: typeof Divider;
45
+ Actions: typeof AccordionItemActions;
46
+ Action: typeof AccordionItemAction;
47
+ };
48
+ export declare const AccordionItem: AccordionItem;
49
+ export {};
@@ -35,48 +35,27 @@ var _roundKeyboard_arrow_down24px = require("./icons/round-keyboard_arrow_down-2
35
35
 
36
36
  var _classnames = _interopRequireDefault(require("classnames"));
37
37
 
38
+ var _AccordionItemActions = require("./AccordionItemActions");
39
+
38
40
  var Content = /*#__PURE__*/(0, _styled.default)("div", {
39
- target: "eypjd5u0",
40
- label: "Content"
41
- })({
42
- width: "100%",
43
- borderRight: "1px solid var(--mdc-theme-background)",
44
- borderBottom: "1px solid var(--mdc-theme-background)",
45
- borderLeft: "1px solid var(--mdc-theme-background)",
46
- boxSizing: "border-box"
47
- });
48
- var listItem = /*#__PURE__*/(0, _emotion.css)({
49
- padding: "15px 20px",
50
- cursor: "pointer",
51
- borderBottom: "1px solid var(--mdc-theme-background)",
52
- "&:last-child": {
53
- borderBottom: "none"
54
- },
55
- ".mdc-list-item__graphic": {
56
- marginRight: 20
57
- }
58
- }, "label:listItem;");
41
+ label: "Content",
42
+ target: "eypjd5u0"
43
+ })("width:100%;border-right:1px solid var(--mdc-theme-background);border-bottom:1px solid var(--mdc-theme-background);border-left:1px solid var(--mdc-theme-background);box-sizing:border-box;> .mdc-layout-grid{margin:-24px;}");
44
+ var listItem = /*#__PURE__*/(0, _emotion.css)("cursor:pointer;border-bottom:1px solid var(--mdc-theme-background);&:last-child{border-bottom:none;}.mdc-list-item__graphic{margin-right:20px;}label:listItem;");
59
45
  var ListItemTitle = /*#__PURE__*/(0, _styled.default)("div", {
60
- target: "eypjd5u1",
61
- label: "ListItemTitle"
62
- })({
63
- fontWeight: 600,
64
- marginBottom: 5
65
- });
46
+ label: "ListItemTitle",
47
+ target: "eypjd5u1"
48
+ })("font-weight:600;line-height:100%;");
66
49
  var ListItemDescription = /*#__PURE__*/(0, _styled.default)("div", {
67
- target: "eypjd5u2",
68
- label: "ListItemDescription"
69
- })({});
50
+ label: "ListItemDescription",
51
+ target: "eypjd5u2"
52
+ })("line-height:100%;");
70
53
  var TitleContent = /*#__PURE__*/(0, _styled.default)("div", {
71
- target: "eypjd5u3",
72
- label: "TitleContent"
73
- })({
74
- display: "flex",
75
- flexDirection: "column"
76
- });
77
- var openedState = /*#__PURE__*/(0, _emotion.css)({
78
- backgroundColor: "var(--mdc-theme-on-background)"
79
- }, "label:openedState;");
54
+ label: "TitleContent",
55
+ target: "eypjd5u3"
56
+ })("display:flex;flex-direction:column;");
57
+ var openedState = /*#__PURE__*/(0, _emotion.css)("background-color:var(--mdc-theme-on-background);label:openedState;");
58
+ var nonInteractive = /*#__PURE__*/(0, _emotion.css)("background-color:var(--mdc-theme-surface);label:nonInteractive;");
80
59
  var duration = 150;
81
60
  var defaultStyle = {
82
61
  transition: "all ".concat(duration, "ms ease-in-out"),
@@ -93,42 +72,59 @@ var transitionStyles = {
93
72
  entering: {
94
73
  opacity: 0,
95
74
  height: 0,
96
- padding: "20px 20px 20px 65px",
75
+ padding: "20px",
97
76
  pointerEvents: "auto",
98
77
  overflow: "initial"
99
78
  },
100
79
  entered: {
101
80
  opacity: 1,
102
81
  height: "auto",
103
- padding: "20px 20px 20px 65px",
82
+ padding: "20px",
104
83
  pointerEvents: "auto",
105
84
  overflow: "initial"
106
85
  },
107
86
  exiting: {
108
87
  height: "auto",
109
- padding: "20px 20px 20px 65px",
88
+ padding: "20px",
110
89
  pointerEvents: "auto",
111
90
  overflow: "initial"
112
91
  }
113
92
  };
114
-
115
- var AccordionItem = function AccordionItem(props) {
93
+ var Divider = /*#__PURE__*/(0, _styled.default)("span", {
94
+ label: "Divider",
95
+ target: "eypjd5u4"
96
+ })("width:1px;margin:0 15px;height:100%;background-color:var(--mdc-theme-on-background);");
97
+ var Actions = /*#__PURE__*/(0, _styled.default)(_List.ListItemMeta, {
98
+ label: "Actions",
99
+ target: "eypjd5u5"
100
+ })("display:flex;height:40%;align-items:center;");
101
+
102
+ var AccordionItemComponent = function AccordionItemComponent(props) {
116
103
  var _useState = (0, _react.useState)(props.open ? props.open : false),
117
104
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
118
105
  open = _useState2[0],
119
106
  setState = _useState2[1];
120
107
 
108
+ var _props$interactive = props.interactive,
109
+ interactive = _props$interactive === void 0 ? true : _props$interactive,
110
+ actions = props.actions;
121
111
  var toggleState = (0, _react.useCallback)(function () {
122
112
  setState(!open);
123
113
  }, [open]);
114
+ var onClick = interactive ? toggleState : undefined;
115
+ var divider = interactive && actions ? /*#__PURE__*/_react.default.createElement(Divider, null) : null;
116
+ var arrowIcon = interactive ? /*#__PURE__*/_react.default.createElement(_Icon.Icon, {
117
+ icon: !open ? /*#__PURE__*/_react.default.createElement(_roundKeyboard_arrow_down24px.ReactComponent, null) : /*#__PURE__*/_react.default.createElement(_roundKeyboard_arrow_up24px.ReactComponent, null)
118
+ }) : null;
124
119
  (0, _react.useEffect)(function () {
125
- setState(props.open ? true : false);
120
+ setState(!!props.open);
126
121
  }, [props.open]);
127
122
  return /*#__PURE__*/_react.default.createElement("div", {
128
123
  className: (0, _classnames.default)("webiny-ui-accordion-item", props.className)
129
124
  }, /*#__PURE__*/_react.default.createElement(_List.ListItem, {
130
- className: (0, _classnames.default)(listItem, (0, _defineProperty2.default)({}, openedState, open), "webiny-ui-accordion-item__list-item"),
131
- onClick: toggleState,
125
+ disabled: !interactive,
126
+ className: (0, _classnames.default)(listItem, (0, _defineProperty2.default)({}, openedState, open), (0, _defineProperty2.default)({}, nonInteractive, !interactive), "webiny-ui-accordion-item__list-item"),
127
+ onClick: onClick,
132
128
  "data-testid": props["data-testid"]
133
129
  }, props.icon && /*#__PURE__*/_react.default.createElement(_List.ListItemGraphic, null, /*#__PURE__*/_react.default.createElement(_Icon.Icon, {
134
130
  icon: props.icon,
@@ -136,10 +132,8 @@ var AccordionItem = function AccordionItem(props) {
136
132
  })), /*#__PURE__*/_react.default.createElement(TitleContent, {
137
133
  className: "webiny-ui-accordion-item__title"
138
134
  }, /*#__PURE__*/_react.default.createElement(ListItemTitle, null, props.title), props.description && /*#__PURE__*/_react.default.createElement(ListItemDescription, null, /*#__PURE__*/_react.default.createElement(_Typography.Typography, {
139
- use: "subtitle2"
140
- }, props.description))), /*#__PURE__*/_react.default.createElement(_List.ListItemMeta, null, /*#__PURE__*/_react.default.createElement(_Icon.Icon, {
141
- icon: !open ? /*#__PURE__*/_react.default.createElement(_roundKeyboard_arrow_down24px.ReactComponent, null) : /*#__PURE__*/_react.default.createElement(_roundKeyboard_arrow_up24px.ReactComponent, null)
142
- }))), /*#__PURE__*/_react.default.createElement(_Transition.default, {
135
+ use: "body2"
136
+ }, props.description))), /*#__PURE__*/_react.default.createElement(Actions, null, props.actions ? props.actions : null, divider, arrowIcon)), /*#__PURE__*/_react.default.createElement(_Transition.default, {
143
137
  in: open,
144
138
  timeout: duration
145
139
  }, function (state) {
@@ -150,4 +144,9 @@ var AccordionItem = function AccordionItem(props) {
150
144
  }));
151
145
  };
152
146
 
147
+ var AccordionItem = Object.assign(AccordionItemComponent, {
148
+ Divider: Divider,
149
+ Action: _AccordionItemActions.AccordionItemAction,
150
+ Actions: _AccordionItemActions.AccordionItemActions
151
+ });
153
152
  exports.AccordionItem = AccordionItem;
@@ -1 +1 @@
1
- {"version":3,"names":["Content","styled","width","borderRight","borderBottom","borderLeft","boxSizing","listItem","css","padding","cursor","marginRight","ListItemTitle","fontWeight","marginBottom","ListItemDescription","TitleContent","display","flexDirection","openedState","backgroundColor","duration","defaultStyle","transition","opacity","height","pointerEvents","overflow","transitionStyles","entering","entered","exiting","AccordionItem","props","useState","open","setState","toggleState","useCallback","useEffect","classNames","className","icon","iconClassName","title","description","state","children"],"sources":["AccordionItem.tsx"],"sourcesContent":["import React, { useState, useCallback, useEffect } from \"react\";\nimport { ListItem, ListItemGraphic, ListItemMeta } from \"../List\";\nimport Transition from \"react-transition-group/Transition\";\nimport { Icon } from \"~/Icon\";\nimport styled from \"@emotion/styled\";\nimport { css } from \"emotion\";\nimport { Typography } from \"~/Typography\";\n\nimport { ReactComponent as UpArrow } from \"./icons/round-keyboard_arrow_up-24px.svg\";\nimport { ReactComponent as DownArrow } from \"./icons/round-keyboard_arrow_down-24px.svg\";\nimport classNames from \"classnames\";\n\nconst Content = styled(\"div\")({\n width: \"100%\",\n borderRight: \"1px solid var(--mdc-theme-background)\",\n borderBottom: \"1px solid var(--mdc-theme-background)\",\n borderLeft: \"1px solid var(--mdc-theme-background)\",\n boxSizing: \"border-box\"\n});\n\nconst listItem = css({\n padding: \"15px 20px\",\n cursor: \"pointer\",\n borderBottom: \"1px solid var(--mdc-theme-background)\",\n \"&:last-child\": {\n borderBottom: \"none\"\n },\n \".mdc-list-item__graphic\": {\n marginRight: 20\n }\n});\n\nconst ListItemTitle = styled(\"div\")({\n fontWeight: 600,\n marginBottom: 5\n});\n\nconst ListItemDescription = styled(\"div\")({});\n\nconst TitleContent = styled(\"div\")({\n display: \"flex\",\n flexDirection: \"column\"\n});\n\nconst openedState = css({\n backgroundColor: \"var(--mdc-theme-on-background)\"\n});\n\nconst duration = 150;\nconst defaultStyle = {\n transition: `all ${duration}ms ease-in-out`,\n opacity: 0,\n height: 0,\n pointerEvents: \"none\",\n overflow: \"hidden\"\n};\n\ntype TransitionStylesState = \"entering\" | \"entered\" | \"exiting\";\n\n/**\n * We are casting pointerEvents as any because csstype does not have PointerEvents exported. Or at least, that is the error.\n */\nconst transitionStyles = {\n entering: {\n opacity: 0,\n height: 0,\n padding: \"20px 20px 20px 65px\",\n pointerEvents: \"auto\" as any,\n overflow: \"initial\"\n },\n entered: {\n opacity: 1,\n height: \"auto\",\n padding: \"20px 20px 20px 65px\",\n pointerEvents: \"auto\" as any,\n overflow: \"initial\"\n },\n exiting: {\n height: \"auto\",\n padding: \"20px 20px 20px 65px\",\n pointerEvents: \"auto\" as any,\n overflow: \"initial\"\n }\n};\n\nexport interface AccordionItemProps {\n /**\n * Left side icon\n */\n icon?: React.ReactElement | null;\n\n /**\n * Accordion title\n */\n title?: React.ReactNode;\n\n /**\n * Optional description\n */\n description?: string;\n\n /**\n * Append a class name\n */\n className?: string;\n\n /**\n * Render item opened by default\n */\n open?: boolean;\n /**\n * For testing purpose\n */\n \"data-testid\"?: string;\n /**\n * Append a class name to Icon\n */\n iconClassName?: string;\n}\n\nconst AccordionItem: React.FC<AccordionItemProps> = props => {\n const [open, setState] = useState<boolean>(props.open ? props.open : false);\n\n const toggleState = useCallback(() => {\n setState(!open);\n }, [open]);\n\n useEffect(() => {\n setState(props.open ? true : false);\n }, [props.open]);\n\n return (\n <div className={classNames(\"webiny-ui-accordion-item\", props.className)}>\n <ListItem\n className={classNames(\n listItem,\n { [openedState]: open },\n \"webiny-ui-accordion-item__list-item\"\n )}\n onClick={toggleState}\n data-testid={props[\"data-testid\"]}\n >\n {props.icon && (\n <ListItemGraphic>\n <Icon icon={props.icon} className={props.iconClassName} />\n </ListItemGraphic>\n )}\n\n <TitleContent className=\"webiny-ui-accordion-item__title\">\n <ListItemTitle>{props.title}</ListItemTitle>\n {props.description && (\n <ListItemDescription>\n <Typography use={\"subtitle2\"}>{props.description}</Typography>\n </ListItemDescription>\n )}\n </TitleContent>\n <ListItemMeta>\n <Icon icon={!open ? <DownArrow /> : <UpArrow />} />\n </ListItemMeta>\n </ListItem>\n <Transition in={open} timeout={duration}>\n {(state: TransitionStylesState) => (\n <Content\n style={{ ...defaultStyle, ...transitionStyles[state] }}\n className=\"webiny-ui-accordion-item__content\"\n >\n {props.children}\n </Content>\n )}\n </Transition>\n </div>\n );\n};\n\nexport { AccordionItem };\n"],"mappings":"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"}
1
+ {"version":3,"names":["Content","styled","listItem","css","ListItemTitle","ListItemDescription","TitleContent","openedState","nonInteractive","duration","defaultStyle","transition","opacity","height","pointerEvents","overflow","transitionStyles","entering","padding","entered","exiting","Divider","Actions","ListItemMeta","AccordionItemComponent","props","useState","open","setState","interactive","actions","toggleState","useCallback","onClick","undefined","divider","arrowIcon","useEffect","classNames","className","icon","iconClassName","title","description","state","children","AccordionItem","Object","assign","Action","AccordionItemAction","AccordionItemActions"],"sources":["AccordionItem.tsx"],"sourcesContent":["import React, { useState, useCallback, useEffect } from \"react\";\nimport { ListItem, ListItemGraphic, ListItemMeta } from \"~/List\";\nimport Transition from \"react-transition-group/Transition\";\nimport { Icon } from \"~/Icon\";\nimport styled from \"@emotion/styled\";\nimport { css } from \"emotion\";\nimport { Typography } from \"~/Typography\";\n\nimport { ReactComponent as UpArrow } from \"./icons/round-keyboard_arrow_up-24px.svg\";\nimport { ReactComponent as DownArrow } from \"./icons/round-keyboard_arrow_down-24px.svg\";\nimport classNames from \"classnames\";\nimport { AccordionItemAction, AccordionItemActions } from \"~/Accordion/AccordionItemActions\";\n\nconst Content = styled.div`\n width: 100%;\n border-right: 1px solid var(--mdc-theme-background);\n border-bottom: 1px solid var(--mdc-theme-background);\n border-left: 1px solid var(--mdc-theme-background);\n box-sizing: border-box;\n > .mdc-layout-grid {\n margin: -24px;\n }\n`;\n\nconst listItem = css`\n cursor: pointer;\n border-bottom: 1px solid var(--mdc-theme-background);\n &:last-child {\n border-bottom: none;\n }\n .mdc-list-item__graphic {\n margin-right: 20px;\n }\n`;\n\nconst ListItemTitle = styled.div`\n font-weight: 600;\n line-height: 100%;\n`;\n\nconst ListItemDescription = styled.div`\n line-height: 100%;\n`;\n\nconst TitleContent = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nconst openedState = css`\n background-color: var(--mdc-theme-on-background);\n`;\n\nconst nonInteractive = css`\n background-color: var(--mdc-theme-surface);\n`;\n\nconst duration = 150;\nconst defaultStyle = {\n transition: `all ${duration}ms ease-in-out`,\n opacity: 0,\n height: 0,\n pointerEvents: \"none\",\n overflow: \"hidden\"\n};\n\ntype TransitionStylesState = \"entering\" | \"entered\" | \"exiting\";\n\n/**\n * We are casting pointerEvents as any because csstype does not have PointerEvents exported. Or at least, that is the error.\n */\nconst transitionStyles = {\n entering: {\n opacity: 0,\n height: 0,\n padding: \"20px\",\n pointerEvents: \"auto\" as any,\n overflow: \"initial\"\n },\n entered: {\n opacity: 1,\n height: \"auto\",\n padding: \"20px\",\n pointerEvents: \"auto\" as any,\n overflow: \"initial\"\n },\n exiting: {\n height: \"auto\",\n padding: \"20px\",\n pointerEvents: \"auto\" as any,\n overflow: \"initial\"\n }\n};\n\nconst Divider = styled.span`\n width: 1px;\n margin: 0 15px;\n height: 100%;\n background-color: var(--mdc-theme-on-background);\n`;\n\nconst Actions = styled(ListItemMeta)`\n display: flex;\n height: 40%;\n align-items: center;\n`;\n\nexport interface AccordionItemProps {\n /**\n * Can user toggle the accordion item by clicking it? Defaults to `true`.\n */\n interactive?: boolean;\n /**\n * Actions to show on the right side of the accordion item\n */\n actions?: React.ReactElement | null;\n /**\n * Left side icon\n */\n icon?: React.ReactElement | null;\n\n /**\n * Accordion title\n */\n title?: React.ReactNode;\n\n /**\n * Optional description\n */\n description?: string;\n\n /**\n * Append a class name\n */\n className?: string;\n\n /**\n * Render item opened by default\n */\n open?: boolean;\n /**\n * For testing purpose\n */\n \"data-testid\"?: string;\n /**\n * Append a class name to Icon\n */\n iconClassName?: string;\n}\n\nconst AccordionItemComponent: React.FC<AccordionItemProps> = props => {\n const [open, setState] = useState<boolean>(props.open ? props.open : false);\n const { interactive = true, actions } = props;\n\n const toggleState = useCallback(() => {\n setState(!open);\n }, [open]);\n\n const onClick = interactive ? toggleState : undefined;\n const divider = interactive && actions ? <Divider /> : null;\n const arrowIcon = interactive ? <Icon icon={!open ? <DownArrow /> : <UpArrow />} /> : null;\n\n useEffect(() => {\n setState(!!props.open);\n }, [props.open]);\n\n return (\n <div className={classNames(\"webiny-ui-accordion-item\", props.className)}>\n <ListItem\n disabled={!interactive}\n className={classNames(\n listItem,\n { [openedState]: open },\n { [nonInteractive]: !interactive },\n \"webiny-ui-accordion-item__list-item\"\n )}\n onClick={onClick}\n data-testid={props[\"data-testid\"]}\n >\n {props.icon && (\n <ListItemGraphic>\n <Icon icon={props.icon} className={props.iconClassName} />\n </ListItemGraphic>\n )}\n\n <TitleContent className=\"webiny-ui-accordion-item__title\">\n <ListItemTitle>{props.title}</ListItemTitle>\n {props.description && (\n <ListItemDescription>\n <Typography use={\"body2\"}>{props.description}</Typography>\n </ListItemDescription>\n )}\n </TitleContent>\n <Actions>\n {props.actions ? props.actions : null}\n {divider}\n {arrowIcon}\n </Actions>\n </ListItem>\n <Transition in={open} timeout={duration}>\n {(state: TransitionStylesState) => (\n <Content\n style={{ ...defaultStyle, ...transitionStyles[state] }}\n className=\"webiny-ui-accordion-item__content\"\n >\n {props.children}\n </Content>\n )}\n </Transition>\n </div>\n );\n};\n\ntype AccordionItem = React.FC<AccordionItemProps> & {\n Divider: typeof Divider;\n Actions: typeof AccordionItemActions;\n Action: typeof AccordionItemAction;\n};\n\nexport const AccordionItem: AccordionItem = Object.assign(AccordionItemComponent, {\n Divider,\n Action: AccordionItemAction,\n Actions: AccordionItemActions\n});\n"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import React from "react";
2
+ export declare const AccordionItemActions: React.FC;
3
+ export interface AccordionItemActionProps {
4
+ icon: JSX.Element;
5
+ onClick: () => void;
6
+ disabled?: boolean;
7
+ }
8
+ export declare const AccordionItemAction: ({ icon, onClick, disabled }: AccordionItemActionProps) => JSX.Element;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.AccordionItemActions = exports.AccordionItemAction = void 0;
9
+
10
+ var _react = _interopRequireDefault(require("react"));
11
+
12
+ var _Button = require("../Button");
13
+
14
+ var AccordionItemActions = function AccordionItemActions(_ref) {
15
+ var children = _ref.children;
16
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, children);
17
+ };
18
+
19
+ exports.AccordionItemActions = AccordionItemActions;
20
+
21
+ var AccordionItemAction = function AccordionItemAction(_ref2) {
22
+ var icon = _ref2.icon,
23
+ _onClick = _ref2.onClick,
24
+ disabled = _ref2.disabled;
25
+ return /*#__PURE__*/_react.default.createElement(_Button.IconButton, {
26
+ disabled: disabled,
27
+ icon: icon,
28
+ onClick: function onClick(e) {
29
+ e.stopPropagation();
30
+
31
+ _onClick();
32
+ }
33
+ });
34
+ };
35
+
36
+ exports.AccordionItemAction = AccordionItemAction;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["AccordionItemActions","children","AccordionItemAction","icon","onClick","disabled","e","stopPropagation"],"sources":["AccordionItemActions.tsx"],"sourcesContent":["import React from \"react\";\nimport { IconButton } from \"~/Button\";\n\nexport const AccordionItemActions: React.FC = ({ children }) => {\n return <>{children}</>;\n};\n\nexport interface AccordionItemActionProps {\n icon: JSX.Element;\n onClick: () => void;\n disabled?: boolean;\n}\n\nexport const AccordionItemAction = ({ icon, onClick, disabled }: AccordionItemActionProps) => {\n return (\n <IconButton\n disabled={disabled}\n icon={icon}\n onClick={e => {\n e.stopPropagation();\n onClick();\n }}\n />\n );\n};\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AAEO,IAAMA,oBAA8B,GAAG,SAAjCA,oBAAiC,OAAkB;EAAA,IAAfC,QAAe,QAAfA,QAAe;EAC5D,oBAAO,4DAAGA,QAAH,CAAP;AACH,CAFM;;;;AAUA,IAAMC,mBAAmB,GAAG,SAAtBA,mBAAsB,QAA2D;EAAA,IAAxDC,IAAwD,SAAxDA,IAAwD;EAAA,IAAlDC,QAAkD,SAAlDA,OAAkD;EAAA,IAAzCC,QAAyC,SAAzCA,QAAyC;EAC1F,oBACI,6BAAC,kBAAD;IACI,QAAQ,EAAEA,QADd;IAEI,IAAI,EAAEF,IAFV;IAGI,OAAO,EAAE,iBAAAG,CAAC,EAAI;MACVA,CAAC,CAACC,eAAF;;MACAH,QAAO;IACV;EANL,EADJ;AAUH,CAXM"}
package/Alert/Alert.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
2
  export declare type AlertType = "success" | "info" | "warning" | "danger";
3
- interface AlertProps {
3
+ export interface AlertProps {
4
4
  title: string;
5
5
  type: AlertType;
6
6
  children?: React.ReactNode;
package/Alert/Alert.js CHANGED
@@ -25,7 +25,7 @@ var alertStyles = /*#__PURE__*/(0, _emotion.css)({
25
25
  marginBottom: 5
26
26
  },
27
27
  ".webiny-ui-alert__message": {
28
- lineHeight: "100%",
28
+ lineHeight: "120%",
29
29
  fontSize: 14,
30
30
  color: "var(--mdc-theme-on-surface)"
31
31
  },
@@ -1 +1 @@
1
- {"version":3,"names":["alertStyles","css","borderLeft","margin","padding","fontWeight","lineHeight","color","marginBottom","fontSize","borderColor","Alert","props","title","type","children","rest"],"sources":["Alert.tsx"],"sourcesContent":["import React from \"react\";\nimport { css } from \"emotion\";\n\nconst alertStyles = css({\n borderLeft: \"3px solid red\",\n margin: \"5px 0 15px 0\",\n padding: \"2px 0 2px 10px\",\n \".webiny-ui-alert__title\": {\n fontWeight: 600,\n lineHeight: \"150%\",\n color: \"var(--mdc-theme-on-surface)\",\n marginBottom: 5\n },\n \".webiny-ui-alert__message\": {\n lineHeight: \"100%\",\n fontSize: 14,\n color: \"var(--mdc-theme-on-surface)\"\n },\n \"&.webiny-ui-alert--success\": {\n borderColor: \"#21CEAF\"\n },\n \"&.webiny-ui-alert--info\": {\n borderColor: \"#29A9DB\"\n },\n \"&.webiny-ui-alert--warning\": {\n borderColor: \"#F45C3C\"\n },\n \"&.webiny-ui-alert--danger\": {\n borderColor: \"#E4495C\"\n }\n});\n\nexport type AlertType = \"success\" | \"info\" | \"warning\" | \"danger\";\n\ninterface AlertProps {\n // Alert title.\n title: string;\n\n // Alert type.\n type: AlertType;\n\n // Alert message.\n children?: React.ReactNode;\n\n // CSS class name\n className?: string;\n\n // Style object\n style?: React.CSSProperties;\n}\n\n/**\n * Use Alert component to display user's avatar.\n */\nconst Alert: React.FC<AlertProps> = props => {\n const { title, type, children, ...rest } = props;\n\n return (\n <div {...rest} className={alertStyles + \" webiny-ui-alert webiny-ui-alert--\" + type}>\n <p className={\"webiny-ui-alert__title\"}>{title}</p>\n <p className={\"webiny-ui-alert__message\"}>{children}</p>\n </div>\n );\n};\n\nexport { Alert };\n"],"mappings":";;;;;;;;;;;AAAA;;AACA;;;AAEA,IAAMA,WAAW,gBAAG,IAAAC,YAAA,EAAI;EACpBC,UAAU,EAAE,eADQ;EAEpBC,MAAM,EAAE,cAFY;EAGpBC,OAAO,EAAE,gBAHW;EAIpB,2BAA2B;IACvBC,UAAU,EAAE,GADW;IAEvBC,UAAU,EAAE,MAFW;IAGvBC,KAAK,EAAE,6BAHgB;IAIvBC,YAAY,EAAE;EAJS,CAJP;EAUpB,6BAA6B;IACzBF,UAAU,EAAE,MADa;IAEzBG,QAAQ,EAAE,EAFe;IAGzBF,KAAK,EAAE;EAHkB,CAVT;EAepB,8BAA8B;IAC1BG,WAAW,EAAE;EADa,CAfV;EAkBpB,2BAA2B;IACvBA,WAAW,EAAE;EADU,CAlBP;EAqBpB,8BAA8B;IAC1BA,WAAW,EAAE;EADa,CArBV;EAwBpB,6BAA6B;IACzBA,WAAW,EAAE;EADY;AAxBT,CAAJ,uBAApB;;AAgDA;AACA;AACA;AACA,IAAMC,KAA2B,GAAG,SAA9BA,KAA8B,CAAAC,KAAK,EAAI;EACzC,IAAQC,KAAR,GAA2CD,KAA3C,CAAQC,KAAR;EAAA,IAAeC,IAAf,GAA2CF,KAA3C,CAAeE,IAAf;EAAA,IAAqBC,QAArB,GAA2CH,KAA3C,CAAqBG,QAArB;EAAA,IAAkCC,IAAlC,0CAA2CJ,KAA3C;EAEA,oBACI,sDAASI,IAAT;IAAe,SAAS,EAAEhB,WAAW,GAAG,oCAAd,GAAqDc;EAA/E,iBACI;IAAG,SAAS,EAAE;EAAd,GAAyCD,KAAzC,CADJ,eAEI;IAAG,SAAS,EAAE;EAAd,GAA2CE,QAA3C,CAFJ,CADJ;AAMH,CATD"}
1
+ {"version":3,"names":["alertStyles","css","borderLeft","margin","padding","fontWeight","lineHeight","color","marginBottom","fontSize","borderColor","Alert","props","title","type","children","rest"],"sources":["Alert.tsx"],"sourcesContent":["import React from \"react\";\nimport { css } from \"emotion\";\n\nconst alertStyles = css({\n borderLeft: \"3px solid red\",\n margin: \"5px 0 15px 0\",\n padding: \"2px 0 2px 10px\",\n \".webiny-ui-alert__title\": {\n fontWeight: 600,\n lineHeight: \"150%\",\n color: \"var(--mdc-theme-on-surface)\",\n marginBottom: 5\n },\n \".webiny-ui-alert__message\": {\n lineHeight: \"120%\",\n fontSize: 14,\n color: \"var(--mdc-theme-on-surface)\"\n },\n \"&.webiny-ui-alert--success\": {\n borderColor: \"#21CEAF\"\n },\n \"&.webiny-ui-alert--info\": {\n borderColor: \"#29A9DB\"\n },\n \"&.webiny-ui-alert--warning\": {\n borderColor: \"#F45C3C\"\n },\n \"&.webiny-ui-alert--danger\": {\n borderColor: \"#E4495C\"\n }\n});\n\nexport type AlertType = \"success\" | \"info\" | \"warning\" | \"danger\";\n\nexport interface AlertProps {\n // Alert title.\n title: string;\n\n // Alert type.\n type: AlertType;\n\n // Alert message.\n children?: React.ReactNode;\n\n // CSS class name\n className?: string;\n\n // Style object\n style?: React.CSSProperties;\n}\n\n/**\n * Use Alert component to display user's avatar.\n */\nconst Alert: React.FC<AlertProps> = props => {\n const { title, type, children, ...rest } = props;\n\n return (\n <div {...rest} className={alertStyles + \" webiny-ui-alert webiny-ui-alert--\" + type}>\n <p className={\"webiny-ui-alert__title\"}>{title}</p>\n <p className={\"webiny-ui-alert__message\"}>{children}</p>\n </div>\n );\n};\n\nexport { Alert };\n"],"mappings":";;;;;;;;;;;AAAA;;AACA;;;AAEA,IAAMA,WAAW,gBAAG,IAAAC,YAAA,EAAI;EACpBC,UAAU,EAAE,eADQ;EAEpBC,MAAM,EAAE,cAFY;EAGpBC,OAAO,EAAE,gBAHW;EAIpB,2BAA2B;IACvBC,UAAU,EAAE,GADW;IAEvBC,UAAU,EAAE,MAFW;IAGvBC,KAAK,EAAE,6BAHgB;IAIvBC,YAAY,EAAE;EAJS,CAJP;EAUpB,6BAA6B;IACzBF,UAAU,EAAE,MADa;IAEzBG,QAAQ,EAAE,EAFe;IAGzBF,KAAK,EAAE;EAHkB,CAVT;EAepB,8BAA8B;IAC1BG,WAAW,EAAE;EADa,CAfV;EAkBpB,2BAA2B;IACvBA,WAAW,EAAE;EADU,CAlBP;EAqBpB,8BAA8B;IAC1BA,WAAW,EAAE;EADa,CArBV;EAwBpB,6BAA6B;IACzBA,WAAW,EAAE;EADY;AAxBT,CAAJ,uBAApB;;AAgDA;AACA;AACA;AACA,IAAMC,KAA2B,GAAG,SAA9BA,KAA8B,CAAAC,KAAK,EAAI;EACzC,IAAQC,KAAR,GAA2CD,KAA3C,CAAQC,KAAR;EAAA,IAAeC,IAAf,GAA2CF,KAA3C,CAAeE,IAAf;EAAA,IAAqBC,QAArB,GAA2CH,KAA3C,CAAqBG,QAArB;EAAA,IAAkCC,IAAlC,0CAA2CJ,KAA3C;EAEA,oBACI,sDAASI,IAAT;IAAe,SAAS,EAAEhB,WAAW,GAAG,oCAAd,GAAqDc;EAA/E,iBACI;IAAG,SAAS,EAAE;EAAd,GAAyCD,KAAzC,CADJ,eAEI;IAAG,SAAS,EAAE;EAAd,GAA2CE,QAA3C,CAFJ,CADJ;AAMH,CATD"}
@@ -4,16 +4,45 @@ import { FabProps } from "@rmwc/fab";
4
4
  import { IconProps } from "../Icon/Icon";
5
5
  import { SyntheticEvent } from "react";
6
6
  export interface ButtonProps {
7
+ /**
8
+ * Make button flat (only applicable to Primary button).
9
+ */
7
10
  flat?: boolean;
11
+ /**
12
+ * Make button smaller.
13
+ */
8
14
  small?: boolean;
9
- onClick?: (event: React.MouseEvent<any, MouseEvent>) => void | null;
15
+ /**
16
+ * Returning `any` allows us to pass callbacks to the button without worrying about their
17
+ * specific return types. Buttons don't use return values from callbacks, so we don't have to worry
18
+ * about their return types at all.
19
+ */
20
+ onClick?: (event: React.MouseEvent<any, MouseEvent>) => any;
21
+ /**
22
+ * Label and optionally an icon (using Button.Icon component).
23
+ */
10
24
  children?: React.ReactNode;
25
+ /**
26
+ * Show ripple effect on button click.
27
+ */
11
28
  ripple?: boolean;
29
+ /**
30
+ * Additional button class name.
31
+ */
12
32
  className?: string;
33
+ /**
34
+ * Is button disabled?
35
+ */
13
36
  disabled?: boolean;
37
+ /**
38
+ * Additional inline styles.
39
+ */
14
40
  style?: {
15
41
  [key: string]: any;
16
42
  };
43
+ /**
44
+ * ID of the element for testing purposes.
45
+ */
17
46
  "data-testid"?: string;
18
47
  }
19
48
  /**
package/Button/Button.js CHANGED
@@ -23,7 +23,7 @@ var _classnames = _interopRequireDefault(require("classnames"));
23
23
 
24
24
  var _Button = require("./Button.styles");
25
25
 
26
- var _excluded = ["disabled", "icon", "onClick", "small", "label", "ripple", "className"];
26
+ var _excluded = ["disabled", "label", "icon", "onClick", "small", "ripple", "className"];
27
27
 
28
28
  /**
29
29
  * Shows a default button, used typically when action is not of high priority.
@@ -119,12 +119,11 @@ exports.ButtonSecondary = ButtonSecondary;
119
119
  */
120
120
  var ButtonFloating = function ButtonFloating(props) {
121
121
  var disabled = props.disabled,
122
+ label = props.label,
122
123
  icon = props.icon,
123
124
  onClick = props.onClick,
124
125
  _props$small3 = props.small,
125
126
  small = _props$small3 === void 0 ? false : _props$small3,
126
- _props$label = props.label,
127
- label = _props$label === void 0 ? null : _props$label,
128
127
  _props$ripple4 = props.ripple,
129
128
  ripple = _props$ripple4 === void 0 ? true : _props$ripple4,
130
129
  _props$className4 = props.className,
@@ -1 +1 @@
1
- {"version":3,"names":["ButtonDefault","props","disabled","onClick","children","small","ripple","className","style","classNames","ButtonPrimary","flat","ButtonSecondary","webinyButtonStyles","ButtonFloating","icon","label","rest","ButtonIcon"],"sources":["Button.tsx"],"sourcesContent":["import React from \"react\";\nimport * as RmwcButton from \"@rmwc/button\";\nimport { Fab, FabProps } from \"@rmwc/fab\";\nimport { Icon, IconProps } from \"../Icon/Icon\";\nimport classNames from \"classnames\";\nimport { SyntheticEvent } from \"react\";\nimport { webinyButtonStyles } from \"./Button.styles\";\nexport interface ButtonProps {\n // Make button flat (only applicable to Primary button).\n flat?: boolean;\n\n // Make button smaller.\n small?: boolean;\n\n // onClick handler.\n onClick?: (event: React.MouseEvent<any, MouseEvent>) => void | null;\n\n // Label and optionally an icon (using Button.Icon component).\n children?: React.ReactNode;\n\n // Show ripple effect on button click. Default: true\n ripple?: boolean;\n\n className?: string;\n\n disabled?: boolean;\n\n style?: { [key: string]: any };\n\n // For testing purposes.\n \"data-testid\"?: string;\n}\n\n/**\n * Shows a default button, used typically when action is not of high priority.\n */\nexport const ButtonDefault: React.FC<ButtonProps> = props => {\n const { disabled, onClick, children, small, ripple = true, className = \"\", style } = props;\n\n return (\n <RmwcButton.Button\n style={style}\n disabled={disabled}\n dense={small}\n onClick={onClick}\n ripple={ripple}\n className={classNames(\"webiny-ui-button\", className)}\n data-testid={props[\"data-testid\"]}\n >\n {children}\n </RmwcButton.Button>\n );\n};\n\n/**\n * Shows primary button, eg. for submitting forms.\n */\nexport const ButtonPrimary: React.FC<ButtonProps> = props => {\n const {\n disabled,\n onClick,\n children,\n small = false,\n flat = false,\n ripple = true,\n style = {},\n className = null\n } = props;\n return (\n <RmwcButton.Button\n raised={!flat}\n dense={small}\n disabled={disabled}\n unelevated={flat}\n ripple={ripple}\n onClick={onClick}\n style={style}\n className={classNames(\"webiny-ui-button webiny-ui-button--primary\", className)}\n data-testid={props[\"data-testid\"]}\n >\n {children}\n </RmwcButton.Button>\n );\n};\n\n/**\n * Shows a secondary button - eg. for doing a reset on a form.\n */\nexport const ButtonSecondary: React.FC<ButtonProps> = props => {\n const {\n disabled,\n onClick,\n children,\n small = false,\n ripple = true,\n className = null,\n style = {}\n } = props;\n\n return (\n <RmwcButton.Button\n disabled={disabled}\n outlined\n dense={small}\n ripple={ripple}\n onClick={onClick}\n style={style}\n className={classNames(\n \"webiny-ui-button webiny-ui-button--secondary\",\n webinyButtonStyles,\n className\n )}\n data-testid={props[\"data-testid\"]}\n >\n {children}\n </RmwcButton.Button>\n );\n};\n\nexport type ButtonFloatingProps = ButtonProps &\n FabProps & {\n label?: React.ReactNode;\n icon?: React.ReactNode;\n onMouseDown?: (e: SyntheticEvent) => void;\n onMouseUp?: (e: SyntheticEvent) => void;\n };\n\n/**\n * A floating button, shown on the side of the screen, typically used for creating new content or accessing settings.\n */\nexport const ButtonFloating: React.FC<ButtonFloatingProps> = props => {\n const {\n disabled,\n icon,\n onClick,\n small = false,\n label = null,\n ripple = true,\n className = null,\n ...rest\n } = props;\n return (\n <Fab\n data-testid={props[\"data-testid\"]}\n disabled={disabled}\n mini={small}\n onClick={onClick}\n label={label}\n ripple={ripple}\n icon={icon}\n className={classNames(\"webiny-ui-button--floating\", className)}\n {...rest}\n />\n );\n};\n\n/**\n * Shows an icon, suitable to be shown inside of a button.\n */\nexport const ButtonIcon: React.FC<IconProps> = props => <Icon {...props} />;\n"],"mappings":";;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AAEA;;;;AA2BA;AACA;AACA;AACO,IAAMA,aAAoC,GAAG,SAAvCA,aAAuC,CAAAC,KAAK,EAAI;EACzD,IAAQC,QAAR,GAAqFD,KAArF,CAAQC,QAAR;EAAA,IAAkBC,OAAlB,GAAqFF,KAArF,CAAkBE,OAAlB;EAAA,IAA2BC,QAA3B,GAAqFH,KAArF,CAA2BG,QAA3B;EAAA,IAAqCC,KAArC,GAAqFJ,KAArF,CAAqCI,KAArC;EAAA,oBAAqFJ,KAArF,CAA4CK,MAA5C;EAAA,IAA4CA,MAA5C,8BAAqD,IAArD;EAAA,uBAAqFL,KAArF,CAA2DM,SAA3D;EAAA,IAA2DA,SAA3D,iCAAuE,EAAvE;EAAA,IAA2EC,KAA3E,GAAqFP,KAArF,CAA2EO,KAA3E;EAEA,oBACI,6BAAC,UAAD,CAAY,MAAZ;IACI,KAAK,EAAEA,KADX;IAEI,QAAQ,EAAEN,QAFd;IAGI,KAAK,EAAEG,KAHX;IAII,OAAO,EAAEF,OAJb;IAKI,MAAM,EAAEG,MALZ;IAMI,SAAS,EAAE,IAAAG,mBAAA,EAAW,kBAAX,EAA+BF,SAA/B,CANf;IAOI,eAAaN,KAAK,CAAC,aAAD;EAPtB,GASKG,QATL,CADJ;AAaH,CAhBM;AAkBP;AACA;AACA;;;;;AACO,IAAMM,aAAoC,GAAG,SAAvCA,aAAuC,CAAAT,KAAK,EAAI;EACzD,IACIC,QADJ,GASID,KATJ,CACIC,QADJ;EAAA,IAEIC,OAFJ,GASIF,KATJ,CAEIE,OAFJ;EAAA,IAGIC,QAHJ,GASIH,KATJ,CAGIG,QAHJ;EAAA,mBASIH,KATJ,CAIII,KAJJ;EAAA,IAIIA,KAJJ,6BAIY,KAJZ;EAAA,kBASIJ,KATJ,CAKIU,IALJ;EAAA,IAKIA,IALJ,4BAKW,KALX;EAAA,qBASIV,KATJ,CAMIK,MANJ;EAAA,IAMIA,MANJ,+BAMa,IANb;EAAA,mBASIL,KATJ,CAOIO,KAPJ;EAAA,IAOIA,KAPJ,6BAOY,EAPZ;EAAA,wBASIP,KATJ,CAQIM,SARJ;EAAA,IAQIA,SARJ,kCAQgB,IARhB;EAUA,oBACI,6BAAC,UAAD,CAAY,MAAZ;IACI,MAAM,EAAE,CAACI,IADb;IAEI,KAAK,EAAEN,KAFX;IAGI,QAAQ,EAAEH,QAHd;IAII,UAAU,EAAES,IAJhB;IAKI,MAAM,EAAEL,MALZ;IAMI,OAAO,EAAEH,OANb;IAOI,KAAK,EAAEK,KAPX;IAQI,SAAS,EAAE,IAAAC,mBAAA,EAAW,4CAAX,EAAyDF,SAAzD,CARf;IASI,eAAaN,KAAK,CAAC,aAAD;EATtB,GAWKG,QAXL,CADJ;AAeH,CA1BM;AA4BP;AACA;AACA;;;;;AACO,IAAMQ,eAAsC,GAAG,SAAzCA,eAAyC,CAAAX,KAAK,EAAI;EAC3D,IACIC,QADJ,GAQID,KARJ,CACIC,QADJ;EAAA,IAEIC,OAFJ,GAQIF,KARJ,CAEIE,OAFJ;EAAA,IAGIC,QAHJ,GAQIH,KARJ,CAGIG,QAHJ;EAAA,oBAQIH,KARJ,CAIII,KAJJ;EAAA,IAIIA,KAJJ,8BAIY,KAJZ;EAAA,qBAQIJ,KARJ,CAKIK,MALJ;EAAA,IAKIA,MALJ,+BAKa,IALb;EAAA,wBAQIL,KARJ,CAMIM,SANJ;EAAA,IAMIA,SANJ,kCAMgB,IANhB;EAAA,oBAQIN,KARJ,CAOIO,KAPJ;EAAA,IAOIA,KAPJ,8BAOY,EAPZ;EAUA,oBACI,6BAAC,UAAD,CAAY,MAAZ;IACI,QAAQ,EAAEN,QADd;IAEI,QAAQ,MAFZ;IAGI,KAAK,EAAEG,KAHX;IAII,MAAM,EAAEC,MAJZ;IAKI,OAAO,EAAEH,OALb;IAMI,KAAK,EAAEK,KANX;IAOI,SAAS,EAAE,IAAAC,mBAAA,EACP,8CADO,EAEPI,0BAFO,EAGPN,SAHO,CAPf;IAYI,eAAaN,KAAK,CAAC,aAAD;EAZtB,GAcKG,QAdL,CADJ;AAkBH,CA7BM;;;;AAuCP;AACA;AACA;AACO,IAAMU,cAA6C,GAAG,SAAhDA,cAAgD,CAAAb,KAAK,EAAI;EAClE,IACIC,QADJ,GASID,KATJ,CACIC,QADJ;EAAA,IAEIa,IAFJ,GASId,KATJ,CAEIc,IAFJ;EAAA,IAGIZ,OAHJ,GASIF,KATJ,CAGIE,OAHJ;EAAA,oBASIF,KATJ,CAIII,KAJJ;EAAA,IAIIA,KAJJ,8BAIY,KAJZ;EAAA,mBASIJ,KATJ,CAKIe,KALJ;EAAA,IAKIA,KALJ,6BAKY,IALZ;EAAA,qBASIf,KATJ,CAMIK,MANJ;EAAA,IAMIA,MANJ,+BAMa,IANb;EAAA,wBASIL,KATJ,CAOIM,SAPJ;EAAA,IAOIA,SAPJ,kCAOgB,IAPhB;EAAA,IAQOU,IARP,0CASIhB,KATJ;EAUA,oBACI,6BAAC,QAAD;IACI,eAAaA,KAAK,CAAC,aAAD,CADtB;IAEI,QAAQ,EAAEC,QAFd;IAGI,IAAI,EAAEG,KAHV;IAII,OAAO,EAAEF,OAJb;IAKI,KAAK,EAAEa,KALX;IAMI,MAAM,EAAEV,MANZ;IAOI,IAAI,EAAES,IAPV;IAQI,SAAS,EAAE,IAAAN,mBAAA,EAAW,4BAAX,EAAyCF,SAAzC;EARf,GASQU,IATR,EADJ;AAaH,CAxBM;AA0BP;AACA;AACA;;;;;AACO,IAAMC,UAA+B,GAAG,SAAlCA,UAAkC,CAAAjB,KAAK;EAAA,oBAAI,6BAAC,UAAD,EAAUA,KAAV,CAAJ;AAAA,CAA7C"}
1
+ {"version":3,"names":["ButtonDefault","props","disabled","onClick","children","small","ripple","className","style","classNames","ButtonPrimary","flat","ButtonSecondary","webinyButtonStyles","ButtonFloating","label","icon","rest","ButtonIcon"],"sources":["Button.tsx"],"sourcesContent":["import React from \"react\";\nimport * as RmwcButton from \"@rmwc/button\";\nimport { Fab, FabProps } from \"@rmwc/fab\";\nimport { Icon, IconProps } from \"../Icon/Icon\";\nimport classNames from \"classnames\";\nimport { SyntheticEvent } from \"react\";\nimport { webinyButtonStyles } from \"./Button.styles\";\n\nexport interface ButtonProps {\n /**\n * Make button flat (only applicable to Primary button).\n */\n flat?: boolean;\n\n /**\n * Make button smaller.\n */\n small?: boolean;\n\n /**\n * Returning `any` allows us to pass callbacks to the button without worrying about their\n * specific return types. Buttons don't use return values from callbacks, so we don't have to worry\n * about their return types at all.\n */\n onClick?: (event: React.MouseEvent<any, MouseEvent>) => any;\n\n /**\n * Label and optionally an icon (using Button.Icon component).\n */\n children?: React.ReactNode;\n\n /**\n * Show ripple effect on button click.\n */\n ripple?: boolean;\n\n /**\n * Additional button class name.\n */\n className?: string;\n\n /**\n * Is button disabled?\n */\n disabled?: boolean;\n\n /**\n * Additional inline styles.\n */\n style?: { [key: string]: any };\n\n /**\n * ID of the element for testing purposes.\n */\n \"data-testid\"?: string;\n}\n\n/**\n * Shows a default button, used typically when action is not of high priority.\n */\nexport const ButtonDefault: React.FC<ButtonProps> = props => {\n const { disabled, onClick, children, small, ripple = true, className = \"\", style } = props;\n\n return (\n <RmwcButton.Button\n style={style}\n disabled={disabled}\n dense={small}\n onClick={onClick}\n ripple={ripple}\n className={classNames(\"webiny-ui-button\", className)}\n data-testid={props[\"data-testid\"]}\n >\n {children}\n </RmwcButton.Button>\n );\n};\n\n/**\n * Shows primary button, eg. for submitting forms.\n */\nexport const ButtonPrimary: React.FC<ButtonProps> = props => {\n const {\n disabled,\n onClick,\n children,\n small = false,\n flat = false,\n ripple = true,\n style = {},\n className = null\n } = props;\n return (\n <RmwcButton.Button\n raised={!flat}\n dense={small}\n disabled={disabled}\n unelevated={flat}\n ripple={ripple}\n onClick={onClick}\n style={style}\n className={classNames(\"webiny-ui-button webiny-ui-button--primary\", className)}\n data-testid={props[\"data-testid\"]}\n >\n {children}\n </RmwcButton.Button>\n );\n};\n\n/**\n * Shows a secondary button - eg. for doing a reset on a form.\n */\nexport const ButtonSecondary: React.FC<ButtonProps> = props => {\n const {\n disabled,\n onClick,\n children,\n small = false,\n ripple = true,\n className = null,\n style = {}\n } = props;\n\n return (\n <RmwcButton.Button\n disabled={disabled}\n outlined\n dense={small}\n ripple={ripple}\n onClick={onClick}\n style={style}\n className={classNames(\n \"webiny-ui-button webiny-ui-button--secondary\",\n webinyButtonStyles,\n className\n )}\n data-testid={props[\"data-testid\"]}\n >\n {children}\n </RmwcButton.Button>\n );\n};\n\nexport type ButtonFloatingProps = ButtonProps &\n FabProps & {\n label?: React.ReactNode;\n icon?: React.ReactNode;\n onMouseDown?: (e: SyntheticEvent) => void;\n onMouseUp?: (e: SyntheticEvent) => void;\n };\n\n/**\n * A floating button, shown on the side of the screen, typically used for creating new content or accessing settings.\n */\nexport const ButtonFloating: React.FC<ButtonFloatingProps> = props => {\n const {\n disabled,\n label,\n icon,\n onClick,\n small = false,\n ripple = true,\n className = null,\n ...rest\n } = props;\n return (\n <Fab\n data-testid={props[\"data-testid\"]}\n disabled={disabled}\n mini={small}\n onClick={onClick}\n label={label}\n ripple={ripple}\n icon={icon}\n className={classNames(\"webiny-ui-button--floating\", className)}\n {...rest}\n />\n );\n};\n\n/**\n * Shows an icon, suitable to be shown inside of a button.\n */\nexport const ButtonIcon: React.FC<IconProps> = props => <Icon {...props} />;\n"],"mappings":"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"}
@@ -1,7 +1,9 @@
1
1
  import React from "react";
2
2
  import { FormComponentProps } from "../types";
3
+ import "brace/mode/html";
3
4
  import "brace/theme/github";
4
5
  import "brace/theme/twilight";
6
+ import "brace/theme/chrome";
5
7
  interface Props extends FormComponentProps {
6
8
  mode: string;
7
9
  theme: string;
@@ -27,10 +27,14 @@ var _emotion = require("emotion");
27
27
 
28
28
  var _reactAce = _interopRequireDefault(require("react-ace"));
29
29
 
30
+ require("brace/mode/html");
31
+
30
32
  require("brace/theme/github");
31
33
 
32
34
  require("brace/theme/twilight");
33
35
 
36
+ require("brace/theme/chrome");
37
+
34
38
  var _FormElementMessage = require("../FormElementMessage");
35
39
 
36
40
  var _excluded = ["value", "description", "validation", "theme"];
@@ -1 +1 @@
1
- {"version":3,"names":["webinyCheckboxHelperText","css","paddingTop","CodeEditor","value","props","onChange","description","validation","theme","rest","validationIsValid","isValid","validationMessage","message","String","React","Component"],"sources":["CodeEditor.tsx"],"sourcesContent":["import React from \"react\";\nimport { FormComponentProps } from \"~/types\";\nimport { css } from \"emotion\";\n\nimport AceEditor from \"react-ace\";\nimport \"brace/theme/github\";\nimport \"brace/theme/twilight\";\nimport { FormElementMessage } from \"~/FormElementMessage\";\n\n/**\n * Controls the helper text below the checkbox.\n * @type {string}\n */\nconst webinyCheckboxHelperText = css(\n {},\n {\n \"&.mdc-text-field-helper-text\": {\n paddingTop: 5\n }\n }\n);\n\ninterface Props extends FormComponentProps {\n mode: string;\n\n theme: string;\n\n // Description beneath the input.\n description?: React.ReactNode;\n}\n\n/**\n * CodeEditor component can be used to store simple boolean values.\n */\nclass CodeEditor extends React.Component<Props> {\n onChange = (value: string) => {\n this.props.onChange && this.props.onChange(value);\n };\n\n public override render() {\n const { value, description, validation, theme = \"github\", ...rest } = this.props;\n\n const { isValid: validationIsValid, message: validationMessage } = validation || {};\n\n return (\n <React.Fragment>\n <AceEditor\n value={value ? String(value) : \"\"}\n theme={theme}\n onChange={this.onChange}\n {...rest}\n width=\"100%\"\n className={\"mdc-text-field\"}\n />\n\n {validationIsValid === false && (\n <FormElementMessage error className={webinyCheckboxHelperText}>\n {validationMessage}\n </FormElementMessage>\n )}\n\n {validationIsValid !== false && description && (\n <FormElementMessage className={webinyCheckboxHelperText}>\n {description}\n </FormElementMessage>\n )}\n </React.Fragment>\n );\n }\n}\n\nexport { CodeEditor };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA;;AAEA;;AACA;;AACA;;AACA;;;;AAEA;AACA;AACA;AACA;AACA,IAAMA,wBAAwB,gBAAG,IAAAC,YAAA,EAC7B,EAD6B,EAE7B;EACI,gCAAgC;IAC5BC,UAAU,EAAE;EADgB;AADpC,CAF6B,oCAAjC;;AAkBA;AACA;AACA;IACMC,U;;;;;;;;;;;;;;;2FACS,UAACC,KAAD,EAAmB;MAC1B,MAAKC,KAAL,CAAWC,QAAX,IAAuB,MAAKD,KAAL,CAAWC,QAAX,CAAoBF,KAApB,CAAvB;IACH,C;;;;;;WAED,kBAAyB;MACrB,kBAAsE,KAAKC,KAA3E;MAAA,IAAQD,KAAR,eAAQA,KAAR;MAAA,IAAeG,WAAf,eAAeA,WAAf;MAAA,IAA4BC,UAA5B,eAA4BA,UAA5B;MAAA,oCAAwCC,KAAxC;MAAA,IAAwCA,KAAxC,kCAAgD,QAAhD;MAAA,IAA6DC,IAA7D;;MAEA,WAAmEF,UAAU,IAAI,EAAjF;MAAA,IAAiBG,iBAAjB,QAAQC,OAAR;MAAA,IAA6CC,iBAA7C,QAAoCC,OAApC;;MAEA,oBACI,6BAAC,cAAD,CAAO,QAAP,qBACI,6BAAC,iBAAD;QACI,KAAK,EAAEV,KAAK,GAAGW,MAAM,CAACX,KAAD,CAAT,GAAmB,EADnC;QAEI,KAAK,EAAEK,KAFX;QAGI,QAAQ,EAAE,KAAKH;MAHnB,GAIQI,IAJR;QAKI,KAAK,EAAC,MALV;QAMI,SAAS,EAAE;MANf,GADJ,EAUKC,iBAAiB,KAAK,KAAtB,iBACG,6BAAC,sCAAD;QAAoB,KAAK,MAAzB;QAA0B,SAAS,EAAEX;MAArC,GACKa,iBADL,CAXR,EAgBKF,iBAAiB,KAAK,KAAtB,IAA+BJ,WAA/B,iBACG,6BAAC,sCAAD;QAAoB,SAAS,EAAEP;MAA/B,GACKO,WADL,CAjBR,CADJ;IAwBH;;;EAlCoBS,cAAA,CAAMC,S"}
1
+ {"version":3,"names":["webinyCheckboxHelperText","css","paddingTop","CodeEditor","value","props","onChange","description","validation","theme","rest","validationIsValid","isValid","validationMessage","message","String","React","Component"],"sources":["CodeEditor.tsx"],"sourcesContent":["import React from \"react\";\nimport { FormComponentProps } from \"~/types\";\nimport { css } from \"emotion\";\n\nimport AceEditor from \"react-ace\";\n// Modes\nimport \"brace/mode/html\";\n// Themes\nimport \"brace/theme/github\";\nimport \"brace/theme/twilight\";\nimport \"brace/theme/chrome\";\nimport { FormElementMessage } from \"~/FormElementMessage\";\n\n/**\n * Controls the helper text below the checkbox.\n * @type {string}\n */\nconst webinyCheckboxHelperText = css(\n {},\n {\n \"&.mdc-text-field-helper-text\": {\n paddingTop: 5\n }\n }\n);\n\ninterface Props extends FormComponentProps {\n mode: string;\n\n theme: string;\n\n // Description beneath the input.\n description?: React.ReactNode;\n}\n\n/**\n * CodeEditor component can be used to store simple boolean values.\n */\nclass CodeEditor extends React.Component<Props> {\n onChange = (value: string) => {\n this.props.onChange && this.props.onChange(value);\n };\n\n public override render() {\n const { value, description, validation, theme = \"github\", ...rest } = this.props;\n\n const { isValid: validationIsValid, message: validationMessage } = validation || {};\n\n return (\n <React.Fragment>\n <AceEditor\n value={value ? String(value) : \"\"}\n theme={theme}\n onChange={this.onChange}\n {...rest}\n width=\"100%\"\n className={\"mdc-text-field\"}\n />\n\n {validationIsValid === false && (\n <FormElementMessage error className={webinyCheckboxHelperText}>\n {validationMessage}\n </FormElementMessage>\n )}\n\n {validationIsValid !== false && description && (\n <FormElementMessage className={webinyCheckboxHelperText}>\n {description}\n </FormElementMessage>\n )}\n </React.Fragment>\n );\n }\n}\n\nexport { CodeEditor };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA;;AAEA;;AAEA;;AAEA;;AACA;;AACA;;AACA;;;;AAEA;AACA;AACA;AACA;AACA,IAAMA,wBAAwB,gBAAG,IAAAC,YAAA,EAC7B,EAD6B,EAE7B;EACI,gCAAgC;IAC5BC,UAAU,EAAE;EADgB;AADpC,CAF6B,oCAAjC;;AAkBA;AACA;AACA;IACMC,U;;;;;;;;;;;;;;;2FACS,UAACC,KAAD,EAAmB;MAC1B,MAAKC,KAAL,CAAWC,QAAX,IAAuB,MAAKD,KAAL,CAAWC,QAAX,CAAoBF,KAApB,CAAvB;IACH,C;;;;;;WAED,kBAAyB;MACrB,kBAAsE,KAAKC,KAA3E;MAAA,IAAQD,KAAR,eAAQA,KAAR;MAAA,IAAeG,WAAf,eAAeA,WAAf;MAAA,IAA4BC,UAA5B,eAA4BA,UAA5B;MAAA,oCAAwCC,KAAxC;MAAA,IAAwCA,KAAxC,kCAAgD,QAAhD;MAAA,IAA6DC,IAA7D;;MAEA,WAAmEF,UAAU,IAAI,EAAjF;MAAA,IAAiBG,iBAAjB,QAAQC,OAAR;MAAA,IAA6CC,iBAA7C,QAAoCC,OAApC;;MAEA,oBACI,6BAAC,cAAD,CAAO,QAAP,qBACI,6BAAC,iBAAD;QACI,KAAK,EAAEV,KAAK,GAAGW,MAAM,CAACX,KAAD,CAAT,GAAmB,EADnC;QAEI,KAAK,EAAEK,KAFX;QAGI,QAAQ,EAAE,KAAKH;MAHnB,GAIQI,IAJR;QAKI,KAAK,EAAC,MALV;QAMI,SAAS,EAAE;MANf,GADJ,EAUKC,iBAAiB,KAAK,KAAtB,iBACG,6BAAC,sCAAD;QAAoB,KAAK,MAAzB;QAA0B,SAAS,EAAEX;MAArC,GACKa,iBADL,CAXR,EAgBKF,iBAAiB,KAAK,KAAtB,IAA+BJ,WAA/B,iBACG,6BAAC,sCAAD;QAAoB,SAAS,EAAEP;MAA/B,GACKO,WADL,CAjBR,CADJ;IAwBH;;;EAlCoBS,cAAA,CAAMC,S"}
@@ -0,0 +1,22 @@
1
+ /// <reference types="react" />
2
+ import { DataTableCellProps } from "@rmwc/data-table";
3
+ import "@rmwc/data-table/data-table.css";
4
+ interface Column<T> {
5
+ header: string | number | JSX.Element;
6
+ cell?: (row: T) => string | number | JSX.Element;
7
+ meta?: DataTableCellProps;
8
+ className?: string;
9
+ }
10
+ export declare type Columns<T> = {
11
+ [P in keyof T]?: Column<T>;
12
+ };
13
+ interface Props<T> {
14
+ columns: Columns<T>;
15
+ data: T[];
16
+ onSelectRow?: (rows: T[] | []) => void;
17
+ loadingInitial?: boolean;
18
+ stickyColumns?: number;
19
+ stickyRows?: number;
20
+ }
21
+ export declare const DataTable: <T>({ columns, data, loadingInitial, onSelectRow, stickyColumns, stickyRows }: Props<T>) => JSX.Element;
22
+ export {};