@xqmsg/ui-core 0.26.1 → 0.27.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.
- package/dist/components/input/Input.stories.d.ts +1 -0
- package/dist/components/input/InputTypes.d.ts +2 -2
- package/dist/components/input/StackedNumberInput/StackedNumberInput.d.ts +20 -0
- package/dist/components/input/index.d.ts +10 -2
- package/dist/ui-core.cjs.development.js +96 -2
- package/dist/ui-core.cjs.development.js.map +1 -1
- package/dist/ui-core.cjs.production.min.js +1 -1
- package/dist/ui-core.cjs.production.min.js.map +1 -1
- package/dist/ui-core.esm.js +97 -3
- package/dist/ui-core.esm.js.map +1 -1
- package/package.json +1 -1
- package/src/components/input/Input.stories.tsx +41 -4
- package/src/components/input/InputTypes.ts +5 -1
- package/src/components/input/StackedInput/StackedInput.tsx +1 -1
- package/src/components/input/StackedNumberInput/StackedNumberInput.tsx +121 -0
- package/src/components/input/index.tsx +43 -3
- package/src/theme/customXQChakraTheme.ts +1 -0
|
@@ -8,6 +8,7 @@ interface StoryFormSchema {
|
|
|
8
8
|
prop4?: string;
|
|
9
9
|
prop5?: string;
|
|
10
10
|
prop6?: boolean;
|
|
11
|
+
prop7?: number;
|
|
11
12
|
}
|
|
12
13
|
export default meta;
|
|
13
14
|
export declare const Default: import("@storybook/csf").AnnotatedStoryFn<import("@storybook/react").ReactFramework, InputProps<StoryFormSchema>>;
|
|
@@ -7,7 +7,7 @@ export declare type FieldProps = {
|
|
|
7
7
|
isInvalid?: boolean;
|
|
8
8
|
errorText?: string;
|
|
9
9
|
};
|
|
10
|
-
export declare type InputType = 'text' | 'select' | 'multi-select' | 'pilled-text' | 'textarea' | 'radio' | 'checkbox' | 'switch';
|
|
10
|
+
export declare type InputType = 'text' | 'select' | 'multi-select' | 'pilled-text' | 'textarea' | 'radio' | 'checkbox' | 'switch' | 'number';
|
|
11
11
|
export declare type FieldOption = {
|
|
12
12
|
label: string;
|
|
13
13
|
value: string | 'section_header';
|
|
@@ -18,7 +18,7 @@ export interface ValidationProps {
|
|
|
18
18
|
isInvalid?: boolean;
|
|
19
19
|
errorText?: string;
|
|
20
20
|
}
|
|
21
|
-
export interface InputFieldProps extends Omit<React.DetailedHTMLProps<React.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, 'color' | 'height' | 'width' | 'size' | 'ref' | 'onChange' | 'defaultValue'>, FieldProps, Partial<InputProps> {
|
|
21
|
+
export interface InputFieldProps extends Omit<React.DetailedHTMLProps<React.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, 'color' | 'height' | 'width' | 'size' | 'ref' | 'onChange' | 'defaultValue' | 'min' | 'max' | 'step'>, FieldProps, Partial<InputProps> {
|
|
22
22
|
}
|
|
23
23
|
export interface TextareaFieldProps extends Omit<React.DetailedHTMLProps<React.TextareaHTMLAttributes<HTMLTextAreaElement>, HTMLTextAreaElement>, 'color' | 'height' | 'width' | 'size' | 'ref'>, FieldProps, Partial<TextareaProps> {
|
|
24
24
|
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { InputFieldProps } from '../InputTypes';
|
|
3
|
+
export interface StackedNumberInputProps extends InputFieldProps {
|
|
4
|
+
isRequired?: boolean;
|
|
5
|
+
leftElement?: React.ReactNode;
|
|
6
|
+
rightElement?: React.ReactNode;
|
|
7
|
+
variant?: string;
|
|
8
|
+
label?: string;
|
|
9
|
+
min?: number;
|
|
10
|
+
max?: number;
|
|
11
|
+
step?: number;
|
|
12
|
+
precision?: number;
|
|
13
|
+
showStepper?: boolean;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* A functional React component that renders Chakra UI's `NumberInput` wrapped
|
|
17
|
+
* in an `InputGroup`, following the same pattern as `StackedInput`.
|
|
18
|
+
*/
|
|
19
|
+
declare const StackedNumberInput: React.ForwardRefExoticComponent<StackedNumberInputProps & React.RefAttributes<HTMLInputElement>>;
|
|
20
|
+
export default StackedNumberInput;
|
|
@@ -6,7 +6,7 @@ export interface InputProps<T extends FieldValues = FieldValues> extends Validat
|
|
|
6
6
|
name: string;
|
|
7
7
|
ariaLabel: string;
|
|
8
8
|
placeholder?: string;
|
|
9
|
-
defaultValue?: string;
|
|
9
|
+
defaultValue?: string | number;
|
|
10
10
|
label?: string;
|
|
11
11
|
className?: string;
|
|
12
12
|
options?: FieldOption[];
|
|
@@ -28,9 +28,17 @@ export interface InputProps<T extends FieldValues = FieldValues> extends Validat
|
|
|
28
28
|
truncatePillLength?: number;
|
|
29
29
|
searchable?: boolean;
|
|
30
30
|
overflowMode?: 'scroll' | 'wrap';
|
|
31
|
+
/** Minimum value (numberInput only) */
|
|
32
|
+
min?: number;
|
|
33
|
+
/** Maximum value (numberInput only) */
|
|
34
|
+
max?: number;
|
|
35
|
+
/** Increment/decrement step (numberInput only) */
|
|
36
|
+
step?: number;
|
|
37
|
+
/** Number of decimal places (numberInput only) */
|
|
38
|
+
precision?: number;
|
|
31
39
|
}
|
|
32
40
|
/**
|
|
33
41
|
* A functional React component utilized to render the `Input` component. Utilizes a switch statement
|
|
34
42
|
* to render the correct input based on the `inputType`.
|
|
35
43
|
*/
|
|
36
|
-
export declare function Input<T extends FieldValues>({ inputType, label, ariaLabel, className, placeholder, name, helperText, options, tooltipText, isInvalid, errorText, isRequired, maxLength, defaultValue, fullOptions, control, disabled, rightElement, leftElement, variant, onChange, setValue, setError, clearErrors, separators, loadingOptions, truncatePillLength, searchable, overflowMode, }: InputProps<T>): React.JSX.Element;
|
|
44
|
+
export declare function Input<T extends FieldValues>({ inputType, label, ariaLabel, className, placeholder, name, helperText, options, tooltipText, isInvalid, errorText, isRequired, maxLength, defaultValue, fullOptions, control, disabled, rightElement, leftElement, variant, onChange, setValue, setError, clearErrors, separators, loadingOptions, truncatePillLength, searchable, overflowMode, min, max, step, precision, }: InputProps<T>): React.JSX.Element;
|
|
@@ -819,6 +819,7 @@ var _excluded = ["type", "isRequired", "rightElement", "leftElement", "defaultVa
|
|
|
819
819
|
* A functional React component utilized to render the `StackedInput` component.
|
|
820
820
|
*/
|
|
821
821
|
var StackedInput = /*#__PURE__*/React__default.forwardRef(function (_ref2, _ref) {
|
|
822
|
+
var _props$placeholder;
|
|
822
823
|
var _ref2$type = _ref2.type,
|
|
823
824
|
type = _ref2$type === void 0 ? 'text' : _ref2$type,
|
|
824
825
|
isRequired = _ref2.isRequired,
|
|
@@ -831,7 +832,7 @@ var StackedInput = /*#__PURE__*/React__default.forwardRef(function (_ref2, _ref)
|
|
|
831
832
|
var isMobile = variant === 'mobile';
|
|
832
833
|
var placeholder = isMobile && label ? label : undefined;
|
|
833
834
|
return /*#__PURE__*/React__default.createElement(react.InputGroup, null, leftElement && leftElement, label, /*#__PURE__*/React__default.createElement(react.Input, Object.assign({}, props, {
|
|
834
|
-
placeholder: placeholder,
|
|
835
|
+
placeholder: (_props$placeholder = props.placeholder) != null ? _props$placeholder : placeholder,
|
|
835
836
|
type: type,
|
|
836
837
|
isRequired: isRequired,
|
|
837
838
|
ref: _ref,
|
|
@@ -1637,6 +1638,69 @@ var StackedMultiSelect = /*#__PURE__*/React__default.forwardRef(function (_ref2,
|
|
|
1637
1638
|
})));
|
|
1638
1639
|
});
|
|
1639
1640
|
|
|
1641
|
+
/**
|
|
1642
|
+
* A functional React component that renders Chakra UI's `NumberInput` wrapped
|
|
1643
|
+
* in an `InputGroup`, following the same pattern as `StackedInput`.
|
|
1644
|
+
*/
|
|
1645
|
+
var StackedNumberInput = /*#__PURE__*/React__default.forwardRef(function (_ref, ref) {
|
|
1646
|
+
var name = _ref.name,
|
|
1647
|
+
id = _ref.id,
|
|
1648
|
+
placeholder = _ref.placeholder,
|
|
1649
|
+
isRequired = _ref.isRequired,
|
|
1650
|
+
isInvalid = _ref.isInvalid,
|
|
1651
|
+
disabled = _ref.disabled,
|
|
1652
|
+
value = _ref.value,
|
|
1653
|
+
defaultValue = _ref.defaultValue,
|
|
1654
|
+
min = _ref.min,
|
|
1655
|
+
max = _ref.max,
|
|
1656
|
+
_ref$step = _ref.step,
|
|
1657
|
+
step = _ref$step === void 0 ? 1 : _ref$step,
|
|
1658
|
+
_ref$precision = _ref.precision,
|
|
1659
|
+
precision = _ref$precision === void 0 ? 0 : _ref$precision,
|
|
1660
|
+
_ref$showStepper = _ref.showStepper,
|
|
1661
|
+
showStepper = _ref$showStepper === void 0 ? false : _ref$showStepper,
|
|
1662
|
+
variant = _ref.variant,
|
|
1663
|
+
className = _ref.className,
|
|
1664
|
+
label = _ref.label,
|
|
1665
|
+
leftElement = _ref.leftElement,
|
|
1666
|
+
rightElement = _ref.rightElement,
|
|
1667
|
+
_onChange = _ref.onChange,
|
|
1668
|
+
onBlur = _ref.onBlur;
|
|
1669
|
+
var isMobile = variant === 'mobile';
|
|
1670
|
+
var resolvedPlaceholder = isMobile && label ? label : placeholder;
|
|
1671
|
+
var inputValue = typeof value === 'string' || typeof value === 'number' ? value : undefined;
|
|
1672
|
+
var normalizedValue = precision === 0 && inputValue !== undefined && inputValue !== '' ? Number.isNaN(Number(inputValue)) ? inputValue : String(Math.round(Number(inputValue))) : inputValue;
|
|
1673
|
+
return /*#__PURE__*/React__default.createElement(react.InputGroup, null, leftElement && leftElement, label && !isMobile && label, /*#__PURE__*/React__default.createElement(react.NumberInput, {
|
|
1674
|
+
id: id,
|
|
1675
|
+
name: name,
|
|
1676
|
+
isRequired: isRequired,
|
|
1677
|
+
isInvalid: isInvalid,
|
|
1678
|
+
isDisabled: disabled,
|
|
1679
|
+
value: normalizedValue,
|
|
1680
|
+
defaultValue: defaultValue,
|
|
1681
|
+
min: min,
|
|
1682
|
+
max: max,
|
|
1683
|
+
step: step,
|
|
1684
|
+
precision: precision,
|
|
1685
|
+
onChange: function onChange(_, valueAsNumber) {
|
|
1686
|
+
return _onChange == null ? void 0 : _onChange({
|
|
1687
|
+
target: {
|
|
1688
|
+
name: name,
|
|
1689
|
+
value: Number.isNaN(valueAsNumber) ? '' : precision === 0 ? String(Math.round(valueAsNumber)) : String(valueAsNumber)
|
|
1690
|
+
}
|
|
1691
|
+
});
|
|
1692
|
+
},
|
|
1693
|
+
className: className,
|
|
1694
|
+
variant: variant === 'mobile' ? 'mobile' : 'default',
|
|
1695
|
+
width: "100%"
|
|
1696
|
+
}, /*#__PURE__*/React__default.createElement(react.NumberInputField, {
|
|
1697
|
+
ref: ref,
|
|
1698
|
+
placeholder: resolvedPlaceholder,
|
|
1699
|
+
onBlur: onBlur
|
|
1700
|
+
}), showStepper && /*#__PURE__*/React__default.createElement(react.NumberInputStepper, null, /*#__PURE__*/React__default.createElement(react.NumberIncrementStepper, null), /*#__PURE__*/React__default.createElement(react.NumberDecrementStepper, null))), rightElement && rightElement);
|
|
1701
|
+
});
|
|
1702
|
+
StackedNumberInput.displayName = 'StackedNumberInput';
|
|
1703
|
+
|
|
1640
1704
|
/**
|
|
1641
1705
|
* A functional React component utilized to render the `StackedPilledInput` component.
|
|
1642
1706
|
*/
|
|
@@ -2057,7 +2121,11 @@ function Input(_ref) {
|
|
|
2057
2121
|
truncatePillLength = _ref.truncatePillLength,
|
|
2058
2122
|
searchable = _ref.searchable,
|
|
2059
2123
|
_ref$overflowMode = _ref.overflowMode,
|
|
2060
|
-
overflowMode = _ref$overflowMode === void 0 ? 'scroll' : _ref$overflowMode
|
|
2124
|
+
overflowMode = _ref$overflowMode === void 0 ? 'scroll' : _ref$overflowMode,
|
|
2125
|
+
min = _ref.min,
|
|
2126
|
+
max = _ref.max,
|
|
2127
|
+
step = _ref.step,
|
|
2128
|
+
precision = _ref.precision;
|
|
2061
2129
|
function selectedInputField(onChange, onBlur, ref, value) {
|
|
2062
2130
|
switch (inputType) {
|
|
2063
2131
|
case 'text':
|
|
@@ -2081,6 +2149,31 @@ function Input(_ref) {
|
|
|
2081
2149
|
variant: variant,
|
|
2082
2150
|
label: label
|
|
2083
2151
|
});
|
|
2152
|
+
case 'number':
|
|
2153
|
+
return /*#__PURE__*/React__default.createElement(StackedNumberInput, {
|
|
2154
|
+
className: "input-" + inputType + " " + (className != null ? className : ''),
|
|
2155
|
+
"aria-label": ariaLabel,
|
|
2156
|
+
name: name,
|
|
2157
|
+
id: name,
|
|
2158
|
+
placeholder: placeholder,
|
|
2159
|
+
maxLength: maxLength,
|
|
2160
|
+
isRequired: isRequired,
|
|
2161
|
+
isInvalid: isInvalid,
|
|
2162
|
+
onChange: onChange,
|
|
2163
|
+
onBlur: onBlur,
|
|
2164
|
+
ref: ref,
|
|
2165
|
+
rightElement: rightElement,
|
|
2166
|
+
leftElement: leftElement,
|
|
2167
|
+
disabled: disabled,
|
|
2168
|
+
defaultValue: defaultValue,
|
|
2169
|
+
value: value,
|
|
2170
|
+
variant: variant,
|
|
2171
|
+
label: label,
|
|
2172
|
+
min: min,
|
|
2173
|
+
max: max,
|
|
2174
|
+
step: step,
|
|
2175
|
+
precision: precision
|
|
2176
|
+
});
|
|
2084
2177
|
case 'radio':
|
|
2085
2178
|
return /*#__PURE__*/React__default.createElement(StackedRadioGroup, {
|
|
2086
2179
|
className: "input-" + inputType + " " + (className != null ? className : ''),
|
|
@@ -5047,6 +5140,7 @@ var customXQChakraTheme = /*#__PURE__*/react.extendTheme( /*#__PURE__*/_extends$
|
|
|
5047
5140
|
FormError: FormError,
|
|
5048
5141
|
FormLabel: FormLabel,
|
|
5049
5142
|
Input: Input$1,
|
|
5143
|
+
NumberInput: Input$1,
|
|
5050
5144
|
Link: Link$1,
|
|
5051
5145
|
Menu: Menu$1,
|
|
5052
5146
|
Modal: Modal$1,
|