@semcore/bulk-textarea 1.0.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/CHANGELOG.md +15 -0
- package/LICENSE +21 -0
- package/README.md +67 -0
- package/lib/cjs/BulkTextarea.js +318 -0
- package/lib/cjs/BulkTextarea.js.map +1 -0
- package/lib/cjs/BulkTextarea.types.js +2 -0
- package/lib/cjs/BulkTextarea.types.js.map +1 -0
- package/lib/cjs/components/ClearAll.js +23 -0
- package/lib/cjs/components/ClearAll.js.map +1 -0
- package/lib/cjs/components/Counter.js +27 -0
- package/lib/cjs/components/Counter.js.map +1 -0
- package/lib/cjs/components/ErrorsNavigation.js +57 -0
- package/lib/cjs/components/ErrorsNavigation.js.map +1 -0
- package/lib/cjs/components/InputField/InputField.js +1110 -0
- package/lib/cjs/components/InputField/InputField.js.map +1 -0
- package/lib/cjs/components/InputField/InputField.types.js +2 -0
- package/lib/cjs/components/InputField/InputField.types.js.map +1 -0
- package/lib/cjs/components/InputField/inputField.shadow.css +160 -0
- package/lib/cjs/index.js +14 -0
- package/lib/cjs/index.js.map +1 -0
- package/lib/cjs/translations/__intergalactic-dynamic-locales.js +39 -0
- package/lib/cjs/translations/__intergalactic-dynamic-locales.js.map +1 -0
- package/lib/cjs/translations/de.json +10 -0
- package/lib/cjs/translations/en.json +10 -0
- package/lib/cjs/translations/es.json +10 -0
- package/lib/cjs/translations/fr.json +10 -0
- package/lib/cjs/translations/it.json +10 -0
- package/lib/cjs/translations/ja.json +10 -0
- package/lib/cjs/translations/ko.json +10 -0
- package/lib/cjs/translations/nl.json +10 -0
- package/lib/cjs/translations/pl.json +10 -0
- package/lib/cjs/translations/pt.json +10 -0
- package/lib/cjs/translations/sv.json +10 -0
- package/lib/cjs/translations/tr.json +10 -0
- package/lib/cjs/translations/vi.json +10 -0
- package/lib/cjs/translations/zh.json +10 -0
- package/lib/es6/BulkTextarea.mjs +310 -0
- package/lib/es6/BulkTextarea.mjs.map +1 -0
- package/lib/es6/BulkTextarea.types.mjs +2 -0
- package/lib/es6/BulkTextarea.types.mjs.map +1 -0
- package/lib/es6/components/ClearAll.mjs +17 -0
- package/lib/es6/components/ClearAll.mjs.map +1 -0
- package/lib/es6/components/Counter.mjs +21 -0
- package/lib/es6/components/Counter.mjs.map +1 -0
- package/lib/es6/components/ErrorsNavigation.mjs +50 -0
- package/lib/es6/components/ErrorsNavigation.mjs.map +1 -0
- package/lib/es6/components/InputField/InputField.mjs +1104 -0
- package/lib/es6/components/InputField/InputField.mjs.map +1 -0
- package/lib/es6/components/InputField/InputField.types.mjs +2 -0
- package/lib/es6/components/InputField/InputField.types.mjs.map +1 -0
- package/lib/es6/components/InputField/inputField.shadow.css +160 -0
- package/lib/es6/index.mjs +2 -0
- package/lib/es6/index.mjs.map +1 -0
- package/lib/es6/translations/__intergalactic-dynamic-locales.mjs +31 -0
- package/lib/es6/translations/__intergalactic-dynamic-locales.mjs.map +1 -0
- package/lib/es6/translations/de.json +10 -0
- package/lib/es6/translations/en.json +10 -0
- package/lib/es6/translations/es.json +10 -0
- package/lib/es6/translations/fr.json +10 -0
- package/lib/es6/translations/it.json +10 -0
- package/lib/es6/translations/ja.json +10 -0
- package/lib/es6/translations/ko.json +10 -0
- package/lib/es6/translations/nl.json +10 -0
- package/lib/es6/translations/pl.json +10 -0
- package/lib/es6/translations/pt.json +10 -0
- package/lib/es6/translations/sv.json +10 -0
- package/lib/es6/translations/tr.json +10 -0
- package/lib/es6/translations/vi.json +10 -0
- package/lib/es6/translations/zh.json +10 -0
- package/lib/types/BulkTextarea.d.ts +3 -0
- package/lib/types/BulkTextarea.types.d.ts +33 -0
- package/lib/types/components/ClearAll.d.ts +7 -0
- package/lib/types/components/Counter.d.ts +10 -0
- package/lib/types/components/ErrorsNavigation.d.ts +15 -0
- package/lib/types/components/InputField/InputField.d.ts +98 -0
- package/lib/types/components/InputField/InputField.types.d.ts +157 -0
- package/lib/types/index.d.ts +3 -0
- package/lib/types/translations/__intergalactic-dynamic-locales.d.ts +142 -0
- package/package.json +41 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Intergalactic } from '@semcore/utils/lib/core';
|
|
2
|
+
import { BoxProps } from '@semcore/flex-box';
|
|
3
|
+
import Button from '@semcore/button';
|
|
4
|
+
import { InputFieldProps } from './components/InputField/InputField';
|
|
5
|
+
import { CounterProps } from './components/Counter';
|
|
6
|
+
import { ErrorsNavigationProps } from './components/ErrorsNavigation';
|
|
7
|
+
export type BulkTextareaProps = {
|
|
8
|
+
value?: InputFieldProps['value'];
|
|
9
|
+
onChange?: InputFieldProps['onBlur'];
|
|
10
|
+
placeholder?: InputFieldProps['placeholder'];
|
|
11
|
+
size?: InputFieldProps['size'];
|
|
12
|
+
state?: InputFieldProps['state'];
|
|
13
|
+
disabled?: InputFieldProps['disabled'];
|
|
14
|
+
readonly?: InputFieldProps['readonly'];
|
|
15
|
+
minRows?: InputFieldProps['minRows'];
|
|
16
|
+
maxRows?: InputFieldProps['maxRows'];
|
|
17
|
+
validateOn?: InputFieldProps['validateOn'];
|
|
18
|
+
lineValidation?: InputFieldProps['lineValidation'];
|
|
19
|
+
linesDelimiters?: InputFieldProps['linesDelimiters'];
|
|
20
|
+
pasteProps?: InputFieldProps['pasteProps'];
|
|
21
|
+
maxLines?: InputFieldProps['maxLines'];
|
|
22
|
+
lineProcessing?: InputFieldProps['lineProcessing'];
|
|
23
|
+
errors?: InputFieldProps['errors'];
|
|
24
|
+
showErrors?: boolean;
|
|
25
|
+
onErrorsChange?: InputFieldProps['onErrorsChange'];
|
|
26
|
+
onShowErrorsChange?: InputFieldProps['onShowErrorsChange'];
|
|
27
|
+
};
|
|
28
|
+
export type BulkTextareaType = Intergalactic.Component<'div', BoxProps & BulkTextareaProps> & {
|
|
29
|
+
InputField: Intergalactic.Component<'div', Pick<InputFieldProps, 'commonErrorMessage' | 'id'> & Partial<BulkTextareaProps>>;
|
|
30
|
+
Counter: Intergalactic.Component<'div', Partial<CounterProps>>;
|
|
31
|
+
ClearAll: typeof Button;
|
|
32
|
+
ErrorsNavigation: Intergalactic.Component<'div', Partial<ErrorsNavigationProps>>;
|
|
33
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { IRootComponentProps } from '@semcore/core';
|
|
3
|
+
import { useI18n } from '@semcore/utils/lib/enhances/WithI18n';
|
|
4
|
+
export declare function ClearAll(props: IRootComponentProps & {
|
|
5
|
+
isHidden: boolean;
|
|
6
|
+
getI18nText: ReturnType<typeof useI18n>;
|
|
7
|
+
}): React.ReactNode;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { CounterProps as CounterPropsKit } from '@semcore/counter';
|
|
3
|
+
import { useI18n } from '@semcore/utils/lib/enhances/WithI18n';
|
|
4
|
+
export type CounterProps = {
|
|
5
|
+
theme: CounterPropsKit['theme'];
|
|
6
|
+
linesCount: number;
|
|
7
|
+
maxLines: number;
|
|
8
|
+
getI18nText: ReturnType<typeof useI18n>;
|
|
9
|
+
};
|
|
10
|
+
export declare function Counter(props: CounterProps): JSX.Element;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { useI18n } from '@semcore/utils/lib/enhances/WithI18n';
|
|
3
|
+
export type ErrorsNavigationProps = {
|
|
4
|
+
errorIndex: number;
|
|
5
|
+
onPrevError: () => void;
|
|
6
|
+
onNextError: () => void;
|
|
7
|
+
errorsCount: number;
|
|
8
|
+
size: 'm' | 'l';
|
|
9
|
+
showErrors: boolean;
|
|
10
|
+
getI18nText: ReturnType<typeof useI18n>;
|
|
11
|
+
disabled: boolean;
|
|
12
|
+
nextButtonRef: React.RefObject<HTMLButtonElement>;
|
|
13
|
+
prevButtonRef: React.RefObject<HTMLButtonElement>;
|
|
14
|
+
};
|
|
15
|
+
export declare function ErrorsNavigation(props: ErrorsNavigationProps): JSX.Element;
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Component } from '@semcore/core';
|
|
3
|
+
import { PopperContext } from '@semcore/popper';
|
|
4
|
+
import { InputFieldProps, ErrorItem } from './InputField.types';
|
|
5
|
+
type IndexKeys = 'keyboardLineIndex' | 'mouseLineIndex';
|
|
6
|
+
type State = {
|
|
7
|
+
[key in IndexKeys]: number;
|
|
8
|
+
} & {
|
|
9
|
+
visibleErrorPopper: boolean;
|
|
10
|
+
};
|
|
11
|
+
declare class InputField extends Component<InputFieldProps, {}, State, typeof InputField.enhance> {
|
|
12
|
+
static displayName: string;
|
|
13
|
+
static style: {
|
|
14
|
+
[key: string]: string;
|
|
15
|
+
};
|
|
16
|
+
static enhance: readonly [(props: any) => {
|
|
17
|
+
uid: string;
|
|
18
|
+
}];
|
|
19
|
+
static defaultProps: {
|
|
20
|
+
defaultValue: string;
|
|
21
|
+
size: string;
|
|
22
|
+
state: string;
|
|
23
|
+
minRows: number;
|
|
24
|
+
maxRows: number;
|
|
25
|
+
defaultShowErrors: boolean;
|
|
26
|
+
defaultErrorIndex: number;
|
|
27
|
+
defaultLinesCount: number;
|
|
28
|
+
};
|
|
29
|
+
delimiter: string;
|
|
30
|
+
skipEmptyLines: boolean;
|
|
31
|
+
emptyLineValue: string;
|
|
32
|
+
spaceLineValue: string;
|
|
33
|
+
containerRef: React.RefObject<HTMLDivElement>;
|
|
34
|
+
textarea: HTMLDivElement;
|
|
35
|
+
popper: PopperContext['popper'] | null;
|
|
36
|
+
setPopperTrigger: PopperContext['setTrigger'] | null;
|
|
37
|
+
errorByInteraction: 'keyboard' | 'mouse' | null;
|
|
38
|
+
changeTriggerTimeout: number;
|
|
39
|
+
isScrolling: boolean;
|
|
40
|
+
scrollingTimeout: number;
|
|
41
|
+
toggleErrorsPopperTimeout: number;
|
|
42
|
+
isFocusing: boolean;
|
|
43
|
+
linesCountTimeout: number;
|
|
44
|
+
state: {
|
|
45
|
+
visibleErrorPopper: boolean;
|
|
46
|
+
keyboardLineIndex: number;
|
|
47
|
+
mouseLineIndex: number;
|
|
48
|
+
};
|
|
49
|
+
constructor(props: InputFieldProps);
|
|
50
|
+
uncontrolledProps(): {
|
|
51
|
+
value: null;
|
|
52
|
+
linesCount: null;
|
|
53
|
+
errorIndex: null;
|
|
54
|
+
};
|
|
55
|
+
componentDidMount(): void;
|
|
56
|
+
componentDidUpdate(prevProps: InputFieldProps, prevState: State): void;
|
|
57
|
+
componentWillUnmount(): void;
|
|
58
|
+
get isDisabled(): boolean;
|
|
59
|
+
get popperDescribedId(): string;
|
|
60
|
+
get errorMessage(): {
|
|
61
|
+
errorMessage: string | null;
|
|
62
|
+
isCommonError: boolean;
|
|
63
|
+
};
|
|
64
|
+
createContentEditableElement(props: InputFieldProps): HTMLDivElement;
|
|
65
|
+
handleValueOutChange(): void;
|
|
66
|
+
handleScroll(): void;
|
|
67
|
+
handleMouseDown(event: MouseEvent): void;
|
|
68
|
+
handleMouseMove(event: MouseEvent): void;
|
|
69
|
+
handleMouseLeave(event: MouseEvent): void;
|
|
70
|
+
handlePaste(event: ClipboardEvent): void;
|
|
71
|
+
handleChange(event: Event): void;
|
|
72
|
+
handleFocus(event: FocusEvent): void;
|
|
73
|
+
handleBlur(event: Event): void;
|
|
74
|
+
handleKeyDown(event: KeyboardEvent): void;
|
|
75
|
+
render(): React.ReactNode;
|
|
76
|
+
private prepareNodesForPaste;
|
|
77
|
+
private recalculateErrors;
|
|
78
|
+
private recalculateLinesCount;
|
|
79
|
+
private getValues;
|
|
80
|
+
private toggleErrorsPopperByKeyboard;
|
|
81
|
+
private toggleErrorsPopper;
|
|
82
|
+
private toggleAriaInvalid;
|
|
83
|
+
private handleChangeErrorIndex;
|
|
84
|
+
private validateLine;
|
|
85
|
+
private setSelection;
|
|
86
|
+
private getNodeFromSelection;
|
|
87
|
+
private handleCursorMovement;
|
|
88
|
+
private setErrorIndex;
|
|
89
|
+
private isDeleteKey;
|
|
90
|
+
private getEmptyParagraph;
|
|
91
|
+
private addEventListeners;
|
|
92
|
+
private removeEventListeners;
|
|
93
|
+
private handleSelectAll;
|
|
94
|
+
private isRangeSelection;
|
|
95
|
+
private getSelectionDirection;
|
|
96
|
+
}
|
|
97
|
+
export { InputField };
|
|
98
|
+
export type { InputFieldProps, ErrorItem };
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
type PasteProps = {
|
|
2
|
+
/**
|
|
3
|
+
* @default '\n'
|
|
4
|
+
*/
|
|
5
|
+
delimiter?: string;
|
|
6
|
+
/**
|
|
7
|
+
* @default row.trim();
|
|
8
|
+
*/
|
|
9
|
+
lineProcessing?: (line: string) => string;
|
|
10
|
+
/**
|
|
11
|
+
* @default true
|
|
12
|
+
*/
|
|
13
|
+
skipEmptyLines?: boolean;
|
|
14
|
+
};
|
|
15
|
+
export type ErrorItem = {
|
|
16
|
+
lineIndex: number;
|
|
17
|
+
lineNode?: Node;
|
|
18
|
+
errorMessage: string;
|
|
19
|
+
};
|
|
20
|
+
export type InputFieldProps = {
|
|
21
|
+
/**
|
|
22
|
+
* Unique id
|
|
23
|
+
*/
|
|
24
|
+
id?: string;
|
|
25
|
+
/**
|
|
26
|
+
* Placeholder for field
|
|
27
|
+
*/
|
|
28
|
+
placeholder?: string;
|
|
29
|
+
/**
|
|
30
|
+
* String to render in textarea. OnChanging value, it will go throw paste pipeline
|
|
31
|
+
*/
|
|
32
|
+
value: string;
|
|
33
|
+
/**
|
|
34
|
+
* This component doesn't have default onChange callback, because we think that you need only the result after every changes/fixes
|
|
35
|
+
*/
|
|
36
|
+
onBlur: (value: string, e: Event) => void;
|
|
37
|
+
/**
|
|
38
|
+
* Size of component
|
|
39
|
+
* @default m
|
|
40
|
+
*/
|
|
41
|
+
size: 'm' | 'l';
|
|
42
|
+
/**
|
|
43
|
+
* State for show errors or valid(green) borders
|
|
44
|
+
* @default normal
|
|
45
|
+
*/
|
|
46
|
+
state: 'normal' | 'valid' | 'invalid';
|
|
47
|
+
/**
|
|
48
|
+
* Flag for disabling field
|
|
49
|
+
* @default false
|
|
50
|
+
*/
|
|
51
|
+
disabled?: boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Flag for readonly field
|
|
54
|
+
* @default false
|
|
55
|
+
*/
|
|
56
|
+
readonly?: boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Min rows
|
|
59
|
+
* @default 2
|
|
60
|
+
*/
|
|
61
|
+
minRows: number;
|
|
62
|
+
/**
|
|
63
|
+
* Max rows
|
|
64
|
+
* @default 10
|
|
65
|
+
*/
|
|
66
|
+
maxRows: number;
|
|
67
|
+
/**
|
|
68
|
+
* List of available points to validate value
|
|
69
|
+
* @default blur
|
|
70
|
+
*/
|
|
71
|
+
validateOn: ('blur' | 'blurLine' | 'paste')[];
|
|
72
|
+
/**
|
|
73
|
+
* Function to validate line
|
|
74
|
+
*/
|
|
75
|
+
lineValidation?: (line: string, lines: string[]) => {
|
|
76
|
+
isValid: boolean;
|
|
77
|
+
errorMessage: string;
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* Message for display error about whole field, not only one line
|
|
81
|
+
*/
|
|
82
|
+
commonErrorMessage: string;
|
|
83
|
+
/**
|
|
84
|
+
* Delimiters (event.key) for lines
|
|
85
|
+
* @default Enter
|
|
86
|
+
*/
|
|
87
|
+
linesDelimiters?: string[];
|
|
88
|
+
/**
|
|
89
|
+
* Count of max lines in badge
|
|
90
|
+
* @default 100
|
|
91
|
+
*/
|
|
92
|
+
maxLines: number;
|
|
93
|
+
/**
|
|
94
|
+
* Paste props
|
|
95
|
+
*/
|
|
96
|
+
pasteProps: PasteProps;
|
|
97
|
+
/**
|
|
98
|
+
* Function for process line after it was blurred
|
|
99
|
+
*/
|
|
100
|
+
lineProcessing?: (line: string, lines: string[]) => string;
|
|
101
|
+
/**
|
|
102
|
+
* Internal
|
|
103
|
+
*/
|
|
104
|
+
lastError: ErrorItem;
|
|
105
|
+
/**
|
|
106
|
+
* Internal
|
|
107
|
+
*/
|
|
108
|
+
currentLineIndex: number;
|
|
109
|
+
/**
|
|
110
|
+
* Internal
|
|
111
|
+
*/
|
|
112
|
+
linesCount: number;
|
|
113
|
+
/**
|
|
114
|
+
* Internal
|
|
115
|
+
*/
|
|
116
|
+
onChangeLineIndex: (newIndex: number) => void;
|
|
117
|
+
/**
|
|
118
|
+
* Internal
|
|
119
|
+
*/
|
|
120
|
+
onChangeLinesCount: (rowsCount: number) => void;
|
|
121
|
+
/**
|
|
122
|
+
* Internal
|
|
123
|
+
*/
|
|
124
|
+
showErrors: boolean;
|
|
125
|
+
/**
|
|
126
|
+
* Internal
|
|
127
|
+
* List of errors in rows
|
|
128
|
+
*/
|
|
129
|
+
errors: ErrorItem[];
|
|
130
|
+
/**
|
|
131
|
+
* Internal
|
|
132
|
+
* Select row with error
|
|
133
|
+
*/
|
|
134
|
+
errorIndex: number;
|
|
135
|
+
/**
|
|
136
|
+
* Internal
|
|
137
|
+
* Flag for select all row
|
|
138
|
+
*/
|
|
139
|
+
highlightErrorIndex: boolean;
|
|
140
|
+
/**
|
|
141
|
+
* Internal
|
|
142
|
+
*/
|
|
143
|
+
onErrorsChange: (errors: ErrorItem[]) => void;
|
|
144
|
+
/**
|
|
145
|
+
* Internal
|
|
146
|
+
*/
|
|
147
|
+
onShowErrorsChange: (showErrors: boolean) => void;
|
|
148
|
+
/**
|
|
149
|
+
* Internal
|
|
150
|
+
*/
|
|
151
|
+
onErrorIndexChange: (errorIndex: number) => void;
|
|
152
|
+
/**
|
|
153
|
+
* Internal
|
|
154
|
+
*/
|
|
155
|
+
'aria-describedby'?: string;
|
|
156
|
+
};
|
|
157
|
+
export {};
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
export declare const localizedMessages: {
|
|
2
|
+
de: {
|
|
3
|
+
"BulkTextarea.ClearAllButton.buttonText": string;
|
|
4
|
+
"BulkTextarea.Counter.ofAllowedRows:sr-message": string;
|
|
5
|
+
"BulkTextarea.Counter.limitReached:sr-message": string;
|
|
6
|
+
"BulkTextarea.Counter.limitExceeded:sr-message": string;
|
|
7
|
+
"BulkTextarea.ErrorsNavigation.totalErrors": string;
|
|
8
|
+
"BulkTextarea.ErrorsNavigation.selectedError": string;
|
|
9
|
+
"BulkTextarea.ErrorsNavigation.nextError:aria-label": string;
|
|
10
|
+
"BulkTextarea.ErrorsNavigation.previousError:aria-label": string;
|
|
11
|
+
};
|
|
12
|
+
en: {
|
|
13
|
+
"BulkTextarea.ClearAllButton.buttonText": string;
|
|
14
|
+
"BulkTextarea.Counter.ofAllowedRows:sr-message": string;
|
|
15
|
+
"BulkTextarea.Counter.limitReached:sr-message": string;
|
|
16
|
+
"BulkTextarea.Counter.limitExceeded:sr-message": string;
|
|
17
|
+
"BulkTextarea.ErrorsNavigation.totalErrors": string;
|
|
18
|
+
"BulkTextarea.ErrorsNavigation.selectedError": string;
|
|
19
|
+
"BulkTextarea.ErrorsNavigation.nextError:aria-label": string;
|
|
20
|
+
"BulkTextarea.ErrorsNavigation.previousError:aria-label": string;
|
|
21
|
+
};
|
|
22
|
+
es: {
|
|
23
|
+
"BulkTextarea.ClearAllButton.buttonText": string;
|
|
24
|
+
"BulkTextarea.Counter.ofAllowedRows:sr-message": string;
|
|
25
|
+
"BulkTextarea.Counter.limitReached:sr-message": string;
|
|
26
|
+
"BulkTextarea.Counter.limitExceeded:sr-message": string;
|
|
27
|
+
"BulkTextarea.ErrorsNavigation.totalErrors": string;
|
|
28
|
+
"BulkTextarea.ErrorsNavigation.selectedError": string;
|
|
29
|
+
"BulkTextarea.ErrorsNavigation.nextError:aria-label": string;
|
|
30
|
+
"BulkTextarea.ErrorsNavigation.previousError:aria-label": string;
|
|
31
|
+
};
|
|
32
|
+
fr: {
|
|
33
|
+
"BulkTextarea.ClearAllButton.buttonText": string;
|
|
34
|
+
"BulkTextarea.Counter.ofAllowedRows:sr-message": string;
|
|
35
|
+
"BulkTextarea.Counter.limitReached:sr-message": string;
|
|
36
|
+
"BulkTextarea.Counter.limitExceeded:sr-message": string;
|
|
37
|
+
"BulkTextarea.ErrorsNavigation.totalErrors": string;
|
|
38
|
+
"BulkTextarea.ErrorsNavigation.selectedError": string;
|
|
39
|
+
"BulkTextarea.ErrorsNavigation.nextError:aria-label": string;
|
|
40
|
+
"BulkTextarea.ErrorsNavigation.previousError:aria-label": string;
|
|
41
|
+
};
|
|
42
|
+
it: {
|
|
43
|
+
"BulkTextarea.ClearAllButton.buttonText": string;
|
|
44
|
+
"BulkTextarea.Counter.ofAllowedRows:sr-message": string;
|
|
45
|
+
"BulkTextarea.Counter.limitReached:sr-message": string;
|
|
46
|
+
"BulkTextarea.Counter.limitExceeded:sr-message": string;
|
|
47
|
+
"BulkTextarea.ErrorsNavigation.totalErrors": string;
|
|
48
|
+
"BulkTextarea.ErrorsNavigation.selectedError": string;
|
|
49
|
+
"BulkTextarea.ErrorsNavigation.nextError:aria-label": string;
|
|
50
|
+
"BulkTextarea.ErrorsNavigation.previousError:aria-label": string;
|
|
51
|
+
};
|
|
52
|
+
ja: {
|
|
53
|
+
"BulkTextarea.ClearAllButton.buttonText": string;
|
|
54
|
+
"BulkTextarea.Counter.ofAllowedRows:sr-message": string;
|
|
55
|
+
"BulkTextarea.Counter.limitReached:sr-message": string;
|
|
56
|
+
"BulkTextarea.Counter.limitExceeded:sr-message": string;
|
|
57
|
+
"BulkTextarea.ErrorsNavigation.totalErrors": string;
|
|
58
|
+
"BulkTextarea.ErrorsNavigation.selectedError": string;
|
|
59
|
+
"BulkTextarea.ErrorsNavigation.nextError:aria-label": string;
|
|
60
|
+
"BulkTextarea.ErrorsNavigation.previousError:aria-label": string;
|
|
61
|
+
};
|
|
62
|
+
ko: {
|
|
63
|
+
"BulkTextarea.ClearAllButton.buttonText": string;
|
|
64
|
+
"BulkTextarea.Counter.ofAllowedRows:sr-message": string;
|
|
65
|
+
"BulkTextarea.Counter.limitReached:sr-message": string;
|
|
66
|
+
"BulkTextarea.Counter.limitExceeded:sr-message": string;
|
|
67
|
+
"BulkTextarea.ErrorsNavigation.totalErrors": string;
|
|
68
|
+
"BulkTextarea.ErrorsNavigation.selectedError": string;
|
|
69
|
+
"BulkTextarea.ErrorsNavigation.nextError:aria-label": string;
|
|
70
|
+
"BulkTextarea.ErrorsNavigation.previousError:aria-label": string;
|
|
71
|
+
};
|
|
72
|
+
nl: {
|
|
73
|
+
"BulkTextarea.ClearAllButton.buttonText": string;
|
|
74
|
+
"BulkTextarea.Counter.ofAllowedRows:sr-message": string;
|
|
75
|
+
"BulkTextarea.Counter.limitReached:sr-message": string;
|
|
76
|
+
"BulkTextarea.Counter.limitExceeded:sr-message": string;
|
|
77
|
+
"BulkTextarea.ErrorsNavigation.totalErrors": string;
|
|
78
|
+
"BulkTextarea.ErrorsNavigation.selectedError": string;
|
|
79
|
+
"BulkTextarea.ErrorsNavigation.nextError:aria-label": string;
|
|
80
|
+
"BulkTextarea.ErrorsNavigation.previousError:aria-label": string;
|
|
81
|
+
};
|
|
82
|
+
pt: {
|
|
83
|
+
"BulkTextarea.ClearAllButton.buttonText": string;
|
|
84
|
+
"BulkTextarea.Counter.ofAllowedRows:sr-message": string;
|
|
85
|
+
"BulkTextarea.Counter.limitReached:sr-message": string;
|
|
86
|
+
"BulkTextarea.Counter.limitExceeded:sr-message": string;
|
|
87
|
+
"BulkTextarea.ErrorsNavigation.totalErrors": string;
|
|
88
|
+
"BulkTextarea.ErrorsNavigation.selectedError": string;
|
|
89
|
+
"BulkTextarea.ErrorsNavigation.nextError:aria-label": string;
|
|
90
|
+
"BulkTextarea.ErrorsNavigation.previousError:aria-label": string;
|
|
91
|
+
};
|
|
92
|
+
tr: {
|
|
93
|
+
"BulkTextarea.ClearAllButton.buttonText": string;
|
|
94
|
+
"BulkTextarea.Counter.ofAllowedRows:sr-message": string;
|
|
95
|
+
"BulkTextarea.Counter.limitReached:sr-message": string;
|
|
96
|
+
"BulkTextarea.Counter.limitExceeded:sr-message": string;
|
|
97
|
+
"BulkTextarea.ErrorsNavigation.totalErrors": string;
|
|
98
|
+
"BulkTextarea.ErrorsNavigation.selectedError": string;
|
|
99
|
+
"BulkTextarea.ErrorsNavigation.nextError:aria-label": string;
|
|
100
|
+
"BulkTextarea.ErrorsNavigation.previousError:aria-label": string;
|
|
101
|
+
};
|
|
102
|
+
vi: {
|
|
103
|
+
"BulkTextarea.ClearAllButton.buttonText": string;
|
|
104
|
+
"BulkTextarea.Counter.ofAllowedRows:sr-message": string;
|
|
105
|
+
"BulkTextarea.Counter.limitReached:sr-message": string;
|
|
106
|
+
"BulkTextarea.Counter.limitExceeded:sr-message": string;
|
|
107
|
+
"BulkTextarea.ErrorsNavigation.totalErrors": string;
|
|
108
|
+
"BulkTextarea.ErrorsNavigation.selectedError": string;
|
|
109
|
+
"BulkTextarea.ErrorsNavigation.nextError:aria-label": string;
|
|
110
|
+
"BulkTextarea.ErrorsNavigation.previousError:aria-label": string;
|
|
111
|
+
};
|
|
112
|
+
zh: {
|
|
113
|
+
"BulkTextarea.ClearAllButton.buttonText": string;
|
|
114
|
+
"BulkTextarea.Counter.ofAllowedRows:sr-message": string;
|
|
115
|
+
"BulkTextarea.Counter.limitReached:sr-message": string;
|
|
116
|
+
"BulkTextarea.Counter.limitExceeded:sr-message": string;
|
|
117
|
+
"BulkTextarea.ErrorsNavigation.totalErrors": string;
|
|
118
|
+
"BulkTextarea.ErrorsNavigation.selectedError": string;
|
|
119
|
+
"BulkTextarea.ErrorsNavigation.nextError:aria-label": string;
|
|
120
|
+
"BulkTextarea.ErrorsNavigation.previousError:aria-label": string;
|
|
121
|
+
};
|
|
122
|
+
pl: {
|
|
123
|
+
"BulkTextarea.ClearAllButton.buttonText": string;
|
|
124
|
+
"BulkTextarea.Counter.ofAllowedRows:sr-message": string;
|
|
125
|
+
"BulkTextarea.Counter.limitReached:sr-message": string;
|
|
126
|
+
"BulkTextarea.Counter.limitExceeded:sr-message": string;
|
|
127
|
+
"BulkTextarea.ErrorsNavigation.totalErrors": string;
|
|
128
|
+
"BulkTextarea.ErrorsNavigation.selectedError": string;
|
|
129
|
+
"BulkTextarea.ErrorsNavigation.nextError:aria-label": string;
|
|
130
|
+
"BulkTextarea.ErrorsNavigation.previousError:aria-label": string;
|
|
131
|
+
};
|
|
132
|
+
sv: {
|
|
133
|
+
"BulkTextarea.ClearAllButton.buttonText": string;
|
|
134
|
+
"BulkTextarea.Counter.ofAllowedRows:sr-message": string;
|
|
135
|
+
"BulkTextarea.Counter.limitReached:sr-message": string;
|
|
136
|
+
"BulkTextarea.Counter.limitExceeded:sr-message": string;
|
|
137
|
+
"BulkTextarea.ErrorsNavigation.totalErrors": string;
|
|
138
|
+
"BulkTextarea.ErrorsNavigation.selectedError": string;
|
|
139
|
+
"BulkTextarea.ErrorsNavigation.nextError:aria-label": string;
|
|
140
|
+
"BulkTextarea.ErrorsNavigation.previousError:aria-label": string;
|
|
141
|
+
};
|
|
142
|
+
};
|
package/package.json
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@semcore/bulk-textarea",
|
|
3
|
+
"description": "Semrush BulkTextarea Component",
|
|
4
|
+
"version": "1.0.1",
|
|
5
|
+
"main": "lib/cjs/index.js",
|
|
6
|
+
"module": "lib/es6/index.mjs",
|
|
7
|
+
"typings": "lib/types/index.d.ts",
|
|
8
|
+
"sideEffects": false,
|
|
9
|
+
"author": "UI-kit team <ui-kit-team@semrush.com>",
|
|
10
|
+
"license": "MIT",
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"@semcore/utils": "4.45.0",
|
|
13
|
+
"@semcore/flex-box": "5.40.0",
|
|
14
|
+
"@semcore/button": "5.41.0",
|
|
15
|
+
"@semcore/typography": "5.50.0",
|
|
16
|
+
"@semcore/counter": "3.37.2",
|
|
17
|
+
"@semcore/icon": "4.56.0",
|
|
18
|
+
"@semcore/popper": "5.45.2",
|
|
19
|
+
"@semcore/tooltip": "6.47.2",
|
|
20
|
+
"csstype": "3.0.8",
|
|
21
|
+
"dompurify": "3.2.3"
|
|
22
|
+
},
|
|
23
|
+
"peerDependencies": {
|
|
24
|
+
"@semcore/core": "^2.17.5",
|
|
25
|
+
"react": "16.8 - 18",
|
|
26
|
+
"react-dom": "16.8 - 18"
|
|
27
|
+
},
|
|
28
|
+
"repository": {
|
|
29
|
+
"type": "git",
|
|
30
|
+
"url": "https://github.com/semrush/intergalactic.git",
|
|
31
|
+
"directory": "semcore/bulk-textarea"
|
|
32
|
+
},
|
|
33
|
+
"devDependencies": {
|
|
34
|
+
"@types/react": "18.0.21",
|
|
35
|
+
"@types/dompurify": "3.2.0",
|
|
36
|
+
"@semcore/testing-utils": "1.0.0"
|
|
37
|
+
},
|
|
38
|
+
"scripts": {
|
|
39
|
+
"build": "pnpm semcore-builder --source=ts"
|
|
40
|
+
}
|
|
41
|
+
}
|