ferns-ui 0.4.1 → 0.4.4
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/Avatar.d.ts +3 -0
- package/dist/Avatar.js +5 -2
- package/dist/Avatar.js.map +1 -1
- package/dist/Button.js +1 -1
- package/dist/Button.js.map +1 -1
- package/dist/Common.d.ts +0 -15
- package/dist/Common.js.map +1 -1
- package/dist/Field.d.ts +16 -1
- package/dist/Field.js +30 -1
- package/dist/Field.js.map +1 -1
- package/dist/Heading.js +1 -1
- package/dist/Heading.js.map +1 -1
- package/dist/TapToEdit.d.ts +11 -11
- package/dist/TapToEdit.js +72 -22
- package/dist/TapToEdit.js.map +1 -1
- package/dist/Text.js +1 -1
- package/dist/Text.js.map +1 -1
- package/dist/Unifier.d.ts +6 -1
- package/dist/Unifier.js +88 -0
- package/dist/Unifier.js.map +1 -1
- package/package.json +1 -1
- package/src/Avatar.tsx +11 -2
- package/src/Button.tsx +3 -2
- package/src/Common.ts +1 -27
- package/src/Field.tsx +71 -5
- package/src/Heading.tsx +1 -1
- package/src/TapToEdit.tsx +101 -31
- package/src/Text.tsx +1 -1
- package/src/Unifier.ts +102 -1
package/dist/Avatar.d.ts
CHANGED
package/dist/Avatar.js
CHANGED
|
@@ -10,6 +10,7 @@ const sizes = {
|
|
|
10
10
|
xl: 120,
|
|
11
11
|
};
|
|
12
12
|
export const Avatar = (props) => {
|
|
13
|
+
var _a;
|
|
13
14
|
const [isImageLoaded, setIsImageLoaded] = useState(true);
|
|
14
15
|
const { name, initials, outline, size = "md", src } = props;
|
|
15
16
|
const width = sizes[size];
|
|
@@ -41,8 +42,10 @@ export const Avatar = (props) => {
|
|
|
41
42
|
display: "flex",
|
|
42
43
|
alignItems: "center",
|
|
43
44
|
justifyContent: "center",
|
|
44
|
-
backgroundColor:
|
|
45
|
+
backgroundColor: props.backgroundColor
|
|
46
|
+
? Unifier.theme[props.backgroundColor]
|
|
47
|
+
: Unifier.theme.gray,
|
|
45
48
|
} },
|
|
46
|
-
React.createElement(Text, { style: { fontSize, color: Unifier.theme.darkGray } }, computedInitials)))));
|
|
49
|
+
React.createElement(Text, { style: { fontSize, color: (_a = props.textColor) !== null && _a !== void 0 ? _a : Unifier.theme.darkGray } }, computedInitials)))));
|
|
47
50
|
};
|
|
48
51
|
//# sourceMappingURL=Avatar.js.map
|
package/dist/Avatar.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Avatar.js","sourceRoot":"","sources":["../src/Avatar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAC,QAAQ,EAAC,MAAM,OAAO,CAAC;AACtC,OAAO,EAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAC,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAC,GAAG,EAAC,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Avatar.js","sourceRoot":"","sources":["../src/Avatar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAC,QAAQ,EAAC,MAAM,OAAO,CAAC;AACtC,OAAO,EAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAC,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAC,GAAG,EAAC,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAElC,MAAM,KAAK,GAAG;IACZ,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,GAAG;CACR,CAAC;AA6BF,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,KAAkB,EAAsB,EAAE;;IAC/D,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACzD,MAAM,EAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,EAAC,GAAG,KAAK,CAAC;IAC1D,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,gBAAgB,GACpB,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GACP,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAS;SACnC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SAC5B,IAAI,CAAC,EAAE,CAAC;SACR,KAAK,CAAC,aAAa,CAAC;SACpB,IAAI,CAAC,EAAE,CAAC;SACR,iBAAiB,EAAE,CAAC;IAEzB,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACvD,OAAO,CACL,oBAAC,GAAG,IACF,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EACrC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAC,QAAQ,EACjB,QAAQ,EAAC,UAAU,EACnB,QAAQ,EAAC,QAAQ,EACjB,KAAK,EAAE,KAAK,IAEX,GAAG,IAAI,aAAa,CAAC,CAAC,CAAC;IACtB,yGAAyG;IACzG,mCAAmC;IACnC,oBAAC,KAAK,IACJ,UAAU,EAAC,SAAS,EACpB,MAAM,EAAE,EAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,EAAC,EACxC,KAAK,EAAE;YACL,YAAY,EAAE,MAAM;YACpB,MAAM;YACN,KAAK;YACL,OAAO,EAAE,MAAM;YACf,UAAU,EAAE,QAAQ;YACpB,cAAc,EAAE,QAAQ;YACxB,QAAQ,EAAE,QAAQ;SACnB,EACD,OAAO,EAAE,gBAAgB,GACzB,CACH,CAAC,CAAC,CAAC,CACF,oBAAC,IAAI,IACH,KAAK,EAAE;YACL,MAAM;YACN,KAAK;YACL,YAAY,EAAE,MAAM;YACpB,OAAO,EAAE,MAAM;YACf,UAAU,EAAE,QAAQ;YACpB,cAAc,EAAE,QAAQ;YACxB,eAAe,EAAE,KAAK,CAAC,eAAe;gBACpC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC;gBACtC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI;SACvB;QAED,oBAAC,IAAI,IAAC,KAAK,EAAE,EAAC,QAAQ,EAAE,KAAK,QAAE,KAAK,CAAC,SAAS,mCAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAC,IACtE,gBAAgB,CACZ,CACF,CACR,CACG,CACP,CAAC;AACJ,CAAC,CAAC"}
|
package/dist/Button.js
CHANGED
|
@@ -94,7 +94,7 @@ export class Button extends React.Component {
|
|
|
94
94
|
this.props.icon !== undefined && (React.createElement(Box, { paddingX: 2 },
|
|
95
95
|
React.createElement(Icon, { color: this.getTextColor(this.props.color), name: this.props.icon, prefix: this.props.iconPrefix || "far", size: this.props.size }))),
|
|
96
96
|
Boolean(this.props.children) && this.props.children,
|
|
97
|
-
Boolean(this.props.text) && (React.createElement(Text, { color: this.getTextColor(color), inline: this.props.inline, size: this.props.size, skipLinking: true, weight: "bold" }, this.props.text)),
|
|
97
|
+
Boolean(this.props.text) && (React.createElement(Text, { color: this.getTextColor(color), font: "button", inline: this.props.inline, size: this.props.size, skipLinking: true, weight: "bold" }, this.props.text)),
|
|
98
98
|
(this.state.loading || this.props.loading) && (React.createElement(Box, { marginLeft: 2 },
|
|
99
99
|
React.createElement(ActivityIndicator, { color: this.getTextColor(color), size: "small" })))));
|
|
100
100
|
}
|
package/dist/Button.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.js","sourceRoot":"","sources":["../src/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AACvC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,iBAAiB,EAAE,gBAAgB,EAAC,MAAM,cAAc,CAAC;AAGjE,OAAO,EAAC,GAAG,EAAC,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAC;AAC5B,+BAA+B;AAC/B,OAAO,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAMlC,MAAM,eAAe,GAAkD;IACrE,IAAI,EAAE,OAAO;IACb,SAAS,EAAE,UAAU;IACrB,GAAG,EAAE,OAAO;IACZ,WAAW,EAAE,OAAO;IACpB,KAAK,EAAE,UAAU;IACjB,OAAO,EAAE,OAAO;IAChB,SAAS,EAAE,OAAO;IAClB,MAAM,EAAE,OAAO;IACf,QAAQ,EAAE,OAAO;IACjB,QAAQ,EAAE,OAAO;IACjB,OAAO,EAAE,OAAO;IAChB,MAAM,EAAE,OAAO;CAChB,CAAC;AAEF,MAAM,OAAO,MAAO,SAAQ,KAAK,CAAC,SAAmC;IAArE;;QACE,UAAK,GAAG,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC;QAEzB,YAAO,GAAG;YACR,EAAE,EAAE,EAAE;YACN,EAAE,EAAE,EAAE;YACN,EAAE,EAAE,EAAE;SACP,CAAC;
|
|
1
|
+
{"version":3,"file":"Button.js","sourceRoot":"","sources":["../src/Button.tsx"],"names":[],"mappings":"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"}
|
package/dist/Common.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { SyntheticEvent } from "react";
|
|
2
|
-
import { SelectListOptions } from "./SelectList";
|
|
3
2
|
export interface BaseProfile {
|
|
4
3
|
email: string;
|
|
5
4
|
id: string;
|
|
@@ -368,20 +367,6 @@ export interface FieldWithLabelsProps {
|
|
|
368
367
|
helperTextColor?: AllColors;
|
|
369
368
|
children?: React.ReactNode;
|
|
370
369
|
}
|
|
371
|
-
export interface FieldProps extends FieldWithLabelsProps {
|
|
372
|
-
name: string;
|
|
373
|
-
label?: string;
|
|
374
|
-
subLabel?: string;
|
|
375
|
-
initialValue?: any;
|
|
376
|
-
handleChange: any;
|
|
377
|
-
validate?: (value: any) => boolean;
|
|
378
|
-
validateErrorMessage?: string;
|
|
379
|
-
type?: "boolean" | "email" | "text" | "textarea" | "number" | "currency" | "percent" | "select" | "password" | "url" | "date";
|
|
380
|
-
rows?: number;
|
|
381
|
-
options?: SelectListOptions;
|
|
382
|
-
placeholder?: string;
|
|
383
|
-
disabled?: boolean;
|
|
384
|
-
}
|
|
385
370
|
export interface TextFieldProps extends FieldWithLabelsProps {
|
|
386
371
|
id?: string;
|
|
387
372
|
onChange: OnChangeCallback;
|
package/dist/Common.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Common.js","sourceRoot":"","sources":["../src/Common.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Common.js","sourceRoot":"","sources":["../src/Common.ts"],"names":[],"mappings":"AAmVA,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;AAu5BD,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"}
|
package/dist/Field.d.ts
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import {
|
|
2
|
+
import { FieldWithLabelsProps } from "./Common";
|
|
3
|
+
import { SelectListOptions } from "./SelectList";
|
|
4
|
+
export interface FieldProps extends FieldWithLabelsProps {
|
|
5
|
+
name: string;
|
|
6
|
+
label?: string;
|
|
7
|
+
subLabel?: string;
|
|
8
|
+
initialValue?: any;
|
|
9
|
+
handleChange: any;
|
|
10
|
+
validate?: (value: any) => boolean;
|
|
11
|
+
validateErrorMessage?: string;
|
|
12
|
+
type?: "boolean" | "email" | "text" | "textarea" | "number" | "currency" | "percent" | "select" | "password" | "url" | "date" | "multiselect";
|
|
13
|
+
rows?: number;
|
|
14
|
+
options?: SelectListOptions;
|
|
15
|
+
placeholder?: string;
|
|
16
|
+
disabled?: boolean;
|
|
17
|
+
}
|
|
3
18
|
/**
|
|
4
19
|
* Field is a fully uncontrolled component for creating various inputs. Fully uncontrolled means Field manages its own
|
|
5
20
|
* state for the TextFields/Switches/etc, not the parent component. When values are updated, Field will pass the data to
|
package/dist/Field.js
CHANGED
|
@@ -6,6 +6,7 @@ import { Box } from "./Box";
|
|
|
6
6
|
import { FieldWithLabels } from "./FieldWithLabels";
|
|
7
7
|
import { SelectList } from "./SelectList";
|
|
8
8
|
import { Switch } from "./Switch";
|
|
9
|
+
import { Text } from "./Text";
|
|
9
10
|
import { TextArea } from "./TextArea";
|
|
10
11
|
import { TextField } from "./TextField";
|
|
11
12
|
/**
|
|
@@ -19,7 +20,9 @@ import { TextField } from "./TextField";
|
|
|
19
20
|
*
|
|
20
21
|
*/
|
|
21
22
|
export function Field(props) {
|
|
23
|
+
var _a;
|
|
22
24
|
const [value, setValue] = useState(props.initialValue || "");
|
|
25
|
+
const [multiselectValue, setMultiselectValue] = useState((_a = props.initialValue) !== null && _a !== void 0 ? _a : []);
|
|
23
26
|
const handleChange = (newValue) => {
|
|
24
27
|
if (props.type === "currency") {
|
|
25
28
|
newValue = newValue.replace("$", "");
|
|
@@ -39,7 +42,6 @@ export function Field(props) {
|
|
|
39
42
|
}
|
|
40
43
|
};
|
|
41
44
|
const validate = () => {
|
|
42
|
-
// console.log("VALIDATE", props.validate && props.validate(value));
|
|
43
45
|
if (props.validate && !props.validate(value)) {
|
|
44
46
|
return false;
|
|
45
47
|
}
|
|
@@ -79,6 +81,33 @@ export function Field(props) {
|
|
|
79
81
|
}
|
|
80
82
|
return (React.createElement(SelectList, { disabled: props.disabled, id: props.name, options: props.options, value: value, onChange: handleChange }));
|
|
81
83
|
}
|
|
84
|
+
else if (props.type === "multiselect") {
|
|
85
|
+
if (!props.options) {
|
|
86
|
+
console.error("Field with type=multiselect require options");
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
return (React.createElement(Box, { width: "100%" }, props.options.map((o) => (React.createElement(Box, { key: o.label + o.value, direction: "row", justifyContent: "between", width: "100%" },
|
|
90
|
+
React.createElement(Box, { flex: "shrink", marginRight: 2 },
|
|
91
|
+
React.createElement(Text, { weight: "bold" }, o.label)),
|
|
92
|
+
React.createElement(Box, null,
|
|
93
|
+
React.createElement(Switch, { key: o.label + o.value, disabled: props.disabled, id: props.name, name: props.name, switched: (multiselectValue !== null && multiselectValue !== void 0 ? multiselectValue : []).includes(o.value), onChange: (result) => {
|
|
94
|
+
let newValue;
|
|
95
|
+
if (result) {
|
|
96
|
+
if (multiselectValue.includes(o.value)) {
|
|
97
|
+
console.warn(`Tried to add value that already exists: ${o.value}`);
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
newValue = [...multiselectValue, o.value];
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
newValue = multiselectValue.filter((v) => v !== o.value);
|
|
104
|
+
}
|
|
105
|
+
setMultiselectValue(newValue);
|
|
106
|
+
if (props.handleChange) {
|
|
107
|
+
props.handleChange(props.name, newValue);
|
|
108
|
+
}
|
|
109
|
+
} })))))));
|
|
110
|
+
}
|
|
82
111
|
else if (props.type === "textarea") {
|
|
83
112
|
return (React.createElement(TextArea, { disabled: props.disabled, id: props.name, placeholder: props.placeholder, rows: props.rows, value: String(value), onChange: (result) => handleChange(result.value) }));
|
|
84
113
|
}
|
package/dist/Field.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Field.js","sourceRoot":"","sources":["../src/Field.tsx"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,eAAe,CAAC;AACnC,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AACvC,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,KAAK,EAAE,EAAC,QAAQ,EAAC,MAAM,OAAO,CAAC;AAEtC,OAAO,EAAC,GAAG,EAAC,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAC,UAAU,
|
|
1
|
+
{"version":3,"file":"Field.js","sourceRoot":"","sources":["../src/Field.tsx"],"names":[],"mappings":"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"}
|
package/dist/Heading.js
CHANGED
|
@@ -16,7 +16,7 @@ export class Heading extends React.Component {
|
|
|
16
16
|
// if (this.props.bold) {
|
|
17
17
|
// font += "Bold";
|
|
18
18
|
// }
|
|
19
|
-
style.fontFamily = Unifier.theme.
|
|
19
|
+
style.fontFamily = Unifier.theme.titleFont;
|
|
20
20
|
style.fontSize = this.fontSizes[this.props.size || "md"];
|
|
21
21
|
if (this.props.align) {
|
|
22
22
|
style.textAlign = this.props.align;
|
package/dist/Heading.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Heading.js","sourceRoot":"","sources":["../src/Heading.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,IAAI,IAAI,UAAU,EAAC,MAAM,cAAc,CAAC;AAGhD,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAElC,MAAM,OAAO,OAAQ,SAAQ,KAAK,CAAC,SAA2B;IAA9D;;QACE,cAAS,GAAG;YACV,EAAE,EAAE,EAAE;YACN,EAAE,EAAE,EAAE;YACN,EAAE,EAAE,EAAE;SACP,CAAC;IAyCJ,CAAC;IAvCC,YAAY;QACV,MAAM,KAAK,GAAQ,EAAE,CAAC;QAEtB,2CAA2C;QAC3C,yBAAyB;QACzB,oBAAoB;QACpB,IAAI;QACJ,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"Heading.js","sourceRoot":"","sources":["../src/Heading.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,IAAI,IAAI,UAAU,EAAC,MAAM,cAAc,CAAC;AAGhD,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAElC,MAAM,OAAO,OAAQ,SAAQ,KAAK,CAAC,SAA2B;IAA9D;;QACE,cAAS,GAAG;YACV,EAAE,EAAE,EAAE;YACN,EAAE,EAAE,EAAE;YACN,EAAE,EAAE,EAAE;SACP,CAAC;IAyCJ,CAAC;IAvCC,YAAY;QACV,MAAM,KAAK,GAAQ,EAAE,CAAC;QAEtB,2CAA2C;QAC3C,yBAAyB;QACzB,oBAAoB;QACpB,IAAI;QACJ,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;QAE3C,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;QACzD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;YACpB,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;SACpC;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;YACpB,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SAC/C;aAAM;YACL,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;SACtC;QACD,gDAAgD;QAChD,8DAA8D;QAC9D,6BAA6B;QAC7B,IAAI;QAEJ,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM;QACJ,MAAM,KAAK,GAAG,CAAC,CAAC;QAChB,kCAAkC;QAClC,sCAAsC;QACtC,kCAAkC;QAClC,eAAe;QACf,IAAI;QACJ,OAAO,CACL,oBAAC,UAAU,IAAC,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,IACzD,IAAI,CAAC,KAAK,CAAC,QAAQ,CACT,CACd,CAAC;IACJ,CAAC;CACF"}
|
package/dist/TapToEdit.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { ReactElement } from "react";
|
|
2
|
+
import { BoxProps } from "./Common";
|
|
3
|
+
import { FieldProps } from "./Field";
|
|
4
|
+
export interface TapToEditProps extends Omit<FieldProps, "handleChange"> {
|
|
5
|
+
title: string;
|
|
6
|
+
onSave?: (value: any) => void | Promise<void>;
|
|
7
|
+
editable?: boolean;
|
|
8
|
+
rowBoxProps?: Partial<BoxProps>;
|
|
9
|
+
transform?: (value: any) => string;
|
|
10
|
+
fieldComponent?: (setValue: () => void) => ReactElement;
|
|
5
11
|
}
|
|
6
|
-
export declare
|
|
7
|
-
state: {
|
|
8
|
-
showEdit: boolean;
|
|
9
|
-
};
|
|
10
|
-
render(): JSX.Element;
|
|
11
|
-
}
|
|
12
|
-
export {};
|
|
12
|
+
export declare const TapToEdit: (props: TapToEditProps) => ReactElement;
|
package/dist/TapToEdit.js
CHANGED
|
@@ -1,32 +1,82 @@
|
|
|
1
|
-
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
import React, { useState } from "react";
|
|
2
13
|
import { Box } from "./Box";
|
|
3
14
|
import { Button } from "./Button";
|
|
15
|
+
import { Field } from "./Field";
|
|
4
16
|
import { Icon } from "./Icon";
|
|
5
17
|
import { Text } from "./Text";
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
18
|
+
export const TapToEdit = (props) => {
|
|
19
|
+
const [editing, setEditing] = useState(false);
|
|
20
|
+
const [value, setValue] = useState(props.initialValue);
|
|
21
|
+
const { title, editable = true, rowBoxProps, transform, fieldComponent } = props, fieldProps = __rest(props, ["title", "editable", "rowBoxProps", "transform", "fieldComponent"]);
|
|
22
|
+
if (editing) {
|
|
23
|
+
return (React.createElement(Box, { direction: "column", maxWidth: "100%", paddingX: 3, paddingY: 2, width: "100%" },
|
|
24
|
+
fieldComponent ? (fieldComponent(setValue)) : (React.createElement(Field, Object.assign({ handleChange: (_, val) => setValue(val), label: props.title }, fieldProps))),
|
|
25
|
+
React.createElement(Box, { direction: "row" },
|
|
26
|
+
React.createElement(Button, { color: "blue", inline: true, text: "Save", onClick: async () => {
|
|
27
|
+
if (!props.onSave) {
|
|
28
|
+
console.error("No onSave provided for editable TapToEdit");
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
await props.onSave(value);
|
|
32
|
+
}
|
|
33
|
+
setEditing(false);
|
|
34
|
+
} }),
|
|
35
|
+
React.createElement(Box, { marginLeft: 2 },
|
|
36
|
+
React.createElement(Button, { color: "red", inline: true, text: "Cancel", onClick: () => {
|
|
37
|
+
setEditing(false);
|
|
38
|
+
} })))));
|
|
11
39
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
React.createElement(Text, null, this.props.children)));
|
|
40
|
+
else {
|
|
41
|
+
let displayValue = value;
|
|
42
|
+
// If transform is present, that takes priority
|
|
43
|
+
if (transform) {
|
|
44
|
+
displayValue = transform(value);
|
|
18
45
|
}
|
|
19
46
|
else {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
47
|
+
// If no transform, try and display the value reasonably.
|
|
48
|
+
if ((fieldProps === null || fieldProps === void 0 ? void 0 : fieldProps.type) === "boolean") {
|
|
49
|
+
displayValue = value ? "Yes" : "No";
|
|
50
|
+
}
|
|
51
|
+
else if ((fieldProps === null || fieldProps === void 0 ? void 0 : fieldProps.type) === "percent") {
|
|
52
|
+
// Prevent floating point errors from showing up by using parseFloat and precision. Pass through parseFloat again
|
|
53
|
+
// to trim off insignificant zeroes.
|
|
54
|
+
displayValue = `${parseFloat(parseFloat(String(value * 100)).toPrecision(7))}%`;
|
|
55
|
+
}
|
|
56
|
+
else if ((fieldProps === null || fieldProps === void 0 ? void 0 : fieldProps.type) === "currency") {
|
|
57
|
+
// TODO: support currencies other than USD in Field and related components.
|
|
58
|
+
const formatter = new Intl.NumberFormat("en-US", {
|
|
59
|
+
style: "currency",
|
|
60
|
+
currency: "USD",
|
|
61
|
+
minimumFractionDigits: 2,
|
|
62
|
+
});
|
|
63
|
+
displayValue = formatter.format(value);
|
|
64
|
+
}
|
|
65
|
+
else if ((fieldProps === null || fieldProps === void 0 ? void 0 : fieldProps.type) === "multiselect") {
|
|
66
|
+
// ???
|
|
67
|
+
displayValue = value.join(", ");
|
|
68
|
+
}
|
|
29
69
|
}
|
|
70
|
+
return (React.createElement(Box, Object.assign({ direction: "row", justifyContent: "between", maxWidth: "100%", paddingX: 3, paddingY: 2, width: "100%" }, rowBoxProps),
|
|
71
|
+
React.createElement(Box, null,
|
|
72
|
+
React.createElement(Text, { weight: "bold" },
|
|
73
|
+
title,
|
|
74
|
+
":")),
|
|
75
|
+
React.createElement(Box, { direction: "row", flex: "shrink", marginLeft: 2 },
|
|
76
|
+
React.createElement(Box, { flex: "shrink" },
|
|
77
|
+
React.createElement(Text, { overflow: "breakWord" }, displayValue)),
|
|
78
|
+
editable && (React.createElement(Box, { marginLeft: 2, onClick: () => setEditing(true) },
|
|
79
|
+
React.createElement(Icon, { color: "darkGray", name: "edit", size: "lg" }))))));
|
|
30
80
|
}
|
|
31
|
-
}
|
|
81
|
+
};
|
|
32
82
|
//# sourceMappingURL=TapToEdit.js.map
|
package/dist/TapToEdit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TapToEdit.js","sourceRoot":"","sources":["../src/TapToEdit.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"TapToEdit.js","sourceRoot":"","sources":["../src/TapToEdit.tsx"],"names":[],"mappings":"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"}
|
package/dist/Text.js
CHANGED
|
@@ -14,7 +14,7 @@ export class Text extends React.Component {
|
|
|
14
14
|
propsToStyle() {
|
|
15
15
|
const style = {};
|
|
16
16
|
let font = "primaryFont";
|
|
17
|
-
if (this.props.font === "primary") {
|
|
17
|
+
if (this.props.font === "primary" || !this.props.font) {
|
|
18
18
|
if (this.props.weight === "bold") {
|
|
19
19
|
font = "primaryBoldFont";
|
|
20
20
|
}
|
package/dist/Text.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Text.js","sourceRoot":"","sources":["../src/Text.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,IAAI,IAAI,UAAU,EAAC,MAAM,cAAc,CAAC;AAGhD,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AACtC,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAElC,MAAM,OAAO,IAAK,SAAQ,KAAK,CAAC,SAAwB;IAAxD;;QACE,cAAS,GAAG;YACV,EAAE,EAAE,EAAE;YACN,EAAE,EAAE,EAAE;YACN,EAAE,EAAE,EAAE;SACP,CAAC;IA8EJ,CAAC;IA5EC,YAAY;QACV,MAAM,KAAK,GAAQ,EAAE,CAAC;QAEtB,IAAI,IAAI,GAQU,aAAa,CAAC;QAChC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;
|
|
1
|
+
{"version":3,"file":"Text.js","sourceRoot":"","sources":["../src/Text.tsx"],"names":[],"mappings":"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"}
|
package/dist/Unifier.d.ts
CHANGED
|
@@ -1,17 +1,22 @@
|
|
|
1
1
|
import { PermissionKind, UnifiedTheme } from "./Common";
|
|
2
2
|
export declare type PlatformOS = "ios" | "android" | "web";
|
|
3
|
+
declare type Luminance = "light" | "lighter" | "dark" | "darker";
|
|
4
|
+
export declare function changeColorLuminance(hex: string, luminanceChange: Luminance): string;
|
|
3
5
|
declare class UnifierClass {
|
|
4
6
|
private _theme?;
|
|
5
7
|
private _web;
|
|
6
8
|
private _dev;
|
|
7
9
|
get web(): boolean;
|
|
8
10
|
get dev(): boolean;
|
|
11
|
+
private get fontMap();
|
|
12
|
+
private calculateLuminances;
|
|
9
13
|
setTheme(theme: Partial<UnifiedTheme>): void;
|
|
10
14
|
get theme(): UnifiedTheme;
|
|
11
15
|
constructor();
|
|
12
16
|
navigation: {
|
|
13
17
|
dismissOverlay: () => void;
|
|
14
18
|
};
|
|
19
|
+
loadFonts: () => Promise<void>;
|
|
15
20
|
utils: {
|
|
16
21
|
dismissKeyboard: () => void;
|
|
17
22
|
dimensions: () => {
|
|
@@ -19,7 +24,7 @@ declare class UnifierClass {
|
|
|
19
24
|
height: number;
|
|
20
25
|
};
|
|
21
26
|
copyToClipboard: (text: string) => void;
|
|
22
|
-
orientationChange: (callback: (
|
|
27
|
+
orientationChange: (callback: (orientation: "portrait" | "landscape") => void) => void;
|
|
23
28
|
requestPermissions: (_perm: PermissionKind) => Promise<import("./Common").PermissionStatus>;
|
|
24
29
|
makePurchase: () => void;
|
|
25
30
|
PaymentService: () => void;
|
package/dist/Unifier.js
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
2
2
|
/* eslint-disable @typescript-eslint/no-empty-function */
|
|
3
3
|
import AsyncStorage from "@react-native-async-storage/async-storage";
|
|
4
|
+
import * as Font from "expo-font";
|
|
4
5
|
import { Clipboard, Dimensions, Keyboard, Linking, Platform, Vibration } from "react-native";
|
|
5
6
|
import ReactNativeHapticFeedback from "react-native-haptic-feedback";
|
|
6
7
|
import { requestPermissions } from "./Permissions";
|
|
8
|
+
function capitalize(string) {
|
|
9
|
+
return string.charAt(0).toUpperCase() + string.slice(1);
|
|
10
|
+
}
|
|
7
11
|
const DEFAULT_FONT = "Cochin";
|
|
8
12
|
const DEFAULT_BOLD_FONT = "Cochin";
|
|
9
13
|
const DefaultTheme = {
|
|
@@ -75,6 +79,54 @@ const DefaultTheme = {
|
|
|
75
79
|
buttonFont: DEFAULT_FONT,
|
|
76
80
|
titleFont: DEFAULT_FONT,
|
|
77
81
|
};
|
|
82
|
+
const fontKeys = [
|
|
83
|
+
"primaryFont",
|
|
84
|
+
"primaryBoldFont",
|
|
85
|
+
"secondaryFont",
|
|
86
|
+
"secondaryBoldFont",
|
|
87
|
+
"buttonFont",
|
|
88
|
+
"accentFont",
|
|
89
|
+
"accentBoldFont",
|
|
90
|
+
"titleFont",
|
|
91
|
+
];
|
|
92
|
+
const luminances = ["lighter", "light", "dark", "darker"];
|
|
93
|
+
// Changes a color luminance
|
|
94
|
+
export function changeColorLuminance(hex, luminanceChange) {
|
|
95
|
+
// Validate hex string, strip "#" if present.
|
|
96
|
+
hex = String(hex).replace(/[^0-9a-f]/gi, "");
|
|
97
|
+
if (hex.length === 3) {
|
|
98
|
+
hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];
|
|
99
|
+
}
|
|
100
|
+
else if (hex.length !== 6) {
|
|
101
|
+
throw new Error(`Invalid color hex: ${hex}`);
|
|
102
|
+
}
|
|
103
|
+
let luminance;
|
|
104
|
+
switch (luminanceChange) {
|
|
105
|
+
case "light":
|
|
106
|
+
luminance = -0.2;
|
|
107
|
+
break;
|
|
108
|
+
case "lighter":
|
|
109
|
+
luminance = -0.33;
|
|
110
|
+
break;
|
|
111
|
+
case "dark":
|
|
112
|
+
luminance = 0.2;
|
|
113
|
+
break;
|
|
114
|
+
case "darker":
|
|
115
|
+
luminance = 0.33;
|
|
116
|
+
break;
|
|
117
|
+
default:
|
|
118
|
+
throw new Error(`Cannot change luminance to ${luminanceChange}`);
|
|
119
|
+
}
|
|
120
|
+
// Convert to decimal and change luminosity
|
|
121
|
+
let rgb = "#";
|
|
122
|
+
for (let i = 0; i < 3; i++) {
|
|
123
|
+
const decimal = parseInt(hex.substr(i * 2, 2), 16);
|
|
124
|
+
const appliedLuminance = Math.round(Math.min(Math.max(0, decimal + decimal * luminance), 255)).toString(16);
|
|
125
|
+
// 0 pad, if necessary.
|
|
126
|
+
rgb += `00${appliedLuminance}`.substr(appliedLuminance.length);
|
|
127
|
+
}
|
|
128
|
+
return rgb;
|
|
129
|
+
}
|
|
78
130
|
class UnifierClass {
|
|
79
131
|
constructor() {
|
|
80
132
|
this._web = false;
|
|
@@ -84,6 +136,14 @@ class UnifierClass {
|
|
|
84
136
|
console.warn("Dismiss overlay not supported.");
|
|
85
137
|
},
|
|
86
138
|
};
|
|
139
|
+
this.loadFonts = async () => {
|
|
140
|
+
try {
|
|
141
|
+
await Font.loadAsync(this.fontMap);
|
|
142
|
+
}
|
|
143
|
+
catch (err) {
|
|
144
|
+
console.error(`[unifier] Fonts failed to load: ${err}`);
|
|
145
|
+
}
|
|
146
|
+
};
|
|
87
147
|
// tracking: Tracking,
|
|
88
148
|
this.utils = {
|
|
89
149
|
dismissKeyboard: () => {
|
|
@@ -181,7 +241,35 @@ class UnifierClass {
|
|
|
181
241
|
get dev() {
|
|
182
242
|
return this._dev;
|
|
183
243
|
}
|
|
244
|
+
get fontMap() {
|
|
245
|
+
const fontMap = {};
|
|
246
|
+
for (const key of fontKeys) {
|
|
247
|
+
if (typeof this.theme[key] === "string") {
|
|
248
|
+
fontMap[key] = key;
|
|
249
|
+
}
|
|
250
|
+
else {
|
|
251
|
+
fontMap[this.theme[key].name] = this.theme[key].source;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
return fontMap;
|
|
255
|
+
}
|
|
256
|
+
// If the theme only has e.g. "primary" set, calculate the primaryLighter, primaryLight, etc based on that color.
|
|
257
|
+
calculateLuminances(theme, color) {
|
|
258
|
+
if (!theme[color]) {
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
for (const luminance of luminances) {
|
|
262
|
+
const capitalized = capitalize(luminance);
|
|
263
|
+
if (!theme[`${color}${capitalized}`] && theme[color]) {
|
|
264
|
+
theme[`${color}${capitalized}`] = changeColorLuminance(theme[color], luminance);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
}
|
|
184
268
|
setTheme(theme) {
|
|
269
|
+
Unifier.calculateLuminances(theme, "primary");
|
|
270
|
+
Unifier.calculateLuminances(theme, "secondary");
|
|
271
|
+
Unifier.calculateLuminances(theme, "accent");
|
|
272
|
+
Unifier.calculateLuminances(theme, "tertiary");
|
|
185
273
|
this._theme = theme;
|
|
186
274
|
}
|
|
187
275
|
get theme() {
|
package/dist/Unifier.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Unifier.js","sourceRoot":"","sources":["../src/Unifier.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Unifier.js","sourceRoot":"","sources":["../src/Unifier.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,yDAAyD;AAEzD,OAAO,YAAY,MAAM,2CAA2C,CAAC;AACrE,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAC,MAAM,cAAc,CAAC;AAC3F,OAAO,yBAAyB,MAAM,8BAA8B,CAAC;AAGrE,OAAO,EAAC,kBAAkB,EAAC,MAAM,eAAe,CAAC;AAEjD,SAAS,UAAU,CAAC,MAAc;IAChC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,YAAY,GAAG,QAAQ,CAAC;AAC9B,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AAEnC,MAAM,YAAY,GAAiB;IACjC,iBAAiB;IACjB,GAAG,EAAE,SAAS;IACd,KAAK,EAAE,SAAS;IAChB,SAAS,EAAE,SAAS;IACpB,IAAI,EAAE,SAAS;IACf,QAAQ,EAAE,MAAM;IAChB,mBAAmB;IACnB,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,SAAS;IACf,QAAQ,EAAE,SAAS;IACnB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,SAAS;IACjB,QAAQ,EAAE,SAAS;IACnB,MAAM,EAAE,SAAS;IACjB,UAAU,EAAE,SAAS;IACrB,MAAM,EAAE,SAAS;IACjB,KAAK,EAAE,SAAS;IAEhB,cAAc,EAAE,SAAS;IACzB,YAAY,EAAE,SAAS;IACvB,OAAO,EAAE,SAAS;IAClB,WAAW,EAAE,SAAS;IACtB,aAAa,EAAE,SAAS;IAExB,gBAAgB,EAAE,SAAS;IAC3B,cAAc,EAAE,SAAS;IACzB,SAAS,EAAE,SAAS;IACpB,aAAa,EAAE,SAAS;IACxB,eAAe,EAAE,SAAS;IAE1B,aAAa,EAAE,SAAS;IACxB,WAAW,EAAE,SAAS;IACtB,MAAM,EAAE,SAAS;IACjB,UAAU,EAAE,SAAS;IACrB,YAAY,EAAE,SAAS;IAEvB,eAAe,EAAE,SAAS;IAC1B,aAAa,EAAE,SAAS;IACxB,QAAQ,EAAE,SAAS;IACnB,YAAY,EAAE,SAAS;IACvB,cAAc,EAAE,SAAS;IAEzB,+BAA+B;IAC/B,UAAU,EAAE,SAAS;IACrB,UAAU,EAAE,SAAS;IACrB,UAAU,EAAE,SAAS;IACrB,UAAU,EAAE,SAAS;IACrB,UAAU,EAAE,SAAS;IACrB,UAAU,EAAE,SAAS;IACrB,UAAU,EAAE,SAAS;IACrB,UAAU,EAAE,SAAS;IACrB,UAAU,EAAE,SAAS;IACrB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IAEpB,WAAW,EAAE,YAAY;IACzB,eAAe,EAAE,iBAAiB;IAElC,aAAa,EAAE,YAAY;IAC3B,iBAAiB,EAAE,iBAAiB;IAEpC,UAAU,EAAE,YAAY;IACxB,cAAc,EAAE,iBAAiB;IAEjC,UAAU,EAAE,YAAY;IACxB,SAAS,EAAE,YAAY;CACxB,CAAC;AAIF,MAAM,QAAQ,GAAG;IACf,aAAa;IACb,iBAAiB;IACjB,eAAe;IACf,mBAAmB;IACnB,YAAY;IACZ,YAAY;IACZ,gBAAgB;IAChB,WAAW;CACZ,CAAC;AAGF,MAAM,UAAU,GAAgB,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AAEvE,4BAA4B;AAC5B,MAAM,UAAU,oBAAoB,CAAC,GAAW,EAAE,eAA0B;IAC1E,6CAA6C;IAC7C,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;QACpB,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;KAC3D;SAAM,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;QAC3B,MAAM,IAAI,KAAK,CAAC,sBAAsB,GAAG,EAAE,CAAC,CAAC;KAC9C;IACD,IAAI,SAAS,CAAC;IACd,QAAQ,eAAe,EAAE;QACvB,KAAK,OAAO;YACV,SAAS,GAAG,CAAC,GAAG,CAAC;YACjB,MAAM;QACR,KAAK,SAAS;YACZ,SAAS,GAAG,CAAC,IAAI,CAAC;YAClB,MAAM;QACR,KAAK,MAAM;YACT,SAAS,GAAG,GAAG,CAAC;YAChB,MAAM;QACR,KAAK,QAAQ;YACX,SAAS,GAAG,IAAI,CAAC;YACjB,MAAM;QACR;YACE,MAAM,IAAI,KAAK,CAAC,8BAA8B,eAAe,EAAE,CAAC,CAAC;KACpE;IAED,2CAA2C;IAC3C,IAAI,GAAG,GAAG,GAAG,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QAC1B,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACnD,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CACjC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC,EAAE,GAAG,CAAC,CAC1D,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACf,uBAAuB;QACvB,GAAG,IAAI,KAAK,gBAAgB,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;KAChE;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,YAAY;IAmGhB;QAhGQ,SAAI,GAAG,KAAK,CAAC;QAEb,SAAI,GAAG,KAAK,CAAC;QAkGrB,eAAU,GAAG;YACX,cAAc,EAAE,GAAG,EAAE;gBACnB,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;YACjD,CAAC;SACF,CAAC;QAEF,cAAS,GAAG,KAAK,IAAI,EAAE;YACrB,IAAI;gBACF,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aACpC;YAAC,OAAO,GAAG,EAAE;gBACZ,OAAO,CAAC,KAAK,CAAC,mCAAmC,GAAG,EAAE,CAAC,CAAC;aACzD;QACH,CAAC,CAAC;QAEF,sBAAsB;QACtB,UAAK,GAAG;YACN,eAAe,EAAE,GAAG,EAAE;gBACpB,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrB,CAAC;YACD,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;gBACjB,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK;gBACrC,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM;aACxC,CAAC;YACF,eAAe,EAAE,CAAC,IAAY,EAAE,EAAE;gBAChC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;YACD,iBAAiB,EAAE,CAAC,QAAyD,EAAE,EAAE;gBAC/E,UAAU,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE;oBACzC,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBACxC,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;oBAChD,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;gBAClD,CAAC,CAAC,CAAC;YACL,CAAC;YACD,kBAAkB,EAAE,KAAK,EAAE,KAAqB,EAAE,EAAE;gBAClD,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBACjC,mCAAmC;YACrC,CAAC;YACD,YAAY,EAAE,GAAG,EAAE;gBACjB,OAAO,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;YACnD,CAAC;YACD,cAAc,EAAE,GAAG,EAAE;gBACnB,OAAO,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;YACnD,CAAC;YACD,OAAO,EAAE,CAAC,OAAkB,EAAE,EAAE;gBAC9B,SAAS,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;YAC7C,CAAC;YACD,MAAM,EAAE,GAAG,EAAE;gBACX,MAAM,OAAO,GAAG;oBACd,qBAAqB,EAAE,IAAI;oBAC3B,2BAA2B,EAAE,KAAK;iBACnC,CAAC;gBACF,IAAI,QAAQ,CAAC,EAAE,KAAK,KAAK,EAAE;oBACzB,yBAAyB,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;iBAC3D;YACH,CAAC;YACD,OAAO,EAAE,KAAK,EAAE,GAAW,EAAE,EAAE;gBAC7B,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC9B,CAAC;SAQF,CAAC;QAEF,YAAO,GAAG;YACR,OAAO,EAAE,KAAK,EAAE,GAAW,EAAE,YAAkB,EAAE,EAAE;gBACjD,IAAI;oBACF,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBAClD,IAAI,SAAS,EAAE;wBACb,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;wBACpC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;4BACzC,OAAO,YAAY,CAAC;yBACrB;6BAAM;4BACL,OAAO,KAAK,CAAC;yBACd;qBACF;yBAAM,IAAI,YAAY,KAAK,SAAS,EAAE;wBACrC,OAAO,YAAY,CAAC;qBACrB;yBAAM;wBACL,OAAO,IAAI,CAAC;qBACb;iBACF;gBAAC,OAAO,CAAC,EAAE;oBACV,OAAO,CAAC,KAAK,CAAC,2BAA2B,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;oBACnD,OAAO,YAAY,IAAI,IAAI,CAAC;iBAC7B;YACH,CAAC;YACD,OAAO,EAAE,KAAK,EAAE,GAAW,EAAE,IAAS,EAAE,EAAE;gBACxC,IAAI;oBACF,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;oBACvC,MAAM,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;iBAC5C;gBAAC,OAAO,CAAC,EAAE;oBACV,OAAO,CAAC,KAAK,CAAC,2BAA2B,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;oBACzD,MAAM,IAAI,KAAK,CAAC,CAAQ,CAAC,CAAC;iBAC3B;YACH,CAAC;SACF,CAAC;QAEF,aAAQ,GAAG;YACT,GAAG,EAAE,CAAC,OAAe,EAAE,EAAE;gBACvB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACxB,CAAC;SACF,CAAC;QAEF,cAAS,GAAG,GAAG,EAAE;YACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAChD,CAAC,CAAC;QA9GA,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAChD,CAAC;IA9FD,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,IAAY,OAAO;QACjB,MAAM,OAAO,GAA+B,EAAE,CAAC;QAC/C,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE;YAC1B,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE;gBACvC,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;aACpB;iBAAM;gBACL,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;aACxD;SACF;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,iHAAiH;IACzG,mBAAmB,CACzB,KAA4B,EAC5B,KAAsD;QAEtD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YACjB,OAAO;SACR;QACD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;YAClC,MAAM,WAAW,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;YAC1C,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,WAAW,EAAE,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;gBACpD,KAAK,CAAC,GAAG,KAAK,GAAG,WAAW,EAAE,CAAC,GAAG,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAW,EAAE,SAAS,CAAC,CAAC;aAC3F;SACF;IACH,CAAC;IAED,QAAQ,CAAC,KAA4B;QACnC,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC9C,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAChD,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC7C,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,IAAI,KAAK;;QACP,uCACK,YAAY;YACf,qBAAqB;YACrB,cAAc,EAAE,OAAA,IAAI,CAAC,MAAM,0CAAE,cAAc,YAAI,IAAI,CAAC,MAAM,0CAAE,OAAO,CAAA,IAAI,YAAY,CAAC,OAAO,EAC3F,YAAY,EAAE,OAAA,IAAI,CAAC,MAAM,0CAAE,YAAY,YAAI,IAAI,CAAC,MAAM,0CAAE,OAAO,CAAA,IAAI,YAAY,CAAC,OAAO,EACvF,OAAO,EAAE,OAAA,IAAI,CAAC,MAAM,0CAAE,OAAO,YAAI,IAAI,CAAC,MAAM,0CAAE,OAAO,CAAA,IAAI,YAAY,CAAC,OAAO,EAC7E,WAAW,EAAE,OAAA,IAAI,CAAC,MAAM,0CAAE,WAAW,YAAI,IAAI,CAAC,MAAM,0CAAE,OAAO,CAAA,IAAI,YAAY,CAAC,OAAO,EACrF,aAAa,EAAE,OAAA,IAAI,CAAC,MAAM,0CAAE,aAAa,YAAI,IAAI,CAAC,MAAM,0CAAE,OAAO,CAAA,IAAI,YAAY,CAAC,OAAO,EAEzF,gBAAgB,EACd,OAAA,IAAI,CAAC,MAAM,0CAAE,gBAAgB,YAAI,IAAI,CAAC,MAAM,0CAAE,SAAS,CAAA,IAAI,YAAY,CAAC,SAAS,EACnF,cAAc,EACZ,OAAA,IAAI,CAAC,MAAM,0CAAE,cAAc,YAAI,IAAI,CAAC,MAAM,0CAAE,SAAS,CAAA,IAAI,YAAY,CAAC,SAAS,EACjF,SAAS,EAAE,OAAA,IAAI,CAAC,MAAM,0CAAE,SAAS,YAAI,IAAI,CAAC,MAAM,0CAAE,SAAS,CAAA,IAAI,YAAY,CAAC,SAAS,EACrF,aAAa,EAAE,OAAA,IAAI,CAAC,MAAM,0CAAE,aAAa,YAAI,IAAI,CAAC,MAAM,0CAAE,SAAS,CAAA,IAAI,YAAY,CAAC,SAAS,EAC7F,eAAe,EACb,OAAA,IAAI,CAAC,MAAM,0CAAE,eAAe,YAAI,IAAI,CAAC,MAAM,0CAAE,SAAS,CAAA,IAAI,YAAY,CAAC,SAAS,EAElF,aAAa,EAAE,OAAA,IAAI,CAAC,MAAM,0CAAE,aAAa,YAAI,IAAI,CAAC,MAAM,0CAAE,MAAM,CAAA,IAAI,YAAY,CAAC,MAAM,EACvF,WAAW,EAAE,OAAA,IAAI,CAAC,MAAM,0CAAE,WAAW,YAAI,IAAI,CAAC,MAAM,0CAAE,MAAM,CAAA,IAAI,YAAY,CAAC,MAAM,EACnF,MAAM,EAAE,OAAA,IAAI,CAAC,MAAM,0CAAE,MAAM,YAAI,IAAI,CAAC,MAAM,0CAAE,MAAM,CAAA,IAAI,YAAY,CAAC,MAAM,EACzE,UAAU,EAAE,OAAA,IAAI,CAAC,MAAM,0CAAE,UAAU,YAAI,IAAI,CAAC,MAAM,0CAAE,MAAM,CAAA,IAAI,YAAY,CAAC,MAAM,EACjF,YAAY,EAAE,OAAA,IAAI,CAAC,MAAM,0CAAE,YAAY,YAAI,IAAI,CAAC,MAAM,0CAAE,MAAM,CAAA,IAAI,YAAY,CAAC,MAAM,EAErF,eAAe,EAAE,OAAA,IAAI,CAAC,MAAM,0CAAE,eAAe,YAAI,IAAI,CAAC,MAAM,0CAAE,MAAM,CAAA,IAAI,YAAY,CAAC,MAAM,EAC3F,aAAa,EAAE,OAAA,IAAI,CAAC,MAAM,0CAAE,aAAa,YAAI,IAAI,CAAC,MAAM,0CAAE,MAAM,CAAA,IAAI,YAAY,CAAC,MAAM,EACvF,QAAQ,EAAE,QAAA,IAAI,CAAC,MAAM,4CAAE,QAAQ,aAAI,IAAI,CAAC,MAAM,4CAAE,MAAM,CAAA,IAAI,YAAY,CAAC,MAAM,EAC7E,YAAY,EAAE,QAAA,IAAI,CAAC,MAAM,4CAAE,YAAY,aAAI,IAAI,CAAC,MAAM,4CAAE,MAAM,CAAA,IAAI,YAAY,CAAC,MAAM,EACrF,cAAc,EAAE,QAAA,IAAI,CAAC,MAAM,4CAAE,cAAc,aAAI,IAAI,CAAC,MAAM,4CAAE,MAAM,CAAA,IAAI,YAAY,CAAC,MAAM,EAEzF,WAAW,EAAE,QAAA,IAAI,CAAC,MAAM,4CAAE,WAAW,KAAI,YAAY,CAAC,WAAW,EACjE,eAAe,EACb,QAAA,IAAI,CAAC,MAAM,4CAAE,eAAe,aAAI,IAAI,CAAC,MAAM,4CAAE,WAAW,CAAA,IAAI,YAAY,CAAC,eAAe,EAC1F,aAAa,EACX,QAAA,IAAI,CAAC,MAAM,4CAAE,aAAa,aAAI,IAAI,CAAC,MAAM,4CAAE,WAAW,CAAA,IAAI,YAAY,CAAC,aAAa,EACtF,iBAAiB,EACf,QAAA,IAAI,CAAC,MAAM,4CAAE,iBAAiB,aAC9B,IAAI,CAAC,MAAM,4CAAE,WAAW,CAAA;gBACxB,YAAY,CAAC,iBAAiB,EAChC,UAAU,EAAE,QAAA,IAAI,CAAC,MAAM,4CAAE,UAAU,aAAI,IAAI,CAAC,MAAM,4CAAE,WAAW,CAAA,IAAI,YAAY,CAAC,UAAU,EAC1F,UAAU,EAAE,QAAA,IAAI,CAAC,MAAM,4CAAE,UAAU,aAAI,IAAI,CAAC,MAAM,4CAAE,WAAW,CAAA,IAAI,YAAY,CAAC,UAAU,EAC1F,cAAc,EACZ,QAAA,IAAI,CAAC,MAAM,4CAAE,cAAc,aAAI,IAAI,CAAC,MAAM,4CAAE,WAAW,CAAA,IAAI,YAAY,CAAC,cAAc,EACxF,SAAS,EAAE,QAAA,IAAI,CAAC,MAAM,4CAAE,SAAS,aAAI,IAAI,CAAC,MAAM,4CAAE,WAAW,CAAA,IAAI,YAAY,CAAC,SAAS,IACvF;IACJ,CAAC;CAkHF;AAED,MAAM,oBAAoB,GAAG,2BAA2B,CAAC;AAEzD,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC"}
|
package/package.json
CHANGED
package/src/Avatar.tsx
CHANGED
|
@@ -2,6 +2,7 @@ import React, {useState} from "react";
|
|
|
2
2
|
import {Image, Text, View} from "react-native";
|
|
3
3
|
|
|
4
4
|
import {Box} from "./Box";
|
|
5
|
+
import {AllColors} from "./Common";
|
|
5
6
|
import {Unifier} from "./Unifier";
|
|
6
7
|
|
|
7
8
|
const sizes = {
|
|
@@ -13,6 +14,10 @@ const sizes = {
|
|
|
13
14
|
};
|
|
14
15
|
|
|
15
16
|
interface AvatarProps {
|
|
17
|
+
// Color for the background of the circle when no src picture is present.
|
|
18
|
+
backgroundColor?: AllColors;
|
|
19
|
+
// Color for the initials when no src picture is present.
|
|
20
|
+
textColor?: AllColors;
|
|
16
21
|
/**
|
|
17
22
|
* The name of the user. This is used for the placeholder treatment if an image is not available.
|
|
18
23
|
*/
|
|
@@ -87,10 +92,14 @@ export const Avatar = (props: AvatarProps): React.ReactElement => {
|
|
|
87
92
|
display: "flex",
|
|
88
93
|
alignItems: "center",
|
|
89
94
|
justifyContent: "center",
|
|
90
|
-
backgroundColor:
|
|
95
|
+
backgroundColor: props.backgroundColor
|
|
96
|
+
? Unifier.theme[props.backgroundColor]
|
|
97
|
+
: Unifier.theme.gray,
|
|
91
98
|
}}
|
|
92
99
|
>
|
|
93
|
-
<Text style={{fontSize, color: Unifier.theme.darkGray}}>
|
|
100
|
+
<Text style={{fontSize, color: props.textColor ?? Unifier.theme.darkGray}}>
|
|
101
|
+
{computedInitials}
|
|
102
|
+
</Text>
|
|
94
103
|
</View>
|
|
95
104
|
)}
|
|
96
105
|
</Box>
|
package/src/Button.tsx
CHANGED
|
@@ -38,11 +38,11 @@ export class Button extends React.Component<ButtonProps, ButtonState> {
|
|
|
38
38
|
lg: 48,
|
|
39
39
|
};
|
|
40
40
|
|
|
41
|
-
getBackgroundColor(color: string) {
|
|
41
|
+
getBackgroundColor(color: string): string {
|
|
42
42
|
if (this.props.type === "ghost" || this.props.type === "outline") {
|
|
43
43
|
return "transparent";
|
|
44
44
|
} else {
|
|
45
|
-
return Unifier.theme[color as keyof UnifiedTheme];
|
|
45
|
+
return Unifier.theme[color as keyof UnifiedTheme] as string;
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
48
|
|
|
@@ -120,6 +120,7 @@ export class Button extends React.Component<ButtonProps, ButtonState> {
|
|
|
120
120
|
{Boolean(this.props.text) && (
|
|
121
121
|
<Text
|
|
122
122
|
color={this.getTextColor(color as Color)}
|
|
123
|
+
font="button"
|
|
123
124
|
inline={this.props.inline}
|
|
124
125
|
size={this.props.size}
|
|
125
126
|
skipLinking
|
package/src/Common.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import {FontSource} from "expo-font";
|
|
1
2
|
import {SyntheticEvent} from "react";
|
|
2
3
|
|
|
3
4
|
import {SelectListOptions} from "./SelectList";
|
|
@@ -679,33 +680,6 @@ export interface FieldWithLabelsProps {
|
|
|
679
680
|
children?: React.ReactNode;
|
|
680
681
|
}
|
|
681
682
|
|
|
682
|
-
export interface FieldProps extends FieldWithLabelsProps {
|
|
683
|
-
name: string;
|
|
684
|
-
label?: string;
|
|
685
|
-
subLabel?: string;
|
|
686
|
-
initialValue?: any;
|
|
687
|
-
handleChange: any;
|
|
688
|
-
// Additional validation
|
|
689
|
-
validate?: (value: any) => boolean;
|
|
690
|
-
validateErrorMessage?: string;
|
|
691
|
-
type?:
|
|
692
|
-
| "boolean"
|
|
693
|
-
| "email"
|
|
694
|
-
| "text"
|
|
695
|
-
| "textarea"
|
|
696
|
-
| "number"
|
|
697
|
-
| "currency"
|
|
698
|
-
| "percent"
|
|
699
|
-
| "select"
|
|
700
|
-
| "password"
|
|
701
|
-
| "url"
|
|
702
|
-
| "date";
|
|
703
|
-
rows?: number;
|
|
704
|
-
options?: SelectListOptions;
|
|
705
|
-
placeholder?: string;
|
|
706
|
-
disabled?: boolean;
|
|
707
|
-
}
|
|
708
|
-
|
|
709
683
|
export interface TextFieldProps extends FieldWithLabelsProps {
|
|
710
684
|
id?: string;
|
|
711
685
|
onChange: OnChangeCallback;
|
package/src/Field.tsx
CHANGED
|
@@ -4,15 +4,40 @@ import moment from "moment-timezone";
|
|
|
4
4
|
import React, {useState} from "react";
|
|
5
5
|
|
|
6
6
|
import {Box} from "./Box";
|
|
7
|
-
import {
|
|
7
|
+
import {FieldWithLabelsProps, TextFieldType} from "./Common";
|
|
8
8
|
import {FieldWithLabels} from "./FieldWithLabels";
|
|
9
|
-
import {SelectList} from "./SelectList";
|
|
9
|
+
import {SelectList, SelectListOptions} from "./SelectList";
|
|
10
10
|
import {Switch} from "./Switch";
|
|
11
|
+
import {Text} from "./Text";
|
|
11
12
|
import {TextArea} from "./TextArea";
|
|
12
13
|
import {TextField} from "./TextField";
|
|
13
14
|
|
|
14
|
-
interface
|
|
15
|
-
|
|
15
|
+
export interface FieldProps extends FieldWithLabelsProps {
|
|
16
|
+
name: string;
|
|
17
|
+
label?: string;
|
|
18
|
+
subLabel?: string;
|
|
19
|
+
initialValue?: any;
|
|
20
|
+
handleChange: any;
|
|
21
|
+
// Additional validation
|
|
22
|
+
validate?: (value: any) => boolean;
|
|
23
|
+
validateErrorMessage?: string;
|
|
24
|
+
type?:
|
|
25
|
+
| "boolean"
|
|
26
|
+
| "email"
|
|
27
|
+
| "text"
|
|
28
|
+
| "textarea"
|
|
29
|
+
| "number"
|
|
30
|
+
| "currency"
|
|
31
|
+
| "percent"
|
|
32
|
+
| "select"
|
|
33
|
+
| "password"
|
|
34
|
+
| "url"
|
|
35
|
+
| "date"
|
|
36
|
+
| "multiselect";
|
|
37
|
+
rows?: number;
|
|
38
|
+
options?: SelectListOptions;
|
|
39
|
+
placeholder?: string;
|
|
40
|
+
disabled?: boolean;
|
|
16
41
|
}
|
|
17
42
|
|
|
18
43
|
/**
|
|
@@ -27,6 +52,7 @@ interface State {
|
|
|
27
52
|
*/
|
|
28
53
|
export function Field(props: FieldProps) {
|
|
29
54
|
const [value, setValue] = useState(props.initialValue || "");
|
|
55
|
+
const [multiselectValue, setMultiselectValue] = useState(props.initialValue ?? []);
|
|
30
56
|
|
|
31
57
|
const handleChange = (newValue: string) => {
|
|
32
58
|
if (props.type === "currency") {
|
|
@@ -48,7 +74,6 @@ export function Field(props: FieldProps) {
|
|
|
48
74
|
};
|
|
49
75
|
|
|
50
76
|
const validate = () => {
|
|
51
|
-
// console.log("VALIDATE", props.validate && props.validate(value));
|
|
52
77
|
if (props.validate && !props.validate(value)) {
|
|
53
78
|
return false;
|
|
54
79
|
}
|
|
@@ -96,6 +121,47 @@ export function Field(props: FieldProps) {
|
|
|
96
121
|
onChange={handleChange}
|
|
97
122
|
/>
|
|
98
123
|
);
|
|
124
|
+
} else if (props.type === "multiselect") {
|
|
125
|
+
if (!props.options) {
|
|
126
|
+
console.error("Field with type=multiselect require options");
|
|
127
|
+
return null;
|
|
128
|
+
}
|
|
129
|
+
return (
|
|
130
|
+
<Box width="100%">
|
|
131
|
+
{props.options.map((o) => (
|
|
132
|
+
<Box key={o.label + o.value} direction="row" justifyContent="between" width="100%">
|
|
133
|
+
<Box flex="shrink" marginRight={2}>
|
|
134
|
+
<Text weight="bold">{o.label}</Text>
|
|
135
|
+
</Box>
|
|
136
|
+
<Box>
|
|
137
|
+
<Switch
|
|
138
|
+
key={o.label + o.value}
|
|
139
|
+
disabled={props.disabled}
|
|
140
|
+
id={props.name}
|
|
141
|
+
name={props.name}
|
|
142
|
+
switched={(multiselectValue ?? []).includes(o.value)}
|
|
143
|
+
onChange={(result) => {
|
|
144
|
+
let newValue;
|
|
145
|
+
if (result) {
|
|
146
|
+
if (multiselectValue.includes(o.value)) {
|
|
147
|
+
console.warn(`Tried to add value that already exists: ${o.value}`);
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
newValue = [...multiselectValue, o.value];
|
|
151
|
+
} else {
|
|
152
|
+
newValue = multiselectValue.filter((v: string) => v !== o.value);
|
|
153
|
+
}
|
|
154
|
+
setMultiselectValue(newValue);
|
|
155
|
+
if (props.handleChange) {
|
|
156
|
+
props.handleChange(props.name, newValue);
|
|
157
|
+
}
|
|
158
|
+
}}
|
|
159
|
+
/>
|
|
160
|
+
</Box>
|
|
161
|
+
</Box>
|
|
162
|
+
))}
|
|
163
|
+
</Box>
|
|
164
|
+
);
|
|
99
165
|
} else if (props.type === "textarea") {
|
|
100
166
|
return (
|
|
101
167
|
<TextArea
|
package/src/Heading.tsx
CHANGED
|
@@ -18,7 +18,7 @@ export class Heading extends React.Component<HeadingProps, {}> {
|
|
|
18
18
|
// if (this.props.bold) {
|
|
19
19
|
// font += "Bold";
|
|
20
20
|
// }
|
|
21
|
-
style.fontFamily = Unifier.theme.
|
|
21
|
+
style.fontFamily = Unifier.theme.titleFont;
|
|
22
22
|
|
|
23
23
|
style.fontSize = this.fontSizes[this.props.size || "md"];
|
|
24
24
|
if (this.props.align) {
|
package/src/TapToEdit.tsx
CHANGED
|
@@ -1,48 +1,118 @@
|
|
|
1
|
-
import React from "react";
|
|
1
|
+
import React, {ReactElement, useState} from "react";
|
|
2
2
|
|
|
3
3
|
import {Box} from "./Box";
|
|
4
4
|
import {Button} from "./Button";
|
|
5
|
-
import {
|
|
5
|
+
import {BoxProps} from "./Common";
|
|
6
|
+
import {Field, FieldProps} from "./Field";
|
|
6
7
|
import {Icon} from "./Icon";
|
|
7
8
|
import {Text} from "./Text";
|
|
8
|
-
import {TextField} from "./TextField";
|
|
9
9
|
|
|
10
|
-
interface
|
|
11
|
-
|
|
10
|
+
export interface TapToEditProps extends Omit<FieldProps, "handleChange"> {
|
|
11
|
+
title: string;
|
|
12
|
+
// Not required if not editable.
|
|
13
|
+
onSave?: (value: any) => void | Promise<void>;
|
|
14
|
+
// Defaults to true
|
|
15
|
+
editable?: boolean;
|
|
16
|
+
// For changing how the non-editing row renders
|
|
17
|
+
rowBoxProps?: Partial<BoxProps>;
|
|
18
|
+
transform?: (value: any) => string;
|
|
19
|
+
fieldComponent?: (setValue: () => void) => ReactElement;
|
|
12
20
|
}
|
|
13
21
|
|
|
14
|
-
export
|
|
15
|
-
|
|
22
|
+
export const TapToEdit = (props: TapToEditProps): ReactElement => {
|
|
23
|
+
const [editing, setEditing] = useState(false);
|
|
24
|
+
const [value, setValue] = useState(props.initialValue);
|
|
16
25
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
<
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
<
|
|
26
|
+
const {title, editable = true, rowBoxProps, transform, fieldComponent, ...fieldProps} = props;
|
|
27
|
+
if (editing) {
|
|
28
|
+
return (
|
|
29
|
+
<Box direction="column" maxWidth="100%" paddingX={3} paddingY={2} width="100%">
|
|
30
|
+
{fieldComponent ? (
|
|
31
|
+
fieldComponent(setValue as any)
|
|
32
|
+
) : (
|
|
33
|
+
<Field
|
|
34
|
+
handleChange={(_: string, val: any): void => setValue(val)}
|
|
35
|
+
label={props.title}
|
|
36
|
+
{...fieldProps}
|
|
37
|
+
/>
|
|
38
|
+
)}
|
|
39
|
+
<Box direction="row">
|
|
40
|
+
<Button
|
|
41
|
+
color="blue"
|
|
42
|
+
inline
|
|
43
|
+
text="Save"
|
|
44
|
+
onClick={async (): Promise<void> => {
|
|
45
|
+
if (!props.onSave) {
|
|
46
|
+
console.error("No onSave provided for editable TapToEdit");
|
|
47
|
+
} else {
|
|
48
|
+
await props.onSave(value);
|
|
49
|
+
}
|
|
50
|
+
setEditing(false);
|
|
51
|
+
}}
|
|
52
|
+
/>
|
|
53
|
+
<Box marginLeft={2}>
|
|
32
54
|
<Button
|
|
33
|
-
color="
|
|
55
|
+
color="red"
|
|
34
56
|
inline
|
|
35
|
-
text="
|
|
36
|
-
onClick={() => {
|
|
37
|
-
|
|
38
|
-
if (this.props.onSubmitEditing) {
|
|
39
|
-
this.props.onSubmitEditing();
|
|
40
|
-
}
|
|
57
|
+
text="Cancel"
|
|
58
|
+
onClick={(): void => {
|
|
59
|
+
setEditing(false);
|
|
41
60
|
}}
|
|
42
61
|
/>
|
|
43
62
|
</Box>
|
|
44
63
|
</Box>
|
|
45
|
-
|
|
64
|
+
</Box>
|
|
65
|
+
);
|
|
66
|
+
} else {
|
|
67
|
+
let displayValue = value;
|
|
68
|
+
// If transform is present, that takes priority
|
|
69
|
+
if (transform) {
|
|
70
|
+
displayValue = transform(value);
|
|
71
|
+
} else {
|
|
72
|
+
// If no transform, try and display the value reasonably.
|
|
73
|
+
if (fieldProps?.type === "boolean") {
|
|
74
|
+
displayValue = value ? "Yes" : "No";
|
|
75
|
+
} else if (fieldProps?.type === "percent") {
|
|
76
|
+
// Prevent floating point errors from showing up by using parseFloat and precision. Pass through parseFloat again
|
|
77
|
+
// to trim off insignificant zeroes.
|
|
78
|
+
displayValue = `${parseFloat(parseFloat(String(value * 100)).toPrecision(7))}%`;
|
|
79
|
+
} else if (fieldProps?.type === "currency") {
|
|
80
|
+
// TODO: support currencies other than USD in Field and related components.
|
|
81
|
+
const formatter = new Intl.NumberFormat("en-US", {
|
|
82
|
+
style: "currency",
|
|
83
|
+
currency: "USD",
|
|
84
|
+
minimumFractionDigits: 2, // (this suffices for whole numbers, but will print 2500.10 as $2,500.1)
|
|
85
|
+
});
|
|
86
|
+
displayValue = formatter.format(value);
|
|
87
|
+
} else if (fieldProps?.type === "multiselect") {
|
|
88
|
+
// ???
|
|
89
|
+
displayValue = value.join(", ");
|
|
90
|
+
}
|
|
46
91
|
}
|
|
92
|
+
return (
|
|
93
|
+
<Box
|
|
94
|
+
direction="row"
|
|
95
|
+
justifyContent="between"
|
|
96
|
+
maxWidth="100%"
|
|
97
|
+
paddingX={3}
|
|
98
|
+
paddingY={2}
|
|
99
|
+
width="100%"
|
|
100
|
+
{...rowBoxProps}
|
|
101
|
+
>
|
|
102
|
+
<Box>
|
|
103
|
+
<Text weight="bold">{title}:</Text>
|
|
104
|
+
</Box>
|
|
105
|
+
<Box direction="row" flex="shrink" marginLeft={2}>
|
|
106
|
+
<Box flex="shrink">
|
|
107
|
+
<Text overflow="breakWord">{displayValue}</Text>
|
|
108
|
+
</Box>
|
|
109
|
+
{editable && (
|
|
110
|
+
<Box marginLeft={2} onClick={(): void => setEditing(true)}>
|
|
111
|
+
<Icon color="darkGray" name="edit" size="lg" />
|
|
112
|
+
</Box>
|
|
113
|
+
)}
|
|
114
|
+
</Box>
|
|
115
|
+
</Box>
|
|
116
|
+
);
|
|
47
117
|
}
|
|
48
|
-
}
|
|
118
|
+
};
|
package/src/Text.tsx
CHANGED
|
@@ -24,7 +24,7 @@ export class Text extends React.Component<TextProps, {}> {
|
|
|
24
24
|
| "accentFont"
|
|
25
25
|
| "accentBoldFont"
|
|
26
26
|
| "titleFont" = "primaryFont";
|
|
27
|
-
if (this.props.font === "primary") {
|
|
27
|
+
if (this.props.font === "primary" || !this.props.font) {
|
|
28
28
|
if (this.props.weight === "bold") {
|
|
29
29
|
font = "primaryBoldFont";
|
|
30
30
|
} else {
|
package/src/Unifier.ts
CHANGED
|
@@ -2,12 +2,18 @@
|
|
|
2
2
|
/* eslint-disable @typescript-eslint/no-empty-function */
|
|
3
3
|
|
|
4
4
|
import AsyncStorage from "@react-native-async-storage/async-storage";
|
|
5
|
+
import * as Font from "expo-font";
|
|
6
|
+
import {FontSource} from "expo-font";
|
|
5
7
|
import {Clipboard, Dimensions, Keyboard, Linking, Platform, Vibration} from "react-native";
|
|
6
8
|
import ReactNativeHapticFeedback from "react-native-haptic-feedback";
|
|
7
9
|
|
|
8
10
|
import {PermissionKind, UnifiedTheme} from "./Common";
|
|
9
11
|
import {requestPermissions} from "./Permissions";
|
|
10
12
|
|
|
13
|
+
function capitalize(string: string) {
|
|
14
|
+
return string.charAt(0).toUpperCase() + string.slice(1);
|
|
15
|
+
}
|
|
16
|
+
|
|
11
17
|
const DEFAULT_FONT = "Cochin";
|
|
12
18
|
const DEFAULT_BOLD_FONT = "Cochin";
|
|
13
19
|
|
|
@@ -92,6 +98,61 @@ const DefaultTheme: UnifiedTheme = {
|
|
|
92
98
|
|
|
93
99
|
export type PlatformOS = "ios" | "android" | "web";
|
|
94
100
|
|
|
101
|
+
const fontKeys = [
|
|
102
|
+
"primaryFont",
|
|
103
|
+
"primaryBoldFont",
|
|
104
|
+
"secondaryFont",
|
|
105
|
+
"secondaryBoldFont",
|
|
106
|
+
"buttonFont",
|
|
107
|
+
"accentFont",
|
|
108
|
+
"accentBoldFont",
|
|
109
|
+
"titleFont",
|
|
110
|
+
];
|
|
111
|
+
|
|
112
|
+
type Luminance = "light" | "lighter" | "dark" | "darker";
|
|
113
|
+
const luminances: Luminance[] = ["lighter", "light", "dark", "darker"];
|
|
114
|
+
|
|
115
|
+
// Changes a color luminance
|
|
116
|
+
export function changeColorLuminance(hex: string, luminanceChange: Luminance) {
|
|
117
|
+
// Validate hex string, strip "#" if present.
|
|
118
|
+
hex = String(hex).replace(/[^0-9a-f]/gi, "");
|
|
119
|
+
if (hex.length === 3) {
|
|
120
|
+
hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];
|
|
121
|
+
} else if (hex.length !== 6) {
|
|
122
|
+
throw new Error(`Invalid color hex: ${hex}`);
|
|
123
|
+
}
|
|
124
|
+
let luminance;
|
|
125
|
+
switch (luminanceChange) {
|
|
126
|
+
case "light":
|
|
127
|
+
luminance = -0.2;
|
|
128
|
+
break;
|
|
129
|
+
case "lighter":
|
|
130
|
+
luminance = -0.33;
|
|
131
|
+
break;
|
|
132
|
+
case "dark":
|
|
133
|
+
luminance = 0.2;
|
|
134
|
+
break;
|
|
135
|
+
case "darker":
|
|
136
|
+
luminance = 0.33;
|
|
137
|
+
break;
|
|
138
|
+
default:
|
|
139
|
+
throw new Error(`Cannot change luminance to ${luminanceChange}`);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
// Convert to decimal and change luminosity
|
|
143
|
+
let rgb = "#";
|
|
144
|
+
for (let i = 0; i < 3; i++) {
|
|
145
|
+
const decimal = parseInt(hex.substr(i * 2, 2), 16);
|
|
146
|
+
const appliedLuminance = Math.round(
|
|
147
|
+
Math.min(Math.max(0, decimal + decimal * luminance), 255)
|
|
148
|
+
).toString(16);
|
|
149
|
+
// 0 pad, if necessary.
|
|
150
|
+
rgb += `00${appliedLuminance}`.substr(appliedLuminance.length);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
return rgb;
|
|
154
|
+
}
|
|
155
|
+
|
|
95
156
|
class UnifierClass {
|
|
96
157
|
private _theme?: Partial<UnifiedTheme>;
|
|
97
158
|
|
|
@@ -107,7 +168,39 @@ class UnifierClass {
|
|
|
107
168
|
return this._dev;
|
|
108
169
|
}
|
|
109
170
|
|
|
171
|
+
private get fontMap() {
|
|
172
|
+
const fontMap: {[id: string]: FontSource} = {};
|
|
173
|
+
for (const key of fontKeys) {
|
|
174
|
+
if (typeof this.theme[key] === "string") {
|
|
175
|
+
fontMap[key] = key;
|
|
176
|
+
} else {
|
|
177
|
+
fontMap[this.theme[key].name] = this.theme[key].source;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
return fontMap;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
// If the theme only has e.g. "primary" set, calculate the primaryLighter, primaryLight, etc based on that color.
|
|
184
|
+
private calculateLuminances(
|
|
185
|
+
theme: Partial<UnifiedTheme>,
|
|
186
|
+
color: "primary" | "secondary" | "accent" | "tertiary"
|
|
187
|
+
) {
|
|
188
|
+
if (!theme[color]) {
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
for (const luminance of luminances) {
|
|
192
|
+
const capitalized = capitalize(luminance);
|
|
193
|
+
if (!theme[`${color}${capitalized}`] && theme[color]) {
|
|
194
|
+
theme[`${color}${capitalized}`] = changeColorLuminance(theme[color] as string, luminance);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
|
|
110
199
|
setTheme(theme: Partial<UnifiedTheme>) {
|
|
200
|
+
Unifier.calculateLuminances(theme, "primary");
|
|
201
|
+
Unifier.calculateLuminances(theme, "secondary");
|
|
202
|
+
Unifier.calculateLuminances(theme, "accent");
|
|
203
|
+
Unifier.calculateLuminances(theme, "tertiary");
|
|
111
204
|
this._theme = theme;
|
|
112
205
|
}
|
|
113
206
|
|
|
@@ -169,6 +262,14 @@ class UnifierClass {
|
|
|
169
262
|
},
|
|
170
263
|
};
|
|
171
264
|
|
|
265
|
+
loadFonts = async () => {
|
|
266
|
+
try {
|
|
267
|
+
await Font.loadAsync(this.fontMap);
|
|
268
|
+
} catch (err) {
|
|
269
|
+
console.error(`[unifier] Fonts failed to load: ${err}`);
|
|
270
|
+
}
|
|
271
|
+
};
|
|
272
|
+
|
|
172
273
|
// tracking: Tracking,
|
|
173
274
|
utils = {
|
|
174
275
|
dismissKeyboard: () => {
|
|
@@ -181,7 +282,7 @@ class UnifierClass {
|
|
|
181
282
|
copyToClipboard: (text: string) => {
|
|
182
283
|
Clipboard.setString(text);
|
|
183
284
|
},
|
|
184
|
-
orientationChange: (callback: (
|
|
285
|
+
orientationChange: (callback: (orientation: "portrait" | "landscape") => void) => {
|
|
185
286
|
Dimensions.addEventListener("change", () => {
|
|
186
287
|
const screen = Dimensions.get("screen");
|
|
187
288
|
const isPortrait = screen.width < screen.height;
|