ferns-ui 0.39.2 → 0.39.3
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/Banner.d.ts +1 -1
- package/dist/Banner.js +2 -2
- package/dist/Banner.js.map +1 -1
- package/dist/Button.js +1 -1
- package/dist/Button.js.map +1 -1
- package/dist/Common.d.ts +24 -5
- package/dist/OpenAPIContext.d.ts +34 -0
- package/dist/OpenAPIContext.js +52 -0
- package/dist/OpenAPIContext.js.map +1 -0
- package/dist/TapToEdit.d.ts +2 -16
- package/dist/TapToEdit.js +24 -11
- package/dist/TapToEdit.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/Banner.tsx +2 -3
- package/src/Button.tsx +1 -0
- package/src/Common.ts +30 -5
- package/src/OpenAPIContext.tsx +100 -0
- package/src/TapToEdit.tsx +42 -44
- package/src/index.tsx +1 -0
package/dist/Banner.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { BannerProps } from "./Common";
|
|
3
3
|
export declare const hideBanner: (id: string) => Promise<void>;
|
|
4
|
-
export declare const Banner: ({ id, text, subtext, color, iconName, textColor, negativeXMargin, shape, type, onClick, }: BannerProps) => React.ReactElement | null;
|
|
4
|
+
export declare const Banner: ({ id, text, subtext, color, iconName, textColor, negativeXMargin, width, shape, type, onClick, }: BannerProps) => React.ReactElement | null;
|
package/dist/Banner.js
CHANGED
|
@@ -11,7 +11,7 @@ export const hideBanner = (id) => {
|
|
|
11
11
|
console.debug(`[banner] Hiding ${getKey(id)} `);
|
|
12
12
|
return Unifier.storage.setItem(getKey(id), "true");
|
|
13
13
|
};
|
|
14
|
-
export const Banner = ({ id, text, subtext, color = "secondaryDark", iconName, textColor = "white", negativeXMargin = 0, shape, type = "dismiss", onClick, }) => {
|
|
14
|
+
export const Banner = ({ id, text, subtext, color = "secondaryDark", iconName, textColor = "white", negativeXMargin = 0, width, shape, type = "dismiss", onClick, }) => {
|
|
15
15
|
// If the banner is permanent, show it immediately.
|
|
16
16
|
const [show, setShow] = useState(type === "permanent");
|
|
17
17
|
// Load seen from async storage.
|
|
@@ -52,7 +52,7 @@ export const Banner = ({ id, text, subtext, color = "secondaryDark", iconName, t
|
|
|
52
52
|
marginLeft: negativeMargin,
|
|
53
53
|
marginRight: negativeMargin,
|
|
54
54
|
},
|
|
55
|
-
}, direction: "row", justifyContent: "between",
|
|
55
|
+
}, direction: "row", justifyContent: "between", paddingX: 3, paddingY: 2, rounding: shape, shadow: true, width: width || Unifier.utils.dimensions().width || "100%", onClick: type === "permanent" ? undefined : dismiss },
|
|
56
56
|
iconName && (React.createElement(Box, { justifyContent: "center", marginRight: 2, width: 32 },
|
|
57
57
|
React.createElement(Icon, { color: textColor, name: iconName, size: "lg" }))),
|
|
58
58
|
React.createElement(Box, { alignItems: "center", direction: "column", flex: "shrink", justifyContent: "center" },
|
package/dist/Banner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Banner.js","sourceRoot":"","sources":["../src/Banner.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Banner.js","sourceRoot":"","sources":["../src/Banner.tsx"],"names":[],"mappings":"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"}
|
package/dist/Button.js
CHANGED
|
@@ -107,7 +107,7 @@ export function Button({ disabled = false, type = "solid", loading: propsLoading
|
|
|
107
107
|
icon !== undefined && (React.createElement(Box, { paddingX: 2 },
|
|
108
108
|
React.createElement(Icon, { color: getTextColor(color), name: icon, prefix: iconPrefix || "far", size: size }))),
|
|
109
109
|
Boolean(children) && children,
|
|
110
|
-
Boolean(text) && (React.createElement(Text, { color: getTextColor(color), font: "button", inline: inline, size: size, skipLinking: true, weight: "bold" }, text)),
|
|
110
|
+
Boolean(text) && (React.createElement(Text, { align: "center", color: getTextColor(color), font: "button", inline: inline, size: size, skipLinking: true, weight: "bold" }, text)),
|
|
111
111
|
Boolean(loading) && (React.createElement(Box, { marginLeft: 2 },
|
|
112
112
|
React.createElement(ActivityIndicator, { color: getTextColor(color), size: "small" })))),
|
|
113
113
|
Boolean(withConfirmation) && renderConfirmation()));
|
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,EAAE,EAAC,UAAU,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAClD,OAAO,EAAC,iBAAiB,EAAE,SAAS,EAAE,IAAI,EAAC,MAAM,cAAc,CAAC;AAEhE,OAAO,EAAC,GAAG,EAAC,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAC,YAAY,EAAC,MAAM,SAAS,CAAC;AACrC,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAClC,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAElC,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,GAAG;IACd,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;CACP,CAAC;AAEF,MAAM,UAAU,MAAM,CAAC,EACrB,QAAQ,GAAG,KAAK,EAChB,IAAI,GAAG,OAAO,EACd,OAAO,EAAE,YAAY,EACrB,QAAQ,EACR,IAAI,EACJ,MAAM,GAAG,KAAK,EACd,IAAI,EACJ,UAAU,EACV,IAAI,GAAG,IAAI,EACX,OAAO,EACP,KAAK,GAAG,MAAM,EACd,gBAAgB,GAAG,KAAK,EACxB,gBAAgB,GAAG,oCAAoC,EACvD,mBAAmB,GAAG,SAAS,EAC/B,KAAK,GAAG,SAAS,EACjB,MAAM,EACN,OAAO,GACK;IACZ,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;IACrD,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChE,MAAM,EAAC,KAAK,EAAC,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IAEzC,MAAM,kBAAkB,GAAG,CAAC,eAAuB,EAAU,EAAE;QAC7D,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC3C,OAAO,aAAa,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,OAAO,KAAK,CAAC,eAAqC,CAAC,CAAC;QACtD,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,CAAC,SAAgB,EAAS,EAAE;QAC/C,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC3C,OAAO,SAAS,CAAC;QACnB,CAAC;aAAM,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YACnC,OAAO,UAAU,CAAC;QACpB,CAAC;aAAM,CAAC;YACN,OAAO,eAAe,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC;QAC/C,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,CAAC,WAAmB,EAAU,EAAE;QACrD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,KAAK,CAAC,YAAY,CAAC,WAAoB,CAAC,CAAC,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,OAAO,aAAa,CAAC;QACvB,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACrB,KAAK,GAAG,WAAW,CAAC;IACtB,CAAC;IAED,MAAM,kBAAkB,GAAG,GAAG,EAAE;QAC9B,OAAO,CACL,oBAAC,KAAK,IACJ,OAAO,EAAE,mBAAmB,EAC5B,oBAAoB,EAAE,GAAG,EAAE;gBACzB,OAAO,EAAE,CAAC;gBACV,mBAAmB,CAAC,KAAK,CAAC,CAAC;YAC7B,CAAC,EACD,iBAAiB,EAAC,SAAS,EAC3B,sBAAsB,EAAE,GAAS,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAC9D,mBAAmB,EAAC,QAAQ,EAC5B,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,gBAAgB,EACzB,SAAS,EAAE,GAAS,EAAE;gBACpB,mBAAmB,CAAC,KAAK,CAAC,CAAC;YAC7B,CAAC;YAED,oBAAC,IAAI,QAAE,gBAAgB,CAAQ,CACzB,CACT,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,OAAO,CACL,oBAAC,IAAI;YACH,oBAAC,SAAS,IACR,QAAQ,EAAE,QAAQ,IAAI,OAAO,EAC7B,KAAK,EAAE;oBACL,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;oBAClD,MAAM,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC;oBAC7B,eAAe,EAAE,kBAAkB,CAAC,KAAK,CAAC;oBAC1C,+CAA+C;oBAC/C,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC1B,4BAA4B;oBAC5B,UAAU,EAAE,QAAQ;oBACpB,cAAc,EAAE,QAAQ;oBACxB,YAAY,EAAE,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACxC,WAAW,EAAE,cAAc,CAAC,KAAK,CAAC;oBAClC,WAAW,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACvC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBAC3B,aAAa,EAAE,KAAK;oBACpB,iBAAiB,EAAE,CAAC,GAAG,CAAC;iBACzB,EACD,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,QAAQ,CACf,KAAK,IAAI,EAAE;oBACT,MAAM,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;oBAC7B,UAAU,CAAC,IAAI,CAAC,CAAC;oBACjB,IAAI,CAAC;wBACH,IAAI,gBAAgB,IAAI,CAAC,gBAAgB,EAAE,CAAC;4BAC1C,mBAAmB,CAAC,IAAI,CAAC,CAAC;wBAC5B,CAAC;6BAAM,IAAI,OAAO,EAAE,CAAC;4BACnB,MAAM,OAAO,EAAE,CAAC;wBAClB,CAAC;oBACH,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACX,UAAU,CAAC,KAAK,CAAC,CAAC;wBAClB,MAAM,CAAC,CAAC;oBACV,CAAC;oBACD,UAAU,CAAC,KAAK,CAAC,CAAC;gBACpB,CAAC,EACD,GAAG,EACH,EAAC,OAAO,EAAE,IAAI,EAAC,CAChB;gBAEA,IAAI,KAAK,SAAS,IAAI,CACrB,oBAAC,GAAG,IAAC,QAAQ,EAAE,CAAC;oBACd,oBAAC,IAAI,IACH,KAAK,EAAE,YAAY,CAAC,KAAc,CAAC,EACnC,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,UAAU,IAAI,KAAK,EAC3B,IAAI,EAAE,IAAI,GACV,CACE,CACP;gBACA,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ;gBAC7B,OAAO,CAAC,IAAI,CAAC,IAAI,CAChB,oBAAC,IAAI,IACH,KAAK,EAAE,YAAY,CAAC,KAAc,CAAC,EACnC,IAAI,EAAC,QAAQ,EACb,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,EACV,WAAW,QACX,MAAM,EAAC,MAAM,IAEZ,IAAI,CACA,CACR;gBACA,OAAO,CAAC,OAAO,CAAC,IAAI,CACnB,oBAAC,GAAG,IAAC,UAAU,EAAE,CAAC;oBAChB,oBAAC,iBAAiB,IAAC,KAAK,EAAE,YAAY,CAAC,KAAc,CAAC,EAAE,IAAI,EAAC,OAAO,GAAG,CACnE,CACP,CACS;YACX,OAAO,CAAC,gBAAgB,CAAC,IAAI,kBAAkB,EAAE,CAC7C,CACR,CAAC;IACJ,CAAC,CAAC;IAEF,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CACL,oBAAC,OAAO,IAAC,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,IAChE,YAAY,EAAE,CACP,CACX,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,YAAY,EAAE,CAAC;IACxB,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"Button.js","sourceRoot":"","sources":["../src/Button.tsx"],"names":[],"mappings":"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"}
|
package/dist/Common.d.ts
CHANGED
|
@@ -858,16 +858,17 @@ export interface BadgeProps {
|
|
|
858
858
|
}
|
|
859
859
|
export interface BannerProps {
|
|
860
860
|
id: string;
|
|
861
|
+
color?: BoxColor;
|
|
861
862
|
dismissible?: boolean;
|
|
862
|
-
text: string;
|
|
863
|
-
subtext?: string;
|
|
864
863
|
iconName?: IconName;
|
|
865
|
-
color?: BoxColor;
|
|
866
|
-
textColor?: TextColor;
|
|
867
864
|
negativeXMargin?: number;
|
|
865
|
+
onClick?: () => void;
|
|
868
866
|
shape?: Rounding;
|
|
867
|
+
subtext?: string;
|
|
868
|
+
text: string;
|
|
869
|
+
textColor?: TextColor;
|
|
869
870
|
type?: "dismiss" | "action" | "permanent";
|
|
870
|
-
|
|
871
|
+
width?: number | string;
|
|
871
872
|
}
|
|
872
873
|
export interface BodyProps {
|
|
873
874
|
scroll?: boolean;
|
|
@@ -1201,4 +1202,22 @@ export interface WithLabelProps {
|
|
|
1201
1202
|
labelPlacement?: "before" | "after";
|
|
1202
1203
|
labelSize?: TextSize;
|
|
1203
1204
|
}
|
|
1205
|
+
export interface TapToEditProps extends Omit<FieldProps, "onChange" | "value"> {
|
|
1206
|
+
title: string;
|
|
1207
|
+
value: any;
|
|
1208
|
+
setValue?: (value: any) => void;
|
|
1209
|
+
onSave?: (value: any) => void | Promise<void>;
|
|
1210
|
+
editable?: boolean;
|
|
1211
|
+
isEditing?: boolean;
|
|
1212
|
+
rowBoxProps?: Partial<BoxProps>;
|
|
1213
|
+
transform?: (value: any) => string;
|
|
1214
|
+
fieldComponent?: (setValue: () => void) => ReactElement;
|
|
1215
|
+
withConfirmation?: boolean;
|
|
1216
|
+
confirmationText?: string;
|
|
1217
|
+
confirmationHeading?: string;
|
|
1218
|
+
description?: string;
|
|
1219
|
+
openApiModel?: string;
|
|
1220
|
+
openApiField?: string;
|
|
1221
|
+
showDescriptionAsTooltip?: boolean;
|
|
1222
|
+
}
|
|
1204
1223
|
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
interface OpenAPISpec {
|
|
3
|
+
paths: {
|
|
4
|
+
[key: string]: any;
|
|
5
|
+
};
|
|
6
|
+
}
|
|
7
|
+
export type ModelFieldConfig = any;
|
|
8
|
+
export type OpenApiPropertyType = "string" | "number" | "boolean" | "array" | "object";
|
|
9
|
+
export type OpenApiProperty = {
|
|
10
|
+
type?: OpenApiPropertyType;
|
|
11
|
+
format?: string;
|
|
12
|
+
properties?: OpenApiProperty;
|
|
13
|
+
items?: OpenApiProperty[];
|
|
14
|
+
description?: string;
|
|
15
|
+
};
|
|
16
|
+
export type ModelFields = {
|
|
17
|
+
type: "object" | "array";
|
|
18
|
+
required: string[];
|
|
19
|
+
properties: {
|
|
20
|
+
[name: string]: OpenApiProperty;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
interface OpenAPIContextType {
|
|
24
|
+
spec: OpenAPISpec | null;
|
|
25
|
+
getModelFields: (modelName: string) => ModelFields | null;
|
|
26
|
+
getModelField: (modelName: string, field: string) => OpenApiProperty;
|
|
27
|
+
}
|
|
28
|
+
interface OpenAPIProviderProps {
|
|
29
|
+
children: React.ReactElement;
|
|
30
|
+
specUrl?: string;
|
|
31
|
+
}
|
|
32
|
+
export declare function OpenAPIProvider({ children, specUrl }: OpenAPIProviderProps): React.ReactElement;
|
|
33
|
+
export declare const useOpenAPISpec: () => OpenAPIContextType;
|
|
34
|
+
export {};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import camelCase from "lodash/camelCase";
|
|
2
|
+
import React, { createContext, useContext, useEffect, useState } from "react";
|
|
3
|
+
const OpenAPIContext = createContext(null);
|
|
4
|
+
export function OpenAPIProvider({ children, specUrl }) {
|
|
5
|
+
const [spec, setSpec] = useState(null);
|
|
6
|
+
const getModelFields = (modelName) => {
|
|
7
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
8
|
+
const modelPath = `/${camelCase(modelName.replace(/\s/g, ""))}/`;
|
|
9
|
+
const rootConfig = (_a = spec === null || spec === void 0 ? void 0 : spec.paths) === null || _a === void 0 ? void 0 : _a[modelPath];
|
|
10
|
+
if (!rootConfig) {
|
|
11
|
+
if ((spec === null || spec === void 0 ? void 0 : spec.paths) && modelName) {
|
|
12
|
+
console.warn(`No OpenAPI model found for ${modelName}`);
|
|
13
|
+
}
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
const items = (_j = (_h = (_g = (_f = (_e = (_d = (_c = (_b = rootConfig === null || rootConfig === void 0 ? void 0 : rootConfig.get) === null || _b === void 0 ? void 0 : _b.responses) === null || _c === void 0 ? void 0 : _c["200"]) === null || _d === void 0 ? void 0 : _d.content) === null || _e === void 0 ? void 0 : _e["application/json"]) === null || _f === void 0 ? void 0 : _f.schema) === null || _g === void 0 ? void 0 : _g.properties) === null || _h === void 0 ? void 0 : _h.data) === null || _j === void 0 ? void 0 : _j.items;
|
|
17
|
+
return items;
|
|
18
|
+
};
|
|
19
|
+
const getModelField = (modelName, fieldName) => {
|
|
20
|
+
var _a, _b;
|
|
21
|
+
const fields = getModelFields(modelName);
|
|
22
|
+
const dotFields = fieldName.split(".");
|
|
23
|
+
let field = (_a = fields === null || fields === void 0 ? void 0 : fields.properties) === null || _a === void 0 ? void 0 : _a[dotFields[0]];
|
|
24
|
+
if (!field && fieldName && (fields === null || fields === void 0 ? void 0 : fields.properties)) {
|
|
25
|
+
console.warn(`No OpenAPI field found for ${modelName}:${fieldName}`);
|
|
26
|
+
}
|
|
27
|
+
for (const dotField of dotFields.slice(1)) {
|
|
28
|
+
field = (_b = field === null || field === void 0 ? void 0 : field.properties) === null || _b === void 0 ? void 0 : _b[dotField];
|
|
29
|
+
}
|
|
30
|
+
return field;
|
|
31
|
+
};
|
|
32
|
+
useEffect(() => {
|
|
33
|
+
if (!specUrl) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
fetch(specUrl)
|
|
37
|
+
.then(async (response) => {
|
|
38
|
+
const data = (await response.json());
|
|
39
|
+
setSpec(data);
|
|
40
|
+
})
|
|
41
|
+
.catch((err) => console.error(`Error fetching OpenAPI spec: ${err}`));
|
|
42
|
+
}, [specUrl]);
|
|
43
|
+
return (React.createElement(OpenAPIContext.Provider, { value: { spec, getModelFields, getModelField } }, children));
|
|
44
|
+
}
|
|
45
|
+
export const useOpenAPISpec = () => {
|
|
46
|
+
const context = useContext(OpenAPIContext);
|
|
47
|
+
if (!context) {
|
|
48
|
+
throw new Error("useOpenAPISpec must be used within an OpenAPIProvider");
|
|
49
|
+
}
|
|
50
|
+
return context;
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=OpenAPIContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenAPIContext.js","sourceRoot":"","sources":["../src/OpenAPIContext.tsx"],"names":[],"mappings":"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"}
|
package/dist/TapToEdit.d.ts
CHANGED
|
@@ -1,18 +1,4 @@
|
|
|
1
1
|
import { ReactElement } from "react";
|
|
2
|
-
import {
|
|
2
|
+
import { TapToEditProps } from "./Common";
|
|
3
3
|
export declare function formatAddress(address: any, asString?: boolean): string;
|
|
4
|
-
export
|
|
5
|
-
title: string;
|
|
6
|
-
value: any;
|
|
7
|
-
setValue?: (value: any) => void;
|
|
8
|
-
onSave?: (value: any) => void | Promise<void>;
|
|
9
|
-
editable?: boolean;
|
|
10
|
-
isEditing?: boolean;
|
|
11
|
-
rowBoxProps?: Partial<BoxProps>;
|
|
12
|
-
transform?: (value: any) => string;
|
|
13
|
-
fieldComponent?: (setValue: () => void) => ReactElement;
|
|
14
|
-
withConfirmation?: boolean;
|
|
15
|
-
confirmationText?: string;
|
|
16
|
-
confirmationHeading?: string;
|
|
17
|
-
}
|
|
18
|
-
export declare const TapToEdit: ({ value, setValue, placeholder, title, onSave, editable, isEditing, rowBoxProps, transform, fieldComponent, withConfirmation, confirmationText, confirmationHeading, ...fieldProps }: TapToEditProps) => ReactElement;
|
|
4
|
+
export declare const TapToEdit: ({ value, setValue, placeholder, title, onSave, editable, isEditing, rowBoxProps, transform, fieldComponent, withConfirmation, confirmationText, confirmationHeading, description: propsDescription, openApiModel, openApiField, showDescriptionAsTooltip, ...fieldProps }: TapToEditProps) => ReactElement;
|
package/dist/TapToEdit.js
CHANGED
|
@@ -15,7 +15,9 @@ import { Box } from "./Box";
|
|
|
15
15
|
import { Button } from "./Button";
|
|
16
16
|
import { Field } from "./Field";
|
|
17
17
|
import { Icon } from "./Icon";
|
|
18
|
+
import { useOpenAPISpec } from "./OpenAPIContext";
|
|
18
19
|
import { Text } from "./Text";
|
|
20
|
+
import { Tooltip } from "./Tooltip";
|
|
19
21
|
export function formatAddress(address, asString = false) {
|
|
20
22
|
var _a, _b, _c, _d;
|
|
21
23
|
let city = "";
|
|
@@ -42,16 +44,21 @@ export function formatAddress(address, asString = false) {
|
|
|
42
44
|
}
|
|
43
45
|
}
|
|
44
46
|
export const TapToEdit = (_a) => {
|
|
45
|
-
var _b;
|
|
46
|
-
var { value, setValue, placeholder, title, onSave, editable = true, isEditing = false, rowBoxProps, transform, fieldComponent, withConfirmation = false, confirmationText = "Are you sure you want to save your changes?", confirmationHeading = "Confirm" } = _a, fieldProps = __rest(_a, ["value", "setValue", "placeholder", "title", "onSave", "editable", "isEditing", "rowBoxProps", "transform", "fieldComponent", "withConfirmation", "confirmationText", "confirmationHeading"]);
|
|
47
|
+
var _b, _c;
|
|
48
|
+
var { value, setValue, placeholder, title, onSave, editable = true, isEditing = false, rowBoxProps, transform, fieldComponent, withConfirmation = false, confirmationText = "Are you sure you want to save your changes?", confirmationHeading = "Confirm", description: propsDescription, openApiModel, openApiField, showDescriptionAsTooltip = false } = _a, fieldProps = __rest(_a, ["value", "setValue", "placeholder", "title", "onSave", "editable", "isEditing", "rowBoxProps", "transform", "fieldComponent", "withConfirmation", "confirmationText", "confirmationHeading", "description", "openApiModel", "openApiField", "showDescriptionAsTooltip"]);
|
|
47
49
|
const [editing, setEditing] = useState(false);
|
|
48
50
|
const [initialValue] = useState(value);
|
|
51
|
+
const { getModelField } = useOpenAPISpec();
|
|
52
|
+
let description = propsDescription;
|
|
53
|
+
if (!description && openApiModel && openApiField) {
|
|
54
|
+
description = (_b = getModelField(openApiModel, openApiField)) === null || _b === void 0 ? void 0 : _b.description;
|
|
55
|
+
}
|
|
49
56
|
if (editable && !setValue) {
|
|
50
57
|
throw new Error("setValue is required if editable is true");
|
|
51
58
|
}
|
|
52
59
|
if (editable && (editing || isEditing)) {
|
|
53
60
|
return (React.createElement(Box, { direction: "column" },
|
|
54
|
-
fieldComponent ? (fieldComponent(setValue)) : (React.createElement(Field, Object.assign({ label: title, placeholder: placeholder, value: value, onChange: setValue }, fieldProps))),
|
|
61
|
+
fieldComponent ? (fieldComponent(setValue)) : (React.createElement(Field, Object.assign({ helperText: description, label: title, placeholder: placeholder, value: value, onChange: setValue }, fieldProps))),
|
|
55
62
|
editing && !isEditing && (React.createElement(Box, { direction: "row" },
|
|
56
63
|
React.createElement(Button, { color: "blue", confirmationHeading: confirmationHeading, confirmationText: confirmationText, inline: true, text: "Save", withConfirmation: withConfirmation, onClick: async () => {
|
|
57
64
|
if (!onSave) {
|
|
@@ -103,7 +110,7 @@ export const TapToEdit = (_a) => {
|
|
|
103
110
|
// Show only the domain, full links are likely too long.
|
|
104
111
|
try {
|
|
105
112
|
const url = new URL(value);
|
|
106
|
-
displayValue = (
|
|
113
|
+
displayValue = (_c = url === null || url === void 0 ? void 0 : url.hostname) !== null && _c !== void 0 ? _c : value;
|
|
107
114
|
}
|
|
108
115
|
catch (e) {
|
|
109
116
|
// Don't print an error message for empty values.
|
|
@@ -121,17 +128,23 @@ export const TapToEdit = (_a) => {
|
|
|
121
128
|
if ((fieldProps === null || fieldProps === void 0 ? void 0 : fieldProps.type) === "url") {
|
|
122
129
|
await Linking.openURL(value);
|
|
123
130
|
}
|
|
131
|
+
else if ((fieldProps === null || fieldProps === void 0 ? void 0 : fieldProps.type) === "address") {
|
|
132
|
+
await Linking.openURL(`https://www.google.com/maps/search/?api=1&query=${encodeURIComponent(formatAddress(value, true))}`);
|
|
133
|
+
}
|
|
124
134
|
};
|
|
125
|
-
|
|
126
|
-
|
|
135
|
+
const isClickable = (fieldProps === null || fieldProps === void 0 ? void 0 : fieldProps.type) === "url" || (fieldProps === null || fieldProps === void 0 ? void 0 : fieldProps.type) === "address";
|
|
136
|
+
const renderTitleDescription = () => {
|
|
137
|
+
return (React.createElement(Box, { flex: "grow" },
|
|
127
138
|
React.createElement(Text, { weight: "bold" },
|
|
128
139
|
title,
|
|
129
140
|
":"),
|
|
130
|
-
(
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
141
|
+
Boolean(description && !showDescriptionAsTooltip) && React.createElement(Text, null, description)));
|
|
142
|
+
};
|
|
143
|
+
return (React.createElement(Box, Object.assign({ direction: "row", justifyContent: "between", paddingX: 3, paddingY: 2, width: "100%" }, rowBoxProps),
|
|
144
|
+
showDescriptionAsTooltip ? (React.createElement(Tooltip, { idealDirection: "top", text: description }, renderTitleDescription())) : (renderTitleDescription()),
|
|
145
|
+
React.createElement(Box, { direction: "row", justifyContent: "start", marginLeft: 2 },
|
|
146
|
+
React.createElement(Box, { justifyContent: "start", onClick: isClickable ? openLink : undefined },
|
|
147
|
+
React.createElement(Text, { align: "right", underline: isClickable }, displayValue)),
|
|
135
148
|
editable && (React.createElement(Box, { marginLeft: 2, onClick: () => setEditing(true) },
|
|
136
149
|
React.createElement(Icon, { color: "darkGray", name: "edit", prefix: "far", size: "md" }))))));
|
|
137
150
|
}
|
package/dist/TapToEdit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TapToEdit.js","sourceRoot":"","sources":["../src/TapToEdit.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAe,QAAQ,EAAC,MAAM,OAAO,CAAC;AACpD,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAC;AAErC,OAAO,EAAC,GAAG,EAAC,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAEhC,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"TapToEdit.js","sourceRoot":"","sources":["../src/TapToEdit.tsx"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -34,6 +34,7 @@ export * from "./MobileAddressAutoComplete";
|
|
|
34
34
|
export * from "./Modal";
|
|
35
35
|
export * from "./ModalSheet";
|
|
36
36
|
export * from "./NumberPickerActionSheet";
|
|
37
|
+
export * from "./OpenAPIContext";
|
|
37
38
|
export * from "./Page";
|
|
38
39
|
export * from "./Pill";
|
|
39
40
|
export * from "./ProgressBar";
|
package/dist/index.js
CHANGED
|
@@ -34,6 +34,7 @@ export * from "./MobileAddressAutoComplete";
|
|
|
34
34
|
export * from "./Modal";
|
|
35
35
|
export * from "./ModalSheet";
|
|
36
36
|
export * from "./NumberPickerActionSheet";
|
|
37
|
+
export * from "./OpenAPIContext";
|
|
37
38
|
export * from "./Page";
|
|
38
39
|
export * from "./Pill";
|
|
39
40
|
export * from "./ProgressBar";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC"}
|
package/package.json
CHANGED
package/src/Banner.tsx
CHANGED
|
@@ -24,6 +24,7 @@ export const Banner = ({
|
|
|
24
24
|
iconName,
|
|
25
25
|
textColor = "white",
|
|
26
26
|
negativeXMargin = 0,
|
|
27
|
+
width,
|
|
27
28
|
shape,
|
|
28
29
|
type = "dismiss",
|
|
29
30
|
onClick,
|
|
@@ -101,13 +102,11 @@ export const Banner = ({
|
|
|
101
102
|
}}
|
|
102
103
|
direction="row"
|
|
103
104
|
justifyContent="between"
|
|
104
|
-
marginBottom={3}
|
|
105
|
-
marginTop={3}
|
|
106
105
|
paddingX={3}
|
|
107
106
|
paddingY={2}
|
|
108
107
|
rounding={shape}
|
|
109
108
|
shadow
|
|
110
|
-
width={Unifier.utils.dimensions().width || "100%"}
|
|
109
|
+
width={width || Unifier.utils.dimensions().width || "100%"}
|
|
111
110
|
onClick={type === "permanent" ? undefined : dismiss}
|
|
112
111
|
>
|
|
113
112
|
{iconName && (
|
package/src/Button.tsx
CHANGED
package/src/Common.ts
CHANGED
|
@@ -2598,16 +2598,17 @@ export interface BadgeProps {
|
|
|
2598
2598
|
|
|
2599
2599
|
export interface BannerProps {
|
|
2600
2600
|
id: string;
|
|
2601
|
+
color?: BoxColor;
|
|
2601
2602
|
dismissible?: boolean;
|
|
2602
|
-
text: string;
|
|
2603
|
-
subtext?: string;
|
|
2604
2603
|
iconName?: IconName;
|
|
2605
|
-
color?: BoxColor;
|
|
2606
|
-
textColor?: TextColor;
|
|
2607
2604
|
negativeXMargin?: number;
|
|
2605
|
+
onClick?: () => void;
|
|
2608
2606
|
shape?: Rounding;
|
|
2607
|
+
subtext?: string;
|
|
2608
|
+
text: string;
|
|
2609
|
+
textColor?: TextColor;
|
|
2609
2610
|
type?: "dismiss" | "action" | "permanent";
|
|
2610
|
-
|
|
2611
|
+
width?: number | string;
|
|
2611
2612
|
}
|
|
2612
2613
|
|
|
2613
2614
|
export interface BodyProps {
|
|
@@ -3008,3 +3009,27 @@ export interface WithLabelProps {
|
|
|
3008
3009
|
labelPlacement?: "before" | "after";
|
|
3009
3010
|
labelSize?: TextSize;
|
|
3010
3011
|
}
|
|
3012
|
+
|
|
3013
|
+
export interface TapToEditProps extends Omit<FieldProps, "onChange" | "value"> {
|
|
3014
|
+
title: string;
|
|
3015
|
+
value: any;
|
|
3016
|
+
// Not required if not editable.
|
|
3017
|
+
setValue?: (value: any) => void;
|
|
3018
|
+
// Not required if not editable.
|
|
3019
|
+
onSave?: (value: any) => void | Promise<void>;
|
|
3020
|
+
// Defaults to true
|
|
3021
|
+
editable?: boolean;
|
|
3022
|
+
// enable edit mode from outside the component
|
|
3023
|
+
isEditing?: boolean;
|
|
3024
|
+
// For changing how the non-editing row renders
|
|
3025
|
+
rowBoxProps?: Partial<BoxProps>;
|
|
3026
|
+
transform?: (value: any) => string;
|
|
3027
|
+
fieldComponent?: (setValue: () => void) => ReactElement;
|
|
3028
|
+
withConfirmation?: boolean;
|
|
3029
|
+
confirmationText?: string;
|
|
3030
|
+
confirmationHeading?: string;
|
|
3031
|
+
description?: string;
|
|
3032
|
+
openApiModel?: string;
|
|
3033
|
+
openApiField?: string;
|
|
3034
|
+
showDescriptionAsTooltip?: boolean;
|
|
3035
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import camelCase from "lodash/camelCase";
|
|
2
|
+
import React, {createContext, useContext, useEffect, useState} from "react";
|
|
3
|
+
|
|
4
|
+
interface OpenAPISpec {
|
|
5
|
+
paths: {
|
|
6
|
+
[key: string]: any;
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export type ModelFieldConfig = any;
|
|
11
|
+
|
|
12
|
+
export type OpenApiPropertyType = "string" | "number" | "boolean" | "array" | "object";
|
|
13
|
+
export type OpenApiProperty = {
|
|
14
|
+
type?: OpenApiPropertyType;
|
|
15
|
+
format?: string;
|
|
16
|
+
properties?: OpenApiProperty;
|
|
17
|
+
items?: OpenApiProperty[];
|
|
18
|
+
description?: string;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export type ModelFields = {
|
|
22
|
+
type: "object" | "array";
|
|
23
|
+
required: string[];
|
|
24
|
+
properties: {[name: string]: OpenApiProperty};
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
interface OpenAPIContextType {
|
|
28
|
+
spec: OpenAPISpec | null;
|
|
29
|
+
getModelFields: (modelName: string) => ModelFields | null;
|
|
30
|
+
getModelField: (modelName: string, field: string) => OpenApiProperty;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const OpenAPIContext = createContext<OpenAPIContextType | null>(null);
|
|
34
|
+
|
|
35
|
+
interface OpenAPIProviderProps {
|
|
36
|
+
children: React.ReactElement;
|
|
37
|
+
specUrl?: string;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export function OpenAPIProvider({children, specUrl}: OpenAPIProviderProps): React.ReactElement {
|
|
41
|
+
const [spec, setSpec] = useState<OpenAPISpec | null>(null);
|
|
42
|
+
|
|
43
|
+
const getModelFields = (modelName: string): ModelFields | null => {
|
|
44
|
+
const modelPath = `/${camelCase(modelName.replace(/\s/g, ""))}/`;
|
|
45
|
+
const rootConfig = spec?.paths?.[modelPath];
|
|
46
|
+
if (!rootConfig) {
|
|
47
|
+
if (spec?.paths && modelName) {
|
|
48
|
+
console.warn(`No OpenAPI model found for ${modelName}`);
|
|
49
|
+
}
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const items =
|
|
54
|
+
rootConfig?.get?.responses?.["200"]?.content?.["application/json"]?.schema?.properties?.data
|
|
55
|
+
?.items;
|
|
56
|
+
return items;
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
const getModelField = (modelName: string, fieldName: string): ModelFieldConfig => {
|
|
60
|
+
const fields = getModelFields(modelName);
|
|
61
|
+
const dotFields = fieldName.split(".");
|
|
62
|
+
|
|
63
|
+
let field = fields?.properties?.[dotFields[0]];
|
|
64
|
+
if (!field && fieldName && fields?.properties) {
|
|
65
|
+
console.warn(`No OpenAPI field found for ${modelName}:${fieldName}`);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
for (const dotField of dotFields.slice(1)) {
|
|
69
|
+
field = field?.properties?.[dotField];
|
|
70
|
+
}
|
|
71
|
+
return field;
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
useEffect((): void => {
|
|
75
|
+
if (!specUrl) {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
fetch(specUrl)
|
|
80
|
+
.then(async (response) => {
|
|
81
|
+
const data = (await response.json()) as OpenAPISpec;
|
|
82
|
+
setSpec(data);
|
|
83
|
+
})
|
|
84
|
+
.catch((err) => console.error(`Error fetching OpenAPI spec: ${err}`));
|
|
85
|
+
}, [specUrl]);
|
|
86
|
+
|
|
87
|
+
return (
|
|
88
|
+
<OpenAPIContext.Provider value={{spec, getModelFields, getModelField}}>
|
|
89
|
+
{children}
|
|
90
|
+
</OpenAPIContext.Provider>
|
|
91
|
+
);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export const useOpenAPISpec = () => {
|
|
95
|
+
const context = useContext(OpenAPIContext);
|
|
96
|
+
if (!context) {
|
|
97
|
+
throw new Error("useOpenAPISpec must be used within an OpenAPIProvider");
|
|
98
|
+
}
|
|
99
|
+
return context;
|
|
100
|
+
};
|
package/src/TapToEdit.tsx
CHANGED
|
@@ -3,10 +3,12 @@ import {Linking} from "react-native";
|
|
|
3
3
|
|
|
4
4
|
import {Box} from "./Box";
|
|
5
5
|
import {Button} from "./Button";
|
|
6
|
-
import {
|
|
6
|
+
import {TapToEditProps} from "./Common";
|
|
7
7
|
import {Field} from "./Field";
|
|
8
8
|
import {Icon} from "./Icon";
|
|
9
|
+
import {useOpenAPISpec} from "./OpenAPIContext";
|
|
9
10
|
import {Text} from "./Text";
|
|
11
|
+
import {Tooltip} from "./Tooltip";
|
|
10
12
|
|
|
11
13
|
export function formatAddress(address: any, asString = false): string {
|
|
12
14
|
let city = "";
|
|
@@ -46,26 +48,6 @@ export function formatAddress(address: any, asString = false): string {
|
|
|
46
48
|
}
|
|
47
49
|
}
|
|
48
50
|
|
|
49
|
-
export interface TapToEditProps extends Omit<FieldProps, "onChange" | "value"> {
|
|
50
|
-
title: string;
|
|
51
|
-
value: any;
|
|
52
|
-
// Not required if not editable.
|
|
53
|
-
setValue?: (value: any) => void;
|
|
54
|
-
// Not required if not editable.
|
|
55
|
-
onSave?: (value: any) => void | Promise<void>;
|
|
56
|
-
// Defaults to true
|
|
57
|
-
editable?: boolean;
|
|
58
|
-
// enable edit mode from outside the component
|
|
59
|
-
isEditing?: boolean;
|
|
60
|
-
// For changing how the non-editing row renders
|
|
61
|
-
rowBoxProps?: Partial<BoxProps>;
|
|
62
|
-
transform?: (value: any) => string;
|
|
63
|
-
fieldComponent?: (setValue: () => void) => ReactElement;
|
|
64
|
-
withConfirmation?: boolean;
|
|
65
|
-
confirmationText?: string;
|
|
66
|
-
confirmationHeading?: string;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
51
|
export const TapToEdit = ({
|
|
70
52
|
value,
|
|
71
53
|
setValue,
|
|
@@ -80,10 +62,20 @@ export const TapToEdit = ({
|
|
|
80
62
|
withConfirmation = false,
|
|
81
63
|
confirmationText = "Are you sure you want to save your changes?",
|
|
82
64
|
confirmationHeading = "Confirm",
|
|
65
|
+
description: propsDescription,
|
|
66
|
+
openApiModel,
|
|
67
|
+
openApiField,
|
|
68
|
+
showDescriptionAsTooltip = false,
|
|
83
69
|
...fieldProps
|
|
84
70
|
}: TapToEditProps): ReactElement => {
|
|
85
71
|
const [editing, setEditing] = useState(false);
|
|
86
72
|
const [initialValue] = useState(value);
|
|
73
|
+
const {getModelField} = useOpenAPISpec();
|
|
74
|
+
|
|
75
|
+
let description: string | undefined = propsDescription;
|
|
76
|
+
if (!description && openApiModel && openApiField) {
|
|
77
|
+
description = getModelField(openApiModel, openApiField)?.description;
|
|
78
|
+
}
|
|
87
79
|
|
|
88
80
|
if (editable && !setValue) {
|
|
89
81
|
throw new Error("setValue is required if editable is true");
|
|
@@ -96,6 +88,7 @@ export const TapToEdit = ({
|
|
|
96
88
|
fieldComponent(setValue as any)
|
|
97
89
|
) : (
|
|
98
90
|
<Field
|
|
91
|
+
helperText={description}
|
|
99
92
|
label={title}
|
|
100
93
|
placeholder={placeholder}
|
|
101
94
|
value={value}
|
|
@@ -182,8 +175,24 @@ export const TapToEdit = ({
|
|
|
182
175
|
const openLink = async (): Promise<void> => {
|
|
183
176
|
if (fieldProps?.type === "url") {
|
|
184
177
|
await Linking.openURL(value);
|
|
178
|
+
} else if (fieldProps?.type === "address") {
|
|
179
|
+
await Linking.openURL(
|
|
180
|
+
`https://www.google.com/maps/search/?api=1&query=${encodeURIComponent(
|
|
181
|
+
formatAddress(value, true)
|
|
182
|
+
)}`
|
|
183
|
+
);
|
|
185
184
|
}
|
|
186
185
|
};
|
|
186
|
+
const isClickable = fieldProps?.type === "url" || fieldProps?.type === "address";
|
|
187
|
+
|
|
188
|
+
const renderTitleDescription = (): React.ReactElement => {
|
|
189
|
+
return (
|
|
190
|
+
<Box flex="grow">
|
|
191
|
+
<Text weight="bold">{title}:</Text>
|
|
192
|
+
{Boolean(description && !showDescriptionAsTooltip) && <Text>{description}</Text>}
|
|
193
|
+
</Box>
|
|
194
|
+
);
|
|
195
|
+
};
|
|
187
196
|
|
|
188
197
|
return (
|
|
189
198
|
<Box
|
|
@@ -194,29 +203,18 @@ export const TapToEdit = ({
|
|
|
194
203
|
width="100%"
|
|
195
204
|
{...rowBoxProps}
|
|
196
205
|
>
|
|
197
|
-
|
|
198
|
-
<
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
}
|
|
210
|
-
>
|
|
211
|
-
<Text color="blue" underline={fieldProps?.type === "address"}>
|
|
212
|
-
Google Maps
|
|
213
|
-
</Text>
|
|
214
|
-
</Box>
|
|
215
|
-
)}
|
|
216
|
-
</Box>
|
|
217
|
-
<Box direction="row">
|
|
218
|
-
<Box onClick={fieldProps?.type === "url" ? openLink : undefined}>
|
|
219
|
-
<Text underline={fieldProps?.type === "url"}>{displayValue}</Text>
|
|
206
|
+
{showDescriptionAsTooltip ? (
|
|
207
|
+
<Tooltip idealDirection="top" text={description}>
|
|
208
|
+
{renderTitleDescription()}
|
|
209
|
+
</Tooltip>
|
|
210
|
+
) : (
|
|
211
|
+
renderTitleDescription()
|
|
212
|
+
)}
|
|
213
|
+
<Box direction="row" justifyContent="start" marginLeft={2}>
|
|
214
|
+
<Box justifyContent="start" onClick={isClickable ? openLink : undefined}>
|
|
215
|
+
<Text align="right" underline={isClickable}>
|
|
216
|
+
{displayValue}
|
|
217
|
+
</Text>
|
|
220
218
|
</Box>
|
|
221
219
|
{editable && (
|
|
222
220
|
<Box marginLeft={2} onClick={(): void => setEditing(true)}>
|
package/src/index.tsx
CHANGED
|
@@ -34,6 +34,7 @@ export * from "./MobileAddressAutoComplete";
|
|
|
34
34
|
export * from "./Modal";
|
|
35
35
|
export * from "./ModalSheet";
|
|
36
36
|
export * from "./NumberPickerActionSheet";
|
|
37
|
+
export * from "./OpenAPIContext";
|
|
37
38
|
export * from "./Page";
|
|
38
39
|
export * from "./Pill";
|
|
39
40
|
export * from "./ProgressBar";
|