@iapps/ng-dhis2-ui 1.3.7 → 1.3.9

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.
@@ -3233,18 +3233,20 @@ const orgUnitFieldStyles$1 = {
3233
3233
  },
3234
3234
  };
3235
3235
  const OrgUnitFormField$1 = (props) => {
3236
- const { onSelectOrgUnit, label, required, selected, disabled, key } = props;
3236
+ const { onSelectOrgUnit, label, required, selected, disabled, key, customOrgUnitRoots, multiple = false, selectedPaths, } = props;
3237
3237
  const d2 = window?.d2Web;
3238
3238
  const classes = useDynamicStyles$2(orgUnitFieldStyles$1);
3239
3239
  const config = useMemo(() => {
3240
3240
  return d2.systemInfo?.toInitObject();
3241
3241
  }, []);
3242
3242
  const rootOrgUnits = useMemo(() => {
3243
- return d2.currentUser?.organisationUnits || [];
3244
- }, []);
3243
+ return (customOrgUnitRoots?.map((id) => ({ id: `/${id}`, path: `/${id}` })) ??
3244
+ d2.currentUser?.organisationUnits ??
3245
+ []);
3246
+ }, [customOrgUnitRoots]);
3245
3247
  const getExpandedItems = () => {
3246
3248
  if (rootOrgUnits && rootOrgUnits.length === 1) {
3247
- return [`/${rootOrgUnits[0].id}`];
3249
+ return [`${rootOrgUnits[0].path}`];
3248
3250
  }
3249
3251
  else if (rootOrgUnits?.length > 1) {
3250
3252
  return rootOrgUnits.map((root) => root.path);
@@ -3278,11 +3280,14 @@ const OrgUnitFormField$1 = (props) => {
3278
3280
  }
3279
3281
  }, []);
