@mackin.com/styleguide 7.1.0-beta.3 → 7.2.0

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.
Files changed (3) hide show
  1. package/index.d.ts +7 -0
  2. package/index.js +20 -10
  3. 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%;
@@ -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((_b = p.maxBytes) !== null && _b !== void 0 ? _b : 0),
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: (_c = p.buttonWidth) !== null && _c !== void 0 ? _c : '10rem',
3073
+ width: (_d = p.buttonWidth) !== null && _d !== void 0 ? _d : '10rem',
3064
3074
  zIndex: 1,
3065
- }), waiting: uploading, type: "submit", variant: (_d = p.buttonVariant) !== null && _d !== void 0 ? _d : 'primary' }, (_e = p.buttonText) !== null && _e !== void 0 ? _e : 'Upload')),
3066
- message === 'success' && (React__default['default'].createElement(UploadInfoPanel, { variant: "positive", message: (_f = p.successMessage) !== null && _f !== void 0 ? _f : 'Upload successful.', onClear: () => setMessage(undefined) })),
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
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@mackin.com/styleguide",
3
- "version": "7.1.0-beta.3",
3
+ "version": "7.2.0",
4
4
  "description": "",
5
5
  "main": "./index.js",
6
- "types": "./index.d.ts",
6
+ "types": "./index.d.ts",
7
7
  "scripts": {},
8
8
  "author": "Mackin",
9
9
  "license": "ISC",