ferns-ui 0.16.0 → 0.17.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.
package/dist/Common.d.ts CHANGED
@@ -328,6 +328,9 @@ export interface IconButtonProps {
328
328
  bgColor?: "transparent" | "transparentDarkGray" | "gray" | "lightGray" | "white";
329
329
  disabled?: boolean;
330
330
  selected?: boolean;
331
+ withConfirmation?: boolean;
332
+ confirmationText?: string;
333
+ confirmationHeading?: string;
331
334
  }
332
335
  export interface NavigatorProps {
333
336
  config?: any;
@@ -1 +1 @@
1
- {"version":3,"file":"Common.js","sourceRoot":"","sources":["../src/Common.ts"],"names":[],"mappings":"AAkVA,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC;AAkBzB,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAe,EAAE,EAAE;IAClD,OAAO;QACL,EAAE,EAAE,CAAC;QACL,EAAE,EAAE,EAAE;QACN,EAAE,EAAE,EAAE;QACN,EAAE,EAAE,EAAE;QACN,EAAE,EAAE,EAAE;KACP,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAI,GAAG,EAAE,EAAY,EAAE;IACtD,IAAI,QAAkB,CAAC;IACvB,IAAI,IAAI,GAAG,CAAC,EAAE;QACZ,QAAQ,GAAG,IAAI,CAAC;KACjB;SAAM,IAAI,IAAI,GAAG,EAAE,EAAE;QACpB,QAAQ,GAAG,IAAI,CAAC;KACjB;SAAM,IAAI,IAAI,GAAG,EAAE,EAAE;QACpB,QAAQ,GAAG,IAAI,CAAC;KACjB;SAAM,IAAI,IAAI,GAAG,EAAE,EAAE;QACpB,QAAQ,GAAG,IAAI,CAAC;KACjB;SAAM;QACL,QAAQ,GAAG,IAAI,CAAC;KACjB;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,OAAgE;IAC9F,OAAO,CAAC;QACN,SAAS,EAAE,QAAQ;QACnB,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,QAAQ;QAChB,KAAK,EAAE,KAAK;QACZ,cAAc,EAAE,KAAK;QACrB,OAAO,EAAE,MAAM;QACf,QAAQ,EAAE,MAAM;KACjB,CAAC,OAAO,CAAC,IAAI,MAAM,CAAU,CAAC;AACjC,CAAC;AA64BD,MAAM,UAAU,UAAU,CAAC,OAAqB;IAC9C,OAAO,CACL,OAAO;QACP,OAAO,CAAC,KAAK;QACb,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CACrF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"Common.js","sourceRoot":"","sources":["../src/Common.ts"],"names":[],"mappings":"AAkVA,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC;AAkBzB,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAe,EAAE,EAAE;IAClD,OAAO;QACL,EAAE,EAAE,CAAC;QACL,EAAE,EAAE,EAAE;QACN,EAAE,EAAE,EAAE;QACN,EAAE,EAAE,EAAE;QACN,EAAE,EAAE,EAAE;KACP,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAI,GAAG,EAAE,EAAY,EAAE;IACtD,IAAI,QAAkB,CAAC;IACvB,IAAI,IAAI,GAAG,CAAC,EAAE;QACZ,QAAQ,GAAG,IAAI,CAAC;KACjB;SAAM,IAAI,IAAI,GAAG,EAAE,EAAE;QACpB,QAAQ,GAAG,IAAI,CAAC;KACjB;SAAM,IAAI,IAAI,GAAG,EAAE,EAAE;QACpB,QAAQ,GAAG,IAAI,CAAC;KACjB;SAAM,IAAI,IAAI,GAAG,EAAE,EAAE;QACpB,QAAQ,GAAG,IAAI,CAAC;KACjB;SAAM;QACL,QAAQ,GAAG,IAAI,CAAC;KACjB;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,OAAgE;IAC9F,OAAO,CAAC;QACN,SAAS,EAAE,QAAQ;QACnB,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,QAAQ;QAChB,KAAK,EAAE,KAAK;QACZ,cAAc,EAAE,KAAK;QACrB,OAAO,EAAE,MAAM;QACf,QAAQ,EAAE,MAAM;KACjB,CAAC,OAAO,CAAC,IAAI,MAAM,CAAU,CAAC;AACjC,CAAC;AAg5BD,MAAM,UAAU,UAAU,CAAC,OAAqB;IAC9C,OAAO,CACL,OAAO;QACP,OAAO,CAAC,KAAK;QACb,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CACrF,CAAC;AACJ,CAAC"}
@@ -1,5 +1,3 @@
1
- import React from "react";
1
+ /// <reference types="react" />
2
2
  import { IconButtonProps } from "./Common";
3
- export declare class IconButton extends React.Component<IconButtonProps, {}> {
4
- render(): JSX.Element;
5
- }
3
+ export declare function IconButton({ prefix, icon, iconColor, onClick, size, bgColor, withConfirmation, confirmationText, confirmationHeading, }: IconButtonProps): JSX.Element;
@@ -1,41 +1,58 @@
1
- import React from "react";
1
+ import React, { useState } from "react";
2
2
  import { TouchableOpacity } from "react-native";
3
3
  import { iconSizeToNumber } from "./Common";
4
4
  import { Icon } from "./Icon";
5
+ import { Modal } from "./Modal";
6
+ import { Text } from "./Text";
5
7
  import { Unifier } from "./Unifier";
6
- export class IconButton extends React.Component {
7
- render() {
8
- let opacity = 1;
9
- let color;
10
- if (this.props.bgColor === "transparentDarkGray") {
11
- opacity = 0.8;
12
- color = Unifier.theme.darkGray;
13
- }
14
- else if (this.props.bgColor === "transparent" || !this.props.bgColor) {
15
- opacity = 0.0;
16
- color = Unifier.theme.white;
17
- }
18
- else {
19
- color = Unifier.theme[this.props.bgColor];
20
- }
21
- return (React.createElement(TouchableOpacity, { hitSlop: { top: 10, left: 10, bottom: 10, right: 10 }, style: {
8
+ export function IconButton({ prefix, icon, iconColor, onClick, size, bgColor = "transparent", withConfirmation = false, confirmationText = "Are you sure you want to continue?", confirmationHeading = "Confirm", }) {
9
+ const [showConfirmation, setShowConfirmation] = useState(false);
10
+ let opacity = 1;
11
+ let color;
12
+ if (bgColor === "transparentDarkGray") {
13
+ opacity = 0.8;
14
+ color = Unifier.theme.darkGray;
15
+ }
16
+ else if (bgColor === "transparent" || !bgColor) {
17
+ opacity = 0.0;
18
+ color = Unifier.theme.white;
19
+ }
20
+ else {
21
+ color = Unifier.theme[bgColor];
22
+ }
23
+ const renderConfirmation = () => {
24
+ return (React.createElement(Modal, { heading: confirmationHeading, primaryButtonOnClick: () => {
25
+ onClick();
26
+ setShowConfirmation(false);
27
+ }, primaryButtonText: "Confirm", secondaryButtonOnClick: () => setShowConfirmation(false), secondaryButtonText: "Cancel", size: "sm", visible: showConfirmation, onDismiss: () => {
28
+ setShowConfirmation(false);
29
+ } },
30
+ React.createElement(Text, null, confirmationText)));
31
+ };
32
+ return (React.createElement(React.Fragment, null,
33
+ React.createElement(TouchableOpacity, { hitSlop: { top: 10, left: 10, bottom: 10, right: 10 }, style: {
22
34
  opacity,
23
35
  backgroundColor: color,
24
36
  borderRadius: 100,
25
- // paddingBottom: iconSizeToNumber(this.props.size) / 4,
26
- // paddingTop: iconSizeToNumber(this.props.size) / 4,
27
- // paddingLeft: iconSizeToNumber(this.props.size) / 2,
28
- // paddingRight: iconSizeToNumber(this.props.size) / 2,
29
- width: iconSizeToNumber(this.props.size) * 2.5,
30
- height: iconSizeToNumber(this.props.size) * 2.5,
37
+ // paddingBottom: iconSizeToNumber(size) / 4,
38
+ // paddingTop: iconSizeToNumber(size) / 4,
39
+ // paddingLeft: iconSizeToNumber(size) / 2,
40
+ // paddingRight: iconSizeToNumber(size) / 2,
41
+ width: iconSizeToNumber(size) * 2.5,
42
+ height: iconSizeToNumber(size) * 2.5,
31
43
  display: "flex",
32
44
  justifyContent: "center",
33
45
  alignItems: "center",
34
46
  }, onPress: () => {
35
47
  Unifier.utils.haptic();
36
- this.props.onClick();
48
+ if (withConfirmation && !showConfirmation) {
49
+ setShowConfirmation(true);
50
+ }
51
+ else if (onClick) {
52
+ onClick();
53
+ }
37
54
  } },
38
- React.createElement(Icon, { color: this.props.iconColor, name: this.props.icon, prefix: this.props.prefix || "fas", size: this.props.size })));
39
- }
55
+ React.createElement(Icon, { color: iconColor, name: icon, prefix: prefix || "fas", size: size })),
56
+ Boolean(withConfirmation) && renderConfirmation()));
40
57
  }
41
58
  //# sourceMappingURL=IconButton.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IconButton.js","sourceRoot":"","sources":["../src/IconButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,gBAAgB,EAAC,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAkB,gBAAgB,EAAC,MAAM,UAAU,CAAC;AAC3D,OAAO,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAElC,MAAM,OAAO,UAAW,SAAQ,KAAK,CAAC,SAA8B;IAClE,MAAM;QACJ,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,KAAK,CAAC;QACV,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,qBAAqB,EAAE;YAChD,OAAO,GAAG,GAAG,CAAC;YACd,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;SAChC;aAAM,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,aAAa,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YACtE,OAAO,GAAG,GAAG,CAAC;YACd,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;SAC7B;aAAM;YACL,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SAC3C;QACD,OAAO,CACL,oBAAC,gBAAgB,IACf,OAAO,EAAE,EAAC,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAC,EACnD,KAAK,EAAE;gBACL,OAAO;gBACP,eAAe,EAAE,KAAK;gBACtB,YAAY,EAAE,GAAG;gBACjB,wDAAwD;gBACxD,qDAAqD;gBACrD,sDAAsD;gBACtD,uDAAuD;gBACvD,KAAK,EAAE,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG;gBAC9C,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG;gBAC/C,OAAO,EAAE,MAAM;gBACf,cAAc,EAAE,QAAQ;gBACxB,UAAU,EAAE,QAAQ;aACrB,EACD,OAAO,EAAE,GAAG,EAAE;gBACZ,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBACvB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACvB,CAAC;YAED,oBAAC,IAAI,IACH,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAC3B,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EACrB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,EAClC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,GACrB,CACe,CACpB,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"IconButton.js","sourceRoot":"","sources":["../src/IconButton.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ferns-ui",
3
- "version": "0.16.0",
3
+ "version": "0.17.0",
4
4
  "main": "dist/index.js",
5
5
  "license": "Apache-2.0",
6
6
  "scripts": {
package/src/Common.ts CHANGED
@@ -630,6 +630,9 @@ export interface IconButtonProps {
630
630
  bgColor?: "transparent" | "transparentDarkGray" | "gray" | "lightGray" | "white"; // default transparent
631
631
  disabled?: boolean;
632
632
  selected?: boolean;
633
+ withConfirmation?: boolean;
634
+ confirmationText?: string;
635
+ confirmationHeading?: string;
633
636
  }
634
637
 
635
638
  export interface NavigatorProps {
@@ -1,52 +1,89 @@
1
- import React from "react";
1
+ import React, {useState} from "react";
2
2
  import {TouchableOpacity} from "react-native";
3
3
 
4
4
  import {IconButtonProps, iconSizeToNumber} from "./Common";
5
5
  import {Icon} from "./Icon";
6
+ import {Modal} from "./Modal";
7
+ import {Text} from "./Text";
6
8
  import {Unifier} from "./Unifier";
7
9
 
8
- export class IconButton extends React.Component<IconButtonProps, {}> {
9
- render() {
10
- let opacity = 1;
11
- let color;
12
- if (this.props.bgColor === "transparentDarkGray") {
13
- opacity = 0.8;
14
- color = Unifier.theme.darkGray;
15
- } else if (this.props.bgColor === "transparent" || !this.props.bgColor) {
16
- opacity = 0.0;
17
- color = Unifier.theme.white;
18
- } else {
19
- color = Unifier.theme[this.props.bgColor];
20
- }
10
+ export function IconButton({
11
+ prefix,
12
+ icon,
13
+ iconColor,
14
+ onClick,
15
+ size,
16
+ bgColor = "transparent",
17
+ withConfirmation = false,
18
+ confirmationText = "Are you sure you want to continue?",
19
+ confirmationHeading = "Confirm",
20
+ }: IconButtonProps) {
21
+ const [showConfirmation, setShowConfirmation] = useState(false);
22
+
23
+ let opacity = 1;
24
+ let color;
25
+ if (bgColor === "transparentDarkGray") {
26
+ opacity = 0.8;
27
+ color = Unifier.theme.darkGray;
28
+ } else if (bgColor === "transparent" || !bgColor) {
29
+ opacity = 0.0;
30
+ color = Unifier.theme.white;
31
+ } else {
32
+ color = Unifier.theme[bgColor];
33
+ }
34
+
35
+ const renderConfirmation = () => {
21
36
  return (
37
+ <Modal
38
+ heading={confirmationHeading}
39
+ primaryButtonOnClick={() => {
40
+ onClick();
41
+ setShowConfirmation(false);
42
+ }}
43
+ primaryButtonText="Confirm"
44
+ secondaryButtonOnClick={(): void => setShowConfirmation(false)}
45
+ secondaryButtonText="Cancel"
46
+ size="sm"
47
+ visible={showConfirmation}
48
+ onDismiss={(): void => {
49
+ setShowConfirmation(false);
50
+ }}
51
+ >
52
+ <Text>{confirmationText}</Text>
53
+ </Modal>
54
+ );
55
+ };
56
+
57
+ return (
58
+ <>
22
59
  <TouchableOpacity
23
60
  hitSlop={{top: 10, left: 10, bottom: 10, right: 10}}
24
61
  style={{
25
62
  opacity,
26
63
  backgroundColor: color,
27
64
  borderRadius: 100,
28
- // paddingBottom: iconSizeToNumber(this.props.size) / 4,
29
- // paddingTop: iconSizeToNumber(this.props.size) / 4,
30
- // paddingLeft: iconSizeToNumber(this.props.size) / 2,
31
- // paddingRight: iconSizeToNumber(this.props.size) / 2,
32
- width: iconSizeToNumber(this.props.size) * 2.5,
33
- height: iconSizeToNumber(this.props.size) * 2.5,
65
+ // paddingBottom: iconSizeToNumber(size) / 4,
66
+ // paddingTop: iconSizeToNumber(size) / 4,
67
+ // paddingLeft: iconSizeToNumber(size) / 2,
68
+ // paddingRight: iconSizeToNumber(size) / 2,
69
+ width: iconSizeToNumber(size) * 2.5,
70
+ height: iconSizeToNumber(size) * 2.5,
34
71
  display: "flex",
35
72
  justifyContent: "center",
36
73
  alignItems: "center",
37
74
  }}
38
75
  onPress={() => {
39
76
  Unifier.utils.haptic();
40
- this.props.onClick();
77
+ if (withConfirmation && !showConfirmation) {
78
+ setShowConfirmation(true);
79
+ } else if (onClick) {
80
+ onClick();
81
+ }
41
82
  }}
42
83
  >
43
- <Icon
44
- color={this.props.iconColor}
45
- name={this.props.icon}
46
- prefix={this.props.prefix || "fas"}
47
- size={this.props.size}
48
- />
84
+ <Icon color={iconColor} name={icon} prefix={prefix || "fas"} size={size} />
49
85
  </TouchableOpacity>
50
- );
51
- }
86
+ {Boolean(withConfirmation) && renderConfirmation()}
87
+ </>
88
+ );
52
89
  }