react-miui 0.11.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/CHANGELOG.md +12 -2
  2. package/assets/dots.svg +1 -0
  3. package/assets/sources/dots.fla +0 -0
  4. package/dist/components/icons/Dots.d.ts +7 -0
  5. package/dist/components/icons/Dots.d.ts.map +1 -0
  6. package/dist/components/icons/Dots.js +13 -0
  7. package/dist/components/icons/Dots.js.map +1 -0
  8. package/dist/components/icons/Icon.d.ts +2 -1
  9. package/dist/components/icons/Icon.d.ts.map +1 -1
  10. package/dist/components/icons/Icon.js +3 -0
  11. package/dist/components/icons/Icon.js.map +1 -1
  12. package/dist/components/layout/header/Header.d.ts +1 -1
  13. package/dist/components/layout/header/Header.d.ts.map +1 -1
  14. package/dist/components/layout/header/Header.js +1 -0
  15. package/dist/components/layout/header/Header.js.map +1 -1
  16. package/dist/components/layout/header/Header.module.scss +6 -0
  17. package/dist/components/layout/header/HeaderIconAction.module.scss +2 -1
  18. package/dist/components/layout/header/StickyHeader.d.ts +4 -1
  19. package/dist/components/layout/header/StickyHeader.d.ts.map +1 -1
  20. package/dist/components/layout/header/StickyHeader.js +1 -1
  21. package/dist/components/layout/header/StickyHeader.js.map +1 -1
  22. package/dist/components/ui/drawer/Drawer.d.ts +22 -0
  23. package/dist/components/ui/drawer/Drawer.d.ts.map +1 -0
  24. package/dist/components/ui/drawer/Drawer.js +84 -0
  25. package/dist/components/ui/drawer/Drawer.js.map +1 -0
  26. package/dist/components/ui/drawer/Drawer.module.scss +15 -0
  27. package/dist/components/ui/pop/Pop.d.ts +1 -0
  28. package/dist/components/ui/pop/Pop.d.ts.map +1 -1
  29. package/dist/components/ui/pop/Pop.js +5 -2
  30. package/dist/components/ui/pop/Pop.js.map +1 -1
  31. package/dist/components/ui/stats/Stats.d.ts +12 -0
  32. package/dist/components/ui/stats/Stats.d.ts.map +1 -0
  33. package/dist/components/ui/stats/Stats.js +24 -0
  34. package/dist/components/ui/stats/Stats.js.map +1 -0
  35. package/dist/components/ui/stats/Stats.module.scss +48 -0
  36. package/dist/components/{ui/pop → utils}/HandleEsc.d.ts +0 -0
  37. package/dist/components/utils/HandleEsc.d.ts.map +1 -0
  38. package/dist/components/{ui/pop → utils}/HandleEsc.js +0 -0
  39. package/dist/components/utils/HandleEsc.js.map +1 -0
  40. package/dist/global.scss +3 -0
  41. package/dist/index.d.ts +1 -0
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +1 -0
  44. package/dist/index.js.map +1 -1
  45. package/dist/scrollbars.scss +22 -0
  46. package/docs/assets/js/search.js +1 -1
  47. package/docs/assets/js/search.json +1 -1
  48. package/docs/classes/Drawer.html +1085 -0
  49. package/docs/classes/Pop.html +15 -12
  50. package/docs/classes/ToasterProvider.html +11 -8
  51. package/docs/enums/ICON.html +28 -11
  52. package/docs/index.html +7 -4
  53. package/docs/modules/Item.html +3 -3
  54. package/docs/modules/List.html +3 -3
  55. package/docs/modules/Modal.html +3 -3
  56. package/docs/modules/ModalButtons.html +3 -3
  57. package/docs/modules/Section.html +3 -3
  58. package/docs/modules/StickyHeader.html +6 -11
  59. package/docs/modules.html +32 -28
  60. package/docs/pages/Tutorials/Test.html +3 -3
  61. package/esm/components/icons/Dots.d.ts +7 -0
  62. package/esm/components/icons/Dots.d.ts.map +1 -0
  63. package/esm/components/icons/Dots.js +7 -0
  64. package/esm/components/icons/Dots.js.map +1 -0
  65. package/esm/components/icons/Icon.d.ts +2 -1
  66. package/esm/components/icons/Icon.d.ts.map +1 -1
  67. package/esm/components/icons/Icon.js +3 -0
  68. package/esm/components/icons/Icon.js.map +1 -1
  69. package/esm/components/layout/header/Header.d.ts +1 -1
  70. package/esm/components/layout/header/Header.d.ts.map +1 -1
  71. package/esm/components/layout/header/Header.js +1 -0
  72. package/esm/components/layout/header/Header.js.map +1 -1
  73. package/esm/components/layout/header/Header.module.scss +6 -0
  74. package/esm/components/layout/header/HeaderIconAction.module.scss +2 -1
  75. package/esm/components/layout/header/StickyHeader.d.ts +4 -1
  76. package/esm/components/layout/header/StickyHeader.d.ts.map +1 -1
  77. package/esm/components/layout/header/StickyHeader.js +1 -1
  78. package/esm/components/layout/header/StickyHeader.js.map +1 -1
  79. package/esm/components/ui/drawer/Drawer.d.ts +22 -0
  80. package/esm/components/ui/drawer/Drawer.d.ts.map +1 -0
  81. package/esm/components/ui/drawer/Drawer.js +59 -0
  82. package/esm/components/ui/drawer/Drawer.js.map +1 -0
  83. package/esm/components/ui/drawer/Drawer.module.scss +15 -0
  84. package/esm/components/ui/pop/Pop.d.ts +1 -0
  85. package/esm/components/ui/pop/Pop.d.ts.map +1 -1
  86. package/esm/components/ui/pop/Pop.js +5 -2
  87. package/esm/components/ui/pop/Pop.js.map +1 -1
  88. package/esm/components/ui/stats/Stats.d.ts +12 -0
  89. package/esm/components/ui/stats/Stats.d.ts.map +1 -0
  90. package/esm/components/ui/stats/Stats.js +18 -0
  91. package/esm/components/ui/stats/Stats.js.map +1 -0
  92. package/esm/components/ui/stats/Stats.module.scss +48 -0
  93. package/esm/components/{ui/pop → utils}/HandleEsc.d.ts +0 -0
  94. package/esm/components/utils/HandleEsc.d.ts.map +1 -0
  95. package/esm/components/{ui/pop → utils}/HandleEsc.js +0 -0
  96. package/esm/components/utils/HandleEsc.js.map +1 -0
  97. package/esm/global.scss +3 -0
  98. package/esm/index.d.ts +1 -0
  99. package/esm/index.d.ts.map +1 -1
  100. package/esm/index.js +1 -0
  101. package/esm/index.js.map +1 -1
  102. package/esm/scrollbars.scss +22 -0
  103. package/package.json +3 -2
  104. package/src/components/icons/Dots.tsx +21 -0
  105. package/src/components/icons/Icon.tsx +3 -0
  106. package/src/components/layout/header/Header.module.scss +6 -0
  107. package/src/components/layout/header/Header.tsx +2 -1
  108. package/src/components/layout/header/HeaderIconAction.module.scss +2 -1
  109. package/src/components/layout/header/StickyHeader.tsx +12 -2
  110. package/src/components/ui/drawer/Drawer.module.scss +15 -0
  111. package/src/components/ui/drawer/Drawer.tsx +88 -0
  112. package/src/components/ui/pop/Pop.tsx +6 -2
  113. package/src/components/ui/stats/Stats.module.scss +48 -0
  114. package/src/components/ui/stats/Stats.tsx +42 -0
  115. package/src/components/{ui/pop → utils}/HandleEsc.tsx +0 -0
  116. package/src/demo/Menu.tsx +2 -1
  117. package/src/demo/components/layout/header/StickyHeader.module.scss +14 -0
  118. package/src/demo/components/layout/header/StickyHeader.tsx +28 -2
  119. package/src/demo/components/ui/drawer/Drawer.tsx +28 -0
  120. package/src/demo/components/ui/stats/Stats.module.scss +29 -0
  121. package/src/demo/components/ui/stats/Stats.tsx +61 -0
  122. package/src/demo/componentsMap.ts +21 -0
  123. package/src/global.scss +3 -0
  124. package/src/index.ts +1 -0
  125. package/src/pages/_app.tsx +1 -0
  126. package/src/scrollbars.scss +22 -0
  127. package/dist/components/ui/pop/HandleEsc.d.ts.map +0 -1
  128. package/dist/components/ui/pop/HandleEsc.js.map +0 -1
  129. package/esm/components/ui/pop/HandleEsc.d.ts.map +0 -1
  130. package/esm/components/ui/pop/HandleEsc.js.map +0 -1