3280
3282
  const highlighted = useMemo(() => {
3283
+ if (selectedPaths !== undefined) {
3284
+ return selectedPaths;
3285
+ }
3281
3286
  if (selectedOrgUnit) {
3282
3287
  return [selectedOrgUnit['path']];
3283
3288
  }
3284
3289
  return undefined;
3285
- }, [selectedOrgUnit]);
3290
+ }, [selectedPaths, selectedOrgUnit]);
3286
3291
  const selectedOrgUnitLabel = useMemo(() => {
3287
3292
  if (selectedOrgUnit) {
3288
3293
  return [
@@ -3300,13 +3305,7 @@ const OrgUnitFormField$1 = (props) => {
3300
3305
  }
3301
3306
  };
3302
3307
  const handleCollapse = ({ path }) => {
3303
- const pathIndex = expanded?.indexOf(path);
3304
- if (pathIndex && pathIndex !== -1 && expanded) {
3305
- const updatedExpanded = pathIndex === 0
3306
- ? expanded.slice(1)
3307
- : [...expanded.slice(0, pathIndex), ...expanded.slice(pathIndex + 1)];
3308
- setExpanded(updatedExpanded);
3309
- }
3308
+ setExpanded((previous) => previous?.filter((item) => item !== path));
3310
3309
  };
3311
3310
  const handleOrgUnitSearch = async (query) => {
3312
3311
  setSearchLoading(true);
@@ -3335,15 +3334,15 @@ const OrgUnitFormField$1 = (props) => {
3335
3334
  return (React__default.createElement("div", { className: classes.orgUnitTreeLoader },
3336
3335
  React__default.createElement(CircularLoader$1, { small: true })));
3337
3336
  }
3338
- return (ready && (React__default.createElement(OrganisationUnitTree, { key: `${key}-search`, roots: searchData?.map((orgUnit) => orgUnit.id) || [], singleSelection: true, expanded: expanded, handleExpand: handleExpand, handleCollapse: handleCollapse, selected: highlighted, onChange: (event) => {
3337
+ return (ready && (React__default.createElement(OrganisationUnitTree, { key: `${key}-search`, roots: searchData?.map((orgUnit) => orgUnit.id) || [], singleSelection: !multiple, expanded: expanded, handleExpand: handleExpand, handleCollapse: handleCollapse, selected: highlighted, onChange: (event) => {
3339
3338
  setSelectedOrgUnit(event);
3340
- setShowOrgUnitTree(false);
3339
+ setShowOrgUnitTree(multiple);
3341
3340
  onSelectOrgUnit(event);
3342
3341
  } })));
3343
3342
  }
3344
- return (React__default.createElement(OrganisationUnitTree, { key: key, roots: rootOrgUnits?.map((orgUnit) => orgUnit.id) || [], singleSelection: true, expanded: expanded, handleExpand: handleExpand, handleCollapse: handleCollapse, selected: highlighted, onChange: (event) => {
3343
+ return (React__default.createElement(OrganisationUnitTree, { key: key, roots: rootOrgUnits?.map((orgUnit) => orgUnit.id) || [], singleSelection: !multiple, expanded: expanded, handleExpand: handleExpand, handleCollapse: handleCollapse, selected: highlighted, onChange: (event) => {
3345
3344
  setSelectedOrgUnit(event);
3346
- setShowOrgUnitTree(false);
3345
+ setShowOrgUnitTree(multiple);
3347
3346
  onSelectOrgUnit(event);
3348
3347
  } }));
3349
3348
  };
@@ -3355,7 +3354,7 @@ const OrgUnitFormField$1 = (props) => {
3355
3354
  label && (React__default.createElement("div", { className: classes.orgUnitFieldLabel },
3356
3355
  React__default.createElement("span", null, label),
3357
3356
  required ? (React__default.createElement("span", { className: classes.orgUnitFieldRequiredLabel }, "*")) : (React__default.createElement(React__default.Fragment, null)))),
3358
- !showOrgUnitTree ? (selectedOrgUnit ? (React__default.createElement(React__default.Fragment, null,
3357
+ !multiple && !showOrgUnitTree ? (selectedOrgUnit ? (React__default.createElement(React__default.Fragment, null,
3359
3358
  React__default.createElement(Tooltip, { content: selectedOrgUnitLabel },
3360
3359
  React__default.createElement(Chip, { onRemove: () => {
3361
3360
  setShowOrgUnitTree(true);
@@ -3367,19 +3366,27 @@ const OrgUnitFormField$1 = (props) => {
3367
3366
  React__default.createElement(CircularLoader$1, { small: true }))) : (React__default.createElement("div", { className: classes.orgUnitTreeContainer, style: { maxHeight: '200px', overflowY: 'auto' } }, renderOrgUnitTree()))))))));
3368
3367
  };
3369
3368
 
3370
- const OrgUnitSelector = ({ hide, setHide, selectedOrgUnit, setSelectedOrgUnit, setOrgUnitState, setTempOrgUnitState, tempOrgUnitState }) => (React__default.createElement(Modal$1, { hide: hide, position: "middle" },
3371
- React__default.createElement(ModalTitle$1, null, "Select organization unit"),
3372
- React__default.createElement(ModalContent$1, null,
3373
- React__default.createElement(OrgUnitFormField$1, { key: selectedOrgUnit, onSelectOrgUnit: (selectedOrgUnit) => {
3374
- setSelectedOrgUnit(selectedOrgUnit.displayName);
3375
- setTempOrgUnitState(selectedOrgUnit.id);
3376
- setHide(true);
3377
- } })),
3378
- React__default.createElement(ModalActions$1, null,
3379
- React__default.createElement(ButtonStrip$1, { end: true },
3380
- React__default.createElement(Button$1, { onClick: () => setHide(true), secondary: true }, "Close")))));
3381
-
3382
- const FilterToolbar = ({ orgUnit: { orgUnitLabel, selectedOrgUnit, setSelectedOrgUnit, setOrgUnitState, defaultOrgUnit, setHide, setTempOrgUnitState, tempOrgUnitState, SetOrgUnitModalVisible, handleOrgUnitFilter, prevSelectedOrgUnit, setPrevSelectedOrgUnit, }, dates: { startDateState, setStartDateState, endDateState, setEndDateState, setTempStartDateState, setTempEndDateState, tempStartDateState, tempEndDateState, showEnrollmentDates, handleStartDateFilter, handleEndDateFilter, }, filters: { visibleFilters, dateStates, inputValues, setInputValues, handleInputChange, handleInputChangeForSelectField, handleDateSelect, showAllFilters, setShowAllFilters, dataQueryFiltersState, setDataQueryFiltersState, handleAdditionalFilters, setDateStates, prevInputValues, setPrevInputValues, setTempDataQueryFiltersState, prevDateStates, setPrevDateStates, }, }) => {
3369
+ const FilterToolbar = ({ orgUnit: { customOrgUnitRoots, allowMultipleOrgUnits, showOrgUnitMode = false, appliedOrgUnits: appliedOrgUnitsProp, setAppliedOrgUnits, selectedOrgUnits: selectedOrgUnitsProp, setSelectedOrgUnits, orgUnitLabel, handleOrgUnitFilter, appliedOrgUnitMode, selectedOrgUnitMode, defaultOrgUnitMode, setSelectedOrgUnitMode, handleOrgUnitModeReset, }, dates: { startDateState, setStartDateState, endDateState, setEndDateState, setTempStartDateState, setTempEndDateState, tempStartDateState, tempEndDateState, showEnrollmentDates, handleStartDateFilter, handleEndDateFilter, }, filters: { visibleFilters, dateStates, inputValues, setInputValues, handleInputChange, handleInputChangeForSelectField, handleDateSelect, showAllFilters, setShowAllFilters, dataQueryFiltersState, setDataQueryFiltersState, handleAdditionalFilters, setDateStates, prevInputValues, setPrevInputValues, setTempDataQueryFiltersState, prevDateStates, setPrevDateStates, }, }) => {
3370
+ const selectedOrgUnits = selectedOrgUnitsProp;
3371
+ const appliedOrgUnits = appliedOrgUnitsProp;
3372
+ const orgUnitsChanged = selectedOrgUnits.length !== appliedOrgUnits.length ||
3373
+ selectedOrgUnits.some((selected) => !appliedOrgUnits.some((applied) => applied.id === selected.id));
3374
+ const canUpdateOrgUnits = selectedOrgUnits.length > 0 &&
3375
+ (orgUnitsChanged || selectedOrgUnitMode !== appliedOrgUnitMode);
3376
+ const canResetOrgUnits = selectedOrgUnits.length > 0 ||
3377
+ appliedOrgUnits.length > 0 ||
3378
+ selectedOrgUnitMode !== defaultOrgUnitMode ||
3379
+ appliedOrgUnitMode !== defaultOrgUnitMode;
3380
+ const appliedOrgUnitsLabel = appliedOrgUnits
3381
+ .map((unit) => unit.displayName)
3382
+ .join(', ');
3383
+ const displayedOrgUnitNames = appliedOrgUnits.map((unit) => unit.displayName);
3384
+ const orgUnitSelectionLabel = displayedOrgUnitNames.length > 2
3385
+ ? `${displayedOrgUnitNames.slice(0, 2).join(', ')} .....`
3386
+ : appliedOrgUnitsLabel;
3387
+ const updateSelectedOrgUnits = (units) => {
3388
+ setSelectedOrgUnits(units);
3389
+ };
3383
3390
  const [isOpen, setIsOpen] = useState(false);
3384
3391
  const [isOpenOrgUnitDropdown, setIsOpenOrgUnitDropdown] = useState(false);
3385
3392
  const [openDropdownKey, setOpenDropdownKey] = useState(null);
@@ -3399,41 +3406,51 @@ const FilterToolbar = ({ orgUnit: { orgUnitLabel, selectedOrgUnit, setSelectedOr
3399
3406
  flexWrap: 'wrap',
3400
3407
  } },
3401
3408
  React__default.createElement(DropdownButton, { name: "customDropdown", open: isOpenOrgUnitDropdown, onClick: () => setIsOpenOrgUnitDropdown(!isOpenOrgUnitDropdown), component: React__default.createElement("div", null,
3402
- React__default.createElement(FlyoutMenu, null,
3409
+ React__default.createElement(FlyoutMenu, { maxWidth: "90vw" },
3403
3410
  React__default.createElement("div", { style: { padding: '16px' } },
3404
- React__default.createElement(InputField$1, { key: "location", placeholder: orgUnitLabel ? orgUnitLabel : 'Registering unit', value: selectedOrgUnit, onFocus: () => {
3405
- SetOrgUnitModalVisible(true);
3406
- setHide(false);
3407
- } }),
3411
+ isOpenOrgUnitDropdown && (React__default.createElement("div", { style: { width: '400px', maxWidth: '80vw' } },
3412
+ React__default.createElement(OrgUnitFormField$1, { key: "registering-unit", customOrgUnitRoots: customOrgUnitRoots, multiple: allowMultipleOrgUnits, selectedPaths: selectedOrgUnits.map((unit) => unit.path), onSelectOrgUnit: (unit) => {
3413
+ if (!allowMultipleOrgUnits) {
3414
+ updateSelectedOrgUnits([unit]);
3415
+ return;
3416
+ }
3417
+ const paths = unit.selected;
3418
+ const units = selectedOrgUnits.filter((chosen) => paths.includes(chosen.path));
3419
+ if (paths.includes(unit.path) && !units.some((chosen) => chosen.id === unit.id)) {
3420
+ units.push(unit);
3421
+ }
3422
+ updateSelectedOrgUnits(units);
3423
+ } }),
3424
+ showOrgUnitMode && (React__default.createElement("div", { role: "group", "aria-label": "Mode", style: { display: 'flex', alignItems: 'center', gap: '12px', margin: '8px 0 12px' } },
3425
+ React__default.createElement("span", { style: { fontSize: '14px', fontWeight: 400 } }, "Mode:"),
3426
+ React__default.createElement("div", { style: { flex: 1, minWidth: 0 } },
3427
+ React__default.createElement(SingleSelectField, { selected: selectedOrgUnitMode, helpText: `If no mode is selected, the default mode will be ${defaultOrgUnitMode}.`, onChange: ({ selected }) => setSelectedOrgUnitMode(selected) }, ['DESCENDANTS', 'SELECTED', 'CHILDREN'].map((mode) => (React__default.createElement(SingleSelectOption, { key: mode, label: mode, value: mode }))))))))),
3408
3428
  React__default.createElement("div", { style: {
3409
3429
  paddingTop: '8px',
3410
3430
  display: 'flex',
3411
3431
  justifyContent: 'flex-end',
3412
3432
  } },
3413
3433
  React__default.createElement(ButtonStrip$1, null,
3414
- React__default.createElement(Button$1, { primary: true, disabled: !selectedOrgUnit, onClick: () => {
3415
- setPrevSelectedOrgUnit(selectedOrgUnit);
3434
+ React__default.createElement(Button$1, { primary: true, disabled: !canUpdateOrgUnits, onClick: () => {
3416
3435
  handleOrgUnitFilter();
3417
3436
  setIsOpenOrgUnitDropdown(false);
3418
3437
  } }, "Update"),
3419
- React__default.createElement(Button$1, { disabled: !selectedOrgUnit, onClick: () => {
3420
- setSelectedOrgUnit('');
3421
- setPrevSelectedOrgUnit('');
3422
- setOrgUnitState(defaultOrgUnit);
3423
- setTempOrgUnitState(defaultOrgUnit);
3438
+ React__default.createElement(Button$1, { disabled: !canResetOrgUnits, onClick: () => {
3439
+ setSelectedOrgUnits([]);
3440
+ setAppliedOrgUnits([]);
3441
+ handleOrgUnitModeReset();
3424
3442
  setIsOpenOrgUnitDropdown(false);
3425
3443
  } }, "Reset")))))) },
3426
3444
  orgUnitLabel ? orgUnitLabel : 'Registering unit',
3427
3445
  ' ',
3428
- prevSelectedOrgUnit && ':',
3429
- " ",
3430
- prevSelectedOrgUnit,
3431
- prevSelectedOrgUnit && (React__default.createElement("span", { onClick: (event) => {
3446
+ appliedOrgUnitsLabel && (React__default.createElement("span", { title: appliedOrgUnitsLabel },
3447
+ ": ",
3448
+ orgUnitSelectionLabel)),
3449
+ appliedOrgUnitsLabel && (React__default.createElement("span", { onClick: (event) => {
3432
3450
  event.stopPropagation();
3433
- setSelectedOrgUnit('');
3434
- setPrevSelectedOrgUnit('');
3435
- setOrgUnitState(defaultOrgUnit);
3436
- setTempOrgUnitState(defaultOrgUnit);
3451
+ setSelectedOrgUnits([]);
3452
+ setAppliedOrgUnits([]);
3453
+ handleOrgUnitModeReset();
3437
3454
  setIsOpenOrgUnitDropdown(false);
3438
3455
  }, style: { display: 'inline-flex', alignItems: 'center' } },
3439
3456
  React__default.createElement(ClearIcon, { className: "my-icon-class" })))),
@@ -4840,6 +4857,8 @@ const fetchLineListDownloadRows = async ({ d2, metaData, programId, programStage
4840
4857
  class LineListTableComponent extends ReactWrapperModule {
4841
4858
  constructor() {
4842
4859
  super(...arguments);
4860
+ this.allowMultipleOrgUnits = false;
4861
+ this.showOrgUnitMode = false;
4843
4862
  this.actionOptionOrientation = 'DROPDOWN';
4844
4863
  this.dataQueryFilters = [];
4845
4864
  this.hydrateForActionFiltering = true;
@@ -4874,8 +4893,15 @@ class LineListTableComponent extends ReactWrapperModule {
4874
4893
  const [triggerTokenState, setTriggerTokenState] = useState(this.triggerToken);
4875
4894
  const [programIdState, setProgramIdState] = useState(this.programId);
4876
4895
  const [isOptionSetNameVisibleState, setOptionSetNameVisible] = useState(this.isOptionSetNameVisible);
4877
- const [orgUnitState, setOrgUnitState] = useState(this.orgUnit);
4878
- const [tempOrgUnitState, setTempOrgUnitState] = useState(this.orgUnit);
4896
+ const [selectedOrgUnits, setSelectedOrgUnits] = useState([]);
4897
+ const defaultOrgUnitMode = (this.ouMode);
4898
+ const [appliedOrgUnitMode, setAppliedOrgUnitMode] = useState(defaultOrgUnitMode);
4899
+ const [selectedOrgUnitMode, setSelectedOrgUnitMode] = useState(defaultOrgUnitMode);
4900
+ const [defaultOrgUnit, setDefaultOrgUnit] = useState(this.orgUnit);
4901
+ const [appliedOrgUnits, setAppliedOrgUnits] = useState([]);
4902
+ const orgUnitState = appliedOrgUnits.length
4903
+ ? appliedOrgUnits.map((unit) => unit.id).join(';')
4904
+ : defaultOrgUnit;
4879
4905
  const [programStageIdState, setProgramStageIdState] = useState(this.programStageId);
4880
4906
  const [attributeFiltersState, setAttributeFiltersState] = useState(this.attributeFilters);
4881
4907
  const [dataQueryFiltersState, setDataQueryFiltersState] = useState(this.dataQueryFilters);
@@ -4890,9 +4916,6 @@ class LineListTableComponent extends ReactWrapperModule {
4890
4916
  const [filteredColumns, setFilteredColumns] = useState();
4891
4917
  const [inputValues, setInputValues] = useState({});
4892
4918
  const [orgUnitLabel, setOrgUnitLabel] = useState('');
4893
- const [selectedOrgUnit, setSelectedOrgUnit] = useState('');
4894
- const [prevSelectedOrgUnit, setPrevSelectedOrgUnit] = useState('');
4895
- const [hide, setHide] = useState(true);
4896
4919
  const [showAllFilters, setShowAllFilters] = useState(false);
4897
4920
  const visibleFilters = showAllFilters
4898
4921
  ? filteredColumns ?? []
@@ -4900,21 +4923,21 @@ class LineListTableComponent extends ReactWrapperModule {
4900
4923
  // const visibleFilters = showAllFilters
4901
4924
  // ? filteredColumns ?? []
4902
4925
  // : filteredColumns ?? []).slice(0, 2);
4903
- const defaultOrgUnit = this.orgUnit;
4904
4926
  const [dateStates, setDateStates] = useState({});
4905
4927
  const [prevDateStates, setPrevDateStates] = useState({});
4906
4928
  const [metaData, setMetaData] = useState(null);
4907
4929
  const [selectable, setSelectable] = useState(this.allowRowsSelection);
4908
4930
  const [triggerRefetch, setTriggerRefetch] = useState(this.triggerRefetch);
4909
4931
  const [showActionButtons, setShowActionButtons] = useState(this.showActionButtons);
4910
- const [orgUnitModalVisible, setOrgUnitModalVisible] = useState(false);
4911
4932
  const [error, setError] = useState(null);
4912
4933
  const [prevInputValues, setPrevInputValues] = useState({});
4913
4934
  const d2 = window.d2Web;
4914
4935
  // Stores updaters in refs for Angular to access
4915
4936
  const updateRefs = useRef({
4916
4937
  setProgramIdState,
4917
- setOrgUnitState,
4938
+ setDefaultOrgUnit,
4939
+ setAppliedOrgUnits,
4940
+ setSelectedOrgUnits,
4918
4941
  setProgramStageIdState,
4919
4942
  setAttributeFiltersState,
4920
4943
  setStartDateState,
@@ -4969,7 +4992,7 @@ class LineListTableComponent extends ReactWrapperModule {
4969
4992
  .setProgram(this.programId)
4970
4993
  .setProgramStage(this.programStageId)
4971
4994
  .setOrgUnit(orgUnitState)
4972
- .setOuMode(this.ouMode)
4995
+ .setOuMode(appliedOrgUnitMode)
4973
4996
  .setPagination(new Pager({
4974
4997
  pageSize: pager.pageSize,
4975
4998
  page: pager.page,
@@ -5031,7 +5054,7 @@ class LineListTableComponent extends ReactWrapperModule {
5031
5054
  .setProgram(this.programId)
5032
5055
  .setProgramStage(this.programStageId)
5033
5056
  .setOrgUnit(orgUnitState)
5034
- .setOuMode(this.ouMode)
5057
+ .setOuMode(appliedOrgUnitMode)
5035
5058
  .setStatus(this.enrollmentStatus)
5036
5059
  .setEventStatus(this.eventStatus?.status, this.eventStatus?.programStage)
5037
5060
  .setFilters(dataQueryFiltersState)
@@ -5099,6 +5122,7 @@ class LineListTableComponent extends ReactWrapperModule {
5099
5122
  metaData,
5100
5123
  programIdState,
5101
5124
  orgUnitState,
5125
+ appliedOrgUnitMode,
5102
5126
  programStageIdState,
5103
5127
  attributeFiltersState,
5104
5128
  startDateState,
@@ -5120,7 +5144,7 @@ class LineListTableComponent extends ReactWrapperModule {
5120
5144
  programId: programIdState,
5121
5145
  programStageId: programStageIdState,
5122
5146
  orgUnit: orgUnitState,
5123
- ouMode: this.ouMode,
5147
+ ouMode: appliedOrgUnitMode,
5124
5148
  startDate: startDateState,
5125
5149
  endDate: endDateState,
5126
5150
  dataQueryFilters: dataQueryFiltersState,
@@ -5271,7 +5295,16 @@ class LineListTableComponent extends ReactWrapperModule {
5271
5295
  const handleAdditionalFilters = () => setDataQueryFiltersState(tempDataQueryFiltersState);
5272
5296
  const handleStartDateFilter = () => setStartDateState(tempStartDateState);
5273
5297
  const handleEndDateFilter = () => setEndDateState(tempEndDateState);
5274
- const handleOrgUnitFilter = () => setOrgUnitState(tempOrgUnitState);
5298
+ const handleOrgUnitFilter = () => {
5299
+ setAppliedOrgUnits([...selectedOrgUnits]);
5300
+ setAppliedOrgUnitMode(selectedOrgUnitMode);
5301
+ setPager((previous) => new Pager({ ...previous, page: 1 }));
5302
+ };
5303
+ const handleOrgUnitModeReset = () => {
5304
+ setAppliedOrgUnitMode(defaultOrgUnitMode);
5305
+ setSelectedOrgUnitMode(defaultOrgUnitMode);
5306
+ setPager((previous) => new Pager({ ...previous, page: 1 }));
5307
+ };
5275
5308
  function getTextColorFromBackGround(hex) {
5276
5309
  hex = hex.replace('#', '');
5277
5310
  const r = parseInt(hex.substr(0, 2), 16);
@@ -5315,30 +5348,23 @@ class LineListTableComponent extends ReactWrapperModule {
5315
5348
  value: 'Download',
5316
5349
  }, downloadLoading
5317
5350
  ? React__default.createElement(CircularLoader$1, { small: true })
5318
- : 'Download')), orgUnitModalVisible &&
5319
- React__default.createElement(OrgUnitSelector, {
5320
- hide: hide,
5321
- setHide: setHide,
5322
- selectedOrgUnit: selectedOrgUnit,
5323
- setSelectedOrgUnit: setSelectedOrgUnit,
5324
- setOrgUnitState: setOrgUnitState,
5325
- setTempOrgUnitState: setTempOrgUnitState,
5326
- tempOrgUnitState: tempOrgUnitState,
5327
- }), this.showFilters &&
5351
+ : 'Download')), this.showFilters &&
5328
5352
  React__default.createElement(FilterToolbar, {
5329
5353
  orgUnit: {
5354
+ allowMultipleOrgUnits: this.allowMultipleOrgUnits,
5355
+ showOrgUnitMode: this.showOrgUnitMode,
5356
+ appliedOrgUnits,
5357
+ setAppliedOrgUnits,
5358
+ selectedOrgUnits,
5359
+ setSelectedOrgUnits,
5360
+ customOrgUnitRoots: this.customOrgUnitRoots,
5330
5361
  orgUnitLabel,
5331
- selectedOrgUnit,
5332
- setSelectedOrgUnit,
5333
- setOrgUnitState,
5334
- defaultOrgUnit,
5335
- setHide,
5336
- setTempOrgUnitState,
5337
- tempOrgUnitState,
5338
- SetOrgUnitModalVisible: setOrgUnitModalVisible,
5339
5362
  handleOrgUnitFilter,
5340
- prevSelectedOrgUnit,
5341
- setPrevSelectedOrgUnit,
5363
+ appliedOrgUnitMode,
5364
+ selectedOrgUnitMode,
5365
+ defaultOrgUnitMode,
5366
+ setSelectedOrgUnitMode,
5367
+ handleOrgUnitModeReset,
5342
5368
  },
5343
5369
  dates: {
5344
5370
  startDateState,
@@ -5403,7 +5429,9 @@ class LineListTableComponent extends ReactWrapperModule {
5403
5429
  this.reactStateUpdaters.setOptionSetNameVisible(this.isOptionSetNameVisible);
5404
5430
  }
5405
5431
  if (changes['orgUnit']) {
5406
- this.reactStateUpdaters.setOrgUnitState(this.orgUnit);
5432
+ this.reactStateUpdaters.setDefaultOrgUnit(this.orgUnit);
5433
+ this.reactStateUpdaters.setAppliedOrgUnits([]);
5434
+ this.reactStateUpdaters.setSelectedOrgUnits([]);
5407
5435
  }
5408
5436
  if (changes['programStageId']) {
5409
5437
  this.reactStateUpdaters.setProgramStageIdState(this.programStageId);
@@ -5436,7 +5464,7 @@ class LineListTableComponent extends ReactWrapperModule {
5436
5464
  this.render();
5437
5465
  }
5438
5466
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: LineListTableComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
5439
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.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", lineListRowActionFilterConfig: "lineListRowActionFilterConfig", hydrateForActionFiltering: "hydrateForActionFiltering", 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", columnNameSource: "columnNameSource", orgUnitAndDateColumnsPosition: "orgUnitAndDateColumnsPosition", customDisplayInReportsIds: "customDisplayInReportsIds", columnMetadataDisplayMode: "columnMetadataDisplayMode" }, outputs: { actionSelected: "actionSelected", rowsSelected: "rowsSelected" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: ["@charset \"UTF-8\";::ng-deep .line-list-root{width:100%;max-width:100%;min-width:0}::ng-deep .line-list-download-toolbar{position:sticky;left:0;z-index:2;display:flex;justify-content:flex-end;width:100%;max-width:100%;box-sizing:border-box;background:#fff}::ng-deep .line-list-table-scroll{width:100%;max-width:100%;overflow-x:auto}::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"], changeDetection: i0.ChangeDetectionStrategy.Eager }); }
5467
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: LineListTableComponent, isStandalone: false, selector: "ng-dhis2-ui-line-list", inputs: { triggerToken: "triggerToken", programId: "programId", orgUnit: "orgUnit", allowMultipleOrgUnits: "allowMultipleOrgUnits", showOrgUnitMode: "showOrgUnitMode", customOrgUnitRoots: "customOrgUnitRoots", programStageId: "programStageId", actionOptions: "actionOptions", actionOptionOrientation: "actionOptionOrientation", attributeFilters: "attributeFilters", useOuModeWithOlderDHIS2Instance: "useOuModeWithOlderDHIS2Instance", startDate: "startDate", endDate: "endDate", dataQueryFilters: "dataQueryFilters", lineListRowActionFilterConfig: "lineListRowActionFilterConfig", hydrateForActionFiltering: "hydrateForActionFiltering", 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", columnNameSource: "columnNameSource", orgUnitAndDateColumnsPosition: "orgUnitAndDateColumnsPosition", customDisplayInReportsIds: "customDisplayInReportsIds", columnMetadataDisplayMode: "columnMetadataDisplayMode" }, outputs: { actionSelected: "actionSelected", rowsSelected: "rowsSelected" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: ["@charset \"UTF-8\";::ng-deep .line-list-root{width:100%;max-width:100%;min-width:0}::ng-deep .line-list-download-toolbar{position:sticky;left:0;z-index:2;display:flex;justify-content:flex-end;width:100%;max-width:100%;box-sizing:border-box;background:#fff}::ng-deep .line-list-table-scroll{width:100%;max-width:100%;overflow-x:auto}::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"], changeDetection: i0.ChangeDetectionStrategy.Eager }); }
5440
5468
  }
5441
5469
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: LineListTableComponent, decorators: [{
5442
5470
  type: Component,
@@ -5447,6 +5475,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
5447
5475
  type: Input
5448
5476
  }], orgUnit: [{
5449
5477
  type: Input
5478
+ }], allowMultipleOrgUnits: [{
5479
+ type: Input
5480
+ }], showOrgUnitMode: [{
5481
+ type: Input
5482
+ }], customOrgUnitRoots: [{
5483
+ type: Input
5450
5484
  }], programStageId: [{
5451
5485
  type: Input
5452
5486
  }], actionOptions: [{
@@ -13297,14 +13331,22 @@ class ProgramEntryFormModule {
13297
13331
  throw new Error('Could not initialize tracker query');
13298
13332
  }
13299
13333
  if (!this.trackedEntity()) {
13300
- return await instanceQuery.create();
13334
+ const instance = await instanceQuery.create();
13335
+ return this.codeGeneratorOrgUnit()
13336
+ ? await this.#setReservedValuesForCodeGeneration(instance)
13337
+ : instance;
13301
13338
  }
13302
13339
  const instanceResult = (await instanceQuery.setTrackedEntity(this.trackedEntity()).get()).data;
13303
13340
  if (!instanceResult) {
13304
- return await instanceQuery.create();
13341
+ const instance = await instanceQuery.create();
13342
+ return this.codeGeneratorOrgUnit()
13343
+ ? await this.#setReservedValuesForCodeGeneration(instance)
13344
+ : instance;
13305
13345
  }
13306
13346
  instanceQuery.setInstanceFields(this.metaData()?.program);
13307
- const instance = await instanceQuery.setReservedValues();
13347
+ const instance = this.codeGeneratorOrgUnit()
13348
+ ? await this.#setReservedValuesForCodeGeneration(instanceQuery.instance)
13349
+ : await instanceQuery.setReservedValues();
13308
13350
  if (this.orgUnit()) {
13309
13351
  instance.setOrgUnit(this.orgUnit());
13310
13352
  }