@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.
Files changed (79) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/LICENSE +21 -0
  3. package/README.md +67 -0
  4. package/lib/cjs/BulkTextarea.js +318 -0
  5. package/lib/cjs/BulkTextarea.js.map +1 -0
  6. package/lib/cjs/BulkTextarea.types.js +2 -0
  7. package/lib/cjs/BulkTextarea.types.js.map +1 -0
  8. package/lib/cjs/components/ClearAll.js +23 -0
  9. package/lib/cjs/components/ClearAll.js.map +1 -0
  10. package/lib/cjs/components/Counter.js +27 -0
  11. package/lib/cjs/components/Counter.js.map +1 -0
  12. package/lib/cjs/components/ErrorsNavigation.js +57 -0
  13. package/lib/cjs/components/ErrorsNavigation.js.map +1 -0
  14. package/lib/cjs/components/InputField/InputField.js +1110 -0
  15. package/lib/cjs/components/InputField/InputField.js.map +1 -0
  16. package/lib/cjs/components/InputField/InputField.types.js +2 -0
  17. package/lib/cjs/components/InputField/InputField.types.js.map +1 -0
  18. package/lib/cjs/components/InputField/inputField.shadow.css +160 -0
  19. package/lib/cjs/index.js +14 -0
  20. package/lib/cjs/index.js.map +1 -0
  21. package/lib/cjs/translations/__intergalactic-dynamic-locales.js +39 -0
  22. package/lib/cjs/translations/__intergalactic-dynamic-locales.js.map +1 -0
  23. package/lib/cjs/translations/de.json +10 -0
  24. package/lib/cjs/translations/en.json +10 -0
  25. package/lib/cjs/translations/es.json +10 -0
  26. package/lib/cjs/translations/fr.json +10 -0
  27. package/lib/cjs/translations/it.json +10 -0
  28. package/lib/cjs/translations/ja.json +10 -0
  29. package/lib/cjs/translations/ko.json +10 -0
  30. package/lib/cjs/translations/nl.json +10 -0
  31. package/lib/cjs/translations/pl.json +10 -0
  32. package/lib/cjs/translations/pt.json +10 -0
  33. package/lib/cjs/translations/sv.json +10 -0
  34. package/lib/cjs/translations/tr.json +10 -0
  35. package/lib/cjs/translations/vi.json +10 -0
  36. package/lib/cjs/translations/zh.json +10 -0
  37. package/lib/es6/BulkTextarea.mjs +310 -0
  38. package/lib/es6/BulkTextarea.mjs.map +1 -0
  39. package/lib/es6/BulkTextarea.types.mjs +2 -0
  40. package/lib/es6/BulkTextarea.types.mjs.map +1 -0
  41. package/lib/es6/components/ClearAll.mjs +17 -0
  42. package/lib/es6/components/ClearAll.mjs.map +1 -0
  43. package/lib/es6/components/Counter.mjs +21 -0
  44. package/lib/es6/components/Counter.mjs.map +1 -0
  45. package/lib/es6/components/ErrorsNavigation.mjs +50 -0
  46. package/lib/es6/components/ErrorsNavigation.mjs.map +1 -0
  47. package/lib/es6/components/InputField/InputField.mjs +1104 -0
  48. package/lib/es6/components/InputField/InputField.mjs.map +1 -0
  49. package/lib/es6/components/InputField/InputField.types.mjs +2 -0
  50. package/lib/es6/components/InputField/InputField.types.mjs.map +1 -0
  51. package/lib/es6/components/InputField/inputField.shadow.css +160 -0
  52. package/lib/es6/index.mjs +2 -0
  53. package/lib/es6/index.mjs.map +1 -0
  54. package/lib/es6/translations/__intergalactic-dynamic-locales.mjs +31 -0
  55. package/lib/es6/translations/__intergalactic-dynamic-locales.mjs.map +1 -0
  56. package/lib/es6/translations/de.json +10 -0
  57. package/lib/es6/translations/en.json +10 -0
  58. package/lib/es6/translations/es.json +10 -0
  59. package/lib/es6/translations/fr.json +10 -0
  60. package/lib/es6/translations/it.json +10 -0
  61. package/lib/es6/translations/ja.json +10 -0
  62. package/lib/es6/translations/ko.json +10 -0
  63. package/lib/es6/translations/nl.json +10 -0
  64. package/lib/es6/translations/pl.json +10 -0
  65. package/lib/es6/translations/pt.json +10 -0
  66. package/lib/es6/translations/sv.json +10 -0
  67. package/lib/es6/translations/tr.json +10 -0
  68. package/lib/es6/translations/vi.json +10 -0
  69. package/lib/es6/translations/zh.json +10 -0
  70. package/lib/types/BulkTextarea.d.ts +3 -0
  71. package/lib/types/BulkTextarea.types.d.ts +33 -0
  72. package/lib/types/components/ClearAll.d.ts +7 -0
  73. package/lib/types/components/Counter.d.ts +10 -0
  74. package/lib/types/components/ErrorsNavigation.d.ts +15 -0
  75. package/lib/types/components/InputField/InputField.d.ts +98 -0
  76. package/lib/types/components/InputField/InputField.types.d.ts +157 -0
  77. package/lib/types/index.d.ts +3 -0
  78. package/lib/types/translations/__intergalactic-dynamic-locales.d.ts +142 -0
  79. 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,3 @@
1
+ export { default } from './BulkTextarea';
2
+ export type { BulkTextareaProps } from './BulkTextarea.types';
3
+ export type { ErrorItem } from './components/InputField/InputField.types';
@@ -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
+ }