@@ -1,8 +1,8 @@
1
1
  import React, { Component, createRef } from "react";
2
- import { HandleEsc } from "./HandleEsc";
3
2
  import { OnButtonClick } from "./OnButtonClick";
4
3
  import { PopOption } from "./PopOption";
5
4
  import styles from "./Pop.module.scss";
5
+ import { HandleEsc } from "../../utils/HandleEsc";
6
6
  const html = typeof document === "object" ? document.getElementsByTagName("html")[0] : null;
7
7
  const getElementDimensions = (elem) => {
8
8
  return {
@@ -78,6 +78,7 @@ class Pop extends Component {
78
78
  }
79
79
  }
80
80
  render() {
81
+ var _a;
81
82
  const style = {};
82
83
  if (this.state.vertical === "top") {
83
84
  style.top = this.state.y;
@@ -94,8 +95,10 @@ class Pop extends Component {
94
95
  if (!this.props.open) {
95
96
  return null;
96
97
  }
98
+ const closeOnEsc = (_a = this.props.closeOnEsc) !== null && _a !== void 0 ? _a : true;
99
+ const esc = closeOnEsc && React.createElement(HandleEsc, { onPress: this.handleEsc });
97
100
  return (React.createElement("div", { className: styles.overlay, ref: this.rootRef, onClick: this.handleOverlayClick },
98
- React.createElement(HandleEsc, { onPress: this.handleEsc }),
101
+ esc,
99
102
  React.createElement(OnButtonClick, { onClick: this.handleEsc },
100
103
  React.createElement("ul", { className: styles.pop, style: style }, this.props.children))));
101
104
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Pop.js","sourceRoot":"","sources":["../../../../src/components/ui/pop/Pop.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Pop.js","sourceRoot":"","sources":["../../../../src/components/ui/pop/Pop.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import React from "react";
2
+ interface Stat {
3
+ label: string;
4
+ value: string;
5
+ }
6
+ interface Props {
7
+ stats: Stat[];
8
+ variant?: "dark";
9
+ }
10
+ declare const Stats: React.FC<Props>;
11
+ export { Stats };
12
+ //# sourceMappingURL=Stats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Stats.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/stats/Stats.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,UAAU,IAAI;IACV,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,KAAK;IACX,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,QAAA,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAwB1B,CAAC;AAEF,OAAO,EAAE,KAAK,EAAE,CAAC"}
@@ -0,0 +1,18 @@
1
+ import React from "react";
2
+ import classnames from "classnames";
3
+ import styles from "./Stats.module.scss";
4
+ const Stats = (props) => {
5
+ const list = props.stats.map((s, k) => (React.createElement("li", { key: String(k), className: styles.item },
6
+ React.createElement("span", { className: styles.value }, s.value),
7
+ React.createElement("span", { className: styles.label }, s.label))));
8
+ const len = list.length;
9
+ for (let i = 0; i < len - 1; i++) {
10
+ list.splice((i * 2) + 1, 0, React.createElement("li", { key: "separator" + String(i), className: styles.separator }));
11
+ }
12
+ const cls = classnames(styles.stats, {
13
+ [styles["stats-dark"]]: props.variant === "dark",
14
+ });
15
+ return (React.createElement("ul", { className: cls }, list));
16
+ };
17
+ export { Stats };
18
+ //# sourceMappingURL=Stats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Stats.js","sourceRoot":"","sources":["../../../../src/components/ui/stats/Stats.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,OAAO,MAAM,MAAM,qBAAqB,CAAC;AAYzC,MAAM,KAAK,GAAoB,CAAC,KAAK,EAAE,EAAE;IACrC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CACnC,4BAAI,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI;QACtC,8BAAM,SAAS,EAAE,MAAM,CAAC,KAAK,IAAG,CAAC,CAAC,KAAK,CAAQ;QAC/C,8BAAM,SAAS,EAAE,MAAM,CAAC,KAAK,IAAG,CAAC,CAAC,KAAK,CAAQ,CAC9C,CACR,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;IAExB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QAE9B,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,4BAAI,GAAG,EAAE,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,GAAI,CAAC,CAAC;KAClG;IAED,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE;QACjC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,KAAK,MAAM;KACnD,CAAC,CAAC;IAEH,OAAO,CACH,4BAAI,SAAS,EAAE,GAAG,IACb,IAAI,CACJ,CACR,CAAC;AACN,CAAC,CAAC;AAEF,OAAO,EAAE,KAAK,EAAE,CAAC"}
@@ -0,0 +1,48 @@
1
+ .stats {
2
+ --stats-border: 1px solid rgba(255, 255, 255, .15);
3
+ --stats-bg: rgba(255, 255, 255, .05);
4
+ --stats-value-color: rgba(255, 255, 255, .9);
5
+ --stats-label-color: rgba(255, 255, 255, .61);
6
+
7
+ display: flex;
8
+ width: 100%;
9
+ padding: calc(60px / var(--ratio-dimensions)) 0;
10
+ margin: 0;
11
+ border-top: var(--stats-border);
12
+ background: var(--stats-bg);
13
+ background-clip: padding-box;
14
+ list-style-type: none;
15
+ }
16
+
17
+ .stats-dark {
18
+ --stats-border: 1px solid rgba(0, 0, 0, .15);
19
+ --stats-bg: rgba(0, 0, 0, .05);
20
+ --stats-value-color: rgba(0, 0, 0, .9);
21
+ --stats-label-color: rgba(0, 0, 0, .61);
22
+ }
23
+
24
+ .item {
25
+ flex: 1;
26
+ display: flex;
27
+ align-items: center;
28
+ justify-content: center;
29
+ flex-direction: column;
30
+ text-align: center;
31
+ gap: calc(20px / var(--ratio-dimensions));
32
+ }
33
+
34
+ .separator {
35
+ border-left: var(--stats-border);
36
+ }
37
+
38
+ .label {
39
+ display: block;
40
+ color: var(--stats-label-color);
41
+ font-size: calc(22px / var(--ratio-font));
42
+ }
43
+
44
+ .value {
45
+ display: block;
46
+ color: var(--stats-value-color);
47
+ font-size: calc(30px / var(--ratio-font));
48
+ }
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HandleEsc.d.ts","sourceRoot":"","sources":["../../../src/components/utils/HandleEsc.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,UAAU,KAAK;IACX,OAAO,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,QAAA,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAU9B,CAAC;AAEF,OAAO,EAAE,SAAS,EAAE,CAAC"}
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HandleEsc.js","sourceRoot":"","sources":["../../../src/components/utils/HandleEsc.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMlC,MAAM,SAAS,GAAoB,CAAC,KAAK,EAAE,EAAE;IACzC,MAAM,CAAC,OAAO,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IAExC,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,OAAO,EAAE;YACT,KAAK,CAAC,OAAO,EAAE,CAAC;SACnB;IACL,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAEF,OAAO,EAAE,SAAS,EAAE,CAAC"}
package/esm/global.scss CHANGED
@@ -68,6 +68,9 @@
68
68
  --grey1: #737373;
69
69
 
70
70
  --focus-color: #dcaf00;
71
+
72
+ --scrollbars-thumb: var(--grey1);
73
+ --scrollbars-bg: transparent;
71
74
  }
72
75
 
73
76
  *:focus {
package/esm/index.d.ts CHANGED
@@ -17,6 +17,7 @@ export * from "./components/ui/action/Action.js";
17
17
  export * from "./components/ui/action/EqualActions.js";
18
18
  export * from "./components/ui/button/Button.js";
19
19
  export * from "./components/ui/directionPad/Pad.js";
20
+ export * from "./components/ui/drawer/Drawer.js";
20
21
  export * from "./components/ui/message/Message.js";
21
22
  export * from "./components/ui/modal/Modal.js";
22
23
  export * from "./components/ui/modal/ModalButtons.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAC;AACnD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAE5C,cAAc,4BAA4B,CAAC;AAE3C,cAAc,kCAAkC,CAAC;AACjD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,4CAA4C,CAAC;AAC3D,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,wCAAwC,CAAC;AAEvD,cAAc,kCAAkC,CAAC;AACjD,cAAc,wCAAwC,CAAC;AACvD,cAAc,kCAAkC,CAAC;AACjD,cAAc,qCAAqC,CAAC;AACpD,cAAc,oCAAoC,CAAC;AACnD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uCAAuC,CAAC;AACtD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kCAAkC,CAAC;AACjD,cAAc,oCAAoC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAC;AACnD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAE5C,cAAc,4BAA4B,CAAC;AAE3C,cAAc,kCAAkC,CAAC;AACjD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,4CAA4C,CAAC;AAC3D,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,wCAAwC,CAAC;AAEvD,cAAc,kCAAkC,CAAC;AACjD,cAAc,wCAAwC,CAAC;AACvD,cAAc,kCAAkC,CAAC;AACjD,cAAc,qCAAqC,CAAC;AACpD,cAAc,kCAAkC,CAAC;AACjD,cAAc,oCAAoC,CAAC;AACnD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uCAAuC,CAAC;AACtD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kCAAkC,CAAC;AACjD,cAAc,oCAAoC,CAAC"}
package/esm/index.js CHANGED
@@ -17,6 +17,7 @@ export * from "./components/ui/action/Action.js";
17
17
  export * from "./components/ui/action/EqualActions.js";
18
18
  export * from "./components/ui/button/Button.js";
19
19
  export * from "./components/ui/directionPad/Pad.js";
20
+ export * from "./components/ui/drawer/Drawer.js";
20
21
  export * from "./components/ui/message/Message.js";
21
22
  export * from "./components/ui/modal/Modal.js";
22
23
  export * from "./components/ui/modal/ModalButtons.js";
package/esm/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAC;AACnD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAE5C,cAAc,4BAA4B,CAAC;AAE3C,cAAc,kCAAkC,CAAC;AACjD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,4CAA4C,CAAC;AAC3D,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,wCAAwC,CAAC;AAEvD,cAAc,kCAAkC,CAAC;AACjD,cAAc,wCAAwC,CAAC;AACvD,cAAc,kCAAkC,CAAC;AACjD,cAAc,qCAAqC,CAAC;AACpD,cAAc,oCAAoC,CAAC;AACnD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uCAAuC,CAAC;AACtD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kCAAkC,CAAC;AACjD,cAAc,oCAAoC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAC;AACnD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAE5C,cAAc,4BAA4B,CAAC;AAE3C,cAAc,kCAAkC,CAAC;AACjD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,4CAA4C,CAAC;AAC3D,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,wCAAwC,CAAC;AAEvD,cAAc,kCAAkC,CAAC;AACjD,cAAc,wCAAwC,CAAC;AACvD,cAAc,kCAAkC,CAAC;AACjD,cAAc,qCAAqC,CAAC;AACpD,cAAc,kCAAkC,CAAC;AACjD,cAAc,oCAAoC,CAAC;AACnD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uCAAuC,CAAC;AACtD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kCAAkC,CAAC;AACjD,cAAc,oCAAoC,CAAC"}
@@ -0,0 +1,22 @@
1
+ .miui-scrollbars {
2
+ overflow-y: auto;
3
+ scrollbar-color: var(--scrollbars-thumb) var(--scrollbars-bg);
4
+ scrollbar-width: thin !important;
5
+
6
+ &::-webkit-scrollbar {
7
+ width: 6px;
8
+ background-color: transparent;
9
+ }
10
+
11
+ &::-webkit-scrollbar-thumb:vertical {
12
+ background: var(--scrollbars-thumb);
13
+ background-clip: padding-box;
14
+ border: 2px solid var(--scrollbars-bg);
15
+ min-height: 10px;
16
+ }
17
+
18
+ &::-webkit-scrollbar-thumb:vertical:active {
19
+ background: var(--scrollbars-thumb);
20
+ border: 2px solid var(--scrollbars-bg);
21
+ }
22
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-miui",
3
- "version": "0.11.0",
3
+ "version": "0.12.0",
4
4
  "author": "Jacek Nowacki",
5
5
  "license": "MIT",
6
6
  "scripts": {
@@ -28,7 +28,8 @@
28
28
  "types": "./esm/index.d.ts",
29
29
  "module": "./esm/index.js",
30
30
  "dependencies": {
31
- "classnames": "^2.3.1"
31
+ "classnames": "^2.3.1",
32
+ "oop-timers": "^4.0.1"
32
33
  },
33
34
  "devDependencies": {
34
35
  "@babel/core": "^7.12.10",
@@ -0,0 +1,21 @@
1
+ import React from "react";
2
+
3
+ interface Props {
4
+ className?: string;
5
+ }
6
+
7
+ const Dots: React.FC<Props> = (props) => {
8
+ return (
9
+ <svg
10
+ width={"16"}
11
+ height={"16"}
12
+ viewBox={"0 0 16 72"}
13
+ xmlns={"http://www.w3.org/2000/svg"}
14
+ className={props.className}
15
+ >
16
+ <path d={"M13.65 13.65Q16 11.3 16 8q0-3.3-2.35-5.65Q11.3 0 8 0 4.7 0 2.35 2.35 0 4.7 0 8q0 3.3 2.35 5.65Q4.7 16 8 16q3.3 0 5.65-2.35M8 44q3.3 0 5.65-2.35Q16 39.3 16 36q0-3.3-2.35-5.65Q11.3 28 8 28q-3.3 0-5.65 2.35Q0 32.7 0 36q0 3.3 2.35 5.65Q4.7 44 8 44M8 72q3.3 0 5.65-2.35Q16 67.3 16 64q0-3.3-2.35-5.65Q11.3 56 8 56q-3.3 0-5.65 2.35Q0 60.7 0 64q0 3.3 2.35 5.65Q4.7 72 8 72"} />
17
+ </svg>
18
+ );
19
+ };
20
+
21
+ export { Dots };
@@ -9,6 +9,7 @@ import { Battery } from "./Battery.js";
9
9
  import { Heart } from "./Heart.js";
10
10
  import { Trash } from "./Trash.js";
11
11
  import { Config } from "./Config.js";
12
+ import { Dots } from "./Dots.js";
12
13
 
13
14
  enum ICON {
14
15
  checkmark = "checkmark",
@@ -19,6 +20,7 @@ enum ICON {
19
20
  heart = "heart",
20
21
  trash = "trash",
21
22
  config = "config",
23
+ dots = "dots",
22
24
  }
23
25
 
24
26
  interface Props {
@@ -35,6 +37,7 @@ const iconsMap = new Map<ICON, AnyComponent>([
35
37
  [ICON.heart, Heart],
36
38
  [ICON.trash, Trash],
37
39
  [ICON.config, Config],
40
+ [ICON.dots, Dots],
38
41
  ]);
39
42
 
40
43
  const Icon: React.FC<Props> = ({ name: iconName, ...props }) => {
@@ -15,6 +15,12 @@
15
15
  --background-color: var(--toolbar-bg);
16
16
  }
17
17
 
18
+ .header--colored {
19
+ --border-color: var(--custom-header-color);
20
+ --background-color: var(--custom-header-color);
21
+ color: var(--custom-text-color);
22
+ }
23
+
18
24
  .header--top, .header--bottom {
19
25
  padding: 0 16.666px;
20
26
  min-height: 44px;
@@ -8,7 +8,7 @@ import { EqualActions } from "../../ui/action/EqualActions.js";
8
8
 
9
9
  interface Props {
10
10
  center?: boolean;
11
- variant?: "toolbar";
11
+ variant?: "toolbar" | "colored";
12
12
  /**
13
13
  * This indicates just how the borders are drawn and how content is aligned, not the actual position on the screen.
14
14
  * To set up position on the screen you need to properly style parent element.
@@ -34,6 +34,7 @@ const Header: React.FC<Props> = (props) => {
34
34
  const cls = classnames(styles.header, {
35
35
  [styles["header--center"]]: center,
36
36
  [styles["header--toolbar"]]: variant === "toolbar",
37
+ [styles["header--colored"]]: variant === "colored",
37
38
  }, styles[`header--${position}`], props.className);
38
39
 
39
40
  let contents = children;
@@ -4,7 +4,7 @@
4
4
  border-radius: 666px;
5
5
  display: inline-block;
6
6
  border: calc(2px / var(--ratio-border)) solid transparent;
7
- color: var(--header-text);
7
+ color: currentColor;
8
8
 
9
9
  &:hover {
10
10
  background: #00000022;
@@ -19,4 +19,5 @@
19
19
  width: 16px;
20
20
  height: 16px;
21
21
  display: block;
22
+ fill: currentColor;
22
23
  }
@@ -7,7 +7,12 @@ import styles from "./StickyHeader.module.scss";
7
7
  const err = new TypeError("StickyHeader needs two children - Header and StickyHeader.Content");
8
8
 
9
9
  interface Content {
10
- Content: React.FC;
10
+ // eslint-disable-next-line @typescript-eslint/no-use-before-define
11
+ Content: React.FC<ContentProps>;
12
+ }
13
+
14
+ interface ContentProps {
15
+ className?: string;
11
16
  }
12
17
 
13
18
  interface Props {
@@ -35,7 +40,12 @@ const StickyHeader: React.FC<Props> & Content = (props) => {
35
40
  content = content as never;
36
41
 
37
42
  const cls = classnames(styles.stickyHeader, styles[`stickyHeader--${position}`]);
38
- const contentCls = classnames(styles.stickyHeader__content, styles[`stickyHeader__content--${position}`]);
43
+
44
+ const contentCls = classnames(
45
+ styles.stickyHeader__content,
46
+ styles[`stickyHeader__content--${position}`],
47
+ (content as { props: ContentProps }).props.className,
48
+ );
39
49
 
40
50
  return (
41
51
  <div className={cls}>
@@ -0,0 +1,15 @@
1
+ .drawer {
2
+ position: fixed;
3
+ top: 0;
4
+ left: 0;
5
+ right: 0;
6
+ bottom: 0;
7
+ background: white;
8
+ z-index: 1;
9
+
10
+ transition: transform 300ms;
11
+ }
12
+
13
+ .content {
14
+ height: 100%;
15
+ }
@@ -0,0 +1,88 @@
1
+ import React, { Component } from "react";
2
+ import { Timeout } from "oop-timers";
3
+
4
+ import styles from "./Drawer.module.scss";
5
+ import { HandleEsc } from "../../utils/HandleEsc";
6
+
7
+ const RENDER_TIMEOUT = 500;
8
+
9
+ interface Props {
10
+ isOpen: boolean;
11
+ closeOnEsc?: boolean;
12
+ onClose: () => void;
13
+ }
14
+
15
+ interface State {
16
+ shouldRenderWhenClosed: boolean;
17
+ }
18
+
19
+ class Drawer extends Component<Props, State> {
20
+ public constructor(props: Props) {
21
+ super(props);
22
+
23
+ this.state = {
24
+ shouldRenderWhenClosed: false,
25
+ };
26
+ }
27
+
28
+ public componentDidMount() {
29
+ this.timeout = new Timeout(() => {
30
+ // eslint-disable-next-line react/no-did-mount-set-state
31
+ this.setState({ shouldRenderWhenClosed: false });
32
+ }, RENDER_TIMEOUT);
33
+ }
34
+
35
+ public componentDidUpdate(prevProps: Props) {
36
+ if (!prevProps.isOpen && this.props.isOpen) {
37
+ this.onOpen();
38
+ }
39
+
40
+ if (prevProps.isOpen && !this.props.isOpen) {
41
+ this.onClose();
42
+ }
43
+ }
44
+
45
+ public componentWillUnmount() {
46
+ this.timeout?.stop();
47
+ this.timeout = null;
48
+ }
49
+
50
+ private timeout: Timeout | null = null;
51
+
52
+ private onOpen() {
53
+ this.timeout?.stop();
54
+ this.setState({ shouldRenderWhenClosed: true });
55
+ }
56
+
57
+ private onClose() {
58
+ this.timeout?.start();
59
+ }
60
+
61
+ private readonly handleEsc = () => {
62
+ this.props.onClose();
63
+ };
64
+
65
+ public render() {
66
+ // eslint-disable-next-line @typescript-eslint/no-magic-numbers
67
+ const y = this.props.isOpen ? 0 : 100;
68
+ const style = {
69
+ transform: `translateY(${y}%)`,
70
+ };
71
+
72
+ const shouldRender = this.props.isOpen || this.state.shouldRenderWhenClosed;
73
+
74
+ const closeOnEsc = this.props.closeOnEsc ?? true;
75
+ const esc = closeOnEsc && <HandleEsc onPress={this.handleEsc} />;
76
+
77
+ return (
78
+ <div className={styles.drawer} style={style}>
79
+ {esc}
80
+ <div className={styles.content}>
81
+ {shouldRender && this.props.children}
82
+ </div>
83
+ </div>
84
+ );
85
+ }
86
+ }
87
+
88
+ export { Drawer };
@@ -1,14 +1,15 @@
1
1
  import React, { Component, createRef } from "react";
2
2
 
3
- import { HandleEsc } from "./HandleEsc";
4
3
  import { OnButtonClick } from "./OnButtonClick";
5
4
  import { PopOption } from "./PopOption";
6
5
  import styles from "./Pop.module.scss";
6
+ import { HandleEsc } from "../../utils/HandleEsc";
7
7
 
8
8
  interface Props {
9
9
  open: boolean;
10
10
  onClose: () => void;
11
11
  anchor?: HTMLElement | "prev" | "next";
12
+ closeOnEsc?: boolean;
12
13
  }
13
14
 
14
15
  interface State {
@@ -137,9 +138,12 @@ class Pop extends Component<Props, State> {
137
138
  return null;
138
139
  }
139
140
 
141
+ const closeOnEsc = this.props.closeOnEsc ?? true;
142
+ const esc = closeOnEsc && <HandleEsc onPress={this.handleEsc} />;
143
+
140
144
  return (
141
145
  <div className={styles.overlay} ref={this.rootRef} onClick={this.handleOverlayClick}>
142
- <HandleEsc onPress={this.handleEsc} />
146
+ {esc}
143
147
  <OnButtonClick onClick={this.handleEsc}>
144
148
  <ul className={styles.pop} style={style}>
145
149
  {this.props.children}
@@ -0,0 +1,48 @@
1
+ .stats {
2
+ --stats-border: 1px solid rgba(255, 255, 255, .15);
3
+ --stats-bg: rgba(255, 255, 255, .05);
4
+ --stats-value-color: rgba(255, 255, 255, .9);
5
+ --stats-label-color: rgba(255, 255, 255, .61);
6
+
7
+ display: flex;
8
+ width: 100%;
9
+ padding: calc(60px / var(--ratio-dimensions)) 0;
10
+ margin: 0;
11
+ border-top: var(--stats-border);
12
+ background: var(--stats-bg);
13
+ background-clip: padding-box;
14
+ list-style-type: none;
15
+ }
16
+
17
+ .stats-dark {
18
+ --stats-border: 1px solid rgba(0, 0, 0, .15);
19
+ --stats-bg: rgba(0, 0, 0, .05);
20
+ --stats-value-color: rgba(0, 0, 0, .9);
21
+ --stats-label-color: rgba(0, 0, 0, .61);
22
+ }
23
+
24
+ .item {
25
+ flex: 1;
26
+ display: flex;
27
+ align-items: center;
28
+ justify-content: center;
29
+ flex-direction: column;
30
+ text-align: center;
31
+ gap: calc(20px / var(--ratio-dimensions));
32
+ }
33
+
34
+ .separator {
35
+ border-left: var(--stats-border);
36
+ }
37
+
38
+ .label {
39
+ display: block;
40
+ color: var(--stats-label-color);
41
+ font-size: calc(22px / var(--ratio-font));
42
+ }
43
+
44
+ .value {
45
+ display: block;
46
+ color: var(--stats-value-color);
47
+ font-size: calc(30px / var(--ratio-font));
48
+ }
@@ -0,0 +1,42 @@
1
+ import React from "react";
2
+ import classnames from "classnames";
3
+
4
+ import styles from "./Stats.module.scss";
5
+
6
+ interface Stat {
7
+ label: string;
8
+ value: string;
9
+ }
10
+
11
+ interface Props {
12
+ stats: Stat[];
13
+ variant?: "dark";
14
+ }
15
+
16
+ const Stats: React.FC<Props> = (props) => {
17
+ const list = props.stats.map((s, k) => (
18
+ <li key={String(k)} className={styles.item}>
19
+ <span className={styles.value}>{s.value}</span>
20
+ <span className={styles.label}>{s.label}</span>
21
+ </li>
22
+ ));
23
+
24
+ const len = list.length;
25
+
26
+ for (let i = 0; i < len - 1; i++) {
27
+ // eslint-disable-next-line @typescript-eslint/no-magic-numbers
28
+ list.splice((i * 2) + 1, 0, <li key={"separator" + String(i)} className={styles.separator} />);
29
+ }
30
+
31
+ const cls = classnames(styles.stats, {
32
+ [styles["stats-dark"]]: props.variant === "dark",
33
+ });
34
+
35
+ return (
36
+ <ul className={cls}>
37
+ {list}
38
+ </ul>
39
+ );
40
+ };
41
+
42
+ export { Stats };
File without changes
package/src/demo/Menu.tsx CHANGED
@@ -2,6 +2,7 @@ import React from "react";
2
2
 
3
3
  import styles from "./Menu.module.scss";
4
4
  import type { componentsMap } from "./componentsMap";
5
+ import classnames from "classnames";
5
6
 
6
7
  interface Props {
7
8
  ancestors?: string[];
@@ -27,7 +28,7 @@ const Menu: React.FC<Props> = (props) => {
27
28
 
28
29
  if (!props.ancestors!.length) {
29
30
  cmp.unshift(<li key={"--main"}><a href={"#"}>Main</a></li>);
30
- return <menu className={styles.menu}>{contents}</menu>;
31
+ return <menu className={classnames(styles.menu, "miui-scrollbars")}>{contents}</menu>;
31
32
  }
32
33
 
33
34
  return contents;
@@ -0,0 +1,14 @@
1
+ .coloredBox {
2
+ height: 300px;
3
+ background: var(--green1-darker);
4
+ display: flex;
5
+ align-items: center;
6
+ justify-content: center;
7
+ color: white;
8
+ flex-direction: column;
9
+ }
10
+
11
+ .header {
12
+ --custom-header-color: var(--green1-darker);
13
+ --custom-text-color: white;
14
+ }