@mackin.com/styleguide 7.1.0-beta.2 → 7.1.2
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/index.d.ts +7 -0
- package/index.js +23 -13
- package/package.json +2 -2
package/index.d.ts
CHANGED
|
@@ -349,6 +349,9 @@ interface InputProps {
|
|
|
349
349
|
onChange?: (value: InputValue, name?: string) => void;
|
|
350
350
|
onFocus?: (event: React.FocusEvent<HTMLInputElement | HTMLTextAreaElement>) => void;
|
|
351
351
|
onBlur?: (event: React.FocusEvent<HTMLInputElement | HTMLTextAreaElement>) => void;
|
|
352
|
+
onKeyDown?: (event: React.KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>) => void;
|
|
353
|
+
onKeyUp?: (event: React.KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>) => void;
|
|
354
|
+
onKeyPress?: (event: React.KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>) => void;
|
|
352
355
|
/** Defaults to 100. Ignored for type=number and type=date. */
|
|
353
356
|
maxLength?: number;
|
|
354
357
|
/** Ignored for type=textarea. */
|
|
@@ -761,6 +764,10 @@ interface FileUploaderProps {
|
|
|
761
764
|
maxBytes?: number;
|
|
762
765
|
multiple?: boolean;
|
|
763
766
|
accept?: string;
|
|
767
|
+
/** Defaults to 'Click or drag and drop files.'*/
|
|
768
|
+
instructionMessage?: string;
|
|
769
|
+
/** For additional info below the instructionMessage. */
|
|
770
|
+
infoMessage?: string | JSX.Element;
|
|
764
771
|
}
|
|
765
772
|
declare const FileUploader: (p: FileUploaderProps) => JSX.Element;
|
|
766
773
|
|
package/index.js
CHANGED
|
@@ -2035,10 +2035,10 @@ const Input = React__namespace.forwardRef((props, ref) => {
|
|
|
2035
2035
|
if (props.type === 'number') {
|
|
2036
2036
|
inputElement = React__namespace.createElement("input", { ref: ref, name: props.name, pattern: props.pattern, style: props.style, autoComplete: autoComplete, tabIndex: props.readOnly ? -1 : undefined, readOnly: props.readOnly,
|
|
2037
2037
|
// set fixed default to defeat pasting stupid numbers
|
|
2038
|
-
maxLength: 50, min: props.min, max: props.max, required: props.required, disabled: props.disabled, id: props.id, className: css.cx(inputStyles, props.inputClassName), placeholder: props.placeholder, type: "number", value: localValue, onFocus: onFocus, onBlur: onBlur, onChange: localOnChange });
|
|
2038
|
+
maxLength: 50, min: props.min, max: props.max, required: props.required, disabled: props.disabled, id: props.id, className: css.cx(inputStyles, props.inputClassName), placeholder: props.placeholder, type: "number", value: localValue, onFocus: onFocus, onBlur: onBlur, onChange: localOnChange, onKeyDown: props.onKeyDown, onKeyUp: props.onKeyUp, onKeyPress: props.onKeyPress });
|
|
2039
2039
|
}
|
|
2040
2040
|
else if (props.type === 'date') {
|
|
2041
|
-
inputElement = React__namespace.createElement("input", { ref: ref, name: props.name, pattern: props.pattern, style: props.style, autoComplete: autoComplete, tabIndex: props.readOnly ? -1 : undefined, readOnly: props.readOnly, maxLength: 10, required: props.required, disabled: props.disabled, id: props.id, className: css.cx(inputStyles, props.inputClassName), placeholder: props.placeholder, type: "text", value: localValue, onFocus: onFocus, onBlur: onBlur, onChange: localOnChange });
|
|
2041
|
+
inputElement = React__namespace.createElement("input", { ref: ref, name: props.name, pattern: props.pattern, style: props.style, autoComplete: autoComplete, tabIndex: props.readOnly ? -1 : undefined, readOnly: props.readOnly, maxLength: 10, required: props.required, disabled: props.disabled, id: props.id, className: css.cx(inputStyles, props.inputClassName), placeholder: props.placeholder, type: "text", value: localValue, onFocus: onFocus, onBlur: onBlur, onChange: localOnChange, onKeyDown: props.onKeyDown, onKeyUp: props.onKeyUp, onKeyPress: props.onKeyPress });
|
|
2042
2042
|
}
|
|
2043
2043
|
else if (props.type === 'textarea') {
|
|
2044
2044
|
inputElement = React__namespace.createElement("textarea", { ref: ref, name: props.name, style: props.style, rows: props.rows || 10, autoComplete: autoComplete, tabIndex: props.readOnly ? -1 : undefined, readOnly: props.readOnly, maxLength: props.maxLength || DEFAULT_MAX_LENGTH, required: props.required, disabled: props.disabled, id: props.id, className: css.cx(css.css `
|
|
@@ -2046,11 +2046,11 @@ const Input = React__namespace.forwardRef((props, ref) => {
|
|
|
2046
2046
|
max-width: 100%;
|
|
2047
2047
|
min-height: ${theme.controls.height};
|
|
2048
2048
|
padding-top: 0.75rem;
|
|
2049
|
-
height:auto;`, props.inputClassName), placeholder: props.placeholder, value: localValue, onFocus: onFocus, onBlur: onBlur, onChange: localOnChange });
|
|
2049
|
+
height:auto;`, props.inputClassName), placeholder: props.placeholder, value: localValue, onFocus: onFocus, onBlur: onBlur, onChange: localOnChange, onKeyDown: props.onKeyDown, onKeyUp: props.onKeyUp, onKeyPress: props.onKeyPress });
|
|
2050
2050
|
}
|
|
2051
2051
|
else {
|
|
2052
2052
|
// text, password, email, and url
|
|
2053
|
-
inputElement = React__namespace.createElement("input", { ref: ref, name: props.name, pattern: props.pattern, style: props.style, autoComplete: autoComplete, tabIndex: props.readOnly ? -1 : undefined, readOnly: props.readOnly, maxLength: props.maxLength || DEFAULT_MAX_LENGTH, required: props.required, disabled: props.disabled, id: props.id, className: css.cx(inputStyles, props.inputClassName), placeholder: props.placeholder, type: props.type, value: localValue, onFocus: onFocus, onBlur: onBlur, onChange: localOnChange });
|
|
2053
|
+
inputElement = React__namespace.createElement("input", { ref: ref, name: props.name, pattern: props.pattern, style: props.style, autoComplete: autoComplete, tabIndex: props.readOnly ? -1 : undefined, readOnly: props.readOnly, maxLength: props.maxLength || DEFAULT_MAX_LENGTH, required: props.required, disabled: props.disabled, id: props.id, className: css.cx(inputStyles, props.inputClassName), placeholder: props.placeholder, type: props.type, value: localValue, onFocus: onFocus, onBlur: onBlur, onChange: localOnChange, onKeyDown: props.onKeyDown, onKeyUp: props.onKeyUp, onKeyPress: props.onKeyPress });
|
|
2054
2054
|
}
|
|
2055
2055
|
const inputWrapperStyles = css.css `
|
|
2056
2056
|
width:100%;
|
|
@@ -2402,7 +2402,7 @@ const OmniLink = (props) => {
|
|
|
2402
2402
|
line-height: ${theme.controls.heightSmall};
|
|
2403
2403
|
`}
|
|
2404
2404
|
`;
|
|
2405
|
-
const mainClassName = css.cx('omniLink', props.className);
|
|
2405
|
+
const mainClassName = css.cx('omniLink', linkStyles, props.className);
|
|
2406
2406
|
const content = React__namespace.createElement(React__namespace.Fragment, null,
|
|
2407
2407
|
React__namespace.createElement("span", null,
|
|
2408
2408
|
props.leftIcon && React__namespace.createElement("span", { className: css.css({
|
|
@@ -2417,9 +2417,9 @@ const OmniLink = (props) => {
|
|
|
2417
2417
|
verticalAlign: 'middle'
|
|
2418
2418
|
}) }, props.rightIcon));
|
|
2419
2419
|
if (props.noRouter) {
|
|
2420
|
-
return (React__namespace.createElement("a", { title: props.title, target: props.target, className:
|
|
2420
|
+
return (React__namespace.createElement("a", { title: props.title, target: props.target, className: mainClassName, href: props.href, onClick: props.onClick }, content));
|
|
2421
2421
|
}
|
|
2422
|
-
return (React__namespace.createElement(reactRouterDom.Link, { title: props.title, className:
|
|
2422
|
+
return (React__namespace.createElement(reactRouterDom.Link, { title: props.title, className: mainClassName, onClick: props.onClick, to: props.href }, content));
|
|
2423
2423
|
};
|
|
2424
2424
|
|
|
2425
2425
|
const ProgressBar = (props) => {
|
|
@@ -2934,7 +2934,7 @@ const hoverClass = css.css({
|
|
|
2934
2934
|
backgroundColor: 'rgba(0,0,0,0.25) !important'
|
|
2935
2935
|
});
|
|
2936
2936
|
const FileUploader = (p) => {
|
|
2937
|
-
var _a, _b, _c, _d, _e, _f;
|
|
2937
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
2938
2938
|
const [message, setMessage] = React.useState(undefined);
|
|
2939
2939
|
const [canUpload, setCanUpload] = React.useState(false);
|
|
2940
2940
|
const [uploading, setUploading] = React.useState(false);
|
|
@@ -2947,7 +2947,7 @@ const FileUploader = (p) => {
|
|
|
2947
2947
|
let filesDisplay = '';
|
|
2948
2948
|
if (!message) {
|
|
2949
2949
|
if (!(files === null || files === void 0 ? void 0 : files.length)) {
|
|
2950
|
-
filesDisplay = `Click or drag and drop files.`;
|
|
2950
|
+
filesDisplay = (_b = p.instructionMessage) !== null && _b !== void 0 ? _b : `Click or drag and drop files.`;
|
|
2951
2951
|
}
|
|
2952
2952
|
else {
|
|
2953
2953
|
filesDisplay = `${files.length.toLocaleString()} file${files.length > 1 ? 's' : ''} selected (${getSizeString(totalFileSize)}): ${files.files.map(f => f.name).join(', ')}`;
|
|
@@ -2972,6 +2972,15 @@ const FileUploader = (p) => {
|
|
|
2972
2972
|
maxBytes: p.maxBytes
|
|
2973
2973
|
});
|
|
2974
2974
|
};
|
|
2975
|
+
let infoMessage;
|
|
2976
|
+
if (p.infoMessage) {
|
|
2977
|
+
if (typeof p.infoMessage === 'string') {
|
|
2978
|
+
infoMessage = React__default['default'].createElement(Text, { noPad: true }, p.infoMessage);
|
|
2979
|
+
}
|
|
2980
|
+
else {
|
|
2981
|
+
infoMessage = p.infoMessage;
|
|
2982
|
+
}
|
|
2983
|
+
}
|
|
2975
2984
|
return (React__default['default'].createElement(Form, { ref: form, className: css.css({
|
|
2976
2985
|
border: theme.controls.border,
|
|
2977
2986
|
borderStyle: 'dashed',
|
|
@@ -3051,19 +3060,20 @@ const FileUploader = (p) => {
|
|
|
3051
3060
|
e.stopPropagation();
|
|
3052
3061
|
onFilesChange(undefined);
|
|
3053
3062
|
}, className: css.css({ marginLeft: '1rem', color: theme.colors.negative }), rightIcon: React__default['default'].createElement(Icon, { id: "clear" }), variant: "inlineLink" }, "Clear"))),
|
|
3063
|
+
infoMessage,
|
|
3054
3064
|
!!(files === null || files === void 0 ? void 0 : files.invalidFiles.length) && (React__default['default'].createElement(InfoPanel, { variant: "error" },
|
|
3055
3065
|
"Invalid files: ",
|
|
3056
3066
|
files.invalidFiles.map(f => f.name).join(', '),
|
|
3057
3067
|
".")),
|
|
3058
3068
|
(files === null || files === void 0 ? void 0 : files.overMaxBytes) && (React__default['default'].createElement(InfoPanel, { variant: "error" },
|
|
3059
3069
|
"Max file size exceeded (",
|
|
3060
|
-
getSizeString((
|
|
3070
|
+
getSizeString((_c = p.maxBytes) !== null && _c !== void 0 ? _c : 0),
|
|
3061
3071
|
").")))),
|
|
3062
3072
|
canUpload && !(files === null || files === void 0 ? void 0 : files.hasErrors) && (React__default['default'].createElement(Button, { className: css.css({
|
|
3063
|
-
width: (
|
|
3073
|
+
width: (_d = p.buttonWidth) !== null && _d !== void 0 ? _d : '10rem',
|
|
3064
3074
|
zIndex: 1,
|
|
3065
|
-
}), waiting: uploading, type: "submit", variant: (
|
|
3066
|
-
message === 'success' && (React__default['default'].createElement(UploadInfoPanel, { variant: "positive", message: (
|
|
3075
|
+
}), waiting: uploading, type: "submit", variant: (_e = p.buttonVariant) !== null && _e !== void 0 ? _e : 'primary' }, (_f = p.buttonText) !== null && _f !== void 0 ? _f : 'Upload')),
|
|
3076
|
+
message === 'success' && (React__default['default'].createElement(UploadInfoPanel, { variant: "positive", message: (_g = p.successMessage) !== null && _g !== void 0 ? _g : 'Upload successful.', onClear: () => setMessage(undefined) })),
|
|
3067
3077
|
message === 'failure' && (React__default['default'].createElement(UploadInfoPanel, { variant: "error", message: fullFailureMessage, onClear: () => setMessage(undefined) }))));
|
|
3068
3078
|
};
|
|
3069
3079
|
const UploadInfoPanel = (p) => {
|
package/package.json
CHANGED