@entryscape/rdforms 10.7.1 → 10.7.2
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/rdforms.bmd.js +5 -5
- package/dist/rdforms.bootstrap.js +5 -5
- package/dist/rdforms.jquery.js +4 -4
- package/dist/rdforms.react.js +15 -15
- package/package.json +1 -1
- package/src/view/react/date.js +39 -10
- package/src/view/react/style.css +4 -0
- package/src/view/resources/nls.json +1 -0
package/package.json
CHANGED
package/src/view/react/date.js
CHANGED
|
@@ -7,6 +7,7 @@ import FormControl from '@mui/material/FormControl';
|
|
|
7
7
|
import { TextField } from '@mui/material';
|
|
8
8
|
import Select from '@mui/material/Select';
|
|
9
9
|
import moment from 'moment';
|
|
10
|
+
import CODES from '../../model/CODES';
|
|
10
11
|
import renderingContext from '../renderingContext';
|
|
11
12
|
import {
|
|
12
13
|
getDate,
|
|
@@ -19,7 +20,13 @@ import {
|
|
|
19
20
|
} from '../viewUtils';
|
|
20
21
|
import { useNamedGraphId } from './hooks';
|
|
21
22
|
|
|
22
|
-
const getDatatypeFromBinding = binding
|
|
23
|
+
const getDatatypeFromBinding = (binding, alternatives) => {
|
|
24
|
+
const currentDatatype = getDatatype(binding.getDatatype());
|
|
25
|
+
if (!alternatives[currentDatatype]) {
|
|
26
|
+
alternatives[currentDatatype] = 'error';
|
|
27
|
+
}
|
|
28
|
+
return currentDatatype || getDatatypeFromItem(binding.getItem());
|
|
29
|
+
};
|
|
23
30
|
|
|
24
31
|
const datePresenter = (fieldDiv, binding, context) => {
|
|
25
32
|
try {
|
|
@@ -89,13 +96,20 @@ const dateEditor = (fieldDiv, binding, context) => {
|
|
|
89
96
|
const DateComp = () => {
|
|
90
97
|
const value = binding.getGist();
|
|
91
98
|
const alternatives = useMemo(() => getAllowedDateAlternatives(binding.getItem()), []);
|
|
92
|
-
const onlyOneAlternative = Object.keys(alternatives).length === 1;
|
|
93
99
|
const [selectedDate, setSelectedDate] = useState(value === '' ? null : getDate(value));
|
|
94
|
-
const [selectedDatatype, setDatatype] = useState(getDatatypeFromBinding(binding));
|
|
100
|
+
const [selectedDatatype, setDatatype] = useState(getDatatypeFromBinding(binding, alternatives));
|
|
101
|
+
const onlyOneAlternative = Object.keys(alternatives).length === 1;
|
|
102
|
+
const [error, setError] = useState(binding.getMatchingCode() === CODES.WRONG_DATATYPE);
|
|
103
|
+
|
|
104
|
+
useEffect(() => {
|
|
105
|
+
fieldDiv.toggleClass('mismatchReport', error);
|
|
106
|
+
}, [error]);
|
|
107
|
+
|
|
95
108
|
useEffect(() => {
|
|
96
109
|
context.clear = () => {
|
|
97
110
|
setSelectedDate(null);
|
|
98
|
-
setDatatype(
|
|
111
|
+
setDatatype(getDatatypeFromItem(binding.getItem()));
|
|
112
|
+
setError(false);
|
|
99
113
|
};
|
|
100
114
|
}, []);
|
|
101
115
|
|
|
@@ -113,6 +127,7 @@ const dateEditor = (fieldDiv, binding, context) => {
|
|
|
113
127
|
binding.setDatatype(getDatatypeURI(event.target.value));
|
|
114
128
|
binding.setValue(getDateValue(selectedDate, event.target.value));
|
|
115
129
|
setDatatype(event.target.value);
|
|
130
|
+
setError(alternatives[event.target.value] === 'error');
|
|
116
131
|
};
|
|
117
132
|
const inputProps = {
|
|
118
133
|
'aria-labelledby': context.view.getLabelIndex(binding),
|
|
@@ -124,6 +139,7 @@ const dateEditor = (fieldDiv, binding, context) => {
|
|
|
124
139
|
const enabledDatePicker = !ngId && (selectedDatatype === 'DateTime' || selectedDatatype === 'Date'
|
|
125
140
|
|| selectedDatatype === 'Year' || selectedDatatype === 'YearMonth' || selectedDatatype === 'MonthDay');
|
|
126
141
|
return (
|
|
142
|
+
<>
|
|
127
143
|
<LocalizationProvider dateAdapter={DateAdapter}>
|
|
128
144
|
<span className="rdformsDatePicker">
|
|
129
145
|
{visibleDatePicker && (
|
|
@@ -162,34 +178,47 @@ const dateEditor = (fieldDiv, binding, context) => {
|
|
|
162
178
|
<Select
|
|
163
179
|
value={selectedDatatype}
|
|
164
180
|
inputProps={inputProps}
|
|
181
|
+
error={alternatives[selectedDatatype] === 'error'}
|
|
165
182
|
onChange={onDatatypeChange}
|
|
166
183
|
disabled={!!ngId}
|
|
167
184
|
>
|
|
168
185
|
{alternatives.Year && (
|
|
169
|
-
<MenuItem
|
|
186
|
+
<MenuItem disabled={alternatives.Year === 'error'} className="rdformsDatatypeOption"
|
|
187
|
+
value="Year">{bundle.date_year}</MenuItem>
|
|
170
188
|
)}
|
|
171
189
|
{alternatives.Date && (
|
|
172
|
-
<MenuItem
|
|
190
|
+
<MenuItem disabled={alternatives.Date === 'error'} className="rdformsDatatypeOption"
|
|
191
|
+
value="Date">{bundle.date_date}</MenuItem>
|
|
173
192
|
)}
|
|
174
193
|
{alternatives.DateTime && (
|
|
175
|
-
<MenuItem
|
|
194
|
+
<MenuItem disabled={alternatives.DateTime === 'error'} className="rdformsDatatypeOption"
|
|
195
|
+
value="DateTime">
|
|
176
196
|
{bundle.date_date_and_time}
|
|
177
197
|
</MenuItem>
|
|
178
198
|
)}
|
|
179
199
|
{alternatives.YearMonth && (
|
|
180
|
-
<MenuItem
|
|
200
|
+
<MenuItem disabled={alternatives.YearMonth === 'error'} className="rdformsDatatypeOption"
|
|
201
|
+
value="YearMonth">{bundle.date_year_and_month}</MenuItem>
|
|
181
202
|
)}
|
|
182
203
|
{alternatives.MonthDay && (
|
|
183
|
-
<MenuItem
|
|
204
|
+
<MenuItem disabled={alternatives.MonthDay === 'error'} className="rdformsDatatypeOption"
|
|
205
|
+
value="MonthDay">{bundle.date_month_and_day}</MenuItem>
|
|
184
206
|
)}
|
|
185
207
|
{alternatives.Time && (
|
|
186
|
-
<MenuItem
|
|
208
|
+
<MenuItem disabled={alternatives.Time === 'error'} className="rdformsDatatypeOption"
|
|
209
|
+
value="Time">{bundle.date_time}</MenuItem>
|
|
187
210
|
)}
|
|
188
211
|
</Select>
|
|
189
212
|
</FormControl>
|
|
190
213
|
)}
|
|
191
214
|
</span>
|
|
192
215
|
</LocalizationProvider>
|
|
216
|
+
{error && (
|
|
217
|
+
<div key="warning" className="rdformsWarning">
|
|
218
|
+
{context.view.messages.wrongDatatypeField}
|
|
219
|
+
</div>
|
|
220
|
+
)}
|
|
221
|
+
</>
|
|
193
222
|
);
|
|
194
223
|
};
|
|
195
224
|
fieldDiv.appendChild(<DateComp key={binding.getHash()}></DateComp>);
|
package/src/view/react/style.css
CHANGED
|
@@ -54,5 +54,6 @@
|
|
|
54
54
|
"missingValueField": "This field is required, please provide a value.",
|
|
55
55
|
"dependencyField": "This field depends on another field, please review the field it depends on or remove this value.",
|
|
56
56
|
"wrongValueField": "This is an invalid value, please change or remove it.",
|
|
57
|
+
"wrongDatatypeField": "The value has an invalid datatype, please change or remove it.",
|
|
57
58
|
"openLinkExternally": "Open link externally"
|
|
58
59
|
}
|