@bloom-housing/ui-components 12.0.10 → 12.0.12
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/src/forms/Field.js +14 -0
- package/dist/src/forms/Field.js.map +1 -1
- package/dist/src/helpers/validators.d.ts +1 -0
- package/dist/src/helpers/validators.js +1 -0
- package/dist/src/helpers/validators.js.map +1 -1
- package/dist/src/overlays/Modal.js +4 -2
- package/dist/src/overlays/Modal.js.map +1 -1
- package/package.json +1 -1
- package/src/forms/Field.tsx +21 -0
- package/src/helpers/validators.ts +5 -2
- package/src/overlays/Modal.tsx +5 -2
package/dist/src/forms/Field.js
CHANGED
|
@@ -11,6 +11,7 @@ var __assign = (this && this.__assign) || function () {
|
|
|
11
11
|
};
|
|
12
12
|
import React, { useMemo } from "react";
|
|
13
13
|
import { ErrorMessage } from "../notifications/ErrorMessage";
|
|
14
|
+
import { httpsRegex, urlRegex } from "../helpers/validators";
|
|
14
15
|
var Field = function (props) {
|
|
15
16
|
var classes = ["field"];
|
|
16
17
|
if (props.error) {
|
|
@@ -53,6 +54,19 @@ var Field = function (props) {
|
|
|
53
54
|
if (props.type === "currency") {
|
|
54
55
|
inputProps = __assign(__assign({}, inputProps), { onBlur: function () { return formatValue(); }, onFocus: function () { return formatValue(true); }, onChange: filterNumbers });
|
|
55
56
|
}
|
|
57
|
+
if (props.type === "url") {
|
|
58
|
+
inputProps = __assign(__assign({}, inputProps), { ref: props.register &&
|
|
59
|
+
props.register(props.validation || {
|
|
60
|
+
validate: {
|
|
61
|
+
https: function (value) {
|
|
62
|
+
return httpsRegex.test(value);
|
|
63
|
+
},
|
|
64
|
+
invalid: function (value) {
|
|
65
|
+
return urlRegex.test(value);
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
}) });
|
|
69
|
+
}
|
|
56
70
|
var type = (props.type === "currency" && "text") || props.type || "text";
|
|
57
71
|
var isRadioOrCheckbox = ["radio", "checkbox"].includes(type);
|
|
58
72
|
var label = useMemo(function () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Field.js","sourceRoot":"","sources":["../../../src/forms/Field.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAe,OAAO,EAAE,MAAM,OAAO,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;
|
|
1
|
+
{"version":3,"file":"Field.js","sourceRoot":"","sources":["../../../src/forms/Field.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export var emailRegex = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
|
|
2
2
|
export var passwordRegex = /^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+).{7,}$/;
|
|
3
|
+
export var httpsRegex = /^https?:\/\//i;
|
|
3
4
|
export var urlRegex = /(https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|www\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9]+\.[^\s]{2,}|www\.[a-zA-Z0-9]+\.[^\s]{2,})$/;
|
|
4
5
|
//# sourceMappingURL=validators.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../../src/helpers/validators.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../../src/helpers/validators.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,UAAU,GACrB,sJAAsJ,CAAA;AACxJ,MAAM,CAAC,IAAM,aAAa,GAAG,gDAAgD,CAAA;AAC7E,MAAM,CAAC,IAAM,UAAU,GAAG,eAAe,CAAA;AACzC,MAAM,CAAC,IAAM,QAAQ,GACnB,oNAAoN,CAAA"}
|
|
@@ -1,15 +1,17 @@
|
|
|
1
|
-
import React, { useRef } from "react";
|
|
1
|
+
import React, { useEffect, useRef } from "react";
|
|
2
2
|
import "./Modal.scss";
|
|
3
3
|
import { Icon, IconFillColors } from "../icons/Icon";
|
|
4
4
|
import { Overlay } from "./Overlay";
|
|
5
5
|
import { nanoid } from "nanoid";
|
|
6
6
|
var ModalHeader = function (props) {
|
|
7
|
+
var modalHeader = useRef(null);
|
|
8
|
+
useEffect(function () { var _a; return (_a = modalHeader === null || modalHeader === void 0 ? void 0 : modalHeader.current) === null || _a === void 0 ? void 0 : _a.focus(); }, [props.title]);
|
|
7
9
|
var classNames = ["modal__title"];
|
|
8
10
|
if (props.className)
|
|
9
11
|
classNames.push(props.className);
|
|
10
12
|
return (React.createElement(React.Fragment, null,
|
|
11
13
|
React.createElement("header", { className: "modal__header" },
|
|
12
|
-
React.createElement("h1", { className: classNames.join(" "), id: props.uniqueId }, props.title))));
|
|
14
|
+
React.createElement("h1", { ref: modalHeader, tabIndex: -1, className: classNames.join(" "), id: props.uniqueId }, props.title))));
|
|
13
15
|
};
|
|
14
16
|
var ModalFooter = function (props) {
|
|
15
17
|
var classNames = ["modal__footer"];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Modal.js","sourceRoot":"","sources":["../../../src/overlays/Modal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"Modal.js","sourceRoot":"","sources":["../../../src/overlays/Modal.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bloom-housing/ui-components",
|
|
3
|
-
"version": "12.0.
|
|
3
|
+
"version": "12.0.12",
|
|
4
4
|
"author": "Sean Albert <sean.albert@exygy.com>",
|
|
5
5
|
"description": "Shared user interface components for Bloom affordable housing system",
|
|
6
6
|
"homepage": "https://github.com/bloom-housing/ui-components",
|
package/src/forms/Field.tsx
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React, { ChangeEvent, useMemo } from "react"
|
|
2
2
|
import { ErrorMessage } from "../notifications/ErrorMessage"
|
|
3
3
|
import { UseFormMethods, RegisterOptions } from "react-hook-form"
|
|
4
|
+
import { httpsRegex, urlRegex } from "../helpers/validators"
|
|
4
5
|
|
|
5
6
|
export interface FieldProps {
|
|
6
7
|
error?: boolean
|
|
@@ -93,6 +94,26 @@ const Field = (props: FieldProps) => {
|
|
|
93
94
|
}
|
|
94
95
|
}
|
|
95
96
|
|
|
97
|
+
if (props.type === "url") {
|
|
98
|
+
inputProps = {
|
|
99
|
+
...inputProps,
|
|
100
|
+
ref:
|
|
101
|
+
props.register &&
|
|
102
|
+
props.register(
|
|
103
|
+
props.validation || {
|
|
104
|
+
validate: {
|
|
105
|
+
https: (value) => {
|
|
106
|
+
return httpsRegex.test(value)
|
|
107
|
+
},
|
|
108
|
+
invalid: (value) => {
|
|
109
|
+
return urlRegex.test(value)
|
|
110
|
+
},
|
|
111
|
+
},
|
|
112
|
+
}
|
|
113
|
+
),
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
96
117
|
const type = (props.type === "currency" && "text") || props.type || "text"
|
|
97
118
|
const isRadioOrCheckbox = ["radio", "checkbox"].includes(type)
|
|
98
119
|
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
-
export const emailRegex =
|
|
1
|
+
export const emailRegex =
|
|
2
|
+
/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
|
|
2
3
|
export const passwordRegex = /^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+).{7,}$/
|
|
3
|
-
export const
|
|
4
|
+
export const httpsRegex = /^https?:\/\//i
|
|
5
|
+
export const urlRegex =
|
|
6
|
+
/(https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|www\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9]+\.[^\s]{2,}|www\.[a-zA-Z0-9]+\.[^\s]{2,})$/
|
package/src/overlays/Modal.tsx
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { useRef } from "react"
|
|
1
|
+
import React, { useEffect, useRef } from "react"
|
|
2
2
|
import "./Modal.scss"
|
|
3
3
|
import { Icon, IconFillColors } from "../icons/Icon"
|
|
4
4
|
import { Overlay, OverlayProps } from "./Overlay"
|
|
@@ -22,12 +22,15 @@ export interface ModalProps extends Omit<OverlayProps, "children"> {
|
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
const ModalHeader = (props: { title: string; uniqueId?: string; className?: string }) => {
|
|
25
|
+
const modalHeader = useRef<HTMLHeadingElement>(null)
|
|
26
|
+
useEffect(() => modalHeader?.current?.focus(), [props.title])
|
|
27
|
+
|
|
25
28
|
const classNames = ["modal__title"]
|
|
26
29
|
if (props.className) classNames.push(props.className)
|
|
27
30
|
return (
|
|
28
31
|
<>
|
|
29
32
|
<header className="modal__header">
|
|
30
|
-
<h1 className={classNames.join(" ")} id={props.uniqueId}>
|
|
33
|
+
<h1 ref={modalHeader} tabIndex={-1} className={classNames.join(" ")} id={props.uniqueId}>
|
|
31
34
|
{props.title}
|
|
32
35
|
</h1>
|
|
33
36
|
</header>
|