@jobber/components 4.0.0 → 4.0.1-pre.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/Autocomplete/Autocomplete.d.ts +1 -1
- package/dist/Autocomplete/Option.d.ts +2 -2
- package/dist/Autocomplete/index.js +51 -67
- package/dist/Avatar/Avatar.d.ts +2 -2
- package/dist/Avatar/index.js +2 -2
- package/dist/{Avatar-cfd04e86.js → Avatar-89cfd0a6.js} +14 -18
- package/dist/Banner/Banner.d.ts +1 -1
- package/dist/Banner/index.js +15 -19
- package/dist/Button/Button.d.ts +1 -1
- package/dist/Button/index.js +3 -4
- package/dist/{Button-cd30df0f.js → Button-16e043ec.js} +21 -24
- package/dist/ButtonDismiss/index.js +4 -5
- package/dist/{ButtonDismiss-a9590195.js → ButtonDismiss-3fb1eaf9.js} +2 -3
- package/dist/Card/Card.d.ts +1 -1
- package/dist/Card/index.js +6 -7
- package/dist/Card/types.d.ts +1 -1
- package/dist/{Card-b9f8d6f3.js → Card-edab9c3c.js} +18 -22
- package/dist/Checkbox/Checkbox.d.ts +1 -1
- package/dist/Checkbox/index.js +4 -5
- package/dist/{Checkbox-5103d2b9.js → Checkbox-c1efc2f6.js} +10 -12
- package/dist/Chips/ChipsTypes.d.ts +1 -1
- package/dist/Chips/InternalChipDismissible/InternalChipDismissibleTypes.d.ts +1 -1
- package/dist/Chips/InternalChipDismissible/hooks/useInternalChipDismissible.d.ts +1 -1
- package/dist/Chips/InternalChipDismissible/hooks/useInternalChipDismissibleInput.d.ts +3 -3
- package/dist/Chips/InternalChipMultiSelect.d.ts +1 -1
- package/dist/Chips/InternalChipSingleSelect.d.ts +1 -1
- package/dist/Chips/index.js +165 -185
- package/dist/ConfirmationModal/ConfirmationModal.d.ts +1 -1
- package/dist/ConfirmationModal/index.js +11 -12
- package/dist/{ConfirmationModal-e95f46d7.js → ConfirmationModal-6a7beee2.js} +28 -31
- package/dist/Content/index.js +1 -1
- package/dist/{Content-18de5fbb.js → Content-05df8f7f.js} +2 -3
- package/dist/Countdown/Countdown.d.ts +1 -1
- package/dist/Countdown/computeTimeUnit.d.ts +1 -1
- package/dist/Countdown/index.js +15 -18
- package/dist/DataDump/index.js +9 -11
- package/dist/DataTable/Footer.d.ts +1 -1
- package/dist/DataTable/createTableSettings.d.ts +2 -2
- package/dist/DataTable/index.js +74 -106
- package/dist/DataTable/test-utilities/helpers.d.ts +1 -1
- package/dist/DataTable/types.d.ts +2 -2
- package/dist/DatePicker/DatePicker.d.ts +1 -1
- package/dist/DatePicker/index.js +4 -5
- package/dist/{DatePicker-7c67e8d2.js → DatePicker-af21ae91.js} +31 -36
- package/dist/DescriptionList/index.js +5 -10
- package/dist/Disclosure/index.js +8 -10
- package/dist/Divider/index.js +8 -10
- package/dist/Drawer/index.js +10 -14
- package/dist/Emphasis/index.js +2 -3
- package/dist/{Emphasis-75a3f411.js → Emphasis-23dc2a0a.js} +4 -6
- package/dist/FeatureSwitch/index.js +15 -17
- package/dist/Form/index.js +23 -33
- package/dist/FormField/FormFieldTypes.d.ts +2 -2
- package/dist/FormField/index.js +8 -8
- package/dist/{FormField-76068c0b.js → FormField-1e444bb6.js} +68 -76
- package/dist/FormatDate/index.js +2 -3
- package/dist/FormatEmail/index.js +2 -3
- package/dist/FormatFile/index.js +13 -14
- package/dist/{FormatFile-18e8a54a.js → FormatFile-3512f838.js} +33 -40
- package/dist/FormatRelativeDateTime/index.js +5 -6
- package/dist/FormatTime/index.js +6 -7
- package/dist/Gallery/GalleryTypes.d.ts +2 -2
- package/dist/Gallery/index.js +31 -33
- package/dist/Heading/index.js +2 -3
- package/dist/{Heading-a9a66964.js → Heading-7b203f7f.js} +4 -6
- package/dist/Icon/index.js +1 -1
- package/dist/{Icon-d5ad1a6d.js → Icon-405a216c.js} +7 -8
- package/dist/InlineLabel/InlineLabel.d.ts +1 -1
- package/dist/InlineLabel/index.js +4 -6
- package/dist/InputAvatar/index.js +15 -20
- package/dist/InputDate/index.js +15 -15
- package/dist/InputEmail/InputEmail.d.ts +1 -1
- package/dist/InputEmail/index.js +12 -12
- package/dist/InputFile/index.js +6 -6
- package/dist/{InputFile-e108a7f8.js → InputFile-5e0ed2b5.js} +48 -62
- package/dist/InputGroup/index.js +4 -5
- package/dist/InputNumber/index.js +22 -22
- package/dist/InputPassword/index.js +12 -12
- package/dist/InputText/InputText.d.ts +1 -1
- package/dist/InputText/index.js +9 -9
- package/dist/{InputText-523d0e48.js → InputText-12b112a9.js} +23 -24
- package/dist/InputTime/index.js +27 -27
- package/dist/InputValidation/index.js +4 -5
- package/dist/{InputValidation-06a8a7ba.js → InputValidation-97dd0dcf.js} +7 -8
- package/dist/LightBox/index.js +5 -6
- package/dist/{LightBox-1ad62669.js → LightBox-dd1afa97.js} +22 -26
- package/dist/List/index.js +26 -32
- package/dist/Markdown/index.js +6 -7
- package/dist/{Markdown-b53e0308.js → Markdown-be2dcd0c.js} +12 -18
- package/dist/Menu/index.js +4 -5
- package/dist/{Menu-826cfb89.js → Menu-d6a7d17b.js} +31 -36
- package/dist/Modal/index.js +6 -7
- package/dist/{Modal-cc3bd7bf.js → Modal-757e83fd.js} +13 -17
- package/dist/MultiSelect/index.js +53 -60
- package/dist/MultiSelect/types.d.ts +1 -1
- package/dist/{Option-fdf21181.js → Option-13150f4a.js} +3 -5
- package/dist/Page/Page.d.ts +1 -1
- package/dist/Page/index.js +21 -24
- package/dist/Popover/index.js +11 -13
- package/dist/ProgressBar/index.js +1 -1
- package/dist/{ProgressBar-e9a49129.js → ProgressBar-f028b159.js} +3 -4
- package/dist/RadioGroup/RadioOption.d.ts +2 -2
- package/dist/RadioGroup/index.js +9 -13
- package/dist/RecurringSelect/types.d.ts +2 -2
- package/dist/Select/Select.d.ts +1 -1
- package/dist/Select/index.js +9 -9
- package/dist/Spinner/index.js +1 -1
- package/dist/{Spinner-e4e9c8eb.js → Spinner-ae4c8a85.js} +5 -7
- package/dist/StatusLabel/StatusLabel.d.ts +1 -1
- package/dist/StatusLabel/index.js +6 -9
- package/dist/Switch/index.js +2 -3
- package/dist/{Switch-f03b70fc.js → Switch-7ac32f7b.js} +12 -16
- package/dist/Table/index.js +9 -17
- package/dist/Tabs/index.js +28 -34
- package/dist/Text/index.js +2 -3
- package/dist/{Text-e012fb46.js → Text-7ce00adb.js} +4 -5
- package/dist/Toast/Toast.d.ts +2 -2
- package/dist/Toast/index.js +31 -32
- package/dist/Tooltip/index.js +3 -4
- package/dist/Tooltip/useTooltipPositioning.d.ts +1 -1
- package/dist/{Tooltip-041feb00.js → Tooltip-1090a43d.js} +25 -28
- package/dist/Typography/Typography.d.ts +1 -1
- package/dist/Typography/index.js +1 -2
- package/dist/{Typography-fbe0ed6e.js → Typography-9262511f.js} +5 -7
- package/dist/tslib.es6-efe27175.js +38 -0
- package/package.json +3 -3
- package/dist/tslib.es6-5b50eb8e.js +0 -103
|
@@ -4,13 +4,12 @@ var React = require('react');
|
|
|
4
4
|
var classnames = require('classnames');
|
|
5
5
|
var getHumanReadableFileSize = require('filesize');
|
|
6
6
|
var styleInject_es = require('./style-inject.es-dcee06b6.js');
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
var
|
|
13
|
-
var ProgressBar = require('./ProgressBar-e9a49129.js');
|
|
7
|
+
var Button = require('./Button-16e043ec.js');
|
|
8
|
+
var ConfirmationModal = require('./ConfirmationModal-6a7beee2.js');
|
|
9
|
+
var Icon = require('./Icon-405a216c.js');
|
|
10
|
+
var Typography = require('./Typography-9262511f.js');
|
|
11
|
+
var Text = require('./Text-7ce00adb.js');
|
|
12
|
+
var ProgressBar = require('./ProgressBar-f028b159.js');
|
|
14
13
|
|
|
15
14
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
16
15
|
|
|
@@ -22,31 +21,28 @@ var css$1 = ":root {\n --file-card--height: calc(var(--space-base) * 3.5);\n -
|
|
|
22
21
|
var styles$1 = {"expanded":"_9dGq9pkZYNxwlhRwaVaWH","compact":"_24PiUzD_Hoe3p6hD_OxjbH","wrapper":"_26euKXXdGUFmchTL7YqSO7","large":"_2OuJNJWNnBmTTzGAUfSaM7","base":"_2GSQaEqbKQHd7Tf2XqJ5i1","thumbnail":"_1JreUit2_KSn_-iQ3vBhUn","clickable":"_3_8YVeas_gdmexLUKZ3mpR","hoverable":"_15spVvfm0lqLuhAwuIuWrm","progress":"_3Sb6hKDYDXwDcc69ByIdyl","contentBlock":"_2My-AZfFXfluwQURTvc6Z9","deleteButton":"_2pUMiqf0oiCus7WkVuTt57","deleteable":"_2g5hRVudATuiROg0LStgTs"};
|
|
23
22
|
styleInject_es.styleInject(css$1);
|
|
24
23
|
|
|
25
|
-
function FormatFileDeleteButton(
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
var _b = tslib_es6.__read(React.useState(false), 2), deleteConfirmationOpen = _b[0], setDeleteConfirmationOpen = _b[1];
|
|
24
|
+
function FormatFileDeleteButton({ size, onDelete }) {
|
|
25
|
+
const buttonSize = size === "base" ? "small" : "base";
|
|
26
|
+
const [deleteConfirmationOpen, setDeleteConfirmationOpen] = React.useState(false);
|
|
29
27
|
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
30
|
-
React__default["default"].createElement(Button.Button, { onClick:
|
|
31
|
-
React__default["default"].createElement(ConfirmationModal.ConfirmationModal, { title: "Confirm Deletion", message:
|
|
28
|
+
React__default["default"].createElement(Button.Button, { onClick: () => setDeleteConfirmationOpen(true), variation: "destructive", type: "tertiary", icon: "trash", ariaLabel: "Delete File", size: buttonSize }),
|
|
29
|
+
React__default["default"].createElement(ConfirmationModal.ConfirmationModal, { title: "Confirm Deletion", message: `Are you sure you want to delete this file?`, confirmLabel: "Delete", variation: "destructive", open: deleteConfirmationOpen, onConfirm: () => onDelete === null || onDelete === void 0 ? void 0 : onDelete(), onRequestClose: () => setDeleteConfirmationOpen(false) })));
|
|
32
30
|
}
|
|
33
31
|
|
|
34
32
|
var css = "._15Z4SPrC7I2WxqMysdwQxX {\n width: 100%;\n height: 100%;\n -o-object-fit: cover;\n object-fit: cover;\n}\n\n.VMZPGfgfpCH2eH5Mv9zgO {\n display: none;\n}\n\n.Z-gb7-3W6CcFd5uSiosLe {\n display: -ms-flexbox;\n display: flex;\n width: inherit;\n height: inherit;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: center;\n justify-content: center;\n}\n\n.Z-gb7-3W6CcFd5uSiosLe::after {\n content: \"\";\n display: block;\n position: absolute;\n right: 0;\n bottom: 0;\n border: var(--border-base);\n border-radius: var(--radius-base);\n background: linear-gradient(\n 270deg,\n rgb(244, 244, 244) 38.46%,\n rgba(244, 244, 244, 0) 100%\n );\n}\n\n.Z-gb7-3W6CcFd5uSiosLe._3NVQrEqP9hGjbdbpOXGHQd::after {\n width: var(--space-base);\n height: var(--space-base);\n}\n\n.Z-gb7-3W6CcFd5uSiosLe._2AI9R5gNW3y8vFV4ev1tge::after {\n width: var(--space-large);\n height: var(--space-large);\n}\n\n._3VjXRD4ob2Fdq9YxmNRy2S {\n position: absolute;\n}\n\n._3NVQrEqP9hGjbdbpOXGHQd ._3VjXRD4ob2Fdq9YxmNRy2S {\n bottom: var(--space-smaller);\n left: var(--space-smaller);\n font-size: var(--typography--fontSize-smaller);\n}\n\n._2AI9R5gNW3y8vFV4ev1tge ._3VjXRD4ob2Fdq9YxmNRy2S {\n bottom: var(--space-small);\n left: var(--space-small);\n font-size: var(--typography--fontSize-small);\n}\n";
|
|
35
33
|
var styles = {"image":"_15Z4SPrC7I2WxqMysdwQxX","loading":"VMZPGfgfpCH2eH5Mv9zgO","content":"Z-gb7-3W6CcFd5uSiosLe","base":"_3NVQrEqP9hGjbdbpOXGHQd","large":"_2AI9R5gNW3y8vFV4ev1tge","fileName":"_3VjXRD4ob2Fdq9YxmNRy2S"};
|
|
36
34
|
styleInject_es.styleInject(css);
|
|
37
35
|
|
|
38
|
-
function InternalThumbnail(
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
var _e = tslib_es6.__read(React.useState(false), 2), imageLoaded = _e[0], setImageLoaded = _e[1];
|
|
43
|
-
var iconName = getIconNameFromType(file.type);
|
|
36
|
+
function InternalThumbnail({ name, hideName = false, size, file, }) {
|
|
37
|
+
const [imageSource, setImageSource] = React.useState();
|
|
38
|
+
const [imageLoaded, setImageLoaded] = React.useState(false);
|
|
39
|
+
const iconName = getIconNameFromType(file.type);
|
|
44
40
|
if (!imageSource && file.type.startsWith("image/")) {
|
|
45
|
-
file.src().then(
|
|
41
|
+
file.src().then(src => setImageSource(src));
|
|
46
42
|
}
|
|
47
|
-
|
|
43
|
+
const image = (React__default["default"].createElement("img", { src: imageSource, onLoad: () => {
|
|
48
44
|
setImageLoaded(true);
|
|
49
|
-
}, className: classnames__default["default"](styles.image,
|
|
45
|
+
}, className: classnames__default["default"](styles.image, { [styles.loading]: !imageLoaded }), alt: name, "data-testid": "internalThumbnailImage" }));
|
|
50
46
|
if (imageLoaded) {
|
|
51
47
|
return image;
|
|
52
48
|
}
|
|
@@ -70,22 +66,20 @@ function getIconNameFromType(mimeType) {
|
|
|
70
66
|
}
|
|
71
67
|
}
|
|
72
68
|
|
|
73
|
-
function FormatFile(
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
_c));
|
|
88
|
-
var thumbnailContainerClassNames = classnames__default["default"](styles$1.thumbnail, styles$1[displaySize]);
|
|
69
|
+
function FormatFile({ file, display = "expanded", displaySize = "base", onDelete, onClick, }) {
|
|
70
|
+
const isComplete = file.progress >= 1;
|
|
71
|
+
const fileSize = getHumanReadableFileSize__default["default"](file.size);
|
|
72
|
+
const wrapperClassNames = classnames__default["default"](styles$1[display], {
|
|
73
|
+
[styles$1[displaySize]]: display === "compact",
|
|
74
|
+
});
|
|
75
|
+
const DetailsContainer = isComplete && onClick ? "button" : "div";
|
|
76
|
+
const detailsClassNames = classnames__default["default"](styles$1.wrapper, {
|
|
77
|
+
[styles$1[displaySize]]: display === "compact",
|
|
78
|
+
[styles$1.hoverable]: isHoverable({ display, isComplete, onClick, onDelete }),
|
|
79
|
+
[styles$1.clickable]: onClick,
|
|
80
|
+
[styles$1.deleteable]: display === "compact",
|
|
81
|
+
});
|
|
82
|
+
const thumbnailContainerClassNames = classnames__default["default"](styles$1.thumbnail, styles$1[displaySize]);
|
|
89
83
|
return (React__default["default"].createElement("div", { className: wrapperClassNames },
|
|
90
84
|
React__default["default"].createElement(DetailsContainer, { type: "button", className: detailsClassNames, onClick: isComplete ? onClick : undefined, tabIndex: 0, "aria-busy": !isComplete },
|
|
91
85
|
React__default["default"].createElement("div", { className: thumbnailContainerClassNames },
|
|
@@ -98,8 +92,7 @@ function FormatFile(_a) {
|
|
|
98
92
|
isComplete && onDelete && (React__default["default"].createElement("div", { className: styles$1.deleteButton },
|
|
99
93
|
React__default["default"].createElement(FormatFileDeleteButton, { size: display === "expanded" ? "large" : displaySize, onDelete: onDelete })))));
|
|
100
94
|
}
|
|
101
|
-
function isHoverable(
|
|
102
|
-
var display = _a.display, isComplete = _a.isComplete, onClick = _a.onClick, onDelete = _a.onDelete;
|
|
95
|
+
function isHoverable({ display, isComplete, onClick, onDelete, }) {
|
|
103
96
|
if (display === "compact") {
|
|
104
97
|
return Boolean(isComplete && (onClick || onDelete));
|
|
105
98
|
}
|
|
@@ -8,9 +8,8 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
|
|
|
8
8
|
|
|
9
9
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
10
10
|
|
|
11
|
-
function FormatRelativeDateTime(
|
|
12
|
-
|
|
13
|
-
var dateObject;
|
|
11
|
+
function FormatRelativeDateTime({ date: inputDate, }) {
|
|
12
|
+
let dateObject;
|
|
14
13
|
if (inputDate instanceof Date) {
|
|
15
14
|
dateObject = inputDate;
|
|
16
15
|
}
|
|
@@ -20,9 +19,9 @@ function FormatRelativeDateTime(_a) {
|
|
|
20
19
|
else {
|
|
21
20
|
dateObject = new Date(inputDate.toJSON());
|
|
22
21
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
22
|
+
const now = Date.now() / 1000; //seconds
|
|
23
|
+
const date = dateObject;
|
|
24
|
+
const delta = now - date.getTime() / 1000; //seconds;
|
|
26
25
|
switch (relativeTimeRange(delta)) {
|
|
27
26
|
case "less than an hour":
|
|
28
27
|
return React__default["default"].createElement(React__default["default"].Fragment, null, showMinutes(Math.round(delta / 60)));
|
package/dist/FormatTime/index.js
CHANGED
|
@@ -8,9 +8,8 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
|
|
|
8
8
|
|
|
9
9
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
10
10
|
|
|
11
|
-
function FormatTime(
|
|
12
|
-
|
|
13
|
-
var dateObject;
|
|
11
|
+
function FormatTime({ time: inputTime, use24HourClock, }) {
|
|
12
|
+
let dateObject;
|
|
14
13
|
if (inputTime instanceof Date) {
|
|
15
14
|
dateObject = inputTime;
|
|
16
15
|
}
|
|
@@ -18,10 +17,10 @@ function FormatTime(_a) {
|
|
|
18
17
|
dateObject = new Date(inputTime);
|
|
19
18
|
}
|
|
20
19
|
else {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
20
|
+
const currentDate = new Date();
|
|
21
|
+
const currentYear = currentDate.getFullYear();
|
|
22
|
+
const currentMonth = currentDate.getMonth();
|
|
23
|
+
const currentDay = currentDate.getDay();
|
|
25
24
|
dateObject = new Date(currentYear, currentMonth, currentDay, inputTime.hour, inputTime.minute, inputTime.second, inputTime.millisecond);
|
|
26
25
|
}
|
|
27
26
|
return React__default["default"].createElement(React__default["default"].Fragment, null, formatCivilTime(dateObject, use24HourClock));
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { IconNames } from "../Icon";
|
|
2
2
|
import { FileUpload } from "../InputFile";
|
|
3
|
-
export
|
|
4
|
-
export
|
|
3
|
+
export type Sizes = "small" | "base" | "large" | "extraLarge";
|
|
4
|
+
export type FileIconsNames = Extract<IconNames, "file" | "excel" | "pdf" | "video" | "word">;
|
|
5
5
|
export interface GalleryProps {
|
|
6
6
|
/**
|
|
7
7
|
* The size of the files and their spacing in the gallery
|
package/dist/Gallery/index.js
CHANGED
|
@@ -2,31 +2,30 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var tslib_es6 = require('../tslib.es6-5b50eb8e.js');
|
|
6
5
|
var React = require('react');
|
|
7
6
|
var classnames = require('classnames');
|
|
8
7
|
var styleInject_es = require('../style-inject.es-dcee06b6.js');
|
|
9
|
-
var LightBox = require('../LightBox-
|
|
10
|
-
var FormatFile = require('../FormatFile-
|
|
11
|
-
var Button = require('../Button-
|
|
8
|
+
var LightBox = require('../LightBox-dd1afa97.js');
|
|
9
|
+
var FormatFile = require('../FormatFile-3512f838.js');
|
|
10
|
+
var Button = require('../Button-16e043ec.js');
|
|
12
11
|
require('framer-motion');
|
|
13
12
|
require('react-dom');
|
|
14
13
|
require('lodash/debounce');
|
|
15
14
|
require('@jobber/hooks');
|
|
16
|
-
require('../ButtonDismiss-
|
|
15
|
+
require('../ButtonDismiss-3fb1eaf9.js');
|
|
17
16
|
require('filesize');
|
|
18
|
-
require('../ConfirmationModal-
|
|
19
|
-
require('../Modal-
|
|
20
|
-
require('../Heading-
|
|
21
|
-
require('../Typography-
|
|
22
|
-
require('../Content-
|
|
23
|
-
require('../Markdown-
|
|
17
|
+
require('../ConfirmationModal-6a7beee2.js');
|
|
18
|
+
require('../Modal-757e83fd.js');
|
|
19
|
+
require('../Heading-7b203f7f.js');
|
|
20
|
+
require('../Typography-9262511f.js');
|
|
21
|
+
require('../Content-05df8f7f.js');
|
|
22
|
+
require('../Markdown-be2dcd0c.js');
|
|
24
23
|
require('react-markdown');
|
|
25
|
-
require('../Text-
|
|
26
|
-
require('../Emphasis-
|
|
27
|
-
require('../Icon-
|
|
24
|
+
require('../Text-7ce00adb.js');
|
|
25
|
+
require('../Emphasis-23dc2a0a.js');
|
|
26
|
+
require('../Icon-405a216c.js');
|
|
28
27
|
require('@jobber/design');
|
|
29
|
-
require('../ProgressBar-
|
|
28
|
+
require('../ProgressBar-f028b159.js');
|
|
30
29
|
require('react-router-dom');
|
|
31
30
|
|
|
32
31
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
@@ -38,22 +37,21 @@ var css = ".oLHYkzv718LqMvtqFZFcZ,\n._2JSG0uYj1HSXFads63nptQ {\n display: -ms-f
|
|
|
38
37
|
var styles = {"gallery":"oLHYkzv718LqMvtqFZFcZ","galleryLarge":"_2JSG0uYj1HSXFads63nptQ","showMoreButton":"_3LkQj1p9wvHbrfXfz2nUYp","baseShowMoreButton":"FG8mZ6UcMPRsMC9HQinY2","largeShowMoreButton":"_1cTzKosWc22qxWZSiI0CzZ"};
|
|
39
38
|
styleInject_es.styleInject(css);
|
|
40
39
|
|
|
41
|
-
function Gallery(
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
var visibleFiles = displayPastMax ? files : files.slice(0, max);
|
|
40
|
+
function Gallery({ files, size = "base", max, onDelete }) {
|
|
41
|
+
const { images, filesToImageIndex } = generateImagesArray(files);
|
|
42
|
+
const [lightboxOpen, setLightboxOpen] = React.useState(false);
|
|
43
|
+
const [lightboxIndex, setLightboxIndex] = React.useState(0);
|
|
44
|
+
const [displayPastMax, setDisplayPastMax] = React.useState(max ? false : true);
|
|
45
|
+
const visibleFiles = displayPastMax ? files : files.slice(0, max);
|
|
48
46
|
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
49
47
|
React__default["default"].createElement("div", { className: size === "large" ? styles.galleryLarge : styles.gallery },
|
|
50
|
-
visibleFiles.map(
|
|
51
|
-
return (React__default["default"].createElement(FormatFile.FormatFile, { key: file.key, file:
|
|
48
|
+
visibleFiles.map((file, index) => {
|
|
49
|
+
return (React__default["default"].createElement(FormatFile.FormatFile, { key: file.key, file: Object.assign(Object.assign({}, file), { src: () => Promise.resolve(file.src) }), display: "compact", displaySize: size, onClick: () => {
|
|
52
50
|
handleThumbnailClicked(index);
|
|
53
|
-
}, onDelete: onDelete ?
|
|
51
|
+
}, onDelete: onDelete ? () => onDelete === null || onDelete === void 0 ? void 0 : onDelete(file) : undefined }));
|
|
54
52
|
}),
|
|
55
|
-
max && files.length > max && !displayPastMax && (React__default["default"].createElement("div", { className: classnames__default["default"](styles.showMoreButton, styles[size
|
|
56
|
-
React__default["default"].createElement(Button.Button, { type: "tertiary", size: size, label:
|
|
53
|
+
max && files.length > max && !displayPastMax && (React__default["default"].createElement("div", { className: classnames__default["default"](styles.showMoreButton, styles[`${size}ShowMoreButton`]) },
|
|
54
|
+
React__default["default"].createElement(Button.Button, { type: "tertiary", size: size, label: `+ ${files.length - max}`, fullWidth: true, onClick: () => {
|
|
57
55
|
setDisplayPastMax(true);
|
|
58
56
|
} })))),
|
|
59
57
|
React__default["default"].createElement(LightBox.LightBox, { open: lightboxOpen, images: images, imageIndex: lightboxIndex, onRequestClose: handleLightboxClose })));
|
|
@@ -66,7 +64,7 @@ function Gallery(_a) {
|
|
|
66
64
|
}
|
|
67
65
|
}
|
|
68
66
|
function handleLightboxOpen(index) {
|
|
69
|
-
|
|
67
|
+
const fileToImageIndex = filesToImageIndex[index];
|
|
70
68
|
if (fileToImageIndex !== undefined) {
|
|
71
69
|
setLightboxIndex(fileToImageIndex);
|
|
72
70
|
setLightboxOpen(true);
|
|
@@ -77,10 +75,10 @@ function Gallery(_a) {
|
|
|
77
75
|
}
|
|
78
76
|
}
|
|
79
77
|
function generateImagesArray(files) {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
for (
|
|
78
|
+
const images = [];
|
|
79
|
+
const filesToImageIndex = [];
|
|
80
|
+
let imageIndex = 0;
|
|
81
|
+
for (let i = 0; i < files.length; i++) {
|
|
84
82
|
if (files[i].type.startsWith("image/")) {
|
|
85
83
|
images.push({ title: files[i].name, url: files[i].src });
|
|
86
84
|
filesToImageIndex.push(imageIndex);
|
|
@@ -90,7 +88,7 @@ function generateImagesArray(files) {
|
|
|
90
88
|
filesToImageIndex.push(undefined);
|
|
91
89
|
}
|
|
92
90
|
}
|
|
93
|
-
return { images
|
|
91
|
+
return { images, filesToImageIndex };
|
|
94
92
|
}
|
|
95
93
|
|
|
96
94
|
exports.Gallery = Gallery;
|
package/dist/Heading/index.js
CHANGED
|
@@ -2,10 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var Heading = require('../Heading-
|
|
6
|
-
require('../tslib.es6-5b50eb8e.js');
|
|
5
|
+
var Heading = require('../Heading-7b203f7f.js');
|
|
7
6
|
require('react');
|
|
8
|
-
require('../Typography-
|
|
7
|
+
require('../Typography-9262511f.js');
|
|
9
8
|
require('classnames');
|
|
10
9
|
require('../style-inject.es-dcee06b6.js');
|
|
11
10
|
|
|
@@ -1,16 +1,14 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var tslib_es6 = require('./tslib.es6-5b50eb8e.js');
|
|
4
3
|
var React = require('react');
|
|
5
|
-
var Typography = require('./Typography-
|
|
4
|
+
var Typography = require('./Typography-9262511f.js');
|
|
6
5
|
|
|
7
6
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
8
7
|
|
|
9
8
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
10
9
|
|
|
11
|
-
function Heading(
|
|
12
|
-
|
|
13
|
-
var levelMap = {
|
|
10
|
+
function Heading({ level = 5, children }) {
|
|
11
|
+
const levelMap = {
|
|
14
12
|
1: {
|
|
15
13
|
element: "h1",
|
|
16
14
|
size: "jumbo",
|
|
@@ -49,7 +47,7 @@ function Heading(_a) {
|
|
|
49
47
|
textColor: "heading",
|
|
50
48
|
},
|
|
51
49
|
};
|
|
52
|
-
return React__default["default"].createElement(Typography.Typography,
|
|
50
|
+
return React__default["default"].createElement(Typography.Typography, Object.assign({}, levelMap[level]), children);
|
|
53
51
|
}
|
|
54
52
|
|
|
55
53
|
exports.Heading = Heading;
|
package/dist/Icon/index.js
CHANGED
|
@@ -7,19 +7,18 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
|
|
|
7
7
|
|
|
8
8
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
9
9
|
|
|
10
|
-
function Icon(
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
name: name,
|
|
10
|
+
function Icon({ name, color, customColor, size = "base" }) {
|
|
11
|
+
let icon;
|
|
12
|
+
const { svgClassNames, pathClassNames, paths, viewBox } = design.getIcon({
|
|
13
|
+
name,
|
|
15
14
|
color: getIconColor(name, color),
|
|
16
|
-
size
|
|
17
|
-
})
|
|
15
|
+
size,
|
|
16
|
+
});
|
|
18
17
|
if (name === "truck") {
|
|
19
18
|
icon = getTruck(pathClassNames, customColor);
|
|
20
19
|
}
|
|
21
20
|
else {
|
|
22
|
-
icon = paths.map(
|
|
21
|
+
icon = paths.map((path) => (React__default["default"].createElement("path", { key: path, className: pathClassNames, d: path, fill: customColor })));
|
|
23
22
|
}
|
|
24
23
|
return (React__default["default"].createElement("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: viewBox, className: svgClassNames, "data-testid": name }, icon));
|
|
25
24
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ReactNode } from "react";
|
|
2
|
-
export
|
|
2
|
+
export type InlineLabelColors = "greyBlue" | "red" | "orange" | "green" | "blue" | "yellow" | "lime" | "purple" | "pink" | "teal" | "yellowGreen" | "blueDark" | "lightBlue" | "indigo";
|
|
3
3
|
interface InlineLabelProps {
|
|
4
4
|
/**
|
|
5
5
|
* The size of the label
|
|
@@ -5,8 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
var React = require('react');
|
|
6
6
|
var classnames = require('classnames');
|
|
7
7
|
var styleInject_es = require('../style-inject.es-dcee06b6.js');
|
|
8
|
-
var Typography = require('../Typography-
|
|
9
|
-
require('../tslib.es6-5b50eb8e.js');
|
|
8
|
+
var Typography = require('../Typography-9262511f.js');
|
|
10
9
|
|
|
11
10
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
12
11
|
|
|
@@ -17,10 +16,9 @@ var css = "._2CX7X_wH5lb0fioNTuYTB3 {\n display: -ms-inline-flexbox;\n display
|
|
|
17
16
|
var styles = {"inlineLabel":"_2CX7X_wH5lb0fioNTuYTB3","base":"hIEzl9j3x8azFGCx53-RF","large":"_2FEAdHSbQ1julTQlXKcU9G","larger":"y2IZqgoDbEVd68JUw74_V","greyBlue":"_3ayhjHoV55pJnCyceIIodY","red":"_1NRX5K08cyefHFTjmEY7JC","orange":"_2WqpAFlUhWh2Wycr-r2uMn","green":"EM3QGMlc1v7pjfVBR2j82","blue":"LuBWHY5BJNh4RnEPozKgA","navy":"_36P3W4wMGeF6ObMYI87q2b","yellow":"z7yJ1rNuOTksBtZ0cr3ys","lime":"_2jRJWXkl2av1GzSTdc4GS","purple":"_2DSYzUVBgtIaB1xsMr7rVj","pink":"_27cvq6AfdeOP6SUuX5Ex_T","teal":"eImPpTsVAb13A3dFkEkBc","yellowGreen":"_1AcWxzfWcjE71_gRrEo-J_","blueDark":"J21zEr7ZIvGwt6R5-MZQ7","lightBlue":"_27HNFihCeydE5HUcbCskQ4","indigo":"_3_dDXhHTqG9pa_au-60pWR"};
|
|
18
17
|
styleInject_es.styleInject(css);
|
|
19
18
|
|
|
20
|
-
function InlineLabel(
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
var sizeMapper = {
|
|
19
|
+
function InlineLabel({ size = "base", color = "greyBlue", children, }) {
|
|
20
|
+
const className = classnames__default["default"](styles.inlineLabel, styles[size], styles[color]);
|
|
21
|
+
const sizeMapper = {
|
|
24
22
|
base: "small",
|
|
25
23
|
large: "large",
|
|
26
24
|
larger: "large",
|
|
@@ -2,22 +2,22 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var tslib_es6 = require('../tslib.es6-
|
|
5
|
+
var tslib_es6 = require('../tslib.es6-efe27175.js');
|
|
6
6
|
var React = require('react');
|
|
7
7
|
var styleInject_es = require('../style-inject.es-dcee06b6.js');
|
|
8
|
-
var Avatar = require('../Avatar-
|
|
9
|
-
var InputFile = require('../InputFile-
|
|
10
|
-
var ProgressBar = require('../ProgressBar-
|
|
11
|
-
var Button = require('../Button-
|
|
8
|
+
var Avatar = require('../Avatar-89cfd0a6.js');
|
|
9
|
+
var InputFile = require('../InputFile-5e0ed2b5.js');
|
|
10
|
+
var ProgressBar = require('../ProgressBar-f028b159.js');
|
|
11
|
+
var Button = require('../Button-16e043ec.js');
|
|
12
12
|
require('classnames');
|
|
13
13
|
require('color');
|
|
14
|
-
require('../Icon-
|
|
14
|
+
require('../Icon-405a216c.js');
|
|
15
15
|
require('@jobber/design');
|
|
16
16
|
require('react-dropzone');
|
|
17
17
|
require('axios');
|
|
18
18
|
require('uuid');
|
|
19
|
-
require('../Content-
|
|
20
|
-
require('../Typography-
|
|
19
|
+
require('../Content-05df8f7f.js');
|
|
20
|
+
require('../Typography-9262511f.js');
|
|
21
21
|
require('react-router-dom');
|
|
22
22
|
|
|
23
23
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
@@ -29,11 +29,11 @@ var styles = {"inputAvatar":"_1e1D2becaB2vzZJ8QkTQFY","preview":"TQgDlkCH4_o4LkH
|
|
|
29
29
|
styleInject_es.styleInject(css);
|
|
30
30
|
|
|
31
31
|
function InputAvatar(_a) {
|
|
32
|
-
var
|
|
33
|
-
|
|
32
|
+
var { getUploadParams, onUploadComplete, onChange } = _a, avatarProps = tslib_es6.__rest(_a, ["getUploadParams", "onUploadComplete", "onChange"]);
|
|
33
|
+
const [progress, setProgress] = React.useState(1);
|
|
34
34
|
return (React__default["default"].createElement("div", { className: styles.inputAvatar },
|
|
35
35
|
React__default["default"].createElement("div", { className: styles.preview },
|
|
36
|
-
React__default["default"].createElement(Avatar.Avatar,
|
|
36
|
+
React__default["default"].createElement(Avatar.Avatar, Object.assign({ size: "large" }, avatarProps)),
|
|
37
37
|
progress < 1 && (React__default["default"].createElement(Overlay, null,
|
|
38
38
|
React__default["default"].createElement(Centered, null,
|
|
39
39
|
React__default["default"].createElement(ProgressBar.ProgressBar, { size: "small", currentStep: progress * 100, totalSteps: 100 }))))),
|
|
@@ -48,11 +48,8 @@ function InputAvatar(_a) {
|
|
|
48
48
|
handleUpload(newFile);
|
|
49
49
|
}
|
|
50
50
|
function handleUpload(newFile) {
|
|
51
|
-
return tslib_es6.__awaiter(this, void 0, void 0, function () {
|
|
52
|
-
|
|
53
|
-
setProgress(newFile.progress);
|
|
54
|
-
return [2 /*return*/];
|
|
55
|
-
});
|
|
51
|
+
return tslib_es6.__awaiter(this, void 0, void 0, function* () {
|
|
52
|
+
setProgress(newFile.progress);
|
|
56
53
|
});
|
|
57
54
|
}
|
|
58
55
|
function clearAvatar() {
|
|
@@ -60,12 +57,10 @@ function InputAvatar(_a) {
|
|
|
60
57
|
setProgress(1);
|
|
61
58
|
}
|
|
62
59
|
}
|
|
63
|
-
function Overlay(
|
|
64
|
-
var children = _a.children;
|
|
60
|
+
function Overlay({ children }) {
|
|
65
61
|
return React__default["default"].createElement("div", { className: styles.overlay }, children);
|
|
66
62
|
}
|
|
67
|
-
function Centered(
|
|
68
|
-
var children = _a.children;
|
|
63
|
+
function Centered({ children }) {
|
|
69
64
|
// Note: this HIGHLY experimental Centered component is applying margin.
|
|
70
65
|
return React__default["default"].createElement("div", { className: styles.centered }, children);
|
|
71
66
|
}
|
package/dist/InputDate/index.js
CHANGED
|
@@ -2,24 +2,24 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var tslib_es6 = require('../tslib.es6-5b50eb8e.js');
|
|
6
5
|
var lodash = require('lodash');
|
|
7
6
|
var React = require('react');
|
|
8
|
-
var FormField = require('../FormField-
|
|
9
|
-
var DatePicker = require('../DatePicker-
|
|
7
|
+
var FormField = require('../FormField-1e444bb6.js');
|
|
8
|
+
var DatePicker = require('../DatePicker-af21ae91.js');
|
|
9
|
+
require('../tslib.es6-efe27175.js');
|
|
10
10
|
require('uuid');
|
|
11
11
|
require('react-hook-form');
|
|
12
12
|
require('../style-inject.es-dcee06b6.js');
|
|
13
13
|
require('classnames');
|
|
14
|
-
require('../Button-
|
|
14
|
+
require('../Button-16e043ec.js');
|
|
15
15
|
require('react-router-dom');
|
|
16
|
-
require('../Icon-
|
|
16
|
+
require('../Icon-405a216c.js');
|
|
17
17
|
require('@jobber/design');
|
|
18
|
-
require('../Typography-
|
|
19
|
-
require('../Text-
|
|
20
|
-
require('../InputValidation-
|
|
18
|
+
require('../Typography-9262511f.js');
|
|
19
|
+
require('../Text-7ce00adb.js');
|
|
20
|
+
require('../InputValidation-97dd0dcf.js');
|
|
21
21
|
require('framer-motion');
|
|
22
|
-
require('../Spinner-
|
|
22
|
+
require('../Spinner-ae4c8a85.js');
|
|
23
23
|
require('react-datepicker');
|
|
24
24
|
require('@jobber/hooks');
|
|
25
25
|
|
|
@@ -28,17 +28,17 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
|
|
|
28
28
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
29
29
|
|
|
30
30
|
function InputDate(inputProps) {
|
|
31
|
-
return (React__default["default"].createElement(DatePicker.DatePicker, { selected: inputProps.value, onChange: inputProps.onChange, disabled: inputProps.disabled, readonly: inputProps.readonly, fullWidth: !inputProps.inline, minDate: inputProps.minDate, maxDate: inputProps.maxDate, smartAutofocus: false, activator:
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
return (React__default["default"].createElement(DatePicker.DatePicker, { selected: inputProps.value, onChange: inputProps.onChange, disabled: inputProps.disabled, readonly: inputProps.readonly, fullWidth: !inputProps.inline, minDate: inputProps.minDate, maxDate: inputProps.maxDate, smartAutofocus: false, activator: activatorProps => {
|
|
32
|
+
const { onChange, onClick, value } = activatorProps;
|
|
33
|
+
const newActivatorProps = lodash.omit(activatorProps, ["activator"]);
|
|
34
|
+
const suffix = Object.assign({ icon: "calendar" }, (onClick && {
|
|
35
35
|
onClick: onClick,
|
|
36
36
|
ariaLabel: "Show calendar",
|
|
37
37
|
}));
|
|
38
|
-
return (React__default["default"].createElement(FormField.FormField,
|
|
38
|
+
return (React__default["default"].createElement(FormField.FormField, Object.assign({}, newActivatorProps, inputProps, { value: value, onChange: (_, event) => onChange && onChange(event), onBlur: () => {
|
|
39
39
|
inputProps.onBlur && inputProps.onBlur();
|
|
40
40
|
activatorProps.onBlur && activatorProps.onBlur();
|
|
41
|
-
}, onFocus:
|
|
41
|
+
}, onFocus: () => {
|
|
42
42
|
inputProps.onFocus && inputProps.onFocus();
|
|
43
43
|
activatorProps.onFocus && activatorProps.onFocus();
|
|
44
44
|
}, suffix: suffix })));
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { CommonFormFieldProps, FormFieldProps } from "../FormField";
|
|
3
|
-
|
|
3
|
+
type InputEmailProps = CommonFormFieldProps & Pick<FormFieldProps, "maxLength" | "readonly" | "validations" | "defaultValue">;
|
|
4
4
|
export declare const validationMessage = "Please enter a valid email";
|
|
5
5
|
export declare function InputEmail(props: InputEmailProps): JSX.Element;
|
|
6
6
|
export {};
|
package/dist/InputEmail/index.js
CHANGED
|
@@ -2,33 +2,33 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var tslib_es6 = require('../tslib.es6-5b50eb8e.js');
|
|
6
5
|
var React = require('react');
|
|
7
|
-
var FormField = require('../FormField-
|
|
6
|
+
var FormField = require('../FormField-1e444bb6.js');
|
|
7
|
+
require('../tslib.es6-efe27175.js');
|
|
8
8
|
require('uuid');
|
|
9
9
|
require('react-hook-form');
|
|
10
10
|
require('../style-inject.es-dcee06b6.js');
|
|
11
11
|
require('classnames');
|
|
12
|
-
require('../Button-
|
|
12
|
+
require('../Button-16e043ec.js');
|
|
13
13
|
require('react-router-dom');
|
|
14
|
-
require('../Icon-
|
|
14
|
+
require('../Icon-405a216c.js');
|
|
15
15
|
require('@jobber/design');
|
|
16
|
-
require('../Typography-
|
|
17
|
-
require('../Text-
|
|
18
|
-
require('../InputValidation-
|
|
16
|
+
require('../Typography-9262511f.js');
|
|
17
|
+
require('../Text-7ce00adb.js');
|
|
18
|
+
require('../InputValidation-97dd0dcf.js');
|
|
19
19
|
require('framer-motion');
|
|
20
|
-
require('../Spinner-
|
|
20
|
+
require('../Spinner-ae4c8a85.js');
|
|
21
21
|
|
|
22
22
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
23
23
|
|
|
24
24
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
const validationMessage = "Please enter a valid email";
|
|
27
27
|
function InputEmail(props) {
|
|
28
|
-
|
|
29
|
-
return (React__default["default"].createElement(FormField.FormField,
|
|
28
|
+
const { validations } = props;
|
|
29
|
+
return (React__default["default"].createElement(FormField.FormField, Object.assign({}, props, { type: "email", validations: Object.assign(Object.assign({}, validations), { validate: checkForValidEmail }) })));
|
|
30
30
|
function checkForValidEmail(value) {
|
|
31
|
-
|
|
31
|
+
const 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,}))$/;
|
|
32
32
|
if (!value) {
|
|
33
33
|
return true;
|
|
34
34
|
}
|