@bbl-digital/snorre 3.0.6 → 3.0.9
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/bundle.js +39 -41
- package/esm/core/Autocomplete/hooks/useAutocomplete.js +0 -2
- package/esm/core/Autocomplete/hooks/useHandleDimentions.js +19 -0
- package/esm/core/Autocomplete/index.interfaces.js +1 -0
- package/esm/core/Autocomplete/index.js +11 -6
- package/esm/core/Autocomplete/styles.js +18 -26
- package/lib/core/Autocomplete/hooks/useAutocomplete.d.ts +1 -1
- package/lib/core/Autocomplete/hooks/useAutocomplete.d.ts.map +1 -1
- package/lib/core/Autocomplete/hooks/useAutocomplete.js +0 -2
- package/lib/core/Autocomplete/hooks/useHandleDimentions.d.ts +8 -0
- package/lib/core/Autocomplete/hooks/useHandleDimentions.d.ts.map +1 -0
- package/lib/core/Autocomplete/hooks/useHandleDimentions.js +19 -0
- package/lib/core/Autocomplete/index.d.ts +1 -1
- package/lib/core/Autocomplete/index.d.ts.map +1 -1
- package/lib/core/Autocomplete/index.interfaces.d.ts +81 -0
- package/lib/core/Autocomplete/index.interfaces.d.ts.map +1 -0
- package/lib/core/Autocomplete/index.interfaces.js +1 -0
- package/lib/core/Autocomplete/index.js +11 -6
- package/lib/core/Autocomplete/styles.d.ts +1 -1
- package/lib/core/Autocomplete/styles.d.ts.map +1 -1
- package/lib/core/Autocomplete/styles.js +18 -26
- package/package.json +1 -1
@@ -1,5 +1,5 @@
|
|
1
1
|
/// <reference types="react" />
|
2
|
-
import { IProps, IValuesProps } from '../index.
|
2
|
+
import { IProps, IValuesProps } from '../index.interfaces';
|
3
3
|
declare const useAutocomplete: (props: IProps) => {
|
4
4
|
setShowValues: import("react").Dispatch<import("react").SetStateAction<boolean>>;
|
5
5
|
handleClear: () => void;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"useAutocomplete.d.ts","sourceRoot":"","sources":["../../../../src/packages/core/Autocomplete/hooks/useAutocomplete.ts"],"names":[],"mappings":";AAIA,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,
|
1
|
+
{"version":3,"file":"useAutocomplete.d.ts","sourceRoot":"","sources":["../../../../src/packages/core/Autocomplete/hooks/useAutocomplete.ts"],"names":[],"mappings":";AAIA,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAE1D,QAAA,MAAM,eAAe,UAAW,MAAM;;;;;;uBAuBV,MAAM,WAAW,CAAC,gBAAgB,CAAC;yBAgJjC,mBAAmB,CAAC,gBAAgB,CAAC;+BAZ/B,mBAAmB,CAAC,gBAAgB,CAAC;;qBAnH/C,gBAAgB,CAAC,gBAAgB,EAAE,OAAO,CAAC;;;;;CA4MpE,CAAA;AAED,eAAe,eAAe,CAAA"}
|
@@ -38,8 +38,6 @@ const useAutocomplete = props => {
|
|
38
38
|
const onFuzzyBlur = e => {
|
39
39
|
// If the value of the input is changed, and does not match the value of the values array,
|
40
40
|
// we should revert back the input value to the original value
|
41
|
-
//What
|
42
|
-
// if (!e.target.value.length) clearSelectedItem()
|
43
41
|
if (e.target.value === props.value) return; // If target value is the same as a value from the values array, we should set the value for the user
|
44
42
|
|
45
43
|
if (inputValues?.length) {
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"useHandleDimentions.d.ts","sourceRoot":"","sources":["../../../../src/packages/core/Autocomplete/hooks/useHandleDimentions.ts"],"names":[],"mappings":";AAEA,QAAA,MAAM,mBAAmB;;;;CAaxB,CAAA;AAED,eAAe,mBAAmB,CAAA"}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
import { createRef, useEffect, useState } from 'react';
|
2
|
+
|
3
|
+
const useHandleDimentions = () => {
|
4
|
+
const [height, setHeight] = useState(0);
|
5
|
+
const [width, setWidth] = useState(0);
|
6
|
+
const dimentionsRef = /*#__PURE__*/createRef();
|
7
|
+
useEffect(() => {
|
8
|
+
const rect = dimentionsRef.current?.getBoundingClientRect();
|
9
|
+
setHeight(rect?.height || 0);
|
10
|
+
setWidth(rect?.width || 0); // eslint-disable-next-line react-hooks/exhaustive-deps
|
11
|
+
}, [dimentionsRef.current]);
|
12
|
+
return {
|
13
|
+
height,
|
14
|
+
width,
|
15
|
+
dimentionsRef
|
16
|
+
};
|
17
|
+
};
|
18
|
+
|
19
|
+
export default useHandleDimentions;
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/** @jsxImportSource @emotion/react */
|
2
2
|
import React, { ForwardedRef } from 'react';
|
3
|
-
import { IProps } from './index.
|
3
|
+
import { IProps } from './index.interfaces';
|
4
4
|
export declare type Ref = ForwardedRef<HTMLInputElement>;
|
5
5
|
declare const Autocomplete: React.FC<IProps>;
|
6
6
|
export default Autocomplete;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/packages/core/Autocomplete/index.tsx"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,OAAO,KAAK,EAAE,EAAa,YAAY,EAAE,MAAM,OAAO,CAAA;AAQtD,OAAO,EAAE,MAAM,EAAE,MAAM,
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/packages/core/Autocomplete/index.tsx"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,OAAO,KAAK,EAAE,EAAa,YAAY,EAAE,MAAM,OAAO,CAAA;AAQtD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAG3C,oBAAY,GAAG,GAAG,YAAY,CAAC,gBAAgB,CAAC,CAAA;AAEhD,QAAA,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,MAAM,CAoLjC,CAAA;AAEF,eAAe,YAAY,CAAA"}
|
@@ -0,0 +1,81 @@
|
|
1
|
+
import { SerializedStyles } from '@emotion/react';
|
2
|
+
import { ReactNode } from 'react';
|
3
|
+
export interface IValuesProps {
|
4
|
+
/** The default key name is key */
|
5
|
+
/** The default display name is label */
|
6
|
+
/** When setting any other than label/key as default, use labelFromValues and keyFromValues for this */
|
7
|
+
[x: string]: string;
|
8
|
+
}
|
9
|
+
export interface IProps {
|
10
|
+
/** Input label */
|
11
|
+
label?: string;
|
12
|
+
/** Secondary label placed on the top right of the autocomplete */
|
13
|
+
labelSecondary?: ReactNode;
|
14
|
+
/** Autofocus */
|
15
|
+
focus?: boolean;
|
16
|
+
/** Placeholder text */
|
17
|
+
placeholder?: string;
|
18
|
+
/** Default value. */
|
19
|
+
value?: string;
|
20
|
+
/** Disabled. */
|
21
|
+
disabled?: boolean;
|
22
|
+
/** Callback fired when blur. */
|
23
|
+
onBlur?: (e: React.FocusEvent<HTMLInputElement>) => void;
|
24
|
+
/** Callback fired when focus. */
|
25
|
+
onFocus?: (e: React.FocusEvent<HTMLInputElement>) => void;
|
26
|
+
/** Callback fired when the value changes. */
|
27
|
+
onChange?: (e: React.ChangeEvent<HTMLInputElement>, reason?: string) => void;
|
28
|
+
/** Children. */
|
29
|
+
children?: ReactNode;
|
30
|
+
/** Include if input field should include debound effect after typing. Specifices delay in ms */
|
31
|
+
debounceDelay?: number;
|
32
|
+
/** Sends up the value from a option click */
|
33
|
+
onSelectItem?: (value: {
|
34
|
+
[x: string]: any;
|
35
|
+
}) => void;
|
36
|
+
/** Callback when using debounce. */
|
37
|
+
onDebounceChange?: (value: string) => void;
|
38
|
+
/** A button instead of standard label, requires to set a label */
|
39
|
+
onLabelClick?: (e: React.MouseEvent) => void;
|
40
|
+
/** Custom on key down handler */
|
41
|
+
onKeyDown?: (e: React.KeyboardEvent<HTMLInputElement>) => void;
|
42
|
+
/** Specify override styling */
|
43
|
+
css?: SerializedStyles;
|
44
|
+
/** Input name */
|
45
|
+
name?: string;
|
46
|
+
/** Validation on input */
|
47
|
+
validation?: boolean;
|
48
|
+
/** Invalid message */
|
49
|
+
invalidMessage?: string;
|
50
|
+
/** Activates invalid styling for custom external validation */
|
51
|
+
invalid?: boolean;
|
52
|
+
/** Set the height of the input, border comes in addition to height */
|
53
|
+
height?: string;
|
54
|
+
/** Sets a spinner on the input */
|
55
|
+
loading?: boolean;
|
56
|
+
/** Sets actions on the end of the input field */
|
57
|
+
actions?: ReactNode;
|
58
|
+
/** Renders options shown under input */
|
59
|
+
renderOptions?: ReactNode[] | ReactNode;
|
60
|
+
/** Places values dynamically to the input field, defaults to being placed under the input field */
|
61
|
+
dynamicallyPlaceInput?: boolean;
|
62
|
+
/** Renders a custom input list */
|
63
|
+
renderCustomValueInput?: ReactNode;
|
64
|
+
/** Open custom value input when starting to write */
|
65
|
+
openCustomValueInputOnKeyPress?: boolean;
|
66
|
+
/** Values to list out */
|
67
|
+
values?: IValuesProps[];
|
68
|
+
/** Gets specific value as label from values property */
|
69
|
+
labelFromValues?: string;
|
70
|
+
/** Gets specific value as key from values property */
|
71
|
+
keyFromValues?: string;
|
72
|
+
/** Max width of the input values */
|
73
|
+
inputValuesMaxWidth?: number;
|
74
|
+
/** Custom open for showing values */
|
75
|
+
isOpen?: boolean;
|
76
|
+
/** Has fuzzy search */
|
77
|
+
fuzzy?: boolean;
|
78
|
+
/** Has clear button */
|
79
|
+
clear?: boolean;
|
80
|
+
}
|
81
|
+
//# sourceMappingURL=index.interfaces.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.interfaces.d.ts","sourceRoot":"","sources":["../../../src/packages/core/Autocomplete/index.interfaces.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
@@ -4,7 +4,7 @@ import { styles, ErrorMessage, Clear } from './styles';
|
|
4
4
|
import { useEffect } from 'react';
|
5
5
|
import IconErrorOutline from '../../icons/General/IconErrorOutline';
|
6
6
|
import Spinner from '../Spinner';
|
7
|
-
import
|
7
|
+
import useHandleDimentions from './hooks/useHandleDimentions';
|
8
8
|
import Link from '../Link';
|
9
9
|
import IconClose from '../../icons/General/IconClose';
|
10
10
|
import useAutocomplete from './hooks/useAutocomplete';
|
@@ -18,9 +18,13 @@ const Autocomplete = /*#__PURE__*/React.forwardRef(({
|
|
18
18
|
}, ref) => {
|
19
19
|
const valuesRef = /*#__PURE__*/createRef();
|
20
20
|
const {
|
21
|
-
optionsHeight,
|
22
|
-
optionsRef
|
23
|
-
} =
|
21
|
+
height: optionsHeight,
|
22
|
+
dimentionsRef: optionsRef
|
23
|
+
} = useHandleDimentions();
|
24
|
+
const {
|
25
|
+
width: inputWrapperWidth,
|
26
|
+
dimentionsRef: inputWrapperRef
|
27
|
+
} = useHandleDimentions();
|
24
28
|
const {
|
25
29
|
value,
|
26
30
|
highlightedIndex,
|
@@ -54,8 +58,9 @@ const Autocomplete = /*#__PURE__*/React.forwardRef(({
|
|
54
58
|
}, [showValues, valuesRef]);
|
55
59
|
return _jsxs(_Fragment, {
|
56
60
|
children: [_jsxs("label", {
|
57
|
-
|
61
|
+
ref: inputWrapperRef,
|
58
62
|
onClick: props.onLabelClick ? e => e.preventDefault() : undefined,
|
63
|
+
css: theme => [styles.default(theme), (props.invalid || props.invalidMessage) && styles.invalid(theme), props.validation && styles.validation, props.onLabelClick && styles.clickableLabel, height && styles.height(height), css && css],
|
59
64
|
children: [_jsxs("span", {
|
60
65
|
css: styles.label,
|
61
66
|
children: [props.label && (props.onLabelClick ? _jsx(Link, {
|
@@ -113,7 +118,7 @@ const Autocomplete = /*#__PURE__*/React.forwardRef(({
|
|
113
118
|
})]
|
114
119
|
}), (Boolean(props.values?.length) || props.renderCustomValueInput) && !props.loading && showValues && _jsxs("div", {
|
115
120
|
ref: valuesRef,
|
116
|
-
css: () => [!props.renderCustomValueInput && styles.listWrapper, props.dynamicallyPlaceInput && Boolean(optionsHeight) && styles.listWrapperTopPosition(optionsHeight), props.dynamicallyPlaceInput && Boolean(optionsHeight) && props.invalidMessage && styles.listWrapperTopPosition(optionsHeight + 30), props.inputValuesMaxWidth && styles.listWrapperMaxWidth(props.inputValuesMaxWidth)],
|
121
|
+
css: () => [!props.renderCustomValueInput && styles.listWrapper(inputWrapperWidth), props.dynamicallyPlaceInput && Boolean(optionsHeight) && styles.listWrapperTopPosition(optionsHeight), props.dynamicallyPlaceInput && Boolean(optionsHeight) && props.invalidMessage && styles.listWrapperTopPosition(optionsHeight + 30), props.inputValuesMaxWidth && styles.listWrapperMaxWidth(props.inputValuesMaxWidth)],
|
117
122
|
children: [Boolean(renderedValues?.length) && _jsx("ul", {
|
118
123
|
css: theme => [styles.list(theme)],
|
119
124
|
children: renderedValues.map((item, index) => {
|
@@ -9,7 +9,7 @@ declare const styles: {
|
|
9
9
|
validation: import("@emotion/react").SerializedStyles;
|
10
10
|
list: (theme: IAppTheme) => import("@emotion/react").SerializedStyles;
|
11
11
|
highlightedItem: (theme: IAppTheme) => import("@emotion/react").SerializedStyles;
|
12
|
-
listWrapper: import("@emotion/react").SerializedStyles;
|
12
|
+
listWrapper: (width: number) => import("@emotion/react").SerializedStyles;
|
13
13
|
listWrapperMaxWidth: (width: number) => import("@emotion/react").SerializedStyles;
|
14
14
|
listWrapperTopPosition: (top: number) => import("@emotion/react").SerializedStyles;
|
15
15
|
invalid: (theme: IAppTheme) => import("@emotion/react").SerializedStyles;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/packages/core/Autocomplete/styles.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAIjD,QAAA,MAAM,MAAM;qBACO,SAAS;;;0BA2DJ,SAAS;;;;kBAuCjB,SAAS;6BAyBE,SAAS
|
1
|
+
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/packages/core/Autocomplete/styles.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAIjD,QAAA,MAAM,MAAM;qBACO,SAAS;;;0BA2DJ,SAAS;;;;kBAuCjB,SAAS;6BAyBE,SAAS;yBAGb,MAAM;iCAOE,MAAM;kCAGL,MAAM;qBAGnB,SAAS;4BAYF,SAAS;qBA4BhB,MAAM;sBAKL,SAAS;CAM5B,CAAA;AAED,eAAO,MAAM,YAAY,UAAW,SAAS,8CAM5C,CAAA;AAED,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;UAcjB,CAAA;AAED,eAAe,MAAM,CAAA;AAErB,OAAO,EAAE,MAAM,EAAE,CAAA"}
|