gbs-fwk-buildingblock 1.3.20-script-block → 1.3.21
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/index.es.js +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/src/blocks/text-area/index.tsx +17 -62
- package/src/blocks/text-box/index.tsx +37 -63
package/package.json
CHANGED
|
@@ -1,11 +1,4 @@
|
|
|
1
|
-
import React, {
|
|
2
|
-
ChangeEvent,
|
|
3
|
-
FocusEvent,
|
|
4
|
-
KeyboardEvent,
|
|
5
|
-
useState,
|
|
6
|
-
useRef,
|
|
7
|
-
useEffect,
|
|
8
|
-
} from "react";
|
|
1
|
+
import React, { ChangeEvent, FocusEvent, KeyboardEvent, useState, useRef, useEffect } from "react";
|
|
9
2
|
import { TooltipComponent } from "@syncfusion/ej2-react-popups";
|
|
10
3
|
|
|
11
4
|
interface TextAreaprops {
|
|
@@ -21,7 +14,7 @@ interface TextAreaprops {
|
|
|
21
14
|
required?: boolean;
|
|
22
15
|
className?: string;
|
|
23
16
|
placeholder?: string;
|
|
24
|
-
maxLength?: any
|
|
17
|
+
maxLength?: any
|
|
25
18
|
disabled?: boolean;
|
|
26
19
|
defaultValue?: any;
|
|
27
20
|
enableTooltip?: boolean;
|
|
@@ -45,76 +38,41 @@ export const TextArea: React.FC<TextAreaprops> = ({
|
|
|
45
38
|
onBlur,
|
|
46
39
|
defaultValue,
|
|
47
40
|
enableTooltip,
|
|
48
|
-
maxWords
|
|
41
|
+
maxWords
|
|
49
42
|
}) => {
|
|
50
|
-
const [toolTipValue, setToolTipValue] = useState("")
|
|
43
|
+
const [toolTipValue, setToolTipValue] = useState("")
|
|
51
44
|
|
|
52
45
|
const textAreaRef: any = useRef(null);
|
|
53
46
|
|
|
54
47
|
useEffect(() => {
|
|
55
|
-
setToolTipValue(textAreaRef.current?.value)
|
|
56
|
-
}, [defaultValue, value])
|
|
48
|
+
setToolTipValue(textAreaRef.current?.value)
|
|
49
|
+
}, [defaultValue, value])
|
|
57
50
|
|
|
58
51
|
const tooltipBeforeOpen = (event: any, tooltipValue: any) => {
|
|
59
|
-
if (!tooltipValue || !enableTooltip)
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
const sanitizeInput = (value: string): string => {
|
|
63
|
-
return value
|
|
64
|
-
.replace(/[<>`;]/g, "") // strip common XSS/script vectors
|
|
65
|
-
};
|
|
52
|
+
if (!tooltipValue || !enableTooltip)
|
|
53
|
+
event.cancel = true;
|
|
54
|
+
}
|
|
66
55
|
|
|
67
56
|
const onHandleChange = (event: ChangeEvent<HTMLTextAreaElement>) => {
|
|
68
57
|
const inputValue = event.target.value;
|
|
69
|
-
const sanitizedValue = sanitizeInput(inputValue);
|
|
70
|
-
|
|
71
|
-
const clonedEvent = Object.assign(Object.create(Object.getPrototypeOf(event)), event, {
|
|
72
|
-
target: {
|
|
73
|
-
...event.target,
|
|
74
|
-
value: sanitizedValue,
|
|
75
|
-
name: event.target.name,
|
|
76
|
-
}
|
|
77
|
-
});
|
|
78
|
-
|
|
79
58
|
const words = inputValue.trim().split(/\s+/);
|
|
80
59
|
if (maxWords && words.length > maxWords) {
|
|
81
60
|
return;
|
|
82
61
|
}
|
|
83
62
|
setToolTipValue(inputValue);
|
|
84
|
-
onChange?.(
|
|
85
|
-
};
|
|
86
|
-
|
|
87
|
-
const onBlurEvent = (event: FocusEvent<HTMLTextAreaElement>) => {
|
|
88
|
-
const inputValue = event.target.value;
|
|
89
|
-
const sanitizedValue = sanitizeInput(inputValue);
|
|
90
|
-
const clonedEvent = {
|
|
91
|
-
...event,
|
|
92
|
-
target: {
|
|
93
|
-
...event.target,
|
|
94
|
-
value: sanitizedValue,
|
|
95
|
-
},
|
|
96
|
-
};
|
|
97
|
-
setToolTipValue(event.target.value);
|
|
98
|
-
onBlur?.(clonedEvent as any, {});
|
|
63
|
+
onChange?.(event, {});
|
|
99
64
|
};
|
|
100
65
|
|
|
101
66
|
const onKeyDown = (e: any) => {
|
|
102
|
-
e.stopPropagation()
|
|
103
|
-
onKeypress?.(e)
|
|
104
|
-
}
|
|
67
|
+
e.stopPropagation()
|
|
68
|
+
onKeypress?.(e)
|
|
69
|
+
}
|
|
105
70
|
|
|
106
71
|
return (
|
|
107
72
|
<>
|
|
108
|
-
{label &&
|
|
109
|
-
<label htmlFor={id} className="form-label">
|
|
110
|
-
{label} {required ? <i className="req-lbl">*</i> : <></>}
|
|
111
|
-
</label>
|
|
112
|
-
)}
|
|
73
|
+
{label && <label htmlFor={id} className="form-label">{label} {required ? <i className="req-lbl">*</i> : <></>}</label>}
|
|
113
74
|
{value != undefined ? (
|
|
114
|
-
<TooltipComponent
|
|
115
|
-
beforeOpen={(event: any) => tooltipBeforeOpen(event, toolTipValue)}
|
|
116
|
-
content={enableTooltip ? toolTipValue : ""}
|
|
117
|
-
>
|
|
75
|
+
<TooltipComponent beforeOpen={(event: any) => tooltipBeforeOpen(event, toolTipValue)} content={enableTooltip ? toolTipValue : ""}>
|
|
118
76
|
<textarea
|
|
119
77
|
id={id}
|
|
120
78
|
name={name}
|
|
@@ -132,10 +90,7 @@ export const TextArea: React.FC<TextAreaprops> = ({
|
|
|
132
90
|
/>
|
|
133
91
|
</TooltipComponent>
|
|
134
92
|
) : (
|
|
135
|
-
<TooltipComponent
|
|
136
|
-
beforeOpen={(event: any) => tooltipBeforeOpen(event, toolTipValue)}
|
|
137
|
-
content={enableTooltip ? toolTipValue : ""}
|
|
138
|
-
>
|
|
93
|
+
<TooltipComponent beforeOpen={(event: any) => tooltipBeforeOpen(event, toolTipValue)} content={enableTooltip ? toolTipValue : ""}>
|
|
139
94
|
<textarea
|
|
140
95
|
id={id}
|
|
141
96
|
name={name}
|
|
@@ -148,7 +103,7 @@ export const TextArea: React.FC<TextAreaprops> = ({
|
|
|
148
103
|
disabled={disabled}
|
|
149
104
|
onKeyDown={onKeyDown}
|
|
150
105
|
defaultValue={defaultValue}
|
|
151
|
-
onBlur={
|
|
106
|
+
onBlur={onBlur}
|
|
152
107
|
maxLength={maxLength}
|
|
153
108
|
ref={textAreaRef}
|
|
154
109
|
/>
|
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
import React, {
|
|
2
|
-
ChangeEvent,
|
|
3
|
-
FocusEvent,
|
|
4
|
-
useState,
|
|
5
|
-
useRef,
|
|
6
|
-
useEffect,
|
|
7
|
-
} from "react";
|
|
1
|
+
import React, { ChangeEvent, FocusEvent, useState, useRef, useEffect } from "react";
|
|
8
2
|
import { TooltipComponent } from "@syncfusion/ej2-react-popups";
|
|
9
3
|
|
|
10
4
|
interface TextInputProps {
|
|
@@ -30,7 +24,7 @@ interface TextInputProps {
|
|
|
30
24
|
enableTooltip?: boolean;
|
|
31
25
|
disablePasting?: boolean;
|
|
32
26
|
autoComplete?: string;
|
|
33
|
-
inputRef?: any
|
|
27
|
+
inputRef?: any
|
|
34
28
|
}
|
|
35
29
|
|
|
36
30
|
export const Textbox: React.FC<TextInputProps> = ({
|
|
@@ -56,11 +50,11 @@ export const Textbox: React.FC<TextInputProps> = ({
|
|
|
56
50
|
enableTooltip,
|
|
57
51
|
disablePasting = false,
|
|
58
52
|
autoComplete = "",
|
|
59
|
-
inputRef
|
|
53
|
+
inputRef
|
|
60
54
|
}) => {
|
|
61
55
|
const [patternError, setPatternError] = useState(false);
|
|
62
56
|
const [oldValue, setOldValue] = useState(value ? value : defaultValue);
|
|
63
|
-
const [tooltipValue, setTooltipValue] = useState()
|
|
57
|
+
const [tooltipValue, setTooltipValue] = useState()
|
|
64
58
|
|
|
65
59
|
const isValidPattern = (value: string): boolean => {
|
|
66
60
|
switch (pattern) {
|
|
@@ -93,11 +87,6 @@ export const Textbox: React.FC<TextInputProps> = ({
|
|
|
93
87
|
return "Invalid Input";
|
|
94
88
|
};
|
|
95
89
|
|
|
96
|
-
const sanitizeInput = (value: string): string => {
|
|
97
|
-
return value
|
|
98
|
-
.replace(/[<>`;]/g, "")
|
|
99
|
-
};
|
|
100
|
-
|
|
101
90
|
const onBlurEvent = (event: any) => {
|
|
102
91
|
if (pattern && event.target.value && !isValidPattern(event.target.value)) {
|
|
103
92
|
setPatternError(true);
|
|
@@ -105,73 +94,64 @@ export const Textbox: React.FC<TextInputProps> = ({
|
|
|
105
94
|
onBlur?.(event, {});
|
|
106
95
|
};
|
|
107
96
|
|
|
108
|
-
const onChangeEvent = (event:
|
|
109
|
-
|
|
110
|
-
const sanitizedValue: any = sanitizeInput(rawValue);
|
|
111
|
-
setTooltipValue(texboxTooltip.current?.value);
|
|
112
|
-
setPatternError(false);
|
|
97
|
+
const onChangeEvent = (event: any) => {
|
|
98
|
+
setTooltipValue(texboxTooltip.current?.value)
|
|
113
99
|
|
|
114
|
-
|
|
115
|
-
target: {
|
|
116
|
-
...event.target,
|
|
117
|
-
value: sanitizedValue,
|
|
118
|
-
name: event.target.name
|
|
119
|
-
}
|
|
120
|
-
});
|
|
100
|
+
setPatternError(false);
|
|
121
101
|
|
|
122
102
|
if (pattern === "number") {
|
|
123
103
|
if (
|
|
124
|
-
(
|
|
125
|
-
!isNaN(
|
|
104
|
+
(event.target.value.length === 1 && event.target.value === "-") ||
|
|
105
|
+
!isNaN(event.target.value)
|
|
126
106
|
) {
|
|
127
|
-
onChange?.(
|
|
128
|
-
setOldValue(
|
|
107
|
+
onChange?.(event, {});
|
|
108
|
+
setOldValue(event.target.value);
|
|
129
109
|
} else {
|
|
130
110
|
event.target.value = oldValue;
|
|
131
111
|
}
|
|
132
|
-
} else if (
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
if (!sanitizedValue.includes("-") && !isNaN(sanitizedValue)) {
|
|
137
|
-
onChange?.(clonedEvent as any, {});
|
|
138
|
-
setOldValue(sanitizedValue);
|
|
112
|
+
} else if (pattern === "negativenumber" || pattern === "preventnegativenumber") {
|
|
113
|
+
if (!event.target.value.includes("-") && !isNaN(event.target.value)) {
|
|
114
|
+
onChange?.(event, {});
|
|
115
|
+
setOldValue(event.target.value);
|
|
139
116
|
} else {
|
|
140
117
|
event.target.value = oldValue;
|
|
141
118
|
}
|
|
142
|
-
}
|
|
119
|
+
}
|
|
120
|
+
else if (pattern === "lettersOnly") {
|
|
143
121
|
const textRegex = /^[a-zA-Z]*$/;
|
|
144
|
-
if (textRegex.test(
|
|
145
|
-
setOldValue(
|
|
146
|
-
onChange?.(
|
|
122
|
+
if (textRegex.test(event.target.value) || event.target.value === "") {
|
|
123
|
+
setOldValue(event.target.value);
|
|
124
|
+
onChange?.(event, {});
|
|
147
125
|
} else {
|
|
148
126
|
event.target.value = oldValue;
|
|
149
127
|
}
|
|
150
128
|
} else {
|
|
151
|
-
setOldValue(
|
|
152
|
-
onChange?.(
|
|
129
|
+
setOldValue(event.target.value);
|
|
130
|
+
onChange?.(event, {});
|
|
153
131
|
}
|
|
154
132
|
};
|
|
155
133
|
|
|
156
134
|
//tooltip settings
|
|
157
135
|
const texboxTooltip: any = useRef(null);
|
|
158
136
|
useEffect(() => {
|
|
159
|
-
setTooltipValue(texboxTooltip.current?.value)
|
|
160
|
-
}, [defaultValue, value])
|
|
137
|
+
setTooltipValue(texboxTooltip.current?.value)
|
|
138
|
+
}, [defaultValue, value])
|
|
161
139
|
|
|
162
140
|
useEffect(() => {
|
|
163
141
|
if (inputRef) {
|
|
164
|
-
inputRef(texboxTooltip)
|
|
142
|
+
inputRef(texboxTooltip)
|
|
165
143
|
}
|
|
166
|
-
}, [texboxTooltip, inputRef])
|
|
144
|
+
}, [texboxTooltip, inputRef])
|
|
167
145
|
|
|
168
146
|
const tooltipBeforeOpen = (event: any, tooltipValue: any) => {
|
|
169
|
-
if (!tooltipValue || !enableTooltip)
|
|
170
|
-
|
|
147
|
+
if (!tooltipValue || !enableTooltip)
|
|
148
|
+
event.cancel = true;
|
|
149
|
+
}
|
|
171
150
|
const handleonKeyDown = (e: any) => {
|
|
172
|
-
onKeyDown?.(e)
|
|
173
|
-
e.stopPropagation()
|
|
174
|
-
|
|
151
|
+
onKeyDown?.(e)
|
|
152
|
+
e.stopPropagation()
|
|
153
|
+
|
|
154
|
+
}
|
|
175
155
|
return (
|
|
176
156
|
<>
|
|
177
157
|
{label && (
|
|
@@ -181,10 +161,7 @@ export const Textbox: React.FC<TextInputProps> = ({
|
|
|
181
161
|
)}
|
|
182
162
|
<>
|
|
183
163
|
{value != undefined ? (
|
|
184
|
-
<TooltipComponent
|
|
185
|
-
beforeOpen={(event: any) => tooltipBeforeOpen(event, tooltipValue)}
|
|
186
|
-
content={enableTooltip ? tooltipValue : ""}
|
|
187
|
-
>
|
|
164
|
+
<TooltipComponent beforeOpen={(event: any) => tooltipBeforeOpen(event, tooltipValue)} content={enableTooltip ? tooltipValue : ""} >
|
|
188
165
|
<input
|
|
189
166
|
id={id}
|
|
190
167
|
type={type}
|
|
@@ -206,15 +183,12 @@ export const Textbox: React.FC<TextInputProps> = ({
|
|
|
206
183
|
defaultValue={defaultValue}
|
|
207
184
|
checked={checked}
|
|
208
185
|
ref={texboxTooltip}
|
|
209
|
-
onPaste={disablePasting ?
|
|
186
|
+
onPaste={disablePasting ? e => e.preventDefault() : undefined}
|
|
210
187
|
autoComplete={autoComplete}
|
|
211
188
|
/>
|
|
212
189
|
</TooltipComponent>
|
|
213
190
|
) : (
|
|
214
|
-
<TooltipComponent
|
|
215
|
-
beforeOpen={(event: any) => tooltipBeforeOpen(event, tooltipValue)}
|
|
216
|
-
content={enableTooltip ? tooltipValue : ""}
|
|
217
|
-
>
|
|
191
|
+
<TooltipComponent beforeOpen={(event: any) => tooltipBeforeOpen(event, tooltipValue)} content={enableTooltip ? tooltipValue : ""}>
|
|
218
192
|
<input
|
|
219
193
|
id={id}
|
|
220
194
|
type={type}
|
|
@@ -235,7 +209,7 @@ export const Textbox: React.FC<TextInputProps> = ({
|
|
|
235
209
|
defaultValue={defaultValue}
|
|
236
210
|
checked={checked}
|
|
237
211
|
ref={texboxTooltip}
|
|
238
|
-
onPaste={disablePasting ?
|
|
212
|
+
onPaste={disablePasting ? e => e.preventDefault() : undefined}
|
|
239
213
|
autoComplete={autoComplete}
|
|
240
214
|
/>
|
|
241
215
|
</TooltipComponent>
|