@televet/kibble-ui 1.17.1 → 1.17.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.
@@ -5,7 +5,7 @@ export interface DatePickerProps {
5
5
  date: Date | null;
6
6
  onDateChange?: (date: Date | null) => void;
7
7
  dateFormat?: string | DateFormats;
8
- inputProps?: Omit<TextInputProps, 'onChange' | 'value'>;
8
+ inputProps?: Omit<TextInputProps, 'onChange' | 'value' | 'isClearable' | 'onClear'>;
9
9
  placement?: PlacementWithLogical;
10
10
  minYear?: number;
11
11
  maxYear?: number;
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  import { Dict } from 'shared/types';
3
+ import { HelperTextAlignment } from './formControl.types';
3
4
  export interface WithFormControlProps {
4
5
  errorText?: string;
5
6
  helperText?: string;
@@ -11,6 +12,6 @@ export interface WithFormControlProps {
11
12
  label?: string;
12
13
  labelStyle?: Dict;
13
14
  formControlStyle?: Dict;
14
- helperTextAlignment?: 'start' | 'end';
15
+ helperTextAlignment?: HelperTextAlignment;
15
16
  }
16
17
  export declare function withFormControl<P extends WithFormControlProps>(Component: React.ComponentType<P>): React.FC<P>;
@@ -0,0 +1,2 @@
1
+ export declare type FormControlSize = 'sm' | 'md' | 'lg';
2
+ export declare type HelperTextAlignment = 'start' | 'end';
@@ -0,0 +1,6 @@
1
+ import { FormControlSize } from 'components/Forms/FormControl/formControl.types';
2
+ export interface ClearButtonProps {
3
+ handleClear?: () => void;
4
+ size?: FormControlSize;
5
+ }
6
+ export declare const ClearButton: ({ handleClear, size }: ClearButtonProps) => JSX.Element;
@@ -1,10 +1,21 @@
1
1
  import React, { ForwardedRef, ReactElement } from 'react';
2
2
  import { InputProps as CInputProps } from '@chakra-ui/react';
3
3
  import { WithFormControlProps } from '../FormControl/formControl.component';
4
- export interface TextInputProps extends WithFormControlProps, CInputProps {
4
+ import { FormControlSize } from '../FormControl/formControl.types';
5
+ export interface TextInputBaseProps extends WithFormControlProps, CInputProps {
5
6
  leftElement?: ReactElement;
6
7
  rightElement?: ReactElement;
7
8
  inputRef?: ForwardedRef<HTMLInputElement>;
9
+ size?: FormControlSize;
8
10
  }
11
+ export interface DefaultTextInputProps extends TextInputBaseProps {
12
+ isClearable?: never;
13
+ onClear?: never;
14
+ }
15
+ export interface ClearableTextInputProps extends TextInputBaseProps {
16
+ isClearable: boolean;
17
+ onClear: (val: string | number | readonly string[]) => void;
18
+ }
19
+ export declare type TextInputProps = DefaultTextInputProps | ClearableTextInputProps;
9
20
  declare const WrappedTextInput: React.ForwardRefExoticComponent<TextInputProps & React.RefAttributes<HTMLInputElement>>;
10
21
  export { WrappedTextInput as TextInput };
package/build/index.js CHANGED
@@ -14649,12 +14649,33 @@ var FormControlConfig = {
14649
14649
 
14650
14650
  var TextareaConfig = __assign({}, FormControlConfig);
14651
14651
 
14652
- var TextInput = withFormControl(function (props) {
14653
- // the disabled styles coming from the FormControlConfig weren't getting applied to the TextInput, so they're added inline instead
14654
- var leftElement = props.leftElement, rightElement = props.rightElement, inputRef = props.inputRef; props.isFieldInline; var domProps = __rest(props, ["leftElement", "rightElement", "inputRef", "isFieldInline"]);
14652
+ var closeButtonSize = {
14653
+ sm: 5,
14654
+ md: 5,
14655
+ lg: 6,
14656
+ };
14657
+ var ClearButton = function (_a) {
14658
+ var handleClear = _a.handleClear, _b = _a.size, size = _b === void 0 ? 'md' : _b;
14659
+ var colors = useTheme().colors;
14660
+ return (React__default["default"].createElement(react.Button, { color: colors.icon.light.default, display: "inline-flex", minW: "auto", w: closeButtonSize[size], h: closeButtonSize[size], variant: "unstyled", opacity: 0.5, _hover: { opacity: 0.8 }, _active: { opacity: 1 }, mr: size === 'sm' ? 3 : 4, onClick: handleClear },
14661
+ React__default["default"].createElement(Icon, { name: "close", color: "currentColor", size: size === 'lg' ? 'sm' : 'xs' })));
14662
+ };
14663
+
14664
+ var TextInput = withFormControl(function (_a) {
14665
+ var _b = _a.isClearable, isClearable = _b === void 0 ? false : _b, _c = _a.size, size = _c === void 0 ? 'md' : _c, props = __rest(_a, ["isClearable", "size"]);
14666
+ var leftElement = props.leftElement, inputRef = props.inputRef; props.isFieldInline; var onClear = props.onClear, value = props.value, domProps = __rest(props, ["leftElement", "inputRef", "isFieldInline", "onClear", "value"]);
14667
+ var rightElement = props.rightElement;
14668
+ var handleClear = function () {
14669
+ if (onClear) {
14670
+ onClear(value || '');
14671
+ }
14672
+ };
14673
+ if (isClearable && !!value) {
14674
+ rightElement = React__default["default"].createElement(ClearButton, { size: size, handleClear: handleClear });
14675
+ }
14655
14676
  return (React__default["default"].createElement(react.InputGroup, null,
14656
14677
  leftElement ? React__default["default"].createElement(react.InputLeftElement, { children: leftElement, h: "100%" }) : null,
14657
- React__default["default"].createElement(react.Input, __assign({ ref: inputRef }, domProps)),
14678
+ React__default["default"].createElement(react.Input, __assign({}, domProps, { ref: inputRef, size: size, value: value })),
14658
14679
  rightElement ? React__default["default"].createElement(react.InputRightElement, { children: rightElement, h: "100%" }) : null));
14659
14680
  });
14660
14681
  var WrappedTextInput = React.forwardRef(function (props, ref) { return (React__default["default"].createElement(TextInput, __assign({ inputRef: ref }, props))); });