@iapps/ng-dhis2-ui 1.2.98 → 1.2.99
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/fesm2022/iapps-ng-dhis2-ui.mjs +488 -192
- package/fesm2022/iapps-ng-dhis2-ui.mjs.map +1 -1
- package/lib/modules/form/utils/field-type.util.d.ts +1 -1
- package/lib/modules/form/utils/field.util.d.ts +1 -1
- package/lib/modules/line-list/components/table/filterToolbar.d.ts +1 -1
- package/lib/modules/line-list/components/table/lineListTable.d.ts +1 -1
- package/lib/modules/line-list/components/table/tableBody.d.ts +1 -1
- package/lib/modules/line-list/containers/line-list.component.d.ts +2 -1
- package/lib/modules/line-list/utils/tei-table-data-utils.d.ts +1 -1
- package/package.json +1 -1
|
@@ -25,7 +25,7 @@ import { Layer } from '@dhis2-ui/layer';
|
|
|
25
25
|
import { CircularLoader } from '@dhis2-ui/loader';
|
|
26
26
|
import { MenuItem, MenuDivider } from '@dhis2-ui/menu';
|
|
27
27
|
import parse from 'html-react-parser';
|
|
28
|
-
import { Button as Button$1, IconDimensionData16, IconClock16, IconDimensionOrgUnit16, spacers as spacers$1, colors as colors$1, IconEdit16, theme as theme$1, Tooltip, IconChevronRight16, SingleSelectField, SingleSelectOption, InputField as InputField$1, TabBar, Tab, Transfer, Modal as Modal$1, ModalTitle as ModalTitle$1, ModalContent as ModalContent$1, ModalActions as ModalActions$1, ButtonStrip as ButtonStrip$1, Checkbox, OrganisationUnitTree, MultiSelect, MultiSelectOption, IconWarningFilled16, CircularLoader as CircularLoader$1, Chip, DataTableToolbar, CalendarInput, TableHead, DataTableRow, DataTableColumnHeader, Layer as Layer$1, Popper,
|
|
28
|
+
import { Button as Button$1, IconDimensionData16, IconClock16, IconDimensionOrgUnit16, spacers as spacers$1, colors as colors$1, IconEdit16, theme as theme$1, Tooltip, IconChevronRight16, SingleSelectField, SingleSelectOption, InputField as InputField$1, TabBar, Tab, Transfer, Modal as Modal$1, ModalTitle as ModalTitle$1, ModalContent as ModalContent$1, ModalActions as ModalActions$1, ButtonStrip as ButtonStrip$1, Checkbox, OrganisationUnitTree, MultiSelect, MultiSelectOption, IconWarningFilled16, CircularLoader as CircularLoader$1, Chip, DataTableToolbar, DropdownButton, FlyoutMenu, CalendarInput, TableHead, DataTableRow, DataTableColumnHeader, Layer as Layer$1, Popper, MenuItem as MenuItem$1, IconMore24, DataTableCell, TableBody as TableBody$1, Pagination as Pagination$1, TableFoot, DataTable, FileInputField, FileListItem, MultiSelectField, TextAreaField } from '@dhis2/ui';
|
|
29
29
|
import { isObject, isString, debounce, sortBy, isArray, find, camelCase, flatten, isUndefined, head, isEmpty } from 'lodash';
|
|
30
30
|
import cx from 'classnames';
|
|
31
31
|
import { getNowInCalendar, generateFixedPeriods } from '@dhis2/multi-calendar-dates';
|
|
@@ -3303,96 +3303,299 @@ const OrgUnitSelector = ({ hide, setHide, selectedOrgUnit, setSelectedOrgUnit, s
|
|
|
3303
3303
|
React__default.createElement(ButtonStrip$1, { end: true },
|
|
3304
3304
|
React__default.createElement(Button$1, { onClick: () => setHide(true), secondary: true }, "Close")))));
|
|
3305
3305
|
|
|
3306
|
-
const FilterToolbar = ({ orgUnitLabel, selectedOrgUnit, setSelectedOrgUnit, setOrgUnitState, defaultOrgUnit, setHide, startDateState, setStartDateState, endDateState, setEndDateState, visibleFilters, dateStates, inputValues, setInputValues, handleInputChange, handleInputChangeForSelectField, handleDateSelect,
|
|
3307
|
-
|
|
3308
|
-
|
|
3309
|
-
|
|
3310
|
-
|
|
3311
|
-
|
|
3312
|
-
|
|
3306
|
+
const FilterToolbar = ({ orgUnitLabel, selectedOrgUnit, setSelectedOrgUnit, setOrgUnitState, defaultOrgUnit, setHide, startDateState, setStartDateState, endDateState, setEndDateState, visibleFilters, dateStates, inputValues, setInputValues, handleInputChange, handleInputChangeForSelectField, handleDateSelect, showAllFilters, setShowAllFilters, setTempStartDateState, setTempEndDateState, setTempOrgUnitState, tempStartDateState, tempEndDateState, tempOrgUnitState, dataQueryFiltersState, setDataQueryFiltersState, SetOrgUnitModalVisible, showEnrollmentDates, handleAdditionalFilters, handleStartDateFilter, handleEndDateFilter, handleOrgUnitFilter, setDateStates, prevInputValues, setPrevInputValues, setTempDataQueryFiltersState, prevDateStates, setPrevDateStates, prevSelectedOrgUnit, setPrevSelectedOrgUnit, }) => {
|
|
3307
|
+
const [isOpen, setIsOpen] = useState(false);
|
|
3308
|
+
const [isOpenOrgUnitDropdown, setIsOpenOrgUnitDropdown] = useState(false);
|
|
3309
|
+
const [openDropdownKey, setOpenDropdownKey] = useState(null);
|
|
3310
|
+
//TODO: I HAVE DUPLICATED DROPDOWN AND CLEAR ICON IN MULTIPLE PLACES REQUIRED TO CREATE A REUSABLE DROPDOWN COMPONENT WITH THE CLEAR ICON TO AVOID DUPLICATION
|
|
3311
|
+
const ClearIcon = ({ className, ...props }) => (React__default.createElement("svg", { className: className, ...props, viewBox: "0 0 24 24", width: 16, height: 16 },
|
|
3312
|
+
React__default.createElement("path", { d: "M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z" })));
|
|
3313
|
+
return (React__default.createElement(DataTableToolbar, { className: "table-top-toolbar" },
|
|
3313
3314
|
React__default.createElement("div", { style: {
|
|
3314
3315
|
display: 'flex',
|
|
3315
|
-
alignItems: 'center',
|
|
3316
3316
|
gap: '10px',
|
|
3317
3317
|
flexWrap: 'wrap',
|
|
3318
3318
|
} },
|
|
3319
|
-
React__default.createElement(
|
|
3320
|
-
|
|
3321
|
-
|
|
3322
|
-
|
|
3323
|
-
|
|
3324
|
-
|
|
3325
|
-
|
|
3326
|
-
|
|
3327
|
-
|
|
3328
|
-
|
|
3329
|
-
|
|
3330
|
-
|
|
3331
|
-
|
|
3332
|
-
|
|
3333
|
-
|
|
3334
|
-
|
|
3335
|
-
|
|
3336
|
-
|
|
3337
|
-
|
|
3338
|
-
|
|
3339
|
-
|
|
3340
|
-
|
|
3341
|
-
|
|
3342
|
-
|
|
3343
|
-
|
|
3344
|
-
|
|
3345
|
-
|
|
3346
|
-
|
|
3347
|
-
|
|
3348
|
-
|
|
3349
|
-
|
|
3350
|
-
|
|
3351
|
-
|
|
3352
|
-
|
|
3353
|
-
|
|
3354
|
-
|
|
3355
|
-
|
|
3356
|
-
|
|
3357
|
-
|
|
3358
|
-
|
|
3359
|
-
|
|
3360
|
-
|
|
3361
|
-
|
|
3362
|
-
}
|
|
3363
|
-
|
|
3364
|
-
|
|
3365
|
-
|
|
3319
|
+
React__default.createElement("div", { style: {
|
|
3320
|
+
display: 'flex',
|
|
3321
|
+
alignItems: 'center',
|
|
3322
|
+
gap: '10px',
|
|
3323
|
+
flexWrap: 'wrap',
|
|
3324
|
+
} },
|
|
3325
|
+
React__default.createElement(DropdownButton, { name: "customDropdown", open: isOpenOrgUnitDropdown, onClick: () => setIsOpenOrgUnitDropdown(!isOpenOrgUnitDropdown), component: React__default.createElement("div", null,
|
|
3326
|
+
React__default.createElement(FlyoutMenu, null,
|
|
3327
|
+
React__default.createElement("div", { style: { padding: '16px' } },
|
|
3328
|
+
React__default.createElement(InputField$1, { key: "location", placeholder: orgUnitLabel ? orgUnitLabel : 'registering unit', value: selectedOrgUnit, onFocus: () => {
|
|
3329
|
+
SetOrgUnitModalVisible(true);
|
|
3330
|
+
setHide(false);
|
|
3331
|
+
} }),
|
|
3332
|
+
React__default.createElement("div", { style: {
|
|
3333
|
+
paddingTop: '8px',
|
|
3334
|
+
display: 'flex',
|
|
3335
|
+
justifyContent: 'flex-end',
|
|
3336
|
+
} },
|
|
3337
|
+
React__default.createElement(ButtonStrip$1, null,
|
|
3338
|
+
React__default.createElement(Button$1, { primary: true, disabled: !selectedOrgUnit, onClick: () => {
|
|
3339
|
+
setPrevSelectedOrgUnit(selectedOrgUnit);
|
|
3340
|
+
handleOrgUnitFilter();
|
|
3341
|
+
setIsOpenOrgUnitDropdown(false);
|
|
3342
|
+
} }, "update"),
|
|
3343
|
+
React__default.createElement(Button$1, { disabled: !selectedOrgUnit, onClick: () => {
|
|
3344
|
+
setSelectedOrgUnit('');
|
|
3345
|
+
setPrevSelectedOrgUnit('');
|
|
3346
|
+
setOrgUnitState(defaultOrgUnit);
|
|
3347
|
+
setTempOrgUnitState(defaultOrgUnit);
|
|
3348
|
+
setIsOpenOrgUnitDropdown(false);
|
|
3349
|
+
} }, "reset filter")))))) },
|
|
3350
|
+
orgUnitLabel ? orgUnitLabel : 'registering unit',
|
|
3351
|
+
' ',
|
|
3352
|
+
prevSelectedOrgUnit && ':',
|
|
3353
|
+
" ",
|
|
3354
|
+
prevSelectedOrgUnit,
|
|
3355
|
+
prevSelectedOrgUnit && (React__default.createElement("span", { onClick: (event) => {
|
|
3356
|
+
event.stopPropagation();
|
|
3357
|
+
setSelectedOrgUnit('');
|
|
3358
|
+
setPrevSelectedOrgUnit('');
|
|
3359
|
+
setOrgUnitState(defaultOrgUnit);
|
|
3360
|
+
setTempOrgUnitState(defaultOrgUnit);
|
|
3361
|
+
setIsOpenOrgUnitDropdown(false);
|
|
3362
|
+
}, style: { display: 'inline-flex', alignItems: 'center' } },
|
|
3363
|
+
React__default.createElement(ClearIcon, { className: "my-icon-class" })))),
|
|
3364
|
+
showEnrollmentDates && (React__default.createElement(React__default.Fragment, null,
|
|
3365
|
+
React__default.createElement(DropdownButton, { name: "customDropdown", open: isOpen, onClick: () => setIsOpen(!isOpen), component: React__default.createElement("div", null,
|
|
3366
|
+
React__default.createElement(FlyoutMenu, null,
|
|
3367
|
+
React__default.createElement("div", { style: { padding: '16px' } },
|
|
3368
|
+
React__default.createElement("div", { style: {
|
|
3369
|
+
display: 'flex',
|
|
3370
|
+
alignItems: 'flex-end',
|
|
3371
|
+
gap: '16px',
|
|
3372
|
+
} },
|
|
3373
|
+
React__default.createElement(CalendarInput, { calendar: "gregory", locale: "en-GB", timeZone: "Africa/Dar_es_Salaam", date: formatDateForDisplay(tempStartDateState), onDateSelect: (selectedDate) => {
|
|
3374
|
+
setTempStartDateState(selectedDate.calendarDateString);
|
|
3375
|
+
} }),
|
|
3376
|
+
React__default.createElement("span", { style: { paddingBottom: '8px' } }, "to"),
|
|
3377
|
+
React__default.createElement(CalendarInput, { calendar: "gregory", locale: "en-GB", timeZone: "Africa/Dar_es_Salaam", date: formatDateForDisplay(tempEndDateState), onDateSelect: (selectedDate) => {
|
|
3378
|
+
setTempEndDateState(selectedDate.calendarDateString);
|
|
3379
|
+
} })),
|
|
3380
|
+
React__default.createElement("div", { style: {
|
|
3381
|
+
paddingTop: '8px',
|
|
3382
|
+
display: 'flex',
|
|
3383
|
+
justifyContent: 'flex-end',
|
|
3384
|
+
} },
|
|
3385
|
+
React__default.createElement(ButtonStrip$1, null,
|
|
3386
|
+
React__default.createElement(Button$1, { primary: true, onClick: () => {
|
|
3387
|
+
handleStartDateFilter();
|
|
3388
|
+
handleEndDateFilter();
|
|
3389
|
+
setIsOpen(false);
|
|
3390
|
+
} }, "update"),
|
|
3391
|
+
React__default.createElement(Button$1, { onClick: () => {
|
|
3392
|
+
setStartDateState(null);
|
|
3393
|
+
setTempEndDateState(null);
|
|
3394
|
+
setTempStartDateState(null);
|
|
3395
|
+
setEndDateState(null);
|
|
3396
|
+
setIsOpen(false);
|
|
3397
|
+
} }, "reset")))))) },
|
|
3398
|
+
"registration dates ",
|
|
3399
|
+
(startDateState || endDateState) && ':',
|
|
3400
|
+
' ',
|
|
3401
|
+
startDateState,
|
|
3402
|
+
endDateState && ` - ${endDateState}`,
|
|
3403
|
+
(startDateState || endDateState) && (React__default.createElement("span", { onClick: (event) => {
|
|
3404
|
+
event.stopPropagation();
|
|
3405
|
+
setStartDateState(null);
|
|
3406
|
+
setTempEndDateState(null);
|
|
3407
|
+
setTempStartDateState(null);
|
|
3408
|
+
setEndDateState(null);
|
|
3409
|
+
setIsOpen(false);
|
|
3410
|
+
}, style: { display: 'inline-flex', alignItems: 'center' } },
|
|
3411
|
+
React__default.createElement(ClearIcon, { className: "my-icon-class" }))))))),
|
|
3412
|
+
(visibleFilters ?? []).map(({ label, key, valueType, options, type }) => {
|
|
3413
|
+
if (valueType === 'DATE') {
|
|
3414
|
+
return (React__default.createElement(DropdownButton, { name: "customDropdown", open: openDropdownKey === key, onClick: () => {
|
|
3415
|
+
setOpenDropdownKey(openDropdownKey === key ? null : key);
|
|
3416
|
+
}, component: React__default.createElement("div", null,
|
|
3417
|
+
React__default.createElement(FlyoutMenu, null,
|
|
3418
|
+
React__default.createElement("div", { style: { padding: '16px' } },
|
|
3419
|
+
React__default.createElement(CalendarInput, { key: key, calendar: "gregory", locale: "en-GB", timeZone: "Africa/Dar_es_Salaam", date: dateStates[key], onDateSelect: (selectedDate) => {
|
|
3420
|
+
handleDateSelect(key, selectedDate, type);
|
|
3421
|
+
} }),
|
|
3422
|
+
React__default.createElement("div", { style: {
|
|
3423
|
+
paddingTop: '8px',
|
|
3424
|
+
display: 'flex',
|
|
3425
|
+
justifyContent: 'flex-end',
|
|
3426
|
+
} },
|
|
3427
|
+
React__default.createElement(ButtonStrip$1, null,
|
|
3428
|
+
React__default.createElement(Button$1, { primary: true, onClick: () => {
|
|
3429
|
+
setPrevDateStates((prev) => ({
|
|
3430
|
+
...prev,
|
|
3431
|
+
[key]: dateStates[key],
|
|
3432
|
+
}));
|
|
3433
|
+
handleAdditionalFilters();
|
|
3434
|
+
setOpenDropdownKey(null);
|
|
3435
|
+
} }, "update"),
|
|
3436
|
+
React__default.createElement(Button$1, { onClick: () => {
|
|
3437
|
+
setIsOpen(false);
|
|
3438
|
+
} }, "reset")))))) },
|
|
3439
|
+
label,
|
|
3440
|
+
" ",
|
|
3441
|
+
prevDateStates[key] && ':',
|
|
3442
|
+
" ",
|
|
3443
|
+
prevDateStates[key],
|
|
3444
|
+
prevDateStates[key] && (React__default.createElement("span", { onClick: (event) => {
|
|
3445
|
+
event.stopPropagation();
|
|
3446
|
+
setDateStates((prev) => ({
|
|
3447
|
+
...prev,
|
|
3448
|
+
[key]: '',
|
|
3449
|
+
}));
|
|
3450
|
+
setPrevDateStates((prev) => ({
|
|
3451
|
+
...prev,
|
|
3452
|
+
[key]: '',
|
|
3453
|
+
}));
|
|
3454
|
+
const filteredFilters = dataQueryFiltersState.filter((f) => f.attribute !== key);
|
|
3455
|
+
setDataQueryFiltersState(filteredFilters);
|
|
3456
|
+
setTempDataQueryFiltersState(filteredFilters);
|
|
3457
|
+
setOpenDropdownKey(null);
|
|
3458
|
+
}, style: { display: 'inline-flex', alignItems: 'center' } },
|
|
3459
|
+
React__default.createElement(ClearIcon, { className: "my-icon-class" })))));
|
|
3460
|
+
}
|
|
3461
|
+
if (options && options.options.length > 0) {
|
|
3462
|
+
return (React__default.createElement(DropdownButton, { name: "customDropdown", open: openDropdownKey === key, onClick: () => {
|
|
3463
|
+
setOpenDropdownKey(openDropdownKey === key ? null : key);
|
|
3464
|
+
}, component: React__default.createElement("div", null,
|
|
3465
|
+
React__default.createElement(FlyoutMenu, null,
|
|
3466
|
+
React__default.createElement("div", { style: { padding: '16px' } },
|
|
3467
|
+
React__default.createElement(SingleSelectField, { key: key, placeholder: `${label}`, selected: inputValues[key] || '', onChange: ({ selected }) => {
|
|
3468
|
+
setInputValues((prevValues) => ({
|
|
3469
|
+
...prevValues,
|
|
3470
|
+
[key]: selected ?? '',
|
|
3471
|
+
}));
|
|
3472
|
+
handleInputChangeForSelectField(key, selected ?? '', type);
|
|
3473
|
+
} }, (options.options ?? []).map((opt) => (React__default.createElement(SingleSelectOption, { key: opt.id, label: opt.name, value: opt.code })))),
|
|
3474
|
+
React__default.createElement("div", { style: {
|
|
3475
|
+
paddingTop: '8px',
|
|
3476
|
+
display: 'flex',
|
|
3477
|
+
justifyContent: 'flex-end',
|
|
3478
|
+
} },
|
|
3479
|
+
React__default.createElement(ButtonStrip$1, null,
|
|
3480
|
+
React__default.createElement(Button$1, { primary: true, disabled: !inputValues[key] ||
|
|
3481
|
+
inputValues[key] === prevInputValues[key], onClick: () => {
|
|
3482
|
+
setPrevInputValues((prev) => ({
|
|
3483
|
+
...prev,
|
|
3484
|
+
[key]: inputValues[key],
|
|
3485
|
+
}));
|
|
3486
|
+
handleAdditionalFilters();
|
|
3487
|
+
setOpenDropdownKey(null);
|
|
3488
|
+
} }, "update"),
|
|
3489
|
+
React__default.createElement(Button$1, { disabled: !inputValues[key], onClick: () => {
|
|
3490
|
+
setInputValues((prevValues) => ({
|
|
3491
|
+
...prevValues,
|
|
3492
|
+
[key]: '',
|
|
3493
|
+
}));
|
|
3494
|
+
setPrevInputValues((prevValues) => ({
|
|
3495
|
+
...prevValues,
|
|
3496
|
+
[key]: '',
|
|
3497
|
+
}));
|
|
3498
|
+
handleInputChangeForSelectField(key, '', type);
|
|
3499
|
+
const filteredFilters = dataQueryFiltersState.filter((f) => f.attribute !== key);
|
|
3500
|
+
setDataQueryFiltersState(filteredFilters);
|
|
3501
|
+
setTempDataQueryFiltersState(filteredFilters);
|
|
3502
|
+
setOpenDropdownKey(null);
|
|
3503
|
+
} }, "reset")))))) },
|
|
3504
|
+
label,
|
|
3505
|
+
" ",
|
|
3506
|
+
prevInputValues[key] && ':',
|
|
3507
|
+
" ",
|
|
3508
|
+
prevInputValues[key],
|
|
3509
|
+
prevInputValues[key] && (React__default.createElement("span", { onClick: (event) => {
|
|
3510
|
+
event.stopPropagation();
|
|
3511
|
+
setInputValues((prevValues) => ({
|
|
3512
|
+
...prevValues,
|
|
3513
|
+
[key]: '',
|
|
3514
|
+
}));
|
|
3515
|
+
setPrevInputValues((prevValues) => ({
|
|
3516
|
+
...prevValues,
|
|
3517
|
+
[key]: '',
|
|
3518
|
+
}));
|
|
3519
|
+
handleInputChangeForSelectField(key, '', type);
|
|
3520
|
+
const filteredFilters = dataQueryFiltersState.filter((f) => f.attribute !== key);
|
|
3521
|
+
setDataQueryFiltersState(filteredFilters);
|
|
3522
|
+
setTempDataQueryFiltersState(filteredFilters);
|
|
3523
|
+
setOpenDropdownKey(null);
|
|
3524
|
+
}, style: { display: 'inline-flex', alignItems: 'center' } },
|
|
3525
|
+
React__default.createElement(ClearIcon, { className: "my-icon-class" })))));
|
|
3526
|
+
}
|
|
3527
|
+
return (React__default.createElement(DropdownButton, { name: "customDropdown", open: openDropdownKey === key, onClick: () => {
|
|
3528
|
+
setOpenDropdownKey(openDropdownKey === key ? null : key);
|
|
3529
|
+
}, component: React__default.createElement("div", null,
|
|
3530
|
+
React__default.createElement(FlyoutMenu, null,
|
|
3531
|
+
React__default.createElement("div", { style: { padding: '16px' } },
|
|
3532
|
+
React__default.createElement(InputField$1, { key: key, placeholder: `${label}`, value: inputValues[key] || '', onChange: (e) => {
|
|
3533
|
+
const currentValue = 'target' in e ? e.target.value : e.value ?? '';
|
|
3534
|
+
setInputValues((prevValues) => ({
|
|
3535
|
+
...prevValues,
|
|
3536
|
+
[key]: currentValue,
|
|
3537
|
+
}));
|
|
3538
|
+
handleInputChange(key, currentValue, type);
|
|
3539
|
+
} }),
|
|
3540
|
+
React__default.createElement("div", { style: {
|
|
3541
|
+
paddingTop: '8px',
|
|
3542
|
+
display: 'flex',
|
|
3543
|
+
justifyContent: 'flex-end',
|
|
3544
|
+
} },
|
|
3545
|
+
React__default.createElement(ButtonStrip$1, null,
|
|
3546
|
+
React__default.createElement(Button$1, { primary: true, disabled: !inputValues[key] ||
|
|
3547
|
+
inputValues[key] === prevInputValues[key], onClick: () => {
|
|
3548
|
+
setPrevInputValues((prev) => ({
|
|
3549
|
+
...prev,
|
|
3550
|
+
[key]: inputValues[key],
|
|
3551
|
+
}));
|
|
3552
|
+
handleAdditionalFilters();
|
|
3553
|
+
setOpenDropdownKey(null);
|
|
3554
|
+
} }, "update"),
|
|
3555
|
+
React__default.createElement(Button$1, { disabled: !inputValues[key], onClick: () => {
|
|
3556
|
+
setInputValues((prevValues) => ({
|
|
3557
|
+
...prevValues,
|
|
3558
|
+
[key]: '',
|
|
3559
|
+
}));
|
|
3560
|
+
setPrevInputValues((prevValues) => ({
|
|
3561
|
+
...prevValues,
|
|
3562
|
+
[key]: '',
|
|
3563
|
+
}));
|
|
3564
|
+
// Remove the filter for this key
|
|
3565
|
+
const filteredFilters = dataQueryFiltersState.filter((f) => f.attribute !== key);
|
|
3566
|
+
setDataQueryFiltersState(filteredFilters);
|
|
3567
|
+
setTempDataQueryFiltersState(filteredFilters);
|
|
3568
|
+
setOpenDropdownKey(null);
|
|
3569
|
+
} }, "reset")))))) },
|
|
3570
|
+
label,
|
|
3571
|
+
" ",
|
|
3572
|
+
prevInputValues[key] && ':',
|
|
3573
|
+
" ",
|
|
3574
|
+
prevInputValues[key],
|
|
3575
|
+
prevInputValues[key] && (React__default.createElement("span", { onClick: (event) => {
|
|
3576
|
+
event.stopPropagation();
|
|
3577
|
+
// Clear the input value for this key
|
|
3578
|
+
setInputValues((prevValues) => ({
|
|
3579
|
+
...prevValues,
|
|
3580
|
+
[key]: '',
|
|
3581
|
+
}));
|
|
3582
|
+
setPrevInputValues((prevValues) => ({
|
|
3583
|
+
...prevValues,
|
|
3584
|
+
[key]: '',
|
|
3585
|
+
}));
|
|
3586
|
+
// Remove the filter for this key
|
|
3587
|
+
const filteredFilters = dataQueryFiltersState.filter((f) => f.attribute !== key);
|
|
3366
3588
|
setDataQueryFiltersState(filteredFilters);
|
|
3367
|
-
|
|
3368
|
-
|
|
3369
|
-
|
|
3370
|
-
|
|
3371
|
-
|
|
3372
|
-
|
|
3373
|
-
|
|
3374
|
-
|
|
3375
|
-
|
|
3376
|
-
|
|
3377
|
-
if (currentValue === '') {
|
|
3378
|
-
setDataQueryFiltersState(filteredFilters);
|
|
3379
|
-
}
|
|
3380
|
-
}, onBlur: (e) => {
|
|
3381
|
-
const currentValue = 'target' in e ? e.target.value : e.value ?? '';
|
|
3382
|
-
if (currentValue !== '' && currentValue !== prevValue) {
|
|
3383
|
-
handleInputChange(key, currentValue);
|
|
3384
|
-
setPrevValue(currentValue);
|
|
3385
|
-
}
|
|
3386
|
-
} }));
|
|
3387
|
-
}),
|
|
3388
|
-
React__default.createElement("div", { style: {
|
|
3389
|
-
display: 'flex',
|
|
3390
|
-
// alignItems: 'center',
|
|
3391
|
-
gap: '10px',
|
|
3392
|
-
// flexWrap: 'wrap',
|
|
3393
|
-
} },
|
|
3394
|
-
React__default.createElement(Button$1, { onClick: handleSearch }, "Search"),
|
|
3395
|
-
React__default.createElement(Button$1, { onClick: () => setShowAllFilters(!showAllFilters) }, showAllFilters ? 'Less Filters' : 'More Filters')))));
|
|
3589
|
+
setTempDataQueryFiltersState(filteredFilters);
|
|
3590
|
+
}, style: { display: 'inline-flex', alignItems: 'center' } },
|
|
3591
|
+
React__default.createElement(ClearIcon, { className: "my-icon-class" })))));
|
|
3592
|
+
}),
|
|
3593
|
+
React__default.createElement("div", { style: {
|
|
3594
|
+
display: 'flex',
|
|
3595
|
+
gap: '10px',
|
|
3596
|
+
} },
|
|
3597
|
+
React__default.createElement(Button$1, { onClick: () => setShowAllFilters(!showAllFilters) }, showAllFilters ? 'Less Filters' : 'More Filters')))));
|
|
3598
|
+
};
|
|
3396
3599
|
function formatDateForDisplay(dateString) {
|
|
3397
3600
|
if (!dateString || dateString === 'dd-mm-yyyy')
|
|
3398
3601
|
return 'dd-mm-yyyy';
|
|
@@ -3639,7 +3842,13 @@ const TableRow = ({ row, columns, getTextColorFromBackGround, actionOptions, act
|
|
|
3639
3842
|
// )}
|
|
3640
3843
|
// </DHISTableBody>
|
|
3641
3844
|
// );
|
|
3642
|
-
const TableBody = ({ data, columns, getTextColorFromBackGround, actionOptions, actionOptionOrientation, actionSelected, selectedRows, onRowToggle, selectable, showActionButtons }) => (React__default.createElement(TableBody$1, null,
|
|
3845
|
+
const TableBody = ({ data, columns, getTextColorFromBackGround, actionOptions, actionOptionOrientation, actionSelected, selectedRows, onRowToggle, selectable, showActionButtons, error, }) => (React__default.createElement(TableBody$1, null, error ? (React__default.createElement(DataTableRow, null,
|
|
3846
|
+
React__default.createElement(DataTableCell, { colSpan: columns.length.toString(), style: {
|
|
3847
|
+
textAlign: 'center',
|
|
3848
|
+
fontWeight: 'bold',
|
|
3849
|
+
color: 'red',
|
|
3850
|
+
padding: '20px',
|
|
3851
|
+
} }, error))) : data.length > 0 ? (data.map((row) => (React__default.createElement(TableRow, { key: row.index.value, row: row, columns: columns, getTextColorFromBackGround: getTextColorFromBackGround, actionOptions: actionOptions, actionOptionOrientation: actionOptionOrientation, actionSelected: actionSelected, isChecked: selectedRows.some((r) => r.index?.value === row.index?.value), onToggle: onRowToggle, selectable: selectable, showActionButtons: showActionButtons })))) : (React__default.createElement(DataTableRow, null,
|
|
3643
3852
|
React__default.createElement(DataTableCell, { colSpan: columns.length.toString(), style: {
|
|
3644
3853
|
textAlign: 'center',
|
|
3645
3854
|
fontWeight: 'bold',
|
|
@@ -3696,7 +3905,7 @@ const TableFooter = ({ pager, setPager, columns }) => {
|
|
|
3696
3905
|
// </DataTable>
|
|
3697
3906
|
// );
|
|
3698
3907
|
// };
|
|
3699
|
-
const LineListTable = ({ columns, data, pager, setPager, getTextColorFromBackGround, actionOptions, actionOptionOrientation, actionSelected, selectable, rowsSelected, showActionButtons }) => {
|
|
3908
|
+
const LineListTable = ({ columns, data, pager, setPager, getTextColorFromBackGround, actionOptions, actionOptionOrientation, actionSelected, selectable, rowsSelected, showActionButtons, error }) => {
|
|
3700
3909
|
const [selectedRows, setSelectedRows] = useState([]);
|
|
3701
3910
|
const handleRowToggle = (row) => {
|
|
3702
3911
|
const exists = selectedRows.find((r) => r.index?.value === row.index?.value);
|
|
@@ -3713,7 +3922,7 @@ const LineListTable = ({ columns, data, pager, setPager, getTextColorFromBackGro
|
|
|
3713
3922
|
};
|
|
3714
3923
|
return (React__default.createElement(DataTable, null,
|
|
3715
3924
|
React__default.createElement(TableHeader, { columns: columns, allSelected: selectedRows.length === data.length && data.length > 0, onSelectAll: handleSelectAll, selectable: selectable, showActionButtons: showActionButtons }),
|
|
3716
|
-
React__default.createElement(TableBody, { data: data, columns: columns, getTextColorFromBackGround: getTextColorFromBackGround, actionOptions: actionOptions, actionOptionOrientation: actionOptionOrientation, actionSelected: actionSelected, selectedRows: selectedRows, onRowToggle: handleRowToggle, selectable: selectable, showActionButtons: showActionButtons }),
|
|
3925
|
+
React__default.createElement(TableBody, { data: data, columns: columns, getTextColorFromBackGround: getTextColorFromBackGround, actionOptions: actionOptions, actionOptionOrientation: actionOptionOrientation, actionSelected: actionSelected, selectedRows: selectedRows, onRowToggle: handleRowToggle, selectable: selectable, showActionButtons: showActionButtons, error: error }),
|
|
3717
3926
|
React__default.createElement(TableFooter, { columns: columns, pager: pager, setPager: setPager })));
|
|
3718
3927
|
};
|
|
3719
3928
|
|
|
@@ -3743,7 +3952,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.8", ngImpor
|
|
|
3743
3952
|
type: Injectable
|
|
3744
3953
|
}], ctorParameters: () => [{ type: i1.NgxDhis2HttpClientService }] });
|
|
3745
3954
|
|
|
3746
|
-
const getTrackedEntityTableData = (response, programId, pager, metaData) => {
|
|
3955
|
+
const getTrackedEntityTableData = (response, programId, pager, metaData, searcheableDataElements) => {
|
|
3747
3956
|
const teisRaw = response.data
|
|
3748
3957
|
.trackedEntityInstances;
|
|
3749
3958
|
const teis = Array.isArray(teisRaw)
|
|
@@ -3758,12 +3967,19 @@ const getTrackedEntityTableData = (response, programId, pager, metaData) => {
|
|
|
3758
3967
|
label: trackedEntityAttribute.formName ?? trackedEntityAttribute.name,
|
|
3759
3968
|
key: trackedEntityAttribute.id,
|
|
3760
3969
|
}));
|
|
3761
|
-
|
|
3762
|
-
|
|
3763
|
-
|
|
3764
|
-
|
|
3765
|
-
|
|
3766
|
-
|
|
3970
|
+
const tableSearcheableDataElements = metaData
|
|
3971
|
+
.programStages.sort((a, b) => a.sortOrder - b.sortOrder)
|
|
3972
|
+
.flatMap((stage) => stage
|
|
3973
|
+
.programStageDataElements.filter((psde) => psde.displayInReports)
|
|
3974
|
+
.sort((a, b) => a.sortOrder - b.sortOrder)
|
|
3975
|
+
.map((psde) => ({
|
|
3976
|
+
label: psde.dataElement.formName || psde.dataElement.name,
|
|
3977
|
+
key: psde.dataElement.id,
|
|
3978
|
+
valueType: psde.dataElement.valueType,
|
|
3979
|
+
options: psde.dataElement.optionSet,
|
|
3980
|
+
type: 'dataElement',
|
|
3981
|
+
}))
|
|
3982
|
+
.filter((col) => searcheableDataElements.includes(col.key)));
|
|
3767
3983
|
const dataElementColumns = metaData
|
|
3768
3984
|
.programStages.sort((a, b) => a.sortOrder - b.sortOrder) // Sorts stages by sortOrder
|
|
3769
3985
|
.flatMap((stage) => stage
|
|
@@ -3795,6 +4011,7 @@ const getTrackedEntityTableData = (response, programId, pager, metaData) => {
|
|
|
3795
4011
|
key: attr.id,
|
|
3796
4012
|
valueType: attr.valueType,
|
|
3797
4013
|
options: attr.optionSet ?? undefined,
|
|
4014
|
+
type: 'attribute',
|
|
3798
4015
|
}));
|
|
3799
4016
|
const tableData = teis.map((tei, idx) => {
|
|
3800
4017
|
const row = {
|
|
@@ -3881,7 +4098,7 @@ const getTrackedEntityTableData = (response, programId, pager, metaData) => {
|
|
|
3881
4098
|
return {
|
|
3882
4099
|
columns: tableColumns,
|
|
3883
4100
|
data: tableData,
|
|
3884
|
-
filteredEntityColumns: tableFilters,
|
|
4101
|
+
filteredEntityColumns: [...tableFilters, ...tableSearcheableDataElements],
|
|
3885
4102
|
orgUnitLabel: orgUnitLabel,
|
|
3886
4103
|
};
|
|
3887
4104
|
};
|
|
@@ -3962,6 +4179,7 @@ class LineListTableComponent extends ReactWrapperModule {
|
|
|
3962
4179
|
this.showActionButtons = true;
|
|
3963
4180
|
this.showEnrollmentDates = true;
|
|
3964
4181
|
this.showDownloadButton = false;
|
|
4182
|
+
this.searcheableDataElements = [];
|
|
3965
4183
|
this.reactStateUpdaters = null;
|
|
3966
4184
|
this.setReactStateUpdaters = (updaters) => {
|
|
3967
4185
|
this.reactStateUpdaters = updaters;
|
|
@@ -3990,28 +4208,29 @@ class LineListTableComponent extends ReactWrapperModule {
|
|
|
3990
4208
|
const [endDateState, setEndDateState] = useState(this.endDate);
|
|
3991
4209
|
const [tempEndDateState, setTempEndDateState] = useState(this.endDate);
|
|
3992
4210
|
const [loading, setLoading] = useState(false);
|
|
3993
|
-
const [metaDataLoadng, setMetaDataLoading] = useState(false);
|
|
3994
4211
|
const [filteredColumns, setFilteredColumns] = useState();
|
|
3995
4212
|
const [inputValues, setInputValues] = useState({});
|
|
3996
4213
|
const [orgUnitLabel, setOrgUnitLabel] = useState('');
|
|
3997
4214
|
const [selectedOrgUnit, setSelectedOrgUnit] = useState('');
|
|
4215
|
+
const [prevSelectedOrgUnit, setPrevSelectedOrgUnit] = useState('');
|
|
3998
4216
|
const [hide, setHide] = useState(true);
|
|
3999
4217
|
const [showAllFilters, setShowAllFilters] = useState(false);
|
|
4000
4218
|
const visibleFilters = showAllFilters
|
|
4001
4219
|
? filteredColumns ?? []
|
|
4002
|
-
: (filteredColumns ?? []).slice(0,
|
|
4220
|
+
: (filteredColumns ?? []).slice(0, 5);
|
|
4003
4221
|
// const visibleFilters = showAllFilters
|
|
4004
4222
|
// ? filteredColumns ?? []
|
|
4005
4223
|
// : filteredColumns ?? []).slice(0, 2);
|
|
4006
4224
|
const defaultOrgUnit = this.orgUnit;
|
|
4007
|
-
const [prevValue, setPrevValue] = useState();
|
|
4008
4225
|
const [dateStates, setDateStates] = useState({});
|
|
4226
|
+
const [prevDateStates, setPrevDateStates] = useState({});
|
|
4009
4227
|
const [metaData, setMetaData] = useState(null);
|
|
4010
4228
|
const [selectable, setSelectable] = useState(this.allowRowsSelection);
|
|
4011
4229
|
const [triggerRefetch, setTriggerRefetch] = useState(this.triggerRefetch);
|
|
4012
4230
|
const [showActionButtons, setShowActionButtons] = useState(this.showActionButtons);
|
|
4013
4231
|
const [orgUnitModalVisible, setOrgUnitModalVisible] = useState(false);
|
|
4014
4232
|
const [error, setError] = useState(null);
|
|
4233
|
+
const [prevInputValues, setPrevInputValues] = useState({});
|
|
4015
4234
|
const d2 = window.d2Web;
|
|
4016
4235
|
// Stores updaters in refs for Angular to access
|
|
4017
4236
|
const updateRefs = useRef({
|
|
@@ -4026,9 +4245,6 @@ class LineListTableComponent extends ReactWrapperModule {
|
|
|
4026
4245
|
setTriggerRefetch,
|
|
4027
4246
|
setTriggerTokenState,
|
|
4028
4247
|
});
|
|
4029
|
-
// useEffect(() => {
|
|
4030
|
-
// this.setReactStateUpdaters?.(updateRefs.current);
|
|
4031
|
-
// }, []);
|
|
4032
4248
|
useEffect(() => {
|
|
4033
4249
|
this.setReactStateUpdaters?.(updateRefs.current);
|
|
4034
4250
|
const fetchmetaData = async () => {
|
|
@@ -4064,57 +4280,71 @@ class LineListTableComponent extends ReactWrapperModule {
|
|
|
4064
4280
|
const isEvent = metaData.programType === 'WITHOUT_REGISTRATION';
|
|
4065
4281
|
const endDate = endDateState ?? format(addDays(new Date(), 1), 'yyyy-MM-dd');
|
|
4066
4282
|
if (this.programStageId || isEvent) {
|
|
4067
|
-
|
|
4068
|
-
|
|
4069
|
-
|
|
4070
|
-
|
|
4071
|
-
|
|
4072
|
-
|
|
4073
|
-
|
|
4074
|
-
|
|
4075
|
-
|
|
4076
|
-
|
|
4077
|
-
|
|
4078
|
-
|
|
4079
|
-
|
|
4080
|
-
|
|
4081
|
-
|
|
4082
|
-
|
|
4083
|
-
|
|
4084
|
-
|
|
4085
|
-
|
|
4086
|
-
|
|
4087
|
-
|
|
4088
|
-
|
|
4089
|
-
|
|
4090
|
-
|
|
4091
|
-
|
|
4092
|
-
|
|
4093
|
-
|
|
4094
|
-
|
|
4095
|
-
|
|
4096
|
-
|
|
4097
|
-
|
|
4098
|
-
|
|
4099
|
-
|
|
4100
|
-
|
|
4101
|
-
|
|
4102
|
-
|
|
4283
|
+
const fetchEventData = async () => {
|
|
4284
|
+
try {
|
|
4285
|
+
setError(null);
|
|
4286
|
+
setLoading(true);
|
|
4287
|
+
const response = await d2.eventModule.event
|
|
4288
|
+
.setEndDate(endDate)
|
|
4289
|
+
.setStartDate(startDateState)
|
|
4290
|
+
.setProgram(this.programId)
|
|
4291
|
+
.setProgramStage(this.programStageId)
|
|
4292
|
+
.setOrgUnit(orgUnitState)
|
|
4293
|
+
.setOuMode(this.ouMode)
|
|
4294
|
+
.setPagination(new Pager({
|
|
4295
|
+
pageSize: pager.pageSize,
|
|
4296
|
+
page: pager.page,
|
|
4297
|
+
}))
|
|
4298
|
+
.get();
|
|
4299
|
+
if (response.responseStatus.status !== 200) {
|
|
4300
|
+
throw new Error('failed to load data.');
|
|
4301
|
+
}
|
|
4302
|
+
const eventsResponse = {
|
|
4303
|
+
events: response.data,
|
|
4304
|
+
pager: pager,
|
|
4305
|
+
// orgUnitsMap: fetchedOrgUnits,
|
|
4306
|
+
};
|
|
4307
|
+
const { columns, data } = getEvents({ data: eventsResponse }, this.programStageId, pager, metaData);
|
|
4308
|
+
// const filterableColumnIdsSet = new Set(
|
|
4309
|
+
// this.filterableColumnIds
|
|
4310
|
+
// );
|
|
4311
|
+
// const updatedFilterableColumnIds: ColumnDefinition[] =
|
|
4312
|
+
// columns.filter((column) =>
|
|
4313
|
+
// filterableColumnIdsSet.has(column.key)
|
|
4314
|
+
// );
|
|
4315
|
+
// const finalColumns: ColumnDefinition[] = addActionsColumn(
|
|
4316
|
+
// [{ label: '#', key: 'index' }, ...updatedFilterableColumnIds],
|
|
4317
|
+
// this.actionOptions
|
|
4318
|
+
// );
|
|
4319
|
+
let updatedFilterableColumnIds;
|
|
4320
|
+
if (Array.isArray(this.filterableColumnIds) &&
|
|
4321
|
+
this.filterableColumnIds.length > 0) {
|
|
4322
|
+
const filterableColumnIdsSet = new Set(this.filterableColumnIds);
|
|
4323
|
+
updatedFilterableColumnIds = columns.filter((column) => filterableColumnIdsSet.has(column.key));
|
|
4324
|
+
}
|
|
4325
|
+
else {
|
|
4326
|
+
updatedFilterableColumnIds = columns;
|
|
4327
|
+
}
|
|
4328
|
+
const finalColumns = addActionsColumn([{ label: '#', key: 'index' }, ...updatedFilterableColumnIds], this.actionOptions);
|
|
4329
|
+
const pagerResponse = response.pagination;
|
|
4330
|
+
setColumns(finalColumns);
|
|
4331
|
+
setData(data);
|
|
4332
|
+
setPager(new Pager(pagerResponse || {}));
|
|
4103
4333
|
}
|
|
4104
|
-
|
|
4105
|
-
|
|
4334
|
+
catch {
|
|
4335
|
+
console.error('Failed to fetch event data:', error);
|
|
4336
|
+
setError('Could not load records. Please reload.');
|
|
4106
4337
|
}
|
|
4107
|
-
|
|
4108
|
-
|
|
4109
|
-
|
|
4110
|
-
|
|
4111
|
-
|
|
4112
|
-
setPager(new Pager(pagerResponse || {}));
|
|
4113
|
-
});
|
|
4338
|
+
finally {
|
|
4339
|
+
setLoading(false);
|
|
4340
|
+
}
|
|
4341
|
+
};
|
|
4342
|
+
fetchEventData();
|
|
4114
4343
|
}
|
|
4115
4344
|
else if (isTracker) {
|
|
4116
4345
|
const fetchTrackerData = async () => {
|
|
4117
4346
|
try {
|
|
4347
|
+
setError(null);
|
|
4118
4348
|
setLoading(true);
|
|
4119
4349
|
const response = await d2.trackerModule.trackedEntity
|
|
4120
4350
|
.setEndDate(endDate)
|
|
@@ -4134,6 +4364,9 @@ class LineListTableComponent extends ReactWrapperModule {
|
|
|
4134
4364
|
new DataOrderCriteria().setField('createdAt').setOrder('desc'),
|
|
4135
4365
|
])
|
|
4136
4366
|
.get();
|
|
4367
|
+
if (response.responseStatus.status !== 200) {
|
|
4368
|
+
throw new Error('failed to load data.');
|
|
4369
|
+
}
|
|
4137
4370
|
const trackedEntityInstances = Array.isArray(response.data)
|
|
4138
4371
|
? response.data
|
|
4139
4372
|
: [response.data];
|
|
@@ -4151,7 +4384,7 @@ class LineListTableComponent extends ReactWrapperModule {
|
|
|
4151
4384
|
pager: pager,
|
|
4152
4385
|
orgUnitsMap: fetchedOrgUnits,
|
|
4153
4386
|
};
|
|
4154
|
-
const { columns, data, filteredEntityColumns, orgUnitLabel } = getTrackedEntityTableData({ data: trackedEntityResponse }, this.programId, pager, metaData);
|
|
4387
|
+
const { columns, data, filteredEntityColumns, orgUnitLabel } = getTrackedEntityTableData({ data: trackedEntityResponse }, this.programId, pager, metaData, this.searcheableDataElements);
|
|
4155
4388
|
setFilteredColumns((prev) => filteredEntityColumns.length > 0 ? filteredEntityColumns : prev);
|
|
4156
4389
|
let updatedFilterableColumnIds;
|
|
4157
4390
|
if (Array.isArray(this.filterableColumnIds) &&
|
|
@@ -4168,7 +4401,6 @@ class LineListTableComponent extends ReactWrapperModule {
|
|
|
4168
4401
|
// this.actionOptions
|
|
4169
4402
|
// );
|
|
4170
4403
|
const pagerResponse = response.pagination;
|
|
4171
|
-
// setLoading(false);
|
|
4172
4404
|
setColumns(finalColumns);
|
|
4173
4405
|
setData(data);
|
|
4174
4406
|
setPager(new Pager(pagerResponse || {}));
|
|
@@ -4211,7 +4443,6 @@ class LineListTableComponent extends ReactWrapperModule {
|
|
|
4211
4443
|
: cell;
|
|
4212
4444
|
}));
|
|
4213
4445
|
const worksheetData = [header, ...rows];
|
|
4214
|
-
// Creates worksheet and workbook, then writes to file
|
|
4215
4446
|
const worksheet = XLSX.utils.aoa_to_sheet(worksheetData);
|
|
4216
4447
|
const workbook = XLSX.utils.book_new();
|
|
4217
4448
|
XLSX.utils.book_append_sheet(workbook, worksheet, 'LineListData');
|
|
@@ -4233,7 +4464,6 @@ class LineListTableComponent extends ReactWrapperModule {
|
|
|
4233
4464
|
const header = filteredColumns.map((col) => `"${col.label}"`).join(',');
|
|
4234
4465
|
const csvData = data.map((row) => filteredColumns.map((col) => `"${safeValue(row[col.key])}"`).join(','));
|
|
4235
4466
|
const csvContent = [header, ...csvData].join('\n');
|
|
4236
|
-
// Creates a Blob and triggers the download
|
|
4237
4467
|
const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });
|
|
4238
4468
|
const url = URL.createObjectURL(blob);
|
|
4239
4469
|
const link = document.createElement('a');
|
|
@@ -4243,7 +4473,7 @@ class LineListTableComponent extends ReactWrapperModule {
|
|
|
4243
4473
|
link.click();
|
|
4244
4474
|
document.body.removeChild(link);
|
|
4245
4475
|
};
|
|
4246
|
-
const handleInputChange = (key, value) => {
|
|
4476
|
+
const handleInputChange = (key, value, type) => {
|
|
4247
4477
|
setInputValues((prevValues) => ({
|
|
4248
4478
|
...prevValues,
|
|
4249
4479
|
[key]: value ?? '',
|
|
@@ -4252,20 +4482,36 @@ class LineListTableComponent extends ReactWrapperModule {
|
|
|
4252
4482
|
// Removes old filter for this key
|
|
4253
4483
|
const filteredFilters = prevFilters.filter((f) => f.attribute !== key);
|
|
4254
4484
|
// adds new filter only if value is not empty
|
|
4255
|
-
|
|
4256
|
-
|
|
4257
|
-
|
|
4258
|
-
|
|
4259
|
-
|
|
4260
|
-
|
|
4261
|
-
|
|
4262
|
-
|
|
4263
|
-
|
|
4485
|
+
let updatedFilters;
|
|
4486
|
+
if (type === 'dataElement') {
|
|
4487
|
+
updatedFilters =
|
|
4488
|
+
value && value.length
|
|
4489
|
+
? [
|
|
4490
|
+
...filteredFilters,
|
|
4491
|
+
new DataQueryFilter()
|
|
4492
|
+
.setAttribute(key)
|
|
4493
|
+
.setCondition(DataFilterCondition.Like)
|
|
4494
|
+
.setValue(value)
|
|
4495
|
+
.setType('DATA_ELEMENT'),
|
|
4496
|
+
]
|
|
4497
|
+
: filteredFilters;
|
|
4498
|
+
}
|
|
4499
|
+
else {
|
|
4500
|
+
updatedFilters = value.trim()
|
|
4501
|
+
? [
|
|
4502
|
+
...filteredFilters,
|
|
4503
|
+
new DataQueryFilter()
|
|
4504
|
+
.setAttribute(key)
|
|
4505
|
+
.setCondition(DataFilterCondition.Like)
|
|
4506
|
+
.setValue(value),
|
|
4507
|
+
]
|
|
4508
|
+
: filteredFilters;
|
|
4509
|
+
}
|
|
4264
4510
|
return updatedFilters;
|
|
4265
4511
|
});
|
|
4266
4512
|
};
|
|
4267
4513
|
//TODO: MERGE THIS WITH HANDLE INPUT CHANGE PUT A CHECK FOR IF ITS A SELECT FIELD TO USE EQ
|
|
4268
|
-
const handleInputChangeForSelectField = (key, value) => {
|
|
4514
|
+
const handleInputChangeForSelectField = (key, value, type) => {
|
|
4269
4515
|
setInputValues((prevValues) => ({
|
|
4270
4516
|
...prevValues,
|
|
4271
4517
|
[key]: value ?? '',
|
|
@@ -4274,19 +4520,35 @@ class LineListTableComponent extends ReactWrapperModule {
|
|
|
4274
4520
|
// Removes existing filter for the same key (attribute)
|
|
4275
4521
|
const filteredFilters = prevFilters.filter((f) => f.attribute !== key);
|
|
4276
4522
|
// adds new filter only if value is not empty
|
|
4277
|
-
|
|
4278
|
-
|
|
4279
|
-
|
|
4280
|
-
|
|
4281
|
-
|
|
4282
|
-
|
|
4283
|
-
|
|
4284
|
-
|
|
4285
|
-
|
|
4523
|
+
let updatedFilters;
|
|
4524
|
+
if (type === 'dataElement') {
|
|
4525
|
+
updatedFilters =
|
|
4526
|
+
value && value.length
|
|
4527
|
+
? [
|
|
4528
|
+
...filteredFilters,
|
|
4529
|
+
new DataQueryFilter()
|
|
4530
|
+
.setAttribute(key)
|
|
4531
|
+
.setCondition(DataFilterCondition.Equal)
|
|
4532
|
+
.setValue(value)
|
|
4533
|
+
.setType('DATA_ELEMENT'),
|
|
4534
|
+
]
|
|
4535
|
+
: filteredFilters;
|
|
4536
|
+
}
|
|
4537
|
+
else {
|
|
4538
|
+
updatedFilters = value.trim()
|
|
4539
|
+
? [
|
|
4540
|
+
...filteredFilters,
|
|
4541
|
+
new DataQueryFilter()
|
|
4542
|
+
.setAttribute(key)
|
|
4543
|
+
.setCondition(DataFilterCondition.Equal)
|
|
4544
|
+
.setValue(value),
|
|
4545
|
+
]
|
|
4546
|
+
: filteredFilters;
|
|
4547
|
+
}
|
|
4286
4548
|
return updatedFilters;
|
|
4287
4549
|
});
|
|
4288
4550
|
};
|
|
4289
|
-
const handleDateSelect = (key, selectedDate) => {
|
|
4551
|
+
const handleDateSelect = (key, selectedDate, type) => {
|
|
4290
4552
|
const selectedDateString = selectedDate?.calendarDateString ?? '';
|
|
4291
4553
|
// Updates dateStates
|
|
4292
4554
|
setDateStates((prevDateStates) => ({
|
|
@@ -4296,30 +4558,51 @@ class LineListTableComponent extends ReactWrapperModule {
|
|
|
4296
4558
|
// Updates dataQueryFilters
|
|
4297
4559
|
setTempDataQueryFiltersState((prevFilters) => {
|
|
4298
4560
|
const filteredFilters = (prevFilters || []).filter((f) => f.attribute !== key);
|
|
4299
|
-
const updatedFilters = selectedDateString.trim()
|
|
4300
|
-
|
|
4301
|
-
|
|
4302
|
-
|
|
4303
|
-
|
|
4304
|
-
|
|
4305
|
-
|
|
4306
|
-
|
|
4307
|
-
|
|
4561
|
+
// const updatedFilters = selectedDateString.trim()
|
|
4562
|
+
// ? [
|
|
4563
|
+
// ...filteredFilters,
|
|
4564
|
+
// new DataQueryFilter()
|
|
4565
|
+
// .setAttribute(key)
|
|
4566
|
+
// .setCondition(DataFilterCondition.Equal)
|
|
4567
|
+
// .setValue(selectedDateString),
|
|
4568
|
+
// ]
|
|
4569
|
+
// : filteredFilters;
|
|
4570
|
+
let updatedFilters;
|
|
4571
|
+
if (type === 'dataElement') {
|
|
4572
|
+
updatedFilters = selectedDateString.trim()
|
|
4573
|
+
? [
|
|
4574
|
+
...filteredFilters,
|
|
4575
|
+
new DataQueryFilter()
|
|
4576
|
+
.setAttribute(key)
|
|
4577
|
+
.setCondition(DataFilterCondition.Equal)
|
|
4578
|
+
.setValue(selectedDateString)
|
|
4579
|
+
.setType('DATA_ELEMENT'),
|
|
4580
|
+
]
|
|
4581
|
+
: filteredFilters;
|
|
4582
|
+
}
|
|
4583
|
+
else {
|
|
4584
|
+
updatedFilters = selectedDateString.trim()
|
|
4585
|
+
? [
|
|
4586
|
+
...filteredFilters,
|
|
4587
|
+
new DataQueryFilter()
|
|
4588
|
+
.setAttribute(key)
|
|
4589
|
+
.setCondition(DataFilterCondition.Equal)
|
|
4590
|
+
.setValue(selectedDateString),
|
|
4591
|
+
]
|
|
4592
|
+
: filteredFilters;
|
|
4593
|
+
}
|
|
4308
4594
|
return updatedFilters;
|
|
4309
4595
|
});
|
|
4310
4596
|
};
|
|
4311
|
-
const
|
|
4312
|
-
|
|
4313
|
-
|
|
4314
|
-
|
|
4597
|
+
const handleAdditionalFilters = () => setDataQueryFiltersState(tempDataQueryFiltersState);
|
|
4598
|
+
const handleStartDateFilter = () => setStartDateState(tempStartDateState);
|
|
4599
|
+
const handleEndDateFilter = () => setEndDateState(tempEndDateState);
|
|
4600
|
+
const handleOrgUnitFilter = () => setOrgUnitState(tempOrgUnitState);
|
|
4315
4601
|
function getTextColorFromBackGround(hex) {
|
|
4316
|
-
// Removes the hash if present
|
|
4317
4602
|
hex = hex.replace('#', '');
|
|
4318
|
-
// Converts to RGB
|
|
4319
4603
|
const r = parseInt(hex.substr(0, 2), 16);
|
|
4320
4604
|
const g = parseInt(hex.substr(2, 2), 16);
|
|
4321
4605
|
const b = parseInt(hex.substr(4, 2), 16);
|
|
4322
|
-
// YIQ formula to calculate brightness
|
|
4323
4606
|
const yiq = (r * 299 + g * 587 + b * 114) / 1000;
|
|
4324
4607
|
// Returns black for light backgrounds, white for dark backgrounds
|
|
4325
4608
|
return yiq >= 128 ? colors$1.grey700 : '#FFFFFF';
|
|
@@ -4344,8 +4627,8 @@ class LineListTableComponent extends ReactWrapperModule {
|
|
|
4344
4627
|
React__default.createElement(MenuItem$1, { label: "Download Csv", onClick: handleCsvDownload }),
|
|
4345
4628
|
React__default.createElement(MenuItem$1, { label: "Download Excel", onClick: handleExcelDownload })), value: "Download" }, "Download"))),
|
|
4346
4629
|
orgUnitModalVisible && (React__default.createElement(OrgUnitSelector, { hide: hide, setHide: setHide, selectedOrgUnit: selectedOrgUnit, setSelectedOrgUnit: setSelectedOrgUnit, setOrgUnitState: setOrgUnitState, setTempOrgUnitState: setTempOrgUnitState, tempOrgUnitState: tempOrgUnitState })),
|
|
4347
|
-
this.showFilters && (React__default.createElement(FilterToolbar, { orgUnitLabel: orgUnitLabel, selectedOrgUnit: selectedOrgUnit, setSelectedOrgUnit: setSelectedOrgUnit, setOrgUnitState: setOrgUnitState, defaultOrgUnit: defaultOrgUnit, setHide: setHide, startDateState: startDateState, setStartDateState: setStartDateState, endDateState: endDateState, setEndDateState: setEndDateState, visibleFilters: visibleFilters, dateStates: dateStates, inputValues: inputValues, setInputValues: setInputValues, handleInputChange: handleInputChange, handleInputChangeForSelectField: handleInputChangeForSelectField, handleDateSelect: handleDateSelect,
|
|
4348
|
-
React__default.createElement(LineListTable, { columns: columns, data: data, pager: pager, setPager: setPager, getTextColorFromBackGround: getTextColorFromBackGround, actionOptions: this.actionOptions, actionOptionOrientation: this.actionOptionOrientation, actionSelected: this.actionSelected, selectable: selectable, rowsSelected: this.rowsSelected, showActionButtons: showActionButtons })))));
|
|
4630
|
+
this.showFilters && (React__default.createElement(FilterToolbar, { orgUnitLabel: orgUnitLabel, selectedOrgUnit: selectedOrgUnit, setSelectedOrgUnit: setSelectedOrgUnit, setOrgUnitState: setOrgUnitState, defaultOrgUnit: defaultOrgUnit, setHide: setHide, startDateState: startDateState, setStartDateState: setStartDateState, endDateState: endDateState, setEndDateState: setEndDateState, visibleFilters: visibleFilters, dateStates: dateStates, inputValues: inputValues, setInputValues: setInputValues, handleInputChange: handleInputChange, handleInputChangeForSelectField: handleInputChangeForSelectField, handleDateSelect: handleDateSelect, showAllFilters: showAllFilters, setShowAllFilters: setShowAllFilters, setTempStartDateState: setTempStartDateState, setTempEndDateState: setTempEndDateState, setTempOrgUnitState: setTempOrgUnitState, tempStartDateState: tempStartDateState, tempEndDateState: tempEndDateState, tempOrgUnitState: tempOrgUnitState, dataQueryFiltersState: dataQueryFiltersState, setDataQueryFiltersState: setDataQueryFiltersState, SetOrgUnitModalVisible: setOrgUnitModalVisible, showEnrollmentDates: this.showEnrollmentDates, handleAdditionalFilters: handleAdditionalFilters, handleStartDateFilter: handleStartDateFilter, handleEndDateFilter: handleEndDateFilter, handleOrgUnitFilter: handleOrgUnitFilter, setDateStates: setDateStates, prevInputValues: prevInputValues, setPrevInputValues: setPrevInputValues, setTempDataQueryFiltersState: setTempDataQueryFiltersState, prevDateStates: prevDateStates, setPrevDateStates: setPrevDateStates, prevSelectedOrgUnit: prevSelectedOrgUnit, setPrevSelectedOrgUnit: setPrevSelectedOrgUnit })),
|
|
4631
|
+
React__default.createElement(LineListTable, { columns: columns, data: data, pager: pager, setPager: setPager, getTextColorFromBackGround: getTextColorFromBackGround, actionOptions: this.actionOptions, actionOptionOrientation: this.actionOptionOrientation, actionSelected: this.actionSelected, selectable: selectable, rowsSelected: this.rowsSelected, showActionButtons: showActionButtons, error: error })))));
|
|
4349
4632
|
};
|
|
4350
4633
|
}
|
|
4351
4634
|
ngOnChanges(changes) {
|
|
@@ -4394,7 +4677,7 @@ class LineListTableComponent extends ReactWrapperModule {
|
|
|
4394
4677
|
this.render();
|
|
4395
4678
|
}
|
|
4396
4679
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.8", ngImport: i0, type: LineListTableComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
4397
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.8", type: LineListTableComponent, isStandalone: false, selector: "ng-dhis2-ui-line-list", inputs: { triggerToken: "triggerToken", programId: "programId", orgUnit: "orgUnit", programStageId: "programStageId", actionOptions: "actionOptions", actionOptionOrientation: "actionOptionOrientation", attributeFilters: "attributeFilters", useOuModeWithOlderDHIS2Instance: "useOuModeWithOlderDHIS2Instance", startDate: "startDate", endDate: "endDate", dataQueryFilters: "dataQueryFilters", ouMode: "ouMode", isButtonLoading: "isButtonLoading", buttonFilter: "buttonFilter", filterRootOrgUnit: "filterRootOrgUnit", showFilters: "showFilters", isOptionSetNameVisible: "isOptionSetNameVisible", allowRowsSelection: "allowRowsSelection", enrollmentStatus: "enrollmentStatus", filterableColumnIds: "filterableColumnIds", triggerRefetch: "triggerRefetch", eventStatus: "eventStatus", showActionButtons: "showActionButtons", showEnrollmentDates: "showEnrollmentDates", showDownloadButton: "showDownloadButton" }, outputs: { actionSelected: "actionSelected", rowsSelected: "rowsSelected" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: ["@charset \"UTF-8\";::ng-deep .custom-input{display:flex!important;gap:4px!important;align-items:center!important;border:1px solid #9fadba!important;border-radius:4px!important;margin:0;padding:0 0 0 8px;background-color:#fff!important}::ng-deep .custom-input div{margin:0!important}::ng-deep .custom-input label{font-size:12px;padding-right:0}::ng-deep .custom-input input{border:none!important;font-size:12px!important;display:flex;align-items:center;padding-left:4px;height:40px;outline:none!important;box-shadow:none!important}::ng-deep .custom-input input:focus{border:none!important;box-shadow:none!important}::ng-deep .custom-input [data-test=calendar-clear-button]{background-color:#f2f2f2!important;color:#870808!important;border-radius:6px!important;padding:4px 10px!important;font-size:0!important}::ng-deep .custom-input [data-test=calendar-clear-button]:before{content:\"\\2715\";font-size:14px;color:#870808}::ng-deep .custom-input [data-test=calendar-clear-button]:hover{background-color:#ddd}::ng-deep .calendar-input-wrapper{position:relative}::ng-deep .calendar-input-wrapper .custom-input{position:relative;width:100%;display:flex;align-items:center}::ng-deep .calendar-input-wrapper [data-test=calendar-clear-button]{right:8px;bottom:14px;margin:auto;display:flex;align-items:center;justify-content:center;width:16px;height:16px;font-size:0!important;background-color:#a0adba!important;border-radius:50%;padding:2px;cursor:pointer}::ng-deep .calendar-input-wrapper [data-test=calendar-clear-button]:before{content:\"\\2715\";font-size:10px;color:#f0f0f0}::ng-deep .calendar-input-wrapper input{padding-right:40px!important;height:40px;line-height:40px;box-sizing:border-box}::ng-deep .custom-input label{color:gray!important;opacity:1}::ng-deep .table-top-toolbar{background-color:var(--colors-grey100)!important;color:var(--colors-grey900)!important}::ng-deep .custom-select-input{display:flex!important;gap:4px!important;align-items:center!important;border:1px solid #9fadba!important;border-radius:4px!important;margin:0;padding:0 0 0 8px;background-color:#fff!important}::ng-deep .custom-select-input div{margin:0!important}::ng-deep .custom-select-input [data-test=dhis2-uiwidgets-singleselectfield-label]{font-size:12px;color:gray!important}::ng-deep .custom-select-input [data-test=dhis2-uicore-select-input]{border:none!important;font-size:12px!important;display:flex;align-items:center;padding-left:4px;height:40px;outline:none!important;box-shadow:none!important}::ng-deep .custom-select-input [data-test=dhis2-uicore-select-input]:focus-within{box-shadow:none!important}::ng-deep .custom-select-input input:focus{border:none!important;box-shadow:none!important}\n"] }); }
|
|
4680
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.8", type: LineListTableComponent, isStandalone: false, selector: "ng-dhis2-ui-line-list", inputs: { triggerToken: "triggerToken", programId: "programId", orgUnit: "orgUnit", programStageId: "programStageId", actionOptions: "actionOptions", actionOptionOrientation: "actionOptionOrientation", attributeFilters: "attributeFilters", useOuModeWithOlderDHIS2Instance: "useOuModeWithOlderDHIS2Instance", startDate: "startDate", endDate: "endDate", dataQueryFilters: "dataQueryFilters", ouMode: "ouMode", isButtonLoading: "isButtonLoading", buttonFilter: "buttonFilter", filterRootOrgUnit: "filterRootOrgUnit", showFilters: "showFilters", isOptionSetNameVisible: "isOptionSetNameVisible", allowRowsSelection: "allowRowsSelection", enrollmentStatus: "enrollmentStatus", filterableColumnIds: "filterableColumnIds", triggerRefetch: "triggerRefetch", eventStatus: "eventStatus", showActionButtons: "showActionButtons", showEnrollmentDates: "showEnrollmentDates", showDownloadButton: "showDownloadButton", searcheableDataElements: "searcheableDataElements" }, outputs: { actionSelected: "actionSelected", rowsSelected: "rowsSelected" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: ["@charset \"UTF-8\";::ng-deep .custom-input{display:flex!important;gap:4px!important;align-items:center!important;border:1px solid #9fadba!important;border-radius:4px!important;margin:0;padding:0 0 0 8px;background-color:#fff!important}::ng-deep .custom-input div{margin:0!important}::ng-deep .custom-input label{font-size:12px;padding-right:0}::ng-deep .custom-input input{border:none!important;font-size:12px!important;display:flex;align-items:center;padding-left:4px;height:40px;outline:none!important;box-shadow:none!important}::ng-deep .custom-input input:focus{border:none!important;box-shadow:none!important}::ng-deep .custom-input [data-test=calendar-clear-button]{background-color:#f2f2f2!important;color:#870808!important;border-radius:6px!important;padding:4px 10px!important;font-size:0!important}::ng-deep .custom-input [data-test=calendar-clear-button]:before{content:\"\\2715\";font-size:14px;color:#870808}::ng-deep .custom-input [data-test=calendar-clear-button]:hover{background-color:#ddd}::ng-deep .calendar-input-wrapper{position:relative}::ng-deep .calendar-input-wrapper .custom-input{position:relative;width:100%;display:flex;align-items:center}::ng-deep .calendar-input-wrapper [data-test=calendar-clear-button]{right:8px;bottom:14px;margin:auto;display:flex;align-items:center;justify-content:center;width:16px;height:16px;font-size:0!important;background-color:#a0adba!important;border-radius:50%;padding:2px;cursor:pointer}::ng-deep .calendar-input-wrapper [data-test=calendar-clear-button]:before{content:\"\\2715\";font-size:10px;color:#f0f0f0}::ng-deep .calendar-input-wrapper input{padding-right:40px!important;height:40px;line-height:40px;box-sizing:border-box}::ng-deep .custom-input label{color:gray!important;opacity:1}::ng-deep .table-top-toolbar{background-color:var(--colors-grey100)!important;color:var(--colors-grey900)!important}::ng-deep .custom-select-input{display:flex!important;gap:4px!important;align-items:center!important;border:1px solid #9fadba!important;border-radius:4px!important;margin:0;padding:0 0 0 8px;background-color:#fff!important}::ng-deep .custom-select-input div{margin:0!important}::ng-deep .custom-select-input [data-test=dhis2-uiwidgets-singleselectfield-label]{font-size:12px;color:gray!important}::ng-deep .custom-select-input [data-test=dhis2-uicore-select-input]{border:none!important;font-size:12px!important;display:flex;align-items:center;padding-left:4px;height:40px;outline:none!important;box-shadow:none!important}::ng-deep .custom-select-input [data-test=dhis2-uicore-select-input]:focus-within{box-shadow:none!important}::ng-deep .custom-select-input input:focus{border:none!important;box-shadow:none!important}\n"] }); }
|
|
4398
4681
|
}
|
|
4399
4682
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.8", ngImport: i0, type: LineListTableComponent, decorators: [{
|
|
4400
4683
|
type: Component,
|
|
@@ -4453,6 +4736,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.8", ngImpor
|
|
|
4453
4736
|
type: Input
|
|
4454
4737
|
}], showDownloadButton: [{
|
|
4455
4738
|
type: Input
|
|
4739
|
+
}], searcheableDataElements: [{
|
|
4740
|
+
type: Input
|
|
4456
4741
|
}] } });
|
|
4457
4742
|
|
|
4458
4743
|
class LineListModule {
|
|
@@ -6215,7 +6500,11 @@ class BaseFormFieldComponent extends ReactWrapperModule {
|
|
|
6215
6500
|
setTouched(true);
|
|
6216
6501
|
};
|
|
6217
6502
|
const checkValueUniqueness = async () => {
|
|
6218
|
-
if (this.field().unique ||
|
|
6503
|
+
if (this.field().unique ||
|
|
6504
|
+
((this.field().extension?.isDataElementUnique ?? false) &&
|
|
6505
|
+
value &&
|
|
6506
|
+
value.length > 0 &&
|
|
6507
|
+
touched)) {
|
|
6219
6508
|
// if (this.field().unique && value && value.length > 0 && touched) {
|
|
6220
6509
|
setCheckingUniqueness(true);
|
|
6221
6510
|
setRecordExistError(undefined);
|
|
@@ -6279,6 +6568,13 @@ class BaseFormFieldComponent extends ReactWrapperModule {
|
|
|
6279
6568
|
}, onBlur: () => {
|
|
6280
6569
|
checkValueUniqueness();
|
|
6281
6570
|
}, selected: arrayValue }, (this.field().options || []).map((option) => (React__default.createElement(MultiSelectOption, { key: option.key, label: option.label, value: option.value })))));
|
|
6571
|
+
case 'date':
|
|
6572
|
+
case 'date-time':
|
|
6573
|
+
return (React__default.createElement(InputField$1, { error: hasError, validationText: validationError, type: this.field().type, inputWidth: inputWidth, required: this.field().required, name: this.field().id, label: this.label(), min: this.field().min?.toString(), max: this.field().max?.toString(), placeholder: this.placeholder(), value: value, readOnly: disabled, onChange: (event) => {
|
|
6574
|
+
onValueChange(event.value);
|
|
6575
|
+
}, onBlur: () => {
|
|
6576
|
+
checkValueUniqueness();
|
|
6577
|
+
} }));
|
|
6282
6578
|
case 'file':
|
|
6283
6579
|
return (React__default.createElement(React__default.Fragment, null,
|
|
6284
6580
|
React__default.createElement(FileUploadField, { label: this.label(), id: this.field().id, hasError: hasError, required: this.field().required, validationText: validationError, performUpload: true, uploadUrl: 'fileResources', onUploadSuccess: (fileId) => {
|