@scaleflex/ui-tw 0.0.30 → 0.0.32

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.
@@ -1,3 +1,3 @@
1
1
  import React from 'react';
2
2
  import { ComboboxMultiInlineProps } from '../combobox.types';
3
- export declare function ComboboxMultiInline({ options, value, onChange, placeholder, className, disabled, size, readOnly, showClear, popoverClassName, }: ComboboxMultiInlineProps): React.JSX.Element;
3
+ export declare function ComboboxMultiInline({ options, value, onChange, placeholder, className, disabled, size, readOnly, showClear, popoverClassName, ...rest }: ComboboxMultiInlineProps): React.JSX.Element;
@@ -1,5 +1,7 @@
1
1
  import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
+ var _excluded = ["options", "value", "onChange", "placeholder", "className", "disabled", "size", "readOnly", "showClear", "popoverClassName"];
3
5
  import { Popover } from '@scaleflex/ui-tw/popover';
4
6
  import { FormSize } from '@scaleflex/ui-tw/types/form-size';
5
7
  import React from 'react';
@@ -21,7 +23,8 @@ export function ComboboxMultiInline(_ref) {
21
23
  readOnly = _ref$readOnly === void 0 ? false : _ref$readOnly,
22
24
  _ref$showClear = _ref.showClear,
23
25
  showClear = _ref$showClear === void 0 ? true : _ref$showClear,
24
- popoverClassName = _ref.popoverClassName;
26
+ popoverClassName = _ref.popoverClassName,
27
+ rest = _objectWithoutProperties(_ref, _excluded);
25
28
  var _useState = useState(false),
26
29
  _useState2 = _slicedToArray(_useState, 2),
27
30
  open = _useState2[0],
@@ -56,7 +59,8 @@ export function ComboboxMultiInline(_ref) {
56
59
  selected: selectedLabels.length > 0,
57
60
  onClearAll: function onClearAll() {
58
61
  return onChange([]);
59
- }
62
+ },
63
+ "aria-invalid": rest['aria-invalid']
60
64
  }, displayValue), /*#__PURE__*/React.createElement(ComboboxContent, {
61
65
  className: popoverClassName,
62
66
  options: options,
@@ -66,7 +66,7 @@ export function ComboboxMultiTag(_ref) {
66
66
  }, /*#__PURE__*/React.createElement("button", {
67
67
  role: "combobox",
68
68
  "aria-expanded": open,
69
- "area-invalid": rest['aria-invalid'],
69
+ "aria-invalid": rest['aria-invalid'],
70
70
  className: cn.apply(void 0, ['flex w-full', isSelected ? 'flex-col' : 'items-center'].concat(_toConsumableArray(getBaseInputClasses()), [readOnly && readOnlyClassNames, selectionHighlightClassNames, focusRingClassNames, !isSelected && textareaVariants({
71
71
  size: size
72
72
  }), !isSelected && comboboxMultiTagsDefaultSizeOptions[size], className])),
@@ -1,3 +1,3 @@
1
1
  import * as React from 'react';
2
2
  import { ComboboxSingleProps } from '../combobox.types';
3
- export declare function ComboboxSingle({ options, value, onChange, placeholder, className, disabled, popoverClassName, size, readOnly, showClear, ...rest }: ComboboxSingleProps): React.JSX.Element;
3
+ export declare function ComboboxSingle({ options, value, onChange, placeholder, className, disabled, popoverClassName, size, readOnly, showClear, formItemId, ...rest }: ComboboxSingleProps): React.JSX.Element;
@@ -1,6 +1,6 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
- var _excluded = ["options", "value", "onChange", "placeholder", "className", "disabled", "popoverClassName", "size", "readOnly", "showClear"];
3
+ var _excluded = ["options", "value", "onChange", "placeholder", "className", "disabled", "popoverClassName", "size", "readOnly", "showClear", "formItemId"];
4
4
  import { Popover } from '@scaleflex/ui-tw/popover';
5
5
  import { FormSize } from '@scaleflex/ui-tw/types/form-size';
6
6
  import * as React from 'react';
@@ -25,6 +25,7 @@ export function ComboboxSingle(_ref) {
25
25
  readOnly = _ref$readOnly === void 0 ? false : _ref$readOnly,
26
26
  _ref$showClear = _ref.showClear,
27
27
  showClear = _ref$showClear === void 0 ? true : _ref$showClear,
28
+ formItemId = _ref.formItemId,
28
29
  rest = _objectWithoutProperties(_ref, _excluded);
29
30
  var _useState = useState(false),
30
31
  _useState2 = _slicedToArray(_useState, 2),
@@ -47,7 +48,8 @@ export function ComboboxSingle(_ref) {
47
48
  },
48
49
  selected: !!selectedLabel,
49
50
  showClear: showClear,
50
- "aria-invalid": rest['aria-invalid']
51
+ "aria-invalid": rest['aria-invalid'],
52
+ formItemId: formItemId
51
53
  }, selectedLabel || placeholder), /*#__PURE__*/React.createElement(ComboboxContent, {
52
54
  className: popoverClassName,
53
55
  options: options,
@@ -1,4 +1,4 @@
1
1
  import * as React from 'react';
2
2
  import { ComboboxContentProps, ComboboxTriggerProps } from './combobox.types';
3
- export declare function ComboboxTrigger({ children, open, disabled, readOnly, size, className, selected, showClear, onClearAll, ...rest }: ComboboxTriggerProps): React.JSX.Element;
3
+ export declare function ComboboxTrigger({ children, open, disabled, readOnly, size, className, selected, showClear, onClearAll, formItemId, ...rest }: ComboboxTriggerProps): React.JSX.Element;
4
4
  export declare function ComboboxContent({ options, value: selectedValue, onSelect, size, multiple, className, }: ComboboxContentProps): React.JSX.Element;
@@ -1,6 +1,6 @@
1
1
  import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
- var _excluded = ["children", "open", "disabled", "readOnly", "size", "className", "selected", "showClear", "onClearAll"];
3
+ var _excluded = ["children", "open", "disabled", "readOnly", "size", "className", "selected", "showClear", "onClearAll", "formItemId"];
4
4
  import { buttonVariants } from '@scaleflex/ui-tw/button';
5
5
  import { ButtonVariant, buttonBaseClassNames } from '@scaleflex/ui-tw/button/button.constants';
6
6
  import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from '@scaleflex/ui-tw/command';
@@ -32,6 +32,7 @@ export function ComboboxTrigger(_ref) {
32
32
  _ref$showClear = _ref.showClear,
33
33
  showClear = _ref$showClear === void 0 ? false : _ref$showClear,
34
34
  onClearAll = _ref.onClearAll,
35
+ formItemId = _ref.formItemId,
35
36
  rest = _objectWithoutProperties(_ref, _excluded);
36
37
  var _getToolbarSizes = getToolbarSizes(size),
37
38
  iconSize = _getToolbarSizes.iconSize;
@@ -41,6 +42,7 @@ export function ComboboxTrigger(_ref) {
41
42
  return /*#__PURE__*/React.createElement(PopoverTrigger, {
42
43
  asChild: true
43
44
  }, /*#__PURE__*/React.createElement("button", {
45
+ id: formItemId,
44
46
  role: "combobox",
45
47
  "aria-expanded": open,
46
48
  "aria-invalid": rest['aria-invalid'],
@@ -6,6 +6,7 @@ export type ClearEvent = MouseEvent | KeyboardEvent;
6
6
  export type ComboboxTriggerProps = {
7
7
  children: ReactNode;
8
8
  open: boolean;
9
+ formItemId?: string;
9
10
  disabled?: boolean;
10
11
  readOnly?: boolean;
11
12
  size?: FormSizeType;
@@ -47,6 +48,7 @@ interface ComboboxCommonProps {
47
48
  size?: FormSizeType;
48
49
  popoverClassName?: string;
49
50
  'aria-invalid'?: boolean;
51
+ formItemId?: string;
50
52
  }
51
53
  export interface ComboboxSingleProps extends ComboboxCommonProps {
52
54
  value: string;
@@ -0,0 +1,5 @@
1
+ import { FormComboboxFieldProps } from '@scaleflex/ui-tw/form/form.types';
2
+ import React from 'react';
3
+ import { FieldValues, Path } from 'react-hook-form';
4
+ declare function FormComboboxField<TFieldValues extends FieldValues, TName extends Path<TFieldValues>>({ variant, comboboxProps, ...rest }: FormComboboxFieldProps<TFieldValues, TName>): React.JSX.Element;
5
+ export { FormComboboxField };
@@ -0,0 +1,49 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
+ var _excluded = ["variant", "comboboxProps"];
5
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
6
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
7
+ import { ComboboxMultiInline, ComboboxMultiTag, ComboboxSingle } from '@scaleflex/ui-tw/combobox';
8
+ import { useFormField } from '@scaleflex/ui-tw/form';
9
+ import { FormFieldGroup } from '@scaleflex/ui-tw/form';
10
+ import React from 'react';
11
+ function FormComboboxField(_ref) {
12
+ var _ref$variant = _ref.variant,
13
+ variant = _ref$variant === void 0 ? 'single' : _ref$variant,
14
+ _ref$comboboxProps = _ref.comboboxProps,
15
+ comboboxProps = _ref$comboboxProps === void 0 ? {} : _ref$comboboxProps,
16
+ rest = _objectWithoutProperties(_ref, _excluded);
17
+ var readOnly = rest.readOnly,
18
+ disabled = rest.disabled;
19
+ return /*#__PURE__*/React.createElement(FormFieldGroup, rest, function (field, args) {
20
+ var _useFormField = useFormField(),
21
+ error = _useFormField.error,
22
+ formItemId = _useFormField.formItemId;
23
+ var commonProps = _objectSpread(_objectSpread({}, comboboxProps), {}, {
24
+ options: comboboxProps.options || [],
25
+ placeholder: comboboxProps.placeholder,
26
+ readOnly: readOnly,
27
+ disabled: disabled,
28
+ size: args === null || args === void 0 ? void 0 : args.size,
29
+ formItemId: formItemId,
30
+ value: field.value,
31
+ onChange: field.onChange,
32
+ 'aria-invalid': !!error
33
+ });
34
+ switch (variant) {
35
+ case 'multi-inline':
36
+ return /*#__PURE__*/React.createElement(ComboboxMultiInline, _extends({}, commonProps, {
37
+ showClear: comboboxProps.showClear
38
+ }));
39
+ case 'multi-tags':
40
+ return /*#__PURE__*/React.createElement(ComboboxMultiTag, commonProps);
41
+ case 'single':
42
+ default:
43
+ return /*#__PURE__*/React.createElement(ComboboxSingle, _extends({}, commonProps, {
44
+ showClear: comboboxProps.showClear
45
+ }));
46
+ }
47
+ });
48
+ }
49
+ export { FormComboboxField };
@@ -1,3 +1,4 @@
1
+ import { ComboboxMultiInlineProps, ComboboxMultiTagProps, ComboboxSingleProps } from '@scaleflex/ui-tw/combobox/combobox.types';
1
2
  import { InputProps } from '@scaleflex/ui-tw/input';
2
3
  import { SelectProps } from '@scaleflex/ui-tw/select/select.types';
3
4
  import { SwitchProps } from '@scaleflex/ui-tw/switch/switch.types';
@@ -15,6 +16,7 @@ export type FormItemContextValue = {
15
16
  export type FormFieldContextValue<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = {
16
17
  name: TName;
17
18
  };
19
+ export type ComboboxVariant = 'single' | 'multi-inline' | 'multi-tags';
18
20
  export interface FormFieldArgs {
19
21
  size?: FormSizeType;
20
22
  readOnly?: boolean;
@@ -68,6 +70,11 @@ export type FormSelectFieldProps<TFieldValues extends FieldValues, TName extends
68
70
  showGroupSeparator?: boolean;
69
71
  selectProps?: FormSelectProps;
70
72
  };
73
+ export type FormComboboxFieldProps<TFieldValues extends FieldValues, TName extends Path<TFieldValues>> = Omit<FormFieldGroupProps<TFieldValues, TName>, 'children'> & {
74
+ showGroupSeparator?: boolean;
75
+ variant?: ComboboxVariant;
76
+ comboboxProps?: Partial<ComboboxSingleProps & ComboboxMultiInlineProps & ComboboxMultiTagProps>;
77
+ };
71
78
  export interface FormSelectInnerProps<TFieldValues extends FieldValues, TName extends Path<TFieldValues>> {
72
79
  field: ControllerRenderProps<TFieldValues, TName>;
73
80
  args: FormFieldArgs | undefined;
package/form/index.d.ts CHANGED
@@ -7,3 +7,4 @@ export { FormPasswordField } from './components/form-password-field.component';
7
7
  export { FormTextareaField } from './components/form-textarea-field.component';
8
8
  export { FormSwitchField } from './components/form-switch-field.component';
9
9
  export { FormSelectField } from './components/form-select-field.component';
10
+ export { FormComboboxField } from './components/form-combobox-field.component';
package/form/index.js CHANGED
@@ -6,4 +6,5 @@ export { FormInputField } from './components/form-input-field.component';
6
6
  export { FormPasswordField } from './components/form-password-field.component';
7
7
  export { FormTextareaField } from './components/form-textarea-field.component';
8
8
  export { FormSwitchField } from './components/form-switch-field.component';
9
- export { FormSelectField } from './components/form-select-field.component';
9
+ export { FormSelectField } from './components/form-select-field.component';
10
+ export { FormComboboxField } from './components/form-combobox-field.component';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scaleflex/ui-tw",
3
- "version": "0.0.30",
3
+ "version": "0.0.32",
4
4
  "author": "scaleflex",
5
5
  "repository": "github:scaleflex/ui",
6
6
  "homepage": "https://github.com/scaleflex/ui/blob/master/README.md",
@@ -20,7 +20,7 @@
20
20
  "@radix-ui/react-slot": "^1.1.2",
21
21
  "@radix-ui/react-switch": "^1.0.1",
22
22
  "@radix-ui/react-tooltip": "^1.2.6",
23
- "@scaleflex/icons-tw": "^0.0.30",
23
+ "@scaleflex/icons-tw": "^0.0.32",
24
24
  "@types/lodash.merge": "^4.6.9",
25
25
  "class-variance-authority": "^0.7.1",
26
26
  "cmdk": "^1.1.1",
@@ -1,5 +0,0 @@
1
- import React from 'react';
2
- import { FieldValues, Path } from 'react-hook-form';
3
- import { FormSelectFieldProps } from '../form.types';
4
- declare function FormSelectField<TFieldValues extends FieldValues, TName extends Path<TFieldValues>>({ selectProps, showGroupSeparator, ...rest }: FormSelectFieldProps<TFieldValues, TName>): React.JSX.Element;
5
- export { FormSelectField };
@@ -1,57 +0,0 @@
1
- import _extends from "@babel/runtime/helpers/extends";
2
- import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
- var _excluded = ["icon", "placeholder", "options"],
4
- _excluded2 = ["selectProps", "showGroupSeparator"];
5
- import { useFormField } from '@scaleflex/ui-tw/form';
6
- import { FormFieldGroup } from '@scaleflex/ui-tw/form';
7
- import { Selector } from '@scaleflex/ui-tw/select';
8
- import React from 'react';
9
- function FormSelectInner(_ref) {
10
- var field = _ref.field,
11
- args = _ref.args,
12
- selectProps = _ref.selectProps,
13
- readOnly = _ref.readOnly,
14
- disabled = _ref.disabled,
15
- className = _ref.className,
16
- showGroupSeparator = _ref.showGroupSeparator;
17
- var _useFormField = useFormField(),
18
- error = _useFormField.error,
19
- formItemId = _useFormField.formItemId;
20
- var _ref2 = selectProps || {},
21
- icon = _ref2.icon,
22
- placeholder = _ref2.placeholder,
23
- options = _ref2.options,
24
- restSelectProps = _objectWithoutProperties(_ref2, _excluded);
25
- return /*#__PURE__*/React.createElement(Selector, _extends({
26
- value: field.value,
27
- onChange: field.onChange,
28
- placeholder: placeholder,
29
- disabled: disabled,
30
- readOnly: readOnly,
31
- size: args === null || args === void 0 ? void 0 : args.size,
32
- className: className,
33
- icon: icon,
34
- options: options || [],
35
- showGroupSeparator: showGroupSeparator,
36
- formItemId: formItemId,
37
- "aria-invalid": !!error
38
- }, restSelectProps));
39
- }
40
- function FormSelectField(_ref3) {
41
- var selectProps = _ref3.selectProps,
42
- showGroupSeparator = _ref3.showGroupSeparator,
43
- rest = _objectWithoutProperties(_ref3, _excluded2);
44
- var readOnly = rest.readOnly,
45
- disabled = rest.disabled;
46
- return /*#__PURE__*/React.createElement(FormFieldGroup, rest, function (field, args) {
47
- return /*#__PURE__*/React.createElement(FormSelectInner, {
48
- field: field,
49
- args: args,
50
- selectProps: selectProps,
51
- readOnly: readOnly,
52
- disabled: disabled,
53
- showGroupSeparator: showGroupSeparator
54
- });
55
- });
56
- }
57
- export { FormSelectField };