@infonomic/uikit 6.4.0 → 6.5.1
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/inputs/@types/autocomplete.d.ts +35 -0
- package/dist/components/inputs/@types/autocomplete.d.ts.map +1 -0
- package/dist/components/inputs/@types/autocomplete.js +11 -0
- package/dist/components/inputs/autocomplete.d.ts +42 -0
- package/dist/components/inputs/autocomplete.d.ts.map +1 -0
- package/dist/components/inputs/autocomplete.js +87 -0
- package/dist/components/inputs/autocomplete.module.css +371 -0
- package/dist/components/inputs/autocomplete.module.js +36 -0
- package/dist/components/inputs/autocomplete_module.css +312 -0
- package/dist/components/inputs/calendar.js +2 -2
- package/dist/components/inputs/index.js +1 -0
- package/dist/components/notifications/@types/alert.js +1 -0
- package/dist/components/notifications/@types/toast.js +1 -0
- package/dist/components/pager/hooks/types/usePagination.js +1 -0
- package/dist/components/tooltip/tooltip_module.css +1 -1
- package/dist/icons/types/icon.js +1 -0
- package/dist/loaders/@types/index.js +1 -0
- package/dist/react.d.ts +1 -0
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js +1 -0
- package/dist/utils/polymorphic.js +1 -0
- package/package.json +23 -19
- package/src/components/inputs/@types/autocomplete.ts +39 -0
- package/src/components/inputs/autocomplete.module.css +371 -0
- package/src/components/inputs/autocomplete.stories.tsx +184 -0
- package/src/components/inputs/autocomplete.tsx +173 -0
- package/src/components/inputs/index.tsx +1 -0
- package/src/react.ts +1 -0
- package/dist/tsconfig.build.tsbuildinfo +0 -1
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
|
|
3
|
+
import type React from 'react'
|
|
4
|
+
|
|
5
|
+
import { Autocomplete as AutocompletePrimitive } from '@base-ui/react/autocomplete'
|
|
6
|
+
import cx from 'classnames'
|
|
7
|
+
|
|
8
|
+
import styles from './autocomplete.module.css'
|
|
9
|
+
import { ErrorText } from './error-text.jsx'
|
|
10
|
+
import { HelpText } from './help-text.jsx'
|
|
11
|
+
import { Label } from './label.jsx'
|
|
12
|
+
import type { Intent, Size, Variant } from './@types/autocomplete.js'
|
|
13
|
+
|
|
14
|
+
type AutocompleteRootProps = React.ComponentProps<typeof AutocompletePrimitive.Root>
|
|
15
|
+
|
|
16
|
+
export interface AutocompleteProps<Item = string>
|
|
17
|
+
extends Omit<AutocompleteRootProps, 'items' | 'children'> {
|
|
18
|
+
id: string
|
|
19
|
+
label?: string
|
|
20
|
+
variant?: Variant
|
|
21
|
+
inputSize?: Size
|
|
22
|
+
intent?: Intent
|
|
23
|
+
required?: boolean
|
|
24
|
+
placeholder?: string
|
|
25
|
+
autoComplete?: string
|
|
26
|
+
error?: boolean
|
|
27
|
+
helpText?: string
|
|
28
|
+
errorText?: string
|
|
29
|
+
emptyText?: string
|
|
30
|
+
className?: string
|
|
31
|
+
inputClassName?: string
|
|
32
|
+
wrapperClassName?: string
|
|
33
|
+
items: Item[]
|
|
34
|
+
children: React.ComponentProps<typeof AutocompletePrimitive.List>['children']
|
|
35
|
+
sideOffset?: number
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export function Autocomplete<Item = string>({
|
|
39
|
+
id,
|
|
40
|
+
label,
|
|
41
|
+
variant = 'outlined',
|
|
42
|
+
inputSize = 'md',
|
|
43
|
+
intent = 'primary',
|
|
44
|
+
required,
|
|
45
|
+
placeholder = '',
|
|
46
|
+
autoComplete = 'off',
|
|
47
|
+
error = false,
|
|
48
|
+
helpText = '',
|
|
49
|
+
errorText = '',
|
|
50
|
+
emptyText = 'No results found.',
|
|
51
|
+
className,
|
|
52
|
+
inputClassName,
|
|
53
|
+
wrapperClassName,
|
|
54
|
+
items,
|
|
55
|
+
children,
|
|
56
|
+
sideOffset = 4,
|
|
57
|
+
...rest
|
|
58
|
+
}: AutocompleteProps<Item>) {
|
|
59
|
+
return (
|
|
60
|
+
<div className={cx('infonomic-autocomplete-wrapper', styles['autocomplete-wrapper'], wrapperClassName)}>
|
|
61
|
+
<AutocompletePrimitive.Root items={items} {...rest}>
|
|
62
|
+
{label != null && <Label id={id} htmlFor={id} required={required} label={label} />}
|
|
63
|
+
<AutocompletePrimitive.Input
|
|
64
|
+
id={id}
|
|
65
|
+
placeholder={placeholder}
|
|
66
|
+
autoComplete={autoComplete}
|
|
67
|
+
aria-labelledby={label ? `label-for-${id}` : undefined}
|
|
68
|
+
aria-invalid={error}
|
|
69
|
+
aria-required={required}
|
|
70
|
+
aria-errormessage={error ? errorText : undefined}
|
|
71
|
+
aria-describedby={error ? `error-for-${id}` : undefined}
|
|
72
|
+
className={cx(
|
|
73
|
+
'infonomic-autocomplete-input',
|
|
74
|
+
`infonomic-autocomplete-input-${variant}`,
|
|
75
|
+
`infonomic-autocomplete-input-${inputSize}`,
|
|
76
|
+
`infonomic-autocomplete-input-${intent}`,
|
|
77
|
+
styles.input,
|
|
78
|
+
styles[variant],
|
|
79
|
+
styles[inputSize],
|
|
80
|
+
styles[intent],
|
|
81
|
+
{ [styles.error]: error },
|
|
82
|
+
className,
|
|
83
|
+
inputClassName,
|
|
84
|
+
)}
|
|
85
|
+
/>
|
|
86
|
+
|
|
87
|
+
<AutocompletePrimitive.Portal>
|
|
88
|
+
<AutocompletePrimitive.Positioner
|
|
89
|
+
className={cx('infonomic-autocomplete-positioner', styles.positioner)}
|
|
90
|
+
sideOffset={sideOffset}
|
|
91
|
+
>
|
|
92
|
+
<AutocompletePrimitive.Popup
|
|
93
|
+
className={cx(
|
|
94
|
+
'infonomic-autocomplete-popup',
|
|
95
|
+
styles.popup,
|
|
96
|
+
inputSize != null && styles[`popup-${inputSize}`],
|
|
97
|
+
)}
|
|
98
|
+
>
|
|
99
|
+
<AutocompletePrimitive.Empty
|
|
100
|
+
className={cx('infonomic-autocomplete-empty', styles.empty)}
|
|
101
|
+
>
|
|
102
|
+
{emptyText}
|
|
103
|
+
</AutocompletePrimitive.Empty>
|
|
104
|
+
<AutocompletePrimitive.List
|
|
105
|
+
className={cx('infonomic-autocomplete-list', styles.list)}
|
|
106
|
+
>
|
|
107
|
+
{children}
|
|
108
|
+
</AutocompletePrimitive.List>
|
|
109
|
+
</AutocompletePrimitive.Popup>
|
|
110
|
+
</AutocompletePrimitive.Positioner>
|
|
111
|
+
</AutocompletePrimitive.Portal>
|
|
112
|
+
</AutocompletePrimitive.Root>
|
|
113
|
+
{error ? (
|
|
114
|
+
<ErrorText id={`error-for-${id}`} size={inputSize} text={errorText ?? helpText} />
|
|
115
|
+
) : (
|
|
116
|
+
helpText?.length > 0 && <HelpText size={inputSize} text={helpText} />
|
|
117
|
+
)}
|
|
118
|
+
</div>
|
|
119
|
+
)
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
export const AutocompleteItem = ({
|
|
123
|
+
ref: forwardedRef,
|
|
124
|
+
children,
|
|
125
|
+
className,
|
|
126
|
+
...props
|
|
127
|
+
}: React.ComponentProps<typeof AutocompletePrimitive.Item> & {
|
|
128
|
+
ref?: React.RefObject<HTMLDivElement>
|
|
129
|
+
}) => {
|
|
130
|
+
return (
|
|
131
|
+
<AutocompletePrimitive.Item
|
|
132
|
+
className={cx('infonomic-autocomplete-item', styles['autocomplete-item'], className)}
|
|
133
|
+
{...props}
|
|
134
|
+
ref={forwardedRef}
|
|
135
|
+
>
|
|
136
|
+
{children}
|
|
137
|
+
</AutocompletePrimitive.Item>
|
|
138
|
+
)
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
AutocompleteItem.displayName = 'AutocompleteItem'
|
|
142
|
+
|
|
143
|
+
export const AutocompleteGroup = AutocompletePrimitive.Group
|
|
144
|
+
export const AutocompleteGroupLabel = ({
|
|
145
|
+
children,
|
|
146
|
+
className,
|
|
147
|
+
...props
|
|
148
|
+
}: React.ComponentProps<typeof AutocompletePrimitive.GroupLabel>) => {
|
|
149
|
+
return (
|
|
150
|
+
<AutocompletePrimitive.GroupLabel
|
|
151
|
+
className={cx('infonomic-autocomplete-group-label', styles['group-label'], className)}
|
|
152
|
+
{...props}
|
|
153
|
+
>
|
|
154
|
+
{children}
|
|
155
|
+
</AutocompletePrimitive.GroupLabel>
|
|
156
|
+
)
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
AutocompleteGroupLabel.displayName = 'AutocompleteGroupLabel'
|
|
160
|
+
|
|
161
|
+
export const AutocompleteSeparator = ({
|
|
162
|
+
className,
|
|
163
|
+
...props
|
|
164
|
+
}: React.ComponentProps<typeof AutocompletePrimitive.Separator>) => {
|
|
165
|
+
return (
|
|
166
|
+
<AutocompletePrimitive.Separator
|
|
167
|
+
className={cx('infonomic-autocomplete-separator', styles.separator, className)}
|
|
168
|
+
{...props}
|
|
169
|
+
/>
|
|
170
|
+
)
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
AutocompleteSeparator.displayName = 'AutocompleteSeparator'
|
package/src/react.ts
CHANGED
|
@@ -22,6 +22,7 @@ export * from './components/chips/chip.js'
|
|
|
22
22
|
export * from './components/container/container.js'
|
|
23
23
|
export * from './components/dropdown/dropdown.js'
|
|
24
24
|
export * from './components/hamburger/hamburger.js'
|
|
25
|
+
export * from './components/inputs/autocomplete.jsx'
|
|
25
26
|
export * from './components/inputs/calendar.jsx'
|
|
26
27
|
export * from './components/inputs/checkbox.jsx'
|
|
27
28
|
export * from './components/inputs/checkbox-group.jsx'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":"5.9.3"}
|