@iapps/ng-dhis2-ui 1.2.98 → 1.2.100

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.
@@ -1 +1 @@
1
- {"version":3,"file":"iapps-ng-dhis2-ui.mjs","sources":["../../../../packages/ng-dhis2-ui/src/lib/shared/shared.module.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/models/header-bar-app.model.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/models/header-bar-notification.model.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/models/header-bar-data.model.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/models/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/utils/join-path.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/utils/apps.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/utils/logo-image.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/utils/logo.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/utils/notification-icon.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/utils/notifications.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/utils/debug-info/use-debug-info.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/utils/debug-info/debug-info-table.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/utils/debug-info/debug-info-modal.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/utils/debug-info/debug-info-menu-item.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/utils/profile-menu/profile-header.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/utils/header-bar-context.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/utils/profile-menu/update-notification.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/utils/profile-menu/profile-menu.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/utils/profile/use-on-doc-click.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/utils/profile.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/utils/title.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/utils/header-bar.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/react-wrapper/react-wrapper.component.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/header-bar.component.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/header-bar.module.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/button/button.component.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/button/button.module.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/button/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/breadcrumb/models/index.ts","../../../../packages/ng-dhis2-ui/src/lib/shared/utils/dimensionSelectorHelper.tsx","../../../../packages/ng-dhis2-ui/src/lib/shared/assets/AssignedCategoriesIcon.tsx","../../../../packages/ng-dhis2-ui/src/lib/shared/utils/predefinedDimensions.tsx","../../../../packages/ng-dhis2-ui/src/lib/shared/utils/list.ts","../../../../packages/ng-dhis2-ui/src/lib/shared/utils/axis.ts","../../../../packages/ng-dhis2-ui/src/lib/shared/utils/dimension.ts","../../../../packages/ng-dhis2-ui/src/lib/shared/utils/dimensionIs.ts","../../../../packages/ng-dhis2-ui/src/lib/shared/utils/axisGetDimension.ts","../../../../packages/ng-dhis2-ui/src/lib/shared/utils/axisHasDimension.ts","../../../../packages/ng-dhis2-ui/src/lib/shared/utils/layoutReplaceDimension.ts","../../../../packages/ng-dhis2-ui/src/lib/shared/utils/layoutGetAllAxes.ts","../../../../packages/ng-dhis2-ui/src/lib/shared/utils/layoutGetAllDimensions.ts","../../../../packages/ng-dhis2-ui/src/lib/shared/utils/layoutGetDimension.ts","../../../../packages/ng-dhis2-ui/src/lib/shared/utils/dimensionIsEmpty.ts","../../../../packages/ng-dhis2-ui/src/lib/shared/utils/dimensionIsValid.ts","../../../../packages/ng-dhis2-ui/src/lib/shared/utils/dimensionGetItems.ts","../../../../packages/ng-dhis2-ui/src/lib/shared/utils/index.ts","../../../../packages/ng-dhis2-ui/src/lib/shared/styles/DimensionSelector.style.ts","../../../../packages/ng-dhis2-ui/src/lib/shared/styles/index.ts","../../../../packages/ng-dhis2-ui/src/lib/shared/components/transfer-option.component.tsx","../../../../packages/ng-dhis2-ui/src/lib/shared/components/index.ts","../../../../packages/ng-dhis2-ui/src/lib/shared/hooks/dynamic-styles.hook.tsx","../../../../packages/ng-dhis2-ui/src/lib/shared/hooks/index.ts","../../../../packages/ng-dhis2-ui/src/lib/shared/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/breadcrumb/components/breadcrumb-item.component.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/breadcrumb/containers/breadcrumb.component.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/breadcrumb/breadcrumb.module.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/breadcrumb/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/period-selector/components/utils/periodTypes.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/period-selector/components/utils/relativePeriods.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/period-selector/components/utils/fixedPeriods.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/period-selector/components/utils/index.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/period-selector/components/FixedPeriodFilter.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/period-selector/components/RelativePeriodFilter.tsx","../../../../packages/ng-dhis2-ui/src/lib/shared/assets/DimensionItemIcons/PeriodIcon.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/period-selector/components/PeriodTransfer.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/period-selector/components/PeriodDimension.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/period-selector/containers/period-selector-modal/period-selector-modal.component.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/period-selector/containers/period-selector/period-selector.component.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/period-selector/period-selector.module.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/period-selector/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/organisation-unit-selector/components/utils/ouIdHelper/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/organisation-unit-selector/components/utils/ouLevelUtils/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/organisation-unit-selector/components/utils/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/organisation-unit-selector/components/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/organisation-unit-selector/components/styles/OrgUnitDimension.style.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/organisation-unit-selector/components/OrgUnitDimension.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/organisation-unit-selector/models/organisation-unit-config.model.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/organisation-unit-selector/models/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/organisation-unit-selector/containers/organisation-unit-selector/organisation-unit-selector.component.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/organisation-unit-selector/containers/organisation-unit-selector-modal/organisation-unit-selector-modal.component-modal.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/organisation-unit-selector/organisation-unit-selector.module.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/organisation-unit-selector/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/line-list/components/org-unit-form-field.component.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/line-list/components/orgUnitSelector.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/line-list/components/table/filterToolbar.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/line-list/components/table/tableHeader.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/line-list/components/dropdown-menu/dropdown-menu.styles.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/line-list/hooks/use-dynamic-styles.hook.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/line-list/components/dropdown-menu/dropdown-menu.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/line-list/components/data-table-actions/data-table-actions.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/line-list/components/data-table-actions/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/line-list/components/table/tableCell.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/line-list/components/table/tableRow.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/line-list/components/table/tableBody.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/line-list/components/table/pagination.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/line-list/components/table/tableFooter.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/line-list/components/table/lineListTable.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/line-list/services/line-list.service.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/line-list/utils/tei-table-data-utils.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/line-list/utils/event-table-data-util.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/line-list/containers/line-list.component.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/line-list/line-list.module.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/line-list/models/line-list-action-option.model.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/line-list/models/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/data-table-ui/components/dropdown-menu/dropdown-menu.styles.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/data-table-ui/hooks/use-dynamic-styles.hook.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/data-table-ui/components/dropdown-menu/dropdown-menu.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/data-table-ui/containers/data-table-ui/data-table-ui.component.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/data-table-ui/data-table-ui.module.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/hooks/field-validation.hook.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/form/hooks/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/models/form-field.model.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/models/boolean.model.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/models/check-box.model.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/models/date-field.model.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/models/dropdown.model.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/models/field-config.model.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/models/date-range-value.model.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/interfaces/field-type.interface.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/interfaces/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/models/field-dropdown.model.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/models/form-config.model.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/utils/field.util.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/utils/field-control-type.util.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/utils/field-type.util.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/utils/form.util.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/utils/form-value.util.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/utils/translation.util.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/models/form-field-group.model.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/models/form-metadata-rule.model.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/models/form-metadata-section.model.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/models/form-metadata.model.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/models/form-value.model.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/models/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/components/file-upload-field.component.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/form/components/org-unit-form-field.component.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/form/components/base-form-field.component.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/form/components/form-field-item.component.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/containers/form-field/form-field.component.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/containers/form-field/form-field.component.html","../../../../packages/ng-dhis2-ui/src/lib/modules/form/containers/form/form.component.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/containers/form/form.component.html","../../../../packages/ng-dhis2-ui/src/lib/modules/form/containers/repeatable-form/repeatable-form.component.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/containers/repeatable-form/repeatable-form.component.html","../../../../packages/ng-dhis2-ui/src/lib/modules/form/containers/section-form/section-form.component.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/containers/section-form/section-form.component.html","../../../../packages/ng-dhis2-ui/src/lib/modules/form/shared/components/base-form-wrapper.component.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/shared/components/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/shared/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/containers/flat-form/flat-form.component.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/containers/flat-form/flat-form.component.html","../../../../packages/ng-dhis2-ui/src/lib/modules/form/form.module.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/selection-filters-ui/containers/selection-filters-ui/selection-filters-ui.component.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/selection-filters-ui/selection-filters-ui.module.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/tracker-form/tracker-form.component.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/tracker-form/tracker-form.component.html","../../../../packages/ng-dhis2-ui/src/lib/modules/tracker-form/tracker-form.module.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/tracker-form/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/event-form/event-form.component.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/event-form/event-form.component.html","../../../../packages/ng-dhis2-ui/src/lib/modules/event-form/event-form.module.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/event-form/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/program-entry-form/models/program-entry-form.config.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/program-entry-form/utils/program-entry-form-field.util.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/program-entry-form/utils/program-entry-form-section.util.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/program-entry-form/utils/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/program-entry-form/models/program-entry-form-metadata.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/program-entry-form/models/program-entry-form-section.model.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/program-entry-form/models/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/program-entry-form/program-entry-form.component.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/program-entry-form/program-entry-form.component.html","../../../../packages/ng-dhis2-ui/src/lib/modules/program-entry-form/index.ts","../../../../packages/ng-dhis2-ui/src/iapps-ng-dhis2-ui.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [],\n exports: [],\n})\nexport class SharedDhis2UiModule {}\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport class HeaderBarApp {\n name!: string;\n namespace!: string;\n defaultAction!: string;\n displayName!: string;\n icon!: string;\n description!: string;\n\n constructor(module: Record<string, unknown>) {\n this.name = module['name'] as string;\n this.namespace = module['namespace'] as string;\n this.defaultAction = this.getPath(module['defaultAction'] as string);\n this.icon = this.getPath(module['icon'] as string);\n this.displayName = module['displayName'] as string;\n this.description = module['description'] as string;\n }\n\n getPath(item: string) {\n if (item?.startsWith('../')) {\n return '../../' + item;\n }\n return item;\n }\n}\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport class HeaderBarNotification {\n unreadInterpretations?: number;\n unreadMessageConversations?: number;\n\n constructor(notification: Record<string, number>) {\n this.unreadInterpretations = notification['unreadInterpretations'];\n this.unreadMessageConversations =\n notification['unreadMessageConversations'];\n }\n}\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport { NgxDhis2HttpClientService } from '@iapps/ngx-dhis2-http-client';\nimport { Observable, catchError, map, of, zip } from 'rxjs';\nimport { HeaderBarApp } from './header-bar-app.model';\nimport { HeaderBarNotification } from './header-bar-notification.model';\n\nexport class HeaderBarData {\n apps!: HeaderBarApp[];\n title!: string;\n help: any;\n notifications!: HeaderBarNotification;\n user!: Record<string, unknown>;\n\n constructor(private httpClient: NgxDhis2HttpClientService) {}\n\n getApps(): Observable<HeaderBarApp[]> {\n return this.httpClient\n .get('dhis-web-commons/menu/getModules.action', {\n useRootUrl: true,\n })\n .pipe(\n catchError(() =>\n of({\n modules: [],\n })\n ),\n map((result: { modules: Record<string, unknown>[] }) => {\n return (result?.modules || [])\n .map((module: Record<string, unknown>) => new HeaderBarApp(module))\n .filter((headerBarApp) => headerBarApp);\n })\n );\n }\n\n getNotifications(): Observable<HeaderBarNotification | null> {\n return this.httpClient\n .get('me/dashboard')\n .pipe(\n map((notifications: Record<string, number>) =>\n notifications ? new HeaderBarNotification(notifications) : null\n )\n );\n }\n\n get(): Observable<HeaderBarData | null> {\n return zip(\n this.getApps(),\n this.httpClient.get('systemSettings/helpPageLink'),\n this.httpClient.get('me/dashboard'),\n this.httpClient.get('systemSettings/applicationTitle'),\n this.httpClient.get(\n 'me.json?fields=authorities,avatar,email,name,settings'\n )\n ).pipe(\n map(\n (response: [HeaderBarApp[], any, HeaderBarNotification, any, any]) => {\n if (response) {\n const [apps, help, notifications, title, user] = response;\n this.apps = apps;\n this.help = help;\n this.notifications = notifications;\n this.title = title as string;\n this.user = user;\n\n return this;\n }\n\n return null;\n }\n ),\n catchError(() => {\n return of(null);\n })\n );\n }\n}\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './header-bar-data.model';\nexport * from './header-bar-app.model';\n","export const joinPath = (...parts: any[]) => {\n const realParts = parts.filter((part) => !!part);\n return realParts.map((part) => part.replace(/^\\/+|\\/+$/g, '')).join('/');\n};\n","import { Card } from '@dhis2-ui/card';\nimport { InputField } from '@dhis2-ui/input';\nimport { useConfig } from '@dhis2/app-runtime';\nimport { colors, spacers, theme } from '@dhis2/ui-constants';\nimport { IconApps24, IconSettings24 } from '@dhis2/ui-icons';\nimport PropTypes from 'prop-types';\nimport React, { useState, useEffect, useCallback, useRef } from 'react';\nimport { joinPath } from './join-path';\nimport i18n from '@dhis2/d2-i18n';\ndeclare module 'react' {\n interface StyleHTMLAttributes<T> extends React.HTMLAttributes<T> {\n jsx?: boolean;\n global?: boolean;\n }\n}\n\n/**\n * Copied from here:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Escaping\n */\nfunction escapeRegExpCharacters(text: string) {\n return text.replace(/[/.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\nfunction Search({ value, onChange, baseUrl }: any) {\n return (\n <div className=\"headerbar-apps-search\">\n <span className=\"headerbar-apps-search-input\">\n <InputField\n value={value}\n name=\"filter\"\n placeholder={i18n.t('Search apps')}\n onChange={onChange}\n initialFocus\n />\n </span>\n\n <span className=\"headerbar-apps-search-icon\">\n <a href={joinPath(baseUrl, 'dhis-web-menu-management')}>\n <IconSettings24 color={colors.grey700} />\n </a>\n </span>\n\n <style jsx>{`\n .headerbar-apps-search {\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n height: 52px;\n margin: 8px;\n }\n\n .headerbar-apps-search-input {\n flex: 1 100%;\n }\n\n .headerbar-apps-search-icon {\n flex: 1 auto;\n margin: 8px;\n }\n `}</style>\n </div>\n );\n}\n\nSearch.propTypes = {\n value: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n baseUrl: PropTypes.string,\n};\n\nfunction Item({ name, path, img }: any) {\n return (\n <a className=\"headerbar-app-item\" href={path}>\n <img className=\"headerbar-app-item-logo\" src={img} alt=\"app logo\" />\n\n <div className=\"headerbar-app-item-title\">{name}</div>\n\n <style jsx>{`\n .headerbar-app-item {\n display: flex;\n flex-direction: column;\n -webkit-box-align: center;\n align-items: center;\n -webkit-box-pack: center;\n justify-content: center;\n width: 96px;\n margin: 8px;\n border-radius: 12px;\n text-decoration: none;\n cursor: pointer;\n }\n .headerbar-app-item-logo {\n display: inline-block;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n width: 96px;\n margin: 8px;\n border-radius: 12px;\n text-decoration: none;\n cursor: pointer;\n }\n\n .headerbar-app-item-logo:hover,\n .headerbar-app-item-logo:focus {\n background-color: ${theme.primary050};\n cursor: pointer;\n }\n\n .headerbar-app-item-logo:hover > div {\n font-weight: 500;\n cursor: pointer;\n }\n\n .headerbar-app-item-logo {\n width: 48px;\n height: 48px;\n margin: 8px;\n cursor: pointer;\n }\n\n .headerbar-app-item-title {\n overflow-wrap: anywhere;\n margin-top: 14px;\n color: rgba(0, 0, 0, 0.87);\n font-size: 12px;\n letter-spacing: 0.01em;\n line-height: 14px;\n text-align: center;\n cursor: pointer;\n }\n `}</style>\n </a>\n );\n}\n\nItem.propTypes = {\n img: PropTypes.string,\n name: PropTypes.string,\n path: PropTypes.string,\n};\n\nfunction List({ apps, filter }: any) {\n return (\n <div\n className=\"headerbar-apps-menu-list\"\n data-test=\"headerbar-apps-menu-list\"\n >\n {apps\n .filter(({ displayName, name }: any) => {\n const appName = displayName || name;\n const formattedAppName = appName.toLowerCase();\n const formattedFilter = escapeRegExpCharacters(filter).toLowerCase();\n\n return filter.length > 0\n ? formattedAppName.match(formattedFilter)\n : true;\n })\n .map(({ displayName, name, defaultAction, icon }: any, idx: string) => (\n <Item\n key={`app-${name}-${idx}`}\n name={displayName || name}\n path={defaultAction}\n img={icon}\n />\n ))}\n\n <style jsx>{`\n .headerbar-apps-menu-list {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n align-content: flex-start;\n align-items: flex-start;\n justify-content: flex-start;\n width: 30vw;\n min-width: 300px;\n max-width: 560px;\n\n min-height: 200px;\n max-height: 465px;\n margin: 0 8px 8px 8px;\n\n overflow: auto;\n overflow-x: hidden;\n }\n `}</style>\n </div>\n );\n}\nList.propTypes = {\n apps: PropTypes.array,\n filter: PropTypes.string,\n};\n\nconst AppMenu = ({ apps, filter, onFilterChange, baseUrl }: any) => (\n <div className=\"headerbar-apps-menu\" data-test=\"headerbar-apps-menu\">\n <Card>\n <Search value={filter} onChange={onFilterChange} baseUrl={baseUrl} />\n <List apps={apps} filter={filter} />\n </Card>\n\n <style jsx>{`\n .headerbar-apps-menu {\n z-index: 10000;\n position: absolute;\n right: -4px;\n }\n `}</style>\n </div>\n);\n\nAppMenu.propTypes = {\n apps: PropTypes.array.isRequired,\n onFilterChange: PropTypes.func.isRequired,\n filter: PropTypes.string,\n baseUrl: PropTypes.string,\n};\n\nconst Apps = ({ apps, baseUrl }: any) => {\n const [show, setShow] = useState(false);\n const [filter, setFilter] = useState('');\n\n const handleVisibilityToggle = useCallback(() => setShow(!show), [show]);\n const handleFilterChange = useCallback(\n ({ value }: any) => setFilter(value),\n []\n );\n\n const containerEl = useRef(null);\n const onDocClick = useCallback((evt: any) => {\n if (\n containerEl.current &&\n !(containerEl.current as any).contains(evt.target)\n ) {\n setShow(false);\n }\n }, []);\n useEffect(() => {\n document.addEventListener('click', onDocClick);\n return () => document.removeEventListener('click', onDocClick);\n }, [onDocClick]);\n\n return (\n <div\n className=\"headerbar-apps\"\n ref={containerEl}\n data-test=\"headerbar-apps\"\n >\n <button onClick={handleVisibilityToggle} data-test=\"headerbar-apps-icon\">\n <IconApps24 color={colors.white} />\n </button>\n\n {show ? (\n <AppMenu\n apps={apps}\n filter={filter}\n baseUrl={baseUrl}\n onFilterChange={handleFilterChange}\n />\n ) : null}\n\n <style jsx>{`\n .headerbar-apps button {\n display: block;\n background: transparent;\n padding: ${spacers.dp4} ${spacers.dp12} 0;\n border: 0;\n cursor: pointer;\n height: 100%;\n }\n .headerbar-apps button:focus {\n outline: 2px solid white;\n outline-offset: -2px;\n }\n .headerbar-apps button:focus:not(:focus-visible) {\n outline: none;\n }\n .headerbar-apps button:hover {\n background: #1a557f;\n }\n .headerbar-apps button:active {\n background: #104067;\n }\n\n .headerbar-apps {\n position: relative;\n height: 100%;\n }\n `}</style>\n </div>\n );\n};\n\nApps.propTypes = {\n apps: PropTypes.array.isRequired,\n baseUrl: PropTypes.string,\n};\n\nexport default Apps;\n","import { LogoIconWhite } from '@dhis2-ui/logo';\nimport { useDataQuery } from '@dhis2/app-runtime';\nimport React from 'react';\ndeclare module 'react' {\n interface StyleHTMLAttributes<T> extends React.HTMLAttributes<T> {\n jsx?: boolean;\n global?: boolean;\n }\n}\n\nconst query = {\n customLogo: {\n resource: 'staticContent/logo_banner',\n },\n};\n\nconst pathExists = (data: any) =>\n data &&\n data.customLogo &&\n data.customLogo.images &&\n data.customLogo.images.png;\n\nexport const LogoImage = () => {\n const { loading, error, data } = useDataQuery(query) as any;\n\n if (loading) {\n return null;\n }\n\n let Logo;\n if (!error && pathExists(data)) {\n Logo = <img alt=\"Headerbar Logo\" src={data.customLogo.images.png} />;\n } else {\n Logo = <LogoIconWhite />;\n }\n\n return (\n <div className=\"header-bar-logo\">\n {Logo}\n <style jsx>{`\n .header-bar-logo {\n min-width: 48px;\n max-width: 250px;\n height: 48px;\n display: flex;\n -webkit-box-pack: center;\n justify-content: center;\n -webkit-box-align: center;\n align-items: center;\n overflow: hidden;\n }\n\n .header-bar-logo svg {\n height: 25px;\n width: 27px;\n }\n\n .header-bar-logo img {\n max-height: 100%;\n min-height: auto;\n width: auto;\n }\n `}</style>\n </div>\n );\n};\n","import { useConfig } from '@dhis2/app-runtime';\nimport React from 'react';\nimport { LogoImage } from './logo-image';\ndeclare module 'react' {\n interface StyleHTMLAttributes<T> extends React.HTMLAttributes<T> {\n jsx?: boolean;\n global?: boolean;\n }\n}\n\ninterface LogoProp {\n baseUrl: string;\n}\n\nexport const Logo = ({ baseUrl }: LogoProp) => {\n return (\n <div className=\"headerbar-logo\" data-test=\"headerbar-logo\">\n <a href={baseUrl}>\n <LogoImage />\n </a>\n\n <style jsx>{`\n .headerbar-logo {\n box-sizing: border-box;\n min-width: 49px;\n max-height: 48px;\n margin: 0 12px 0 0;\n border-right: 1px solid rgba(32, 32, 32, 0.15);\n }\n .headerbar-logo:hover {\n background-color: #1a557f;\n }\n\n .headerbar-logo a,\n .headerbar-logo a:hover,\n .headerbar-logo a:focus,\n .headerbar-logo a:active,\n .headerbar-logo a:visited {\n user-select: none;\n }\n .headerbar-logo a:focus {\n outline: 2px solid white;\n outline-offset: -2px;\n }\n .headerbar-logo a:focus:not(:focus-visible) {\n outline: none;\n }\n `}</style>\n </div>\n );\n};\n","import { colors, theme, spacers } from '@dhis2/ui-constants';\nimport { IconMessages24, IconMail24 } from '@dhis2/ui-icons';\nimport PropTypes from 'prop-types';\nimport React from 'react';\ndeclare module 'react' {\n interface StyleHTMLAttributes<T> extends React.HTMLAttributes<T> {\n jsx?: boolean;\n global?: boolean;\n }\n}\n\nfunction icon(kind: string) {\n if (kind === 'message') {\n return <IconMessages24 color={colors.white} />;\n } else {\n return <IconMail24 color={colors.white} />;\n }\n}\n\nexport const NotificationIcon = (params: any) => {\n const { count, href, kind, dataTestId } = params;\n const notificationClassName = 'headerbar-notification-icon ' + kind;\n return (\n <a href={href} className={notificationClassName} data-test={dataTestId}>\n {icon(kind)}\n\n {count > 0 && <span data-test={`${dataTestId}-count`}>{count}</span>}\n\n <style jsx>{`\n .headerbar-notification-icon {\n position: relative;\n margin: 0;\n cursor: pointer;\n padding: 0 ${spacers.dp12};\n height: 100%;\n display: flex;\n align-items: center;\n }\n .headerbar-notification-icon:focus {\n outline: 2px solid white;\n outline-offset: -2px;\n }\n .headerbar-notification-icon:focus:not(:focus-visible) {\n outline: none;\n }\n .headerbar-notification-icon:hover {\n background: #1a557f;\n }\n .headerbar-notification-icon:active {\n background: #104067;\n }\n .headerbar-notification-icon span {\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 1;\n position: absolute;\n top: 3px;\n right: 2px;\n min-width: 18px;\n min-height: 18px;\n border-radius: ${spacers.dp12};\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1),\n 0 1px 2px 0 rgba(0, 0, 0, 0.06);\n background-color: ${theme.secondary500};\n color: ${colors.white};\n font-size: 13px;\n font-weight: 600;\n line-height: 15px;\n text-align: center;\n cursor: inherit;\n padding: 0 ${spacers.dp4};\n }\n `}</style>\n </a>\n );\n};\n\nNotificationIcon.defaultProps = {\n count: 0,\n};\n\nNotificationIcon.propTypes = {\n href: PropTypes.string.isRequired,\n count: PropTypes.number,\n dataTestId: PropTypes.string,\n message: PropTypes.string,\n kind: PropTypes.oneOf(['interpretation', 'message']),\n};\n","import { useConfig } from '@dhis2/app-runtime';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { joinPath } from './join-path';\nimport { NotificationIcon } from './notification-icon';\ndeclare module 'react' {\n interface StyleHTMLAttributes<T> extends React.HTMLAttributes<T> {\n jsx?: boolean;\n global?: boolean;\n }\n}\n\n/*\n AUTHORITIES:\n - ALL: superuser\n - M_dhis-web-interpretation: access to interpretations app\n - M_dhis-web-messaging: access to messaging app\n */\n\nconst hasAuthority = (userAuthorities: any, authId: string) =>\n Array.isArray(userAuthorities) &&\n userAuthorities.some(\n (userAuthId) => userAuthId === 'ALL' || userAuthId === authId\n );\n\nexport const Notifications = (params: any) => {\n const { interpretations, messages, userAuthorities } = params;\n const { baseUrl } = useConfig();\n\n return (\n <div\n className=\"headerbar-notifications\"\n data-test=\"headerbar-notifications\"\n >\n {hasAuthority(userAuthorities, 'M_dhis-web-interpretation') && (\n <NotificationIcon\n count={interpretations}\n href={joinPath(baseUrl, 'dhis-web-interpretation')}\n kind=\"message\"\n dataTestId=\"headerbar-interpretations\"\n />\n )}\n\n {hasAuthority(userAuthorities, 'M_dhis-web-messaging') && (\n <NotificationIcon\n message=\"email\"\n count={messages}\n href={joinPath(baseUrl, 'dhis-web-messaging')}\n kind=\"interpretation\"\n dataTestId=\"headerbar-messages\"\n />\n )}\n\n <style jsx>{`\n .headerbar-notifications {\n user-select: none;\n display: flex;\n flex-direction: row;\n align-items: center;\n height: 100%;\n }\n `}</style>\n </div>\n );\n};\n\nNotifications.propTypes = {\n interpretations: PropTypes.number,\n messages: PropTypes.number,\n userAuthorities: PropTypes.arrayOf(PropTypes.string),\n};\n","import { useConfig } from '@dhis2/app-runtime';\n\nexport const useDebugInfo = () => {\n const { appName, appVersion, systemInfo } = useConfig() as any;\n\n return {\n app_name: appName || null,\n app_version: appVersion?.full || null,\n dhis2_version: systemInfo?.version || null,\n dhis2_revision: systemInfo?.revision || null,\n };\n};\n\nexport const useFormattedDebugInfo = () =>\n JSON.stringify(useDebugInfo(), undefined, 2);\n","import { colors } from '@dhis2/ui-constants';\nimport React from 'react';\nimport { useDebugInfo } from './use-debug-info';\ndeclare module 'react' {\n interface StyleHTMLAttributes<T> extends React.HTMLAttributes<T> {\n jsx?: boolean;\n global?: boolean;\n }\n}\n\nconst formatDebugInfoKey = (key: any) => {\n const tokens = key.split('_');\n return tokens\n .map((token: any) => {\n if (token.toLowerCase() === 'dhis2') {\n return 'DHIS2';\n } else {\n return token[0].toUpperCase() + token.substr(1).toLowerCase();\n }\n })\n .join(' ');\n};\n\nexport function DebugInfoTable() {\n const debugInfo = useDebugInfo() as any;\n return (\n <table {...{ 'data-test': 'dhis2-ui-headerbar-debuginfotable' }}>\n <tbody>\n {Object.keys(debugInfo).map((key) => (\n <tr key={key}>\n <td className=\"debug-info-key\">{formatDebugInfoKey(key)}</td>\n <td>{debugInfo[key]}</td>\n </tr>\n ))}\n </tbody>\n <style jsx>{`\n table {\n white-space: pre-wrap;\n font-size: 14px;\n line-height: 1.2;\n color: ${colors.grey700};\n font-famile: Menlo, Courier, monospace !important;\n }\n td {\n padding: 3px 16px 3px 0;\n }\n .debug-info-key {\n font-weight: bold;\n }\n `}</style>\n </table>\n );\n}\n","import { Button, ButtonStrip } from '@dhis2-ui/button';\nimport { Modal, ModalActions, ModalContent, ModalTitle } from '@dhis2-ui/modal';\nimport { useAlert } from '@dhis2/app-runtime';\nimport i18n from '@dhis2/d2-i18n';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { DebugInfoTable } from './debug-info-table';\nimport { useFormattedDebugInfo } from './use-debug-info';\n\nexport function DebugInfoModal(params: any) {\n const { onClose } = params;\n const debugInfo = useFormattedDebugInfo();\n const { show: showClipboardAlert } = useAlert(\n 'Debug information copied to clipboard',\n { duration: 3000 }\n );\n\n const copyDebugInfo = () => {\n navigator.clipboard.writeText(debugInfo);\n onClose();\n showClipboardAlert();\n };\n\n return (\n <Modal position=\"middle\" dataTest=\"dhis2-ui-headerbar-debuginfomodal\">\n <ModalTitle>{i18n.t('Debug info')}</ModalTitle>\n <ModalContent>\n <DebugInfoTable />\n </ModalContent>\n <ModalActions>\n <ButtonStrip end>\n <Button onClick={() => onClose()}>{i18n.t('Close')}</Button>\n <Button\n primary\n onClick={copyDebugInfo}\n dataTest=\"dhis2-ui-headerbar-debuginfomodal-copybutton\"\n >\n {i18n.t('Copy debug info')}\n </Button>\n </ButtonStrip>\n </ModalActions>\n </Modal>\n );\n}\n\nDebugInfoModal.propTypes = {\n onClose: PropTypes.func.isRequired,\n};\n","import { MenuItem } from '@dhis2-ui/menu';\nimport { colors } from '@dhis2/ui-constants';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport i18n from '@dhis2/d2-i18n';\nimport { useDebugInfo } from './use-debug-info';\ndeclare module 'react' {\n interface StyleHTMLAttributes<T> extends React.HTMLAttributes<T> {\n jsx?: boolean;\n global?: boolean;\n }\n}\n\nexport const DebugInfoMenuItem = (params: any) => {\n const { hideProfileMenu, showDebugInfoModal } = params;\n const debugInfo = useDebugInfo();\n\n const openDebugModal = () => {\n hideProfileMenu();\n showDebugInfoModal();\n };\n\n const debugInfoLabel = (\n <div className=\"root\">\n <div\n className=\"instance-info version\"\n data-test=\"dhis2-ui-headerbar-instanceinfo\"\n >\n {debugInfo.dhis2_version\n ? i18n.t('DHIS2 {{dhis2Version}}', {\n dhis2Version: debugInfo.dhis2_version,\n })\n : i18n.t('DHIS2 version unknown')}\n </div>\n <div className=\"version\" data-test=\"dhis2-ui-headerbar-appinfo\">\n {debugInfo.app_name\n ? debugInfo.app_version\n ? `${debugInfo.app_name} ${debugInfo.app_version}`\n : i18n.t('{{appName}} version unknown', {\n appName: debugInfo.app_name,\n })\n : debugInfo.app_version\n ? i18n.t('App {{appVersion}}', {\n appVersion: debugInfo.app_version,\n })\n : i18n.t('App version unknown')}\n {}\n </div>\n <style jsx>{`\n .root {\n color: ${colors.grey700};\n font-style: italic;\n font-size: 14px;\n line-height: 17px;\n }\n .instance-info {\n margin-bottom: 4px;\n }\n .version {\n white-space: no-wrap;\n }\n `}</style>\n </div>\n );\n\n return (\n <MenuItem\n dense\n onClick={openDebugModal}\n label={debugInfoLabel}\n dataTest=\"dhis2-ui-headerbar-debuginfo\"\n />\n );\n};\n\nDebugInfoMenuItem.propTypes = {\n hideProfileMenu: PropTypes.func.isRequired,\n showDebugInfoModal: PropTypes.func.isRequired,\n};\n","import { UserAvatar } from '@dhis2-ui/user-avatar';\nimport { useConfig } from '@dhis2/app-runtime';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { joinPath } from '../join-path';\nimport i18n from '@dhis2/d2-i18n';\ndeclare module 'react' {\n interface StyleHTMLAttributes<T> extends React.HTMLAttributes<T> {\n jsx?: boolean;\n global?: boolean;\n }\n}\n\nconst ProfileName = (params: any) => {\n const { children } = params;\n return (\n <div\n className=\"headerbar-profile-username\"\n data-test=\"headerbar-profile-username\"\n >\n {children}\n\n <style jsx>{`\n .headerbar-profile-username {\n margin-bottom: 3px;\n font-size: 16px;\n line-height: 19px;\n }\n `}</style>\n </div>\n );\n};\nProfileName.propTypes = {\n children: PropTypes.string,\n};\n\nconst ProfileEmail = (params: any) => {\n const { children } = params;\n return (\n <div\n className=\"headerbar-profile-user-email\"\n data-test=\"headerbar-profile-user-email\"\n >\n {children}\n\n <style jsx>{`\n .headerbar-profile-user-email {\n margin-bottom: 6px;\n font-size: 14px;\n line-height: 16px;\n }\n `}</style>\n </div>\n );\n};\nProfileEmail.propTypes = {\n children: PropTypes.string,\n};\n\nconst ProfileEdit = (params: any) => {\n const { children } = params;\n const { baseUrl } = useConfig();\n\n return (\n <a\n className=\"headerbar-profile-edit-profile-link\"\n href={joinPath(baseUrl, 'dhis-web-user-profile/#/profile')}\n data-test=\"headerbar-profile-edit-profile-link\"\n >\n {children}\n\n <style jsx>{`\n .headerbar-profile-edit-profile-link {\n color: rgba(0, 0, 0, 0.87);\n font-size: 12px;\n line-height: 14px;\n text-decoration: underline !important;\n cursor: pointer;\n }\n `}</style>\n </a>\n );\n};\n\nProfileEdit.propTypes = {\n children: PropTypes.string,\n};\n\nconst ProfileDetails = (params: any) => {\n const { name, email } = params;\n return (\n <div className=\"headerbar-profile-details\">\n <ProfileName>{name}</ProfileName>\n <ProfileEmail>{email}</ProfileEmail>\n <ProfileEdit>{i18n.t('Edit profile')}</ProfileEdit>\n\n <style jsx>{`\n .headerbar-profile-details {\n display: flex;\n flex-direction: column;\n margin-left: 20px;\n color: #000;\n font-size: 14px;\n font-weight: 400;\n }\n `}</style>\n </div>\n );\n};\n\nProfileDetails.propTypes = {\n email: PropTypes.string,\n name: PropTypes.string,\n};\n\nexport const ProfileHeader = (params: any) => {\n const { name, email, avatarId } = params;\n return (\n <div className=\"headerbar-profile-header\">\n <UserAvatar\n avatarId={avatarId}\n name={name}\n dataTest=\"headerbar-profile-menu-icon\"\n large\n />\n <ProfileDetails name={name} email={email} />\n\n <style jsx>{`\n .headerbar-profile-header {\n display: flex;\n flex-direction: row;\n margin-left: 24px;\n padding-top: 20px;\n }\n `}</style>\n </div>\n );\n};\n\nProfileHeader.propTypes = {\n avatarId: PropTypes.string,\n email: PropTypes.string,\n name: PropTypes.string,\n};\n","import PropTypes from 'prop-types';\nimport React, { createContext, useContext } from 'react';\n\nconst headerBarContext = createContext({\n updateAvailable: false,\n onApplyAvailableUpdate: () => {},\n});\n\nexport const HeaderBarContextProvider = (params: any) => {\n const { updateAvailable, onApplyAvailableUpdate, children } = params;\n return (\n <headerBarContext.Provider\n value={{ updateAvailable, onApplyAvailableUpdate }}\n >\n {children}\n </headerBarContext.Provider>\n );\n};\nHeaderBarContextProvider.propTypes = {\n children: PropTypes.node,\n updateAvailable: PropTypes.bool,\n onApplyAvailableUpdate: PropTypes.func,\n};\n\nexport const useHeaderBarContext = () => useContext(headerBarContext);\n","import { MenuItem } from '@dhis2-ui/menu';\nimport { useConfig } from '@dhis2/app-runtime';\nimport { colors } from '@dhis2/ui-constants';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { useHeaderBarContext } from '../header-bar-context';\nimport i18n from '@dhis2/d2-i18n';\ndeclare module 'react' {\n interface StyleHTMLAttributes<T> extends React.HTMLAttributes<T> {\n jsx?: boolean;\n global?: boolean;\n }\n}\n\nexport function UpdateNotification(params: any) {\n const { hideProfileMenu } = params;\n const { appName } = useConfig();\n const { updateAvailable, onApplyAvailableUpdate } = useHeaderBarContext();\n const onClick = () => {\n hideProfileMenu();\n onApplyAvailableUpdate?.();\n };\n\n const updateNotificationLabel = (\n <div className=\"root\">\n <div className=\"badge\" />\n <div className=\"spacer\" />\n <div className=\"message\">\n {appName\n ? i18n.t('New {{appName}} version available', { appName })\n : i18n.t('New app version available')}\n <br />\n {i18n.t('Click to reload')}\n </div>\n <style jsx>{`\n .root {\n display: flex;\n flex-direction: row;\n align-items: center;\n font-size: 14px;\n line-height: 17px;\n }\n .badge {\n display: inline-block;\n width: 12px;\n height: 12px;\n margin: 0 8px;\n border-radius: 6px;\n background-color: ${colors.blue600};\n }\n .spacer {\n display: inline-block;\n width: 8px;\n }\n .message {\n display: inline-block;\n }\n `}</style>\n </div>\n );\n\n return updateAvailable ? (\n <MenuItem\n dense\n onClick={onClick}\n label={updateNotificationLabel}\n dataTest=\"dhis2-ui-headerbar-updatenotification\"\n />\n ) : null;\n}\n\nUpdateNotification.propTypes = {\n hideProfileMenu: PropTypes.func.isRequired,\n};\n","import { Card } from '@dhis2-ui/card';\nimport { Center } from '@dhis2-ui/center';\nimport { Divider } from '@dhis2-ui/divider';\nimport { Layer } from '@dhis2-ui/layer';\nimport { CircularLoader } from '@dhis2-ui/loader';\nimport { MenuDivider, MenuItem } from '@dhis2-ui/menu';\nimport { clearSensitiveCaches, useConfig } from '@dhis2/app-runtime';\nimport { colors } from '@dhis2/ui-constants';\nimport {\n IconSettings24,\n IconInfo24,\n IconLogOut24,\n IconUser24,\n IconQuestion24,\n} from '@dhis2/ui-icons';\nimport PropTypes from 'prop-types';\nimport React, { useState } from 'react';\nimport { DebugInfoMenuItem } from '../debug-info/debug-info-menu-item';\nimport { joinPath } from '../join-path';\nimport i18n from '@dhis2/d2-i18n';\nimport { ProfileHeader } from './profile-header';\nimport { UpdateNotification } from './update-notification';\n\nconst LoadingMask = () => (\n <Layer\n translucent\n disablePortal\n dataTest=\"headerbar-profile-menu-loading-mask\"\n >\n <Center>\n <CircularLoader />\n </Center>\n </Layer>\n);\n\nconst ProfileContents = (params: any) => {\n const {\n name,\n email,\n avatarId,\n helpUrl,\n hideProfileMenu,\n showDebugInfoModal,\n } = params;\n const { baseUrl } = useConfig();\n const [loading, setLoading] = useState(false);\n\n return (\n <Card>\n <div className=\"headerbar-profile-contents\">\n <ProfileHeader name={name} email={email} avatarId={avatarId} />\n <Divider margin=\"13px 0 7px 0\" />\n <ul data-test=\"headerbar-profile-menu\">\n <MenuItem\n href={joinPath(baseUrl, 'dhis-web-user-profile/#/settings')}\n label={i18n.t('Settings')}\n value=\"settings\"\n icon={<IconSettings24 color={colors.grey700} />}\n />\n <MenuItem\n href={joinPath(baseUrl, 'dhis-web-user-profile/#/account')}\n label={i18n.t('Account')}\n value=\"account\"\n icon={<IconUser24 color={colors.grey700} />}\n />\n {helpUrl && (\n <MenuItem\n href={helpUrl}\n label={i18n.t('Help')}\n value=\"help\"\n icon={<IconQuestion24 color={colors.grey700} />}\n />\n )}\n <MenuItem\n href={joinPath(baseUrl, 'dhis-web-user-profile/#/aboutPage')}\n label={i18n.t('About DHIS2')}\n value=\"about\"\n icon={<IconInfo24 color={colors.grey700} />}\n />\n <MenuItem\n href={joinPath(baseUrl, 'dhis-web-commons-security/logout.action')}\n // NB: By MenuItem implementation, this callback\n // overwrites default navigation behavior but maintains\n // the href attribute\n onClick={async () => {\n setLoading(true);\n await clearSensitiveCaches();\n setLoading(false);\n window.location.assign(\n joinPath(baseUrl, 'dhis-web-commons-security/logout.action')\n );\n }}\n label={i18n.t('Logout')}\n value=\"logout\"\n icon={<IconLogOut24 color={colors.grey700} />}\n />\n <MenuDivider dense />\n <DebugInfoMenuItem\n hideProfileMenu={hideProfileMenu}\n showDebugInfoModal={showDebugInfoModal}\n />\n <UpdateNotification hideProfileMenu={hideProfileMenu} />\n </ul>\n </div>\n\n {loading && <LoadingMask />}\n\n <style jsx>{`\n .headerbar-profile-contents {\n width: 100%;\n padding: 0;\n }\n\n .headerbar-profile-contents ul {\n padding: 0;\n margin: 0;\n }\n\n .headerbar-profile-contents a {\n display: inline-flex !important;\n }\n\n .headerbar-profile-contents a,\n .headerbar-profile-contents a:hover,\n .headerbar-profile-contents a:focus,\n .headerbar-profile-contents a:active,\n .headerbar-profile-contents a:visited {\n text-decoration: none;\n display: block;\n }\n `}</style>\n </Card>\n );\n};\n\nProfileContents.propTypes = {\n hideProfileMenu: PropTypes.func.isRequired,\n showDebugInfoModal: PropTypes.func.isRequired,\n avatarId: PropTypes.string,\n email: PropTypes.string,\n helpUrl: PropTypes.string,\n name: PropTypes.string,\n};\n\nexport const ProfileMenu = (params: any) => {\n const { ...props } = params;\n return (\n <div className=\"headerbar-profile-menu\" data-test=\"headerbar-profile-menu\">\n <ProfileContents {...props} />\n <style jsx>{`\n .headerbar-profile-menu {\n z-index: 10000;\n position: absolute;\n right: 4px;\n width: 320px;\n }\n `}</style>\n </div>\n );\n};\n\nProfileMenu.propTypes = {\n hideProfileMenu: PropTypes.func.isRequired,\n showDebugInfoModal: PropTypes.func.isRequired,\n avatarId: PropTypes.string,\n email: PropTypes.string,\n helpUrl: PropTypes.string,\n name: PropTypes.string,\n};\n","import { useEffect, useMemo } from 'react';\n\nexport const useOnDocClick = (containerRef: any, hide: any) => {\n const onDocClick = useMemo(() => {\n return (evt: any) => {\n if (!containerRef.current) {\n return null;\n }\n\n if (!containerRef.current.contains(evt.target)) {\n hide();\n }\n\n return null;\n };\n }, [containerRef, hide]);\n\n useEffect(() => {\n document.addEventListener('click', onDocClick);\n\n return () => {\n document.removeEventListener('click', onDocClick);\n };\n }, [onDocClick]);\n};\n","import { UserAvatar } from '@dhis2-ui/user-avatar';\nimport PropTypes from 'prop-types';\nimport React, { useCallback, useRef, useState } from 'react';\nimport { DebugInfoModal } from './debug-info/debug-info-modal';\nimport { ProfileMenu } from './profile-menu';\nimport { useOnDocClick } from './profile/use-on-doc-click';\ndeclare module 'react' {\n interface StyleHTMLAttributes<T> extends React.HTMLAttributes<T> {\n jsx?: boolean;\n global?: boolean;\n }\n}\n\nconst Profile = (params: any) => {\n const { name, email, avatarId, helpUrl } = params;\n const [showProfileMenu, setShowProfileMenu] = useState(false);\n const [showDebugInfoModal, setShowDebugInfoModal] = useState(false);\n const hideProfileMenu = useCallback(\n () => setShowProfileMenu(false),\n [setShowProfileMenu]\n );\n const toggleProfileMenu = useCallback(\n () => setShowProfileMenu((show) => !show),\n [setShowProfileMenu]\n ) as any;\n const containerRef = useRef(null);\n\n useOnDocClick(containerRef, hideProfileMenu);\n\n return (\n <div\n ref={containerRef}\n data-test=\"headerbar-profile\"\n className=\"headerbar-profile\"\n >\n <button className=\"headerbar-profile-btn\" onClick={toggleProfileMenu}>\n <UserAvatar\n avatarId={avatarId}\n name={name}\n dataTest=\"headerbar-profile-icon\"\n medium\n />\n </button>\n\n {showProfileMenu && (\n <ProfileMenu\n avatarId={avatarId}\n name={name}\n email={email}\n helpUrl={helpUrl}\n hideProfileMenu={hideProfileMenu}\n showDebugInfoModal={() => {\n setShowDebugInfoModal(true);\n }}\n />\n )}\n {showDebugInfoModal && (\n <DebugInfoModal\n onClose={() => {\n setShowDebugInfoModal(false);\n }}\n />\n )}\n\n <style jsx>{`\n .headerbar-profile {\n position: relative;\n height: 100%;\n }\n\n .headerbar-profile-btn {\n background: transparent;\n padding: 6px;\n border: 0;\n cursor: pointer;\n }\n .headerbar-profile-btn:focus {\n outline: 2px solid white;\n outline-offset: -2px;\n }\n .headerbar-profile-btn:focus:not(:focus-visible) {\n outline: none;\n }\n .headerbar-profile-btn:hover {\n background: #1a557f;\n }\n .headerbar-profile-btn:active {\n background: #104067;\n }\n `}</style>\n </div>\n );\n};\n\nProfile.propTypes = {\n name: PropTypes.string.isRequired,\n avatarId: PropTypes.string,\n email: PropTypes.string,\n helpUrl: PropTypes.string,\n};\n\nexport default Profile;\n","import PropTypes from 'prop-types';\nimport React from 'react';\ndeclare module 'react' {\n interface StyleHTMLAttributes<T> extends React.HTMLAttributes<T> {\n jsx?: boolean;\n global?: boolean;\n }\n}\n\nexport const Title = (params: any) => {\n const { app, instance } = params;\n return (\n <div className=\"headerbar-title\" data-test=\"headerbar-title\">\n {app ? `${instance} - ${app}` : `${instance}`}\n\n <style jsx>{`\n .headerbar-title {\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: 14px;\n font-weight: 500;\n letter-spacing: 0.01em;\n white-space: nowrap;\n }\n `}</style>\n </div>\n );\n};\nTitle.propTypes = {\n app: PropTypes.string,\n instance: PropTypes.string,\n};\n","import i18n from '@dhis2/d2-i18n';\nimport { colors } from '@dhis2/ui-constants';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { HeaderBarData } from '../models';\nimport Apps from './apps';\nimport { Logo } from './logo';\nimport { Notifications } from './notifications';\nimport Profile from './profile';\nimport { Title } from './title';\n\ninterface HeaderBarProp {\n appName: string;\n data: HeaderBarData;\n className?: string;\n}\n\nexport const HeaderBar = ({ appName, data, className }: HeaderBarProp) => {\n const loading = false;\n const error = null;\n\n // See https://jira.dhis2.org/browse/LIBS-180\n if (!loading && !error) {\n // TODO: This will run every render which is probably wrong!\n // Also, setting the global locale shouldn't be done in the headerbar\n const locale = (data.user['settings'] as any)['keyUiLocale'] || 'en';\n i18n.setDefaultNamespace('default');\n i18n.changeLanguage(locale);\n }\n\n {\n /* TODO: Find better way to attach base URL */\n }\n const baseUrl = '../../../';\n\n return (\n <header className={className}>\n <div className=\"main\">\n {!loading && !error && (\n <>\n <Logo baseUrl={baseUrl} />\n\n <Title\n app={appName}\n instance={(data.title as any)['applicationTitle']}\n />\n\n <div className=\"right-control-spacer\" />\n\n {/*TODO: Find better approach to handle PWA */}\n {/* {'pwaEnabled' && <OnlineStatus />} */}\n\n <Notifications\n interpretations={data.notifications.unreadInterpretations}\n messages={data.notifications.unreadMessageConversations}\n userAuthorities={data.user['authorities'] as any}\n />\n <Apps apps={data.apps} baseUrl={baseUrl} />\n\n <Profile\n name={data.user['name'] as string}\n email={data.user['email'] as string}\n avatarId={((data.user['avatar'] || {}) as any)['id']}\n helpUrl={data.help.helpPageLink}\n />\n </>\n )}\n </div>\n\n {/* {'pwaEnabled' && !loading && !error && <OnlineStatus dense />} */}\n\n <style jsx>{`\n .main {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n background-color: #2c6693;\n color: ${colors.white};\n height: 48px;\n }\n .right-control-spacer {\n margin-left: auto;\n }\n `}</style>\n </header>\n );\n};\n\nHeaderBar.propTypes = {\n appName: PropTypes.string,\n data: HeaderBarData,\n className: PropTypes.string,\n updateAvailable: PropTypes.bool,\n onApplyAvailableUpdate: PropTypes.func,\n};\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n ContentChild,\n Directive,\n ElementRef,\n Input,\n OnChanges,\n OnDestroy,\n} from '@angular/core';\nimport parse from 'html-react-parser';\nimport * as React from 'react';\nimport { ComponentProps } from 'react';\nimport * as ReactDOM from 'react-dom/client';\n(window as any).React = React;\n\n@Directive({\n selector: 'ng-dhis2-ui-wrapper',\n})\nexport class ReactWrapperModule implements OnDestroy, AfterViewInit {\n @Input() props?: ComponentProps<any>;\n @Input() component!: any;\n\n @ContentChild('ngDhis2UiContent') content!: ElementRef<HTMLElement>;\n protected reactDomRoot?: ReactDOM.Root;\n\n constructor(protected elementRef: ElementRef<HTMLElement>) {}\n\n ngAfterViewInit() {\n if (!this.elementRef) throw new Error('No element ref');\n this.reactDomRoot = ReactDOM.createRoot(this.elementRef.nativeElement);\n this.render();\n }\n\n ngOnDestroy() {\n this.reactDomRoot?.unmount();\n }\n\n protected render() {\n if (!this.component) {\n console.warn('React component must be supplied');\n } else {\n if (!this.reactDomRoot) return;\n\n const jsxContent = this.content?.nativeElement?.outerHTML\n ? parse(this.content?.nativeElement?.outerHTML)\n : undefined;\n\n this.reactDomRoot.render(\n <this.component {...this.props}> {jsxContent || ''} </this.component>\n );\n }\n }\n}\n","import { Component, ElementRef } from '@angular/core';\nimport { DataProvider } from '@dhis2/app-runtime';\nimport { NgxDhis2HttpClientService } from '@iapps/ngx-dhis2-http-client';\nimport React from 'react';\nimport * as ReactDOM from 'react-dom/client';\nimport { firstValueFrom } from 'rxjs';\nimport { HeaderBarData } from './models';\nimport { HeaderBar } from './utils/header-bar';\nimport { ReactWrapperModule } from '../react-wrapper/react-wrapper.component';\n\n@Component({\n selector: 'ng-dhis2-ui-header-bar',\n template: `<ng-container></ng-container>`,\n standalone: false,\n})\nexport class HeaderBarComponent extends ReactWrapperModule {\n constructor(\n elementRef: ElementRef<HTMLElement>,\n private httpClient: NgxDhis2HttpClientService\n ) {\n super(elementRef);\n }\n\n override async ngAfterViewInit() {\n if (!this.elementRef) throw new Error('No element ref');\n this.reactDomRoot = ReactDOM.createRoot(this.elementRef.nativeElement);\n const manifest = await firstValueFrom(this.httpClient.manifest());\n const data = await firstValueFrom(new HeaderBarData(this.httpClient).get());\n\n this.component = data\n ? () => (\n <DataProvider>\n {<HeaderBar appName={manifest?.name} data={data} />}\n </DataProvider>\n )\n : () => <div>Something went wrong</div>;\n this.render();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SharedDhis2UiModule } from '../../shared/shared.module';\nimport { HeaderBarComponent } from './header-bar.component';\n\n@NgModule({\n imports: [CommonModule, SharedDhis2UiModule],\n declarations: [HeaderBarComponent],\n exports: [HeaderBarComponent],\n})\nexport class HeaderBarModule {}\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './header-bar.module';\nexport * from './header-bar.component';\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\nimport { Button } from '@dhis2/ui';\nimport { ReactWrapperModule } from '../react-wrapper/react-wrapper.component';\nimport React from 'react';\nimport * as ReactDOM from 'react-dom/client';\n\n@Component({\n selector: 'ng-dhis2-ui-button',\n template: '<ng-content></ng-content>',\n standalone: false,\n})\nexport class ButtonComponent extends ReactWrapperModule {\n @Input() label!: string;\n @Input() primary?: boolean;\n @Input() secondary?: boolean;\n @Input() destructive?: boolean;\n @Input() disabled?: boolean;\n @Input() small?: boolean;\n @Input() large?: boolean;\n\n @Output() buttonClick: EventEmitter<any> = new EventEmitter();\n\n override async ngAfterViewInit() {\n if (!this.elementRef) throw new Error('No element ref');\n this.reactDomRoot = ReactDOM.createRoot(this.elementRef.nativeElement);\n\n this.component = () => (\n <Button\n onClick={(e: any) => {\n this.onButtonClick(e);\n }}\n primary={this.primary}\n secondary={this.secondary}\n destructive={this.destructive}\n disabled={this.disabled}\n small={this.small}\n large={this.large}\n {...this.props}\n >\n {this.label}\n </Button>\n );\n this.render();\n }\n\n ngOnInit() {\n this.props = {\n ...this.props,\n primary: this.primary,\n secondary: this.secondary,\n destructive: this.destructive,\n small: this.small,\n large: this.large,\n };\n }\n\n onButtonClick(event: any) {\n this.buttonClick.emit(event);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SharedDhis2UiModule } from '../../shared/shared.module';\nimport { ButtonComponent } from './button.component';\n\n@NgModule({\n declarations: [ButtonComponent],\n exports: [ButtonComponent],\n imports: [CommonModule, SharedDhis2UiModule],\n})\nexport class ButtonModule {}\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './button.module';\nexport * from './button.component';\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './breadcrumb-item.model';\n","export const TRANSFER_OPTIONS_WIDTH = '420px';\n\nexport const TRANSFER_SELECTED_WIDTH = '298px';\n\nexport const TRANSFER_HEIGHT = '512px';\n","import React from 'react';\n\nexport const AssignedCategoriesIcon = () => {\n return (\n <svg height=\"16\" viewBox=\"0 0 16 16\" width=\"16\">\n <g fill=\"#212934\" fillRule=\"evenodd\">\n <path d=\"m2 7h11v1h-11z\" />\n <path d=\"m2 13h11v1h-11z\" />\n <path d=\"m2 2h11v1h-11z\" />\n <path d=\"m7 8h1v5h-1z\" />\n <path d=\"m12 3h1v10h-1z\" />\n <path d=\"m2 3h1v10h-1z\" />\n </g>\n </svg>\n );\n};\n","import {\n IconClock16,\n IconDimensionData16,\n IconDimensionOrgUnit16,\n} from '@dhis2/ui';\nimport i18n from '@dhis2/d2-i18n';\nimport React from 'react';\nimport { AssignedCategoriesIcon } from '../assets/AssignedCategoriesIcon';\n\nexport const DIMENSION_ID_DATA = 'dx';\nexport const DIMENSION_ID_PERIOD = 'pe';\nexport const DIMENSION_ID_ORGUNIT = 'ou';\nexport const DIMENSION_ID_ORGUNIT_LEVEL = 'ouLevel';\nexport const DIMENSION_ID_ORGUNIT_GROUP = 'ouGroup';\nexport const DIMENSION_ID_ASSIGNED_CATEGORIES = 'co';\nexport const DIMENSION_PROP_NO_ITEMS = 'noItems';\n\nexport const getFixedDimensions = () => ({\n [DIMENSION_ID_DATA]: {\n id: DIMENSION_ID_DATA,\n name: i18n.t('Data'),\n iconName: 'DataIcon',\n icon: IconDimensionData16,\n },\n [DIMENSION_ID_PERIOD]: {\n id: DIMENSION_ID_PERIOD,\n name: i18n.t('Period'),\n iconName: 'PeriodIcon',\n icon: IconClock16,\n },\n [DIMENSION_ID_ORGUNIT]: {\n id: DIMENSION_ID_ORGUNIT,\n name: i18n.t('Organisation unit'),\n iconName: 'OrgUnitIcon',\n icon: IconDimensionOrgUnit16,\n },\n});\n\nexport const getDynamicDimensions = () => ({\n [DIMENSION_ID_ASSIGNED_CATEGORIES]: {\n id: DIMENSION_ID_ASSIGNED_CATEGORIES,\n name: i18n.t('Assigned Categories'),\n iconName: 'AssignedCategoriesIcon',\n icon: AssignedCategoriesIcon,\n [DIMENSION_PROP_NO_ITEMS]: true,\n },\n});\n\nexport const getPredefinedDimensions = () => ({\n ...getFixedDimensions(),\n ...getDynamicDimensions(),\n});\n\nexport const filterOutPredefinedDimensions = (dimensionIds: string[]) =>\n dimensionIds.filter(\n (dimensionId: string) =>\n !Object.keys(getPredefinedDimensions()).includes(dimensionId)\n );\n\nexport const getPredefinedDimensionProp = (\n dimensionId: string,\n propName: string\n) => ((getPredefinedDimensions() as any)[dimensionId] || {})[propName];\n\nexport const getDimensionById = (dimensionId: string) =>\n (getPredefinedDimensions() as any)[dimensionId];\n","import i18n from '@dhis2/d2-i18n';\n\nexport const formatList = (items: any) => {\n // Wrap Intl.ListFormat in try/catch as DHIS2 locales are not always ISO 639 compliant\n try {\n const formatter = new (Intl as any).ListFormat(i18n.language, {\n style: 'long',\n type: 'conjunction',\n });\n return formatter.format(items);\n } catch (error) {\n return items.join(', ');\n }\n};\n","// Axis\n\nexport const AXIS = {\n defaultValue: [],\n isValid: (axis: any) => Array.isArray(axis),\n};\n\n// Axis ids\n\nexport const AXIS_ID_COLUMNS = 'columns';\nexport const AXIS_ID_ROWS = 'rows';\nexport const AXIS_ID_FILTERS = 'filters';\nexport const AXIS_ID_YEAR_OVER_YEAR_SERIES = 'yearOverYearSeries';\nexport const AXIS_ID_YEAR_OVER_YEAR_CATEGORY = 'yearOverYearCategory';\n//export const AXIS_ID_POINTS_CATEGORY = 'pointsCategory'\n\nexport const DEFAULT_AXIS_IDS = [\n AXIS_ID_COLUMNS,\n AXIS_ID_ROWS,\n AXIS_ID_FILTERS,\n];\nexport const ALL_AXIS_IDS = [\n AXIS_ID_COLUMNS,\n AXIS_ID_ROWS,\n AXIS_ID_FILTERS,\n AXIS_ID_YEAR_OVER_YEAR_SERIES,\n AXIS_ID_YEAR_OVER_YEAR_CATEGORY,\n];\n","import { isObject } from 'lodash';\nimport { isString } from 'lodash';\n\n// Dimension\n\nexport const DIMENSION = {\n isValid: (dimension: any) => isObject(dimension),\n};\n\n// Props\n\nexport const DIMENSION_PROP_ID = {\n name: 'dimension',\n defaultValue: '',\n required: true,\n isValid: (prop: any) => isString(prop),\n};\n\nexport const DIMENSION_PROP_ITEMS = {\n name: 'items',\n defaultValue: [],\n required: false,\n isValid: (prop: any) => Array.isArray(prop),\n};\n\nexport const DIMENSION_PROP_FILTER = {\n name: 'filter',\n defaultValue: [],\n required: false,\n isValid: (prop: any) => isString(prop),\n};\n\nexport const DIMENSION_PROP_LEGEND_SET = {\n name: 'legendSet',\n defaultValue: [],\n required: false,\n isValid: (prop: any) => isString(prop),\n};\n\nexport const DIMENSION_PROP_PROGRAM_STAGE = {\n name: 'programStage',\n defaultValue: {},\n required: false,\n isValid: (prop: any) => isObject(prop),\n};\n\nexport const DIMENSION_PROP_REPETITION = {\n name: 'repetition',\n defaultValue: [],\n required: false,\n isValid: (prop: any) => Array.isArray(prop),\n};\n\nexport const DIMENSION_PROPS = [\n DIMENSION_PROP_ID,\n DIMENSION_PROP_ITEMS,\n DIMENSION_PROP_FILTER,\n DIMENSION_PROP_LEGEND_SET,\n DIMENSION_PROP_PROGRAM_STAGE,\n DIMENSION_PROP_REPETITION,\n];\n","import { DIMENSION_PROP_ID } from './dimension';\n\nexport const dimensionIs = (dimension: any, dimensionId: string) =>\n dimension[DIMENSION_PROP_ID.name] === dimensionId;\n","import { AXIS } from './axis';\nimport { dimensionIs } from './dimensionIs';\n\nexport const axisGetDimension = (axis: any, dimensionId: string) =>\n AXIS.isValid(axis) &&\n axis.find((dimension: any) => dimensionIs(dimension, dimensionId));\n","import { axisGetDimension } from './axisGetDimension';\n\nexport const axisHasDimension = (axis: any, dimensionId: string) =>\n Boolean(axisGetDimension(axis, dimensionId));\n","import { DEFAULT_AXIS_IDS } from './axis';\nimport { axisHasDimension } from './axisHasDimension';\nimport { dimensionIs } from './dimensionIs';\n\nexport const layoutReplaceDimension = (\n layout: any,\n dimensionId: any,\n items: any\n) => {\n const axisId = DEFAULT_AXIS_IDS.find((a) =>\n axisHasDimension(layout[a], dimensionId)\n );\n\n if (!axisId) {\n return Object.assign({}, layout);\n }\n\n const newAxisDimensions = layout[axisId].map((dimension: any) => {\n if (dimensionIs(dimension, dimensionId)) {\n return Object.assign({}, dimension, { items });\n }\n return dimension;\n });\n\n return Object.assign({}, layout, { [axisId]: newAxisDimensions });\n};\n","import { AXIS_ID_COLUMNS, AXIS_ID_ROWS, AXIS_ID_FILTERS } from './axis';\n\nexport const layoutGetAllAxes = (layout: any) => [\n layout[AXIS_ID_COLUMNS],\n layout[AXIS_ID_ROWS],\n layout[AXIS_ID_FILTERS],\n];\n","import { layoutGetAllAxes } from './layoutGetAllAxes';\n\nexport const layoutGetAllDimensions = (layout: any) =>\n layoutGetAllAxes(layout).reduce((allDimensions: any, axis: any) => {\n allDimensions.push(...axis);\n return allDimensions;\n }, []);\n","import { dimensionIs } from './dimensionIs';\nimport { layoutGetAllDimensions } from './layoutGetAllDimensions';\n\nexport const layoutGetDimension = (layout: any, dimensionId: string) =>\n layoutGetAllDimensions(layout).find((dimension: any) =>\n dimensionIs(dimension, dimensionId)\n );\n","import { DIMENSION, DIMENSION_PROP_ITEMS } from './dimension';\n\nexport const dimensionIsEmpty = (dimension: { [x: string]: any[] }) =>\n !(\n DIMENSION.isValid(dimension) &&\n DIMENSION_PROP_ITEMS.isValid(dimension[DIMENSION_PROP_ITEMS.name]) &&\n dimension[DIMENSION_PROP_ITEMS.name].length\n );\n","import { DIMENSION, DIMENSION_PROPS } from './dimension';\nimport { dimensionIsEmpty } from './dimensionIsEmpty';\n\nexport const dimensionIsValid = (\n dimension: { [x: string]: unknown },\n { requireItems }: any = {}\n) => {\n if (!DIMENSION.isValid(dimension)) {\n return false;\n }\n\n const requiredProps = DIMENSION_PROPS.filter((prop) => prop.required);\n\n if (!requiredProps.every((prop) => prop.isValid(dimension[prop.name]))) {\n return false;\n }\n\n if (\n requireItems === true &&\n dimensionIsEmpty(dimension as { [x: string]: any[] })\n ) {\n return false;\n }\n\n return true;\n};\n","import { DIMENSION_PROP_ITEMS } from './dimension';\nimport { dimensionIsValid } from './dimensionIsValid';\n\nexport const dimensionGetItems = (dimension: any) =>\n dimensionIsValid(dimension, { requireItems: true })\n ? dimension[DIMENSION_PROP_ITEMS.name]\n : DIMENSION_PROP_ITEMS.defaultValue;\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './dimensionSelectorHelper';\nexport * from './predefinedDimensions';\nexport * from './list';\nexport * from './axis';\nexport * from './axisHasDimension';\nexport * from './dimension';\nexport * from './dimensionSelectorHelper';\nexport * from './layoutReplaceDimension';\nexport * from './layoutGetDimension';\nexport * from './layoutGetAllDimensions';\nexport * from './dimensionGetItems';\n","import { colors, spacers } from '@dhis2/ui';\n\nexport default `\n .filterContainer {\n display: flex;\n margin-bottom: ${spacers.dp12};\n margin-top: ${spacers.dp8};\n }\n .emptyList {\n text-align: center;\n font-size: 14px;\n line-height: 16px;\n margin: ${spacers.dp24} 0 0;\n color: ${colors.grey700};\n }\n .rightHeader {\n font-size: 14px;\n font-weight: 400;\n }\n .leftHeader {\n padding: ${spacers.dp12} ${spacers.dp4};\n }\n .info-container {\n display: flex;\n margin-bottom: ${spacers.dp8};\n padding: ${spacers.dp8};\n background-color: ${colors.grey200};\n border-radius: 3px;\n }\n .info-text {\n padding-left: ${spacers.dp8};\n color: ${colors.grey900};\n font-size: 12px;\n line-height: 16px;\n }\n .calculation-button {\n margin: ${spacers.dp8} 0;\n }\n`;\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './DimensionSelector.style';\n","import { IconEdit16, Tooltip, colors, spacers, theme } from '@dhis2/ui';\nimport cx from 'classnames';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nexport const TransferOption = ({\n disabled,\n label,\n highlighted,\n selected,\n onClick,\n onDoubleClick,\n value,\n icon,\n active,\n tooltipText,\n dataTest,\n onEditClick,\n}: any) => {\n const renderContent = () => (\n <div\n className={cx('chip', {\n highlighted,\n disabled,\n selected,\n inactive: active !== undefined && !active,\n })}\n data-test={`${dataTest}-content`}\n onClick={(event) => {\n if (disabled) {\n return;\n }\n onClick({ label, value }, event);\n }}\n onDoubleClick={(event) => {\n if (disabled) {\n return;\n }\n onDoubleClick({ label, value }, event);\n }}\n >\n <span className=\"icon\">{icon}</span>\n <span className=\"label\">{label}</span>\n {onEditClick && (\n <span\n className=\"edit\"\n onClick={(e) => {\n e.stopPropagation();\n onEditClick();\n }}\n data-test={`${dataTest}-edit-button`}\n >\n <IconEdit16 />\n </span>\n )}\n\n <style jsx>{`\n .wrapper:last-child {\n margin-bottom: ${spacers.dp4};\n }\n .chip {\n display: inline-flex;\n background: ${colors.grey200};\n font-size: 14px;\n line-height: 16px;\n padding: 2px ${spacers.dp8} 2px ${spacers.dp4};\n margin: ${spacers.dp4} ${spacers.dp8} 0 ${spacers.dp8};\n border-radius: 3px;\n user-select: none;\n }\n\n .chip:hover {\n background: ${colors.grey300};\n }\n\n .selected {\n background: ${theme.secondary100};\n color: ${theme.secondary900};\n }\n\n .selected :global(.icon path) {\n fill: ${theme.secondary700};\n }\n\n .selected:hover {\n background: #c9edeb;\n }\n\n .highlighted,\n .highlighted:hover {\n background: ${theme.secondary800};\n color: ${colors.white};\n }\n\n .highlighted :global(.icon path) {\n fill: ${colors.white};\n }\n\n .disabled {\n opacity: 0.3;\n cursor: not-allowed;\n }\n\n .inactive {\n opacity: 0.3;\n }\n\n .icon,\n .label {\n line-height: 18px;\n }\n\n .icon {\n margin-right: ${spacers.dp4};\n display: inline-flex;\n vertical-align: text-bottom;\n padding-top: 1px;\n }\n\n .label {\n font-size: 14px;\n }\n\n .edit {\n height: 16px;\n margin-top: 1px;\n margin-left: ${spacers.dp8};\n cursor: pointer;\n }\n\n .edit:hover {\n background-color: rgba(0, 0, 0, 0.12);\n outline: 1px solid rgba(0, 0, 0, 0.12);\n border-radius: 3px;\n }\n\n .highlighted .edit:hover {\n background-color: rgba(255, 255, 255, 0.12);\n outline: 1px solid rgba(255, 255, 255, 0.12);\n }\n `}</style>\n </div>\n );\n\n return (\n <div data-value={value} data-test={dataTest} className=\"wrapper\">\n {tooltipText ? (\n <Tooltip\n key={`${value}`}\n content={tooltipText}\n placement={'top'}\n openDelay={750}\n closeDelay={150}\n >\n {renderContent()}\n </Tooltip>\n ) : (\n renderContent()\n )}\n </div>\n );\n};\n\nTransferOption.propTypes = {\n label: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n active: PropTypes.bool,\n dataTest: PropTypes.string,\n disabled: PropTypes.bool,\n highlighted: PropTypes.bool,\n icon: PropTypes.node,\n selected: PropTypes.bool,\n tooltipText: PropTypes.string,\n onClick: PropTypes.func,\n onDoubleClick: PropTypes.func,\n onEditClick: PropTypes.func,\n};\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nexport * from './transfer-option.component';\n","import { set } from 'lodash';\nimport { useEffect, useState, useRef } from 'react';\n\nconst generateClassName = (base: string) =>\n `${base}-${Math.random().toString(36).substr(2, 9)}`;\n\nconst convertStylesToCSS = (\n className: string,\n styles: any,\n parentSelector = ''\n): string => {\n let cssString = '';\n let mainBlock = parentSelector ? `${parentSelector} {` : `.${className} {`;\n\n for (const key in styles) {\n const value = styles[key];\n\n if (typeof value === 'object') {\n if (key.startsWith('@media')) {\n // Handle media queries\n cssString += `${key} { ${convertStylesToCSS(\n className,\n value,\n `.${className}`\n )} }`;\n } else if (key.startsWith('&')) {\n // Handle pseudo-classes and nested selectors\n const selector = key.replace('&', `.${className}`);\n cssString += convertStylesToCSS(className, value, selector);\n } else {\n // Handle nested elements (e.g., '& > div')\n cssString += convertStylesToCSS(\n className,\n value,\n `.${className} ${key}`\n );\n }\n } else {\n // Convert camelCase to kebab-case\n const cssKey = key.replace(\n /[A-Z]/g,\n (match) => `-${match.toLowerCase()}`\n );\n mainBlock += `${cssKey}: ${value}; `;\n }\n }\n\n mainBlock += '}';\n return mainBlock + ' ' + cssString;\n};\n\n// Custom hook for dynamic styles\nexport const useDynamicStyles = <T extends Record<string, any>>(\n stylesObj: T\n) => {\n const [classNames, setClassNames] = useState<{ [K in keyof T]: string }>(\n {} as any\n );\n\n useEffect(() => {\n const styleElements: HTMLStyleElement[] = [];\n const generatedClassNames = Object.keys(stylesObj).reduce((acc, key) => {\n const className = generateClassName(key);\n const styleElement = document.createElement('style');\n styleElement.innerHTML = convertStylesToCSS(className, stylesObj[key]);\n document.head.appendChild(styleElement);\n styleElements.push(styleElement);\n acc[key as keyof T] = className;\n return acc;\n }, {} as { [K in keyof T]: string });\n\n setClassNames(generatedClassNames);\n\n return () => {\n styleElements.forEach((el) => document.head.removeChild(el));\n };\n }, [stylesObj]);\n\n return classNames;\n};\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './dynamic-styles.hook';\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './utils';\nexport * from './styles';\nexport * from './components';\nexport * from './hooks';\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport { BreadcrumbItem } from '../models';\nimport React from 'react';\nimport { colors } from '@dhis2/ui';\nimport { useDynamicStyles } from '../../../shared';\n\nconst styles = {\n button: {\n // Reset button styles\n background: 'none',\n border: 'none',\n cursor: 'pointer',\n font: 'inherit',\n\n // Custom button styles\n fontSize: '14px',\n padding: '6px 4px',\n color: colors.grey800,\n borderRadius: '3px',\n\n '&:hover': {\n textDecoration: 'underline',\n color: 'black',\n },\n '&.selected': {\n color: 'black',\n },\n },\n};\n\nexport const BreadcrumbItemComponent = (props: {\n breadcrumb: BreadcrumbItem;\n onClick: () => void;\n}) => {\n const { breadcrumb, onClick } = props;\n const classes = useDynamicStyles(styles);\n\n return (\n <button\n type=\"button\"\n title={breadcrumb.label}\n className={[\n classes.button,\n breadcrumb.selected ? classes.button + '.selected' : null,\n ]\n .filter((cssClass) => cssClass !== null)\n .join(' ')}\n onClick={onClick}\n >\n {breadcrumb.label}\n </button>\n );\n};\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n inject,\n input,\n NgZone,\n Output,\n} from '@angular/core';\nimport { ReactWrapperModule } from '../../react-wrapper/react-wrapper.component';\nimport React from 'react';\nimport * as ReactDOM from 'react-dom/client';\nimport { BreadcrumbItem } from '../models';\nimport { BreadcrumbItemComponent } from '../components/breadcrumb-item.component';\nimport { useDynamicStyles } from '../../../shared';\nimport { colors, IconChevronRight16 } from '@dhis2/ui';\n\n@Component({\n selector: 'ng-dhis2-ui-breadcrumb',\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class BreadcrumbComponent extends ReactWrapperModule {\n #ngZone = inject(NgZone);\n breadcrumbs = input.required<BreadcrumbItem[]>();\n @Output() selectBreadcrumb = new EventEmitter<BreadcrumbItem>();\n override async ngAfterViewInit() {\n if (!this.elementRef) throw new Error('No element ref');\n this.reactDomRoot = ReactDOM.createRoot(this.elementRef.nativeElement);\n\n const breadcrumbStyles = {\n container: {\n display: 'flex',\n alignItems: 'center',\n },\n };\n\n this.component = () => {\n const classes = useDynamicStyles(breadcrumbStyles);\n return (\n <div className={classes.container}>\n {this.breadcrumbs().map((breadcrumb, index) => (\n <React.Fragment key={index}>\n <BreadcrumbItemComponent\n key={index}\n breadcrumb={breadcrumb}\n onClick={() => {\n this.#ngZone.run(() => {\n this.selectBreadcrumb.emit(breadcrumb);\n });\n }}\n />\n {index < this.breadcrumbs().length - 1 && (\n <IconChevronRight16 color={colors.grey800} />\n )}\n </React.Fragment>\n ))}\n </div>\n );\n };\n this.render();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { BreadcrumbComponent } from './containers/breadcrumb.component';\n\n@NgModule({\n declarations: [BreadcrumbComponent],\n imports: [CommonModule],\n exports: [BreadcrumbComponent],\n})\nexport class BreadcrumbModule {}\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './models';\nexport * from './breadcrumb.module';\nexport * from './containers/breadcrumb.component';\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport const DAILY = 'DAILY';\nexport const WEEKLY = 'WEEKLY';\nexport const WEEKLYWED = 'WEEKLYWED';\nexport const WEEKLYTHU = 'WEEKLYTHU';\nexport const WEEKLYSAT = 'WEEKLYSAT';\nexport const WEEKLYSUN = 'WEEKLYSUN';\nexport const WEEKS_THIS_YEAR = 'WEEKS_THIS_YEAR';\nexport const BIWEEKLY = 'BIWEEKLY';\nexport const MONTHLY = 'MONTHLY';\nexport const BIMONTHLY = 'BIMONTHLY';\nexport const QUARTERLY = 'QUARTERLY';\nexport const SIXMONTHLY = 'SIXMONTHLY';\nexport const SIXMONTHLYAPR = 'SIXMONTHLYAPR';\nexport const YEARLY = 'YEARLY';\nexport const FINANCIAL = 'FINANCIAL';\nexport const FYNOV = 'FYNOV';\nexport const FYOCT = 'FYOCT';\nexport const FYJUL = 'FYJUL';\nexport const FYAPR = 'FYAPR';\n","import i18n from '@dhis2/d2-i18n';\nimport {\n DAILY,\n WEEKLY,\n BIWEEKLY,\n WEEKS_THIS_YEAR,\n MONTHLY,\n BIMONTHLY,\n QUARTERLY,\n SIXMONTHLY,\n FINANCIAL,\n YEARLY,\n} from './periodTypes';\n\nconst getDaysPeriodType = () => [\n { id: 'TODAY', name: i18n.t('Today') },\n { id: 'YESTERDAY', name: i18n.t('Yesterday') },\n { id: 'LAST_3_DAYS', name: i18n.t('Last 3 days') },\n { id: 'LAST_7_DAYS', name: i18n.t('Last 7 days') },\n { id: 'LAST_14_DAYS', name: i18n.t('Last 14 days') },\n { id: 'LAST_30_DAYS', name: i18n.t('Last 30 days') },\n { id: 'LAST_60_DAYS', name: i18n.t('Last 60 days') },\n { id: 'LAST_90_DAYS', name: i18n.t('Last 90 days') },\n { id: 'LAST_180_DAYS', name: i18n.t('Last 180 days') },\n];\n\nconst getWeeksPeriodType = () => [\n { id: 'THIS_WEEK', name: i18n.t('This week') },\n { id: 'LAST_WEEK', name: i18n.t('Last week') },\n { id: 'LAST_4_WEEKS', name: i18n.t('Last 4 weeks') },\n { id: 'LAST_12_WEEKS', name: i18n.t('Last 12 weeks') },\n { id: 'LAST_52_WEEKS', name: i18n.t('Last 52 weeks') },\n { id: WEEKS_THIS_YEAR, name: i18n.t('Weeks this year') },\n];\n\nconst getBiWeeksPeriodType = () => [\n { id: 'THIS_BIWEEK', name: i18n.t('This bi-week') },\n { id: 'LAST_BIWEEK', name: i18n.t('Last bi-week') },\n { id: 'LAST_4_BIWEEKS', name: i18n.t('Last 4 bi-weeks') },\n];\n\nconst getMonthsPeriodType = () => [\n { id: 'THIS_MONTH', name: i18n.t('This month') },\n { id: 'LAST_MONTH', name: i18n.t('Last month') },\n { id: 'LAST_3_MONTHS', name: i18n.t('Last 3 months') },\n { id: 'LAST_6_MONTHS', name: i18n.t('Last 6 months') },\n { id: 'LAST_12_MONTHS', name: i18n.t('Last 12 months') },\n {\n id: 'MONTHS_THIS_YEAR',\n name: i18n.t('Months this year'),\n },\n];\n\nconst getBiMonthsPeriodType = () => [\n { id: 'THIS_BIMONTH', name: i18n.t('This bi-month') },\n { id: 'LAST_BIMONTH', name: i18n.t('Last bi-month') },\n {\n id: 'LAST_6_BIMONTHS',\n name: i18n.t('Last 6 bi-months'),\n },\n {\n id: 'BIMONTHS_THIS_YEAR',\n name: i18n.t('Bi-months this year'),\n },\n];\n\nconst getQuartersPeriodType = () => [\n { id: 'THIS_QUARTER', name: i18n.t('This quarter') },\n { id: 'LAST_QUARTER', name: i18n.t('Last quarter') },\n { id: 'LAST_4_QUARTERS', name: i18n.t('Last 4 quarters') },\n {\n id: 'QUARTERS_THIS_YEAR',\n name: i18n.t('Quarters this year'),\n },\n];\n\nconst getSixMonthsPeriodType = () => [\n { id: 'THIS_SIX_MONTH', name: i18n.t('This six-month') },\n { id: 'LAST_SIX_MONTH', name: i18n.t('Last six-month') },\n {\n id: 'LAST_2_SIXMONTHS',\n name: i18n.t('Last 2 six-month'),\n },\n];\n\nconst getFinancialYearsPeriodType = () => [\n {\n id: 'THIS_FINANCIAL_YEAR',\n name: i18n.t('This financial year'),\n },\n {\n id: 'LAST_FINANCIAL_YEAR',\n name: i18n.t('Last financial year'),\n },\n {\n id: 'LAST_5_FINANCIAL_YEARS',\n name: i18n.t('Last 5 financial years'),\n },\n];\n\nconst getYearsPeriodType = () => [\n { id: 'THIS_YEAR', name: i18n.t('This year') },\n { id: 'LAST_YEAR', name: i18n.t('Last year') },\n { id: 'LAST_5_YEARS', name: i18n.t('Last 5 years') },\n { id: 'LAST_10_YEARS', name: i18n.t('Last 10 years') },\n];\n\nconst getOptions = () => [\n {\n id: DAILY,\n getPeriods: () => getDaysPeriodType(),\n name: i18n.t('Days'),\n },\n {\n id: WEEKLY,\n getPeriods: () => getWeeksPeriodType(),\n name: i18n.t('Weeks'),\n },\n {\n id: BIWEEKLY,\n getPeriods: () => getBiWeeksPeriodType(),\n name: i18n.t('Bi-weeks'),\n },\n {\n id: MONTHLY,\n getPeriods: () => getMonthsPeriodType(),\n name: i18n.t('Months'),\n },\n {\n id: BIMONTHLY,\n getPeriods: () => getBiMonthsPeriodType(),\n name: i18n.t('Bi-months'),\n },\n {\n id: QUARTERLY,\n getPeriods: () => getQuartersPeriodType(),\n name: i18n.t('Quarters'),\n },\n {\n id: SIXMONTHLY,\n getPeriods: () => getSixMonthsPeriodType(),\n name: i18n.t('Six-months'),\n },\n {\n id: FINANCIAL,\n getPeriods: () => getFinancialYearsPeriodType(),\n name: i18n.t('Financial Years'),\n },\n {\n id: YEARLY,\n getPeriods: () => getYearsPeriodType(),\n name: i18n.t('Years'),\n },\n];\n\nexport const getRelativePeriodsOptionsById = (id: string) =>\n getOptions().find((option) => option.id === id);\n\nexport const getRelativePeriodsOptions = () => getOptions();\n\nexport const getRelativePeriodIds = () =>\n Object.values(getOptions())\n .map((option) => option.getPeriods().map((period) => period.id))\n .flat();\n","import {\n generateFixedPeriods,\n getNowInCalendar,\n} from '@dhis2/multi-calendar-dates';\nimport i18n from '@dhis2/d2-i18n';\nimport {\n DAILY,\n WEEKLY,\n WEEKLYWED,\n WEEKLYTHU,\n WEEKLYSAT,\n WEEKLYSUN,\n BIWEEKLY,\n MONTHLY,\n BIMONTHLY,\n QUARTERLY,\n SIXMONTHLY,\n SIXMONTHLYAPR,\n YEARLY,\n FYNOV,\n FYOCT,\n FYJUL,\n FYAPR,\n} from './periodTypes';\n\nconst PERIOD_TYPE_REGEX = {\n [DAILY]: /^([0-9]{4})([0-9]{2})([0-9]{2})$/, // YYYYMMDD\n [WEEKLY]: /^([0-9]{4})()W([0-9]{1,2})$/, // YYYY\"W\"[1-53]\n [BIWEEKLY]: /^([0-9]{4})BiW([0-9]{1,2})$/, // YYYY\"BiW\"[1-27]\n [WEEKLYWED]: /^([0-9]{4})(Wed)W([0-9]{1,2})$/, // YYYY\"WedW\"[1-53]\n [WEEKLYTHU]: /^([0-9]{4})(Thu)W([0-9]{1,2})$/, // YYYY\"ThuW\"[1-53]\n [WEEKLYSAT]: /^([0-9]{4})(Sat)W([0-9]{1,2})$/, // YYYY\"SatW\"[1-53]\n [WEEKLYSUN]: /^([0-9]{4})(Sun)W([0-9]{1,2})$/, // YYYY\"SunW\"[1-53]\n [MONTHLY]: /^([0-9]{4})([0-9]{2})$/, // YYYYMM\n [BIMONTHLY]: /^([0-9]{4})([0-9]{2})B$/, // YYYY0[1-6]\"B\"\n [QUARTERLY]: /^([0-9]{4})Q([1234])$/, // YYYY\"Q\"[1-4]\n [SIXMONTHLY]: /^([0-9]{4})S([12])$/, // YYYY\"S\"[1/2]\n [SIXMONTHLYAPR]: /^([0-9]{4})AprilS([12])$/, // YYYY\"AprilS\"[1/2]\n // [SIXMONTHLYNOV]: /^([0-9]{4})NovS([12])$/, // YYYY\"NovS\"[1/2] Not supported?\n [YEARLY]: /^([0-9]{4})$/, // YYYY\n [FYNOV]: /^([0-9]{4})Nov$/, // YYYY\"Nov\"\n [FYOCT]: /^([0-9]{4})Oct$/, // YYYY\"Oct\"\n [FYJUL]: /^([0-9]{4})July$/, // YYYY\"July\"\n [FYAPR]: /^([0-9]{4})April$/, // YYYY\"April\"\n};\n\nconst getPeriods = ({\n periodType,\n config,\n fnFilter,\n periodSettings = {},\n}: any) => {\n const offset = parseInt(config.offset, 10);\n const isFilter = config.filterFuturePeriods;\n const isReverse = periodType.match(/^FY|YEARLY/)\n ? true\n : config.reversePeriods;\n\n const { calendar = 'gregory', locale = 'en' } = periodSettings as any;\n const now = getNowInCalendar(calendar);\n const year = (now.eraYear || now.year) + offset;\n\n const params = {\n periodType,\n year,\n calendar,\n locale,\n startingDay: config.startDay,\n };\n\n let periods = generateFixedPeriods(params);\n\n periods = isFilter ? fnFilter(periods) : periods;\n periods = !isReverse ? periods : periods.reverse();\n\n return periods;\n};\n\nconst getDailyPeriodType = (fnFilter: any, periodSettings?: any) => {\n return (config: any) => {\n return getPeriods({\n periodType: 'DAILY',\n config,\n fnFilter,\n periodSettings,\n });\n };\n};\n\nconst getWeeklyPeriodType = (\n weekObj: any,\n fnFilter: any,\n periodSettings: any\n) => {\n return (config: any) => {\n return getPeriods({\n periodType: 'WEEKLY',\n config: {\n ...config,\n startDay: weekObj.startDay,\n },\n fnFilter,\n periodSettings,\n });\n };\n};\n\nconst getBiWeeklyPeriodType = (fnFilter: any, periodSettings: any) => {\n return (config: any) => {\n return getPeriods({\n periodType: 'BIWEEKLY',\n config,\n fnFilter,\n periodSettings,\n });\n };\n};\n\nconst getMonthlyPeriodType = (fnFilter: any, periodSettings: any) => {\n return (config: any) => {\n return getPeriods({\n periodType: 'MONTHLY',\n config,\n fnFilter,\n periodSettings,\n });\n };\n};\n\nconst getBiMonthlyPeriodType = (fnFilter: any, periodSettings: any) => {\n return (config: any) => {\n return getPeriods({\n periodType: 'BIMONTHLY',\n config,\n fnFilter,\n periodSettings,\n });\n };\n};\n\nconst getQuarterlyPeriodType = (fnFilter: any, periodSettings: any) => {\n return (config: any) => {\n return getPeriods({\n periodType: 'QUARTERLY',\n config,\n fnFilter,\n periodSettings,\n });\n };\n};\n\nconst getSixMonthlyPeriodType = (fnFilter: any, periodSettings: any) => {\n return (config: any) => {\n return getPeriods({\n periodType: 'SIXMONTHLY',\n config,\n fnFilter,\n periodSettings,\n });\n };\n};\n\nconst getSixMonthlyAprilPeriodType = (fnFilter: any, periodSettings: any) => {\n return (config: any) => {\n return getPeriods({\n periodType: 'SIXMONTHLYAPR',\n config,\n fnFilter,\n periodSettings,\n });\n };\n};\n\nconst getYearlyPeriodType = (fnFilter: any, periodSettings: any) => {\n return (config: any) => {\n return getPeriods({\n periodType: 'YEARLY',\n config,\n fnFilter,\n periodSettings,\n });\n };\n};\n\nconst getFinancialOctoberPeriodType = (fnFilter: any, periodSettings: any) => {\n return (config: any) => {\n return getPeriods({\n periodType: 'FYOCT',\n config,\n fnFilter,\n periodSettings,\n });\n };\n};\n\nconst getFinancialNovemberPeriodType = (fnFilter: any, periodSettings: any) => {\n return (config: any) => {\n return getPeriods({\n periodType: 'FYNOV',\n config,\n fnFilter,\n periodSettings,\n });\n };\n};\n\nconst getFinancialJulyPeriodType = (fnFilter: any, periodSettings: any) => {\n return (config: any) => {\n return getPeriods({\n periodType: 'FYJUL',\n config,\n fnFilter,\n periodSettings,\n });\n };\n};\n\nconst getFinancialAprilPeriodType = (fnFilter: any, periodSettings: any) => {\n return (config: any) => {\n return getPeriods({\n periodType: 'FYAPR',\n config,\n fnFilter,\n periodSettings,\n });\n };\n};\n\nconst filterFuturePeriods = (periods: any) => {\n const array = [];\n const now = new Date(Date.now());\n\n for (let i = 0; i < periods.length; i++) {\n if (new Date(periods[i].startDate) <= now) {\n array.push(periods[i]);\n }\n }\n\n return array;\n};\n\nconst getOptions = (periodSettings?: any) => {\n return [\n {\n id: DAILY,\n getPeriods: getDailyPeriodType(filterFuturePeriods, periodSettings),\n name: i18n.t('Daily'),\n },\n {\n id: WEEKLY,\n getPeriods: getWeeklyPeriodType(\n { startDay: 1 },\n filterFuturePeriods,\n periodSettings\n ),\n name: i18n.t('Weekly'),\n },\n {\n id: WEEKLYWED,\n getPeriods: getWeeklyPeriodType(\n { startDay: 3 },\n filterFuturePeriods,\n periodSettings\n ),\n name: i18n.t('Weekly (Start Wednesday)'),\n },\n {\n id: WEEKLYTHU,\n getPeriods: getWeeklyPeriodType(\n { startDay: 4 },\n filterFuturePeriods,\n periodSettings\n ),\n name: i18n.t('Weekly (Start Thursday)'),\n },\n {\n id: WEEKLYSAT,\n getPeriods: getWeeklyPeriodType(\n { startDay: 6 },\n filterFuturePeriods,\n periodSettings\n ),\n name: i18n.t('Weekly (Start Saturday)'),\n },\n {\n id: WEEKLYSUN,\n getPeriods: getWeeklyPeriodType(\n { startDay: 7 },\n filterFuturePeriods,\n periodSettings\n ),\n name: i18n.t('Weekly (Start Sunday)'),\n },\n {\n id: BIWEEKLY,\n getPeriods: getBiWeeklyPeriodType(filterFuturePeriods, periodSettings),\n name: i18n.t('Bi-weekly'),\n },\n {\n id: MONTHLY,\n getPeriods: getMonthlyPeriodType(filterFuturePeriods, periodSettings),\n name: i18n.t('Monthly'),\n },\n {\n id: BIMONTHLY,\n getPeriods: getBiMonthlyPeriodType(filterFuturePeriods, periodSettings),\n name: i18n.t('Bi-monthly'),\n },\n {\n id: QUARTERLY,\n getPeriods: getQuarterlyPeriodType(filterFuturePeriods, periodSettings),\n name: i18n.t('Quarterly'),\n },\n {\n id: SIXMONTHLY,\n getPeriods: getSixMonthlyPeriodType(filterFuturePeriods, periodSettings),\n name: i18n.t('Six-monthly'),\n },\n {\n id: SIXMONTHLYAPR,\n getPeriods: getSixMonthlyAprilPeriodType(\n filterFuturePeriods,\n periodSettings\n ),\n name: i18n.t('Six-monthly April'),\n },\n {\n id: YEARLY,\n getPeriods: getYearlyPeriodType(filterFuturePeriods, periodSettings),\n name: i18n.t('Yearly'),\n },\n {\n id: FYNOV,\n getPeriods: getFinancialNovemberPeriodType(\n filterFuturePeriods,\n periodSettings\n ),\n name: i18n.t('Financial year (Start November)'),\n },\n {\n id: FYOCT,\n getPeriods: getFinancialOctoberPeriodType(\n filterFuturePeriods,\n periodSettings\n ),\n name: i18n.t('Financial year (Start October)'),\n },\n {\n id: FYJUL,\n getPeriods: getFinancialJulyPeriodType(\n filterFuturePeriods,\n periodSettings\n ),\n name: i18n.t('Financial year (Start July)'),\n },\n {\n id: FYAPR,\n getPeriods: getFinancialAprilPeriodType(\n filterFuturePeriods,\n periodSettings\n ),\n name: i18n.t('Financial year (Start April)'),\n },\n ];\n};\n\nexport const getFixedPeriodsOptionsById = (\n id: string,\n periodSettings?: any\n) => {\n return getOptions(periodSettings).find((option) => option.id === id);\n};\n\nexport const getFixedPeriodsOptions = () => getOptions();\n\nexport const getYearOffsetFromNow = (yearStr: any) =>\n parseInt(yearStr) - new Date(Date.now()).getFullYear();\n\nexport const parsePeriodCode = (code: any, allowedTypes: any) => {\n const periodTypes = Object.keys(PERIOD_TYPE_REGEX);\n let i = 0;\n let type = '';\n let match = undefined;\n\n while (i < periodTypes.length && !match) {\n type = periodTypes[i];\n match = code.match((PERIOD_TYPE_REGEX as any)[type]);\n i++;\n }\n\n if (\n !match ||\n (Array.isArray(allowedTypes) && !allowedTypes.some((t) => t === type))\n ) {\n return undefined;\n }\n\n const period = getFixedPeriodsOptionsById(type);\n const offset = getYearOffsetFromNow(match[1]);\n const options = period?.getPeriods({ offset });\n\n return period\n ? {\n id: period.id,\n name: period.name,\n year: match[1],\n options,\n }\n : null;\n};\n","export const filterPeriodTypesById = (\n allPeriodTypes = [],\n excludedPeriodTypes = []\n) =>\n allPeriodTypes.filter(\n (period: unknown) => !excludedPeriodTypes.includes((period as never)['id'])\n );\n\nexport * from './relativePeriods';\nexport * from './fixedPeriods';\nexport * from './periodTypes';\n","import i18n from '@dhis2/d2-i18n';\nimport {\n InputField,\n SingleSelectField,\n SingleSelectOption,\n spacers,\n} from '@dhis2/ui';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { filterPeriodTypesById, getFixedPeriodsOptions } from './utils';\n\nconst FixedPeriodFilter = ({\n allowedPeriodTypes,\n excludedPeriodTypes,\n currentPeriodType,\n currentYear,\n onSelectPeriodType,\n onSelectYear,\n dataTest,\n}: any) => {\n const onlyAllowedTypeIsSelected =\n Array.isArray(allowedPeriodTypes) &&\n allowedPeriodTypes.length === 1 &&\n allowedPeriodTypes[0] === currentPeriodType;\n\n return (\n <>\n <div className=\"leftSection\">\n <SingleSelectField\n label={i18n.t('Period type')}\n onChange={({ selected }: any) => onSelectPeriodType(selected)}\n dense\n selected={currentPeriodType}\n disabled={onlyAllowedTypeIsSelected}\n className=\"filterElement\"\n dataTest={`${dataTest}-period-type`}\n >\n {(allowedPeriodTypes\n ? getFixedPeriodsOptions().filter((option: any) =>\n allowedPeriodTypes.some((type: any) => type === option.id)\n )\n : filterPeriodTypesById(\n getFixedPeriodsOptions() as any,\n excludedPeriodTypes\n )\n ).map((option) => (\n <SingleSelectOption\n key={crypto.randomUUID() || option.id}\n value={option.id}\n label={option.name}\n dataTest={`${dataTest}-period-type-option-${option.id}`}\n />\n ))}\n </SingleSelectField>\n </div>\n <div className=\"rightSection\">\n <InputField\n label={i18n.t('Year')}\n className=\"filterElement\"\n type=\"number\"\n placeholder={i18n.t('Select year')}\n value={currentYear}\n onChange={({ value }: any) => onSelectYear(value)}\n dense\n dataTest={`${dataTest}-year`}\n ></InputField>\n </div>\n <style jsx>{`\n .leftSection {\n flex-grow: 1;\n }\n .leftSection > :global(.filterElement),\n .rightSection > :global(.filterElement) {\n margin: 0;\n }\n .rightSection {\n width: 120px;\n margin-left: ${spacers.dp8};\n }\n `}</style>\n </>\n );\n};\n\nFixedPeriodFilter.defaultProps = {\n excludedPeriodTypes: [],\n};\n\nFixedPeriodFilter.propTypes = {\n currentPeriodType: PropTypes.string.isRequired,\n currentYear: PropTypes.string.isRequired,\n onSelectPeriodType: PropTypes.func.isRequired,\n onSelectYear: PropTypes.func.isRequired,\n allowedPeriodTypes: PropTypes.arrayOf(PropTypes.string),\n dataTest: PropTypes.string,\n excludedPeriodTypes: PropTypes.arrayOf(PropTypes.string),\n};\n\nexport default FixedPeriodFilter;\n","import { SingleSelectField, SingleSelectOption } from '@dhis2/ui';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport i18n from '@dhis2/d2-i18n';\nimport { filterPeriodTypesById, getRelativePeriodsOptions } from './utils';\nimport { spacers } from '@dhis2/ui';\n\nexport const RelativePeriodFilter = ({\n currentFilter,\n onSelectFilter,\n dataTest,\n excludedPeriodTypes,\n}: any) => (\n <div className=\"leftSection\">\n <SingleSelectField\n label={i18n.t('Period type')}\n onChange={({ selected }: any) => onSelectFilter(selected)}\n dense\n selected={currentFilter}\n className=\"filterElement\"\n dataTest={dataTest}\n >\n {filterPeriodTypesById(\n getRelativePeriodsOptions() as any,\n excludedPeriodTypes\n ).map((option: any) => (\n <SingleSelectOption\n key={crypto.randomUUID() || option.id}\n value={option.id}\n label={option.name}\n dataTest={`${dataTest}-option-${option.id}`}\n />\n ))}\n </SingleSelectField>\n <style jsx>{`\n .leftSection {\n flex-grow: 1;\n }\n .leftSection > :global(.filterElement),\n .rightSection > :global(.filterElement) {\n margin: 0;\n }\n .rightSection {\n width: 120px;\n margin-left: ${spacers.dp8};\n }\n `}</style>\n </div>\n);\n\nRelativePeriodFilter.propTypes = {\n currentFilter: PropTypes.string.isRequired,\n onSelectFilter: PropTypes.func.isRequired,\n dataTest: PropTypes.string,\n excludedPeriodTypes: PropTypes.arrayOf(PropTypes.string),\n};\n","import React from 'react';\n\nexport default (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n >\n <path\n fill=\"#6E7A8A\"\n d=\"M8,4 C10.209139,4 12,5.790861 12,8 C12,10.209139 10.209139,12 8,12 C5.790861,12 4,10.209139 4,8 C4,5.790861 5.790861,4 8,4 Z M8,5 C6.34314575,5 5,6.34314575 5,8 C5,9.65685425 6.34314575,11 8,11 C9.65685425,11 11,9.65685425 11,8 C11,6.34314575 9.65685425,5 8,5 Z M8.5,6 L8.5,7.5 L9.5,7.5 L9.5,8.5 L7.5,8.5 L7.5,6 L8.5,6 Z\"\n />\n </svg>\n);\n","import { getNowInCalendar } from '@dhis2/multi-calendar-dates';\nimport { TabBar, Tab, Transfer } from '@dhis2/ui';\nimport PropTypes from 'prop-types';\nimport React, { useState } from 'react';\nimport i18n from '@dhis2/d2-i18n';\nimport {\n TRANSFER_HEIGHT,\n TRANSFER_OPTIONS_WIDTH,\n TRANSFER_SELECTED_WIDTH,\n TransferOption,\n} from '../../../shared';\nimport styles from '../../../shared/styles/DimensionSelector.style';\nimport FixedPeriodFilter from './FixedPeriodFilter';\nimport { RelativePeriodFilter } from './RelativePeriodFilter';\n\nimport {\n MONTHLY,\n QUARTERLY,\n getRelativePeriodsOptionsById,\n getFixedPeriodsOptionsById,\n} from './utils';\nimport PeriodIcon from '../../../shared/assets/DimensionItemIcons/PeriodIcon';\n\nconst PeriodTransfer = ({\n onSelect,\n dataTest,\n initialSelectedPeriods,\n rightFooter,\n excludedPeriodTypes,\n periodsSettings,\n}: any) => {\n const defaultRelativePeriodType = excludedPeriodTypes.includes(MONTHLY)\n ? getRelativePeriodsOptionsById(QUARTERLY)\n : getRelativePeriodsOptionsById(MONTHLY);\n const defaultFixedPeriodType = excludedPeriodTypes.includes(MONTHLY)\n ? getFixedPeriodsOptionsById(QUARTERLY, periodsSettings)\n : getFixedPeriodsOptionsById(MONTHLY, periodsSettings);\n\n const now = getNowInCalendar(periodsSettings.calendar);\n // use \".eraYear\" rather than \".year\" because in Ethiopian calendar, eraYear is what our users expect to see (for other calendars, it doesn't matter)\n // there is still a pending decision in Temporal regarding which era to use by default: https://github.com/js-temporal/temporal-polyfill/blob/9350ee7dd0d29f329fc097debf923a517c32f813/lib/calendar.ts#L1964\n const defaultFixedPeriodYear = now.eraYear || now.year;\n\n const fixedPeriodConfig = (year: any) => ({\n offset: year - defaultFixedPeriodYear,\n filterFuturePeriods: false,\n reversePeriods: false,\n });\n\n const [allPeriods, setAllPeriods] = useState(\n defaultRelativePeriodType?.getPeriods() || []\n );\n const [selectedPeriods, setSelectedPeriods] = useState(\n initialSelectedPeriods\n );\n const [isRelative, setIsRelative] = useState(true);\n const [relativeFilter, setRelativeFilter] = useState({\n periodType: defaultRelativePeriodType?.id || '',\n });\n const [fixedFilter, setFixedFilter] = useState({\n periodType: defaultFixedPeriodType?.id || '',\n year: defaultFixedPeriodYear.toString(),\n });\n\n const onIsRelativeClick = (state: any) => {\n if (state !== isRelative) {\n setIsRelative(state);\n setAllPeriods(\n state\n ? getRelativePeriodsOptionsById(\n relativeFilter.periodType\n )?.getPeriods() || []\n : getFixedPeriodsOptionsById(\n fixedFilter.periodType,\n periodsSettings\n )?.getPeriods(fixedPeriodConfig(Number(fixedFilter.year))) || []\n );\n }\n };\n\n const renderLeftHeader = () => (\n <>\n <TabBar>\n <Tab\n selected={isRelative}\n onClick={() => onIsRelativeClick(true)}\n dataTest={`${dataTest}-relative-periods-button`}\n >\n {i18n.t('Relative periods')}\n </Tab>\n <Tab\n selected={!isRelative}\n onClick={() => onIsRelativeClick(false)}\n dataTest={`${dataTest}-fixed-periods-button`}\n >\n {i18n.t('Fixed periods')}\n </Tab>\n </TabBar>\n <div className=\"filterContainer\">\n {isRelative ? (\n <RelativePeriodFilter\n currentFilter={relativeFilter.periodType}\n onSelectFilter={(filter: any) => {\n setRelativeFilter({ periodType: filter });\n setAllPeriods(\n getRelativePeriodsOptionsById(filter)?.getPeriods() || []\n );\n }}\n dataTest={`${dataTest}-relative-period-filter`}\n excludedPeriodTypes={excludedPeriodTypes}\n />\n ) : (\n <FixedPeriodFilter\n currentPeriodType={fixedFilter.periodType}\n currentYear={fixedFilter.year}\n onSelectPeriodType={(periodType: string) => {\n onSelectFixedPeriods({\n periodType,\n year: fixedFilter.year,\n });\n }}\n onSelectYear={(year: any) => {\n onSelectFixedPeriods({\n periodType: fixedFilter.periodType,\n year,\n });\n }}\n dataTest={`${dataTest}-fixed-period-filter`}\n excludedPeriodTypes={excludedPeriodTypes}\n />\n )}\n </div>\n <style jsx>{styles}</style>\n </>\n );\n\n const renderRightHeader = () => (\n <>\n <p className=\"rightHeader\">{i18n.t('Selected Periods')}</p>\n <style jsx>{styles}</style>\n </>\n );\n\n const onSelectFixedPeriods = (filter: any) => {\n setFixedFilter(filter);\n setAllPeriods(\n (getFixedPeriodsOptionsById(\n filter.periodType,\n periodsSettings\n )?.getPeriods(fixedPeriodConfig(Number(filter.year))) || []) as any\n );\n };\n\n const renderEmptySelection = () => (\n <>\n <p className=\"emptyList\">{i18n.t('No periods selected')}</p>\n <style jsx>{styles}</style>\n </>\n );\n\n return (\n <Transfer\n onChange={({ selected }: any) => {\n const formattedItems = selected.map((id: string) => ({\n id,\n name: [...allPeriods, ...selectedPeriods].find(\n (item) => item.id === id\n ).name,\n }));\n setSelectedPeriods(formattedItems);\n onSelect(formattedItems);\n }}\n selected={selectedPeriods.map((period: any) => period.id)}\n leftHeader={renderLeftHeader()}\n enableOrderChange\n height={TRANSFER_HEIGHT}\n optionsWidth={TRANSFER_OPTIONS_WIDTH}\n selectedWidth={TRANSFER_SELECTED_WIDTH}\n selectedEmptyComponent={renderEmptySelection()}\n rightHeader={renderRightHeader()}\n rightFooter={rightFooter}\n options={[...allPeriods, ...selectedPeriods].map(({ id, name }) => ({\n label: name,\n value: id,\n }))}\n renderOption={(props: any) => (\n <TransferOption\n {...props}\n icon={PeriodIcon}\n dataTest={`${dataTest}-transfer-option`}\n />\n )}\n dataTest={`${dataTest}-transfer`}\n ></Transfer>\n );\n};\n\nPeriodTransfer.defaultProps = {\n initialSelectedPeriods: [],\n excludedPeriodTypes: [],\n periodsSettings: {\n calendar: 'gregory',\n locale: 'en',\n },\n};\n\nPeriodTransfer.propTypes = {\n onSelect: PropTypes.func.isRequired,\n dataTest: PropTypes.string,\n excludedPeriodTypes: PropTypes.arrayOf(PropTypes.string),\n initialSelectedPeriods: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string,\n })\n ),\n periodsSettings: PropTypes.shape({\n calendar: PropTypes.string,\n locale: PropTypes.string,\n }),\n rightFooter: PropTypes.node,\n};\n\nexport default PeriodTransfer;\n","import { useDataQuery } from '@dhis2/app-runtime';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { DIMENSION_ID_PERIOD } from '../../../shared/utils/predefinedDimensions';\nimport PeriodTransfer from './PeriodTransfer';\n\nconst userSettingsQuery = {\n userSettings: {\n resource: 'userSettings',\n params: {\n key: ['keyUiLocale'],\n },\n },\n};\n\nexport const PeriodDimension = ({\n onSelect,\n selectedPeriods,\n rightFooter,\n excludedPeriodTypes,\n systemInfo,\n}: any) => {\n const result = useDataQuery(userSettingsQuery);\n\n const { calendar = 'gregory' } = systemInfo as any;\n // const { data: { userSettings: { keyUiLocale: locale } = {} } = {} } =\n // result as any;\n\n const locale =\n result.data && result.data['userSettings']\n ? (result.data['userSettings'] as any)['keyUiLocale']\n : '';\n\n const periodsSettings = { calendar, locale };\n\n const selectPeriods = (periods: any[]) => {\n onSelect({\n dimensionId: DIMENSION_ID_PERIOD,\n items: periods,\n });\n };\n return (\n <PeriodTransfer\n onSelect={selectPeriods}\n initialSelectedPeriods={selectedPeriods}\n rightFooter={rightFooter}\n dataTest={'period-dimension'}\n excludedPeriodTypes={excludedPeriodTypes}\n periodsSettings={periodsSettings}\n />\n );\n};\n\nPeriodDimension.propTypes = {\n onSelect: PropTypes.func.isRequired,\n excludedPeriodTypes: PropTypes.arrayOf(PropTypes.string),\n rightFooter: PropTypes.node,\n selectedPeriods: PropTypes.array,\n systemInfo: PropTypes.object,\n};\n\nPeriodDimension.defaultProps = {\n selectedPeriods: [],\n};\n","import {\n Component,\n Input,\n ElementRef,\n Output,\n EventEmitter,\n} from '@angular/core';\nimport { DataProvider } from '@dhis2/app-runtime';\nimport {\n Modal,\n ModalContent,\n ModalActions,\n ButtonStrip,\n Button,\n ModalTitle,\n} from '@dhis2/ui';\nimport { NgxDhis2HttpClientService } from '@iapps/ngx-dhis2-http-client';\nimport React, { useState } from 'react';\nimport * as ReactDOM from 'react-dom/client';\nimport { firstValueFrom } from 'rxjs';\nimport { PeriodDimension } from '../../components/PeriodDimension';\nimport {\n BIMONTHLY,\n BIWEEKLY,\n DAILY,\n MONTHLY,\n WEEKLY,\n WEEKLYSAT,\n WEEKLYSUN,\n WEEKLYTHU,\n WEEKLYWED,\n} from '../../components/utils';\nimport { ReactWrapperModule } from '../../../react-wrapper/react-wrapper.component';\n\ntype PeriodSelectionEvent = {\n dimensionId: string;\n items: Record<string, unknown>[];\n};\n\n@Component({\n selector: 'ng-dhis2-ui-period-selector-modal',\n template: `<ng-container></ng-container>`,\n styles: [\n `\n ::ng-deep .layer {\n z-index: 2 !important;\n }\n `,\n ],\n standalone: false,\n})\nexport class PeriodSelectorModalComponent extends ReactWrapperModule {\n @Input() selectedPeriods: any[] = [];\n\n @Output() cancel = new EventEmitter();\n @Output() confirm = new EventEmitter();\n\n constructor(\n elementRef: ElementRef<HTMLElement>,\n private httpClient: NgxDhis2HttpClientService\n ) {\n super(elementRef);\n }\n\n override async ngAfterViewInit() {\n if (!this.elementRef) throw new Error('No element ref');\n this.reactDomRoot = ReactDOM.createRoot(this.elementRef.nativeElement);\n const systemInfo = await firstValueFrom(this.httpClient.systemInfo());\n const excludedPeriodTypes = this.getExcludedPeriodTypes(systemInfo);\n\n this.component = () => {\n const [selected, setSelected] = useState(this.selectedPeriods);\n return (\n <DataProvider>\n {\n <Modal position=\"middle\" large>\n <ModalTitle>Period</ModalTitle>\n <ModalContent>\n <PeriodDimension\n selectedPeriods={selected}\n onSelect={(selectionEvent: PeriodSelectionEvent) =>\n setSelected(selectionEvent.items)\n }\n excludedPeriodTypes={excludedPeriodTypes}\n systemInfo={systemInfo}\n />\n </ModalContent>\n <ModalActions>\n <ButtonStrip end>\n <Button\n onClick={() => {\n this.onCancel();\n }}\n >\n Cancel\n </Button>\n <Button\n primary\n disabled={selected.length === 0}\n onClick={() => {\n this.onConfirm(selected);\n }}\n >\n Confirm\n </Button>\n </ButtonStrip>\n </ModalActions>\n </Modal>\n }\n </DataProvider>\n );\n };\n this.render();\n }\n\n onCancel() {\n this.cancel.emit();\n }\n\n onConfirm(selectedItems: any[]) {\n this.confirm.emit(selectedItems);\n }\n\n getExcludedPeriodTypes = (systemSettings: any = {}) => {\n const types = [];\n if (systemSettings['hideDailyPeriods']) {\n types.push(DAILY);\n }\n if (systemSettings['hideWeeklyPeriods']) {\n types.push(WEEKLY, WEEKLYWED, WEEKLYTHU, WEEKLYSAT, WEEKLYSUN);\n }\n if (systemSettings['hideBiWeeklyPeriods']) {\n types.push(BIWEEKLY);\n }\n if (systemSettings['hideMonthlyPeriods']) {\n types.push(MONTHLY);\n }\n if (systemSettings['hideBiMonthlyPeriods']) {\n types.push(BIMONTHLY);\n }\n return types;\n };\n}\n","import {\n Component,\n Input,\n ElementRef,\n Output,\n EventEmitter,\n NgZone,\n} from '@angular/core';\nimport { DataProvider } from '@dhis2/app-runtime';\nimport { NgxDhis2HttpClientService } from '@iapps/ngx-dhis2-http-client';\nimport React from 'react';\nimport * as ReactDOM from 'react-dom/client';\nimport { firstValueFrom } from 'rxjs';\nimport { PeriodDimension } from '../../components/PeriodDimension';\nimport {\n BIMONTHLY,\n BIWEEKLY,\n DAILY,\n MONTHLY,\n WEEKLY,\n WEEKLYSAT,\n WEEKLYSUN,\n WEEKLYTHU,\n WEEKLYWED,\n} from '../../components/utils';\nimport { ReactWrapperModule } from '../../../react-wrapper/react-wrapper.component';\n\ntype PeriodSelectionEvent = {\n dimensionId: string;\n items: Record<string, unknown>[];\n};\n\n@Component({\n selector: 'ng-dhis2-ui-period-selector',\n template: `<ng-container></ng-container>`,\n styles: [\n `\n ::ng-deep .content-container {\n z-index: 0 !important;\n }\n `,\n ],\n standalone: false,\n})\nexport class PeriodSelectorComponent extends ReactWrapperModule {\n @Input() selectedPeriods: any[] = [];\n\n @Output() selectPeriods = new EventEmitter();\n\n override props: Record<string, unknown> = {\n onSelect: (e: any) => {\n this.onSelectItems(e);\n },\n };\n\n constructor(\n elementRef: ElementRef<HTMLElement>,\n private httpClient: NgxDhis2HttpClientService,\n private ngZone: NgZone\n ) {\n super(elementRef);\n }\n\n override async ngAfterViewInit() {\n if (!this.elementRef) throw new Error('No element ref');\n this.reactDomRoot = ReactDOM.createRoot(this.elementRef.nativeElement);\n const systemInfo = await firstValueFrom(this.httpClient.systemInfo());\n const excludedPeriodTypes = this.getExcludedPeriodTypes(systemInfo);\n\n this.component = () => (\n <DataProvider>\n {\n <PeriodDimension\n selectedPeriods={this.selectedPeriods}\n onSelect={(selectionEvent: PeriodSelectionEvent) =>\n this.ngZone.run(() => {\n this.onSelectItems(selectionEvent);\n })\n }\n excludedPeriodTypes={excludedPeriodTypes}\n systemInfo={systemInfo}\n />\n }\n </DataProvider>\n );\n this.render();\n }\n\n onSelectItems(selectionEvent: PeriodSelectionEvent) {\n this.selectPeriods.emit(selectionEvent.items);\n }\n\n getExcludedPeriodTypes = (systemSettings: any = {}) => {\n const types = [];\n if (systemSettings['hideDailyPeriods']) {\n types.push(DAILY);\n }\n if (systemSettings['hideWeeklyPeriods']) {\n types.push(WEEKLY, WEEKLYWED, WEEKLYTHU, WEEKLYSAT, WEEKLYSUN);\n }\n if (systemSettings['hideBiWeeklyPeriods']) {\n types.push(BIWEEKLY);\n }\n if (systemSettings['hideMonthlyPeriods']) {\n types.push(MONTHLY);\n }\n if (systemSettings['hideBiMonthlyPeriods']) {\n types.push(BIMONTHLY);\n }\n return types;\n };\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SharedDhis2UiModule } from '../../shared/shared.module';\nimport { PeriodSelectorModalComponent } from './containers/period-selector-modal/period-selector-modal.component';\nimport { PeriodSelectorComponent } from './containers/period-selector/period-selector.component';\n\n@NgModule({\n imports: [CommonModule, SharedDhis2UiModule],\n declarations: [PeriodSelectorComponent, PeriodSelectorModalComponent],\n exports: [PeriodSelectorComponent, PeriodSelectorModalComponent],\n})\nexport class PeriodSelectorModule {}\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './period-selector.module';\nexport { PeriodSelectorComponent } from './containers/period-selector/period-selector.component';\nexport { PeriodSelectorModalComponent } from './containers/period-selector-modal/period-selector-modal.component';\n","const LEVEL_ID_PREFIX = 'LEVEL';\nconst GROUP_ID_PREFIX = 'OU_GROUP';\nexport const USER_ORG_UNIT = 'USER_ORGUNIT';\nexport const USER_ORG_UNIT_CHILDREN = 'USER_ORGUNIT_CHILDREN';\nexport const USER_ORG_UNIT_GRANDCHILDREN = 'USER_ORGUNIT_GRANDCHILDREN';\n\nconst hasGroupPrefix = (id: string) =>\n id.substr(0, GROUP_ID_PREFIX.length) === GROUP_ID_PREFIX;\n\nconst hasLevelPrefix = (id: string) => id.includes(LEVEL_ID_PREFIX);\n\nconst stripLevelPrefix = (id: string) =>\n hasLevelPrefix(id) ? id.substr(LEVEL_ID_PREFIX.length + 1) : id;\n\nconst stripGroupPrefix = (id: string) =>\n hasGroupPrefix(id) ? id.substr(GROUP_ID_PREFIX.length + 1) : id;\n\nconst removePrefix = (id: string) => stripGroupPrefix(stripLevelPrefix(id));\n\nexport const ouIdHelper = Object.freeze({\n addLevelPrefix: (id: string) => `${LEVEL_ID_PREFIX}-${removePrefix(id)}`,\n addGroupPrefix: (id: string) => `${GROUP_ID_PREFIX}-${removePrefix(id)}`,\n removePrefix,\n hasGroupPrefix,\n hasLevelPrefix,\n});\n","import {\n DIMENSION_ID_ORGUNIT,\n dimensionGetItems,\n layoutGetDimension,\n layoutReplaceDimension,\n} from '../../../../../shared';\n\nimport { ouIdHelper } from '../ouIdHelper';\n\nconst isOuLevelIntId = (id: string) =>\n ouIdHelper.hasLevelPrefix(id)\n ? Number.isInteger(parseInt(ouIdHelper.removePrefix(id), 10))\n : false;\n\nconst replaceNumericOuLevelWithUid = (ouLevels: any) => (item: any) => {\n if (!isOuLevelIntId(item.id)) {\n return item;\n }\n\n const ouIntId = parseInt(ouIdHelper.removePrefix(item.id), 10);\n const ouUid = ouLevels.find(\n (l: any) => parseInt(l.level, 10) === ouIntId\n )?.id;\n\n return ouUid\n ? Object.assign({}, item, { id: ouIdHelper.addLevelPrefix(ouUid) })\n : item;\n};\n\nexport const convertOuLevelsToUids = (ouLevels: any, layout: any) => {\n const ouDimension = layoutGetDimension(layout, DIMENSION_ID_ORGUNIT);\n\n const hasNumericOuLevels =\n ouDimension &&\n dimensionGetItems(ouDimension).some((item: any) => isOuLevelIntId(item.id));\n\n if (hasNumericOuLevels) {\n const replaceNumericOuLevel = replaceNumericOuLevelWithUid(ouLevels);\n\n const updatedOuItems = dimensionGetItems(ouDimension).map(\n replaceNumericOuLevel\n );\n\n return layoutReplaceDimension(layout, DIMENSION_ID_ORGUNIT, updatedOuItems);\n }\n\n return layout;\n};\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './ouIdHelper';\nexport * from './ouLevelUtils';\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nexport * from './OrgUnitDimension';\nexport * from './utils';\n","import { colors, spacers } from '@dhis2/ui';\n\nexport const styles = `\n .container {\n height: 100%;\n display: flex;\n flex-direction: column;\n }\n\n .orgUnitTreeWrapper {\n height: 382px;\n flex-grow: 1;\n overflow: auto;\n }\n\n .orgUnitTreeWrapper > :global(*) {\n flex-grow: 1;\n }\n\n .disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n\n .disabled > :global(*) {\n pointer-events: none;\n }\n\n .userOrgUnitsWrapper {\n display: flex;\n background: ${colors.grey200};\n padding: ${spacers.dp8} ${spacers.dp8} ${spacers.dp8} ${spacers.dp24};\n margin-bottom: ${spacers.dp12};\n }\n\n .userOrgUnitsWrapper > :global(*) {\n margin-right: ${spacers.dp48};\n }\n\n .selectsWrapper {\n display: flex;\n align-items: flex-start;\n gap: ${spacers.dp8};\n margin-top: ${spacers.dp12};\n }\n\n .selectsWrapper.hidden {\n display: none;\n }\n\n .selectsWrapper > :global(*) {\n width: 50%;\n }\n\n .summaryWrapper {\n display: inline-flex;\n align-items: center;\n margin-top: ${spacers.dp8};\n }\n\n .warningWrapper {\n display: inline-flex;\n align-items: center;\n }\n\n .warningText {\n margin-left: ${spacers.dp8};\n font-size: 14px;\n line-height: 18px;\n color: ${colors.red600};\n }\n\n .summaryText {\n font-size: 14px;\n line-height: 18px;\n color: ${colors.grey700};\n }\n\n .deselectButton {\n display: inline-block;\n margin-left: ${spacers.dp8};\n }\n`;\n","import { useDataEngine } from '@dhis2/app-runtime';\nimport i18n from '@dhis2/d2-i18n';\nimport {\n Button,\n Checkbox,\n colors,\n IconWarningFilled16,\n MultiSelect,\n MultiSelectOption,\n OrganisationUnitTree,\n} from '@dhis2/ui';\nimport cx from 'classnames';\nimport PropTypes from 'prop-types';\nimport React, { useEffect, useState } from 'react';\n\nimport {\n DIMENSION_ID_ORGUNIT,\n DIMENSION_ID_ORGUNIT_LEVEL,\n formatList,\n} from '../../../shared';\nimport {\n ouIdHelper,\n USER_ORG_UNIT,\n USER_ORG_UNIT_CHILDREN,\n USER_ORG_UNIT_GRANDCHILDREN,\n} from '../components';\nimport { styles } from './styles/OrgUnitDimension.style';\n\nconst DYNAMIC_ORG_UNITS = [\n USER_ORG_UNIT,\n USER_ORG_UNIT_CHILDREN,\n USER_ORG_UNIT_GRANDCHILDREN,\n];\n\nconst OrgUnitDimension = ({\n roots,\n selected,\n onSelect,\n hideGroupSelect,\n hideLevelSelect,\n hideUserOrgUnits,\n allowSingleSelection,\n warning,\n orgUnitGroupPromise,\n orgUnitLevelPromise,\n}: any) => {\n const [ouLevels, setOuLevels] = useState([]);\n const [ouGroups, setOuGroups] = useState([]);\n const [selectedItems, setSelectedItems] = useState(selected);\n const dataEngine = useDataEngine();\n\n const onSelectItems = (selectedItem: any) => {\n const { id, checked, displayName, path } = selectedItem;\n let result = [...selectedItems];\n\n if (checked && DYNAMIC_ORG_UNITS.includes(id)) {\n result = [\n ...result.filter((item) => DYNAMIC_ORG_UNITS.includes(item.id)),\n { id, displayName, type: 'USER_ORGUNIT' },\n ];\n } else if (checked) {\n result.push({ id, path, name: displayName, type: 'ORGUNIT' });\n } else {\n result = [...result.filter((item) => item.id !== id)];\n }\n\n setSelectedItems(result as any);\n\n onSelect({\n dimensionId: DIMENSION_ID_ORGUNIT,\n items: result,\n });\n };\n\n const clearSelection = () => {\n setSelectedItems([]);\n onSelect({\n dimensionId: DIMENSION_ID_ORGUNIT,\n items: [],\n });\n };\n\n useEffect(() => {\n const doFetchOuLevels = async () => {\n const result = await orgUnitLevelPromise;\n result.sort((a: any, b: any) => (a.level > b.level ? 1 : -1));\n setOuLevels(result);\n };\n const doFetchOuGroups = async () => {\n const result = await orgUnitGroupPromise;\n setOuGroups(result);\n };\n\n !hideLevelSelect && doFetchOuLevels();\n !hideGroupSelect && doFetchOuGroups();\n }, [dataEngine, hideLevelSelect, hideGroupSelect]);\n\n const onLevelChange = (ids: string[]) => {\n const items = ids.map((id: string) => ({\n id: ouIdHelper.addLevelPrefix(id),\n name: (ouLevels?.find((level: any) => level.id === id) as any)\n ?.displayName,\n type: 'ORGUNIT_LEVEL',\n }));\n\n const updatedSelectedItems = [\n ...selectedItems.filter((ou: any) => !ouIdHelper.hasLevelPrefix(ou.id)),\n ...items,\n ];\n\n setSelectedItems(updatedSelectedItems);\n\n onSelect({\n dimensionId: DIMENSION_ID_ORGUNIT,\n items: updatedSelectedItems,\n });\n };\n\n const onGroupChange = (ids: string[]) => {\n const items = ids.map((id: string) => ({\n id: ouIdHelper.addGroupPrefix(id),\n name: ((ouGroups?.find((group: any) => group.id === id) || {}) as any)\n .displayName,\n type: 'ORGUNIT_GROUP',\n }));\n\n const updatedSelectedItems = [\n ...selectedItems.filter((ou: any) => !ouIdHelper.hasGroupPrefix(ou.id)),\n ...items,\n ];\n\n setSelectedItems(updatedSelectedItems);\n\n onSelect({\n dimensionId: DIMENSION_ID_ORGUNIT,\n items: updatedSelectedItems,\n });\n };\n\n const getSummary = () => {\n let summary;\n if (selectedItems.length) {\n const numberOfOrgUnits = selectedItems.filter(\n (item: any) =>\n !DYNAMIC_ORG_UNITS.includes(item.id) &&\n !ouIdHelper.hasLevelPrefix(item.id) &&\n !ouIdHelper.hasGroupPrefix(item.id)\n ).length;\n\n const numberOfLevels = selectedItems.filter((item: any) =>\n ouIdHelper.hasLevelPrefix(item.id)\n ).length;\n const numberOfGroups = selectedItems.filter((item: any) =>\n ouIdHelper.hasGroupPrefix(item.id)\n ).length;\n const userOrgUnits = selectedItems.filter((item: any) =>\n DYNAMIC_ORG_UNITS.includes(item.id)\n );\n\n const parts = [];\n\n if (numberOfOrgUnits) {\n parts.push(\n i18n.t('{{count}} org units', {\n count: numberOfOrgUnits,\n defaultValue: '{{count}} org unit',\n defaultValue_plural: '{{count}} org units',\n })\n );\n }\n if (numberOfLevels) {\n parts.push(\n i18n.t('{{count}} levels', {\n count: numberOfLevels,\n defaultValue: '{{count}} level',\n defaultValue_plural: '{{count}} levels',\n })\n );\n }\n if (numberOfGroups) {\n parts.push(\n i18n.t('{{count}} groups', {\n count: numberOfGroups,\n defaultValue: '{{count}} group',\n defaultValue_plural: '{{count}} groups',\n })\n );\n }\n userOrgUnits.forEach((orgUnit: any) => {\n parts.push(orgUnit.name || orgUnit.displayName);\n });\n summary = i18n.t('Selected: {{commaSeparatedListOfOrganisationUnits}}', {\n keySeparator: '>',\n nsSeparator: '|',\n commaSeparatedListOfOrganisationUnits: formatList(parts),\n });\n } else {\n summary = i18n.t('Nothing selected');\n }\n\n return summary;\n };\n\n return (\n <div className=\"container\">\n {!hideUserOrgUnits && (\n <div className=\"userOrgUnitsWrapper\">\n <Checkbox\n label={i18n.t('User organisation unit')}\n checked={selectedItems.some(\n (item: any) => item.id === USER_ORG_UNIT\n )}\n onChange={({ checked }: any) =>\n onSelectItems({\n id: USER_ORG_UNIT,\n checked,\n displayName: i18n.t('User organisation unit'),\n })\n }\n dense\n />\n <Checkbox\n label={i18n.t('User sub-units')}\n checked={selectedItems.some(\n (item: any) => item.id === USER_ORG_UNIT_CHILDREN\n )}\n onChange={({ checked }: any) =>\n onSelectItems({\n id: USER_ORG_UNIT_CHILDREN,\n checked,\n displayName: i18n.t('User sub-units'),\n })\n }\n dense\n />\n <Checkbox\n label={i18n.t('User sub-x2-units')}\n checked={selectedItems.some(\n (item: any) => item.id === USER_ORG_UNIT_GRANDCHILDREN\n )}\n onChange={({ checked }: any) =>\n onSelectItems({\n id: USER_ORG_UNIT_GRANDCHILDREN,\n checked,\n displayName: i18n.t('User sub-x2-units'),\n })\n }\n dense\n />\n </div>\n )}\n <div\n className={cx('orgUnitTreeWrapper', {\n disabled: selectedItems.some((item: any) =>\n DYNAMIC_ORG_UNITS.includes(item.id)\n ),\n })}\n >\n <OrganisationUnitTree\n roots={roots}\n singleSelection={allowSingleSelection}\n initiallyExpanded={[\n ...(roots.length === 1 ? [`/${roots[0]}`] : []),\n ...selectedItems\n .filter(\n (item: any) =>\n !DYNAMIC_ORG_UNITS.includes(item.id) &&\n !ouIdHelper.hasLevelPrefix(item.id) &&\n !ouIdHelper.hasGroupPrefix(item.id)\n )\n .map((item: any) =>\n item.path.substring(0, item.path.lastIndexOf('/'))\n )\n .filter((path: any) => path),\n ]}\n selected={selectedItems\n .filter(\n (item: any) =>\n !DYNAMIC_ORG_UNITS.includes(item.id) &&\n !ouIdHelper.hasLevelPrefix(item.id) &&\n !ouIdHelper.hasGroupPrefix(item.id)\n )\n .map((item: any) => item.path)}\n onChange={onSelectItems}\n dataTest={'org-unit-tree'}\n />\n </div>\n <div\n className={cx('selectsWrapper', {\n disabled: selectedItems.some((item: any) =>\n DYNAMIC_ORG_UNITS.includes(item.id)\n ),\n hidden: hideLevelSelect && hideGroupSelect,\n })}\n >\n {!hideLevelSelect && (\n <MultiSelect\n selected={\n ouLevels.length\n ? selectedItems\n .filter((item: any) => ouIdHelper.hasLevelPrefix(item.id))\n .map((item: any) => ouIdHelper.removePrefix(item.id))\n : []\n }\n onChange={({ selected }: any) => onLevelChange(selected)}\n placeholder={i18n.t('Select a level')}\n loading={!ouLevels.length}\n dense\n dataTest={'org-unit-level-select'}\n >\n {ouLevels.map((level: any) => (\n <MultiSelectOption\n key={level.id}\n value={level.id}\n label={level.displayName}\n dataTest={`org-unit-level-select-option-${level.id}`}\n />\n ))}\n </MultiSelect>\n )}\n {!hideGroupSelect && (\n <MultiSelect\n selected={\n ouGroups.length\n ? selectedItems\n .filter((item: any) => ouIdHelper.hasGroupPrefix(item.id))\n .map((item: any) => ouIdHelper.removePrefix(item.id))\n : []\n }\n onChange={({ selected }: any) => onGroupChange(selected)}\n placeholder={i18n.t('Select a group')}\n loading={!ouGroups.length}\n dense\n dataTest={'org-unit-group-select'}\n >\n {ouGroups.map((group: any) => (\n <MultiSelectOption\n key={group.id}\n value={group.id}\n label={group.displayName}\n dataTest={`org-unit-group-select-option-${group.id}`}\n />\n ))}\n </MultiSelect>\n )}\n </div>\n <div className=\"summaryWrapper\">\n {warning ? (\n <div className=\"warningWrapper\">\n <IconWarningFilled16 color={colors.red500} />\n <span className=\"warningText\">{warning}</span>\n </div>\n ) : (\n <span className=\"summaryText\">{getSummary()}</span>\n )}\n <div className=\"deselectButton\">\n <Button\n secondary\n small\n onClick={clearSelection}\n disabled={!selectedItems.length}\n >\n {i18n.t('Deselect all')}\n </Button>\n </div>\n </div>\n <style jsx>{styles}</style>\n </div>\n );\n};\n\nOrgUnitDimension.defaultProps = {\n hideGroupSelect: false,\n hideLevelSelect: false,\n hideUserOrgUnits: false,\n allowSingleSelection: false,\n};\n\nOrgUnitDimension.propTypes = {\n hideGroupSelect: PropTypes.bool,\n hideLevelSelect: PropTypes.bool,\n hideUserOrgUnits: PropTypes.bool,\n allowSingleSelection: PropTypes.bool,\n roots: PropTypes.arrayOf(PropTypes.string),\n selected: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n path: PropTypes.string,\n })\n ),\n warning: PropTypes.string,\n onSelect: PropTypes.func,\n orgUnitGroupPromise: PropTypes.any,\n orgUnitLevelPromise: PropTypes.any,\n};\n\nexport default OrgUnitDimension;\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nexport type OrganisationUnitSelectionUsageType = 'DATA_ENTRY' | 'DATA_VIEW';\nexport class OrganisationUnitSelectionConfig {\n hideGroupSelect!: boolean;\n hideLevelSelect!: boolean;\n hideUserOrgUnits!: boolean;\n usageType!: OrganisationUnitSelectionUsageType;\n minLevel?: number;\n allowSingleSelection?: boolean;\n batchSize?: number;\n additionalQueryFields?: string[];\n\n constructor(params?: Partial<OrganisationUnitSelectionConfig>) {\n this.hideGroupSelect = params?.hideGroupSelect || false;\n this.hideLevelSelect = params?.hideLevelSelect || false;\n this.hideUserOrgUnits = params?.hideUserOrgUnits || false;\n this.usageType = params?.usageType || 'DATA_ENTRY';\n this.minLevel = params?.minLevel;\n this.allowSingleSelection = params?.allowSingleSelection || false;\n this.batchSize = params?.batchSize;\n this.additionalQueryFields = params?.additionalQueryFields;\n }\n}\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './organisation-unit-config.model';\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n Output,\n} from '@angular/core';\nimport { Provider } from '@dhis2/app-runtime';\nimport { NgxDhis2HttpClientService, User } from '@iapps/ngx-dhis2-http-client';\nimport React from 'react';\nimport * as ReactDOM from 'react-dom/client';\nimport { firstValueFrom, map } from 'rxjs';\nimport { ReactWrapperModule } from '../../../react-wrapper/react-wrapper.component';\nimport OrgUnitDimension from '../../components/OrgUnitDimension';\nimport {\n OrganisationUnitSelectionConfig,\n OrganisationUnitSelectionUsageType,\n} from '../../models';\n\ntype OrganisationUnitSelectionEvent = {\n dimensionId: string;\n items: Record<string, unknown>[];\n};\n\n@Component({\n selector: 'ng-dhis2-ui-org-unit-selector',\n template: '<ng-container><ng-container>',\n standalone: false,\n})\nexport class OrganisationUnitSelectorComponent extends ReactWrapperModule {\n @Input() selectedOrgUnits: any[] = [];\n @Input() orgUnitSelectionConfig: OrganisationUnitSelectionConfig =\n new OrganisationUnitSelectionConfig();\n\n @Output() selectOrgUnits = new EventEmitter();\n\n override props: Record<string, unknown> = {\n onSelect: (e: any) => {\n this.onSelectItems(e);\n },\n };\n\n constructor(\n elementRef: ElementRef<HTMLElement>,\n private httpClient: NgxDhis2HttpClientService,\n private ngZone: NgZone\n ) {\n super(elementRef);\n }\n\n override async ngAfterViewInit() {\n if (!this.elementRef) throw new Error('No element ref');\n this.reactDomRoot = ReactDOM.createRoot(this.elementRef.nativeElement);\n const rootOrgUnits = await this.getRootOrgUnits();\n\n const config = await this.getAppConfig();\n\n this.component = () => (\n <Provider\n config={config}\n plugin={false}\n parentAlertsAdd={undefined}\n showAlertsInPlugin={false}\n >\n {\n <OrgUnitDimension\n selected={this.selectedOrgUnits}\n hideGroupSelect={this.orgUnitSelectionConfig.hideGroupSelect}\n hideLevelSelect={this.orgUnitSelectionConfig.hideLevelSelect}\n hideUserOrgUnits={this.orgUnitSelectionConfig.hideUserOrgUnits}\n onSelect={(selectionEvent: OrganisationUnitSelectionEvent) =>\n this.ngZone.run(() => {\n this.onSelectItems(selectionEvent);\n })\n }\n orgUnitGroupPromise={this.getOrgUnitGroups()}\n orgUnitLevelPromise={this.getOrgUnitLevels()}\n roots={rootOrgUnits}\n />\n }\n </Provider>\n );\n\n this.render();\n }\n\n private async getAppConfig() {\n const systemInfo = (await firstValueFrom(\n this.httpClient.systemInfo()\n )) as unknown as Record<string, unknown>;\n\n return {\n baseUrl: (document?.location?.host?.includes('localhost')\n ? `${document.location.protocol}//${document.location.host}`\n : systemInfo['contextPath']) as string,\n apiVersion: Number(\n (((systemInfo['version'] as string) || '')?.split('.') || [])[1]\n ),\n };\n }\n\n getOrgUnitAttributeByUsage(usageType: OrganisationUnitSelectionUsageType) {\n switch (usageType) {\n case 'DATA_ENTRY':\n return 'organisationUnits';\n\n case 'DATA_VIEW':\n return 'dataViewOrganisationUnits';\n\n default:\n return 'organisationUnits';\n }\n }\n\n getRootOrgUnits(): Promise<string[]> {\n const orgUnitAttribute = this.getOrgUnitAttributeByUsage(\n this.orgUnitSelectionConfig.usageType\n );\n return firstValueFrom(\n this.httpClient\n .me()\n .pipe(\n map((user: User) =>\n (user ? user[orgUnitAttribute] : []).map((orgUnit) => orgUnit.id)\n )\n )\n );\n }\n\n getOrgUnitGroups(): Promise<any> {\n return firstValueFrom(\n this.httpClient\n .get(\n 'organisationUnitGroups.json?fields=id,displayName,name&paging=false'\n )\n .pipe(\n map((res: Record<string, unknown>) => res?.['organisationUnitGroups'])\n )\n );\n }\n\n getOrgUnitLevels(): Promise<any> {\n return firstValueFrom(\n this.httpClient\n .get(\n 'organisationUnitLevels.json?fields=id,level,displayName,name&paging=false'\n )\n .pipe(\n map((res: Record<string, unknown>) => res?.['organisationUnitLevels'])\n )\n );\n }\n\n onSelectItems(selectionEvent: OrganisationUnitSelectionEvent) {\n this.selectOrgUnits.emit(selectionEvent.items);\n }\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { Provider } from '@dhis2/app-runtime';\nimport {\n Button,\n ButtonStrip,\n Modal,\n ModalActions,\n ModalContent,\n ModalTitle,\n} from '@dhis2/ui';\nimport { NgxDhis2HttpClientService, User } from '@iapps/ngx-dhis2-http-client';\nimport React, { useState } from 'react';\nimport * as ReactDOM from 'react-dom/client';\nimport { firstValueFrom, map } from 'rxjs';\nimport { ReactWrapperModule } from '../../../react-wrapper/react-wrapper.component';\nimport OrgUnitDimension from '../../components/OrgUnitDimension';\nimport {\n OrganisationUnitSelectionConfig,\n OrganisationUnitSelectionUsageType,\n} from '../../models';\n\ntype OrganisationUnitSelectionEvent = {\n dimensionId: string;\n items: Record<string, unknown>[];\n};\n\n@Component({\n selector: 'ng-dhis2-ui-org-unit-selector-modal',\n template: '<ng-container><ng-container>',\n styles: [\n `\n ::ng-deep .layer {\n z-index: 2 !important;\n }\n `,\n ],\n standalone: false,\n})\nexport class OrganisationUnitSelectorModalComponent extends ReactWrapperModule {\n @Input() selectedOrgUnits: any[] = [];\n @Input() orgUnitSelectionConfig: OrganisationUnitSelectionConfig =\n new OrganisationUnitSelectionConfig();\n\n @Output() selectOrgUnits = new EventEmitter();\n @Output() cancel = new EventEmitter();\n @Output() confirm = new EventEmitter();\n\n override props: Record<string, unknown> = {\n onSelect: (e: any) => {\n this.onSelectItems(e);\n },\n };\n\n constructor(\n elementRef: ElementRef<HTMLElement>,\n private httpClient: NgxDhis2HttpClientService\n ) {\n super(elementRef);\n }\n\n override async ngAfterViewInit() {\n if (!this.elementRef) throw new Error('No element ref');\n this.reactDomRoot = ReactDOM.createRoot(this.elementRef.nativeElement);\n const rootOrgUnits = await this.getRootOrgUnits();\n\n const config = await this.getAppConfig();\n\n this.component = () => {\n const [selected, setSelected] = useState(this.selectedOrgUnits);\n return (\n <Provider\n config={config}\n plugin={false}\n parentAlertsAdd={undefined}\n showAlertsInPlugin={false}\n >\n {\n <Modal position=\"middle\" large>\n <ModalTitle>Organisation unit</ModalTitle>\n <ModalContent>\n <OrgUnitDimension\n selected={selected}\n hideGroupSelect={this.orgUnitSelectionConfig.hideGroupSelect}\n hideLevelSelect={this.orgUnitSelectionConfig.hideLevelSelect}\n hideUserOrgUnits={\n this.orgUnitSelectionConfig.hideUserOrgUnits\n }\n onSelect={(\n selectionEvent: OrganisationUnitSelectionEvent\n ) => {\n setSelected(selectionEvent.items);\n }}\n orgUnitGroupPromise={this.getOrgUnitGroups()}\n orgUnitLevelPromise={this.getOrgUnitLevels()}\n roots={rootOrgUnits}\n />\n </ModalContent>\n <ModalActions>\n <ButtonStrip end>\n <Button\n onClick={() => {\n this.onCancel();\n }}\n >\n Cancel\n </Button>\n <Button\n primary\n disabled={selected.length === 0}\n onClick={() => {\n this.onConfirm(selected);\n }}\n >\n Confirm\n </Button>\n </ButtonStrip>\n </ModalActions>\n </Modal>\n }\n </Provider>\n );\n };\n\n this.render();\n }\n\n onCancel() {\n this.cancel.emit();\n }\n\n onConfirm(selectedItems: any[]) {\n this.confirm.emit(selectedItems);\n }\n\n private async getAppConfig() {\n const systemInfo = (await firstValueFrom(\n this.httpClient.systemInfo()\n )) as unknown as Record<string, unknown>;\n\n return {\n baseUrl: (document?.location?.host?.includes('localhost')\n ? `${document.location.protocol}//${document.location.host}`\n : systemInfo['contextPath']) as string,\n apiVersion: Number(\n (((systemInfo['version'] as string) || '')?.split('.') || [])[1]\n ),\n };\n }\n\n getOrgUnitAttributeByUsage(usageType: OrganisationUnitSelectionUsageType) {\n switch (usageType) {\n case 'DATA_ENTRY':\n return 'organisationUnits';\n\n case 'DATA_VIEW':\n return 'dataViewOrganisationUnits';\n\n default:\n return 'organisationUnits';\n }\n }\n\n getRootOrgUnits(): Promise<string[]> {\n const orgUnitAttribute = this.getOrgUnitAttributeByUsage(\n this.orgUnitSelectionConfig.usageType\n );\n return firstValueFrom(\n this.httpClient\n .me()\n .pipe(\n map((user: User) =>\n (user ? user[orgUnitAttribute] : []).map((orgUnit) => orgUnit.id)\n )\n )\n );\n }\n\n getOrgUnitGroups(): Promise<any> {\n return firstValueFrom(\n this.httpClient\n .get(\n 'organisationUnitGroups.json?fields=id,displayName,name&paging=false'\n )\n .pipe(\n map((res: Record<string, unknown>) => res?.['organisationUnitGroups'])\n )\n );\n }\n\n getOrgUnitLevels(): Promise<any> {\n return firstValueFrom(\n this.httpClient\n .get(\n 'organisationUnitLevels.json?fields=id,level,displayName,name&paging=false'\n )\n .pipe(\n map((res: Record<string, unknown>) => res?.['organisationUnitLevels'])\n )\n );\n }\n\n onSelectItems(selectionEvent: OrganisationUnitSelectionEvent) {\n this.selectOrgUnits.emit(selectionEvent.items);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SharedDhis2UiModule } from '../../shared/shared.module';\nimport { OrganisationUnitSelectorComponent } from './containers/organisation-unit-selector/organisation-unit-selector.component';\nimport { OrganisationUnitSelectorModalComponent } from './containers/organisation-unit-selector-modal/organisation-unit-selector-modal.component-modal';\n\n@NgModule({\n imports: [CommonModule, SharedDhis2UiModule],\n declarations: [\n OrganisationUnitSelectorComponent,\n OrganisationUnitSelectorModalComponent,\n ],\n exports: [\n OrganisationUnitSelectorComponent,\n OrganisationUnitSelectorModalComponent,\n ],\n})\nexport class OrganisationUnitSelectorModule {}\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './organisation-unit-selector.module';\nexport { OrganisationUnitSelectorComponent } from './containers/organisation-unit-selector/organisation-unit-selector.component';\nexport { OrganisationUnitSelectorModalComponent } from './containers/organisation-unit-selector-modal/organisation-unit-selector-modal.component-modal';\nexport * from './models';\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// @flow\nimport { Provider, useDataQuery } from '@dhis2/app-runtime';\nimport { colors } from '@dhis2/ui';\nimport React, {\n SyntheticEvent,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport { useDynamicStyles } from '../../../shared';\nimport { OrganisationUnitTree, CircularLoader, InputField } from '@dhis2/ui';\nimport { D2Window } from '@iapps/d2-web-sdk';\nimport { debounce } from 'lodash';\nimport { Chip } from '@dhis2/ui';\nimport { Tooltip } from '@dhis2/ui';\n\nconst orgUnitFieldStyles = {\n container: {\n border: '1px solid',\n borderColor: colors.grey400,\n borderRadius: '3px',\n height: '100%',\n width: '100%',\n zIndex: 0,\n backgroundColor: 'white',\n },\n searchField: {\n height: '40px',\n overflow: 'hidden',\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0,\n boxShadow: 'none',\n border: 'none',\n },\n debounceFieldContainer: {\n padding: '8px',\n background: colors.grey100,\n borderTopLeftRadius: '3px',\n borderTopRightRadius: '3px',\n },\n orgUnitTreeContainer: {\n borderBottomLeftRadius: '3px',\n borderBottomRightRadius: '3px',\n overflow: 'auto',\n },\n orgUnitTreeLoader: {\n padding: '8px',\n },\n\n orgUnitFieldLabel: {\n marginBottom: '8px',\n display: 'block',\n boxSizing: 'border-box',\n fontSize: '14px',\n lineHeight: '19px',\n color: 'rgb(33, 41, 52)',\n padding: '0',\n },\n\n orgUnitFieldRequiredLabel: {\n paddingInlineStart: '4px',\n },\n};\n\ntype Props = {\n key: string;\n label?: string;\n required?: boolean;\n onSelectOrgUnit: (selectedOrgUnits: any) => void;\n onBlur?: (selectedOrgUnit: Record<string, unknown>) => void;\n selected?: string;\n maxTreeHeight?: number;\n disabled?: boolean;\n previousOrgUnitId?: string;\n};\n\nexport const OrgUnitFormField = (props: Props) => {\n const { onSelectOrgUnit, label, required, selected, disabled, key } = props;\n const d2 = (window as unknown as D2Window)?.d2Web;\n const classes = useDynamicStyles(orgUnitFieldStyles);\n\n const config = useMemo(() => {\n return d2.systemInfo?.toInitObject();\n }, []);\n\n const rootOrgUnits = useMemo(() => {\n return d2.currentUser?.organisationUnits || [];\n }, []);\n\n const getExpandedItems = () => {\n if (rootOrgUnits && rootOrgUnits.length === 1) {\n return [`/${rootOrgUnits[0].id}`];\n } else if (rootOrgUnits?.length > 1) {\n return rootOrgUnits.map((root) => root.path);\n }\n\n return undefined;\n };\n\n const initiallyExpanded = getExpandedItems();\n const [searchText, setSearchText] = useState<string | undefined>(undefined);\n const [loading, setLoading] = useState<boolean>(true);\n const [searchLoading, setSearchLoading] = useState<boolean>();\n const [searchData, setSearchData] = useState<any>();\n const [selectedOrgUnit, setSelectedOrgUnit] =\n useState<Record<string, unknown>>();\n const [expanded, setExpanded] = useState<any[] | undefined>(\n initiallyExpanded\n );\n const [showOrgUnitTree, setShowOrgUnitTree] = useState<boolean>(!selected);\n\n useEffect(() => {\n setLoading(true);\n\n if (selected) {\n d2.httpInstance\n .get(\n `organisationUnits/${selected}.json?fields=id,displayName,path,code,ancestors[id,displayName]`\n )\n .then((response) => {\n if (response.data) {\n setSelectedOrgUnit(response.data);\n\n handleExpand({ path: response.data['path'] as string });\n\n setLoading(false);\n }\n });\n } else {\n setShowOrgUnitTree(true);\n setLoading(false);\n }\n }, []);\n\n const highlighted: string[] | undefined = useMemo(() => {\n if (selectedOrgUnit) {\n return [selectedOrgUnit['path']] as string[];\n }\n\n return undefined;\n }, [selectedOrgUnit]);\n\n const selectedOrgUnitLabel: string = useMemo(() => {\n if (selectedOrgUnit) {\n return [\n ...((selectedOrgUnit['ancestors'] as any[]) || []),\n selectedOrgUnit,\n ]\n .map((orgUnit) => orgUnit['displayName'])\n .join(' / ');\n }\n\n return '';\n }, [selectedOrgUnit]);\n\n const handleExpand = ({ path }: { path: string }) => {\n if (expanded && !expanded.includes(path)) {\n setExpanded([...expanded, path]);\n }\n };\n\n const handleCollapse = ({ path }: { path: string }) => {\n const pathIndex = expanded?.indexOf(path);\n\n if (pathIndex && pathIndex !== -1 && expanded) {\n const updatedExpanded =\n pathIndex === 0\n ? expanded.slice(1)\n : [...expanded.slice(0, pathIndex), ...expanded.slice(pathIndex + 1)];\n setExpanded(updatedExpanded);\n }\n };\n\n const handleOrgUnitSearch = async (query: string) => {\n setSearchLoading(true);\n try {\n const searchResponse = await d2.httpInstance.get(\n `organisationUnits.json?fields=id,displayName,path,publicAccess,access,lastUpdated,children[id,displayName,publicAccess,access,path,children::isNotEmpty]&paging=true&query=${query}&withinUserSearchHierarchy=true&pageSize=15`\n );\n setSearchData((searchResponse.data || {})['organisationUnits']);\n setSearchLoading(false);\n } catch (e) {\n setSearchLoading(false);\n }\n };\n\n const debouncedSearch = useCallback(\n debounce((value) => {\n handleOrgUnitSearch(value);\n }, 500),\n []\n );\n\n const handleFilterChange = (event: { value: string }) => {\n setSearchText(event.value);\n debouncedSearch(event.value);\n };\n\n const ready = useMemo(() => {\n return searchText?.length ? !searchLoading : !loading;\n }, [searchText, searchLoading, loading]);\n\n const renderOrgUnitTree = () => {\n if (searchText && searchText?.length > 0) {\n if (searchLoading) {\n return (\n <div className={classes.orgUnitTreeLoader}>\n <CircularLoader small />\n </div>\n );\n }\n\n return (\n ready && (\n <OrganisationUnitTree\n key={`${key}-search`}\n roots={searchData?.map((orgUnit: any) => orgUnit.id) || []}\n singleSelection={true}\n expanded={expanded as any}\n handleExpand={handleExpand}\n handleCollapse={handleCollapse}\n selected={highlighted}\n onChange={(event: any) => {\n setSelectedOrgUnit(event);\n setShowOrgUnitTree(false);\n onSelectOrgUnit(event);\n }}\n />\n )\n );\n }\n return (\n <OrganisationUnitTree\n key={key}\n roots={rootOrgUnits?.map((orgUnit) => orgUnit.id) || []}\n singleSelection={true}\n expanded={expanded as any}\n handleExpand={handleExpand}\n handleCollapse={handleCollapse}\n selected={highlighted}\n onChange={(event: any) => {\n setSelectedOrgUnit(event);\n setShowOrgUnitTree(false);\n onSelectOrgUnit(event);\n }}\n />\n );\n };\n\n const handleBlur = () => {\n // onBlur && onBlur(null);\n };\n\n return (\n config && (\n <Provider\n config={config}\n plugin={false}\n parentAlertsAdd={undefined}\n showAlertsInPlugin={false}\n >\n <div>\n {label && (\n <div className={classes.orgUnitFieldLabel}>\n <span>{label}</span>\n {required ? (\n <span className={classes.orgUnitFieldRequiredLabel}>*</span>\n ) : (\n <></>\n )}\n </div>\n )}\n\n {!showOrgUnitTree ? (\n selectedOrgUnit ? (\n <>\n <Tooltip content={selectedOrgUnitLabel}>\n <Chip\n onRemove={() => {\n setShowOrgUnitTree(true);\n }}\n >\n {(selectedOrgUnit as any).displayName}\n </Chip>\n </Tooltip>\n </>\n ) : (\n <div className={classes.orgUnitTreeLoader}>\n <CircularLoader small />\n </div>\n )\n ) : (\n <div className={classes.container}>\n <div className={classes.debounceFieldContainer}>\n <InputField\n placeholder=\"Search\"\n value={searchText}\n disabled={disabled}\n onChange={handleFilterChange}\n />\n </div>\n {loading ? (\n <div className={classes.orgUnitTreeLoader}>\n <CircularLoader small />\n </div>\n ) : (\n <div\n className={classes.orgUnitTreeContainer}\n style={{ maxHeight: '200px', overflowY: 'auto' }}\n >\n {renderOrgUnitTree()}\n </div>\n )}\n </div>\n )}\n </div>\n </Provider>\n )\n );\n};\n","import React from \"react\";\nimport { OrgUnitFormField } from '../components/org-unit-form-field.component';\nimport {\n Button,\n ButtonStrip,\n Modal,\n ModalActions,\n ModalContent,\n ModalTitle,\n } from '@dhis2/ui';\nexport const OrgUnitSelector = ({\n hide,\n setHide,\n selectedOrgUnit,\n setSelectedOrgUnit,\n setOrgUnitState,\n setTempOrgUnitState,\n tempOrgUnitState\n }: any) => (\n <Modal hide={hide} position=\"middle\">\n <ModalTitle>Select organization unit</ModalTitle>\n <ModalContent>\n <OrgUnitFormField\n key={selectedOrgUnit}\n onSelectOrgUnit={(selectedOrgUnit: any) => {\n setSelectedOrgUnit(selectedOrgUnit.displayName);\n setTempOrgUnitState(selectedOrgUnit.id);\n setHide(true);\n }}\n />\n </ModalContent>\n <ModalActions>\n <ButtonStrip end>\n <Button onClick={() => setHide(true)} secondary>\n Close\n </Button>\n </ButtonStrip>\n </ModalActions>\n </Modal>\n );\n ","import {\n Button,\n CalendarInput,\n DataTableToolbar,\n InputField,\n SingleSelectField,\n SingleSelectOption,\n} from '@dhis2/ui';\nimport React from 'react';\nimport { parseISO, format, isValid } from 'date-fns';\nexport const FilterToolbar = ({\n orgUnitLabel,\n selectedOrgUnit,\n setSelectedOrgUnit,\n setOrgUnitState,\n defaultOrgUnit,\n setHide,\n startDateState,\n setStartDateState,\n endDateState,\n setEndDateState,\n visibleFilters,\n dateStates,\n inputValues,\n setInputValues,\n handleInputChange,\n handleInputChangeForSelectField,\n handleDateSelect,\n prevValue,\n setPrevValue,\n showAllFilters,\n setShowAllFilters,\n handleSearch,\n setTempStartDateState,\n setTempEndDateState,\n setTempOrgUnitState,\n tempStartDateState,\n tempEndDateState,\n tempOrgUnitState,\n dataQueryFiltersState,\n setDataQueryFiltersState,\n SetOrgUnitModalVisible,\n showEnrollmentDates,\n}: any) => (\n <DataTableToolbar className=\"table-top-toolbar\">\n <div\n style={{\n display: 'flex',\n // flexDirection: 'column',\n gap: '10px',\n flexWrap: 'wrap',\n }}\n >\n {/* Row 1: default filters */}\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '10px',\n flexWrap: 'wrap',\n }}\n >\n <InputField\n key=\"location\"\n label={orgUnitLabel ? orgUnitLabel : 'registering unit:'}\n value={selectedOrgUnit}\n onFocus={() => {\n SetOrgUnitModalVisible(true);\n setHide(false);\n }}\n className=\"custom-input\"\n clearable\n onChange={(event: { value: string }) => {\n setSelectedOrgUnit(event.value);\n setOrgUnitState(defaultOrgUnit);\n }}\n />\n {showEnrollmentDates && (\n <>\n <CalendarInput\n label=\"Start date:\"\n calendar=\"gregory\"\n locale=\"en-GB\"\n timeZone=\"Africa/Dar_es_Salaam\"\n className=\"custom-input\"\n //clearable={!!tempStartDateState}\n //date={tempStartDateState || undefined}\n //date={tempStartDateState || \"yyyy-mm-dd\"}\n clearable={\n !!tempStartDateState && tempStartDateState !== 'dd-mm-yyyy'\n }\n // date={tempStartDateState || 'dd-mm-yyyy'}\n date={formatDateForDisplay(tempStartDateState)}\n onDateSelect={(selectedDate: any) => {\n setTempStartDateState(selectedDate.calendarDateString);\n if (selectedDate.calendarDateString === null) {\n setStartDateState(selectedDate.calendarDateString);\n }\n }}\n />\n <CalendarInput\n label=\"End date:\"\n calendar=\"gregory\"\n locale=\"en-GB\"\n timeZone=\"Africa/Dar_es_Salaam\"\n className=\"custom-input\"\n clearable={\n !!tempEndDateState && tempEndDateState !== 'dd-mm-yyyy'\n }\n // date={tempEndDateState || 'dd-mm-yyyy'}\n date={formatDateForDisplay(tempEndDateState)}\n onDateSelect={(selectedDate: any) => {\n setTempEndDateState(selectedDate.calendarDateString);\n if (selectedDate.calendarDateString === null) {\n setEndDateState(selectedDate.calendarDateString);\n }\n }}\n />\n </>\n )}\n\n {/* <Button onClick={handleSearch}>Search</Button>\n <Button onClick={() => setShowAllFilters(!showAllFilters)}>\n {showAllFilters ? 'Less Filters' : 'More Filters'}\n </Button> */}\n </div>\n\n {/* Row 2: visibleFilters appear in a new row */}\n {/* {visibleFilters?.length > 0 && (\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '10px',\n flexWrap: 'wrap',\n }}\n > */}\n {(visibleFilters ?? []).map(({ label, key, valueType, options }: any) => {\n if (valueType === 'DATE') {\n return (\n <CalendarInput\n key={key}\n label={`${label}:`}\n calendar=\"gregory\"\n locale=\"en-GB\"\n timeZone=\"Africa/Dar_es_Salaam\"\n className=\"custom-input\"\n clearable={!!dateStates[key]}\n date={dateStates[key]}\n onDateSelect={(selectedDate: any) => {\n handleDateSelect(key, selectedDate);\n const filteredFilters = dataQueryFiltersState.filter(\n (f: { attribute: any }) => f.attribute !== key\n );\n if (selectedDate.calendarDateString === null) {\n setDataQueryFiltersState(filteredFilters);\n }\n }}\n />\n );\n }\n\n if (options && options.options.length > 0) {\n return (\n <SingleSelectField\n key={key}\n label={`${label}:`}\n selected={inputValues[key] || ''}\n className=\"custom-select-input\"\n clearable\n onChange={({ selected }: { selected: string }) => {\n setInputValues((prevValues: any) => ({\n ...prevValues,\n [key]: selected ?? '',\n }));\n handleInputChangeForSelectField(key, selected ?? '');\n const filteredFilters = dataQueryFiltersState.filter(\n (f: { attribute: any }) => f.attribute !== key\n );\n if (selected === '') {\n setDataQueryFiltersState(filteredFilters);\n }\n }}\n >\n {(options.options ?? []).map((opt: any) => (\n <SingleSelectOption\n key={opt.id}\n label={opt.name}\n value={opt.code}\n />\n ))}\n </SingleSelectField>\n );\n }\n\n return (\n <InputField\n key={key}\n label={`${label}:`}\n className=\"custom-input\"\n value={inputValues[key] || ''}\n clearable\n onChange={(e: any) => {\n const currentValue =\n 'target' in e ? e.target.value : e.value ?? '';\n setInputValues((prevValues: any) => ({\n ...prevValues,\n [key]: currentValue,\n }));\n const filteredFilters = dataQueryFiltersState.filter(\n (f: { attribute: any }) => f.attribute !== key\n );\n if (currentValue === '') {\n setDataQueryFiltersState(filteredFilters);\n }\n }}\n onBlur={(e: any) => {\n const currentValue =\n 'target' in e ? e.target.value : e.value ?? '';\n if (currentValue !== '' && currentValue !== prevValue) {\n handleInputChange(key, currentValue);\n setPrevValue(currentValue);\n }\n }}\n />\n );\n })}\n {/* </div>\n )} */}\n <div\n style={{\n display: 'flex',\n // alignItems: 'center',\n gap: '10px',\n // flexWrap: 'wrap',\n }}\n >\n <Button onClick={handleSearch}>Search</Button>\n <Button onClick={() => setShowAllFilters(!showAllFilters)}>\n {showAllFilters ? 'Less Filters' : 'More Filters'}\n </Button>\n </div>\n </div>\n </DataTableToolbar>\n);\n\nexport function formatDateForDisplay(dateString: string | null | undefined): string {\n if (!dateString || dateString === 'dd-mm-yyyy') return 'dd-mm-yyyy';\n\n try {\n const parsedDate = parseISO(dateString);\n if (!isValid(parsedDate)) return 'dd-mm-yyyy';\n return format(parsedDate, 'dd-MM-yyyy');\n } catch {\n return 'dd-mm-yyyy';\n }\n}","import {\n Checkbox,\n DataTableColumnHeader,\n DataTableRow,\n TableHead,\n} from '@dhis2/ui';\nimport React from 'react';\n\nexport const TableHeader = ({\n columns,\n allSelected,\n onSelectAll,\n selectable,\n showActionButtons,\n}: {\n columns: any[];\n allSelected: boolean;\n onSelectAll: (checked: boolean) => void;\n selectable: boolean;\n showActionButtons: boolean;\n}) => {\n const handleCheckboxChange = () => {\n onSelectAll(!allSelected);\n };\n\n return (\n <TableHead>\n <DataTableRow>\n {selectable && (\n <DataTableColumnHeader width=\"48px\">\n <Checkbox checked={allSelected} onChange={handleCheckboxChange} />\n </DataTableColumnHeader>\n )}\n {/* {columns.map((col) => (\n <DataTableColumnHeader key={col.key}>\n {col.label}\n </DataTableColumnHeader>\n ))} */}\n {columns\n .filter((col) => showActionButtons || col.key !== 'actions')\n .map((col) => (\n <DataTableColumnHeader key={col.key}>\n {col.label}\n </DataTableColumnHeader>\n ))}\n </DataTableRow>\n </TableHead>\n );\n};\n","export const dropdownStyles = {\n layer: {\n zIndex: '1 !important',\n },\n};\n","import { set } from \"lodash\";\nimport { useEffect, useState, useRef } from \"react\";\n\n// Helper function to generate a unique class name\nconst generateClassName = (base: string) =>\n `${base}-${Math.random().toString(36).substr(2, 9)}`;\n\n// Helper function to convert camelCased properties to hyphenated CSS properties\nconst convertStylesToCSS = (\n className: string,\n styles: React.CSSProperties | any\n) => {\n let cssString = `.${className} {`;\n for (const key in styles) {\n if (typeof styles[key] === \"object\" && key.startsWith(\"@media\")) {\n const mediaStyles = convertStylesToCSS(className, styles[key]);\n cssString += `${key} { ${mediaStyles} }`;\n } else if (key.startsWith(\"&:\")) {\n const pseudoClass = key.replace(\"&\", \"\");\n cssString += `${pseudoClass} { ${convertStylesToCSS(\"\", styles[key])} }`;\n } else {\n const cssKey = key.replace(\n /[A-Z]/g,\n (match) => `-${match.toLowerCase()}`\n );\n cssString += `${cssKey}: ${styles[key]}; `;\n }\n }\n cssString += \"}\";\n return cssString;\n};\n\n// Custom hook for dynamic styles with generics\n\nexport const useDynamicStyles = <\n T extends Record<string, React.CSSProperties | any>\n>(\n stylesObj: T\n) => {\n const [classNames, setClassNames] = useState<{ [K in keyof T]: string }>(\n {} as { [K in keyof T]: string }\n );\n useEffect(() => {\n const convertedStyles = Object.keys(stylesObj).map((key) => {\n const className = generateClassName(key);\n const styleElement = document.createElement(\"style\");\n styleElement.innerHTML = convertStylesToCSS(className, stylesObj[key]);\n document.head.appendChild(styleElement);\n\n return {\n key,\n className,\n styleElement,\n };\n });\n\n setClassNames(\n convertedStyles.reduce((classNameEntity, convertedStyle) => {\n return {\n ...classNameEntity,\n [convertedStyle.key]: convertedStyle.className,\n };\n }, {} as { [K in keyof T]: string })\n );\n\n return () => {\n convertedStyles.forEach((convertedStyle) => {\n document.head.removeChild(convertedStyle.styleElement);\n });\n };\n }, []);\n\n return classNames;\n};\n","import {\n Button,\n colors,\n FlyoutMenu,\n IconMore24,\n Layer,\n MenuItem,\n Popper,\n} from '@dhis2/ui';\nimport React, { useRef, useState } from 'react';\nimport { dropdownStyles } from './dropdown-menu.styles';\nimport { useDynamicStyles } from '../../hooks';\nimport { DropdownMenuOption } from '../../models';\n\nconst useCurrentModal = () => {\n const [CurrentModal, setCurrentModal] = useState();\n\n return [\n CurrentModal,\n (Modal: any) => {\n // As setState supports functional updates, we can't pass functional\n // components directly\n setCurrentModal(() => Modal);\n },\n ] as any;\n};\n\nexport const ContextMenu = (params: {\n dropDownOptions: DropdownMenuOption[];\n anchorRef: any;\n onClose: (event?: any, data?: any) => void;\n onMenuClick: (dropdownOption: DropdownMenuOption) => void;\n}) => {\n const { onClose, onMenuClick, anchorRef, dropDownOptions } = params;\n const [CurrentModal, setCurrentModal] = useCurrentModal();\n\n const styles = useDynamicStyles(dropdownStyles);\n\n return (\n <>\n {/* <Layer onBackdropClick={onClose} className={styles.layer}> */}\n <Layer\n onBackdropClick={(event: any, data: any) => onClose(event, data)}\n className={styles.layer}\n >\n <Popper reference={anchorRef} placement=\"bottom-start\">\n <FlyoutMenu>\n {dropDownOptions.map((dropDownOption, index) => (\n <MenuItem\n key={index}\n destructive={dropDownOption.destructive}\n label={dropDownOption.label}\n icon={dropDownOption.icon}\n onClick={() => {\n onMenuClick(dropDownOption);\n onClose();\n }}\n dense\n />\n ))}\n </FlyoutMenu>\n </Popper>\n </Layer>\n {CurrentModal && (\n <CurrentModal\n onClose={() => {\n onClose();\n setCurrentModal!(null);\n }}\n />\n )}\n </>\n );\n};\n\nexport const DropdownMenu = (props: {\n dropdownOptions: DropdownMenuOption[];\n onClick: (dropdownOption: DropdownMenuOption) => void;\n}) => {\n const ref = useRef();\n const [visible, setVisible] = useState(false);\n const { dropdownOptions, onClick } = props;\n return (\n <div ref={ref as any} style={{ display: 'inline-block' }}>\n <Button\n small\n secondary\n icon={<IconMore24 color={colors.grey600} />}\n onClick={() => setVisible(true)}\n ></Button>\n {visible && (\n <ContextMenu\n dropDownOptions={dropdownOptions}\n anchorRef={ref}\n onClose={() => setVisible(false)}\n onMenuClick={(dropDownOption) => {\n onClick(dropDownOption);\n }}\n />\n )}\n </div>\n );\n};\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport {\n ActionOptionOrientation,\n DropdownMenuOption,\n LineListActionOption,\n} from '../../models';\nimport { DropdownMenu } from '../dropdown-menu';\nimport React from 'react';\nimport { ButtonStrip, Button, colors } from '@dhis2/ui';\nimport { TableRow } from '../../models/line-list.models';\n\nexport const DataTableActions = (props: {\n data: TableRow;\n actionOptions: LineListActionOption[];\n actionOptionOrientation: ActionOptionOrientation;\n onClick: (dropdownOption: LineListActionOption) => void;\n}) => {\n const { data, actionOptions, actionOptionOrientation, onClick } = props;\n\n switch (actionOptionOrientation) {\n case 'BUTTON':\n return (\n <ButtonStrip>\n {actionOptions.map((option) => (\n <Button\n key={option.label}\n onClick={() => onClick(option)}\n icon={option.icon ? <option.icon /> : <></>}\n small\n destructive={option.destructive}\n >\n {!option.iconOnly ? option.label : ''}\n </Button>\n ))}\n </ButtonStrip>\n );\n\n case 'DROPDOWN':\n return (\n <DropdownMenu\n dropdownOptions={actionOptions}\n onClick={(option) => {\n onClick(option);\n }}\n />\n );\n\n case 'LINK':\n return (\n <div\n style={{\n display: 'flex',\n gap: 16,\n alignItems: 'center',\n }}\n >\n {actionOptions.map((option) => (\n <a\n style={{\n cursor: 'pointer',\n textDecoration: 'underline',\n fontSize: 14,\n display: 'flex',\n alignItems: 'center',\n gap: 4,\n color: option.destructive ? colors.red700 : colors.grey900,\n }}\n key={option.label}\n onClick={(event: any) => {\n event.stopPropagation();\n onClick(option);\n }}\n >\n {option.icon ? <option.icon /> : <></>}\n {!option.iconOnly ? <span>{option.label}</span> : <></>}\n </a>\n ))}\n </div>\n );\n\n default:\n return <></>;\n }\n};\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './data-table-actions';\n","import { DataTableCell } from '@dhis2/ui';\nimport React from 'react';\n\nexport const TableCell = ({\n cell,\n getTextColorFromBackGround,\n}: {\n cell: any;\n getTextColorFromBackGround: (color: string) => string;\n}) => {\n if (cell?.style && cell?.style !== 'default-value') {\n return (\n <DataTableCell>\n <div style={{ display: 'flex', justifyContent: 'center' }}>\n <span\n style={{\n backgroundColor: cell.style,\n display: 'inline-flex',\n alignItems: 'center',\n fontWeight: 'lighter',\n paddingTop: 4,\n paddingBottom: 4,\n paddingLeft: 8,\n paddingRight: 8,\n borderRadius: 3,\n fontSize: 12,\n color: getTextColorFromBackGround(cell.style),\n }}\n >\n {cell.value}\n </span>\n </div>\n </DataTableCell>\n );\n }\n\n return (\n <DataTableCell>\n <div className=\"text-sm text-gray-800\">{cell?.value || '-'}</div>\n </DataTableCell>\n );\n};\n","import { Checkbox, DataTableCell, DataTableRow } from '@dhis2/ui';\nimport React from 'react';\nimport { DataTableActions } from '../data-table-actions';\nimport { TableCell } from './tableCell';\n\nexport const TableRow = ({\n row,\n columns,\n getTextColorFromBackGround,\n actionOptions,\n actionOptionOrientation,\n actionSelected,\n isChecked,\n onToggle,\n selectable,\n showActionButtons,\n}: any) => {\n const handleCheckBoxChange = () => {\n onToggle(row);\n };\n\n return (\n <DataTableRow key={row.index.value} selected={isChecked}>\n {selectable && (\n <DataTableCell width=\"48px\">\n <Checkbox onChange={handleCheckBoxChange} checked={isChecked} />\n </DataTableCell>\n )}\n {columns.map((col: any) => {\n if (col.key === 'actions') {\n return (\n <DataTableCell key={col.key}>\n {actionOptions && showActionButtons && (\n <DataTableActions\n actionOptions={actionOptions}\n data={row}\n actionOptionOrientation={actionOptionOrientation}\n onClick={(option) => {\n const data = row['responseData']?.['value'];\n if (option.onClick) option.onClick(data);\n actionSelected.emit({\n action: option.label,\n data,\n });\n }}\n />\n )}\n </DataTableCell>\n );\n }\n\n return (\n <TableCell\n key={col.key}\n cell={row[col.key]}\n getTextColorFromBackGround={getTextColorFromBackGround}\n />\n );\n })}\n </DataTableRow>\n );\n};\n","import React from 'react';\nimport { TableBody as DHISTableBody, DataTableRow, DataTableCell } from '@dhis2/ui';\nimport { TableRow } from './tableRow';\n\n\n// export const TableBody = ({\n// data,\n// columns,\n// getTextColorFromBackGround,\n// actionOptions,\n// actionOptionOrientation,\n// actionSelected,\n// }: any) => (\n// <DHISTableBody>\n// {data.length > 0 ? (\n// data.map((row: any) => (\n// <TableRow\n// key={row.index.value}\n// row={row}\n// columns={columns}\n// getTextColorFromBackGround={getTextColorFromBackGround}\n// actionOptions={actionOptions}\n// actionOptionOrientation={actionOptionOrientation}\n// actionSelected={actionSelected}\n// />\n// ))\n// ) : (\n// <DataTableRow>\n// <DataTableCell\n// colSpan={columns.length.toString()}\n// style={{\n// textAlign: 'center',\n// fontWeight: 'bold',\n// color: 'grey',\n// padding: '20px',\n// }}\n// >\n// No data found\n// </DataTableCell>\n// </DataTableRow>\n// )}\n// </DHISTableBody>\n// );\n\n\nexport const TableBody = ({\n data,\n columns,\n getTextColorFromBackGround,\n actionOptions,\n actionOptionOrientation,\n actionSelected,\n selectedRows,\n onRowToggle,\n selectable,\n showActionButtons\n}: any) => (\n <DHISTableBody>\n {data.length > 0 ? (\n data.map((row: any) => (\n <TableRow\n key={row.index.value}\n row={row}\n columns={columns}\n getTextColorFromBackGround={getTextColorFromBackGround}\n actionOptions={actionOptions}\n actionOptionOrientation={actionOptionOrientation}\n actionSelected={actionSelected}\n isChecked={selectedRows.some((r: { index: { value: any; }; }) => r.index?.value === row.index?.value)}\n onToggle={onRowToggle}\n selectable={selectable}\n showActionButtons={showActionButtons}\n />\n ))\n ) : (\n <DataTableRow>\n <DataTableCell\n colSpan={columns.length.toString()}\n style={{\n textAlign: 'center',\n fontWeight: 'bold',\n color: 'grey',\n padding: '20px',\n }}\n >\n No data found\n </DataTableCell>\n </DataTableRow>\n )}\n </DHISTableBody>\n);\n","import { Pagination as DHISPagination } from '@dhis2/ui';\nimport { Pager } from '@iapps/d2-web-sdk';\nimport React from 'react';\n\ntype PaginationProps = {\n pager: Pager;\n setPager: React.Dispatch<React.SetStateAction<Pager>>;\n };\n \nexport const Pagination = ({ pager, setPager }: PaginationProps) => {\n if (!pager || pager.page === undefined || pager.pageSize === undefined) {\n return null; //skip rendering until valid\n }\n \n return (\n <DHISPagination\n page={pager.page}\n pageCount={pager.pageCount}\n pageSize={pager.pageSize}\n total={pager.total}\n onPageChange={(page: number) =>\n setPager((prev: Pager) => new Pager({ ...prev, page }))\n }\n onPageSizeChange={(pageSize: number) =>\n setPager((prev: any) =>\n new Pager({\n ...prev,\n pageSize: Number(pageSize),\n page: 1,\n })\n )\n }\n pageSizes={['10', '20', '50', '100', '500']}\n />\n )\n }\n","\nimport { DataTableRow, DataTableCell, TableFoot } from '@dhis2/ui';\nimport React from 'react';\nimport { Pagination } from './pagination';\n\nexport const TableFooter = ({ pager, setPager, columns }: any) => {\n \n return (\n <TableFoot>\n <DataTableRow>\n <DataTableCell colSpan={columns.length.toString()}>\n <Pagination pager={pager} setPager={setPager} />\n </DataTableCell>\n </DataTableRow>\n </TableFoot>\n );\n };\n ","// import { DataTable } from '@dhis2/ui';\n// import React from 'react';\n// import { TableHeader } from './tableHeader';\n// //import { TableBody } from './TableBody';\n// import { TableFooter } from './tableFooter';\n// import { TableBody } from './tableBody';\n\n// export const LineListTable = ({\n// columns,\n// data,\n// pager,\n// setPager,\n// getTextColorFromBackGround,\n// actionOptions,\n// actionOptionOrientation,\n// actionSelected,\n// }: any) => {\n// return (\n// <DataTable>\n// <TableHeader columns={columns} data={data} />\n// <TableBody\n// data={data}\n// columns={columns}\n// getTextColorFromBackGround={getTextColorFromBackGround}\n// actionOptions={actionOptions}\n// actionOptionOrientation={actionOptionOrientation}\n// actionSelected={actionSelected}\n// />\n// <TableFooter columns={columns} pager={pager} setPager={setPager} />\n// </DataTable>\n// );\n// };\n\nimport React, { useState } from 'react';\nimport { DataTable } from '@dhis2/ui';\nimport { TableHeader } from './tableHeader';\nimport { TableBody } from './tableBody';\nimport { TableFooter } from './tableFooter';\nimport { TableRow } from '../../models/line-list.models';\n\nexport const LineListTable = ({\n columns,\n data,\n pager,\n setPager,\n getTextColorFromBackGround,\n actionOptions,\n actionOptionOrientation,\n actionSelected,\n selectable,\n rowsSelected,\n showActionButtons\n}: any) => {\n const [selectedRows, setSelectedRows] = useState<TableRow[]>([]);\n\n const handleRowToggle = (row: any) => {\n const exists = selectedRows.find(\n (r) => r.index?.value === row.index?.value\n );\n const updatedRows = exists\n ? selectedRows.filter((r) => r.index?.value !== row.index?.value)\n : [...selectedRows, row];\n\n setSelectedRows(updatedRows);\n rowsSelected.emit(\n updatedRows.map((row: TableRow) => row['responseData']?.value)\n );\n };\n\n const handleSelectAll = (checked: boolean) => {\n const updatedRows = checked ? data : [];\n setSelectedRows(updatedRows);\n rowsSelected.emit(updatedRows);\n };\n\n return (\n <DataTable>\n <TableHeader\n columns={columns}\n allSelected={selectedRows.length === data.length && data.length > 0}\n onSelectAll={handleSelectAll}\n selectable={selectable}\n showActionButtons={showActionButtons}\n />\n <TableBody\n data={data}\n columns={columns}\n getTextColorFromBackGround={getTextColorFromBackGround}\n actionOptions={actionOptions}\n actionOptionOrientation={actionOptionOrientation}\n actionSelected={actionSelected}\n selectedRows={selectedRows}\n onRowToggle={handleRowToggle}\n selectable={selectable}\n showActionButtons={showActionButtons}\n />\n <TableFooter columns={columns} pager={pager} setPager={setPager} />\n </DataTable>\n );\n};\n","import { Injectable } from '@angular/core';\nimport { NgxDhis2HttpClientService } from '@iapps/ngx-dhis2-http-client';\nimport { Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\n@Injectable()\nexport class LineListService {\n constructor(private httpClient: NgxDhis2HttpClientService) {}\n\n\n /**\n * Fetch orgUnit names for given orgUnit IDs\n */\n fetchOrgUnits(orgUnitIds: string[]): Observable<Map<string, string>> {\n const idsQuery = `filter=id:in:[${orgUnitIds}]`;\n return this.httpClient\n .get(`organisationUnits.json?fields=id,name&paging=false&${idsQuery}`)\n .pipe(\n map((response) => {\n const orgUnitsMap = new Map<string, string>();\n response.organisationUnits.forEach(\n (orgUnit: { id: string; name: string }) => {\n orgUnitsMap.set(orgUnit.id, orgUnit.name);\n }\n );\n return orgUnitsMap;\n })\n );\n}\n}","import {\n Attribute,\n DataValue,\n Program,\n TrackedEntityInstance,\n} from '@iapps/d2-web-sdk';\nimport {\n LineListResponse,\n ColumnDefinition,\n TableRow,\n TrackedEntityInstancesResponse,\n} from '../models/line-list.models';\nimport { parse, format } from 'date-fns';\n\nexport const getTrackedEntityTableData = (\n response: LineListResponse,\n programId: string,\n pager: any,\n metaData: Program\n): {\n columns: ColumnDefinition[];\n data: TableRow[];\n filteredEntityColumns: ColumnDefinition[];\n orgUnitLabel: string;\n} => {\n const teisRaw = (response.data as TrackedEntityInstancesResponse)\n .trackedEntityInstances;\n const teis: TrackedEntityInstance[] = Array.isArray(teisRaw)\n ? teisRaw\n : [teisRaw];\n\n const orgUnitLabel = metaData.orgUnitLabel as string;\n const orgUnitMap = (response.data as TrackedEntityInstancesResponse)\n .orgUnitsMap;\n\n const attributeColumns = metaData.displayInListTrackedEntityAttributes\n .sort((a, b) => a.sortOrder! - b.sortOrder!)\n .map((trackedEntityAttribute) => ({\n label: trackedEntityAttribute.formName ?? trackedEntityAttribute.name,\n key: trackedEntityAttribute.id,\n }));\n\n // const dataElementColumns = metaData.displayInListDataElements\n // .sort((a, b) => a.sortOrder! - b.sortOrder!)\n // .map((dataElement) => ({\n // label: dataElement.formName || dataElement.name,\n // key: dataElement.id,\n // }));\n\n const dataElementColumns = metaData\n .programStages!.sort((a, b) => a.sortOrder - b.sortOrder) // Sorts stages by sortOrder\n .flatMap((stage) =>\n stage\n .programStageDataElements!.filter((psde) => psde.displayInReports)\n .sort((a, b) => a.sortOrder - b.sortOrder) // Sorts data elements within stage\n .map((psde) => ({ \n label: psde.dataElement.formName || psde.dataElement.name,\n key: psde.dataElement.id,\n }))\n );\n\n const dataElementOptions = metaData.displayInListDataElements.map(\n (element) => ({\n id: element.id,\n options: element.optionSet?.options.map((opt) => ({\n name: opt.name,\n color: opt.style?.color,\n })),\n })\n );\n\n const tableColumns = [\n {\n label: orgUnitLabel || 'registering unit',\n key: 'orgUnit',\n },\n ...attributeColumns,\n ...dataElementColumns,\n ];\n\n const tableFilters = metaData.searchableTrackedEntityAttributes\n .sort((a, b) => a.sortOrder! - b.sortOrder!)\n .map((attr) => ({\n label: attr.name,\n key: attr.id,\n valueType: attr.valueType,\n options: attr.optionSet ?? undefined,\n }));\n\n const tableData = teis.map((tei: TrackedEntityInstance, idx: number) => {\n const row: TableRow = {\n trackedEntityInstance: { value: tei.trackedEntity },\n index: { value: (pager.page - 1) * pager.pageSize + idx + 1 },\n };\n\n const matchingEnrollment = tei.latestEnrollment;\n\n let attributesData = matchingEnrollment.attributes;\n\n const dataElementsData = matchingEnrollment!.events.flatMap(\n (event) => event.dataValues\n );\n\n attributesData = attributesData!.map((attr: any) => {\n if (attr?.valueType?.toLowerCase() === 'date') {\n try {\n return {\n ...attr,\n value: format(\n parse(attr.value, 'yyyy-MM-dd', new Date()),\n 'dd/MM/yyyy'\n ),\n };\n } catch {\n return { ...attr }; \n }\n }\n return attr;\n });\n // attributesData.forEach((attr: any) => {\n // const attributeMeta = metaData.programTrackedEntityAttributes?.find(\n // (metadata) => metadata.trackedEntityAttribute.id === attr.attribute\n // );\n\n // if (attributeMeta?.trackedEntityAttribute.optionSetValue) {\n // const optionSet = attributeMeta?.trackedEntityAttribute?.optionSet;\n\n // const option = optionSet?.options?.find(\n // (option) => option.code === attr.value\n // );\n\n // row[attr.attribute] = option\n // ? { value: option?.name }\n // : { value: attr.value };\n // } else {\n // row[attr.attribute] = { value: attr.value };\n // }\n // });\n attributesData.forEach((attr: any) => {\n const attributeMeta = metaData.programTrackedEntityAttributes?.find(\n (metadata) => metadata.trackedEntityAttribute.id === attr.attribute\n );\n \n const valueType = attributeMeta?.trackedEntityAttribute?.valueType;\n \n if (valueType === 'ORGANISATION_UNIT') {\n const orgUnitName = orgUnitMap?.get(attr.value);\n row[attr.attribute] = { value: orgUnitName || attr.value };\n } else if (attributeMeta?.trackedEntityAttribute.optionSetValue) {\n const optionSet = attributeMeta?.trackedEntityAttribute?.optionSet;\n \n const option = optionSet?.options?.find(\n (option) => option.code === attr.value\n );\n \n row[attr.attribute] = option\n ? { value: option?.name }\n : { value: attr.value };\n } else {\n row[attr.attribute] = { value: attr.value };\n }\n });\n \n\n dataElementsData.forEach((element: DataValue) => {\n // Finds the matching data element in dataElementOptions by ID\n const dataElementOption = dataElementOptions.find(\n (deo) => deo.id === element.dataElement\n );\n\n // finds a matching option within that data element's options\n const matchingOption = dataElementOption?.options?.find(\n (opt) => opt.name === element.value\n );\n\n // Builds the row entry with value and optional style\n if (matchingOption) {\n row[element.dataElement] = {\n value: element.value,\n style: matchingOption.color,\n };\n } else {\n row[element.dataElement] = {\n value: element.value,\n };\n }\n });\n\n // Includes orgUnit in the row for id access with style\n row['orgUnitId'] = { value: matchingEnrollment!.orgUnit };\n row['orgUnit'] = {\n value: orgUnitMap?.get(matchingEnrollment!.orgUnit) || '-',\n };\n row['responseData'] = { value: tei.toObject() as TrackedEntityInstance };\n return row;\n });\n\n return {\n columns: tableColumns,\n data: tableData,\n filteredEntityColumns: tableFilters,\n orgUnitLabel: orgUnitLabel,\n };\n};\n\nexport const addActionsColumn = (\n columns: ColumnDefinition[],\n actionOptions?: any[]\n): ColumnDefinition[] => {\n return [\n ...columns,\n ...(actionOptions && actionOptions.length > 0\n ? [{ label: 'Actions', key: 'actions' }]\n : []),\n ];\n};\n","import { Program } from '@iapps/d2-web-sdk';\nimport { FilterConfig } from '../models/filter-config.model';\nimport {\n LineListResponse,\n ColumnDefinition,\n TableRow,\n EventsResponse,\n} from '../models/line-list.models';\n\nexport const getEvents = (\n response: LineListResponse,\n programStageId: string,\n pager: any,\n metaData: Program\n): { columns: ColumnDefinition[]; data: TableRow[] } => {\n const events = (response.data as EventsResponse).events;\n const eventsiiii = response.data;\n const allDataElements = new Set<string>();\n\n events.forEach((event: any) => {\n event.dataValues.forEach((dv: any) => allDataElements.add(dv.dataElement));\n });\n\n let stageFromMetaData;\n if (programStageId) {\n stageFromMetaData = metaData.programStages!.find(\n (stage: any) => stage.id === programStageId\n );\n } else if (metaData.programType === 'WITHOUT_REGISTRATION') {\n stageFromMetaData = metaData.programStages![0];\n }\n\n if (!stageFromMetaData) {\n throw new Error(`Program stage with ID ${programStageId} not found`);\n }\n\n const entityColumns = Array.from(allDataElements).map(\n (dataElementId: string) => {\n const dataElementMeta = stageFromMetaData.programStageDataElements!.find(\n (psde: any) => psde.dataElement.id === dataElementId\n );\n\n return {\n label: dataElementMeta?.dataElement.name || dataElementId,\n key: dataElementId,\n };\n }\n );\n\n const dataElementsData: TableRow[] = events.map((event: any, idx: number) => {\n const row: TableRow = {\n event: { value: event.event },\n index: {\n value: (pager.page - 1) * pager.pageSize + idx + 1,\n },\n };\n\n allDataElements.forEach((dataElementId: string) => {\n row[dataElementId] = { value: '' };\n });\n\n event.dataValues.forEach((dv: any) => {\n const dataElementMeta = stageFromMetaData.programStageDataElements!.find(\n (psde: any) => psde.dataElement.id === dv.dataElement\n );\n\n if (dataElementMeta?.dataElement.optionSet) {\n const optionSet = dataElementMeta.dataElement.optionSet;\n const matchingOption = optionSet.options.find(\n (option: any) => option.code === dv.value\n );\n\n row[dv.dataElement] = matchingOption\n ? { value: matchingOption.name }\n : { value: dv.value };\n } else {\n row[dv.dataElement] = { value: dv.value };\n }\n });\n\n return row;\n });\n\n\n return { columns: entityColumns, data: dataElementsData };\n};\n","import {\n Component,\n EventEmitter,\n inject,\n Input,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { CircularLoader, colors, DropdownButton, MenuItem } from '@dhis2/ui';\nimport {\n D2Window,\n DataFilterCondition,\n DataOrderCriteria,\n DataQueryFilter,\n DHIS2Event,\n EnrollmentStatus,\n EventStatus,\n OuMode,\n Pager,\n Program,\n TrackedEntityInstance,\n} from '@iapps/d2-web-sdk';\nimport React, { useEffect, useRef, useState } from 'react';\nimport * as ReactDOM from 'react-dom/client';\nimport { ReactWrapperModule } from '../../react-wrapper/react-wrapper.component';\nimport { OrgUnitSelector } from '../components/orgUnitSelector';\nimport { FilterToolbar } from '../components/table/filterToolbar';\nimport { LineListTable } from '../components/table/lineListTable';\nimport { ActionOptionOrientation, LineListActionOption } from '../models';\nimport { AttributeFilter } from '../models/attribute-filter.model';\nimport {\n ColumnDefinition,\n EventsResponse,\n TableRow,\n TrackedEntityInstancesResponse,\n} from '../models/line-list.models';\nimport { LineListService } from '../services/line-list.service';\nimport {\n addActionsColumn,\n getTrackedEntityTableData,\n} from '../utils/tei-table-data-utils';\nimport { getEvents } from '../utils/event-table-data-util';\nimport * as XLSX from 'xlsx';\nimport { addDays, format } from 'date-fns';\nimport { firstValueFrom } from 'rxjs';\n\n@Component({\n selector: 'ng-dhis2-ui-line-list',\n template: '<ng-content></ng-content>',\n styleUrls: ['./line-list.component.scss'],\n standalone: false,\n})\nexport class LineListTableComponent extends ReactWrapperModule {\n @Input() triggerToken!: string;\n @Input() programId!: string;\n @Input() orgUnit!: string;\n @Input() programStageId?: string;\n @Input() actionOptions?: LineListActionOption[];\n @Input() actionOptionOrientation: ActionOptionOrientation = 'DROPDOWN';\n @Input() attributeFilters?: AttributeFilter[];\n @Input() useOuModeWithOlderDHIS2Instance?: boolean;\n @Input() startDate?: string;\n @Input() endDate?: string;\n @Input() dataQueryFilters?: DataQueryFilter[] = [];\n @Input() ouMode?: string;\n @Input() isButtonLoading = false;\n @Input() buttonFilter!: string;\n @Input() filterRootOrgUnit = false;\n @Input() showFilters = false;\n @Input() isOptionSetNameVisible = false;\n @Input() allowRowsSelection = false;\n @Input() enrollmentStatus!: EnrollmentStatus;\n @Input() filterableColumnIds!: string[];\n @Input() triggerRefetch = false;\n @Input() eventStatus!: {\n programStage: string;\n status: EventStatus;\n };\n @Output() actionSelected = new EventEmitter<{\n action: string;\n data: TrackedEntityInstance | DHIS2Event;\n }>();\n @Output() rowsSelected = new EventEmitter<\n TrackedEntityInstance[] | DHIS2Event[]\n >();\n @Input() showActionButtons = true;\n @Input() showEnrollmentDates = true;\n @Input() showDownloadButton = false;\n private reactStateUpdaters: any = null;\n\n setReactStateUpdaters = (updaters: any) => {\n this.reactStateUpdaters = updaters;\n };\n\n ngOnChanges(changes: SimpleChanges) {\n if (this.reactStateUpdaters) {\n if (changes['triggerToken']) {\n this.reactStateUpdaters.setTriggerTokenState(this.triggerToken);\n this.reactStateUpdaters.setTriggerRefetch(this.triggerRefetch);\n }\n if (changes['programId']) {\n this.reactStateUpdaters.setProgramIdState(this.programId);\n }\n if (changes['isOptionSetNameVisible']) {\n this.reactStateUpdaters.setOptionSetNameVisible(\n this.isOptionSetNameVisible\n );\n }\n if (changes['orgUnit']) {\n this.reactStateUpdaters.setOrgUnitState(this.orgUnit);\n }\n if (changes['programStageId']) {\n this.reactStateUpdaters.setProgramStageIdState(this.programStageId);\n }\n if (changes['attributeFilters']) {\n this.reactStateUpdaters.setAttributeFiltersState(this.attributeFilters);\n }\n if (changes['startDate']) {\n this.reactStateUpdaters.setStartDateState(this.startDate);\n }\n if (changes['endDate']) {\n this.reactStateUpdaters.setEndDateState(this.endDate);\n }\n if (changes['isButtonLoading']) {\n this.reactStateUpdaters.setIsButtonLoading(this.isButtonLoading);\n }\n if (changes['allowRowsSelection']) {\n this.reactStateUpdaters.setIsButtonLoading(this.allowRowsSelection);\n }\n if (changes['triggerRefetch']) {\n this.reactStateUpdaters.setTriggerRefetch(this.triggerRefetch);\n }\n }\n }\n\n lineListService = inject(LineListService);\n\n LineList = () => {\n const [columns, setColumns] = useState<ColumnDefinition[]>([]);\n const [data, setData] = useState<TableRow[]>([]);\n const [pager, setPager] = useState<Pager>(\n new Pager({\n page: 1,\n pageSize: 10,\n total: 0,\n pageCount: 1,\n })\n );\n const [triggerTokenState, setTriggerTokenState] = useState<\n string | undefined\n >(this.triggerToken);\n const [programIdState, setProgramIdState] = useState<string>(\n this.programId\n );\n const [isOptionSetNameVisibleState, setOptionSetNameVisible] =\n useState<boolean>(this.isOptionSetNameVisible);\n const [orgUnitState, setOrgUnitState] = useState<string>(this.orgUnit);\n const [tempOrgUnitState, setTempOrgUnitState] = useState<string>(\n this.orgUnit\n );\n const [programStageIdState, setProgramStageIdState] = useState<\n string | undefined\n >(this.programStageId);\n const [attributeFiltersState, setAttributeFiltersState] = useState<\n AttributeFilter[] | undefined\n >(this.attributeFilters);\n const [dataQueryFiltersState, setDataQueryFiltersState] = useState<\n DataQueryFilter[]\n >(this.dataQueryFilters as DataQueryFilter[]);\n const [tempDataQueryFiltersState, setTempDataQueryFiltersState] = useState<\n DataQueryFilter[]\n >(this.dataQueryFilters as DataQueryFilter[]);\n const [startDateState, setStartDateState] = useState<string | undefined>(\n this.startDate\n );\n const [tempStartDateState, setTempStartDateState] = useState<\n string | undefined\n >(this.startDate);\n const [endDateState, setEndDateState] = useState<string | undefined>(\n this.endDate\n );\n const [tempEndDateState, setTempEndDateState] = useState<\n string | undefined\n >(this.endDate);\n const [loading, setLoading] = useState<boolean>(false);\n const [metaDataLoadng, setMetaDataLoading] = useState<boolean>(false);\n const [filteredColumns, setFilteredColumns] =\n useState<ColumnDefinition[]>();\n const [inputValues, setInputValues] = useState<Record<string, string>>({});\n const [orgUnitLabel, setOrgUnitLabel] = useState<string>('');\n const [selectedOrgUnit, setSelectedOrgUnit] = useState<string>('');\n const [hide, setHide] = useState<boolean>(true);\n const [showAllFilters, setShowAllFilters] = useState(false);\n const visibleFilters = showAllFilters\n ? filteredColumns ?? []\n : (filteredColumns ?? []).slice(0, 0);\n // const visibleFilters = showAllFilters\n // ? filteredColumns ?? []\n // : filteredColumns ?? []).slice(0, 2);\n const defaultOrgUnit = this.orgUnit;\n const [prevValue, setPrevValue] = useState<string>();\n const [dateStates, setDateStates] = useState<{ [key: string]: string }>({});\n const [metaData, setMetaData] = useState<Program | null>(null);\n const [selectable, setSelectable] = useState<boolean>(\n this.allowRowsSelection\n );\n const [triggerRefetch, setTriggerRefetch] = useState<boolean>(\n this.triggerRefetch\n );\n const [showActionButtons, setShowActionButtons] = useState<boolean>(\n this.showActionButtons\n );\n const [orgUnitModalVisible, setOrgUnitModalVisible] =\n useState<boolean>(false);\n const [error, setError] = useState<string | null>(null);\n\n const d2 = (window as unknown as D2Window).d2Web;\n\n // Stores updaters in refs for Angular to access\n const updateRefs = useRef({\n setProgramIdState,\n setOrgUnitState,\n setProgramStageIdState,\n setAttributeFiltersState,\n setStartDateState,\n setEndDateState,\n setOptionSetNameVisible,\n setSelectable,\n setTriggerRefetch,\n setTriggerTokenState,\n });\n\n // useEffect(() => {\n // this.setReactStateUpdaters?.(updateRefs.current);\n // }, []);\n\n useEffect(() => {\n this.setReactStateUpdaters?.(updateRefs.current);\n const fetchmetaData = async () => {\n setLoading(true);\n if (!this.programId) {\n setMetaData(null);\n setLoading(false);\n return;\n }\n\n setError(null);\n try {\n const trackerResponse = (await d2.trackerModule.trackedEntity\n .setProgram(this.programId)\n .getMetaData({ skipProgramRules: true })) as Program;\n if (!trackerResponse || !trackerResponse.programType) {\n throw new Error('failed to load data.');\n }\n const data = trackerResponse;\n setMetaData(data);\n } catch (error) {\n setError(error as string);\n setLoading(false);\n }\n };\n\n fetchmetaData();\n }, []);\n\n useEffect(() => {\n if (!metaData) {\n return undefined;\n }\n const isTracker = metaData.programType === 'WITH_REGISTRATION';\n const isEvent = metaData.programType === 'WITHOUT_REGISTRATION';\n const endDate =\n endDateState ?? format(addDays(new Date(), 1), 'yyyy-MM-dd');\n\n if (this.programStageId || isEvent) {\n setLoading(true);\n d2.eventModule.event\n .setEndDate(endDate)\n .setStartDate(startDateState as string)\n .setProgram(this.programId)\n .setProgramStage(this.programStageId as string)\n .setOrgUnit(orgUnitState)\n .setOuMode(this.ouMode as OuMode)\n .setPagination(\n new Pager({\n pageSize: pager.pageSize,\n page: pager.page,\n })\n )\n .get()\n .then((response) => {\n const eventsResponse: EventsResponse = {\n events: response.data!,\n pager: pager,\n // orgUnitsMap: fetchedOrgUnits,\n };\n const { columns, data } = getEvents(\n { data: eventsResponse },\n this.programStageId as string,\n pager,\n metaData\n );\n\n // const filterableColumnIdsSet = new Set(\n // this.filterableColumnIds\n // );\n\n // const updatedFilterableColumnIds: ColumnDefinition[] =\n // columns.filter((column) =>\n // filterableColumnIdsSet.has(column.key)\n // );\n\n // const finalColumns: ColumnDefinition[] = addActionsColumn(\n // [{ label: '#', key: 'index' }, ...updatedFilterableColumnIds],\n // this.actionOptions\n // );\n\n let updatedFilterableColumnIds: ColumnDefinition[];\n\n if (\n Array.isArray(this.filterableColumnIds) &&\n this.filterableColumnIds.length > 0\n ) {\n const filterableColumnIdsSet = new Set(this.filterableColumnIds);\n updatedFilterableColumnIds = columns.filter((column) =>\n filterableColumnIdsSet.has(column.key)\n );\n } else {\n updatedFilterableColumnIds = columns;\n }\n\n const finalColumns: ColumnDefinition[] = addActionsColumn(\n [{ label: '#', key: 'index' }, ...updatedFilterableColumnIds],\n this.actionOptions\n );\n\n const pagerResponse = response.pagination;\n\n setLoading(false);\n setColumns(finalColumns);\n setData(data);\n setPager(new Pager(pagerResponse || {}));\n });\n } else if (isTracker) {\n const fetchTrackerData = async () => {\n try {\n setLoading(true);\n const response = await d2.trackerModule.trackedEntity\n .setEndDate(endDate)\n .setStartDate(startDateState as string)\n .setProgram(this.programId)\n .setProgramStage(this.programStageId as string)\n .setOrgUnit(orgUnitState)\n .setOuMode(this.ouMode as OuMode)\n .setStatus(this.enrollmentStatus)\n .setEventStatus(\n this.eventStatus?.status,\n this.eventStatus?.programStage\n )\n .setFilters(dataQueryFiltersState)\n .setPagination(\n new Pager({\n pageSize: pager.pageSize,\n page: pager.page,\n })\n )\n .setOrderCriterias([\n new DataOrderCriteria().setField('createdAt').setOrder('desc'),\n ])\n .get(\n \n );\n\n const trackedEntityInstances = Array.isArray(response.data)\n ? response.data\n : ([response.data] as TrackedEntityInstance[]);\n const orgUnitIdsFromEnrollments = new Set(\n trackedEntityInstances.map(\n (tei: TrackedEntityInstance) => tei.latestEnrollment.orgUnit\n )\n ) as Set<string>;\n\n const orgUnitsFromAttributes = new Set(\n trackedEntityInstances.flatMap(\n (tei: TrackedEntityInstance) =>\n tei.attributes\n ?.filter(\n (attr: any) => attr.valueType === 'ORGANISATION_UNIT'\n )\n .map((attr: any) => attr.value) || []\n )\n );\n\n const uniqueOrgUnitIds = [\n ...orgUnitIdsFromEnrollments,\n ...orgUnitsFromAttributes,\n ];\n\n const fetchedOrgUnits = await firstValueFrom(\n this.lineListService.fetchOrgUnits(uniqueOrgUnitIds)\n );\n\n const trackedEntityResponse: TrackedEntityInstancesResponse = {\n trackedEntityInstances: response.data!,\n pager: pager,\n orgUnitsMap: fetchedOrgUnits,\n };\n\n const { columns, data, filteredEntityColumns, orgUnitLabel } =\n getTrackedEntityTableData(\n { data: trackedEntityResponse },\n this.programId,\n pager,\n metaData\n );\n\n setFilteredColumns((prev) =>\n filteredEntityColumns.length > 0 ? filteredEntityColumns : prev\n );\n\n let updatedFilterableColumnIds: ColumnDefinition[];\n\n if (\n Array.isArray(this.filterableColumnIds) &&\n this.filterableColumnIds.length > 0\n ) {\n const filterableColumnIdsSet = new Set(this.filterableColumnIds);\n updatedFilterableColumnIds = columns.filter((column) =>\n filterableColumnIdsSet.has(column.key)\n );\n } else {\n updatedFilterableColumnIds = columns;\n }\n\n const finalColumns: ColumnDefinition[] = addActionsColumn(\n [{ label: '#', key: 'index' }, ...updatedFilterableColumnIds],\n this.actionOptions\n );\n\n // const finalColumns: ColumnDefinition[] = addActionsColumn(\n // [{ label: '#', key: 'index' }, ...columns],\n // this.actionOptions\n // );\n\n const pagerResponse = response.pagination;\n\n // setLoading(false);\n setColumns(finalColumns);\n setData(data);\n setPager(new Pager(pagerResponse || {}));\n setOrgUnitLabel(orgUnitLabel);\n } catch (error) {\n console.error('Failed to fetch tracker data:', error);\n setError('Could not load records. Please reload.');\n } finally {\n setLoading(false);\n }\n };\n fetchTrackerData();\n }\n }, [\n metaData,\n programIdState,\n orgUnitState,\n programStageIdState,\n attributeFiltersState,\n startDateState,\n endDateState,\n pager.page,\n pager.pageSize,\n isOptionSetNameVisibleState,\n dataQueryFiltersState,\n triggerRefetch,\n triggerTokenState,\n ]);\n\n const handleExcelDownload = () => {\n const filteredColumns = columns.filter((col) => col.label !== 'Actions');\n const header = filteredColumns.map((col) => col.label);\n const rows = data.map((row) =>\n filteredColumns.map((col) => {\n const cell = row[col.key];\n if (cell === null || cell === undefined) return '';\n return typeof cell === 'object' && 'value' in cell\n ? cell.value\n : cell;\n })\n );\n const worksheetData = [header, ...rows];\n\n // Creates worksheet and workbook, then writes to file\n const worksheet = XLSX.utils.aoa_to_sheet(worksheetData);\n const workbook = XLSX.utils.book_new();\n XLSX.utils.book_append_sheet(workbook, worksheet, 'LineListData');\n XLSX.writeFile(workbook, 'records.xlsx');\n };\n\n const handleCsvDownload = () => {\n const safeValue = (value: any) => {\n if (value === null || value === undefined) return '';\n if (typeof value === 'object') {\n if ('value' in value) {\n return value.value;\n }\n return JSON.stringify(value);\n }\n return value;\n };\n\n const filteredColumns = columns.filter((col) => col.label !== 'Actions');\n const header = filteredColumns.map((col) => `\"${col.label}\"`).join(',');\n const csvData = data.map((row) =>\n filteredColumns.map((col) => `\"${safeValue(row[col.key])}\"`).join(',')\n );\n const csvContent = [header, ...csvData].join('\\n');\n\n // Creates a Blob and triggers the download\n const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });\n const url = URL.createObjectURL(blob);\n\n const link = document.createElement('a');\n link.href = url;\n link.setAttribute('download', 'records.csv');\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n };\n\n const handleInputChange = (key: string, value: string) => {\n setInputValues((prevValues) => ({\n ...prevValues,\n [key]: value ?? '',\n }));\n\n setTempDataQueryFiltersState((prevFilters) => {\n // Removes old filter for this key\n const filteredFilters = prevFilters.filter((f) => f.attribute !== key);\n\n // adds new filter only if value is not empty\n const updatedFilters = value.trim()\n ? [\n ...filteredFilters,\n new DataQueryFilter()\n .setAttribute(key)\n .setCondition(DataFilterCondition.Like)\n .setValue(value),\n ]\n : filteredFilters;\n\n return updatedFilters;\n });\n };\n\n //TODO: MERGE THIS WITH HANDLE INPUT CHANGE PUT A CHECK FOR IF ITS A SELECT FIELD TO USE EQ\n const handleInputChangeForSelectField = (key: string, value: string) => {\n setInputValues((prevValues) => ({\n ...prevValues,\n [key]: value ?? '',\n }));\n\n setTempDataQueryFiltersState((prevFilters = []) => {\n // Removes existing filter for the same key (attribute)\n const filteredFilters = prevFilters.filter((f) => f.attribute !== key);\n\n // adds new filter only if value is not empty\n const updatedFilters = value.trim()\n ? [\n ...filteredFilters,\n new DataQueryFilter()\n .setAttribute(key)\n .setCondition(DataFilterCondition.Equal)\n .setValue(value),\n ]\n : filteredFilters;\n\n return updatedFilters;\n });\n };\n\n const handleDateSelect = (key: string, selectedDate: any) => {\n const selectedDateString = selectedDate?.calendarDateString ?? '';\n\n // Updates dateStates\n setDateStates((prevDateStates) => ({\n ...prevDateStates,\n [key]: selectedDateString,\n }));\n\n // Updates dataQueryFilters\n setTempDataQueryFiltersState((prevFilters) => {\n const filteredFilters = (prevFilters || []).filter(\n (f) => f.attribute !== key\n );\n\n const updatedFilters = selectedDateString.trim()\n ? [\n ...filteredFilters,\n new DataQueryFilter()\n .setAttribute(key)\n .setCondition(DataFilterCondition.Equal)\n .setValue(selectedDateString),\n ]\n : filteredFilters;\n\n return updatedFilters;\n });\n };\n\n const handleSearch = () => (\n setDataQueryFiltersState(tempDataQueryFiltersState),\n setStartDateState(tempStartDateState),\n setEndDateState(tempEndDateState),\n setOrgUnitState(tempOrgUnitState)\n );\n\n function getTextColorFromBackGround(hex: string): string {\n // Removes the hash if present\n hex = hex.replace('#', '');\n\n // Converts to RGB\n const r = parseInt(hex.substr(0, 2), 16);\n const g = parseInt(hex.substr(2, 2), 16);\n const b = parseInt(hex.substr(4, 2), 16);\n\n // YIQ formula to calculate brightness\n const yiq = (r * 299 + g * 587 + b * 114) / 1000;\n\n // Returns black for light backgrounds, white for dark backgrounds\n return yiq >= 128 ? colors.grey700 : '#FFFFFF';\n }\n\n return (\n <div>\n {loading ? (\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n padding: 8,\n }}\n >\n <CircularLoader small />\n <div\n style={{\n fontSize: 14,\n }}\n >\n Loading\n </div>\n </div>\n ) : (\n <div>\n {this.showDownloadButton && (\n <div\n style={{\n paddingBottom: '1rem',\n display: 'flex',\n justifyContent: 'flex-end',\n }}\n >\n <DropdownButton\n name=\"Download\"\n component={\n <span>\n {' '}\n <MenuItem\n label=\"Download Csv\"\n onClick={handleCsvDownload}\n />\n <MenuItem\n label=\"Download Excel\"\n onClick={handleExcelDownload}\n />\n </span>\n }\n value=\"Download\"\n >\n Download\n </DropdownButton>\n </div>\n )}\n {orgUnitModalVisible && (\n <OrgUnitSelector\n hide={hide}\n setHide={setHide}\n selectedOrgUnit={selectedOrgUnit}\n setSelectedOrgUnit={setSelectedOrgUnit}\n setOrgUnitState={setOrgUnitState}\n setTempOrgUnitState={setTempOrgUnitState}\n tempOrgUnitState={tempOrgUnitState}\n />\n )}\n\n {this.showFilters && (\n <FilterToolbar\n orgUnitLabel={orgUnitLabel}\n selectedOrgUnit={selectedOrgUnit}\n setSelectedOrgUnit={setSelectedOrgUnit}\n setOrgUnitState={setOrgUnitState}\n defaultOrgUnit={defaultOrgUnit}\n setHide={setHide}\n startDateState={startDateState}\n setStartDateState={setStartDateState}\n endDateState={endDateState}\n setEndDateState={setEndDateState}\n visibleFilters={visibleFilters}\n dateStates={dateStates}\n inputValues={inputValues}\n setInputValues={setInputValues}\n handleInputChange={handleInputChange}\n handleInputChangeForSelectField={\n handleInputChangeForSelectField\n }\n handleDateSelect={handleDateSelect}\n prevValue={prevValue}\n setPrevValue={setPrevValue}\n showAllFilters={showAllFilters}\n setShowAllFilters={setShowAllFilters}\n handleSearch={handleSearch}\n setTempStartDateState={setTempStartDateState}\n setTempEndDateState={setTempEndDateState}\n setTempOrgUnitState={setTempOrgUnitState}\n tempStartDateState={tempStartDateState}\n tempEndDateState={tempEndDateState}\n tempOrgUnitState={tempOrgUnitState}\n dataQueryFiltersState={dataQueryFiltersState}\n setDataQueryFiltersState={setDataQueryFiltersState}\n SetOrgUnitModalVisible={setOrgUnitModalVisible}\n showEnrollmentDates={this.showEnrollmentDates}\n // filteredFilters={filteredFilters}\n />\n )}\n <LineListTable\n columns={columns}\n data={data}\n pager={pager}\n setPager={setPager}\n getTextColorFromBackGround={getTextColorFromBackGround}\n actionOptions={this.actionOptions}\n actionOptionOrientation={this.actionOptionOrientation}\n actionSelected={this.actionSelected}\n selectable={selectable}\n rowsSelected={this.rowsSelected}\n showActionButtons={showActionButtons}\n />\n </div>\n )}\n </div>\n );\n };\n\n override async ngAfterViewInit() {\n if (!this.elementRef) throw new Error('No element ref');\n this.reactDomRoot = ReactDOM.createRoot(this.elementRef.nativeElement);\n\n this.component = this.LineList;\n this.render();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SharedDhis2UiModule } from '../../shared/shared.module';\nimport { LineListTableComponent } from './containers/line-list.component';\nimport { LineListService } from './services/line-list.service';\nimport { ReactWrapperModule } from '../react-wrapper/react-wrapper.component';\n@NgModule({\n declarations: [LineListTableComponent],\n exports: [LineListTableComponent],\n imports: [CommonModule, SharedDhis2UiModule, ReactWrapperModule],\n providers: [LineListService],\n})\nexport class LineListModule {}\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport { DHIS2Event, TrackedEntityInstance } from '@iapps/d2-web-sdk';\nimport { DropdownMenuOption } from './dropdown-menu.model';\n\nexport interface LineListActionOption extends DropdownMenuOption {\n condition?: string;\n onClick?: (tableRow: TrackedEntityInstance | DHIS2Event) => void;\n}\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './action-option-orientation.model';\nexport * from './dropdown-menu.model';\nexport * from './line-list-action-option.model';\n","export const dropdownStyles = {\n layer: {\n zIndex: '1 !important',\n },\n};\n","import { set } from \"lodash\";\nimport { useEffect, useState, useRef } from \"react\";\n\n// Helper function to generate a unique class name\nconst generateClassName = (base: string) =>\n `${base}-${Math.random().toString(36).substr(2, 9)}`;\n\n// Helper function to convert camelCased properties to hyphenated CSS properties\nconst convertStylesToCSS = (\n className: string,\n styles: React.CSSProperties | any\n) => {\n let cssString = `.${className} {`;\n for (const key in styles) {\n if (typeof styles[key] === \"object\" && key.startsWith(\"@media\")) {\n const mediaStyles = convertStylesToCSS(className, styles[key]);\n cssString += `${key} { ${mediaStyles} }`;\n } else if (key.startsWith(\"&:\")) {\n const pseudoClass = key.replace(\"&\", \"\");\n cssString += `${pseudoClass} { ${convertStylesToCSS(\"\", styles[key])} }`;\n } else {\n const cssKey = key.replace(\n /[A-Z]/g,\n (match) => `-${match.toLowerCase()}`\n );\n cssString += `${cssKey}: ${styles[key]}; `;\n }\n }\n cssString += \"}\";\n return cssString;\n};\n\n// Custom hook for dynamic styles with generics\n\nexport const useDynamicStyles = <\n T extends Record<string, React.CSSProperties | any>\n>(\n stylesObj: T\n) => {\n const [classNames, setClassNames] = useState<{ [K in keyof T]: string }>(\n {} as { [K in keyof T]: string }\n );\n useEffect(() => {\n const convertedStyles = Object.keys(stylesObj).map((key) => {\n const className = generateClassName(key);\n const styleElement = document.createElement(\"style\");\n styleElement.innerHTML = convertStylesToCSS(className, stylesObj[key]);\n document.head.appendChild(styleElement);\n\n return {\n key,\n className,\n styleElement,\n };\n });\n\n setClassNames(\n convertedStyles.reduce((classNameEntity, convertedStyle) => {\n return {\n ...classNameEntity,\n [convertedStyle.key]: convertedStyle.className,\n };\n }, {} as { [K in keyof T]: string })\n );\n\n return () => {\n convertedStyles.forEach((convertedStyle) => {\n document.head.removeChild(convertedStyle.styleElement);\n });\n };\n }, []);\n\n return classNames;\n};\n","import {\n Button,\n colors,\n FlyoutMenu,\n IconMore24,\n Layer,\n MenuItem,\n Popper,\n} from \"@dhis2/ui\";\nimport React, { useRef, useState } from \"react\";\nimport { dropdownStyles } from \"./dropdown-menu.styles\";\nimport { useDynamicStyles } from \"../../hooks\";\n\nexport interface DropdownMenuOption {\n id?: string;\n label: string;\n description?: string;\n icon?: any;\n destructive?: boolean;\n onClick?: Function;\n}\n\nconst useCurrentModal = () => {\n const [CurrentModal, setCurrentModal] = useState();\n\n return [\n CurrentModal,\n (Modal: any) => {\n // As setState supports functional updates, we can't pass functional\n // components directly\n setCurrentModal(() => Modal);\n },\n ] as any;\n};\n\nexport const ContextMenu = (params: {\n dropDownOptions: DropdownMenuOption[];\n anchorRef: any;\n onClose: Function;\n onMenuClick: (dropdownOption: DropdownMenuOption) => void;\n}) => {\n const { onClose, onMenuClick, anchorRef, dropDownOptions } = params;\n const [CurrentModal, setCurrentModal] = useCurrentModal();\n\n const styles = useDynamicStyles(dropdownStyles);\n\n return (\n <>\n {/* <Layer onBackdropClick={onClose} className={styles.layer}> */}\n <Layer onBackdropClick={(event: any, data: any) => onClose(event, data)} className={styles.layer}>\n <Popper reference={anchorRef} placement=\"bottom-start\">\n <FlyoutMenu>\n {dropDownOptions.map((dropDownOption, index) => (\n <MenuItem\n key={index}\n destructive={dropDownOption.destructive}\n label={dropDownOption.label}\n icon={dropDownOption.icon}\n onClick={() => {\n onMenuClick(dropDownOption);\n onClose();\n }}\n dense\n />\n ))}\n </FlyoutMenu>\n </Popper>\n </Layer>\n {CurrentModal && (\n <CurrentModal\n onClose={() => {\n onClose();\n setCurrentModal!(null);\n }}\n />\n )}\n </>\n );\n};\n\nexport const DropdownMenu = (props: {\n dropdownOptions: DropdownMenuOption[];\n onClick: (dropdownOption: DropdownMenuOption) => void;\n}) => {\n const ref = useRef();\n const [visible, setVisible] = useState(false);\n const { dropdownOptions, onClick } = props;\n return (\n <div ref={ref as any} style={{ display: \"inline-block\" }}>\n <Button\n small\n secondary\n icon={<IconMore24 color={colors.grey600} />}\n onClick={() => setVisible(true)}\n ></Button>\n {visible && (\n <ContextMenu\n dropDownOptions={dropdownOptions}\n anchorRef={ref}\n onClose={() => setVisible(false)}\n onMenuClick={(dropDownOption) => {\n onClick(dropDownOption);\n }}\n />\n )}\n </div>\n );\n};\n","import {\n Component,\n Input,\n AfterViewInit,\n EventEmitter,\n Output,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\nimport {\n CircularLoader,\n DataTable,\n TableHead,\n DataTableRow,\n DataTableColumnHeader,\n TableBody,\n DataTableCell,\n TableFoot,\n} from '@dhis2/ui';\nimport React, { useState, useEffect } from 'react';\n\nimport { ReactWrapperModule } from '../../../react-wrapper/react-wrapper.component';\nimport * as ReactDOM from 'react-dom/client';\nimport { ColumnDefinition, TableRow } from '../../models/data-table.models';\nimport {\n DropdownMenu,\n DropdownMenuOption,\n} from '../../components/dropdown-menu';\n\n@Component({\n selector: 'app-data-table-ui',\n standalone: false,\n template: '<ng-content></ng-content>',\n styleUrls: ['./data-table-ui.component.scss'],\n})\nexport class DataTableUIComponent\n extends ReactWrapperModule\n implements AfterViewInit, OnChanges\n{\n @Input() data!: TableRow[];\n @Input() columnDefinitions!: ColumnDefinition[];\n @Input() actionOptions?: DropdownMenuOption[];\n @Output() actionSelected = new EventEmitter<{\n action: string;\n row: TableRow;\n }>();\n\n DataTableUI = () => {\n const [columns, setColumns] = useState<ColumnDefinition[]>([]);\n const [tableData, setTableData] = useState<TableRow[]>([]);\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n const hasData = this.data?.length > 0;\n const hasColumns = this.columnDefinitions?.length > 0;\n\n if (!hasData || !hasColumns) {\n setLoading(true);\n return;\n }\n\n const filteredColumns = this.columnDefinitions.filter(\n (col) => col.visible !== false\n );\n const sortedColumns = filteredColumns.sort((a, b) => {\n const indexA = Number(a.index) || 0;\n const indexB = Number(b.index) || 0;\n return indexA - indexB;\n });\n\n setColumns(sortedColumns);\n setTableData(this.data);\n setLoading(false);\n }, [this.data, this.columnDefinitions]);\n\n const getDropdownOptions = (row: TableRow): DropdownMenuOption[] => {\n return (this.actionOptions || []).map((option) => ({\n ...option,\n onClick: () => {\n if (option.onClick) {\n option.onClick(row);\n }\n this.actionSelected.emit({ action: option.label, row });\n },\n }));\n };\n\n return (\n <div>\n {loading ? (\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n padding: 8,\n }}\n >\n <CircularLoader small />\n <div\n style={{\n fontSize: 14,\n }}\n >\n Loading\n </div>\n </div>\n ) : (\n <DataTable>\n <TableHead>\n <DataTableRow>\n {columns.map((col) => (\n <DataTableColumnHeader key={col.column}>\n {col.display}\n </DataTableColumnHeader>\n ))}\n {this.actionOptions && this.actionOptions.length > 0 && (\n <DataTableColumnHeader>Actions</DataTableColumnHeader>\n )}\n </DataTableRow>\n </TableHead>\n <TableBody>\n {tableData.map((row, rowIndex) => (\n <DataTableRow key={rowIndex}>\n {columns.map((col) => (\n <DataTableCell key={col.column}>\n {row[col.column] || '-'}\n </DataTableCell>\n ))}\n {this.actionOptions && this.actionOptions.length > 0 && (\n <DataTableCell>\n <DropdownMenu\n dropdownOptions={getDropdownOptions(row)}\n onClick={(option) => option.onClick?.(row)}\n />\n </DataTableCell>\n )}\n </DataTableRow>\n ))}\n </TableBody>\n <TableFoot>\n <DataTableRow>\n <DataTableCell\n colSpan={(columns.length || 0 + 1).toString()}\n ></DataTableCell>\n </DataTableRow>\n </TableFoot>\n </DataTable>\n )}\n </div>\n );\n };\n\n override async ngAfterViewInit() {\n if (!this.elementRef) throw new Error('No element ref');\n this.reactDomRoot = ReactDOM.createRoot(this.elementRef.nativeElement);\n this.component = this.DataTableUI;\n this.render();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['data'] || changes['columnDefinitions']) {\n if (!this.elementRef) throw new Error('No element ref');\n this.reactDomRoot = ReactDOM.createRoot(this.elementRef.nativeElement);\n this.component = this.DataTableUI;\n this.render();\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SharedDhis2UiModule } from '../../shared/shared.module';\nimport { ReactWrapperModule } from '../react-wrapper/react-wrapper.component';\n\nimport { DataTableUIComponent } from './containers/data-table-ui/data-table-ui.component';\n@NgModule({\n declarations: [DataTableUIComponent],\n exports: [DataTableUIComponent],\n imports: [CommonModule, SharedDhis2UiModule, ReactWrapperModule],\n providers: [],\n})\nexport class DataTableUIModule {}\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport { FormGroup } from '@angular/forms';\nimport { useMemo } from 'react';\nimport { IFormField } from '../interfaces';\n\nexport const useFieldValidation = (props: {\n form: FormGroup;\n field: IFormField<string>;\n touched: boolean;\n value: string;\n initialError?: string;\n recordExistError?: string;\n}) => {\n const { form, touched, field, value, initialError, recordExistError } = props;\n\n const hasError = useMemo(() => {\n if (recordExistError) {\n return true;\n }\n\n if (initialError && value) {\n return true;\n }\n\n return touched && (form.get(field.id) || form.get(field.key))?.invalid;\n }, [value, touched, initialError, recordExistError]);\n\n const validationError = useMemo(() => {\n if (recordExistError) {\n return recordExistError;\n }\n\n if (initialError && value) {\n return initialError;\n }\n\n if (!touched) {\n return undefined;\n }\n\n const error = (form.get(field.id) || form.get(field.key))?.errors;\n\n if (!error) {\n return undefined;\n }\n\n if (error['min']) {\n return `${field.label || 'Value'} should not be less than ${\n error['min'].min\n }!`;\n }\n\n if (error['max']) {\n return `${field.label || 'Value'} should not be greater than ${\n error['max'].max\n }!`;\n }\n\n if (error['pattern']) {\n if (field.type === 'email') {\n return `The email address provided is not valid`;\n }\n\n if (field.type === 'tel') {\n return 'Phone number provided is not valid';\n }\n\n return `${field.label || 'Value'} should have appropriate format`;\n }\n\n if (error['customError']) {\n return error['customError'];\n }\n\n return error['required']\n ? `${field.label || 'Value'} is required`\n : undefined;\n }, [touched, value, initialError, recordExistError]);\n\n return { validationError, hasError };\n};\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './field-validation.hook';\n","import { format } from 'date-fns';\nimport {\n FieldControlType,\n FormFieldMetaType,\n IFormField,\n IFieldDropdown,\n FormFieldExtension,\n} from '../interfaces';\n\ninterface FormFieldFunction<T> {\n setMax: (field: Partial<IFormField<T>>) => string | number | Date | undefined;\n}\n\nexport class FormField<T> implements IFormField<T>, FormFieldFunction<T> {\n value?: T | '';\n id: string;\n code?: string;\n key: string;\n referenceKey?: string;\n label: string;\n required: boolean;\n order?: number;\n controlType: FieldControlType;\n type: string;\n disabled?: boolean;\n options?: IFieldDropdown[];\n placeholder?: string;\n min?: number | Date | string;\n max?: number | Date | string;\n maxLength?: number | string;\n hidden: boolean;\n units?: string;\n generated?: boolean;\n unique?: boolean;\n isDataElement?: boolean;\n isAttribute?: boolean;\n isOrgUnit?: boolean;\n isEnrollmentDate?: boolean;\n event?: string;\n programStage?: string;\n program?: string;\n trackedEntityInstance?: string;\n trackedEntityType?: string;\n hasOptions?: boolean;\n dependentField?: any;\n fieldOptionsDependsOn?: string;\n displayInList?: boolean;\n displayInReports?: boolean;\n searchable?: boolean;\n metaType?: FormFieldMetaType;\n stepId?: string;\n availableOptionsLabel?: string;\n selectedOptionsLabel?: string;\n allowFutureDate?: boolean;\n extension?: FormFieldExtension;\n\n constructor(options: Partial<FormField<T>> = {}) {\n this.value = options.value || '';\n this.key = options.key || '';\n this.referenceKey = options.referenceKey || '';\n this.id = options.id || '';\n this.code = options.code || '';\n this.label = options.label || '';\n this.required = !!options.required;\n this.order = options.order === undefined ? 1 : options.order;\n this.controlType = options.controlType as FieldControlType;\n this.type = options.type || '';\n this.options = options.options || [];\n this.disabled = options.disabled ?? false;\n this.placeholder = options.placeholder || '';\n this.min = options.min;\n this.max = this.setMax(options);\n this.maxLength = options.maxLength as number;\n this.hidden = options.hidden || false;\n this.unique = options.unique || false;\n this.generated = options.generated || false;\n this.isDataElement = options.isDataElement;\n this.isAttribute = options.isAttribute;\n this.isOrgUnit = options.isOrgUnit;\n this.isEnrollmentDate = options.isEnrollmentDate;\n this.event = options.event;\n this.programStage = options.programStage;\n this.program = options.program;\n this.trackedEntityInstance = options.trackedEntityInstance;\n this.trackedEntityType = options.trackedEntityType;\n this.hasOptions = options.hasOptions;\n this.dependentField = options.dependentField;\n this.displayInList = options.displayInList;\n this.displayInReports = options.displayInReports;\n this.searchable = options.searchable;\n this.unique = options.unique;\n this.metaType = options.metaType;\n this.stepId = options.stepId;\n this.availableOptionsLabel =\n options.availableOptionsLabel ?? 'Available options';\n this.selectedOptionsLabel =\n options.availableOptionsLabel ?? 'Selected options';\n this.allowFutureDate = options.allowFutureDate;\n this.extension = options.extension;\n }\n\n setMax(field: Partial<FormField<T>>): string | number | Date | undefined {\n if (field.controlType !== 'date') {\n return field.max;\n }\n\n if (field.allowFutureDate) {\n return undefined;\n }\n\n return format(new Date(), 'yyyy-MM-dd');\n }\n}\n","import { FieldControlType } from '../interfaces';\nimport { FormField } from './form-field.model';\n\nexport class Boolean extends FormField<string> {\n override controlType: FieldControlType = 'boolean';\n}\n","import { FormField } from './form-field.model';\nimport { FieldControlType } from '../interfaces';\n\nexport class CheckBox extends FormField<string> {\n override controlType: FieldControlType = 'checkbox';\n}\n","import { format } from 'date-fns';\nimport { FieldControlType } from '../interfaces';\nimport { FormField } from './form-field.model';\n\nexport class DateField extends FormField<string> {\n override controlType: FieldControlType = 'date';\n override type = 'date';\n constructor(field: Partial<DateField>) {\n super(field);\n this.max = field.max ?? format(new Date(), 'yyyy-MM-dd');\n }\n}\n","import { FormField } from './form-field.model';\nimport { FieldControlType } from '../interfaces';\n\nexport class Dropdown extends FormField<string> {\n override controlType: FieldControlType = 'dropdown';\n}\n","// Copyright 2024 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport class FieldConfig {\n hideLabel?: boolean;\n inputWidth: string;\n\n constructor(config?: Partial<FieldConfig>) {\n this.hideLabel = config?.hideLabel ?? false;\n this.inputWidth = config?.inputWidth || '100%';\n }\n}\n","// Copyright 2024 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport class DateRangeValue {\n startDate!: string;\n endDate!: string;\n}\n","export enum FieldType {\n TEXT = 'TEXT',\n MULTI_TEXT = 'MULTI_TEXT',\n TRUE_ONLY = 'TRUE_ONLY',\n LONG_TEXT = 'LONG_TEXT',\n BOOLEAN = 'BOOLEAN',\n NUMBER = 'NUMBER',\n INTEGER_ZERO_OR_POSITIVE = 'INTEGER_ZERO_OR_POSITIVE',\n IMAGE = 'IMAGE',\n FILE_RESOURCE = 'FILE_RESOURCE',\n DATE = 'DATE',\n DATE_TIME = 'DATETIME',\n ORG_UNIT = 'ORGANISATION_UNIT',\n PHONE_NUMBER = 'PHONE_NUMBER',\n EMAIL = 'EMAIL',\n}\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './form-field.interface';\nexport * from './field-dropdown.interface';\nexport * from './field-control-type.interface';\nexport * from './field-type.interface';\nexport * from './form-field-meta-type.interface';\nexport * from './form-configuration.model';\nexport * from './form-field-group.interface';\nexport * from './form-metadata-section.interface';\nexport * from './form-metadata.interface';\nexport * from './form-field-extension.interface';\n","import { sortBy } from 'lodash';\nimport { FieldType, IFieldDropdown } from '../interfaces';\n\nexport class FieldDropdown implements IFieldDropdown {\n key!: string;\n value!: string;\n label!: string;\n order?: number | undefined;\n\n constructor(params: IFieldDropdown) {\n this.key = params.key;\n this.value = params.value;\n this.label = params.label;\n this.order = params.order;\n }\n\n toJson(): IFieldDropdown {\n return {\n key: this.key,\n value: this.value,\n label: this.label,\n order: this.order,\n };\n }\n\n static getDropdownOptions(field: any, locale?: string): FieldDropdown[] {\n if (field?.valueType === FieldType.BOOLEAN) {\n return [\n {\n key: 'Yes',\n value: 'true',\n label: 'Yes',\n order: 1,\n },\n {\n key: 'No',\n value: 'false',\n label: 'No',\n order: 2,\n },\n ].map((dropdown) => new FieldDropdown(dropdown));\n }\n\n return sortBy(\n (field?.optionSet?.options || []).map(\n (option: { id: any; code: any; name: any; sortOrder: any }) => {\n return new FieldDropdown({\n key: option.id,\n value: option.code,\n label: option.name,\n order: option.sortOrder,\n });\n }\n ),\n 'order'\n );\n }\n}\n","import { FieldConfig } from './field-config.model';\n\nexport type FormDirection = 'horizontal' | 'vertical';\n\nexport class FormConfig {\n direction: FormDirection;\n showSaveButton: boolean;\n formName?: string;\n fieldConfig!: FieldConfig;\n\n constructor(config?: Partial<FormConfig>) {\n this.direction = config?.direction || 'vertical';\n this.showSaveButton = config?.showSaveButton ?? true;\n this.fieldConfig = config?.fieldConfig || new FieldConfig();\n this.formName = config?.formName;\n }\n\n get directionClassName() {\n return this.direction === 'vertical' ? 'form-vertical' : 'form-horizontal';\n }\n}\n","import { sortBy } from 'lodash';\n\nimport { FieldControlType, FieldType } from '../interfaces';\nimport { DropdownOption } from '../models';\n\nexport class FieldUtil {\n static getFieldDropdownOptions(field: any): DropdownOption[] {\n if (field.valueType === FieldType.BOOLEAN) {\n return [\n {\n key: 'Yes',\n value: 'true',\n label: 'Yes',\n order: 1,\n },\n {\n key: 'No',\n value: 'false',\n label: 'No',\n order: 2,\n },\n ];\n }\n\n return FieldUtil.sanitizeOptions(field.optionSet?.options || []);\n }\n\n static sanitizeOptions(options: any[]): any {\n return sortBy(\n (options || []).map((option) => ({\n key: option.id,\n value: option.code,\n label: option.name,\n order: option.sortOrder,\n color: option.style?.color,\n attributeValues: option.attributeValues,\n options: FieldUtil.sanitizeOptions(option.options),\n })),\n 'order'\n );\n }\n\n static getFieldType(valueType: string) {\n switch (valueType) {\n case FieldType.NUMBER:\n return 'number';\n case FieldType.PHONE_NUMBER:\n return 'tel';\n case FieldType.EMAIL:\n return 'email';\n case FieldType.ORG_UNIT:\n return 'org-unit';\n case FieldType.DATE:\n return 'date';\n case FieldType.FILE_RESOURCE:\n return 'file';\n default:\n return 'text';\n }\n }\n\n static getFieldControlType(\n valueType: string,\n hasOptions: boolean\n ): FieldControlType {\n if (hasOptions) {\n return 'dropdown';\n }\n\n switch (valueType) {\n case FieldType.TEXT:\n return 'textbox';\n case FieldType.LONG_TEXT:\n return 'textarea';\n case FieldType.TRUE_ONLY:\n return 'checkbox';\n case FieldType.NUMBER:\n return 'textbox';\n case FieldType.PHONE_NUMBER:\n return 'textbox';\n case FieldType.ORG_UNIT:\n return 'org-unit';\n case FieldType.DATE:\n return 'date';\n case FieldType.DATE_TIME:\n return 'date-time';\n case FieldType.IMAGE:\n return 'image';\n case FieldType.FILE_RESOURCE:\n return 'file';\n default:\n return 'textbox';\n }\n }\n\n static getOptionEntities?(options: any[]) {\n return (options || []).reduce((entity, option) => {\n return { ...entity, [option.value]: option.label };\n }, {});\n }\n}\n","import { FieldControlType, FieldType } from '../interfaces';\n\nexport class FieldControlTypeUtil {\n static getFieldControlType(\n valueType: string,\n hasOptions: boolean\n ): FieldControlType {\n if (hasOptions) {\n if (valueType === FieldType.MULTI_TEXT) {\n return 'multi-dropdown';\n }\n return 'dropdown';\n }\n\n switch (valueType) {\n case FieldType.TEXT:\n return 'textbox';\n case FieldType.MULTI_TEXT:\n return 'multi-dropdown';\n case FieldType.BOOLEAN:\n return 'dropdown';\n case FieldType.LONG_TEXT:\n return 'textarea';\n case FieldType.TRUE_ONLY:\n return 'checkbox';\n case FieldType.NUMBER:\n return 'textbox';\n case FieldType.INTEGER_ZERO_OR_POSITIVE:\n return 'textbox';\n case FieldType.ORG_UNIT:\n return 'org-unit';\n case FieldType.DATE:\n return 'date';\n case FieldType.DATE_TIME:\n return 'date-time';\n case FieldType.IMAGE:\n return 'image';\n case FieldType.FILE_RESOURCE:\n return 'file';\n default:\n return 'textbox';\n }\n }\n}\n","import { FieldType } from '../interfaces';\n\nexport class FormFieldTypeUtil {\n static getFieldType(valueType: string) {\n switch (valueType) {\n case FieldType.NUMBER:\n return 'number';\n case FieldType.INTEGER_ZERO_OR_POSITIVE:\n return 'number';\n case FieldType.ORG_UNIT:\n return 'org-unit';\n case FieldType.IMAGE:\n return 'image';\n case FieldType.FILE_RESOURCE:\n return 'file';\n default:\n return 'text';\n }\n }\n}\n","import {\n UntypedFormControl,\n UntypedFormGroup,\n Validators,\n} from '@angular/forms';\nimport { camelCase, find, isArray } from 'lodash';\nimport { FormField } from '../models';\nimport { FieldUtil } from '../utils';\nimport { IFormField } from '../interfaces';\n\nexport class FormUtil {\n static getFormGroup(\n fields: IFormField<string>[],\n dataEntities: any\n ): UntypedFormGroup {\n const group: any = {};\n (fields || []).forEach((field: IFormField<string>) => {\n if (field) {\n const value = FormUtil.getFieldValue(field, dataEntities);\n const minValidators = field.min\n ? [Validators.min(field.min as number)]\n : [];\n\n const maxValidators = field.max\n ? [Validators.max(field.max as number)]\n : [];\n\n const phoneNumberValidator = field.type === 'tel' ? [] : [];\n\n const emailValidator =\n field.type === 'email'\n ? [\n Validators.pattern(\n '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}$'\n ),\n ]\n : [];\n\n group[field.key] = field.required\n ? new UntypedFormControl(\n { value, disabled: field.disabled },\n {\n validators: [\n Validators.required,\n ...minValidators,\n ...maxValidators,\n ...phoneNumberValidator,\n ...emailValidator,\n ],\n updateOn: 'change',\n }\n )\n : new UntypedFormControl(\n { value, disabled: field.disabled },\n {\n validators: [\n ...minValidators,\n ...maxValidators,\n ...phoneNumberValidator,\n ...emailValidator,\n ],\n }\n );\n\n if (field.referenceKey) {\n const value = dataEntities\n ? dataEntities[field.referenceKey] || ''\n : '';\n group[field.referenceKey] = field.required\n ? new UntypedFormControl(\n { value, disabled: field.disabled },\n {\n validators: [\n Validators.required,\n ...minValidators,\n ...maxValidators,\n ...phoneNumberValidator,\n ...emailValidator,\n ],\n updateOn: 'change',\n }\n )\n : new UntypedFormControl(\n { value, disabled: field.disabled },\n {\n validators: [\n ...minValidators,\n ...maxValidators,\n ...phoneNumberValidator,\n ...emailValidator,\n ],\n }\n );\n }\n }\n });\n\n return new UntypedFormGroup(group);\n }\n\n static getFieldValue(\n field: IFormField<string>,\n dataEntities: Record<string, any>\n ) {\n const fieldValue = dataEntities\n ? dataEntities[field.id] || dataEntities[field.key] || ''\n : '';\n\n return isArray(fieldValue) ? JSON.stringify(fieldValue) : fieldValue;\n }\n\n static getFormFields(fields: any[]): FormField<string>[] {\n return (fields || []).map((field: any) => {\n const options = FieldUtil.getFieldDropdownOptions(field);\n\n const dependentField = find(fields, ['id', field.fieldOptionsDependsOn]);\n\n const label = field.formName || field.name || field.displayName;\n\n return new FormField<string>({\n id: field.id,\n label,\n code: field.code,\n key: camelCase(field.code) || field.id,\n referenceKey: field.referenceKey,\n required: field.mandatory && !field.generated,\n displayInList: field.displayInList,\n type: FieldUtil.getFieldType(field.valueType),\n controlType: FieldUtil.getFieldControlType(\n field.valueType,\n options?.length > 0 || field.hasOptions\n ),\n options,\n isDataElement: field.isDataElement,\n isAttribute: field.isAttribute,\n isOrgUnit: field.isOrgUnit,\n isEnrollmentDate: field.isEnrollmentDate,\n programStage: field.stageId,\n event: field.event,\n trackedEntityInstance: field.trackedEntityInstance,\n disabled: field.disabled || field.generated,\n dependentField: dependentField,\n min: field.min,\n max: field.max,\n maxLength: field.maxLength,\n });\n });\n }\n\n static createField(\n id: string,\n label: string,\n required: boolean,\n controlType:\n | 'textbox'\n | 'dropdown'\n | 'textarea'\n | 'transfer'\n | 'search'\n | 'file',\n disabled?: boolean,\n placeholder?: string,\n options?: Array<any>\n ): FormField<string> {\n return new FormField<string>({\n id,\n code: id,\n key: id,\n label,\n required,\n controlType,\n type: 'text',\n options: options ?? [],\n disabled: disabled ?? false,\n placeholder: placeholder,\n });\n }\n}\n","import { FormValue } from '../models';\n\nexport class FormValueUtil {\n static getFormDataEntities(formValueEntities: Record<string, FormValue>) {\n const formValueKeys = Object.keys(formValueEntities);\n\n return formValueKeys.reduce((entity, key) => {\n const formValue = formValueEntities[key];\n\n const formRawValues = formValue.form.getRawValue() || {};\n const dataValueEntities = Object.keys(formRawValues).reduce(\n (valueObject, key) => {\n const field = formValue.fields.find((field) => field.id === key);\n\n if (!field) {\n return valueObject;\n }\n\n return {\n ...valueObject,\n [key]: {\n ...field,\n value: formRawValues[key],\n attribute: field?.isAttribute ? field.id : undefined,\n dataElement: field?.isDataElement ? field.id : undefined,\n },\n };\n },\n {}\n );\n return { ...entity, ...dataValueEntities };\n }, {});\n }\n}\n","export class TranslationUtil {\n static getTranslatedFormName(\n field: Record<string, unknown>,\n locale = 'sw'\n ): string {\n const translation = (\n (field['translations'] as Record<string, unknown>[]) || []\n ).find(\n (translation) =>\n translation['locale'] == locale && translation['property'] == 'NAME'\n );\n\n return (\n translation ? translation['value'] : field['formName'] || field['name']\n ) as string;\n }\n}\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nimport { camelCase, find } from 'lodash';\nimport { FormFieldMetaType, IFormField, IFormFieldGroup } from '../interfaces';\nimport { FieldUtil, TranslationUtil } from '../utils';\nimport { FieldDropdown } from './field-dropdown.model';\nimport { FormField } from './form-field.model';\nimport { FormFieldExtension } from '../interfaces/form-field-extension.interface';\n\nexport class FormFieldGroup implements IFormFieldGroup {\n id!: string;\n name!: string;\n translations?: any;\n isFormHorizontal?: boolean | undefined;\n attributes?: string[] | object[] | undefined;\n dataElements?: string[] | object[] | undefined;\n booleanGroupedDataElements?: string[] | object[] | undefined;\n repeatableStage?: string | undefined;\n repeatDependentField?: string | undefined;\n dataKey?: string | undefined;\n\n constructor(\n private params: {\n formFieldGroup: Partial<FormFieldGroup>;\n fieldMetaData: Record<string, unknown>[];\n locale?: string;\n formFieldExtensions?: FormFieldExtension[];\n }\n ) {}\n\n get fields(): IFormField<string>[] {\n const fields = this.params.formFieldGroup?.fields || [];\n return fields\n .map((field) => {\n if (field instanceof FormField) {\n return field;\n }\n\n const fieldMetaData = this.params.fieldMetaData.find(\n (attribute) => attribute['id'] === field.id\n );\n\n if (!fieldMetaData) {\n return null;\n }\n\n const dependentField = find(fields, [\n 'id',\n field?.fieldOptionsDependsOn,\n ]);\n\n const options = FieldDropdown.getDropdownOptions(\n fieldMetaData as any,\n this.params.locale\n );\n\n const hasOptions = (options?.length > 0 ||\n dependentField !== undefined ||\n fieldMetaData['hasOptions']) as boolean;\n\n const extension = this.params.formFieldExtensions?.find(\n (fieldExtension) => fieldExtension?.id === field.id\n );\n\n return new FormField({\n ...(fieldMetaData || {}),\n ...field,\n id: field.id,\n code: fieldMetaData['code'] as string,\n label: (fieldMetaData['formName'] ??\n fieldMetaData['name'] ??\n field['label']) as string,\n key: camelCase(fieldMetaData['code'] as string) || field.id,\n required: (fieldMetaData['mandatory'] ??\n fieldMetaData['required']) as boolean,\n type: FieldUtil.getFieldType(fieldMetaData['valueType'] as string),\n dependentField,\n options,\n disabled:\n field.disabled ??\n (fieldMetaData['disabled'] as boolean) ??\n (fieldMetaData['generated'] as boolean),\n min: field.min ?? (fieldMetaData['min'] as number),\n max: field.max ?? (fieldMetaData['max'] as number),\n order:\n field.order ??\n ((fieldMetaData['order'] ?? fieldMetaData['sortOrder']) as number),\n hidden: field.hidden ?? (fieldMetaData['hidden'] as boolean),\n fieldOptionsDependsOn: field.fieldOptionsDependsOn,\n hasOptions,\n controlType: FieldUtil.getFieldControlType(\n fieldMetaData['valueType'] as string,\n hasOptions\n ),\n metaType: fieldMetaData['metaType'] as FormFieldMetaType,\n stepId: fieldMetaData['stepId'] as string,\n extension,\n });\n })\n .filter((field) => field) as IFormField<string>[];\n }\n\n toJson(): IFormFieldGroup {\n return {\n id: this.params.formFieldGroup?.id as string,\n name: TranslationUtil.getTranslatedFormName(\n this.params.formFieldGroup,\n this.params.locale\n ) as string,\n isFormHorizontal: this.params.formFieldGroup?.isFormHorizontal,\n repeatDependentField: this.params.formFieldGroup?.repeatDependentField,\n dataKey: this.params.formFieldGroup?.dataKey,\n repeatableStage: this.params.formFieldGroup?.repeatableStage,\n fields: this.fields,\n };\n }\n}\n","import {\n Option,\n ProgramRule,\n ProgramRuleAction,\n ProgramRuleVariable,\n} from '@iapps/d2-web-sdk';\nimport { camelCase } from 'lodash';\n\ninterface JsonTransformer<T> {\n toJson: () => T;\n}\n\nexport interface IMetadataRuleAction {\n field: string;\n actionType: string;\n assignedData?: string;\n displayedContent?: string;\n options?: Partial<Option>[];\n}\n\nexport class MetadataRuleAction\n implements IMetadataRuleAction, JsonTransformer<IMetadataRuleAction>\n{\n constructor(\n private ruleAction: ProgramRuleAction,\n private ruleVariables: ProgramRuleVariable[]\n ) {}\n get field(): string {\n return (\n (this.ruleAction.dataElement?.id as string) ||\n (this.ruleAction.trackedEntityAttribute?.id as string)\n );\n }\n\n get actionType(): string {\n return this.ruleAction.programRuleActionType;\n }\n\n get assignedData(): string | undefined {\n const regex = /(A|#|V)\\{([^}]+)\\}/g;\n\n return this.ruleAction?.data?.replace(regex, (match, _, dataVariable) => {\n const ruleVariableObject = this.ruleVariables?.find(\n (variable) => variable.name === dataVariable\n );\n\n if (!ruleVariableObject) {\n return `{${dataVariable}}`;\n }\n\n const code =\n camelCase(ruleVariableObject?.dataElement?.code) ||\n ruleVariableObject?.dataElement?.id ||\n camelCase(ruleVariableObject?.trackedEntityAttribute?.code) ||\n ruleVariableObject?.trackedEntityAttribute?.id;\n\n return `{${code}}`;\n });\n }\n\n get displayedContent(): string | undefined {\n return this.ruleAction.displayContent;\n }\n\n get options(): Partial<Option>[] | undefined {\n if (this.ruleAction.option) {\n return [this.ruleAction.option];\n }\n\n return this.ruleAction.optionGroup?.options || [];\n }\n\n toJson(): IMetadataRuleAction {\n return {\n field: this.field,\n actionType: this.actionType,\n assignedData: this.assignedData,\n displayedContent: this.ruleAction.displayContent,\n options: this.options,\n };\n }\n}\n\nexport interface IMetadataRule {\n actions: IMetadataRuleAction[];\n condition: string;\n}\n\nexport class MetadataRule\n implements IMetadataRule, JsonTransformer<IMetadataRule>\n{\n constructor(\n private rule: ProgramRule,\n private ruleVariables: ProgramRuleVariable[]\n ) {}\n\n get actions(): MetadataRuleAction[] {\n return (this.rule?.programRuleActions || []).map(\n (action) => new MetadataRuleAction(action, this.ruleVariables)\n );\n }\n\n get condition(): string {\n const regex = /(A|#|V)\\{([^}]+)\\}/g;\n\n return this.rule?.condition?.replace(regex, (match, _, ruleVariable) => {\n const ruleVariableObject = this.ruleVariables?.find(\n (variable) => variable.name === ruleVariable\n );\n\n if (!ruleVariableObject) {\n return `{${ruleVariable}}`;\n }\n\n const code =\n camelCase(ruleVariableObject?.dataElement?.code) ||\n ruleVariableObject?.dataElement?.id ||\n camelCase(ruleVariableObject?.trackedEntityAttribute?.code) ||\n ruleVariableObject?.trackedEntityAttribute?.id;\n\n return `{${code}}`;\n });\n }\n\n toJson(): IMetadataRule {\n return {\n actions: this.actions.map((action) => action.toJson()),\n condition: this.condition,\n };\n }\n}\n","import {\n IFormMetadataSection,\n IFormFieldGroup,\n FormFieldExtension,\n} from '../interfaces';\nimport { FormFieldGroup } from './form-field-group.model';\nimport { flatten } from 'lodash';\n\nexport class FormMetadataSection implements IFormMetadataSection {\n id!: string;\n name!: string;\n program?: string | undefined;\n sectionStateComplete?: boolean | undefined;\n description?: string | undefined;\n translations?: any;\n inheritedAttributes = [];\n\n constructor(\n private params: {\n section: Partial<IFormMetadataSection>;\n program: Record<string, unknown>;\n locale?: string;\n excludeInheritedAttributes?: boolean;\n formFieldExtensions?: FormFieldExtension[];\n }\n ) {\n this.inheritedAttributes =\n ((this.params.program['trackedEntityType'] as any) || {})[\n 'trackedEntityTypeAttributes'\n ] || [];\n }\n\n get attributes() {\n let programTrackedEntityAttributes =\n (this.params.program['programTrackedEntityAttributes'] as Record<\n string,\n unknown\n >[]) || [];\n\n if (this.params.excludeInheritedAttributes) {\n programTrackedEntityAttributes = programTrackedEntityAttributes.filter(\n (programTrackedEntityAttribute) => {\n return !this.inheritedAttributes.find(\n (inheritedAttribute: any) =>\n inheritedAttribute['trackedEntityAttribute']?.id ===\n (programTrackedEntityAttribute['trackedEntityAttribute'] as any)\n ?.id\n );\n }\n );\n }\n\n return programTrackedEntityAttributes.map(\n (programTrackedEntityAttribute) => {\n return {\n ...(programTrackedEntityAttribute['trackedEntityAttribute'] as Record<\n string,\n unknown\n >),\n sortOrder: programTrackedEntityAttribute['sortOrder'],\n mandatory: programTrackedEntityAttribute['mandatory'],\n allowFutureDate: programTrackedEntityAttribute['allowFutureDate'],\n trackedEntityType: ((this.params.program[\n 'trackedEntityType'\n ] as Record<string, unknown>) || {})['id'],\n metaType: 'ATTRIBUTE',\n };\n }\n );\n }\n\n get dataElements() {\n return flatten(\n (\n (this.params.program['programStages'] as Record<string, unknown>[]) ||\n []\n ).map((programStage) => {\n return (\n (programStage['programStageDataElements'] as Record<\n string,\n unknown\n >[]) || []\n ).map((stageDataElement) => {\n return {\n ...((stageDataElement['dataElement'] as Record<string, unknown>) ||\n {}),\n mandatory: stageDataElement['compulsory'],\n allowFutureDate: stageDataElement['allowFutureDate'],\n stepId: programStage['id'],\n metaType: 'DATA_ELEMENT',\n };\n });\n })\n );\n }\n\n get fieldGroups(): IFormFieldGroup[] {\n return (this.params.section.fieldGroups || []).map((formFieldGroup) => {\n return new FormFieldGroup({\n formFieldGroup,\n fieldMetaData: [...this.attributes, ...this.dataElements],\n locale: this.params.locale,\n formFieldExtensions: this.params.formFieldExtensions,\n }).toJson();\n });\n }\n\n toJson(): IFormMetadataSection {\n return {\n id: this.params.section?.id as string,\n name: this.params.section?.name as string,\n fieldGroups: this.fieldGroups.filter(\n (fieldGroup) => fieldGroup.fields?.length > 0\n ),\n };\n }\n}\n","import { camelCase, flatten } from 'lodash';\n\nimport { FormMetadataSection } from './form-metadata-section.model';\nimport { IMetadataRule, MetadataRule } from './form-metadata-rule.model';\nimport { FormField } from './form-field.model';\nimport { Program, ProgramRule, ProgramRuleVariable } from '@iapps/d2-web-sdk';\nimport {\n IFormField,\n IFormMetadata,\n IFormMetadataSection,\n FormFieldExtension,\n} from '../interfaces';\nimport { DateField } from './date-field.model';\nimport { TranslationUtil } from '../utils';\n\nexport class FormMetaData implements IFormMetadata {\n id!: string;\n name!: string;\n description?: string | undefined;\n downloadSqlView?: string | undefined;\n\n constructor(\n private params: {\n programs: Program[];\n locale?: string;\n splitRegistrationSection?: boolean;\n includeAllProgramStages?: boolean;\n disableEnrollmentDate?: boolean;\n excludeInheritedAttributes?: boolean;\n programStage?: string;\n customFormMetaData?: Partial<FormMetaData>;\n formFieldExtensions?: FormFieldExtension[];\n }\n ) {}\n\n get sections(): IFormMetadataSection[] {\n const customSections = this.params.customFormMetaData?.sections;\n\n if (!customSections) {\n return this.#getSectionFromPrograms(this.params.programs);\n }\n\n return (this.params.customFormMetaData?.sections || [])\n .map((section) => {\n const program = this.params.programs.find(\n (program) => section.program === program['id']\n );\n\n if (!program) {\n return null;\n }\n\n return new FormMetadataSection({\n section,\n program,\n locale: this.params.locale,\n formFieldExtensions: this.params.formFieldExtensions,\n }).toJson();\n })\n .filter((section) => section !== null) as IFormMetadataSection[];\n }\n\n get fields(): IFormField<string>[] {\n return flatten(\n flatten(\n this.sections.map((section) =>\n section.fieldGroups.map((fieldGroup) => fieldGroup.fields || [])\n )\n )\n );\n }\n\n get rules(): IMetadataRule[] {\n let ruleVariables: ProgramRuleVariable[] = [];\n return [\n ...(this.params.customFormMetaData?.rules || []),\n ...(\n flatten(\n this.params.programs.map((program) => {\n ruleVariables = [\n ...ruleVariables,\n ...(program.programRuleVariables as ProgramRuleVariable[]),\n ];\n return program.programRules;\n })\n ) || []\n ).map((rule) =>\n new MetadataRule(rule as ProgramRule, ruleVariables).toJson()\n ),\n ];\n }\n\n #getSectionFromPrograms(programs: Program[]): IFormMetadataSection[] {\n const sections = flatten(\n programs.map((program) => {\n if (this.params.programStage) {\n return this.#getProgramStageSections(\n program,\n this.params.programStage\n );\n }\n\n return [\n ...(this.params.splitRegistrationSection\n ? [\n this.#getRegisteringUnitSection(program),\n this.#getReportingDateSection(program),\n this.#getRegistrationSection(program),\n ]\n : [this.#getMergedRegistrationSection(program)]),\n ...this.#getProgramStageSections(program),\n ];\n })\n );\n\n if (sections.length === 0) {\n return [];\n }\n\n return sections as IFormMetadataSection[];\n }\n\n #getProgramStageSections(program: Program, programStageId?: string) {\n const programStages = programStageId\n ? (program.programStages || []).filter(\n (programStage) => programStage.id === programStageId\n )\n : this.params.includeAllProgramStages\n ? program.programStages\n : program.useFirstStageDuringRegistration\n ? [(program.programStages || [])[0]]\n : [];\n\n return (programStages || []).map((programStage) => {\n return new FormMetadataSection({\n section: {\n id: programStage.id,\n name: programStage.name,\n fieldGroups:\n (programStage.programStageSections || []).length > 0\n ? programStage.programStageSections!.map(\n (programStageSection) => {\n return {\n id: programStageSection.id,\n name: programStageSection.name,\n dataKey: camelCase(programStage.code),\n repeatableStage: programStage.repeatable\n ? programStage.id\n : undefined,\n sortOrder: programStageSection.sortOrder,\n fields: programStageSection.dataElements as any,\n };\n }\n )\n : [\n {\n id: programStage.id,\n dataKey: camelCase(programStage.code),\n repeatableStage: programStage.repeatable\n ? programStage.id\n : undefined,\n fields: (programStage.programStageDataElements || []).map(\n (programStageDataElement) => {\n return {\n id: programStageDataElement.dataElement?.id,\n };\n }\n ) as any,\n },\n ],\n },\n program,\n locale: this.params.locale,\n excludeInheritedAttributes: this.params.excludeInheritedAttributes,\n formFieldExtensions: this.params.formFieldExtensions,\n }).toJson();\n });\n }\n\n #getRegisteringUnitSection(program: Program): IFormMetadataSection {\n return new FormMetadataSection({\n section: {\n id: 'registering_unit_details',\n name: 'Registering unit details',\n fieldGroups: [\n {\n id: 'registering_unit_details',\n sortOrder: 1,\n isFormHorizontal: false,\n fields: [\n new FormField<string>({\n id: 'orgUnit',\n key: 'orgUnit',\n label: program.orgUnitLabel || 'Registering unit',\n code: 'orgUnit',\n required: true,\n controlType: 'org-unit',\n isOrgUnit: true,\n }),\n ],\n },\n ],\n },\n program,\n locale: this.params.locale,\n excludeInheritedAttributes: this.params.excludeInheritedAttributes,\n formFieldExtensions: this.params.formFieldExtensions,\n }).toJson();\n }\n\n #getReportingDateSection(program: Program): IFormMetadataSection {\n return new FormMetadataSection({\n section: {\n id: 'reporting_dates',\n name: 'Reporting dates',\n fieldGroups: [\n {\n id: 'reporting_dates',\n sortOrder: 1,\n isFormHorizontal: false,\n fields: [\n new DateField({\n id: 'enrollmentDate',\n label: program.enrollmentDateLabel || 'Enrollment date',\n code: 'enrollmentDate',\n key: 'enrollmentDate',\n required: true,\n disabled: this.params.disableEnrollmentDate,\n }),\n program.displayIncidentDate\n ? new DateField({\n id: 'incidentDate',\n label: program.incidentDateLabel || 'Incident date',\n code: 'incidentDate',\n key: 'incidentDate',\n required: true,\n })\n : null,\n ].filter((field) => field) as FormField<string>[],\n },\n ],\n },\n program,\n locale: this.params.locale,\n excludeInheritedAttributes: this.params.excludeInheritedAttributes,\n formFieldExtensions: this.params.formFieldExtensions,\n }).toJson();\n }\n\n #getRegistrationSection(program: Program): IFormMetadataSection {\n return new FormMetadataSection({\n section: {\n id: 'registration',\n name: 'Registration',\n fieldGroups:\n (program.programSections || []).length > 0\n ? program.programSections!.map((programSection) => {\n return {\n id: programSection.id,\n name: programSection.name,\n sortOrder: programSection.sortOrder,\n fields: programSection.trackedEntityAttributes as any,\n };\n })\n : [\n {\n id: 'registration',\n name: '',\n sortOrder: 1,\n fields: (program.programTrackedEntityAttributes || []).map(\n (programTrackedEntityAttribute) => {\n return {\n id: programTrackedEntityAttribute.trackedEntityAttribute\n ?.id,\n };\n }\n ),\n },\n ],\n },\n program,\n locale: this.params.locale,\n excludeInheritedAttributes: this.params.excludeInheritedAttributes,\n formFieldExtensions: this.params.formFieldExtensions,\n }).toJson();\n }\n\n #getMergedRegistrationSection(program: Program): IFormMetadataSection {\n return new FormMetadataSection({\n section: {\n id: 'registration',\n name: 'Registration',\n fieldGroups: [\n {\n id: 'registering_unit_details',\n name: 'Registering unit details',\n sortOrder: 1,\n isFormHorizontal: false,\n fields: [\n new FormField<string>({\n id: 'orgUnit',\n key: 'orgUnit',\n label: program.orgUnitLabel || 'Registering unit',\n code: 'orgUnit',\n required: true,\n controlType: 'org-unit',\n }),\n ],\n },\n {\n id: 'reporting_dates',\n name: 'Reporting dates',\n sortOrder: 1,\n isFormHorizontal: false,\n fields: [\n new DateField({\n id: 'enrollmentDate',\n label: program.enrollmentDateLabel || 'Enrollment date',\n code: 'enrollmentDate',\n key: 'enrollmentDate',\n required: true,\n disabled: this.params.disableEnrollmentDate,\n }),\n program.displayIncidentDate\n ? new DateField({\n id: 'incidentDate',\n label: program.incidentDateLabel || 'Incident date',\n code: 'incidentDate',\n key: 'incidentDate',\n required: true,\n })\n : null,\n ].filter((field) => field) as FormField<string>[],\n },\n ...((program.programSections || []).length > 0\n ? program.programSections!.map((programSection) => {\n return {\n id: programSection.id,\n name: programSection.name,\n sortOrder: programSection.sortOrder,\n fields: programSection.trackedEntityAttributes as any,\n };\n })\n : [\n {\n id: 'registration',\n name: 'Registration',\n sortOrder: 1,\n fields: (program.programTrackedEntityAttributes || []).map(\n (programTrackedEntityAttribute) => {\n return {\n id: programTrackedEntityAttribute.trackedEntityAttribute\n ?.id,\n };\n }\n ),\n },\n ]),\n ],\n },\n program,\n locale: this.params.locale,\n excludeInheritedAttributes: this.params.excludeInheritedAttributes,\n formFieldExtensions: this.params.formFieldExtensions,\n }).toJson();\n }\n\n toJson(): IFormMetadata {\n return {\n id: this.params.customFormMetaData?.id as string,\n name: TranslationUtil.getTranslatedFormName(\n this.params.customFormMetaData || {},\n this.params.locale\n ),\n fields: this.fields,\n sections: this.sections,\n rules: this.rules,\n };\n }\n}\n","import { FormGroup } from '@angular/forms';\nimport { find } from 'lodash';\nimport { IFormField } from '../interfaces';\n\nexport class FormValue {\n form: FormGroup;\n fields: IFormField<string>[];\n changedField?: IFormField<string>;\n constructor(\n form: FormGroup,\n fields: IFormField<string>[],\n changedField?: IFormField<string>\n ) {\n this.form = form;\n this.fields = fields;\n this.changedField = changedField;\n }\n\n get isValid(): boolean {\n return this.form.valid;\n }\n\n clear(): void {\n this.form.reset();\n }\n\n getValues(options?: { valueOnly?: boolean }): {\n [id: string]: { id: string; value: string; options: any[] };\n } {\n const newValues: { [key: string]: any } = {};\n const formValues = this.form?.getRawValue();\n\n if (options?.valueOnly) {\n return formValues;\n }\n\n Object.keys(formValues).forEach((key) => {\n const field = find(this.fields, ['key', key]);\n\n if (field) {\n newValues[key] = {\n ...field,\n value: formValues[key],\n };\n }\n });\n\n return newValues;\n }\n}\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './boolean.model';\nexport * from './check-box.model';\nexport * from './date-field.model';\nexport * from './dropdown-option.model';\nexport * from './dropdown.model';\nexport * from './form-field.model';\nexport * from './fields-data.model';\nexport * from './field-config.model';\nexport * from './date-range-value.model';\nexport * from './field-dropdown.model';\nexport * from './form-config.model';\nexport * from './form-field-group.model';\nexport * from './form-metadata-rule.model';\nexport * from './form-metadata-section.model';\nexport * from './form-metadata.model';\nexport * from './form-value.model';\nexport * from './form.model';\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport { FileListItem } from '@dhis2/ui';\nimport { FileInputField } from '@dhis2/ui';\nimport { D2Window } from '@iapps/d2-web-sdk';\nimport { isUndefined } from 'lodash';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { FormFieldExtension } from '../interfaces';\nimport { set } from 'date-fns';\n\nexport const FileUploadField = (props: {\n label?: string;\n id: string;\n fileId?: string;\n performUpload?: boolean;\n hasError?: boolean;\n uploadUrl?: string;\n required?: boolean;\n validationText?: string;\n onChange?: (files: any[]) => void;\n onUploadSuccess?: (fileId: string) => void;\n extension?: FormFieldExtension;\n}) => {\n const {\n label,\n id,\n uploadUrl,\n performUpload,\n validationText,\n required,\n hasError,\n onChange,\n onUploadSuccess,\n extension\n } = props;\n const d2 = (window as unknown as D2Window)?.d2Web;\n const [file, setFile] = useState<any>(null);\n const [uploading, setUploading] = useState<boolean>();\n const [validationError, setValidationError] = useState<string | null>(null);\n\n const valid = useMemo(() => {\n if (isUndefined(hasError)) {\n return undefined;\n }\n\n return !hasError;\n }, [hasError]);\n\n const uploadFile = async (fileItem: any) => {\n if (fileItem) {\n setUploading(true);\n const formData = new FormData();\n formData.append('file', fileItem);\n try {\n const fileUploadResponse = await d2.httpInstance.post(\n uploadUrl as string,\n formData as any\n );\n\n setUploading(false);\n const fileId = (fileUploadResponse?.data as any)?.response?.fileResource\n ?.id;\n\n if (fileId) {\n onUploadSuccess!(fileId);\n }\n } catch (error) {\n setUploading(false);\n }\n }\n };\n\n return (\n <FileInputField\n accept={extension?.accept?.join(',')}\n buttonLabel=\"Upload a file\"\n label={label}\n name={id}\n required={required}\n error={!!validationError}\n validationText={validationError || validationText}\n onChange={(event: any) => {\n const fileItem = (event?.files || [])[0];\n setValidationError(null);\n \n if (extension?.sizeLimit && fileItem.size > extension?.sizeLimit) {\n setValidationError(`File size must not exceed ${extension.sizeLimit / (1024 * 1024)}MB`);\n setFile(null);\n return;\n }\n setFile(fileItem);\n\n if (performUpload) {\n uploadFile(fileItem);\n } else {\n onChange!(file);\n }\n }}\n >\n {file && (\n <FileListItem\n cancelText=\"Cancel\"\n label={file.name}\n loading={uploading}\n onRemove={() => {\n setFile(null);\n }}\n removeText=\"Remove\"\n />\n )}\n </FileInputField>\n );\n};\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// @flow\nimport { Provider, useDataQuery } from '@dhis2/app-runtime';\nimport { colors } from '@dhis2/ui';\nimport React, {\n SyntheticEvent,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport { useDynamicStyles } from '../../../shared';\nimport { OrganisationUnitTree, CircularLoader, InputField } from '@dhis2/ui';\nimport { D2Window } from '@iapps/d2-web-sdk';\nimport { debounce } from 'lodash';\nimport { Chip } from '@dhis2/ui';\nimport { Tooltip } from '@dhis2/ui';\n\nconst orgUnitFieldStyles = {\n container: {\n border: '1px solid',\n borderColor: colors.grey400,\n borderRadius: '3px',\n height: '100%',\n width: '100%',\n zIndex: 0,\n backgroundColor: 'white',\n },\n searchField: {\n height: '40px',\n overflow: 'hidden',\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0,\n boxShadow: 'none',\n border: 'none',\n },\n debounceFieldContainer: {\n padding: '8px',\n background: colors.grey100,\n borderTopLeftRadius: '3px',\n borderTopRightRadius: '3px',\n },\n orgUnitTreeContainer: {\n borderBottomLeftRadius: '3px',\n borderBottomRightRadius: '3px',\n overflow: 'auto',\n },\n orgUnitTreeLoader: {\n padding: '8px',\n },\n\n orgUnitFieldLabel: {\n marginBottom: '8px',\n display: 'block',\n boxSizing: 'border-box',\n fontSize: '14px',\n lineHeight: '19px',\n color: 'rgb(33, 41, 52)',\n padding: '0',\n },\n\n orgUnitFieldRequiredLabel: {\n paddingInlineStart: '4px',\n },\n};\n\n// type Props = {\n// key: string;\n// label?: string;\n// required?: boolean;\n// onSelectOrgUnit: (selectedOrgUnits: any) => void;\n// onBlur?: (selectedOrgUnit: Record<string, unknown>) => void;\n// selected?: string;\n// maxTreeHeight?: number;\n// disabled?: boolean;\n// customOrgUnitRoots?: string[];\n// previousOrgUnitId?: string;\n// };\n\nexport type CustomOrgUnitConfig = { field: string; orgUnit: string };\n\ntype OrgUnit = {\n id: string;\n name?: string;\n code?: string;\n path: string;\n level: number;\n};\n\ntype OrgUnitResponse = {\n id: string;\n name?: string;\n displayName?: string;\n code?: string;\n path: string;\n level: number;\n};\n\ntype Props = {\n key: string;\n label?: string;\n field: string;\n required?: boolean;\n onSelectOrgUnit: (selectedOrgUnits: any) => void;\n onBlur?: (selectedOrgUnit: Record<string, unknown>) => void;\n selected?: string;\n maxTreeHeight?: number;\n disabled?: boolean;\n customOrgUnitRoots?: CustomOrgUnitConfig[];\n previousOrgUnitId?: string;\n};\n\nexport const OrgUnitFormField = (props: Props) => {\n // const { onSelectOrgUnit, label, required, selected, disabled, key, customOrgUnitRoots } = props;\n // const d2 = (window as unknown as D2Window)?.d2Web;\n // const classes = useDynamicStyles(orgUnitFieldStyles);\n\n // const config = useMemo(() => {\n // return d2.systemInfo?.toInitObject();\n // }, []);\n\n // TODO: Improvements\n const {\n onSelectOrgUnit,\n label,\n required,\n selected,\n disabled,\n key,\n field,\n customOrgUnitRoots,\n } = props;\n const d2 = (window as unknown as D2Window)?.d2Web;\n const classes = useDynamicStyles(orgUnitFieldStyles);\n\n const config = useMemo(() => d2.systemInfo?.toInitObject(), []);\n\n // TODO: Improvements\n // New state to hold full orgUnit info from customOrgUnitRoots\n // const [configuredRootInfo, setConfiguredRootInfo] = useState<\n // { id: string; name: string; code?: string; path: string; level: number }[]\n // >([]);\n\n const [configuredRootInfo, setConfiguredRootInfo] = useState<OrgUnit[]>([]);\n const [configuredRootsLoading, setConfiguredRootsLoading] = useState(false);\n\n // Strike-through (fallback) current user roots\n const [useCustomRoots, setUseCustomRoots] = useState(\n customOrgUnitRoots && customOrgUnitRoots.length ? true : false\n );\n\n // TODO: START | Deprecated Approach that doesn't support passing ID of Organisation Unit as root\n // const rootOrgUnits = useMemo(() => {\n // return d2.currentUser?.organisationUnits || [];\n // }, []);\n // TODO: END | Deprecated Approach that doesn't support passing ID of Organisation Unit as root\n\n // TODO: Improvements\n // Fetch matching configured roots on mount or when key changes:\n // useEffect(() => {\n // const matchList =\n // customOrgUnitRoots?.filter((entry) => entry.field === (field || key)) ||\n // [];\n\n // if (matchList?.length > 0) {\n // setUseCustomRoots(true);\n\n // Promise.all(\n // (matchList || []).map((entry) =>\n // d2.httpInstance\n // .get(\n // `organisationUnits/${entry.orgUnit}.json?fields=id,displayName,name,code,path,level`\n // )\n // .then((res) => {\n // const u = res.data as OrgUnitResponse;\n // return {\n // id: u.id,\n // name: u.displayName || u.name,\n // code: u.code,\n // path: u.path,\n // level: u.level,\n // };\n // })\n // )\n // )\n // .then(setConfiguredRootInfo)\n // .catch((err) =>\n // console.warn(\n // `[OrgUnitFormField] Failed to fetch customOrgUnitRoots:`,\n // err\n // )\n // );\n // }\n // }, [customOrgUnitRoots, key, field, d2.httpInstance]);\n\n useEffect(() => {\n const matchList =\n customOrgUnitRoots?.filter((entry) => entry.field === (field || key)) ||\n [];\n\n if (matchList.length > 0) {\n setUseCustomRoots(true);\n setConfiguredRootsLoading(true);\n\n Promise.all(\n matchList.map((entry) =>\n d2.httpInstance\n .get(\n `organisationUnits/${entry.orgUnit}.json?fields=id,displayName,name,code,path,level`\n )\n .then((res) => {\n const orgUnitPayload = res.data as OrgUnitResponse;\n return {\n id: orgUnitPayload?.id,\n name: orgUnitPayload?.displayName || orgUnitPayload?.name,\n code: orgUnitPayload?.code,\n path: orgUnitPayload?.path,\n level: orgUnitPayload.level,\n };\n })\n )\n )\n .then((result) => {\n setConfiguredRootInfo(result);\n setConfiguredRootsLoading(false);\n })\n .catch((err) => {\n console.warn(\n `[OrgUnitFormField] Failed to fetch customOrgUnitRoots:`,\n err\n );\n setConfiguredRootsLoading(false);\n });\n }\n }, [customOrgUnitRoots, key, field, d2.httpInstance]);\n\n // const rootOrgUnits = useMemo(() => {\n // if (customOrgUnitRoots && customOrgUnitRoots.length > 0) {\n // return customOrgUnitRoots.map((id) => ({ id }));\n // }\n // return d2.currentUser?.organisationUnits || [];\n // }, [customOrgUnitRoots]);\n\n // const getExpandedItems = () => {\n // if (rootOrgUnits && rootOrgUnits.length === 1) {\n // return [`/${rootOrgUnits[0].id}`];\n // } else if (rootOrgUnits?.length > 1) {\n // return rootOrgUnits.map((root) => root.path);\n // }\n\n // return undefined;\n // };\n\n // TODO: Improvements\n // Decide which roots to render\n // const rootOrgUnits = useMemo(() => {\n // if (useCustomRoots && configuredRootInfo.length > 0) {\n // return configuredRootInfo.map((u) => u);\n // }\n // return d2.currentUser?.organisationUnits || [];\n // }, [useCustomRoots, configuredRootInfo, d2.currentUser]);\n\n const rootOrgUnits = useMemo(() => {\n if (useCustomRoots) {\n if (configuredRootsLoading) {\n return [];\n }\n return configuredRootInfo;\n }\n return d2.currentUser?.organisationUnits || [];\n }, [\n useCustomRoots,\n configuredRootsLoading,\n configuredRootInfo,\n d2.currentUser,\n ]);\n\n const getExpandedItems = () => {\n if (rootOrgUnits && rootOrgUnits.length === 1) {\n return [`/${rootOrgUnits[0].id}`];\n } else if (rootOrgUnits?.length > 1) {\n return rootOrgUnits.map((root) => root.path || `/${root.id}`);\n }\n return undefined;\n };\n\n const initiallyExpanded = getExpandedItems();\n const [searchText, setSearchText] = useState<string | undefined>(undefined);\n const [loading, setLoading] = useState<boolean>(true);\n const [searchLoading, setSearchLoading] = useState<boolean>();\n const [searchData, setSearchData] = useState<any>();\n const [selectedOrgUnit, setSelectedOrgUnit] =\n useState<Record<string, unknown>>();\n const [expanded, setExpanded] = useState<any[] | undefined>(\n initiallyExpanded\n );\n const [showOrgUnitTree, setShowOrgUnitTree] = useState<boolean>(!selected);\n\n useEffect(() => {\n setLoading(true);\n if (selected) {\n d2.httpInstance\n .get(\n `organisationUnits/${selected}.json?fields=id,displayName,path,code,ancestors[id,displayName]`\n )\n .then((response) => {\n if (response.data) {\n setSelectedOrgUnit(response.data);\n\n handleExpand({ path: response.data['path'] as string });\n\n setLoading(false);\n }\n });\n } else {\n setShowOrgUnitTree(true);\n setLoading(false);\n }\n }, []);\n\n const highlighted: string[] | undefined = useMemo(() => {\n if (selectedOrgUnit) {\n return [selectedOrgUnit['path']] as string[];\n }\n\n return undefined;\n }, [selectedOrgUnit]);\n\n const selectedOrgUnitLabel: string = useMemo(() => {\n if (selectedOrgUnit) {\n return [\n ...((selectedOrgUnit['ancestors'] as any[]) || []),\n selectedOrgUnit,\n ]\n .map((orgUnit) => orgUnit['displayName'])\n .join(' / ');\n }\n\n return '';\n }, [selectedOrgUnit]);\n\n const handleExpand = ({ path }: { path: string }) => {\n if (expanded && !expanded.includes(path)) {\n setExpanded([...expanded, path]);\n }\n };\n\n const handleCollapse = ({ path }: { path: string }) => {\n const pathIndex = expanded?.indexOf(path);\n\n if (pathIndex && pathIndex !== -1 && expanded) {\n const updatedExpanded =\n pathIndex === 0\n ? expanded.slice(1)\n : [...expanded.slice(0, pathIndex), ...expanded.slice(pathIndex + 1)];\n setExpanded(updatedExpanded);\n }\n };\n\n const handleOrgUnitSearch = async (query: string) => {\n setSearchLoading(true);\n try {\n const searchResponse = await d2.httpInstance.get(\n `organisationUnits.json?fields=id,displayName,path,publicAccess,access,lastUpdated,children[id,displayName,publicAccess,access,path,children::isNotEmpty]&paging=true&query=${query}&withinUserSearchHierarchy=true&pageSize=15`\n );\n setSearchData((searchResponse.data || {})['organisationUnits']);\n setSearchLoading(false);\n } catch (e) {\n setSearchLoading(false);\n }\n };\n\n const debouncedSearch = useCallback(\n debounce((value) => {\n handleOrgUnitSearch(value);\n }, 500),\n []\n );\n\n const handleFilterChange = (event: { value: string }) => {\n setSearchText(event.value);\n debouncedSearch(event.value);\n };\n\n const ready = useMemo(() => {\n return searchText?.length ? !searchLoading : !loading;\n }, [searchText, searchLoading, loading]);\n\n const renderOrgUnitTree = () => {\n if (searchText && searchText?.length > 0) {\n if (searchLoading) {\n return (\n <div className={classes.orgUnitTreeLoader}>\n <CircularLoader small />\n </div>\n );\n }\n\n return (\n ready && (\n <OrganisationUnitTree\n key={`${key}-search`}\n roots={searchData?.map((orgUnit: any) => orgUnit.id) || []}\n singleSelection={true}\n expanded={expanded as any}\n handleExpand={handleExpand}\n handleCollapse={handleCollapse}\n selected={highlighted}\n onChange={(event: any) => {\n setSelectedOrgUnit(event);\n setShowOrgUnitTree(false);\n onSelectOrgUnit(event.id);\n }}\n />\n )\n );\n }\n return (\n rootOrgUnits.length > 0 && (\n <OrganisationUnitTree\n key={key}\n roots={rootOrgUnits?.map((orgUnit) => orgUnit.id) || []}\n singleSelection={true}\n expanded={expanded as any}\n handleExpand={handleExpand}\n handleCollapse={handleCollapse}\n selected={highlighted}\n onChange={(event: any) => {\n setSelectedOrgUnit(event);\n setShowOrgUnitTree(false);\n onSelectOrgUnit(event.id);\n }}\n />\n )\n );\n };\n\n const handleBlur = () => {\n // onBlur && onBlur(null);\n };\n\n return (\n config && (\n <Provider\n config={config}\n plugin={false}\n parentAlertsAdd={undefined}\n showAlertsInPlugin={false}\n >\n <div>\n {label && (\n <div className={classes.orgUnitFieldLabel}>\n <span>{label}</span>\n {required ? (\n <span className={classes.orgUnitFieldRequiredLabel}>*</span>\n ) : (\n <></>\n )}\n </div>\n )}\n\n {!showOrgUnitTree ? (\n selectedOrgUnit ? (\n <>\n <Tooltip content={selectedOrgUnitLabel}>\n {disabled ? (\n <Chip>{(selectedOrgUnit as any).displayName}</Chip>\n ) : (\n <Chip\n onRemove={() => {\n setShowOrgUnitTree(true);\n }}\n >\n {(selectedOrgUnit as any).displayName}\n </Chip>\n )}\n </Tooltip>\n </>\n ) : (\n <div className={classes.orgUnitTreeLoader}>\n <CircularLoader small />\n </div>\n )\n ) : (\n <div className={classes.container}>\n <div className={classes.debounceFieldContainer}>\n <InputField\n placeholder=\"Search\"\n value={searchText}\n disabled={disabled}\n onChange={handleFilterChange}\n />\n </div>\n {loading ? (\n <div className={classes.orgUnitTreeLoader}>\n <CircularLoader small />\n </div>\n ) : (\n <div\n className={classes.orgUnitTreeContainer}\n style={{ maxHeight: '200px', overflowY: 'auto' }}\n >\n {renderOrgUnitTree()}\n </div>\n )}\n </div>\n )}\n </div>\n </Provider>\n )\n );\n};\n","// Copyright 2024 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport {\n computed,\n Directive,\n EventEmitter,\n inject,\n input,\n model,\n NgZone,\n Output,\n Signal,\n} from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { FormGroup } from '@angular/forms';\nimport {\n Checkbox,\n CircularLoader,\n colors,\n InputField,\n MultiSelectField,\n MultiSelectOption,\n SingleSelectField,\n SingleSelectOption,\n TextAreaField,\n Transfer,\n} from '@dhis2/ui';\nimport {\n D2Window,\n DataFilterCondition,\n DataQueryFilter,\n DHIS2Event,\n TrackedEntityInstance,\n} from '@iapps/d2-web-sdk';\nimport { NgxDhis2HttpClientService } from '@iapps/ngx-dhis2-http-client';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport * as ReactDOM from 'react-dom/client';\nimport { filter, take } from 'rxjs';\nimport { ReactWrapperModule } from '../../react-wrapper/react-wrapper.component';\nimport { useFieldValidation } from '../hooks';\nimport { IFormField } from '../interfaces';\nimport { FieldConfig } from '../models';\nimport { FileUploadField } from './file-upload-field.component';\nimport { OrgUnitFormField, CustomOrgUnitConfig } from './org-unit-form-field.component';\n\n@Directive()\nexport class BaseFormFieldComponent extends ReactWrapperModule {\n ngZone = inject(NgZone);\n httpClient = inject(NgxDhis2HttpClientService);\n fieldType = 'textbox';\n field = input.required<IFormField<string>>();\n fieldError = input<string | undefined>();\n fieldConfig = input<FieldConfig>(new FieldConfig());\n form = model.required<FormGroup>();\n isValid = input<boolean>();\n isValueAssigned = input<boolean>();\n dataId = input<string>();\n customOrgUnitRoots = input<CustomOrgUnitConfig[]>();\n\n value = model<string>();\n protected value$ = toObservable(this.value);\n protected isValueAssigned$ = toObservable(this.isValueAssigned);\n protected fieldError$ = toObservable(this.fieldError);\n\n label: Signal<string | undefined> = computed(() => {\n return !this.fieldConfig()?.hideLabel ? this.field().label : undefined;\n });\n\n placeholder: Signal<string> = computed(() => {\n return (\n this.field()?.placeholder || `Enter ${this.field()?.label || 'value'}`\n );\n });\n\n InputField = this.#getInputField();\n\n @Output() update = new EventEmitter<{ form: FormGroup; value: any }>();\n @Output() immediateUpdate = new EventEmitter<{\n form: FormGroup;\n value: any;\n }>();\n\n override async ngAfterViewInit() {\n if (!this.elementRef) throw new Error('No element ref');\n this.reactDomRoot = ReactDOM.createRoot(this.elementRef.nativeElement);\n\n this.component = this.InputField;\n this.render();\n }\n\n #getInputField() {\n return (): React.JSX.Element => {\n const [value, setValue] = useState(\n this.form().get(this.field().id)?.value ||\n this.form().get(this.field().key)?.value\n );\n\n\n const [selected, setSelected] = useState();\n const [touched, setTouched] = useState(false);\n const [disabled, setDisabled] = useState<boolean>(\n this.field()?.disabled ?? this.field()?.generated ?? false\n );\n const [initialError, setInitialError] = useState<string>();\n const [recordExistError, setRecordExistError] = useState<\n string | undefined\n >();\n const [checkingUniqueness, setCheckingUniqueness] = useState<boolean>();\n\n useEffect(() => {\n const isAssignedSubscription = this.isValueAssigned$\n .pipe(filter((isValueAssigned) => isValueAssigned === true))\n .subscribe({\n next: () => {\n const value =\n this.form().get(this.field().id)?.value ||\n this.form().get(this.field().key)?.value;\n setValue(value);\n setDisabled(true);\n checkValueUniqueness();\n },\n });\n\n return () => {\n isAssignedSubscription.unsubscribe();\n };\n }, []);\n\n // TODO: Review error handling as take() has potential to missed any other updated error information\n useEffect(() => {\n const fieldErrorSubscription = this.fieldError$\n .pipe(\n filter((error) => error !== initialError),\n take(1)\n )\n .subscribe({\n next: (error: string | undefined) => {\n setInitialError(error);\n },\n });\n\n return () => {\n fieldErrorSubscription.unsubscribe();\n };\n }, [initialError]); // Add initialError as a dependency to avoid stale closures\n\n const arrayValue = useMemo(() => {\n if (value && value.length > 0) {\n return value.split(',');\n }\n\n return [];\n }, [value]);\n\n const inputWidth = useMemo(() => {\n if (\n this.field().controlType === 'date' ||\n this.field().controlType === 'date-time'\n ) {\n return '360px';\n }\n\n return this.fieldConfig()?.inputWidth;\n }, []);\n\n const { validationError, hasError } = useFieldValidation({\n field: this.field(),\n form: this.form(),\n initialError,\n recordExistError,\n value,\n touched,\n });\n\n const onValueChange = (value: unknown) => {\n this.ngZone.run(() => {\n (\n this.form().get(this.field().id) ||\n this.form().get(this.field().key)\n )?.setValue(value);\n\n this.update.emit({\n form: this.form(),\n value,\n });\n });\n\n setValue(value);\n setTouched(true);\n };\n\n const checkValueUniqueness = async () => {\n if (this.field().unique || (this.field().extension?.isDataElementUnique ?? false) && value && value.length > 0 && touched) {\n // if (this.field().unique && value && value.length > 0 && touched) {\n setCheckingUniqueness(true);\n setRecordExistError(undefined);\n try {\n const isDuplicate = await this.searchForDuplicates(value);\n\n setCheckingUniqueness(false);\n\n if (isDuplicate) {\n const customError = `Record with this ${this.label()} is already registered`;\n (\n this.form().controls[this.field().id] ||\n this.form().controls[this.field().key]\n )?.setErrors({\n customError,\n });\n setRecordExistError(customError);\n }\n } catch (e) {\n setCheckingUniqueness(false);\n setRecordExistError(undefined);\n }\n }\n };\n\n const formFieldContent = () => {\n switch (this.field().controlType) {\n case 'textarea':\n return (\n <TextAreaField\n error={hasError}\n validationText={validationError}\n inputWidth={this.fieldConfig()?.inputWidth}\n required={this.field().required}\n name={this.field().id}\n disabled={disabled}\n label={this.label()}\n rows={5}\n placeholder={this.placeholder()}\n value={value}\n onChange={(event: any) => {\n onValueChange(event.value);\n }}\n onBlur={() => {\n checkValueUniqueness();\n }}\n />\n );\n\n\n case 'org-unit': {\n return (\n <OrgUnitFormField\n label={this.label()}\n key={this.field().id}\n field={this.field().id}\n required={this.field().required}\n disabled={disabled}\n customOrgUnitRoots={this.customOrgUnitRoots()}\n onSelectOrgUnit={(selectedOrgUnit: string) => {\n onValueChange(selectedOrgUnit);\n }}\n selected={value}\n />\n );\n }\n\n\n case 'transfer':\n return (\n <Transfer\n filterable\n filterPlaceholder=\"Search\"\n selected={selected}\n leftHeader={\n <div\n style={{\n fontSize: 14,\n padding: '8px 4px',\n }}\n >\n {this.field().availableOptionsLabel}\n </div>\n }\n rightHeader={\n <div\n style={{\n fontSize: 14,\n padding: '8px 4px',\n }}\n >\n {this.field().selectedOptionsLabel}\n </div>\n }\n options={this.field().options}\n onChange={(event: any) => {\n onValueChange(event.selected);\n }}\n />\n );\n case 'checkbox':\n return (\n <Checkbox\n checked={Boolean(value)}\n error={hasError}\n label={this.label()}\n name={this.field().id}\n disabled={disabled}\n onChange={(event: any) => {\n onValueChange(event.checked);\n }}\n onBlur={() => {\n checkValueUniqueness();\n }}\n />\n );\n case 'dropdown':\n return (\n <SingleSelectField\n filterable={(this.field().options || []).length > 5}\n clearable\n error={hasError}\n validationText={validationError}\n inputWidth={this.fieldConfig()?.inputWidth}\n disabled={disabled}\n required={this.field().required}\n className=\"select\"\n label={this.label()}\n selected={value}\n onChange={(event: any) => {\n onValueChange(event.selected);\n }}\n onBlur={() => {\n checkValueUniqueness();\n }}\n >\n {(this.field().options || []).map((option) => (\n <SingleSelectOption\n key={crypto.randomUUID() || option.key}\n label={option.label}\n value={option.value}\n />\n ))}\n </SingleSelectField>\n );\n case 'multi-dropdown':\n return (\n <MultiSelectField\n clearText=\"Clear\"\n clearable\n empty=\"No data found\"\n filterable={(this.field().options || []).length > 5}\n filterPlaceholder=\"Type to filter options\"\n error={hasError}\n validationText={validationError}\n inputWidth={this.fieldConfig()?.inputWidth}\n disabled={disabled}\n label={this.label()}\n required={this.field().required}\n loadingText=\"Loading options\"\n noMatchText=\"No options found\"\n onChange={(event: { selected: string[] }) => {\n const selectedValue = (event.selected || []).join(',');\n onValueChange(selectedValue);\n }}\n onBlur={() => {\n checkValueUniqueness();\n }}\n selected={arrayValue}\n >\n {(this.field().options || []).map((option) => (\n <MultiSelectOption\n key={option.key}\n label={option.label}\n value={option.value}\n />\n ))}\n </MultiSelectField>\n );\n case 'file':\n return (\n <>\n <FileUploadField\n label={this.label()}\n id={this.field().id}\n hasError={hasError}\n required={this.field().required}\n validationText={validationError}\n performUpload={true}\n uploadUrl={'fileResources'}\n onUploadSuccess={(fileId: string) => {\n onValueChange(fileId);\n }}\n extension={this.field()?.extension}\n />\n </>\n );\n default:\n return (\n <InputField\n error={hasError}\n validationText={validationError}\n type={this.field().type as any}\n inputWidth={inputWidth}\n required={this.field().required}\n name={this.field().id}\n label={this.label()}\n min={this.field().min?.toString()}\n max={this.field().max?.toString()}\n placeholder={this.placeholder()}\n value={value}\n readOnly={disabled}\n onChange={(event: any) => {\n onValueChange(event.value);\n }}\n onBlur={() => {\n checkValueUniqueness();\n }}\n />\n );\n }\n };\n\n {\n return (\n <React.Fragment>\n {formFieldContent()}\n {checkingUniqueness && (\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n paddingTop: 8,\n }}\n >\n <CircularLoader small />\n <div style={{ color: colors.grey800, fontSize: 14 }}>\n Checking...\n </div>\n </div>\n )}\n </React.Fragment>\n );\n }\n };\n }\n\n onChange(event: any): void {\n this.value.set(event);\n }\n\n async searchForDuplicates(value: string) {\n const d2 = (window as unknown as D2Window).d2Web;\n\n if (!value) {\n return false;\n }\n\n switch (this.field().metaType) {\n case 'ATTRIBUTE': {\n const data = (\n await d2.trackerModule.trackedEntity\n .setTrackedEntityType(this.field().trackedEntityType as string)\n .setOuMode('ACCESSIBLE')\n .setFilters([\n new DataQueryFilter()\n .setAttribute(this.field().id)\n .setCondition(DataFilterCondition.Equal)\n .setValue(value),\n ])\n .get()\n )?.data as TrackedEntityInstance[];\n\n return (\n data?.filter(\n (trackedEntity) => trackedEntity.trackedEntity !== this.dataId()\n )?.length > 0\n );\n }\n\n case 'DATA_ELEMENT': {\n const data = (\n await d2.eventModule.event\n .setOuMode('ACCESSIBLE')\n .setFilters([\n new DataQueryFilter()\n .setAttribute(this.field().id)\n .setCondition(DataFilterCondition.Equal)\n .setValue(value)\n .setType('DATA_ELEMENT'),\n ])\n .get()\n )?.data as DHIS2Event[];\n\n return (\n data?.filter((event) => event.event !== this.dataId())?.length > 0\n );\n }\n\n default:\n return false;\n }\n }\n}\n","import { Component } from '@angular/core';\nimport { BaseFormFieldComponent } from './base-form-field.component';\n\n@Component({\n selector: 'ng-dhis2-ui-form-field-item',\n template: `<ng-content></ng-content>`,\n standalone: false,\n})\nexport class FormFieldItemComponent extends BaseFormFieldComponent {}\n","import {\n Component,\n EffectRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n effect,\n input,\n signal,\n} from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { find } from 'lodash';\nimport moment from 'moment';\nimport { Subject, takeUntil } from 'rxjs';\nimport { IFormField } from '../../interfaces';\nimport { FieldConfig, IMetadataRuleAction } from '../../models';\nimport { CustomOrgUnitConfig } from '../../components/org-unit-form-field.component';\n\n@Component({\n selector: 'ng-dhis2-ui-form-field',\n templateUrl: './form-field.component.html',\n styleUrls: ['./form-field.component.scss'],\n standalone: false,\n})\nexport class FormFieldComponent implements OnInit, OnChanges, OnDestroy {\n field = input.required<IFormField<string>>();\n fieldConfig = input.required<FieldConfig>();\n @Input() form!: FormGroup;\n isCheckBoxButton = input<boolean>();\n fieldClass = input<string>('');\n programRuleActions = input<IMetadataRuleAction[]>([]);\n dataEntities = input<any>({});\n minDate = input<any>();\n maxDate = input(new Date());\n dataId = input<string>();\n customOrgUnitRoots = input<CustomOrgUnitConfig[]>();\n color = 'primary';\n @Output() fieldUpdate: EventEmitter<FormGroup> =\n new EventEmitter<FormGroup>();\n\n @Output() immediateFieldUpdate: EventEmitter<{ value: string }> =\n new EventEmitter<{ value: string }>();\n\n @Output() runtimeOptionChange: EventEmitter<any> = new EventEmitter<any>();\n\n value = signal<any>('');\n runtimeError = signal<string | undefined>(undefined);\n\n private _runtimeOptions: any[] = [];\n runtimeOptions: any = [];\n fieldFilterControl: FormControl = new FormControl();\n protected _onDestroy = new Subject<void>();\n optionSearchTerm!: string;\n isValueAssigned = signal<boolean>(false);\n\n ruleProcessor: EffectRef;\n constructor() {\n this.ruleProcessor = effect(() => {\n this.#processRules(this.programRuleActions());\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes && changes['dataEntities'] && this.field()?.dependentField) {\n if (this._runtimeOptions?.length === 0) {\n const parentOption = find(\n this.field()?.dependentField?.optionSet?.options,\n ['code', (this.form?.value || {})[this.field()?.dependentField?.id]]\n );\n\n this.runtimeOptions = parentOption?.options || [];\n\n this.runtimeOptionChange.emit({\n field: this.field(),\n options: this.runtimeOptions,\n });\n } else {\n this.runtimeOptions = this._runtimeOptions;\n }\n }\n }\n\n ngOnInit() {\n this.value.set(this.form?.get(this.field()?.id)?.value);\n this.fieldFilterControl.valueChanges\n .pipe(takeUntil(this._onDestroy))\n .subscribe(() => {\n this.optionSearchTerm = this.fieldFilterControl.value;\n });\n }\n\n #processRules(ruleActions: IMetadataRuleAction[]) {\n const fieldRuleActions = ruleActions.filter(\n (ruleAction) => ruleAction.field === this.field().id\n );\n\n let runtimeError;\n let isValueAssigned = false;\n fieldRuleActions.forEach((ruleAction) => {\n switch (ruleAction.actionType) {\n case 'ASSIGN': {\n if (ruleAction.assignedData) {\n const currentValue = this.form?.get(this.field().key)?.value;\n\n if (currentValue != ruleAction.assignedData) {\n this.form\n ?.get(this.field().key)\n ?.setValue(ruleAction.assignedData);\n isValueAssigned = true;\n this.onValueChange();\n }\n }\n break;\n }\n\n case 'SHOWERROR': {\n runtimeError = ruleAction.displayedContent;\n (\n this.form.controls[this.field().id] ||\n this.form.controls[this.field().key]\n )?.setErrors({\n customError: runtimeError,\n });\n\n break;\n }\n\n default:\n break;\n }\n });\n\n this.runtimeError.set(runtimeError);\n this.isValueAssigned.set(isValueAssigned);\n }\n\n ngOnDestroy() {\n this._onDestroy.next();\n this._onDestroy.complete();\n this.ruleProcessor.destroy();\n }\n\n get isValid(): boolean {\n return this.form?.controls[this.field().id]?.valid;\n }\n\n get fieldError(): string | undefined {\n const error = this.form?.controls[this.field()?.id]?.errors;\n\n if (!error) {\n return undefined;\n }\n\n if (error['min']) {\n return `${this.field().label} should not be less than ${\n error['min'].min\n }!`;\n } else if (error['max']) {\n return `${this.field().label} should not be greater than ${\n error['max'].max\n }!`;\n } else if (error['pattern']) {\n if (this.field().type === 'email') {\n return `The email address provided is not valid`;\n } else if (this.field().type === 'tel') {\n return 'Phone number provided is not valid';\n } else {\n return `${this.field().label} should have appropriate format`;\n }\n }\n\n return error['required'] ? `${this.field()?.label} is required` : undefined;\n }\n\n get minErrorText(): string | undefined {\n const minError = this.form?.controls[this.field()?.id]?.errors?.['min'];\n\n return minError ? `${this.field()?.label} is min` : undefined;\n }\n\n get maxErrorText(): string | undefined {\n const maxError = this.form?.controls[this.field()?.id]?.errors?.['max'];\n\n return maxError ? `${this.field()?.label} is required` : undefined;\n }\n\n get isInvalid(): boolean {\n return (\n this.form?.controls[this.field().id]?.invalid &&\n !this.form?.controls[this.field().id].pristine\n );\n }\n\n get isDate(): boolean {\n return this.field().controlType === 'date';\n }\n\n get isDateTime(): boolean {\n return this.field().controlType === 'date-time';\n }\n\n get isBoolean(): boolean {\n return this.field().controlType === 'boolean';\n }\n\n get isCheckbox(): boolean {\n return this.field()?.controlType === 'checkbox';\n }\n\n get isCommonField(): boolean {\n return !this.isCheckbox && !this.isDate && !this.isDateTime;\n }\n\n get fieldId(): string {\n return this.field()?.id;\n }\n\n onValueChange() {\n this.fieldUpdate.emit(this.form);\n }\n\n onImmediateChange(event: { value: string }) {\n this.immediateFieldUpdate.emit({ value: event?.value || '' });\n }\n\n onFieldUpdate(e?: any, isDate?: boolean, isDateTime?: boolean): void {\n if (e && e.value) {\n const dateValue = new Date(e.value);\n if (isDate) {\n const dateValue = new Date(e.value);\n const formattedDate = moment(e.value).format('YYYY-MM-DD');\n let dateTimeString = formattedDate;\n\n if (isDateTime) {\n const hours =\n dateValue.getHours() < 10\n ? '0' + dateValue.getHours()\n : dateValue.getHours();\n const minutes =\n dateValue.getMinutes() < 10\n ? '0' + dateValue.getMinutes()\n : dateValue.getMinutes();\n const seconds =\n dateValue.getSeconds() < 10\n ? '0' + dateValue.getSeconds()\n : dateValue.getSeconds();\n\n const timeValue = `${hours}:${minutes}:${seconds}`;\n dateTimeString = `${formattedDate}T${timeValue}`;\n }\n\n const formControl = this.form.get(this.field().key);\n if (formControl) {\n formControl.setValue(dateTimeString);\n }\n } else {\n const formControl = this.form.get(this.field().key);\n if (formControl) {\n formControl.setValue(e.value);\n }\n }\n }\n\n this.fieldUpdate.emit(this.form);\n }\n\n onUpdateRuntimeOptions(options: any[]) {\n this._runtimeOptions = [...options];\n }\n}\n","<div *ngIf=\"field()\" class=\"form-field-item\">\n <ng-dhis2-ui-form-field-item\n [field]=\"field()\"\n [fieldError]=\"runtimeError()\"\n [isValueAssigned]=\"isValueAssigned()\"\n [fieldConfig]=\"fieldConfig()\"\n [(form)]=\"form\"\n [dataId]=\"dataId()\"\n [customOrgUnitRoots]=\"customOrgUnitRoots()\"\n [value]=\"value()\"\n (update)=\"onValueChange()\"\n (immediateUpdate)=\"onImmediateChange($event)\"\n />\n</div>\n","import {\n Component,\n EffectRef,\n EventEmitter,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewChildren,\n computed,\n effect,\n input,\n} from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { head } from 'lodash';\nimport {\n FieldsData,\n FormConfig,\n FormValue,\n IMetadataRuleAction,\n} from '../../models';\nimport { FormFieldComponent } from '../form-field/form-field.component';\nimport { IFormField } from '../../interfaces';\nimport { CustomOrgUnitConfig } from '../../components/org-unit-form-field.component';\n\n@Component({\n selector: 'ng-dhis2-ui-form',\n templateUrl: './form.component.html',\n styleUrls: ['./form.component.scss'],\n standalone: false,\n})\nexport class FormComponent implements OnChanges, OnDestroy, OnInit {\n formConfig = input<FormConfig>();\n fields = input.required<IFormField<string>[]>();\n form = input.required<FormGroup>();\n isFormHorizontal = input<boolean>(false);\n showSaveButton = input<boolean>(false);\n fieldsData = input<FieldsData>();\n fieldClass = input<string>('');\n shouldRenderAsCheckBoxesButton = input<boolean>(false);\n programRuleActions = input<IMetadataRuleAction[]>([]);\n dataEntities = input<any>(undefined);\n dataId = input<string>();\n customOrgUnitRoots = input<CustomOrgUnitConfig[]>();\n\n configuration = computed(() => {\n if (!this.formConfig()) {\n return new FormConfig({\n direction: this.isFormHorizontal() ? 'horizontal' : 'vertical',\n });\n }\n\n return this.formConfig() as FormConfig;\n });\n\n @Output() formUpdate: EventEmitter<any> = new EventEmitter<any>();\n @Output() formValidityUpdate: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n @ViewChildren(FormFieldComponent) fieldComponents!: FormFieldComponent[];\n\n values: any;\n\n get sanitizedFields(): IFormField<string>[] {\n return (this.fields() || []).filter((field: any) => {\n if (field.hidden) {\n return false;\n }\n\n const type = field.isDataElement\n ? 'dataElement'\n : 'trackedEntityAttribute';\n const elementItem = field[type] || field;\n if (!elementItem) {\n return true;\n }\n\n const availableRule = head(\n (this.programRuleActions() || []).filter((ruleAction) => {\n return (\n ruleAction.field === elementItem.id &&\n ruleAction.actionType === 'HIDEFIELD'\n );\n })\n );\n\n if (!availableRule) {\n return true;\n }\n\n return availableRule.actionType !== 'HIDEFIELD';\n });\n }\n\n get layoutCssClass(): string {\n if (!this.isFormHorizontal()) {\n return 'col-12';\n }\n\n const numberOfFields = this.sanitizedFields.length;\n\n if (numberOfFields === 2) {\n return 'col-sm-6';\n }\n\n if (numberOfFields === 1) {\n return 'col-12';\n }\n\n return 'col-sm-4';\n }\n\n ruleProcessor: EffectRef;\n constructor() {\n this.ruleProcessor = effect(() => {\n this.#processRules(this.programRuleActions());\n });\n }\n\n ngOnInit(): void {\n this.values = this.form().getRawValue();\n // TODO: This is uneccesary emit at this stage of execution, since nothing has changes at initiation and potentially break some of implementation that depends formUpdate, which also is triggered when there is actual change in the form apart form initial values that came with it\n this.formUpdate.emit(new FormValue(this.form(), this.fields()));\n this.formValidityUpdate.emit(new FormValue(this.form(), this.fields()).isValid);\n\n console.log()\n }\n // ngOnChanges(changes: SimpleChanges): void {\n // this.values = this.form.getRawValue();\n // }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.values = this.form().getRawValue();\n }\n\n #processRules(ruleActions: IMetadataRuleAction[]) {\n ruleActions.forEach((ruleAction) => {\n switch (ruleAction.actionType) {\n case 'HIDEFIELD': {\n const fieldToRemove = this.fields().find(\n (field) => field.id === ruleAction.field\n );\n\n if (fieldToRemove) {\n const form = this.form();\n const currentValue = form.get(fieldToRemove.key)?.value;\n\n if (currentValue != null) {\n form.get(fieldToRemove.key)?.setValue(null);\n this.onFieldUpdate(form, fieldToRemove);\n }\n }\n break;\n }\n\n default:\n break;\n }\n });\n }\n\n onSubmit(): void {\n this.formUpdate.emit(this.form().getRawValue());\n this.formValidityUpdate.emit(this.form().valid);\n this.formValidityUpdate.emit(new FormValue(this.form(), this.fields()).isValid);\n }\n\n onFieldUpdate(form: FormGroup, field: IFormField<string>): void {\n if (!this.showSaveButton() && form) {\n this.formUpdate.emit(new FormValue(this.form(), this.fields(), field));\n this.formValidityUpdate.emit(this.form().valid);\n\n this.values = form.getRawValue();\n }\n }\n\n onClear(): void {\n this.form().reset();\n }\n\n isFormInValid() {\n return this.form().invalid;\n }\n\n onRunTimeOptionUpdate(result: any) {\n if (this.fieldComponents) {\n const fieldToUpdate = this.fieldComponents.find(\n (fieldComponent) =>\n fieldComponent?.field()?.dependentField?.id === result?.field?.id\n );\n\n const parentOption = result?.options.find(\n (option: { code: any }) =>\n option.code === this.form()?.value[result?.field?.id]\n );\n\n fieldToUpdate?.onUpdateRuntimeOptions(parentOption?.options || []);\n }\n }\n\n ngOnDestroy(): void {\n this.ruleProcessor.destroy();\n }\n}\n","<form [formGroup]=\"form()\" class=\"{{ configuration().directionClassName }}\">\n <!-- form name -->\n <div class=\"form-name\">\n <h2>{{ configuration().formName }}</h2>\n </div>\n <div\n *ngFor=\"let field of sanitizedFields\"\n class=\"form-field-{{ configuration().direction }}\"\n >\n <ng-dhis2-ui-form-field\n [field]=\"field\"\n [fieldConfig]=\"configuration().fieldConfig\"\n [form]=\"form()\"\n [fieldClass]=\"fieldClass()\"\n [dataEntities]=\"dataEntities()\"\n [dataId]=\"dataId()\"\n [customOrgUnitRoots]=\"customOrgUnitRoots()\"\n [programRuleActions]=\"programRuleActions()\"\n [isCheckBoxButton]=\"shouldRenderAsCheckBoxesButton()\"\n (fieldUpdate)=\"onFieldUpdate($event, field)\"\n (runtimeOptionChange)=\"onRunTimeOptionUpdate($event)\"\n />\n </div>\n</form>\n","import {\n Component,\n EventEmitter,\n inject,\n input,\n Input,\n model,\n NgZone,\n OnInit,\n Output,\n signal,\n} from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { Observable } from 'rxjs';\nimport { IFormField, IFormFieldGroup } from '../../interfaces';\nimport { FormField, FormValue } from '../../models';\nimport { FormUtil } from '../../utils';\n\n@Component({\n selector: 'ng-dhis2-ui-repeatable-form',\n templateUrl: './repeatable-form.component.html',\n styleUrls: ['./repeatable-form.component.scss'],\n standalone: false,\n})\nexport class RepeatableFormComponent implements OnInit {\n ngZone = inject(NgZone);\n @Input() formObject!: any;\n @Input() formData: any;\n fieldGroup = input.required<IFormFieldGroup>();\n @Input() form!: FormGroup;\n @Input() numberOfRows!: number | string;\n @Input() programRuleActions!: any[];\n events = model<Record<string, unknown>[] | unknown>();\n @Input() program!: string;\n @Input() programStage!: string;\n @Input() repeatDependentField!: string;\n dataEntities = input.required<Record<string, unknown>>();\n repeatableEvents: any[] = [];\n\n repeatableData: { [index: number]: FormValue } = {};\n\n @Output() repeatableStageUpdate = new EventEmitter<any>();\n\n repeatableFormEntities!: { [event: string]: FormGroup };\n\n eventForm!: FormGroup;\n eventFormValue = signal<FormValue | null>(null);\n #eventFormValue$: Observable<FormValue | null>;\n\n showForm = signal<boolean>(false);\n #showForm$: Observable<boolean>;\n\n #events$: Observable<any>;\n eventIndex = signal<number>(0);\n\n constructor() {\n this.#eventFormValue$ = toObservable(this.eventFormValue);\n this.#showForm$ = toObservable(this.showForm);\n this.#events$ = toObservable(this.events);\n }\n\n get isValid(): boolean {\n return !Object.keys(this.repeatableData).some((index: any) => {\n const formValue = this.repeatableData[index];\n\n return !formValue?.isValid;\n });\n }\n\n ngOnInit(): void {\n this.eventForm = FormUtil.getFormGroup(this.fieldGroup().fields, {});\n this.eventFormValue.set(\n new FormValue(this.eventForm, this.fieldGroup().fields)\n );\n\n this.repeatableEvents = ((this.events() as any[]) || []).map(\n (event: any, index: number) => {\n const fieldControls = (this.fieldGroup().fields || []).reduce(\n (fieldObject: any, field: IFormField<string>) => {\n const value = (event.dataValueEntities || {})[field.key] || '';\n\n return {\n ...fieldObject,\n [field.key]: new FormControl(\n value,\n field.required ? [Validators.required] : []\n ),\n };\n },\n {}\n );\n\n const form = new FormGroup(fieldControls);\n this.repeatableData[index] = new FormValue(\n form,\n this.fieldGroup().fields || []\n );\n return { ...event, form };\n }\n );\n\n this.repeatableStageUpdate.emit(this.repeatableData);\n }\n\n onFormUpdate(formValue: FormValue): void {\n this.eventFormValue.set(formValue);\n this.repeatableData = {\n ...this.repeatableData,\n [this.eventIndex()]: formValue,\n };\n }\n}\n","<div class=\"form__repeatable-stage-container\">\n <!-- <ng-dhis2-ui-wrapper [component]=\"EventTable()\"></ng-dhis2-ui-wrapper> -->\n @if(showForm()) {\n <div class=\"form__repeatable-stage-form\">\n <ng-dhis2-ui-form\n [fields]=\"fieldGroup().fields || []\"\n [form]=\"eventForm\"\n [programRuleActions]=\"programRuleActions\"\n [dataEntities]=\"{}\"\n [isFormHorizontal]=\"false\"\n (formUpdate)=\"onFormUpdate($event)\"\n >\n </ng-dhis2-ui-form>\n\n <!-- <ng-dhis2-ui-wrapper [component]=\"FormActionButtons\"></ng-dhis2-ui-wrapper> -->\n </div>\n }\n</div>\n","/* eslint-disable @angular-eslint/no-output-native */\nimport {\n Component,\n EventEmitter,\n NgZone,\n OnInit,\n Output,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { FormGroup } from '@angular/forms';\nimport { ProgramRuleEngine } from '@iapps/d2-web-sdk';\nimport { isEmpty } from 'lodash';\nimport { Observable } from 'rxjs';\nimport { IFormFieldGroup, IFormMetadata } from '../../interfaces';\nimport { FormValue } from '../../models';\nimport { FormUtil } from '../../utils';\n\n@Component({\n selector: 'ng-dhis2-ui-section-form',\n templateUrl: './section-form.component.html',\n styleUrls: ['./section-form.component.scss'],\n standalone: false,\n})\nexport class SectionFormComponent implements OnInit {\n ngZone = inject(NgZone);\n loading = input<boolean>();\n isloading!: boolean;\n formMetaData = input.required<IFormMetadata>();\n dataValueEntities = input.required<Record<string, unknown>>();\n formGroups: Record<string, FormGroup> = {};\n formValueEntity: Record<string, FormValue> = {};\n repeatableFormValueEntity: Record<string, Record<number, FormValue>> = {};\n ruleActions = signal<any[]>([]);\n\n @Output() save = new EventEmitter<Record<string, unknown>>();\n @Output() formUpdate = new EventEmitter<Record<string, unknown>>();\n @Output() cancel = new EventEmitter();\n @Output() formValidityUpdate: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n inValid = signal<boolean>(true);\n inValid$: Observable<boolean>;\n\n constructor() {\n this.inValid$ = toObservable(this.inValid);\n }\n\n ngOnInit(): void {\n if (this.formMetaData().sections) {\n (this.formMetaData().sections || []).forEach((formSection) => {\n (formSection.fieldGroups || []).forEach((fieldGroup) => {\n const formGroup = FormUtil.getFormGroup(\n fieldGroup.fields,\n this.dataValueEntities()\n );\n\n const formValue = new FormValue(formGroup, fieldGroup.fields);\n this.formGroups[fieldGroup.id] = formGroup;\n\n if (!fieldGroup.repeatableStage) {\n this.formValueEntity[fieldGroup.id] = formValue;\n } else {\n this.repeatableFormValueEntity[\n fieldGroup.dataKey || fieldGroup.id\n ] = {\n 0: formValue,\n };\n }\n });\n });\n\n this.inValid.set(this.checkIfInValid());\n\n this.ruleActions.set(\n new ProgramRuleEngine()\n .setRules(this.formMetaData().rules)\n .setDataValues(this.#getDataValue())\n .execute()\n );\n }\n }\n\n onUpdateRepeatableStage(\n repeatableData: Record<number, FormValue>,\n fieldGroup: IFormFieldGroup\n ) {\n if (!isEmpty(repeatableData)) {\n this.repeatableFormValueEntity[fieldGroup.dataKey || fieldGroup.id] =\n repeatableData;\n this.inValid.set(this.checkIfInValid());\n const dataValues = this.#getDataValue();\n\n this.formUpdate.emit(dataValues);\n this.formValidityUpdate.emit(this.checkIfInValid());\n }\n }\n\n onFormUpdate(formValue: FormValue, fieldGroupId: string) {\n this.formValueEntity[fieldGroupId] = formValue;\n this.inValid.set(this.checkIfInValid());\n\n const dataValues = this.#getDataValue();\n\n this.ruleActions.set(\n new ProgramRuleEngine()\n .setRules(this.formMetaData().rules)\n .setDataValues(dataValues)\n .execute()\n );\n\n this.formUpdate.emit(dataValues);\n this.formValidityUpdate.emit(this.checkIfInValid());\n }\n\n onSubmit() {\n const dataValues = this.#getDataValue();\n\n this.save.emit(dataValues);\n }\n\n onCancel(event?: MouseEvent) {\n event?.stopPropagation();\n this.cancel.emit();\n }\n\n #getDataValue() {\n const dataValues = Object.keys(this.formValueEntity).reduce(\n (valueObject, key) => {\n const values = this.formValueEntity[key]?.form?.getRawValue();\n return { ...valueObject, ...(values || {}) };\n },\n {}\n );\n\n const repeatableValues = Object.keys(this.repeatableFormValueEntity).reduce(\n (repeatableObject, key) => {\n const formValueEntity = this.repeatableFormValueEntity[key];\n\n const values = Object.keys(formValueEntity)\n .map((valueIndex) => {\n return (formValueEntity[+valueIndex] || {}).form?.getRawValue();\n })\n .filter((value) => value);\n\n return { ...repeatableObject, [key]: values };\n },\n {}\n );\n\n return { ...dataValues, ...repeatableValues };\n }\n\n checkIfInValid() {\n const valueValidity = Object.keys(this.formValueEntity)\n .map((key) => {\n return (this.formValueEntity[key] || {}).isValid;\n })\n .some((validity) => !validity);\n\n const repeatableDataValidity = Object.keys(this.repeatableFormValueEntity)\n .map((key) => {\n return Object.keys(this.repeatableFormValueEntity[key]).some(\n (valueIndex) => {\n return (\n (this.repeatableFormValueEntity[key] || {})[+valueIndex] || {}\n ).isValid;\n }\n );\n })\n .some((validity) => !validity);\n\n return valueValidity || repeatableDataValidity;\n }\n}\n","<ng-container *ngIf=\"formMetaData()\">\n <ng-container *ngFor=\"let formSection of formMetaData().sections\">\n @if(formSection?.name; as sectionName) {\n <div class=\"form__section-name\">\n {{ sectionName }}\n </div>\n }\n <div class=\"form__section-content\">\n <ng-container *ngIf=\"formSection\">\n <div *ngFor=\"let fieldGroup of formSection?.fieldGroups\">\n <ng-container *ngIf=\"formGroups[fieldGroup.id] as formGroup\">\n <div\n *ngIf=\"fieldGroup.name && !fieldGroup.repeatableStage\"\n class=\"form__field-group-name\"\n >\n {{ fieldGroup?.name }}\n </div>\n <div *ngIf=\"fieldGroup.fields\">\n <!-- Single stage form section -->\n <ng-container *ngIf=\"!fieldGroup.repeatableStage\">\n <ng-dhis2-ui-form\n *ngIf=\"fieldGroup.fields.length > 0\"\n [fields]=\"fieldGroup.fields\"\n [form]=\"formGroup\"\n [dataEntities]=\"dataValueEntities()\"\n [programRuleActions]=\"ruleActions()\"\n [isFormHorizontal]=\"fieldGroup.isFormHorizontal || false\"\n (formUpdate)=\"onFormUpdate($event, fieldGroup.id)\"\n ></ng-dhis2-ui-form>\n </ng-container>\n\n <!-- Repeatable stage form section -->\n <ng-container *ngIf=\"fieldGroup.repeatableStage\">\n @if(fieldGroup.repeatDependentField) {\n\n <ng-container *ngIf=\"fieldGroup.repeatDependentField\">\n <ng-container\n *ngIf=\"{\n numberOfRows:\n dataValueEntities()[fieldGroup.repeatDependentField]\n } as dataParams\"\n >\n <ng-dhis2-ui-repeatable-form\n *ngIf=\"\n dataParams.numberOfRows &&\n dataParams.numberOfRows !== '0'\n \"\n [fieldGroup]=\"fieldGroup\"\n [dataEntities]=\"dataValueEntities()\"\n [form]=\"formGroup\"\n [program]=\"formSection.program || ''\"\n [programStage]=\"fieldGroup.repeatableStage\"\n [programRuleActions]=\"ruleActions()\"\n [numberOfRows]=\"+dataParams.numberOfRows\"\n [repeatDependentField]=\"\n fieldGroup.repeatDependentField || ''\n \"\n [events]=\"dataValueEntities()[fieldGroup.dataKey!]\"\n (repeatableStageUpdate)=\"\n onUpdateRepeatableStage($event, fieldGroup)\n \"\n ></ng-dhis2-ui-repeatable-form\n ></ng-container>\n </ng-container>\n } @else {\n <ng-dhis2-ui-repeatable-form\n [fieldGroup]=\"fieldGroup\"\n [dataEntities]=\"dataValueEntities()\"\n [form]=\"formGroup\"\n [program]=\"formSection.program || ''\"\n [programStage]=\"fieldGroup.repeatableStage\"\n [programRuleActions]=\"ruleActions()\"\n [numberOfRows]=\"1\"\n [repeatDependentField]=\"fieldGroup.repeatDependentField || ''\"\n [events]=\"dataValueEntities()[fieldGroup.dataKey!]\"\n (repeatableStageUpdate)=\"\n onUpdateRepeatableStage($event, fieldGroup)\n \"\n ></ng-dhis2-ui-repeatable-form>\n }\n </ng-container>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n </ng-container>\n</ng-container>\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport {\n Directive,\n effect,\n EffectRef,\n EventEmitter,\n inject,\n input,\n NgZone,\n OnDestroy,\n Output,\n signal,\n} from '@angular/core';\nimport { IFormField } from '../../interfaces';\nimport { FormValue, IMetadataRule, IMetadataRuleAction } from '../../models';\nimport { ProgramRuleEngine } from '@iapps/d2-web-sdk';\nimport { CustomOrgUnitConfig } from '../../components/org-unit-form-field.component';\n\n@Directive()\nexport class BaseFormWrapperComponent implements OnDestroy {\n ngZone = inject(NgZone);\n name = input<string>();\n fields = input.required<IFormField<string>[]>();\n rules = input<IMetadataRule[]>([]);\n dataValues = input<Record<string, unknown>>({});\n dataId = input<string>();\n customOrgUnitRoots = input<CustomOrgUnitConfig[]>();\n\n\n ruleActions = signal<IMetadataRuleAction[]>([]);\n isFormValid = signal<boolean>(true);\n #updatedDataValues = signal<Record<string, unknown>>({});\n\n @Output() formSave = new EventEmitter<Record<string, unknown>>();\n @Output() formUpdate = new EventEmitter<Record<string, unknown>>();\n @Output() formCancel = new EventEmitter<void>();\n @Output() formValidityUpdate = new EventEmitter<boolean>();\n\n ruleProcessor: EffectRef;\n constructor() {\n this.ruleProcessor = effect(() => {\n if (this.#updatedDataValues()) {\n this.executeRules();\n }\n });\n }\n\n updateDataValues(dataValues: Record<string, unknown>) {\n this.#updatedDataValues.set(dataValues);\n this.formUpdate.emit(this.#updatedDataValues());\n }\n\n updateFormValidity(isFormValid: boolean) {\n this.isFormValid.set(isFormValid);\n this.formValidityUpdate.emit(isFormValid);\n }\n\n protected executeRules() {\n this.ruleActions.set(\n new ProgramRuleEngine()\n .setRules(this.rules())\n .setDataValues(this.#updatedDataValues())\n .execute()\n );\n }\n\n ngOnDestroy(): void {\n this.ruleProcessor.destroy();\n }\n}\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './base-form-wrapper.component';\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './components';\n","import { Component, OnInit } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { BaseFormWrapperComponent } from '../../shared';\nimport { FormUtil } from '../../utils';\n\n@Component({\n selector: 'ng-dhis2-ui-flat-form',\n templateUrl: './flat-form.component.html',\n standalone: false,\n})\nexport class FlatFormComponent\n extends BaseFormWrapperComponent\n implements OnInit\n{\n formGroup!: FormGroup;\n ngOnInit(): void {\n this.formGroup = FormUtil.getFormGroup(this.fields(), this.dataValues());\n this.onFormUpdate();\n }\n\n onFormUpdate() {\n this.updateDataValues(this.formGroup.getRawValue());\n this.updateFormValidity(this.formGroup.valid);\n }\n}\n","<ng-dhis2-ui-form\n [fields]=\"fields()\"\n [form]=\"formGroup\"\n [dataEntities]=\"dataValues()\"\n [dataId]=\"dataId()\"\n [customOrgUnitRoots]=\"customOrgUnitRoots()\"\n [programRuleActions]=\"ruleActions()\"\n (formUpdate)=\"onFormUpdate()\"\n/>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FormFieldItemComponent } from './components/form-field-item.component';\nimport { FormFieldComponent } from './containers/form-field/form-field.component';\nimport { FormComponent } from './containers/form/form.component';\nimport { RepeatableFormComponent } from './containers/repeatable-form/repeatable-form.component';\nimport { SectionFormComponent } from './containers/section-form/section-form.component';\nimport { OrganisationUnitSelectorModule } from '../organisation-unit-selector';\nimport { ReactWrapperModule } from '../react-wrapper/react-wrapper.component';\nimport { FlatFormComponent } from './containers/flat-form/flat-form.component';\n\n@NgModule({\n declarations: [\n FormFieldComponent,\n FormComponent,\n RepeatableFormComponent,\n SectionFormComponent,\n FlatFormComponent,\n FormFieldItemComponent,\n ],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n ReactWrapperModule,\n OrganisationUnitSelectorModule,\n ],\n exports: [\n FormFieldComponent,\n FormComponent,\n RepeatableFormComponent,\n SectionFormComponent,\n FlatFormComponent,\n ],\n})\nexport class D2FormModule {}\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './form.module';\nexport * from './containers/form-field/form-field.component';\nexport * from './containers/form/form.component';\nexport * from './containers/repeatable-form/repeatable-form.component';\nexport * from './containers/section-form/section-form.component';\nexport * from './containers/flat-form/flat-form.component';\nexport * from './models';\nexport * from './interfaces';\nexport * from './utils';\n","import {\n AfterViewInit,\n Component,\n EventEmitter,\n inject,\n Input,\n NgZone,\n Output,\n signal,\n} from '@angular/core';\nimport React, { useState, useEffect } from 'react';\nimport * as ReactDOM from 'react-dom/client';\nimport { ReactWrapperModule } from '../../../react-wrapper/react-wrapper.component';\n\nimport {\n ProgramAttributesFilter,\n ProgramStageDataElementFilter,\n SelectionFiltersProps,\n TableRow,\n} from '../../models/selection-filters-ui.model';\n\nimport {\n InputField,\n SingleSelectField,\n SingleSelectOption,\n Button,\n ButtonStrip,\n Modal,\n ModalActions,\n ModalContent,\n ModalTitle,\n CircularLoader,\n} from '@dhis2/ui';\nimport { Provider } from '@dhis2/app-runtime';\nimport { firstValueFrom, map, Observable, take, zip } from 'rxjs';\nimport { NgxDhis2HttpClientService, User } from '@iapps/ngx-dhis2-http-client';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { OrganisationUnitSelectionConfig } from '../../../organisation-unit-selector';\nimport OrgUnitDimension from '../../../organisation-unit-selector/components/OrgUnitDimension';\n\n@Component({\n selector: 'app-selection-filters-ui',\n template: '<ng-content></ng-content>',\n styleUrls: ['./selection-filters-ui.component.scss'],\n standalone: false,\n})\nexport class SelectionFiltersComponent\n extends ReactWrapperModule\n implements AfterViewInit\n{\n @Input() actionOptions: {\n label: string;\n onClick: (row: TableRow) => void;\n }[] = [];\n @Input() programAttributesFilters: ProgramAttributesFilter[] = [];\n @Input() programStageDataElementFilters: ProgramStageDataElementFilter[] = [];\n @Input() startDate?: string;\n @Input() endDate?: string;\n @Input() program?: string;\n @Input() organisationUnit?: string;\n @Output() actionSelected = new EventEmitter<SelectionFiltersProps>();\n\n httpClient = inject(NgxDhis2HttpClientService);\n ngZone = inject(NgZone);\n\n private getAppConfig(): Observable<any> {\n return this.httpClient.systemInfo().pipe(\n map((response) => {\n const systemInfo = response as unknown as Record<string, unknown>;\n return {\n baseUrl: (document?.location?.host?.includes('localhost')\n ? `${document.location.protocol}//${document.location.host}`\n : systemInfo['contextPath']) as string,\n apiVersion: Number(\n (((systemInfo['version'] as string) || '')?.split('.') || [])[1]\n ),\n };\n })\n );\n }\n\n getRootOrgUnits(): Observable<string[]> {\n const orgUnitAttribute = this.getOrgUnitAttributeByUsage(\n this.orgUnitSelectionConfig.usageType\n );\n return this.httpClient\n .me()\n .pipe(\n map((user: User) =>\n (user ? user[orgUnitAttribute] : []).map((orgUnit) => orgUnit.id)\n )\n );\n }\n\n getOrgUnitLevels(): Promise<any> {\n return firstValueFrom(\n this.httpClient\n .get(\n 'organisationUnitLevels.json?fields=id,level,displayName,name&paging=false'\n )\n .pipe(\n map((res: Record<string, unknown>) => res?.['organisationUnitLevels'])\n )\n );\n }\n\n onSelectOrgUnit(selectedOrgUnits: Record<string, string>[]) {\n this.showOrgUnitTree.set(false);\n\n if ((selectedOrgUnits || [])[0]) {\n this.selectedOrgUnit.set(selectedOrgUnits[0]);\n }\n }\n\n getOrgUnitGroups(): Promise<any> {\n return firstValueFrom(\n this.httpClient\n .get(\n 'organisationUnitGroups.json?fields=id,displayName,name&paging=false'\n )\n .pipe(\n map((res: Record<string, unknown>) => res?.['organisationUnitGroups'])\n )\n );\n }\n\n getOrgUnitAttributeByUsage(usageType: string) {\n switch (usageType) {\n case 'DATA_ENTRY':\n return 'organisationUnits';\n\n case 'DATA_VIEW':\n return 'dataViewOrganisationUnits';\n\n default:\n return 'organisationUnits';\n }\n }\n\n FieldOrgUnitSelector = (props: {\n onSelectOrgUnit: (selectedOrgUnits: any) => void;\n onCancelOrgUnit: () => void;\n }) => {\n const { onSelectOrgUnit, onCancelOrgUnit } = props;\n const [selected, setSelected] = useState([]);\n const [rootOrgUnits, setRootOrgUnits] = useState<string[]>();\n const [config, setConfig] = useState<any>();\n\n // TODO: START::: Improve approach on handling observables \n // useEffect(() => {\n // zip(this.getAppConfig(), this.getRootOrgUnits()).subscribe({\n // next: ([appConfig, rootOrgUnits]) => {\n // setConfig(appConfig);\n // setRootOrgUnits(rootOrgUnits);\n // },\n // error: (error) => console.error(error),\n // });\n // }, []);\n // TODO: END::: Improve approach on handling observables \n\n useEffect(() => {\n const subscription = zip(this.getAppConfig(), this.getRootOrgUnits())\n .pipe(take(1)) // Ensures only one emission\n .subscribe({\n next: ([appConfig, rootOrgUnits]) => {\n setConfig(appConfig);\n setRootOrgUnits(rootOrgUnits);\n },\n error: (error) => console.error(error),\n });\n \n return () => {\n subscription.unsubscribe(); // Cleanup to avoid memory leaks\n };\n }, []);\n \n return config ? (\n <Provider\n config={config}\n plugin={false}\n parentAlertsAdd={undefined}\n showAlertsInPlugin={false}\n >\n {\n <Modal position=\"middle\" large>\n <ModalTitle>Organisation unit</ModalTitle>\n <ModalContent>\n <OrgUnitDimension\n selected={selected}\n hideGroupSelect={this.orgUnitSelectionConfig.hideGroupSelect}\n hideLevelSelect={this.orgUnitSelectionConfig.hideLevelSelect}\n hideUserOrgUnits={this.orgUnitSelectionConfig.hideUserOrgUnits}\n onSelect={(selectionEvent: any) => {\n setSelected(selectionEvent.items);\n }}\n orgUnitGroupPromise={this.getOrgUnitGroups()}\n orgUnitLevelPromise={this.getOrgUnitLevels()}\n roots={rootOrgUnits}\n />\n </ModalContent>\n <ModalActions>\n <ButtonStrip end>\n <Button\n onClick={() => {\n onCancelOrgUnit();\n }}\n >\n Cancel\n </Button>\n <Button\n primary\n disabled={selected.length === 0}\n onClick={() => {\n onSelectOrgUnit(selected);\n }}\n >\n Confirm\n </Button>\n </ButtonStrip>\n </ModalActions>\n </Modal>\n }\n </Provider>\n ) : (\n <CircularLoader small />\n );\n };\n showOrgUnitTree = signal<boolean>(false);\n orgUnitSelectionConfig: OrganisationUnitSelectionConfig = {\n hideGroupSelect: true,\n hideLevelSelect: true,\n hideUserOrgUnits: true,\n allowSingleSelection: true,\n usageType: 'DATA_ENTRY',\n };\n\n selectedOrgUnit = signal<any>(null);\n selectedOrgUnit$ = toObservable(this.selectedOrgUnit);\n\n SelectionFiltersUI = () => {\n const [filters, setFilters] = useState<{\n programAttributesFilters: ProgramAttributesFilter[];\n programStageDataElementFilters: ProgramStageDataElementFilter[];\n startDate: string;\n endDate: string;\n program: string;\n organisationUnit: string;\n }>({\n programAttributesFilters: this.programAttributesFilters || [],\n programStageDataElementFilters: this.programStageDataElementFilters || [],\n startDate: this.startDate || '',\n endDate: this.endDate || '',\n program: this.program || '',\n organisationUnit: this.organisationUnit || '',\n });\n\n const [displayValue, setDisplayValue] = useState(null);\n const [selected, setSelected] = useState();\n const [selectedOrganisationUnit, setSelectedOrganisationUnit] = useState();\n const [touched, setTouched] = useState(false);\n const [showOrgUnit, setShowOrgUnit] = useState<boolean>(false);\n const [value, setValue] = useState(null);\n const [showMoreFilters, setShowMoreFilters] = useState(false);\n\n const toggleMoreFilters = () => setShowMoreFilters((prev) => !prev);\n\n useEffect(() => {\n setFilters({\n programAttributesFilters: this.programAttributesFilters,\n programStageDataElementFilters: this.programStageDataElementFilters,\n startDate: this.startDate || '',\n endDate: this.endDate || '',\n program: this.program || '',\n organisationUnit: this.organisationUnit || filters.organisationUnit,\n });\n }, [\n this.programAttributesFilters,\n this.programStageDataElementFilters,\n this.startDate,\n this.endDate,\n ]);\n\n const handleAttributeChange = (index: number, selectedValue: string) => {\n setFilters((prevFilters) => {\n const updatedFilters = [...prevFilters.programAttributesFilters];\n updatedFilters[index] = {\n ...updatedFilters[index],\n value: selectedValue,\n };\n return { ...prevFilters, programAttributesFilters: updatedFilters };\n });\n };\n\n const handleDataElementChange = (index: number, selectedValue: string) => {\n setFilters((prevFilters) => {\n const updatedFilters = [...prevFilters.programStageDataElementFilters];\n updatedFilters[index] = {\n ...updatedFilters[index],\n value: selectedValue,\n };\n return {\n ...prevFilters,\n programStageDataElementFilters: updatedFilters,\n };\n });\n };\n\n const handleSearch = () => {\n this.actionSelected.emit({\n ...filters,\n organisationUnit:\n selectedOrganisationUnit ||\n this.organisationUnit ||\n filters.organisationUnit,\n startDate: filters.startDate,\n endDate: filters.endDate,\n program: this.program || filters.program,\n } as unknown as SelectionFiltersProps);\n };\n\n const getAttributeColumnSpan = (index: number) => {\n const totalItems = filters.programAttributesFilters.length;\n\n if (totalItems <= 4) {\n if (totalItems === 1) {\n return 'span 4';\n }\n if (totalItems === 2) {\n return 'span 2';\n }\n if (totalItems === 3) {\n return 'span 1';\n }\n if (totalItems === 4) {\n return 'span 1';\n }\n } else {\n const rowIndex = Math.floor(index / 2);\n if (index % 2 === 0) {\n return 'span 2';\n } else if (index === totalItems - 1) {\n return 'span 4';\n } else {\n return 'span 2';\n }\n }\n\n return 'span 1';\n };\n\n const getDataElementColumnSpan = (index: number) => {\n const totalItems = filters.programStageDataElementFilters.length;\n\n if (totalItems <= 4) {\n if (totalItems === 1) {\n return 'span 4';\n }\n if (totalItems === 2) {\n return 'span 2';\n }\n if (totalItems === 3) {\n return 'span 1';\n }\n if (totalItems === 4) {\n return 'span 1';\n }\n } else {\n const rowIndex = Math.floor(index / 2);\n if (index % 2 === 0) {\n return 'span 2';\n } else if (index === totalItems - 1) {\n return 'span 4';\n } else {\n return 'span 2';\n }\n }\n\n return 'span 1';\n };\n\n return (\n <div\n style={{\n fontFamily: 'Arial, sans-serif',\n padding: '20px',\n backgroundColor: '#f9f9f9',\n borderRadius: '8px',\n boxShadow: '0 4px 8px rgba(0, 0, 0, 0.1)',\n }}\n >\n {/* Organization Unit, Start Date, End Date Row */}\n {/* <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(3, 1fr)',\n gap: '16px',\n marginBottom: '16px',\n }}\n >\n <>\n <InputField\n value={displayValue}\n label=\"Organization Unit\"\n readOnly={false}\n onFocus={() => {\n setShowOrgUnit(true);\n }}\n onBlur={() => {\n setTouched(true);\n }}\n />\n {showOrgUnit && (\n <this.FieldOrgUnitSelector\n onCancelOrgUnit={() => {\n setShowOrgUnit(false);\n setTouched(true);\n }}\n onSelectOrgUnit={(selectedOrgUnits) => {\n if ((selectedOrgUnits || [])[0]) {\n const selectedOrgUnit = selectedOrgUnits[0];\n setDisplayValue(selectedOrgUnit.name);\n setSelected(selectedOrgUnit.id);\n setSelectedOrganisationUnit(selectedOrgUnit.id);\n setValue(selectedOrgUnit.id);\n setShowOrgUnit(false);\n setTouched(true);\n\n // this.ngZone.run(() => {\n // setDisplayValue(selectedOrgUnit.name);\n // setSelected(selectedOrgUnit.id)\n // setSelectedOrganisationUnit(selectedOrgUnit.id)\n // setValue(selectedOrgUnit.id);\n // setShowOrgUnit(false);\n // setTouched(true);\n // });\n }\n }}\n />\n )}\n </>\n\n <InputField\n className=\"input-field\"\n label=\"Start Date\"\n type=\"DATE\"\n value={filters.startDate}\n onChange={(event: { value: string }) =>\n setFilters({ ...filters, startDate: event.value })\n }\n />\n\n <InputField\n className=\"input-field\"\n label=\"End Date\"\n type=\"DATE\"\n value={filters.endDate}\n onChange={(event: { value: string }) =>\n setFilters({ ...filters, endDate: event.value })\n }\n />\n </div> */}\n\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: '1fr 1fr 1fr auto', // Ensure proper button sizing\n gap: '16px',\n alignItems: 'center', // Align inputs and button on the same row\n marginBottom: '16px',\n }}\n >\n {/* Organization Unit Selector */}\n <div style={{ width: '100%' }}>\n <InputField\n value={displayValue}\n label=\"Organization Unit\"\n readOnly={false}\n onFocus={() => setShowOrgUnit(true)}\n onBlur={() => {\n setTouched(true);\n }}\n />\n {showOrgUnit && (\n <this.FieldOrgUnitSelector\n onCancelOrgUnit={() => {\n setShowOrgUnit(false);\n setTouched(true);\n }}\n onSelectOrgUnit={(selectedOrgUnits) => {\n if ((selectedOrgUnits || [])[0]) {\n const selectedOrgUnit = selectedOrgUnits[0];\n setDisplayValue(selectedOrgUnit.name);\n setSelected(selectedOrgUnit.id);\n setSelectedOrganisationUnit(selectedOrgUnit.id);\n setValue(selectedOrgUnit.id);\n setShowOrgUnit(false);\n setTouched(true);\n }\n }}\n />\n )}\n </div>\n\n {/* Start Date */}\n <InputField\n className=\"input-field\"\n label=\"Start Date\"\n type=\"date\"\n value={filters.startDate}\n onChange={(event: { value: string }) =>\n setFilters({ ...filters, startDate: event.value })\n }\n />\n\n {/* End Date */}\n <InputField\n className=\"input-field\"\n label=\"End Date\"\n type=\"date\"\n value={filters.endDate}\n onChange={(event: { value: string }) =>\n setFilters({ ...filters, endDate: event.value })\n }\n />\n\n {/* Toggle Button with Hidden Label */}\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n height: '100%',\n }}\n >\n <label\n style={{\n color: 'transparent', // Hides label text but keeps spacing\n fontSize: '14px',\n marginBottom: '4px',\n }}\n >\n Toggle\n </label>\n <Button\n style={{ height: '40px' }} // Match input field height\n onClick={() => setShowMoreFilters(!showMoreFilters)}\n >\n {showMoreFilters ? 'Hide Filters' : 'More Filters'}\n </Button>\n </div>\n </div>\n\n {showMoreFilters && (\n <>\n {/* Attribute Filters Grid */}\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(4, 1fr)',\n gap: '16px',\n }}\n >\n {filters.programAttributesFilters.map((filter, index) => (\n <div\n key={index}\n style={{ gridColumn: getAttributeColumnSpan(index) }}\n >\n {filter.hasOptions && filter.options.length > 0 ? (\n <SingleSelectField\n className=\"single-select\"\n label={filter.name || 'Select Option'}\n selected={filter.value}\n onChange={(event: { selected: string }) =>\n handleAttributeChange(index, event.selected)\n }\n >\n {filter.options.map((option, i) => (\n <SingleSelectOption\n key={crypto.randomUUID() || i}\n label={option.name}\n value={option.code}\n />\n ))}\n </SingleSelectField>\n ) : (\n <InputField\n className=\"input-field\"\n label={filter.name || 'Program name'}\n type={filter.valueType as any}\n value={filter.value}\n onChange={(event: { value: string }) =>\n handleAttributeChange(index, event.value)\n }\n />\n )}\n </div>\n ))}\n </div>\n\n {/* Data Element Filters Grid */}\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(4, 1fr)',\n gap: '16px',\n }}\n >\n {filters.programStageDataElementFilters.map((filter, index) => (\n <div\n key={index}\n style={{ gridColumn: getDataElementColumnSpan(index) }}\n >\n {filter.hasOptions && filter.options.length > 0 ? (\n <SingleSelectField\n className=\"single-select\"\n label={filter.name || 'Aggregation type'}\n selected={filter.value}\n onChange={(event: { selected: string }) =>\n handleDataElementChange(index, event.selected)\n }\n >\n {filter.options.map((option, i) => (\n <SingleSelectOption\n key={crypto.randomUUID() || i}\n label={option.name}\n value={option.code}\n />\n ))}\n </SingleSelectField>\n ) : (\n <InputField\n className=\"input-field\"\n type={filter.valueType as any}\n label={filter.name || 'Program name'}\n value={filter.value}\n onChange={(event: { value: string }) =>\n handleDataElementChange(index, event.value)\n }\n />\n )}\n </div>\n ))}\n </div>\n\n {/* Search Button */}\n <div style={{ textAlign: 'right', marginTop: '16px' }}>\n <Button onClick={handleSearch}>Search</Button>\n </div>\n </>\n )}\n </div>\n );\n };\n\n override async ngAfterViewInit() {\n if (!this.elementRef) throw new Error('No element ref');\n this.reactDomRoot = ReactDOM.createRoot(this.elementRef.nativeElement);\n this.component = this.SelectionFiltersUI;\n this.render();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SelectionFiltersComponent } from './containers/selection-filters-ui/selection-filters-ui.component';\n\nimport { SharedDhis2UiModule } from '../../shared/shared.module';\nimport { ReactWrapperModule } from '../react-wrapper/react-wrapper.component';\nimport { OrganisationUnitSelectorModule } from '../organisation-unit-selector';\n\n@NgModule({\n declarations: [SelectionFiltersComponent],\n imports: [CommonModule, SharedDhis2UiModule, ReactWrapperModule, OrganisationUnitSelectorModule],\n exports: [SelectionFiltersComponent],\n})\nexport class SelectionFiltersUiModule {}\n","import { Component, Input, input, OnInit } from '@angular/core';\nimport {\n BaseTrackerQuery,\n D2Window,\n TrackedEntityInstance,\n} from '@iapps/d2-web-sdk';\nimport { FormFieldExtension, FormMetaData, IFormMetadata } from '../form';\n\n@Component({\n selector: 'ng-dhis2-ui-tracker-form',\n templateUrl: './tracker-form.component.html',\n standalone: false,\n})\nexport class TrackerFormComponent implements OnInit {\n program = input.required<string>();\n programStage = input<string>();\n trackedEntity = input<string | undefined>();\n d2 = (window as unknown as D2Window).d2Web;\n trackerQuery!: BaseTrackerQuery<TrackedEntityInstance>;\n formMetaData!: IFormMetadata;\n instance!: TrackedEntityInstance;\n\n async ngOnInit() {\n this.trackerQuery = this.d2.trackerModule.trackedEntity.setProgram(\n this.program()\n );\n const program = await this.trackerQuery.getMetaData();\n\n this.instance = this.trackedEntity()\n ? ((\n await this.trackerQuery\n .setTrackedEntity(this.trackedEntity() as string)\n .get()\n ).data as TrackedEntityInstance) || (await this.trackerQuery.create())\n : await this.trackerQuery.create();\n\n if (program) {\n this.formMetaData = new FormMetaData({\n programs: [program],\n programStage: this.programStage(),\n disableEnrollmentDate: true,\n excludeInheritedAttributes: false,\n }).toJson();\n }\n }\n\n onFormUpdate(values: any) {\n const instance = this.instance as TrackedEntityInstance;\n instance?.updateDataValues(values);\n }\n\n onSave(event: any) {}\n\n onCancel() {}\n}\n","@if(formMetaData) {\n<ng-dhis2-ui-section-form\n [formMetaData]=\"formMetaData\"\n [dataValueEntities]=\"instance\"\n (formUpdate)=\"onFormUpdate($event)\"\n (save)=\"onSave($event)\"\n (cancel)=\"onCancel()\"\n/>\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { TrackerFormComponent } from './tracker-form.component';\nimport { D2FormModule } from '../form';\n\n@NgModule({\n imports: [CommonModule, D2FormModule],\n declarations: [TrackerFormComponent],\n exports: [TrackerFormComponent],\n})\nexport class TrackerFormModule {}\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './tracker-form.module';\nexport * from './tracker-form.component';\n","import { Component, input, OnInit } from '@angular/core';\nimport { BaseEventQuery, D2Window, DHIS2Event } from '@iapps/d2-web-sdk';\nimport { FormMetaData, IFormMetadata } from '../form';\n\n@Component({\n selector: 'ng-dhis2-ui-event-form',\n templateUrl: './event-form.component.html',\n standalone: false,\n})\nexport class EventFormComponent implements OnInit {\n program = input.required<string>();\n programStage = input.required<string>();\n eventId = input<string | undefined>();\n enrollment = input<string | undefined>();\n trackedEntity = input<string | undefined>();\n d2 = (window as unknown as D2Window).d2Web;\n eventQuery!: BaseEventQuery<DHIS2Event>;\n formMetaData!: IFormMetadata;\n instance!: DHIS2Event;\n\n async ngOnInit() {\n this.eventQuery = this.d2.eventModule.event\n .setProgram(this.program())\n .setProgramStage(this.programStage())\n .setEnrollment(this.enrollment() as string)\n .setTrackedEntity(this.trackedEntity() as string);\n\n const program = await this.eventQuery.getMetaData();\n\n this.instance = this.eventId()\n ? ((await this.eventQuery.setEvent(this.eventId() as string).get())\n .data as DHIS2Event) || (await this.eventQuery.create())\n : await this.eventQuery.create();\n\n if (program) {\n this.formMetaData = new FormMetaData({\n programs: [program],\n programStage: this.programStage(),\n }).toJson();\n }\n }\n\n onFormUpdate(values: any) {\n const instance = this.instance as DHIS2Event;\n instance?.updateDataValues(values);\n }\n\n onSave(event: any) {}\n\n onCancel() {}\n}\n","@if(formMetaData) {\n<ng-dhis2-ui-section-form\n [formMetaData]=\"formMetaData\"\n [dataValueEntities]=\"instance\"\n (formUpdate)=\"onFormUpdate($event)\"\n (save)=\"onSave($event)\"\n (cancel)=\"onCancel()\"\n/>\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { EventFormComponent } from './event-form.component';\nimport { D2FormModule } from '../form';\n\n@NgModule({\n imports: [CommonModule, D2FormModule],\n declarations: [EventFormComponent],\n exports: [EventFormComponent],\n})\nexport class EventFormModule {}\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './event-form.module';\nexport * from './event-form.component';\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport { FormFieldExtension } from '../../form';\n\nexport type AutoAssignedValues = { field: string; value: string };\n\nexport interface IProgramEntryFormConfig {\n program: string;\n programStage?: string;\n displayType: 'FLAT' | 'SECTION' | 'CUSTOM';\n formType: 'TRACKER' | 'EVENT';\n hideRegistrationUnit?: boolean;\n hideEnrollmentDate?: boolean;\n hideTrackedEntityTypeAttributes?: boolean;\n disableRegistrationUnit?: boolean;\n disableEnrollmentDate?: boolean;\n disabledIncidentDate?: boolean;\n excludeProgramStages?: boolean;\n excludeInheritedAttributes?: boolean;\n includedProgramStages?: string[];\n submitButtonLabel?: string;\n cancelButtonLabel?: string;\n hideActionButtons?: boolean;\n hideSubmitButton?: boolean;\n hideCancelButton?: boolean;\n ignoreRepeatability?: boolean;\n autoAssignedValues?: AutoAssignedValues[];\n hideCustomAssignedFields?: boolean;\n autoComplete?: boolean;\n formFieldExtensions?: FormFieldExtension[];\n updateTeiOrgUnit?: boolean;\n}\nexport class ProgramEntryFormConfig implements IProgramEntryFormConfig {\n program!: string;\n programStage?: string;\n displayType: 'FLAT' | 'SECTION' | 'CUSTOM' = 'FLAT';\n formType!: 'TRACKER' | 'EVENT';\n hideRegistrationUnit?: boolean;\n hideEnrollmentDate?: boolean;\n hideTrackedEntityTypeAttributes?: boolean;\n disableRegistrationUnit?: boolean;\n disableEnrollmentDate?: boolean;\n disabledIncidentDate?: boolean;\n excludeProgramStages?: boolean;\n excludeInheritedAttributes?: boolean;\n includedProgramStages?: string[];\n submitButtonLabel = 'Submit';\n cancelButtonLabel = 'Cancel';\n hideActionButtons?: boolean;\n hideSubmitButton?: boolean;\n hideCancelButton?: boolean;\n ignoreRepeatability?: boolean;\n autoAssignedValues?: AutoAssignedValues[];\n hideCustomAssignedFields?: boolean;\n autoComplete?: boolean;\n formFieldExtensions?: FormFieldExtension[];\n updateTeiOrgUnit: boolean = false;\n\n constructor(config: IProgramEntryFormConfig) {\n Object.assign(this, config);\n }\n}\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport {\n DataElement,\n Program,\n ProgramStage,\n TrackedEntityAttribute,\n} from '@iapps/d2-web-sdk';\nimport { ProgramEntryFormConfig } from '../models';\nimport {\n DateField,\n FieldDropdown,\n FieldUtil,\n FormField,\n FormFieldMetaType,\n IFormField,\n} from '../../form';\nimport { camelCase, flatten, isUndefined } from 'lodash';\n\nexport class ProgramEntryFormFieldUtil {\n constructor(\n private program: Program,\n private config: ProgramEntryFormConfig\n ) {}\n\n get attributes() {\n let programTrackedEntityAttributes =\n this.program.programTrackedEntityAttributes || [];\n\n if (this.config.excludeInheritedAttributes) {\n programTrackedEntityAttributes = programTrackedEntityAttributes.filter(\n (programTrackedEntityAttribute) => {\n return !(\n this.program.trackedEntityType?.trackedEntityTypeAttributes || []\n ).find(\n (inheritedAttribute) =>\n inheritedAttribute.trackedEntityAttribute?.id ===\n programTrackedEntityAttribute?.trackedEntityAttribute?.id\n );\n }\n );\n }\n\n return programTrackedEntityAttributes.map(\n (programTrackedEntityAttribute) => {\n return {\n ...programTrackedEntityAttribute.trackedEntityAttribute,\n sortOrder: programTrackedEntityAttribute.sortOrder,\n mandatory: programTrackedEntityAttribute.mandatory,\n allowFutureDate: programTrackedEntityAttribute.allowFutureDate,\n trackedEntityType: this.program.trackedEntityType?.id,\n metaType: 'ATTRIBUTE',\n stepId: null,\n };\n }\n );\n }\n\n get dataElements() {\n const programStages = this.config.programStage\n ? this.program.programStages?.filter(\n (programStage) => programStage.id === this.config.programStage\n )\n : this.program.programStages;\n return flatten(\n (programStages || []).map((programStage) => {\n const dataElements = (programStage.programStageDataElements || []).map(\n (stageDataElement) => {\n return {\n ...stageDataElement.dataElement,\n sortOrder: stageDataElement.sortOrder,\n mandatory: stageDataElement.compulsory,\n allowFutureDate: stageDataElement.allowFutureDate,\n stepId: programStage.id,\n metaType: 'DATA_ELEMENT',\n };\n }\n );\n\n const eventDateName =\n programStage.executionDateLabel ||\n `Reporting date - ${programStage.name}`;\n\n return [\n {\n id: 'occurredAt',\n code: 'OCCURRED_AT',\n formName: eventDateName,\n name: eventDateName,\n shortName: eventDateName,\n displayName: eventDateName,\n sortOrder: 1,\n mandatory: true,\n stepId: programStage.id,\n valueType: 'DATE',\n metaType: 'EVENT_DATE',\n domainType: 'TRACKER',\n aggregationType: 'NONE',\n lastUpdated: '',\n created: '',\n },\n ...dataElements,\n ];\n })\n );\n }\n\n #getOrgUniField() {\n if (this.config.hideRegistrationUnit) {\n return null;\n }\n\n return new FormField<string>({\n id: 'orgUnit',\n key: 'orgUnit',\n label: this.program.orgUnitLabel ?? 'Registering unit',\n code: 'orgUnit',\n required: true,\n controlType: 'org-unit',\n disabled: this.config.disableRegistrationUnit,\n isOrgUnit: true,\n });\n }\n\n #getEnrollmentDateField() {\n if (this.config.hideEnrollmentDate || this.config.programStage) {\n return null;\n }\n\n return new FormField<string>({\n id: 'enrollmentDate',\n label: this.program.enrollmentDateLabel || 'Enrollment date',\n code: 'enrollmentDate',\n key: 'enrollmentDate',\n required: true,\n type: 'date',\n controlType: 'date',\n disabled: this.config.disableEnrollmentDate,\n });\n }\n\n #getIncidentDateField() {\n if (!this.program.displayIncidentDate || this.config.programStage) {\n return null;\n }\n\n return new DateField({\n id: 'incidentDate',\n label: this.program.incidentDateLabel || 'Incident date',\n code: 'incidentDate',\n key: 'incidentDate',\n required: true,\n type: 'date',\n controlType: 'date',\n disabled: this.config.disabledIncidentDate,\n });\n }\n\n get reportFields() {\n return [\n this.#getOrgUniField(),\n this.#getEnrollmentDateField(),\n this.#getIncidentDateField(),\n ].filter((field) => field != null);\n }\n\n get fields(): IFormField<string>[] {\n const fields = [...this.attributes, ...this.dataElements]\n .map((field) => {\n const options = FieldDropdown.getDropdownOptions(field);\n\n const hasOptions = options?.length > 0;\n\n const extension = this.config.formFieldExtensions?.find(\n (fieldExtension) => fieldExtension?.id === field.id\n );\n\n const autoAssignedValue = this.#getAutoAssignedValue(field);\n\n if (\n !isUndefined(autoAssignedValue) &&\n this.config.hideCustomAssignedFields\n ) {\n return null;\n }\n\n return new FormField<string>({\n ...field,\n id: field.id,\n code: field.code,\n label: field.formName || field.name,\n key: field.code ? camelCase(field.code) : field.id,\n required: field.mandatory,\n type: FieldUtil.getFieldType(field.valueType),\n options,\n disabled: this.#getDisabledStatus(field),\n order: field.sortOrder,\n hasOptions,\n controlType: FieldUtil.getFieldControlType(\n field.valueType,\n hasOptions\n ),\n metaType: field.metaType as FormFieldMetaType,\n stepId: (field as { stepId: string }).stepId,\n extension,\n });\n })\n .filter((field) => field != null)\n .sort((a, b) => a.order ?? 0 - (b.order ?? 0));\n\n return [...this.reportFields, ...fields];\n }\n\n #getDisabledStatus(field: TrackedEntityAttribute | DataElement): boolean {\n if (field?.generated) {\n return true;\n }\n\n if (\n this.config.autoAssignedValues &&\n this.config.autoAssignedValues.length > 0\n ) {\n const assignedValue = this.#getAutoAssignedValue(field);\n\n return !isUndefined(assignedValue);\n }\n\n return false;\n }\n\n #getAutoAssignedValue(field: TrackedEntityAttribute | DataElement) {\n const key = field.code ? camelCase(field.code) : field.id;\n\n const assignedValue = (this.config.autoAssignedValues || []).find(\n (assignedValue) => assignedValue.field === key\n )?.value;\n\n return assignedValue;\n }\n}\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport { Program } from '@iapps/d2-web-sdk';\nimport { IProgramEntryFormSection, ProgramEntryFormConfig } from '../models';\n\nexport class ProgramEntryFormSectionUtil {\n constructor(\n private program: Program,\n private config: ProgramEntryFormConfig\n ) {}\n\n get sections(): IProgramEntryFormSection[] {\n return [];\n }\n}\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nexport * from './program-entry-form-field.util';\nexport * from './program-entry-form-section.util';\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport { D2Window, Program, ProgramRule } from '@iapps/d2-web-sdk';\nimport { ProgramEntryFormConfig } from './program-entry-form.config';\nimport { IFormField, IMetadataRule, MetadataRule } from '../../form';\nimport { IProgramEntryFormSection } from './program-entry-form-section.model';\nimport {\n ProgramEntryFormFieldUtil,\n ProgramEntryFormSectionUtil,\n} from '../utils';\n\nexport interface IProgramEntryFormMetaData {\n id: string;\n name: string;\n description?: string;\n program: Program;\n formFields: IFormField<string>[];\n sections: IProgramEntryFormSection[];\n rules: IMetadataRule[];\n}\n\nexport class ProgramEntryFormMetaData implements IProgramEntryFormMetaData {\n id!: string;\n name!: string;\n description?: string;\n\n d2 = (window as unknown as D2Window)?.d2Web;\n config!: ProgramEntryFormConfig;\n program!: Program;\n\n setConfig(config: ProgramEntryFormConfig): ProgramEntryFormMetaData {\n this.config = config;\n return this;\n }\n\n getProgramPromise() {\n const program = this.config.program;\n\n const programQuery = this.d2.programModule.program\n .select([\n 'id',\n 'code',\n 'name',\n 'captureCoordinates',\n 'featureType',\n 'enrollmentDateLabel',\n 'incidentDateLabel',\n 'displayIncidentDate',\n 'onlyEnrollOnce',\n 'orgUnitLabel',\n 'programType',\n 'useFirstStageDuringRegistration',\n 'trackedEntityType',\n ])\n\n .with(\n this.d2.programModule.trackedEntityType\n .select(['id', 'name'])\n .with(\n this.d2.programModule.trackedEntityTypeAttribute.select([\n 'trackedEntityAttribute',\n ])\n ),\n 'ToOne'\n )\n\n .with(\n this.d2.programModule.programRuleVariable\n .with(\n this.d2.dataElementModule.dataElement.select([\n 'id',\n 'code',\n 'name',\n ]),\n 'ToOne'\n )\n .with(\n this.d2.programModule.trackedEntityAttribute.select([\n 'id',\n 'code',\n 'name',\n ]),\n 'ToOne'\n )\n )\n .byId(program as string);\n\n if (!this.config.programStage) {\n programQuery.with(\n this.d2.programModule.programTrackedEntityAttribute.with(\n this.d2.programModule.trackedEntityAttribute.with(\n this.d2.optionSetModule.optionSet.with(\n this.d2.optionSetModule.option\n ),\n 'ToOne'\n ),\n 'ToOne'\n )\n );\n }\n\n if (this.config.displayType === 'FLAT') {\n programQuery.with(\n this.d2.programModule.programSection.with(\n this.d2.programModule.trackedEntityAttribute.select(['id'])\n )\n );\n }\n\n if (!this.config.excludeProgramStages || this.config.programStage) {\n const programStageQuery = this.d2.programModule.programStage\n .with(this.d2.programModule.programStageSection)\n .with(\n this.d2.programModule.programStageDataElement.with(\n this.d2.dataElementModule.dataElement.with(\n this.d2.optionSetModule.optionSet.with(\n this.d2.optionSetModule.option\n ),\n 'ToOne'\n ),\n 'ToOne'\n )\n );\n\n programQuery.with(programStageQuery);\n }\n\n return programQuery.get();\n }\n\n async #getProgramMetaData(): Promise<Program | null> {\n const program = this.config.program;\n\n if (!this.d2) {\n return null;\n }\n\n const metaDataResponse = await Promise.all([\n this.getProgramPromise(),\n this.d2.programModule.programRule\n .where({\n attribute: 'program.id' as any,\n value: program as string,\n })\n .with(\n this.d2.programModule.programRuleAction\n .select([\n 'id',\n 'programRuleActionType',\n 'data',\n 'displayContent',\n 'content',\n ])\n .with(\n this.d2.dataElementModule.dataElement.select([\n 'id',\n 'code',\n 'name',\n ]),\n 'ToOne'\n )\n .with(\n this.d2.programModule.trackedEntityAttribute.select([\n 'id',\n 'code',\n 'name',\n ]),\n 'ToOne'\n )\n .with(\n this.d2.optionSetModule.optionGroup\n .select(['id'])\n .with(\n this.d2.optionSetModule.option.select([\n 'id',\n 'code',\n 'displayName',\n ]),\n 'ToMany'\n ),\n 'ToOne'\n )\n .with(\n this.d2.optionSetModule.option.select([\n 'id',\n 'code',\n 'displayName',\n ]),\n 'ToOne'\n )\n )\n .get(),\n ]);\n\n const [programResponse, programRuleResponse] = metaDataResponse;\n\n const metaData = programResponse.data as Program;\n metaData.programRules = programRuleResponse.data as ProgramRule[];\n\n return metaData;\n }\n\n get formFields(): IFormField<string>[] {\n if (!this.program) {\n return [];\n }\n\n return new ProgramEntryFormFieldUtil(this.program, this.config).fields;\n }\n\n get sections(): IProgramEntryFormSection[] {\n if (!this.program || this.config.displayType !== 'SECTION') {\n return [];\n }\n\n return new ProgramEntryFormSectionUtil(this.program, this.config).sections;\n }\n\n get rules(): IMetadataRule[] {\n if (!this.program || !this.program.programRules) {\n return [];\n }\n\n return this.program.programRules.map((programRule) =>\n new MetadataRule(\n programRule,\n this.program.programRuleVariables || []\n ).toJson()\n );\n }\n\n toJson(): IProgramEntryFormMetaData {\n return {\n id: this.program?.id,\n name: this.program?.name,\n description: this.program?.description,\n program: this.program,\n formFields: this.formFields,\n sections: this.sections,\n rules: this.rules,\n };\n }\n\n async get() {\n try {\n const program = await this.#getProgramMetaData();\n\n if (program) {\n this.program = program;\n return this.toJson();\n }\n\n return null;\n } catch (err) {\n return null;\n }\n }\n}\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport { IFormField } from '../../form';\n\nexport interface IProgramEntryFormSection {\n id: string;\n name: string;\n description?: string;\n formFields: IFormField<string>[];\n orientation: 'HORIZONTAL' | 'VERTICAL';\n}\n\nexport class ProgramEntryFormSection implements IProgramEntryFormSection {\n id!: string;\n name!: string;\n description?: string;\n formFields: IFormField<string>[] = [];\n orientation: 'HORIZONTAL' | 'VERTICAL' = 'HORIZONTAL';\n\n constructor(props: IProgramEntryFormSection) {\n Object.assign(this, props);\n }\n}\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nexport * from './program-entry-form.config';\nexport * from './program-entry-form-metadata';\nexport * from './program-entry-form-section.model';\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n computed,\n EventEmitter,\n inject,\n input,\n NgZone,\n Output,\n signal,\n} from '@angular/core';\nimport {\n AutoAssignedValues,\n IProgramEntryFormMetaData,\n ProgramEntryFormConfig,\n ProgramEntryFormMetaData,\n} from './models';\nimport { D2FormModule } from '../form';\nimport { CircularLoader, ButtonStrip, Button } from '@dhis2/ui';\nimport React, { useEffect, useState } from 'react';\nimport { ReactWrapperModule } from '../react-wrapper/react-wrapper.component';\nimport { firstValueFrom, Observable, of } from 'rxjs';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport {\n BaseEventQuery,\n BaseTrackerQuery,\n D2EventResponse,\n D2TrackerResponse,\n D2Window,\n DHIS2Event,\n Program,\n TrackedEntityInstance,\n} from '@iapps/d2-web-sdk';\nimport { CustomOrgUnitConfig } from '../form/components/org-unit-form-field.component';\n\n@Component({\n selector: 'ng-dhis2-ui-program-entry-form',\n templateUrl: './program-entry-form.component.html',\n styleUrls: ['./program-entry-form.component.scss'],\n\n imports: [CommonModule, D2FormModule, ReactWrapperModule],\n})\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport class ProgramEntryFormModule {\n config = input.required<ProgramEntryFormConfig>();\n trackedEntity = input<string>();\n event = input<string>();\n enrollment = input<string>();\n orgUnit = input<string>();\n customOrgUnitRoots = input<CustomOrgUnitConfig[]>();\n\n ngZone = inject(NgZone);\n d2 = (window as unknown as D2Window).d2Web;\n\n loading = signal<boolean>(false);\n metaData = signal<IProgramEntryFormMetaData | null>(null);\n isFormValid = signal<boolean>(true);\n isFormValid$: Observable<boolean> = toObservable(this.isFormValid);\n instance = signal<TrackedEntityInstance | DHIS2Event | null>(null);\n instanceQuery!:\n | BaseTrackerQuery<TrackedEntityInstance>\n | BaseEventQuery<DHIS2Event>;\n\n @Output() instanceSave = new EventEmitter<\n TrackedEntityInstance | DHIS2Event\n >();\n @Output() instanceSaveCompleted = new EventEmitter<\n | D2TrackerResponse<TrackedEntityInstance>\n | D2EventResponse<DHIS2Event>\n | null\n >();\n @Output() instanceUpdate = new EventEmitter<\n TrackedEntityInstance | DHIS2Event\n >();\n @Output() formValidityUpdate = new EventEmitter<boolean>();\n @Output() formCancel = new EventEmitter();\n\n FormLoader = () => {\n return <CircularLoader small />;\n };\n\n dataId = computed(() => {\n return this.instance()?.trackedEntity || this.instance()?.event;\n });\n\n FormActionButtons = computed(() => {\n if (this.config().hideActionButtons) {\n return <></>;\n }\n\n return () => {\n const [isValid, setIsValid] = useState<boolean>();\n const [submitting, setSubmitting] = useState<boolean>(false);\n\n useEffect(() => {\n const isValidSubscription = this.isFormValid$.subscribe((isValid) => {\n setIsValid(isValid);\n });\n\n return () => {\n isValidSubscription.unsubscribe();\n };\n }, []);\n\n const onSave = () => {\n setSubmitting(true);\n this.ngZone.run(async () => {\n const saveResponse = await this.#saveInstance();\n\n this.instanceSaveCompleted.emit(saveResponse);\n\n setSubmitting(false);\n });\n };\n return (\n <ButtonStrip>\n {!this.config().hideSubmitButton && (\n <Button\n primary\n disabled={!isValid}\n loading={submitting}\n onClick={onSave}\n >\n {this.config().submitButtonLabel}\n </Button>\n )}\n {!this.config().hideCancelButton && (\n <Button\n onClick={() => {\n this.ngZone.run(() => {\n this.onCancel();\n });\n }}\n >\n {this.config().cancelButtonLabel}\n </Button>\n )}\n </ButtonStrip>\n );\n };\n });\n\n async ngOnInit() {\n this.loading.set(true);\n try {\n // Loading metadata\n const metaData = await new ProgramEntryFormMetaData()\n .setConfig(this.config())\n .get();\n this.metaData.set(metaData);\n\n // Load initial instance information\n const instance = await this.#getInstance();\n this.instance.set(instance);\n\n if (this.config().autoAssignedValues) {\n this.#updateInstanceWithAutoAssignedValues(\n this.config().autoAssignedValues || []\n );\n }\n\n this.loading.set(false);\n } catch (err) {\n this.loading.set(false);\n }\n }\n\n onFormUpdate(dataValues: Record<string, unknown>) {\n this.#updateInstance(dataValues);\n if (this.instance()) {\n this.instanceUpdate.emit(\n this.instance() as TrackedEntityInstance | DHIS2Event\n );\n }\n }\n\n onValidityUpdate(isFormValid: boolean) {\n this.isFormValid.set(isFormValid);\n this.formValidityUpdate.emit(isFormValid);\n }\n\n onCancel() {\n this.formCancel.emit();\n }\n\n #updateInstanceWithAutoAssignedValues(\n autoAssignedValues: AutoAssignedValues[]\n ) {\n const assignedDataValues = autoAssignedValues.reduce(\n (entities, assignedValue) => {\n return {\n ...entities,\n [assignedValue.field]: assignedValue.value,\n };\n },\n {}\n );\n this.#updateInstance(assignedDataValues);\n }\n #updateInstance(dataValues: Record<string, unknown>) {\n this.instance.update((instance) => {\n instance?.updateDataValues(dataValues, this.config().updateTeiOrgUnit);\n\n return instance;\n });\n }\n\n async #saveInstance(): Promise<\n | D2TrackerResponse<TrackedEntityInstance>\n | D2EventResponse<DHIS2Event>\n | null\n > {\n switch (this.config().formType) {\n case 'TRACKER': {\n if (this.config().autoComplete) {\n this.instance()!.complete();\n }\n return (this.instanceQuery as BaseTrackerQuery<TrackedEntityInstance>)\n .setData(this.instance() as TrackedEntityInstance)\n .save();\n }\n\n case 'EVENT': {\n if (this.config().autoComplete) {\n this.instance()!.complete();\n }\n return (this.instanceQuery as BaseEventQuery<DHIS2Event>)\n .setData(this.instance() as DHIS2Event)\n .save();\n }\n\n default:\n return firstValueFrom(of(null));\n }\n }\n\n async #getTrackerInstance(): Promise<TrackedEntityInstance> {\n this.instanceQuery = this.d2.trackerModule.trackedEntity\n .setProgram(this.config().program)\n .setOrgUnit(this.orgUnit() as string);\n\n if (!this.trackedEntity()) {\n return await this.instanceQuery.create();\n }\n\n const instanceResult = (\n await this.instanceQuery\n .setTrackedEntity(this.trackedEntity() as string)\n .get()\n ).data as TrackedEntityInstance;\n\n if (!instanceResult) {\n return await this.instanceQuery.create();\n }\n\n const instance = await this.instanceQuery\n .setInstanceFields(this.metaData()?.program as Program)\n .setReservedValues();\n\n if (this.orgUnit()) {\n instance.setOrgUnit(this.orgUnit() as string);\n }\n\n return instance;\n }\n\n async #getEventInstance() {\n this.instanceQuery = this.d2.eventModule.event\n .setProgram(this.config().program)\n .setProgramStage(this.config().programStage as string)\n .setEnrollment(this.enrollment() as string)\n .setTrackedEntity(this.trackedEntity() as string)\n .setOrgUnit(this.orgUnit() as string);\n\n if (!this.event()) {\n return await this.instanceQuery.create();\n }\n\n const instance = (\n await this.instanceQuery.setEvent(this.event() as string).get()\n ).data as DHIS2Event;\n\n if (!instance) {\n return await this.instanceQuery.create();\n }\n\n if (this.metaData()?.program) {\n instance.setFields(this.metaData()!.program);\n }\n\n return instance;\n }\n\n #getInstance(): Promise<TrackedEntityInstance | DHIS2Event | null> {\n switch (this.config().formType) {\n case 'TRACKER':\n return this.#getTrackerInstance();\n\n case 'EVENT':\n return this.#getEventInstance();\n\n default:\n return firstValueFrom(of(null));\n }\n }\n}\n","@if (loading()) {\n<div className=\"program-entry__form-loader\">\n <ng-dhis2-ui-wrapper [component]=\"FormLoader\" />\n</div>\n} @else if(metaData()) {\n\n<div>\n <!-- Form content -->\n @switch (config().displayType) {\n\n <!-- Flat display -->\n @case ('FLAT') {\n\n <ng-dhis2-ui-flat-form\n [name]=\"metaData()!.name\"\n [dataValues]=\"instance() || {}\"\n [dataId]=\"dataId()\"\n [rules]=\"metaData()!.rules\"\n [fields]=\"metaData()!.formFields\"\n [customOrgUnitRoots]=\"customOrgUnitRoots()\"\n (formUpdate)=\"onFormUpdate($event)\"\n (formValidityUpdate)=\"onValidityUpdate($event)\"\n />\n }\n\n <!-- SECTION display -->\n @case ('SECTION') { Section form }\n\n <!-- CUSTOM FORM -->\n @case ('CUSTOM') { } }\n\n <!-- Action buttons -->\n\n @if(!config().hideActionButtons) {\n <ng-dhis2-ui-wrapper [component]=\"FormActionButtons()\" />\n }\n</div>\n}\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nexport * from './models';\nexport * from './program-entry-form.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["React","Button","spacers","colors","theme","generateClassName","convertStylesToCSS","useDynamicStyles","styles","getOptions","InputField","Modal","ModalTitle","ModalContent","ModalActions","ButtonStrip","orgUnitFieldStyles","OrgUnitFormField","CircularLoader","dropdownStyles","useCurrentModal","ContextMenu","Layer","MenuItem","DropdownMenu","DHISTableBody","DHISPagination","map","parse","TableBody","i1","i2.FormFieldItemComponent","i3.FormFieldComponent","i1.FormComponent","i2.FormComponent","i3.RepeatableFormComponent","i1.SectionFormComponent"],"mappings":"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"}
1
+ {"version":3,"file":"iapps-ng-dhis2-ui.mjs","sources":["../../../../packages/ng-dhis2-ui/src/lib/shared/shared.module.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/models/header-bar-app.model.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/models/header-bar-notification.model.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/models/header-bar-data.model.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/models/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/utils/join-path.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/utils/apps.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/utils/logo-image.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/utils/logo.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/utils/notification-icon.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/utils/notifications.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/utils/debug-info/use-debug-info.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/utils/debug-info/debug-info-table.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/utils/debug-info/debug-info-modal.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/utils/debug-info/debug-info-menu-item.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/utils/profile-menu/profile-header.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/utils/header-bar-context.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/utils/profile-menu/update-notification.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/utils/profile-menu/profile-menu.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/utils/profile/use-on-doc-click.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/utils/profile.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/utils/title.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/utils/header-bar.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/react-wrapper/react-wrapper.component.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/header-bar.component.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/header-bar.module.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/header-bar/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/button/button.component.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/button/button.module.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/button/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/breadcrumb/models/index.ts","../../../../packages/ng-dhis2-ui/src/lib/shared/utils/dimensionSelectorHelper.tsx","../../../../packages/ng-dhis2-ui/src/lib/shared/assets/AssignedCategoriesIcon.tsx","../../../../packages/ng-dhis2-ui/src/lib/shared/utils/predefinedDimensions.tsx","../../../../packages/ng-dhis2-ui/src/lib/shared/utils/list.ts","../../../../packages/ng-dhis2-ui/src/lib/shared/utils/axis.ts","../../../../packages/ng-dhis2-ui/src/lib/shared/utils/dimension.ts","../../../../packages/ng-dhis2-ui/src/lib/shared/utils/dimensionIs.ts","../../../../packages/ng-dhis2-ui/src/lib/shared/utils/axisGetDimension.ts","../../../../packages/ng-dhis2-ui/src/lib/shared/utils/axisHasDimension.ts","../../../../packages/ng-dhis2-ui/src/lib/shared/utils/layoutReplaceDimension.ts","../../../../packages/ng-dhis2-ui/src/lib/shared/utils/layoutGetAllAxes.ts","../../../../packages/ng-dhis2-ui/src/lib/shared/utils/layoutGetAllDimensions.ts","../../../../packages/ng-dhis2-ui/src/lib/shared/utils/layoutGetDimension.ts","../../../../packages/ng-dhis2-ui/src/lib/shared/utils/dimensionIsEmpty.ts","../../../../packages/ng-dhis2-ui/src/lib/shared/utils/dimensionIsValid.ts","../../../../packages/ng-dhis2-ui/src/lib/shared/utils/dimensionGetItems.ts","../../../../packages/ng-dhis2-ui/src/lib/shared/utils/index.ts","../../../../packages/ng-dhis2-ui/src/lib/shared/styles/DimensionSelector.style.ts","../../../../packages/ng-dhis2-ui/src/lib/shared/styles/index.ts","../../../../packages/ng-dhis2-ui/src/lib/shared/components/transfer-option.component.tsx","../../../../packages/ng-dhis2-ui/src/lib/shared/components/index.ts","../../../../packages/ng-dhis2-ui/src/lib/shared/hooks/dynamic-styles.hook.tsx","../../../../packages/ng-dhis2-ui/src/lib/shared/hooks/index.ts","../../../../packages/ng-dhis2-ui/src/lib/shared/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/breadcrumb/components/breadcrumb-item.component.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/breadcrumb/containers/breadcrumb.component.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/breadcrumb/breadcrumb.module.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/breadcrumb/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/period-selector/components/utils/periodTypes.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/period-selector/components/utils/relativePeriods.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/period-selector/components/utils/fixedPeriods.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/period-selector/components/utils/index.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/period-selector/components/FixedPeriodFilter.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/period-selector/components/RelativePeriodFilter.tsx","../../../../packages/ng-dhis2-ui/src/lib/shared/assets/DimensionItemIcons/PeriodIcon.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/period-selector/components/PeriodTransfer.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/period-selector/components/PeriodDimension.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/period-selector/containers/period-selector-modal/period-selector-modal.component.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/period-selector/containers/period-selector/period-selector.component.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/period-selector/period-selector.module.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/period-selector/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/organisation-unit-selector/components/utils/ouIdHelper/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/organisation-unit-selector/components/utils/ouLevelUtils/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/organisation-unit-selector/components/utils/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/organisation-unit-selector/components/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/organisation-unit-selector/components/styles/OrgUnitDimension.style.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/organisation-unit-selector/components/OrgUnitDimension.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/organisation-unit-selector/models/organisation-unit-config.model.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/organisation-unit-selector/models/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/organisation-unit-selector/containers/organisation-unit-selector/organisation-unit-selector.component.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/organisation-unit-selector/containers/organisation-unit-selector-modal/organisation-unit-selector-modal.component-modal.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/organisation-unit-selector/organisation-unit-selector.module.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/organisation-unit-selector/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/line-list/components/org-unit-form-field.component.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/line-list/components/orgUnitSelector.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/line-list/components/table/filterToolbar.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/line-list/components/table/tableHeader.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/line-list/components/dropdown-menu/dropdown-menu.styles.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/line-list/hooks/use-dynamic-styles.hook.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/line-list/components/dropdown-menu/dropdown-menu.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/line-list/components/data-table-actions/data-table-actions.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/line-list/components/data-table-actions/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/line-list/components/table/tableCell.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/line-list/components/table/tableRow.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/line-list/components/table/tableBody.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/line-list/components/table/pagination.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/line-list/components/table/tableFooter.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/line-list/components/table/lineListTable.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/line-list/services/line-list.service.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/line-list/utils/tei-table-data-utils.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/line-list/utils/event-table-data-util.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/line-list/containers/line-list.component.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/line-list/line-list.module.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/line-list/models/line-list-action-option.model.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/line-list/models/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/data-table-ui/components/dropdown-menu/dropdown-menu.styles.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/data-table-ui/hooks/use-dynamic-styles.hook.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/data-table-ui/components/dropdown-menu/dropdown-menu.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/data-table-ui/containers/data-table-ui/data-table-ui.component.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/data-table-ui/data-table-ui.module.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/hooks/field-validation.hook.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/form/hooks/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/models/form-field.model.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/models/boolean.model.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/models/check-box.model.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/models/date-field.model.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/models/dropdown.model.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/models/field-config.model.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/models/date-range-value.model.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/interfaces/field-type.interface.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/interfaces/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/models/field-dropdown.model.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/models/form-config.model.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/utils/field.util.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/utils/field-control-type.util.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/utils/field-type.util.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/utils/form.util.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/utils/form-value.util.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/utils/translation.util.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/models/form-field-group.model.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/models/form-metadata-rule.model.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/models/form-metadata-section.model.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/models/form-metadata.model.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/models/form-value.model.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/models/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/components/file-upload-field.component.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/form/components/org-unit-form-field.component.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/form/components/base-form-field.component.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/form/components/form-field-item.component.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/containers/form-field/form-field.component.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/containers/form-field/form-field.component.html","../../../../packages/ng-dhis2-ui/src/lib/modules/form/containers/form/form.component.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/containers/form/form.component.html","../../../../packages/ng-dhis2-ui/src/lib/modules/form/containers/repeatable-form/repeatable-form.component.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/containers/repeatable-form/repeatable-form.component.html","../../../../packages/ng-dhis2-ui/src/lib/modules/form/containers/section-form/section-form.component.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/containers/section-form/section-form.component.html","../../../../packages/ng-dhis2-ui/src/lib/modules/form/shared/components/base-form-wrapper.component.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/shared/components/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/shared/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/containers/flat-form/flat-form.component.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/containers/flat-form/flat-form.component.html","../../../../packages/ng-dhis2-ui/src/lib/modules/form/form.module.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/form/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/selection-filters-ui/containers/selection-filters-ui/selection-filters-ui.component.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/selection-filters-ui/selection-filters-ui.module.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/tracker-form/tracker-form.component.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/tracker-form/tracker-form.component.html","../../../../packages/ng-dhis2-ui/src/lib/modules/tracker-form/tracker-form.module.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/tracker-form/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/event-form/event-form.component.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/event-form/event-form.component.html","../../../../packages/ng-dhis2-ui/src/lib/modules/event-form/event-form.module.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/event-form/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/program-entry-form/models/program-entry-form.config.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/program-entry-form/utils/program-entry-form-field.util.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/program-entry-form/utils/program-entry-form-section.util.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/program-entry-form/utils/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/program-entry-form/models/program-entry-form-metadata.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/program-entry-form/models/program-entry-form-section.model.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/program-entry-form/models/index.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/program-entry-form/program-entry-form.component.tsx","../../../../packages/ng-dhis2-ui/src/lib/modules/program-entry-form/program-entry-form.component.html","../../../../packages/ng-dhis2-ui/src/lib/modules/program-entry-form/index.ts","../../../../packages/ng-dhis2-ui/src/iapps-ng-dhis2-ui.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [],\n exports: [],\n})\nexport class SharedDhis2UiModule {}\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport class HeaderBarApp {\n name!: string;\n namespace!: string;\n defaultAction!: string;\n displayName!: string;\n icon!: string;\n description!: string;\n\n constructor(module: Record<string, unknown>) {\n this.name = module['name'] as string;\n this.namespace = module['namespace'] as string;\n this.defaultAction = this.getPath(module['defaultAction'] as string);\n this.icon = this.getPath(module['icon'] as string);\n this.displayName = module['displayName'] as string;\n this.description = module['description'] as string;\n }\n\n getPath(item: string) {\n if (item?.startsWith('../')) {\n return '../../' + item;\n }\n return item;\n }\n}\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport class HeaderBarNotification {\n unreadInterpretations?: number;\n unreadMessageConversations?: number;\n\n constructor(notification: Record<string, number>) {\n this.unreadInterpretations = notification['unreadInterpretations'];\n this.unreadMessageConversations =\n notification['unreadMessageConversations'];\n }\n}\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport { NgxDhis2HttpClientService } from '@iapps/ngx-dhis2-http-client';\nimport { Observable, catchError, map, of, zip } from 'rxjs';\nimport { HeaderBarApp } from './header-bar-app.model';\nimport { HeaderBarNotification } from './header-bar-notification.model';\n\nexport class HeaderBarData {\n apps!: HeaderBarApp[];\n title!: string;\n help: any;\n notifications!: HeaderBarNotification;\n user!: Record<string, unknown>;\n\n constructor(private httpClient: NgxDhis2HttpClientService) {}\n\n getApps(): Observable<HeaderBarApp[]> {\n return this.httpClient\n .get('dhis-web-commons/menu/getModules.action', {\n useRootUrl: true,\n })\n .pipe(\n catchError(() =>\n of({\n modules: [],\n })\n ),\n map((result: { modules: Record<string, unknown>[] }) => {\n return (result?.modules || [])\n .map((module: Record<string, unknown>) => new HeaderBarApp(module))\n .filter((headerBarApp) => headerBarApp);\n })\n );\n }\n\n getNotifications(): Observable<HeaderBarNotification | null> {\n return this.httpClient\n .get('me/dashboard')\n .pipe(\n map((notifications: Record<string, number>) =>\n notifications ? new HeaderBarNotification(notifications) : null\n )\n );\n }\n\n get(): Observable<HeaderBarData | null> {\n return zip(\n this.getApps(),\n this.httpClient.get('systemSettings/helpPageLink'),\n this.httpClient.get('me/dashboard'),\n this.httpClient.get('systemSettings/applicationTitle'),\n this.httpClient.get(\n 'me.json?fields=authorities,avatar,email,name,settings'\n )\n ).pipe(\n map(\n (response: [HeaderBarApp[], any, HeaderBarNotification, any, any]) => {\n if (response) {\n const [apps, help, notifications, title, user] = response;\n this.apps = apps;\n this.help = help;\n this.notifications = notifications;\n this.title = title as string;\n this.user = user;\n\n return this;\n }\n\n return null;\n }\n ),\n catchError(() => {\n return of(null);\n })\n );\n }\n}\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './header-bar-data.model';\nexport * from './header-bar-app.model';\n","export const joinPath = (...parts: any[]) => {\n const realParts = parts.filter((part) => !!part);\n return realParts.map((part) => part.replace(/^\\/+|\\/+$/g, '')).join('/');\n};\n","import { Card } from '@dhis2-ui/card';\nimport { InputField } from '@dhis2-ui/input';\nimport { useConfig } from '@dhis2/app-runtime';\nimport { colors, spacers, theme } from '@dhis2/ui-constants';\nimport { IconApps24, IconSettings24 } from '@dhis2/ui-icons';\nimport PropTypes from 'prop-types';\nimport React, { useState, useEffect, useCallback, useRef } from 'react';\nimport { joinPath } from './join-path';\nimport i18n from '@dhis2/d2-i18n';\ndeclare module 'react' {\n interface StyleHTMLAttributes<T> extends React.HTMLAttributes<T> {\n jsx?: boolean;\n global?: boolean;\n }\n}\n\n/**\n * Copied from here:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Escaping\n */\nfunction escapeRegExpCharacters(text: string) {\n return text.replace(/[/.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\nfunction Search({ value, onChange, baseUrl }: any) {\n return (\n <div className=\"headerbar-apps-search\">\n <span className=\"headerbar-apps-search-input\">\n <InputField\n value={value}\n name=\"filter\"\n placeholder={i18n.t('Search apps')}\n onChange={onChange}\n initialFocus\n />\n </span>\n\n <span className=\"headerbar-apps-search-icon\">\n <a href={joinPath(baseUrl, 'dhis-web-menu-management')}>\n <IconSettings24 color={colors.grey700} />\n </a>\n </span>\n\n <style jsx>{`\n .headerbar-apps-search {\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n height: 52px;\n margin: 8px;\n }\n\n .headerbar-apps-search-input {\n flex: 1 100%;\n }\n\n .headerbar-apps-search-icon {\n flex: 1 auto;\n margin: 8px;\n }\n `}</style>\n </div>\n );\n}\n\nSearch.propTypes = {\n value: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n baseUrl: PropTypes.string,\n};\n\nfunction Item({ name, path, img }: any) {\n return (\n <a className=\"headerbar-app-item\" href={path}>\n <img className=\"headerbar-app-item-logo\" src={img} alt=\"app logo\" />\n\n <div className=\"headerbar-app-item-title\">{name}</div>\n\n <style jsx>{`\n .headerbar-app-item {\n display: flex;\n flex-direction: column;\n -webkit-box-align: center;\n align-items: center;\n -webkit-box-pack: center;\n justify-content: center;\n width: 96px;\n margin: 8px;\n border-radius: 12px;\n text-decoration: none;\n cursor: pointer;\n }\n .headerbar-app-item-logo {\n display: inline-block;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n width: 96px;\n margin: 8px;\n border-radius: 12px;\n text-decoration: none;\n cursor: pointer;\n }\n\n .headerbar-app-item-logo:hover,\n .headerbar-app-item-logo:focus {\n background-color: ${theme.primary050};\n cursor: pointer;\n }\n\n .headerbar-app-item-logo:hover > div {\n font-weight: 500;\n cursor: pointer;\n }\n\n .headerbar-app-item-logo {\n width: 48px;\n height: 48px;\n margin: 8px;\n cursor: pointer;\n }\n\n .headerbar-app-item-title {\n overflow-wrap: anywhere;\n margin-top: 14px;\n color: rgba(0, 0, 0, 0.87);\n font-size: 12px;\n letter-spacing: 0.01em;\n line-height: 14px;\n text-align: center;\n cursor: pointer;\n }\n `}</style>\n </a>\n );\n}\n\nItem.propTypes = {\n img: PropTypes.string,\n name: PropTypes.string,\n path: PropTypes.string,\n};\n\nfunction List({ apps, filter }: any) {\n return (\n <div\n className=\"headerbar-apps-menu-list\"\n data-test=\"headerbar-apps-menu-list\"\n >\n {apps\n .filter(({ displayName, name }: any) => {\n const appName = displayName || name;\n const formattedAppName = appName.toLowerCase();\n const formattedFilter = escapeRegExpCharacters(filter).toLowerCase();\n\n return filter.length > 0\n ? formattedAppName.match(formattedFilter)\n : true;\n })\n .map(({ displayName, name, defaultAction, icon }: any, idx: string) => (\n <Item\n key={`app-${name}-${idx}`}\n name={displayName || name}\n path={defaultAction}\n img={icon}\n />\n ))}\n\n <style jsx>{`\n .headerbar-apps-menu-list {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n align-content: flex-start;\n align-items: flex-start;\n justify-content: flex-start;\n width: 30vw;\n min-width: 300px;\n max-width: 560px;\n\n min-height: 200px;\n max-height: 465px;\n margin: 0 8px 8px 8px;\n\n overflow: auto;\n overflow-x: hidden;\n }\n `}</style>\n </div>\n );\n}\nList.propTypes = {\n apps: PropTypes.array,\n filter: PropTypes.string,\n};\n\nconst AppMenu = ({ apps, filter, onFilterChange, baseUrl }: any) => (\n <div className=\"headerbar-apps-menu\" data-test=\"headerbar-apps-menu\">\n <Card>\n <Search value={filter} onChange={onFilterChange} baseUrl={baseUrl} />\n <List apps={apps} filter={filter} />\n </Card>\n\n <style jsx>{`\n .headerbar-apps-menu {\n z-index: 10000;\n position: absolute;\n right: -4px;\n }\n `}</style>\n </div>\n);\n\nAppMenu.propTypes = {\n apps: PropTypes.array.isRequired,\n onFilterChange: PropTypes.func.isRequired,\n filter: PropTypes.string,\n baseUrl: PropTypes.string,\n};\n\nconst Apps = ({ apps, baseUrl }: any) => {\n const [show, setShow] = useState(false);\n const [filter, setFilter] = useState('');\n\n const handleVisibilityToggle = useCallback(() => setShow(!show), [show]);\n const handleFilterChange = useCallback(\n ({ value }: any) => setFilter(value),\n []\n );\n\n const containerEl = useRef(null);\n const onDocClick = useCallback((evt: any) => {\n if (\n containerEl.current &&\n !(containerEl.current as any).contains(evt.target)\n ) {\n setShow(false);\n }\n }, []);\n useEffect(() => {\n document.addEventListener('click', onDocClick);\n return () => document.removeEventListener('click', onDocClick);\n }, [onDocClick]);\n\n return (\n <div\n className=\"headerbar-apps\"\n ref={containerEl}\n data-test=\"headerbar-apps\"\n >\n <button onClick={handleVisibilityToggle} data-test=\"headerbar-apps-icon\">\n <IconApps24 color={colors.white} />\n </button>\n\n {show ? (\n <AppMenu\n apps={apps}\n filter={filter}\n baseUrl={baseUrl}\n onFilterChange={handleFilterChange}\n />\n ) : null}\n\n <style jsx>{`\n .headerbar-apps button {\n display: block;\n background: transparent;\n padding: ${spacers.dp4} ${spacers.dp12} 0;\n border: 0;\n cursor: pointer;\n height: 100%;\n }\n .headerbar-apps button:focus {\n outline: 2px solid white;\n outline-offset: -2px;\n }\n .headerbar-apps button:focus:not(:focus-visible) {\n outline: none;\n }\n .headerbar-apps button:hover {\n background: #1a557f;\n }\n .headerbar-apps button:active {\n background: #104067;\n }\n\n .headerbar-apps {\n position: relative;\n height: 100%;\n }\n `}</style>\n </div>\n );\n};\n\nApps.propTypes = {\n apps: PropTypes.array.isRequired,\n baseUrl: PropTypes.string,\n};\n\nexport default Apps;\n","import { LogoIconWhite } from '@dhis2-ui/logo';\nimport { useDataQuery } from '@dhis2/app-runtime';\nimport React from 'react';\ndeclare module 'react' {\n interface StyleHTMLAttributes<T> extends React.HTMLAttributes<T> {\n jsx?: boolean;\n global?: boolean;\n }\n}\n\nconst query = {\n customLogo: {\n resource: 'staticContent/logo_banner',\n },\n};\n\nconst pathExists = (data: any) =>\n data &&\n data.customLogo &&\n data.customLogo.images &&\n data.customLogo.images.png;\n\nexport const LogoImage = () => {\n const { loading, error, data } = useDataQuery(query) as any;\n\n if (loading) {\n return null;\n }\n\n let Logo;\n if (!error && pathExists(data)) {\n Logo = <img alt=\"Headerbar Logo\" src={data.customLogo.images.png} />;\n } else {\n Logo = <LogoIconWhite />;\n }\n\n return (\n <div className=\"header-bar-logo\">\n {Logo}\n <style jsx>{`\n .header-bar-logo {\n min-width: 48px;\n max-width: 250px;\n height: 48px;\n display: flex;\n -webkit-box-pack: center;\n justify-content: center;\n -webkit-box-align: center;\n align-items: center;\n overflow: hidden;\n }\n\n .header-bar-logo svg {\n height: 25px;\n width: 27px;\n }\n\n .header-bar-logo img {\n max-height: 100%;\n min-height: auto;\n width: auto;\n }\n `}</style>\n </div>\n );\n};\n","import { useConfig } from '@dhis2/app-runtime';\nimport React from 'react';\nimport { LogoImage } from './logo-image';\ndeclare module 'react' {\n interface StyleHTMLAttributes<T> extends React.HTMLAttributes<T> {\n jsx?: boolean;\n global?: boolean;\n }\n}\n\ninterface LogoProp {\n baseUrl: string;\n}\n\nexport const Logo = ({ baseUrl }: LogoProp) => {\n return (\n <div className=\"headerbar-logo\" data-test=\"headerbar-logo\">\n <a href={baseUrl}>\n <LogoImage />\n </a>\n\n <style jsx>{`\n .headerbar-logo {\n box-sizing: border-box;\n min-width: 49px;\n max-height: 48px;\n margin: 0 12px 0 0;\n border-right: 1px solid rgba(32, 32, 32, 0.15);\n }\n .headerbar-logo:hover {\n background-color: #1a557f;\n }\n\n .headerbar-logo a,\n .headerbar-logo a:hover,\n .headerbar-logo a:focus,\n .headerbar-logo a:active,\n .headerbar-logo a:visited {\n user-select: none;\n }\n .headerbar-logo a:focus {\n outline: 2px solid white;\n outline-offset: -2px;\n }\n .headerbar-logo a:focus:not(:focus-visible) {\n outline: none;\n }\n `}</style>\n </div>\n );\n};\n","import { colors, theme, spacers } from '@dhis2/ui-constants';\nimport { IconMessages24, IconMail24 } from '@dhis2/ui-icons';\nimport PropTypes from 'prop-types';\nimport React from 'react';\ndeclare module 'react' {\n interface StyleHTMLAttributes<T> extends React.HTMLAttributes<T> {\n jsx?: boolean;\n global?: boolean;\n }\n}\n\nfunction icon(kind: string) {\n if (kind === 'message') {\n return <IconMessages24 color={colors.white} />;\n } else {\n return <IconMail24 color={colors.white} />;\n }\n}\n\nexport const NotificationIcon = (params: any) => {\n const { count, href, kind, dataTestId } = params;\n const notificationClassName = 'headerbar-notification-icon ' + kind;\n return (\n <a href={href} className={notificationClassName} data-test={dataTestId}>\n {icon(kind)}\n\n {count > 0 && <span data-test={`${dataTestId}-count`}>{count}</span>}\n\n <style jsx>{`\n .headerbar-notification-icon {\n position: relative;\n margin: 0;\n cursor: pointer;\n padding: 0 ${spacers.dp12};\n height: 100%;\n display: flex;\n align-items: center;\n }\n .headerbar-notification-icon:focus {\n outline: 2px solid white;\n outline-offset: -2px;\n }\n .headerbar-notification-icon:focus:not(:focus-visible) {\n outline: none;\n }\n .headerbar-notification-icon:hover {\n background: #1a557f;\n }\n .headerbar-notification-icon:active {\n background: #104067;\n }\n .headerbar-notification-icon span {\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 1;\n position: absolute;\n top: 3px;\n right: 2px;\n min-width: 18px;\n min-height: 18px;\n border-radius: ${spacers.dp12};\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1),\n 0 1px 2px 0 rgba(0, 0, 0, 0.06);\n background-color: ${theme.secondary500};\n color: ${colors.white};\n font-size: 13px;\n font-weight: 600;\n line-height: 15px;\n text-align: center;\n cursor: inherit;\n padding: 0 ${spacers.dp4};\n }\n `}</style>\n </a>\n );\n};\n\nNotificationIcon.defaultProps = {\n count: 0,\n};\n\nNotificationIcon.propTypes = {\n href: PropTypes.string.isRequired,\n count: PropTypes.number,\n dataTestId: PropTypes.string,\n message: PropTypes.string,\n kind: PropTypes.oneOf(['interpretation', 'message']),\n};\n","import { useConfig } from '@dhis2/app-runtime';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { joinPath } from './join-path';\nimport { NotificationIcon } from './notification-icon';\ndeclare module 'react' {\n interface StyleHTMLAttributes<T> extends React.HTMLAttributes<T> {\n jsx?: boolean;\n global?: boolean;\n }\n}\n\n/*\n AUTHORITIES:\n - ALL: superuser\n - M_dhis-web-interpretation: access to interpretations app\n - M_dhis-web-messaging: access to messaging app\n */\n\nconst hasAuthority = (userAuthorities: any, authId: string) =>\n Array.isArray(userAuthorities) &&\n userAuthorities.some(\n (userAuthId) => userAuthId === 'ALL' || userAuthId === authId\n );\n\nexport const Notifications = (params: any) => {\n const { interpretations, messages, userAuthorities } = params;\n const { baseUrl } = useConfig();\n\n return (\n <div\n className=\"headerbar-notifications\"\n data-test=\"headerbar-notifications\"\n >\n {hasAuthority(userAuthorities, 'M_dhis-web-interpretation') && (\n <NotificationIcon\n count={interpretations}\n href={joinPath(baseUrl, 'dhis-web-interpretation')}\n kind=\"message\"\n dataTestId=\"headerbar-interpretations\"\n />\n )}\n\n {hasAuthority(userAuthorities, 'M_dhis-web-messaging') && (\n <NotificationIcon\n message=\"email\"\n count={messages}\n href={joinPath(baseUrl, 'dhis-web-messaging')}\n kind=\"interpretation\"\n dataTestId=\"headerbar-messages\"\n />\n )}\n\n <style jsx>{`\n .headerbar-notifications {\n user-select: none;\n display: flex;\n flex-direction: row;\n align-items: center;\n height: 100%;\n }\n `}</style>\n </div>\n );\n};\n\nNotifications.propTypes = {\n interpretations: PropTypes.number,\n messages: PropTypes.number,\n userAuthorities: PropTypes.arrayOf(PropTypes.string),\n};\n","import { useConfig } from '@dhis2/app-runtime';\n\nexport const useDebugInfo = () => {\n const { appName, appVersion, systemInfo } = useConfig() as any;\n\n return {\n app_name: appName || null,\n app_version: appVersion?.full || null,\n dhis2_version: systemInfo?.version || null,\n dhis2_revision: systemInfo?.revision || null,\n };\n};\n\nexport const useFormattedDebugInfo = () =>\n JSON.stringify(useDebugInfo(), undefined, 2);\n","import { colors } from '@dhis2/ui-constants';\nimport React from 'react';\nimport { useDebugInfo } from './use-debug-info';\ndeclare module 'react' {\n interface StyleHTMLAttributes<T> extends React.HTMLAttributes<T> {\n jsx?: boolean;\n global?: boolean;\n }\n}\n\nconst formatDebugInfoKey = (key: any) => {\n const tokens = key.split('_');\n return tokens\n .map((token: any) => {\n if (token.toLowerCase() === 'dhis2') {\n return 'DHIS2';\n } else {\n return token[0].toUpperCase() + token.substr(1).toLowerCase();\n }\n })\n .join(' ');\n};\n\nexport function DebugInfoTable() {\n const debugInfo = useDebugInfo() as any;\n return (\n <table {...{ 'data-test': 'dhis2-ui-headerbar-debuginfotable' }}>\n <tbody>\n {Object.keys(debugInfo).map((key) => (\n <tr key={key}>\n <td className=\"debug-info-key\">{formatDebugInfoKey(key)}</td>\n <td>{debugInfo[key]}</td>\n </tr>\n ))}\n </tbody>\n <style jsx>{`\n table {\n white-space: pre-wrap;\n font-size: 14px;\n line-height: 1.2;\n color: ${colors.grey700};\n font-famile: Menlo, Courier, monospace !important;\n }\n td {\n padding: 3px 16px 3px 0;\n }\n .debug-info-key {\n font-weight: bold;\n }\n `}</style>\n </table>\n );\n}\n","import { Button, ButtonStrip } from '@dhis2-ui/button';\nimport { Modal, ModalActions, ModalContent, ModalTitle } from '@dhis2-ui/modal';\nimport { useAlert } from '@dhis2/app-runtime';\nimport i18n from '@dhis2/d2-i18n';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { DebugInfoTable } from './debug-info-table';\nimport { useFormattedDebugInfo } from './use-debug-info';\n\nexport function DebugInfoModal(params: any) {\n const { onClose } = params;\n const debugInfo = useFormattedDebugInfo();\n const { show: showClipboardAlert } = useAlert(\n 'Debug information copied to clipboard',\n { duration: 3000 }\n );\n\n const copyDebugInfo = () => {\n navigator.clipboard.writeText(debugInfo);\n onClose();\n showClipboardAlert();\n };\n\n return (\n <Modal position=\"middle\" dataTest=\"dhis2-ui-headerbar-debuginfomodal\">\n <ModalTitle>{i18n.t('Debug info')}</ModalTitle>\n <ModalContent>\n <DebugInfoTable />\n </ModalContent>\n <ModalActions>\n <ButtonStrip end>\n <Button onClick={() => onClose()}>{i18n.t('Close')}</Button>\n <Button\n primary\n onClick={copyDebugInfo}\n dataTest=\"dhis2-ui-headerbar-debuginfomodal-copybutton\"\n >\n {i18n.t('Copy debug info')}\n </Button>\n </ButtonStrip>\n </ModalActions>\n </Modal>\n );\n}\n\nDebugInfoModal.propTypes = {\n onClose: PropTypes.func.isRequired,\n};\n","import { MenuItem } from '@dhis2-ui/menu';\nimport { colors } from '@dhis2/ui-constants';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport i18n from '@dhis2/d2-i18n';\nimport { useDebugInfo } from './use-debug-info';\ndeclare module 'react' {\n interface StyleHTMLAttributes<T> extends React.HTMLAttributes<T> {\n jsx?: boolean;\n global?: boolean;\n }\n}\n\nexport const DebugInfoMenuItem = (params: any) => {\n const { hideProfileMenu, showDebugInfoModal } = params;\n const debugInfo = useDebugInfo();\n\n const openDebugModal = () => {\n hideProfileMenu();\n showDebugInfoModal();\n };\n\n const debugInfoLabel = (\n <div className=\"root\">\n <div\n className=\"instance-info version\"\n data-test=\"dhis2-ui-headerbar-instanceinfo\"\n >\n {debugInfo.dhis2_version\n ? i18n.t('DHIS2 {{dhis2Version}}', {\n dhis2Version: debugInfo.dhis2_version,\n })\n : i18n.t('DHIS2 version unknown')}\n </div>\n <div className=\"version\" data-test=\"dhis2-ui-headerbar-appinfo\">\n {debugInfo.app_name\n ? debugInfo.app_version\n ? `${debugInfo.app_name} ${debugInfo.app_version}`\n : i18n.t('{{appName}} version unknown', {\n appName: debugInfo.app_name,\n })\n : debugInfo.app_version\n ? i18n.t('App {{appVersion}}', {\n appVersion: debugInfo.app_version,\n })\n : i18n.t('App version unknown')}\n {}\n </div>\n <style jsx>{`\n .root {\n color: ${colors.grey700};\n font-style: italic;\n font-size: 14px;\n line-height: 17px;\n }\n .instance-info {\n margin-bottom: 4px;\n }\n .version {\n white-space: no-wrap;\n }\n `}</style>\n </div>\n );\n\n return (\n <MenuItem\n dense\n onClick={openDebugModal}\n label={debugInfoLabel}\n dataTest=\"dhis2-ui-headerbar-debuginfo\"\n />\n );\n};\n\nDebugInfoMenuItem.propTypes = {\n hideProfileMenu: PropTypes.func.isRequired,\n showDebugInfoModal: PropTypes.func.isRequired,\n};\n","import { UserAvatar } from '@dhis2-ui/user-avatar';\nimport { useConfig } from '@dhis2/app-runtime';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { joinPath } from '../join-path';\nimport i18n from '@dhis2/d2-i18n';\ndeclare module 'react' {\n interface StyleHTMLAttributes<T> extends React.HTMLAttributes<T> {\n jsx?: boolean;\n global?: boolean;\n }\n}\n\nconst ProfileName = (params: any) => {\n const { children } = params;\n return (\n <div\n className=\"headerbar-profile-username\"\n data-test=\"headerbar-profile-username\"\n >\n {children}\n\n <style jsx>{`\n .headerbar-profile-username {\n margin-bottom: 3px;\n font-size: 16px;\n line-height: 19px;\n }\n `}</style>\n </div>\n );\n};\nProfileName.propTypes = {\n children: PropTypes.string,\n};\n\nconst ProfileEmail = (params: any) => {\n const { children } = params;\n return (\n <div\n className=\"headerbar-profile-user-email\"\n data-test=\"headerbar-profile-user-email\"\n >\n {children}\n\n <style jsx>{`\n .headerbar-profile-user-email {\n margin-bottom: 6px;\n font-size: 14px;\n line-height: 16px;\n }\n `}</style>\n </div>\n );\n};\nProfileEmail.propTypes = {\n children: PropTypes.string,\n};\n\nconst ProfileEdit = (params: any) => {\n const { children } = params;\n const { baseUrl } = useConfig();\n\n return (\n <a\n className=\"headerbar-profile-edit-profile-link\"\n href={joinPath(baseUrl, 'dhis-web-user-profile/#/profile')}\n data-test=\"headerbar-profile-edit-profile-link\"\n >\n {children}\n\n <style jsx>{`\n .headerbar-profile-edit-profile-link {\n color: rgba(0, 0, 0, 0.87);\n font-size: 12px;\n line-height: 14px;\n text-decoration: underline !important;\n cursor: pointer;\n }\n `}</style>\n </a>\n );\n};\n\nProfileEdit.propTypes = {\n children: PropTypes.string,\n};\n\nconst ProfileDetails = (params: any) => {\n const { name, email } = params;\n return (\n <div className=\"headerbar-profile-details\">\n <ProfileName>{name}</ProfileName>\n <ProfileEmail>{email}</ProfileEmail>\n <ProfileEdit>{i18n.t('Edit profile')}</ProfileEdit>\n\n <style jsx>{`\n .headerbar-profile-details {\n display: flex;\n flex-direction: column;\n margin-left: 20px;\n color: #000;\n font-size: 14px;\n font-weight: 400;\n }\n `}</style>\n </div>\n );\n};\n\nProfileDetails.propTypes = {\n email: PropTypes.string,\n name: PropTypes.string,\n};\n\nexport const ProfileHeader = (params: any) => {\n const { name, email, avatarId } = params;\n return (\n <div className=\"headerbar-profile-header\">\n <UserAvatar\n avatarId={avatarId}\n name={name}\n dataTest=\"headerbar-profile-menu-icon\"\n large\n />\n <ProfileDetails name={name} email={email} />\n\n <style jsx>{`\n .headerbar-profile-header {\n display: flex;\n flex-direction: row;\n margin-left: 24px;\n padding-top: 20px;\n }\n `}</style>\n </div>\n );\n};\n\nProfileHeader.propTypes = {\n avatarId: PropTypes.string,\n email: PropTypes.string,\n name: PropTypes.string,\n};\n","import PropTypes from 'prop-types';\nimport React, { createContext, useContext } from 'react';\n\nconst headerBarContext = createContext({\n updateAvailable: false,\n onApplyAvailableUpdate: () => {},\n});\n\nexport const HeaderBarContextProvider = (params: any) => {\n const { updateAvailable, onApplyAvailableUpdate, children } = params;\n return (\n <headerBarContext.Provider\n value={{ updateAvailable, onApplyAvailableUpdate }}\n >\n {children}\n </headerBarContext.Provider>\n );\n};\nHeaderBarContextProvider.propTypes = {\n children: PropTypes.node,\n updateAvailable: PropTypes.bool,\n onApplyAvailableUpdate: PropTypes.func,\n};\n\nexport const useHeaderBarContext = () => useContext(headerBarContext);\n","import { MenuItem } from '@dhis2-ui/menu';\nimport { useConfig } from '@dhis2/app-runtime';\nimport { colors } from '@dhis2/ui-constants';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { useHeaderBarContext } from '../header-bar-context';\nimport i18n from '@dhis2/d2-i18n';\ndeclare module 'react' {\n interface StyleHTMLAttributes<T> extends React.HTMLAttributes<T> {\n jsx?: boolean;\n global?: boolean;\n }\n}\n\nexport function UpdateNotification(params: any) {\n const { hideProfileMenu } = params;\n const { appName } = useConfig();\n const { updateAvailable, onApplyAvailableUpdate } = useHeaderBarContext();\n const onClick = () => {\n hideProfileMenu();\n onApplyAvailableUpdate?.();\n };\n\n const updateNotificationLabel = (\n <div className=\"root\">\n <div className=\"badge\" />\n <div className=\"spacer\" />\n <div className=\"message\">\n {appName\n ? i18n.t('New {{appName}} version available', { appName })\n : i18n.t('New app version available')}\n <br />\n {i18n.t('Click to reload')}\n </div>\n <style jsx>{`\n .root {\n display: flex;\n flex-direction: row;\n align-items: center;\n font-size: 14px;\n line-height: 17px;\n }\n .badge {\n display: inline-block;\n width: 12px;\n height: 12px;\n margin: 0 8px;\n border-radius: 6px;\n background-color: ${colors.blue600};\n }\n .spacer {\n display: inline-block;\n width: 8px;\n }\n .message {\n display: inline-block;\n }\n `}</style>\n </div>\n );\n\n return updateAvailable ? (\n <MenuItem\n dense\n onClick={onClick}\n label={updateNotificationLabel}\n dataTest=\"dhis2-ui-headerbar-updatenotification\"\n />\n ) : null;\n}\n\nUpdateNotification.propTypes = {\n hideProfileMenu: PropTypes.func.isRequired,\n};\n","import { Card } from '@dhis2-ui/card';\nimport { Center } from '@dhis2-ui/center';\nimport { Divider } from '@dhis2-ui/divider';\nimport { Layer } from '@dhis2-ui/layer';\nimport { CircularLoader } from '@dhis2-ui/loader';\nimport { MenuDivider, MenuItem } from '@dhis2-ui/menu';\nimport { clearSensitiveCaches, useConfig } from '@dhis2/app-runtime';\nimport { colors } from '@dhis2/ui-constants';\nimport {\n IconSettings24,\n IconInfo24,\n IconLogOut24,\n IconUser24,\n IconQuestion24,\n} from '@dhis2/ui-icons';\nimport PropTypes from 'prop-types';\nimport React, { useState } from 'react';\nimport { DebugInfoMenuItem } from '../debug-info/debug-info-menu-item';\nimport { joinPath } from '../join-path';\nimport i18n from '@dhis2/d2-i18n';\nimport { ProfileHeader } from './profile-header';\nimport { UpdateNotification } from './update-notification';\n\nconst LoadingMask = () => (\n <Layer\n translucent\n disablePortal\n dataTest=\"headerbar-profile-menu-loading-mask\"\n >\n <Center>\n <CircularLoader />\n </Center>\n </Layer>\n);\n\nconst ProfileContents = (params: any) => {\n const {\n name,\n email,\n avatarId,\n helpUrl,\n hideProfileMenu,\n showDebugInfoModal,\n } = params;\n const { baseUrl } = useConfig();\n const [loading, setLoading] = useState(false);\n\n return (\n <Card>\n <div className=\"headerbar-profile-contents\">\n <ProfileHeader name={name} email={email} avatarId={avatarId} />\n <Divider margin=\"13px 0 7px 0\" />\n <ul data-test=\"headerbar-profile-menu\">\n <MenuItem\n href={joinPath(baseUrl, 'dhis-web-user-profile/#/settings')}\n label={i18n.t('Settings')}\n value=\"settings\"\n icon={<IconSettings24 color={colors.grey700} />}\n />\n <MenuItem\n href={joinPath(baseUrl, 'dhis-web-user-profile/#/account')}\n label={i18n.t('Account')}\n value=\"account\"\n icon={<IconUser24 color={colors.grey700} />}\n />\n {helpUrl && (\n <MenuItem\n href={helpUrl}\n label={i18n.t('Help')}\n value=\"help\"\n icon={<IconQuestion24 color={colors.grey700} />}\n />\n )}\n <MenuItem\n href={joinPath(baseUrl, 'dhis-web-user-profile/#/aboutPage')}\n label={i18n.t('About DHIS2')}\n value=\"about\"\n icon={<IconInfo24 color={colors.grey700} />}\n />\n <MenuItem\n href={joinPath(baseUrl, 'dhis-web-commons-security/logout.action')}\n // NB: By MenuItem implementation, this callback\n // overwrites default navigation behavior but maintains\n // the href attribute\n onClick={async () => {\n setLoading(true);\n await clearSensitiveCaches();\n setLoading(false);\n window.location.assign(\n joinPath(baseUrl, 'dhis-web-commons-security/logout.action')\n );\n }}\n label={i18n.t('Logout')}\n value=\"logout\"\n icon={<IconLogOut24 color={colors.grey700} />}\n />\n <MenuDivider dense />\n <DebugInfoMenuItem\n hideProfileMenu={hideProfileMenu}\n showDebugInfoModal={showDebugInfoModal}\n />\n <UpdateNotification hideProfileMenu={hideProfileMenu} />\n </ul>\n </div>\n\n {loading && <LoadingMask />}\n\n <style jsx>{`\n .headerbar-profile-contents {\n width: 100%;\n padding: 0;\n }\n\n .headerbar-profile-contents ul {\n padding: 0;\n margin: 0;\n }\n\n .headerbar-profile-contents a {\n display: inline-flex !important;\n }\n\n .headerbar-profile-contents a,\n .headerbar-profile-contents a:hover,\n .headerbar-profile-contents a:focus,\n .headerbar-profile-contents a:active,\n .headerbar-profile-contents a:visited {\n text-decoration: none;\n display: block;\n }\n `}</style>\n </Card>\n );\n};\n\nProfileContents.propTypes = {\n hideProfileMenu: PropTypes.func.isRequired,\n showDebugInfoModal: PropTypes.func.isRequired,\n avatarId: PropTypes.string,\n email: PropTypes.string,\n helpUrl: PropTypes.string,\n name: PropTypes.string,\n};\n\nexport const ProfileMenu = (params: any) => {\n const { ...props } = params;\n return (\n <div className=\"headerbar-profile-menu\" data-test=\"headerbar-profile-menu\">\n <ProfileContents {...props} />\n <style jsx>{`\n .headerbar-profile-menu {\n z-index: 10000;\n position: absolute;\n right: 4px;\n width: 320px;\n }\n `}</style>\n </div>\n );\n};\n\nProfileMenu.propTypes = {\n hideProfileMenu: PropTypes.func.isRequired,\n showDebugInfoModal: PropTypes.func.isRequired,\n avatarId: PropTypes.string,\n email: PropTypes.string,\n helpUrl: PropTypes.string,\n name: PropTypes.string,\n};\n","import { useEffect, useMemo } from 'react';\n\nexport const useOnDocClick = (containerRef: any, hide: any) => {\n const onDocClick = useMemo(() => {\n return (evt: any) => {\n if (!containerRef.current) {\n return null;\n }\n\n if (!containerRef.current.contains(evt.target)) {\n hide();\n }\n\n return null;\n };\n }, [containerRef, hide]);\n\n useEffect(() => {\n document.addEventListener('click', onDocClick);\n\n return () => {\n document.removeEventListener('click', onDocClick);\n };\n }, [onDocClick]);\n};\n","import { UserAvatar } from '@dhis2-ui/user-avatar';\nimport PropTypes from 'prop-types';\nimport React, { useCallback, useRef, useState } from 'react';\nimport { DebugInfoModal } from './debug-info/debug-info-modal';\nimport { ProfileMenu } from './profile-menu';\nimport { useOnDocClick } from './profile/use-on-doc-click';\ndeclare module 'react' {\n interface StyleHTMLAttributes<T> extends React.HTMLAttributes<T> {\n jsx?: boolean;\n global?: boolean;\n }\n}\n\nconst Profile = (params: any) => {\n const { name, email, avatarId, helpUrl } = params;\n const [showProfileMenu, setShowProfileMenu] = useState(false);\n const [showDebugInfoModal, setShowDebugInfoModal] = useState(false);\n const hideProfileMenu = useCallback(\n () => setShowProfileMenu(false),\n [setShowProfileMenu]\n );\n const toggleProfileMenu = useCallback(\n () => setShowProfileMenu((show) => !show),\n [setShowProfileMenu]\n ) as any;\n const containerRef = useRef(null);\n\n useOnDocClick(containerRef, hideProfileMenu);\n\n return (\n <div\n ref={containerRef}\n data-test=\"headerbar-profile\"\n className=\"headerbar-profile\"\n >\n <button className=\"headerbar-profile-btn\" onClick={toggleProfileMenu}>\n <UserAvatar\n avatarId={avatarId}\n name={name}\n dataTest=\"headerbar-profile-icon\"\n medium\n />\n </button>\n\n {showProfileMenu && (\n <ProfileMenu\n avatarId={avatarId}\n name={name}\n email={email}\n helpUrl={helpUrl}\n hideProfileMenu={hideProfileMenu}\n showDebugInfoModal={() => {\n setShowDebugInfoModal(true);\n }}\n />\n )}\n {showDebugInfoModal && (\n <DebugInfoModal\n onClose={() => {\n setShowDebugInfoModal(false);\n }}\n />\n )}\n\n <style jsx>{`\n .headerbar-profile {\n position: relative;\n height: 100%;\n }\n\n .headerbar-profile-btn {\n background: transparent;\n padding: 6px;\n border: 0;\n cursor: pointer;\n }\n .headerbar-profile-btn:focus {\n outline: 2px solid white;\n outline-offset: -2px;\n }\n .headerbar-profile-btn:focus:not(:focus-visible) {\n outline: none;\n }\n .headerbar-profile-btn:hover {\n background: #1a557f;\n }\n .headerbar-profile-btn:active {\n background: #104067;\n }\n `}</style>\n </div>\n );\n};\n\nProfile.propTypes = {\n name: PropTypes.string.isRequired,\n avatarId: PropTypes.string,\n email: PropTypes.string,\n helpUrl: PropTypes.string,\n};\n\nexport default Profile;\n","import PropTypes from 'prop-types';\nimport React from 'react';\ndeclare module 'react' {\n interface StyleHTMLAttributes<T> extends React.HTMLAttributes<T> {\n jsx?: boolean;\n global?: boolean;\n }\n}\n\nexport const Title = (params: any) => {\n const { app, instance } = params;\n return (\n <div className=\"headerbar-title\" data-test=\"headerbar-title\">\n {app ? `${instance} - ${app}` : `${instance}`}\n\n <style jsx>{`\n .headerbar-title {\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: 14px;\n font-weight: 500;\n letter-spacing: 0.01em;\n white-space: nowrap;\n }\n `}</style>\n </div>\n );\n};\nTitle.propTypes = {\n app: PropTypes.string,\n instance: PropTypes.string,\n};\n","import i18n from '@dhis2/d2-i18n';\nimport { colors } from '@dhis2/ui-constants';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { HeaderBarData } from '../models';\nimport Apps from './apps';\nimport { Logo } from './logo';\nimport { Notifications } from './notifications';\nimport Profile from './profile';\nimport { Title } from './title';\n\ninterface HeaderBarProp {\n appName: string;\n data: HeaderBarData;\n className?: string;\n}\n\nexport const HeaderBar = ({ appName, data, className }: HeaderBarProp) => {\n const loading = false;\n const error = null;\n\n // See https://jira.dhis2.org/browse/LIBS-180\n if (!loading && !error) {\n // TODO: This will run every render which is probably wrong!\n // Also, setting the global locale shouldn't be done in the headerbar\n const locale = (data.user['settings'] as any)['keyUiLocale'] || 'en';\n i18n.setDefaultNamespace('default');\n i18n.changeLanguage(locale);\n }\n\n {\n /* TODO: Find better way to attach base URL */\n }\n const baseUrl = '../../../';\n\n return (\n <header className={className}>\n <div className=\"main\">\n {!loading && !error && (\n <>\n <Logo baseUrl={baseUrl} />\n\n <Title\n app={appName}\n instance={(data.title as any)['applicationTitle']}\n />\n\n <div className=\"right-control-spacer\" />\n\n {/*TODO: Find better approach to handle PWA */}\n {/* {'pwaEnabled' && <OnlineStatus />} */}\n\n <Notifications\n interpretations={data.notifications.unreadInterpretations}\n messages={data.notifications.unreadMessageConversations}\n userAuthorities={data.user['authorities'] as any}\n />\n <Apps apps={data.apps} baseUrl={baseUrl} />\n\n <Profile\n name={data.user['name'] as string}\n email={data.user['email'] as string}\n avatarId={((data.user['avatar'] || {}) as any)['id']}\n helpUrl={data.help.helpPageLink}\n />\n </>\n )}\n </div>\n\n {/* {'pwaEnabled' && !loading && !error && <OnlineStatus dense />} */}\n\n <style jsx>{`\n .main {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n background-color: #2c6693;\n color: ${colors.white};\n height: 48px;\n }\n .right-control-spacer {\n margin-left: auto;\n }\n `}</style>\n </header>\n );\n};\n\nHeaderBar.propTypes = {\n appName: PropTypes.string,\n data: HeaderBarData,\n className: PropTypes.string,\n updateAvailable: PropTypes.bool,\n onApplyAvailableUpdate: PropTypes.func,\n};\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n ContentChild,\n Directive,\n ElementRef,\n Input,\n OnChanges,\n OnDestroy,\n} from '@angular/core';\nimport parse from 'html-react-parser';\nimport * as React from 'react';\nimport { ComponentProps } from 'react';\nimport * as ReactDOM from 'react-dom/client';\n(window as any).React = React;\n\n@Directive({\n selector: 'ng-dhis2-ui-wrapper',\n})\nexport class ReactWrapperModule implements OnDestroy, AfterViewInit {\n @Input() props?: ComponentProps<any>;\n @Input() component!: any;\n\n @ContentChild('ngDhis2UiContent') content!: ElementRef<HTMLElement>;\n protected reactDomRoot?: ReactDOM.Root;\n\n constructor(protected elementRef: ElementRef<HTMLElement>) {}\n\n ngAfterViewInit() {\n if (!this.elementRef) throw new Error('No element ref');\n this.reactDomRoot = ReactDOM.createRoot(this.elementRef.nativeElement);\n this.render();\n }\n\n ngOnDestroy() {\n this.reactDomRoot?.unmount();\n }\n\n protected render() {\n if (!this.component) {\n console.warn('React component must be supplied');\n } else {\n if (!this.reactDomRoot) return;\n\n const jsxContent = this.content?.nativeElement?.outerHTML\n ? parse(this.content?.nativeElement?.outerHTML)\n : undefined;\n\n this.reactDomRoot.render(\n <this.component {...this.props}> {jsxContent || ''} </this.component>\n );\n }\n }\n}\n","import { Component, ElementRef } from '@angular/core';\nimport { DataProvider } from '@dhis2/app-runtime';\nimport { NgxDhis2HttpClientService } from '@iapps/ngx-dhis2-http-client';\nimport React from 'react';\nimport * as ReactDOM from 'react-dom/client';\nimport { firstValueFrom } from 'rxjs';\nimport { HeaderBarData } from './models';\nimport { HeaderBar } from './utils/header-bar';\nimport { ReactWrapperModule } from '../react-wrapper/react-wrapper.component';\n\n@Component({\n selector: 'ng-dhis2-ui-header-bar',\n template: `<ng-container></ng-container>`,\n standalone: false,\n})\nexport class HeaderBarComponent extends ReactWrapperModule {\n constructor(\n elementRef: ElementRef<HTMLElement>,\n private httpClient: NgxDhis2HttpClientService\n ) {\n super(elementRef);\n }\n\n override async ngAfterViewInit() {\n if (!this.elementRef) throw new Error('No element ref');\n this.reactDomRoot = ReactDOM.createRoot(this.elementRef.nativeElement);\n const manifest = await firstValueFrom(this.httpClient.manifest());\n const data = await firstValueFrom(new HeaderBarData(this.httpClient).get());\n\n this.component = data\n ? () => (\n <DataProvider>\n {<HeaderBar appName={manifest?.name} data={data} />}\n </DataProvider>\n )\n : () => <div>Something went wrong</div>;\n this.render();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SharedDhis2UiModule } from '../../shared/shared.module';\nimport { HeaderBarComponent } from './header-bar.component';\n\n@NgModule({\n imports: [CommonModule, SharedDhis2UiModule],\n declarations: [HeaderBarComponent],\n exports: [HeaderBarComponent],\n})\nexport class HeaderBarModule {}\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './header-bar.module';\nexport * from './header-bar.component';\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\nimport { Button } from '@dhis2/ui';\nimport { ReactWrapperModule } from '../react-wrapper/react-wrapper.component';\nimport React from 'react';\nimport * as ReactDOM from 'react-dom/client';\n\n@Component({\n selector: 'ng-dhis2-ui-button',\n template: '<ng-content></ng-content>',\n standalone: false,\n})\nexport class ButtonComponent extends ReactWrapperModule {\n @Input() label!: string;\n @Input() primary?: boolean;\n @Input() secondary?: boolean;\n @Input() destructive?: boolean;\n @Input() disabled?: boolean;\n @Input() small?: boolean;\n @Input() large?: boolean;\n\n @Output() buttonClick: EventEmitter<any> = new EventEmitter();\n\n override async ngAfterViewInit() {\n if (!this.elementRef) throw new Error('No element ref');\n this.reactDomRoot = ReactDOM.createRoot(this.elementRef.nativeElement);\n\n this.component = () => (\n <Button\n onClick={(e: any) => {\n this.onButtonClick(e);\n }}\n primary={this.primary}\n secondary={this.secondary}\n destructive={this.destructive}\n disabled={this.disabled}\n small={this.small}\n large={this.large}\n {...this.props}\n >\n {this.label}\n </Button>\n );\n this.render();\n }\n\n ngOnInit() {\n this.props = {\n ...this.props,\n primary: this.primary,\n secondary: this.secondary,\n destructive: this.destructive,\n small: this.small,\n large: this.large,\n };\n }\n\n onButtonClick(event: any) {\n this.buttonClick.emit(event);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SharedDhis2UiModule } from '../../shared/shared.module';\nimport { ButtonComponent } from './button.component';\n\n@NgModule({\n declarations: [ButtonComponent],\n exports: [ButtonComponent],\n imports: [CommonModule, SharedDhis2UiModule],\n})\nexport class ButtonModule {}\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './button.module';\nexport * from './button.component';\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './breadcrumb-item.model';\n","export const TRANSFER_OPTIONS_WIDTH = '420px';\n\nexport const TRANSFER_SELECTED_WIDTH = '298px';\n\nexport const TRANSFER_HEIGHT = '512px';\n","import React from 'react';\n\nexport const AssignedCategoriesIcon = () => {\n return (\n <svg height=\"16\" viewBox=\"0 0 16 16\" width=\"16\">\n <g fill=\"#212934\" fillRule=\"evenodd\">\n <path d=\"m2 7h11v1h-11z\" />\n <path d=\"m2 13h11v1h-11z\" />\n <path d=\"m2 2h11v1h-11z\" />\n <path d=\"m7 8h1v5h-1z\" />\n <path d=\"m12 3h1v10h-1z\" />\n <path d=\"m2 3h1v10h-1z\" />\n </g>\n </svg>\n );\n};\n","import {\n IconClock16,\n IconDimensionData16,\n IconDimensionOrgUnit16,\n} from '@dhis2/ui';\nimport i18n from '@dhis2/d2-i18n';\nimport React from 'react';\nimport { AssignedCategoriesIcon } from '../assets/AssignedCategoriesIcon';\n\nexport const DIMENSION_ID_DATA = 'dx';\nexport const DIMENSION_ID_PERIOD = 'pe';\nexport const DIMENSION_ID_ORGUNIT = 'ou';\nexport const DIMENSION_ID_ORGUNIT_LEVEL = 'ouLevel';\nexport const DIMENSION_ID_ORGUNIT_GROUP = 'ouGroup';\nexport const DIMENSION_ID_ASSIGNED_CATEGORIES = 'co';\nexport const DIMENSION_PROP_NO_ITEMS = 'noItems';\n\nexport const getFixedDimensions = () => ({\n [DIMENSION_ID_DATA]: {\n id: DIMENSION_ID_DATA,\n name: i18n.t('Data'),\n iconName: 'DataIcon',\n icon: IconDimensionData16,\n },\n [DIMENSION_ID_PERIOD]: {\n id: DIMENSION_ID_PERIOD,\n name: i18n.t('Period'),\n iconName: 'PeriodIcon',\n icon: IconClock16,\n },\n [DIMENSION_ID_ORGUNIT]: {\n id: DIMENSION_ID_ORGUNIT,\n name: i18n.t('Organisation unit'),\n iconName: 'OrgUnitIcon',\n icon: IconDimensionOrgUnit16,\n },\n});\n\nexport const getDynamicDimensions = () => ({\n [DIMENSION_ID_ASSIGNED_CATEGORIES]: {\n id: DIMENSION_ID_ASSIGNED_CATEGORIES,\n name: i18n.t('Assigned Categories'),\n iconName: 'AssignedCategoriesIcon',\n icon: AssignedCategoriesIcon,\n [DIMENSION_PROP_NO_ITEMS]: true,\n },\n});\n\nexport const getPredefinedDimensions = () => ({\n ...getFixedDimensions(),\n ...getDynamicDimensions(),\n});\n\nexport const filterOutPredefinedDimensions = (dimensionIds: string[]) =>\n dimensionIds.filter(\n (dimensionId: string) =>\n !Object.keys(getPredefinedDimensions()).includes(dimensionId)\n );\n\nexport const getPredefinedDimensionProp = (\n dimensionId: string,\n propName: string\n) => ((getPredefinedDimensions() as any)[dimensionId] || {})[propName];\n\nexport const getDimensionById = (dimensionId: string) =>\n (getPredefinedDimensions() as any)[dimensionId];\n","import i18n from '@dhis2/d2-i18n';\n\nexport const formatList = (items: any) => {\n // Wrap Intl.ListFormat in try/catch as DHIS2 locales are not always ISO 639 compliant\n try {\n const formatter = new (Intl as any).ListFormat(i18n.language, {\n style: 'long',\n type: 'conjunction',\n });\n return formatter.format(items);\n } catch (error) {\n return items.join(', ');\n }\n};\n","// Axis\n\nexport const AXIS = {\n defaultValue: [],\n isValid: (axis: any) => Array.isArray(axis),\n};\n\n// Axis ids\n\nexport const AXIS_ID_COLUMNS = 'columns';\nexport const AXIS_ID_ROWS = 'rows';\nexport const AXIS_ID_FILTERS = 'filters';\nexport const AXIS_ID_YEAR_OVER_YEAR_SERIES = 'yearOverYearSeries';\nexport const AXIS_ID_YEAR_OVER_YEAR_CATEGORY = 'yearOverYearCategory';\n//export const AXIS_ID_POINTS_CATEGORY = 'pointsCategory'\n\nexport const DEFAULT_AXIS_IDS = [\n AXIS_ID_COLUMNS,\n AXIS_ID_ROWS,\n AXIS_ID_FILTERS,\n];\nexport const ALL_AXIS_IDS = [\n AXIS_ID_COLUMNS,\n AXIS_ID_ROWS,\n AXIS_ID_FILTERS,\n AXIS_ID_YEAR_OVER_YEAR_SERIES,\n AXIS_ID_YEAR_OVER_YEAR_CATEGORY,\n];\n","import { isObject } from 'lodash';\nimport { isString } from 'lodash';\n\n// Dimension\n\nexport const DIMENSION = {\n isValid: (dimension: any) => isObject(dimension),\n};\n\n// Props\n\nexport const DIMENSION_PROP_ID = {\n name: 'dimension',\n defaultValue: '',\n required: true,\n isValid: (prop: any) => isString(prop),\n};\n\nexport const DIMENSION_PROP_ITEMS = {\n name: 'items',\n defaultValue: [],\n required: false,\n isValid: (prop: any) => Array.isArray(prop),\n};\n\nexport const DIMENSION_PROP_FILTER = {\n name: 'filter',\n defaultValue: [],\n required: false,\n isValid: (prop: any) => isString(prop),\n};\n\nexport const DIMENSION_PROP_LEGEND_SET = {\n name: 'legendSet',\n defaultValue: [],\n required: false,\n isValid: (prop: any) => isString(prop),\n};\n\nexport const DIMENSION_PROP_PROGRAM_STAGE = {\n name: 'programStage',\n defaultValue: {},\n required: false,\n isValid: (prop: any) => isObject(prop),\n};\n\nexport const DIMENSION_PROP_REPETITION = {\n name: 'repetition',\n defaultValue: [],\n required: false,\n isValid: (prop: any) => Array.isArray(prop),\n};\n\nexport const DIMENSION_PROPS = [\n DIMENSION_PROP_ID,\n DIMENSION_PROP_ITEMS,\n DIMENSION_PROP_FILTER,\n DIMENSION_PROP_LEGEND_SET,\n DIMENSION_PROP_PROGRAM_STAGE,\n DIMENSION_PROP_REPETITION,\n];\n","import { DIMENSION_PROP_ID } from './dimension';\n\nexport const dimensionIs = (dimension: any, dimensionId: string) =>\n dimension[DIMENSION_PROP_ID.name] === dimensionId;\n","import { AXIS } from './axis';\nimport { dimensionIs } from './dimensionIs';\n\nexport const axisGetDimension = (axis: any, dimensionId: string) =>\n AXIS.isValid(axis) &&\n axis.find((dimension: any) => dimensionIs(dimension, dimensionId));\n","import { axisGetDimension } from './axisGetDimension';\n\nexport const axisHasDimension = (axis: any, dimensionId: string) =>\n Boolean(axisGetDimension(axis, dimensionId));\n","import { DEFAULT_AXIS_IDS } from './axis';\nimport { axisHasDimension } from './axisHasDimension';\nimport { dimensionIs } from './dimensionIs';\n\nexport const layoutReplaceDimension = (\n layout: any,\n dimensionId: any,\n items: any\n) => {\n const axisId = DEFAULT_AXIS_IDS.find((a) =>\n axisHasDimension(layout[a], dimensionId)\n );\n\n if (!axisId) {\n return Object.assign({}, layout);\n }\n\n const newAxisDimensions = layout[axisId].map((dimension: any) => {\n if (dimensionIs(dimension, dimensionId)) {\n return Object.assign({}, dimension, { items });\n }\n return dimension;\n });\n\n return Object.assign({}, layout, { [axisId]: newAxisDimensions });\n};\n","import { AXIS_ID_COLUMNS, AXIS_ID_ROWS, AXIS_ID_FILTERS } from './axis';\n\nexport const layoutGetAllAxes = (layout: any) => [\n layout[AXIS_ID_COLUMNS],\n layout[AXIS_ID_ROWS],\n layout[AXIS_ID_FILTERS],\n];\n","import { layoutGetAllAxes } from './layoutGetAllAxes';\n\nexport const layoutGetAllDimensions = (layout: any) =>\n layoutGetAllAxes(layout).reduce((allDimensions: any, axis: any) => {\n allDimensions.push(...axis);\n return allDimensions;\n }, []);\n","import { dimensionIs } from './dimensionIs';\nimport { layoutGetAllDimensions } from './layoutGetAllDimensions';\n\nexport const layoutGetDimension = (layout: any, dimensionId: string) =>\n layoutGetAllDimensions(layout).find((dimension: any) =>\n dimensionIs(dimension, dimensionId)\n );\n","import { DIMENSION, DIMENSION_PROP_ITEMS } from './dimension';\n\nexport const dimensionIsEmpty = (dimension: { [x: string]: any[] }) =>\n !(\n DIMENSION.isValid(dimension) &&\n DIMENSION_PROP_ITEMS.isValid(dimension[DIMENSION_PROP_ITEMS.name]) &&\n dimension[DIMENSION_PROP_ITEMS.name].length\n );\n","import { DIMENSION, DIMENSION_PROPS } from './dimension';\nimport { dimensionIsEmpty } from './dimensionIsEmpty';\n\nexport const dimensionIsValid = (\n dimension: { [x: string]: unknown },\n { requireItems }: any = {}\n) => {\n if (!DIMENSION.isValid(dimension)) {\n return false;\n }\n\n const requiredProps = DIMENSION_PROPS.filter((prop) => prop.required);\n\n if (!requiredProps.every((prop) => prop.isValid(dimension[prop.name]))) {\n return false;\n }\n\n if (\n requireItems === true &&\n dimensionIsEmpty(dimension as { [x: string]: any[] })\n ) {\n return false;\n }\n\n return true;\n};\n","import { DIMENSION_PROP_ITEMS } from './dimension';\nimport { dimensionIsValid } from './dimensionIsValid';\n\nexport const dimensionGetItems = (dimension: any) =>\n dimensionIsValid(dimension, { requireItems: true })\n ? dimension[DIMENSION_PROP_ITEMS.name]\n : DIMENSION_PROP_ITEMS.defaultValue;\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './dimensionSelectorHelper';\nexport * from './predefinedDimensions';\nexport * from './list';\nexport * from './axis';\nexport * from './axisHasDimension';\nexport * from './dimension';\nexport * from './dimensionSelectorHelper';\nexport * from './layoutReplaceDimension';\nexport * from './layoutGetDimension';\nexport * from './layoutGetAllDimensions';\nexport * from './dimensionGetItems';\n","import { colors, spacers } from '@dhis2/ui';\n\nexport default `\n .filterContainer {\n display: flex;\n margin-bottom: ${spacers.dp12};\n margin-top: ${spacers.dp8};\n }\n .emptyList {\n text-align: center;\n font-size: 14px;\n line-height: 16px;\n margin: ${spacers.dp24} 0 0;\n color: ${colors.grey700};\n }\n .rightHeader {\n font-size: 14px;\n font-weight: 400;\n }\n .leftHeader {\n padding: ${spacers.dp12} ${spacers.dp4};\n }\n .info-container {\n display: flex;\n margin-bottom: ${spacers.dp8};\n padding: ${spacers.dp8};\n background-color: ${colors.grey200};\n border-radius: 3px;\n }\n .info-text {\n padding-left: ${spacers.dp8};\n color: ${colors.grey900};\n font-size: 12px;\n line-height: 16px;\n }\n .calculation-button {\n margin: ${spacers.dp8} 0;\n }\n`;\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './DimensionSelector.style';\n","import { IconEdit16, Tooltip, colors, spacers, theme } from '@dhis2/ui';\nimport cx from 'classnames';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nexport const TransferOption = ({\n disabled,\n label,\n highlighted,\n selected,\n onClick,\n onDoubleClick,\n value,\n icon,\n active,\n tooltipText,\n dataTest,\n onEditClick,\n}: any) => {\n const renderContent = () => (\n <div\n className={cx('chip', {\n highlighted,\n disabled,\n selected,\n inactive: active !== undefined && !active,\n })}\n data-test={`${dataTest}-content`}\n onClick={(event) => {\n if (disabled) {\n return;\n }\n onClick({ label, value }, event);\n }}\n onDoubleClick={(event) => {\n if (disabled) {\n return;\n }\n onDoubleClick({ label, value }, event);\n }}\n >\n <span className=\"icon\">{icon}</span>\n <span className=\"label\">{label}</span>\n {onEditClick && (\n <span\n className=\"edit\"\n onClick={(e) => {\n e.stopPropagation();\n onEditClick();\n }}\n data-test={`${dataTest}-edit-button`}\n >\n <IconEdit16 />\n </span>\n )}\n\n <style jsx>{`\n .wrapper:last-child {\n margin-bottom: ${spacers.dp4};\n }\n .chip {\n display: inline-flex;\n background: ${colors.grey200};\n font-size: 14px;\n line-height: 16px;\n padding: 2px ${spacers.dp8} 2px ${spacers.dp4};\n margin: ${spacers.dp4} ${spacers.dp8} 0 ${spacers.dp8};\n border-radius: 3px;\n user-select: none;\n }\n\n .chip:hover {\n background: ${colors.grey300};\n }\n\n .selected {\n background: ${theme.secondary100};\n color: ${theme.secondary900};\n }\n\n .selected :global(.icon path) {\n fill: ${theme.secondary700};\n }\n\n .selected:hover {\n background: #c9edeb;\n }\n\n .highlighted,\n .highlighted:hover {\n background: ${theme.secondary800};\n color: ${colors.white};\n }\n\n .highlighted :global(.icon path) {\n fill: ${colors.white};\n }\n\n .disabled {\n opacity: 0.3;\n cursor: not-allowed;\n }\n\n .inactive {\n opacity: 0.3;\n }\n\n .icon,\n .label {\n line-height: 18px;\n }\n\n .icon {\n margin-right: ${spacers.dp4};\n display: inline-flex;\n vertical-align: text-bottom;\n padding-top: 1px;\n }\n\n .label {\n font-size: 14px;\n }\n\n .edit {\n height: 16px;\n margin-top: 1px;\n margin-left: ${spacers.dp8};\n cursor: pointer;\n }\n\n .edit:hover {\n background-color: rgba(0, 0, 0, 0.12);\n outline: 1px solid rgba(0, 0, 0, 0.12);\n border-radius: 3px;\n }\n\n .highlighted .edit:hover {\n background-color: rgba(255, 255, 255, 0.12);\n outline: 1px solid rgba(255, 255, 255, 0.12);\n }\n `}</style>\n </div>\n );\n\n return (\n <div data-value={value} data-test={dataTest} className=\"wrapper\">\n {tooltipText ? (\n <Tooltip\n key={`${value}`}\n content={tooltipText}\n placement={'top'}\n openDelay={750}\n closeDelay={150}\n >\n {renderContent()}\n </Tooltip>\n ) : (\n renderContent()\n )}\n </div>\n );\n};\n\nTransferOption.propTypes = {\n label: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n active: PropTypes.bool,\n dataTest: PropTypes.string,\n disabled: PropTypes.bool,\n highlighted: PropTypes.bool,\n icon: PropTypes.node,\n selected: PropTypes.bool,\n tooltipText: PropTypes.string,\n onClick: PropTypes.func,\n onDoubleClick: PropTypes.func,\n onEditClick: PropTypes.func,\n};\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nexport * from './transfer-option.component';\n","import { set } from 'lodash';\nimport { useEffect, useState, useRef } from 'react';\n\nconst generateClassName = (base: string) =>\n `${base}-${Math.random().toString(36).substr(2, 9)}`;\n\nconst convertStylesToCSS = (\n className: string,\n styles: any,\n parentSelector = ''\n): string => {\n let cssString = '';\n let mainBlock = parentSelector ? `${parentSelector} {` : `.${className} {`;\n\n for (const key in styles) {\n const value = styles[key];\n\n if (typeof value === 'object') {\n if (key.startsWith('@media')) {\n // Handle media queries\n cssString += `${key} { ${convertStylesToCSS(\n className,\n value,\n `.${className}`\n )} }`;\n } else if (key.startsWith('&')) {\n // Handle pseudo-classes and nested selectors\n const selector = key.replace('&', `.${className}`);\n cssString += convertStylesToCSS(className, value, selector);\n } else {\n // Handle nested elements (e.g., '& > div')\n cssString += convertStylesToCSS(\n className,\n value,\n `.${className} ${key}`\n );\n }\n } else {\n // Convert camelCase to kebab-case\n const cssKey = key.replace(\n /[A-Z]/g,\n (match) => `-${match.toLowerCase()}`\n );\n mainBlock += `${cssKey}: ${value}; `;\n }\n }\n\n mainBlock += '}';\n return mainBlock + ' ' + cssString;\n};\n\n// Custom hook for dynamic styles\nexport const useDynamicStyles = <T extends Record<string, any>>(\n stylesObj: T\n) => {\n const [classNames, setClassNames] = useState<{ [K in keyof T]: string }>(\n {} as any\n );\n\n useEffect(() => {\n const styleElements: HTMLStyleElement[] = [];\n const generatedClassNames = Object.keys(stylesObj).reduce((acc, key) => {\n const className = generateClassName(key);\n const styleElement = document.createElement('style');\n styleElement.innerHTML = convertStylesToCSS(className, stylesObj[key]);\n document.head.appendChild(styleElement);\n styleElements.push(styleElement);\n acc[key as keyof T] = className;\n return acc;\n }, {} as { [K in keyof T]: string });\n\n setClassNames(generatedClassNames);\n\n return () => {\n styleElements.forEach((el) => document.head.removeChild(el));\n };\n }, [stylesObj]);\n\n return classNames;\n};\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './dynamic-styles.hook';\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './utils';\nexport * from './styles';\nexport * from './components';\nexport * from './hooks';\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport { BreadcrumbItem } from '../models';\nimport React from 'react';\nimport { colors } from '@dhis2/ui';\nimport { useDynamicStyles } from '../../../shared';\n\nconst styles = {\n button: {\n // Reset button styles\n background: 'none',\n border: 'none',\n cursor: 'pointer',\n font: 'inherit',\n\n // Custom button styles\n fontSize: '14px',\n padding: '6px 4px',\n color: colors.grey800,\n borderRadius: '3px',\n\n '&:hover': {\n textDecoration: 'underline',\n color: 'black',\n },\n '&.selected': {\n color: 'black',\n },\n },\n};\n\nexport const BreadcrumbItemComponent = (props: {\n breadcrumb: BreadcrumbItem;\n onClick: () => void;\n}) => {\n const { breadcrumb, onClick } = props;\n const classes = useDynamicStyles(styles);\n\n return (\n <button\n type=\"button\"\n title={breadcrumb.label}\n className={[\n classes.button,\n breadcrumb.selected ? classes.button + '.selected' : null,\n ]\n .filter((cssClass) => cssClass !== null)\n .join(' ')}\n onClick={onClick}\n >\n {breadcrumb.label}\n </button>\n );\n};\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n inject,\n input,\n NgZone,\n Output,\n} from '@angular/core';\nimport { ReactWrapperModule } from '../../react-wrapper/react-wrapper.component';\nimport React from 'react';\nimport * as ReactDOM from 'react-dom/client';\nimport { BreadcrumbItem } from '../models';\nimport { BreadcrumbItemComponent } from '../components/breadcrumb-item.component';\nimport { useDynamicStyles } from '../../../shared';\nimport { colors, IconChevronRight16 } from '@dhis2/ui';\n\n@Component({\n selector: 'ng-dhis2-ui-breadcrumb',\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class BreadcrumbComponent extends ReactWrapperModule {\n #ngZone = inject(NgZone);\n breadcrumbs = input.required<BreadcrumbItem[]>();\n @Output() selectBreadcrumb = new EventEmitter<BreadcrumbItem>();\n override async ngAfterViewInit() {\n if (!this.elementRef) throw new Error('No element ref');\n this.reactDomRoot = ReactDOM.createRoot(this.elementRef.nativeElement);\n\n const breadcrumbStyles = {\n container: {\n display: 'flex',\n alignItems: 'center',\n },\n };\n\n this.component = () => {\n const classes = useDynamicStyles(breadcrumbStyles);\n return (\n <div className={classes.container}>\n {this.breadcrumbs().map((breadcrumb, index) => (\n <React.Fragment key={index}>\n <BreadcrumbItemComponent\n key={index}\n breadcrumb={breadcrumb}\n onClick={() => {\n this.#ngZone.run(() => {\n this.selectBreadcrumb.emit(breadcrumb);\n });\n }}\n />\n {index < this.breadcrumbs().length - 1 && (\n <IconChevronRight16 color={colors.grey800} />\n )}\n </React.Fragment>\n ))}\n </div>\n );\n };\n this.render();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { BreadcrumbComponent } from './containers/breadcrumb.component';\n\n@NgModule({\n declarations: [BreadcrumbComponent],\n imports: [CommonModule],\n exports: [BreadcrumbComponent],\n})\nexport class BreadcrumbModule {}\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './models';\nexport * from './breadcrumb.module';\nexport * from './containers/breadcrumb.component';\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport const DAILY = 'DAILY';\nexport const WEEKLY = 'WEEKLY';\nexport const WEEKLYWED = 'WEEKLYWED';\nexport const WEEKLYTHU = 'WEEKLYTHU';\nexport const WEEKLYSAT = 'WEEKLYSAT';\nexport const WEEKLYSUN = 'WEEKLYSUN';\nexport const WEEKS_THIS_YEAR = 'WEEKS_THIS_YEAR';\nexport const BIWEEKLY = 'BIWEEKLY';\nexport const MONTHLY = 'MONTHLY';\nexport const BIMONTHLY = 'BIMONTHLY';\nexport const QUARTERLY = 'QUARTERLY';\nexport const SIXMONTHLY = 'SIXMONTHLY';\nexport const SIXMONTHLYAPR = 'SIXMONTHLYAPR';\nexport const YEARLY = 'YEARLY';\nexport const FINANCIAL = 'FINANCIAL';\nexport const FYNOV = 'FYNOV';\nexport const FYOCT = 'FYOCT';\nexport const FYJUL = 'FYJUL';\nexport const FYAPR = 'FYAPR';\n","import i18n from '@dhis2/d2-i18n';\nimport {\n DAILY,\n WEEKLY,\n BIWEEKLY,\n WEEKS_THIS_YEAR,\n MONTHLY,\n BIMONTHLY,\n QUARTERLY,\n SIXMONTHLY,\n FINANCIAL,\n YEARLY,\n} from './periodTypes';\n\nconst getDaysPeriodType = () => [\n { id: 'TODAY', name: i18n.t('Today') },\n { id: 'YESTERDAY', name: i18n.t('Yesterday') },\n { id: 'LAST_3_DAYS', name: i18n.t('Last 3 days') },\n { id: 'LAST_7_DAYS', name: i18n.t('Last 7 days') },\n { id: 'LAST_14_DAYS', name: i18n.t('Last 14 days') },\n { id: 'LAST_30_DAYS', name: i18n.t('Last 30 days') },\n { id: 'LAST_60_DAYS', name: i18n.t('Last 60 days') },\n { id: 'LAST_90_DAYS', name: i18n.t('Last 90 days') },\n { id: 'LAST_180_DAYS', name: i18n.t('Last 180 days') },\n];\n\nconst getWeeksPeriodType = () => [\n { id: 'THIS_WEEK', name: i18n.t('This week') },\n { id: 'LAST_WEEK', name: i18n.t('Last week') },\n { id: 'LAST_4_WEEKS', name: i18n.t('Last 4 weeks') },\n { id: 'LAST_12_WEEKS', name: i18n.t('Last 12 weeks') },\n { id: 'LAST_52_WEEKS', name: i18n.t('Last 52 weeks') },\n { id: WEEKS_THIS_YEAR, name: i18n.t('Weeks this year') },\n];\n\nconst getBiWeeksPeriodType = () => [\n { id: 'THIS_BIWEEK', name: i18n.t('This bi-week') },\n { id: 'LAST_BIWEEK', name: i18n.t('Last bi-week') },\n { id: 'LAST_4_BIWEEKS', name: i18n.t('Last 4 bi-weeks') },\n];\n\nconst getMonthsPeriodType = () => [\n { id: 'THIS_MONTH', name: i18n.t('This month') },\n { id: 'LAST_MONTH', name: i18n.t('Last month') },\n { id: 'LAST_3_MONTHS', name: i18n.t('Last 3 months') },\n { id: 'LAST_6_MONTHS', name: i18n.t('Last 6 months') },\n { id: 'LAST_12_MONTHS', name: i18n.t('Last 12 months') },\n {\n id: 'MONTHS_THIS_YEAR',\n name: i18n.t('Months this year'),\n },\n];\n\nconst getBiMonthsPeriodType = () => [\n { id: 'THIS_BIMONTH', name: i18n.t('This bi-month') },\n { id: 'LAST_BIMONTH', name: i18n.t('Last bi-month') },\n {\n id: 'LAST_6_BIMONTHS',\n name: i18n.t('Last 6 bi-months'),\n },\n {\n id: 'BIMONTHS_THIS_YEAR',\n name: i18n.t('Bi-months this year'),\n },\n];\n\nconst getQuartersPeriodType = () => [\n { id: 'THIS_QUARTER', name: i18n.t('This quarter') },\n { id: 'LAST_QUARTER', name: i18n.t('Last quarter') },\n { id: 'LAST_4_QUARTERS', name: i18n.t('Last 4 quarters') },\n {\n id: 'QUARTERS_THIS_YEAR',\n name: i18n.t('Quarters this year'),\n },\n];\n\nconst getSixMonthsPeriodType = () => [\n { id: 'THIS_SIX_MONTH', name: i18n.t('This six-month') },\n { id: 'LAST_SIX_MONTH', name: i18n.t('Last six-month') },\n {\n id: 'LAST_2_SIXMONTHS',\n name: i18n.t('Last 2 six-month'),\n },\n];\n\nconst getFinancialYearsPeriodType = () => [\n {\n id: 'THIS_FINANCIAL_YEAR',\n name: i18n.t('This financial year'),\n },\n {\n id: 'LAST_FINANCIAL_YEAR',\n name: i18n.t('Last financial year'),\n },\n {\n id: 'LAST_5_FINANCIAL_YEARS',\n name: i18n.t('Last 5 financial years'),\n },\n];\n\nconst getYearsPeriodType = () => [\n { id: 'THIS_YEAR', name: i18n.t('This year') },\n { id: 'LAST_YEAR', name: i18n.t('Last year') },\n { id: 'LAST_5_YEARS', name: i18n.t('Last 5 years') },\n { id: 'LAST_10_YEARS', name: i18n.t('Last 10 years') },\n];\n\nconst getOptions = () => [\n {\n id: DAILY,\n getPeriods: () => getDaysPeriodType(),\n name: i18n.t('Days'),\n },\n {\n id: WEEKLY,\n getPeriods: () => getWeeksPeriodType(),\n name: i18n.t('Weeks'),\n },\n {\n id: BIWEEKLY,\n getPeriods: () => getBiWeeksPeriodType(),\n name: i18n.t('Bi-weeks'),\n },\n {\n id: MONTHLY,\n getPeriods: () => getMonthsPeriodType(),\n name: i18n.t('Months'),\n },\n {\n id: BIMONTHLY,\n getPeriods: () => getBiMonthsPeriodType(),\n name: i18n.t('Bi-months'),\n },\n {\n id: QUARTERLY,\n getPeriods: () => getQuartersPeriodType(),\n name: i18n.t('Quarters'),\n },\n {\n id: SIXMONTHLY,\n getPeriods: () => getSixMonthsPeriodType(),\n name: i18n.t('Six-months'),\n },\n {\n id: FINANCIAL,\n getPeriods: () => getFinancialYearsPeriodType(),\n name: i18n.t('Financial Years'),\n },\n {\n id: YEARLY,\n getPeriods: () => getYearsPeriodType(),\n name: i18n.t('Years'),\n },\n];\n\nexport const getRelativePeriodsOptionsById = (id: string) =>\n getOptions().find((option) => option.id === id);\n\nexport const getRelativePeriodsOptions = () => getOptions();\n\nexport const getRelativePeriodIds = () =>\n Object.values(getOptions())\n .map((option) => option.getPeriods().map((period) => period.id))\n .flat();\n","import {\n generateFixedPeriods,\n getNowInCalendar,\n} from '@dhis2/multi-calendar-dates';\nimport i18n from '@dhis2/d2-i18n';\nimport {\n DAILY,\n WEEKLY,\n WEEKLYWED,\n WEEKLYTHU,\n WEEKLYSAT,\n WEEKLYSUN,\n BIWEEKLY,\n MONTHLY,\n BIMONTHLY,\n QUARTERLY,\n SIXMONTHLY,\n SIXMONTHLYAPR,\n YEARLY,\n FYNOV,\n FYOCT,\n FYJUL,\n FYAPR,\n} from './periodTypes';\n\nconst PERIOD_TYPE_REGEX = {\n [DAILY]: /^([0-9]{4})([0-9]{2})([0-9]{2})$/, // YYYYMMDD\n [WEEKLY]: /^([0-9]{4})()W([0-9]{1,2})$/, // YYYY\"W\"[1-53]\n [BIWEEKLY]: /^([0-9]{4})BiW([0-9]{1,2})$/, // YYYY\"BiW\"[1-27]\n [WEEKLYWED]: /^([0-9]{4})(Wed)W([0-9]{1,2})$/, // YYYY\"WedW\"[1-53]\n [WEEKLYTHU]: /^([0-9]{4})(Thu)W([0-9]{1,2})$/, // YYYY\"ThuW\"[1-53]\n [WEEKLYSAT]: /^([0-9]{4})(Sat)W([0-9]{1,2})$/, // YYYY\"SatW\"[1-53]\n [WEEKLYSUN]: /^([0-9]{4})(Sun)W([0-9]{1,2})$/, // YYYY\"SunW\"[1-53]\n [MONTHLY]: /^([0-9]{4})([0-9]{2})$/, // YYYYMM\n [BIMONTHLY]: /^([0-9]{4})([0-9]{2})B$/, // YYYY0[1-6]\"B\"\n [QUARTERLY]: /^([0-9]{4})Q([1234])$/, // YYYY\"Q\"[1-4]\n [SIXMONTHLY]: /^([0-9]{4})S([12])$/, // YYYY\"S\"[1/2]\n [SIXMONTHLYAPR]: /^([0-9]{4})AprilS([12])$/, // YYYY\"AprilS\"[1/2]\n // [SIXMONTHLYNOV]: /^([0-9]{4})NovS([12])$/, // YYYY\"NovS\"[1/2] Not supported?\n [YEARLY]: /^([0-9]{4})$/, // YYYY\n [FYNOV]: /^([0-9]{4})Nov$/, // YYYY\"Nov\"\n [FYOCT]: /^([0-9]{4})Oct$/, // YYYY\"Oct\"\n [FYJUL]: /^([0-9]{4})July$/, // YYYY\"July\"\n [FYAPR]: /^([0-9]{4})April$/, // YYYY\"April\"\n};\n\nconst getPeriods = ({\n periodType,\n config,\n fnFilter,\n periodSettings = {},\n}: any) => {\n const offset = parseInt(config.offset, 10);\n const isFilter = config.filterFuturePeriods;\n const isReverse = periodType.match(/^FY|YEARLY/)\n ? true\n : config.reversePeriods;\n\n const { calendar = 'gregory', locale = 'en' } = periodSettings as any;\n const now = getNowInCalendar(calendar);\n const year = (now.eraYear || now.year) + offset;\n\n const params = {\n periodType,\n year,\n calendar,\n locale,\n startingDay: config.startDay,\n };\n\n let periods = generateFixedPeriods(params);\n\n periods = isFilter ? fnFilter(periods) : periods;\n periods = !isReverse ? periods : periods.reverse();\n\n return periods;\n};\n\nconst getDailyPeriodType = (fnFilter: any, periodSettings?: any) => {\n return (config: any) => {\n return getPeriods({\n periodType: 'DAILY',\n config,\n fnFilter,\n periodSettings,\n });\n };\n};\n\nconst getWeeklyPeriodType = (\n weekObj: any,\n fnFilter: any,\n periodSettings: any\n) => {\n return (config: any) => {\n return getPeriods({\n periodType: 'WEEKLY',\n config: {\n ...config,\n startDay: weekObj.startDay,\n },\n fnFilter,\n periodSettings,\n });\n };\n};\n\nconst getBiWeeklyPeriodType = (fnFilter: any, periodSettings: any) => {\n return (config: any) => {\n return getPeriods({\n periodType: 'BIWEEKLY',\n config,\n fnFilter,\n periodSettings,\n });\n };\n};\n\nconst getMonthlyPeriodType = (fnFilter: any, periodSettings: any) => {\n return (config: any) => {\n return getPeriods({\n periodType: 'MONTHLY',\n config,\n fnFilter,\n periodSettings,\n });\n };\n};\n\nconst getBiMonthlyPeriodType = (fnFilter: any, periodSettings: any) => {\n return (config: any) => {\n return getPeriods({\n periodType: 'BIMONTHLY',\n config,\n fnFilter,\n periodSettings,\n });\n };\n};\n\nconst getQuarterlyPeriodType = (fnFilter: any, periodSettings: any) => {\n return (config: any) => {\n return getPeriods({\n periodType: 'QUARTERLY',\n config,\n fnFilter,\n periodSettings,\n });\n };\n};\n\nconst getSixMonthlyPeriodType = (fnFilter: any, periodSettings: any) => {\n return (config: any) => {\n return getPeriods({\n periodType: 'SIXMONTHLY',\n config,\n fnFilter,\n periodSettings,\n });\n };\n};\n\nconst getSixMonthlyAprilPeriodType = (fnFilter: any, periodSettings: any) => {\n return (config: any) => {\n return getPeriods({\n periodType: 'SIXMONTHLYAPR',\n config,\n fnFilter,\n periodSettings,\n });\n };\n};\n\nconst getYearlyPeriodType = (fnFilter: any, periodSettings: any) => {\n return (config: any) => {\n return getPeriods({\n periodType: 'YEARLY',\n config,\n fnFilter,\n periodSettings,\n });\n };\n};\n\nconst getFinancialOctoberPeriodType = (fnFilter: any, periodSettings: any) => {\n return (config: any) => {\n return getPeriods({\n periodType: 'FYOCT',\n config,\n fnFilter,\n periodSettings,\n });\n };\n};\n\nconst getFinancialNovemberPeriodType = (fnFilter: any, periodSettings: any) => {\n return (config: any) => {\n return getPeriods({\n periodType: 'FYNOV',\n config,\n fnFilter,\n periodSettings,\n });\n };\n};\n\nconst getFinancialJulyPeriodType = (fnFilter: any, periodSettings: any) => {\n return (config: any) => {\n return getPeriods({\n periodType: 'FYJUL',\n config,\n fnFilter,\n periodSettings,\n });\n };\n};\n\nconst getFinancialAprilPeriodType = (fnFilter: any, periodSettings: any) => {\n return (config: any) => {\n return getPeriods({\n periodType: 'FYAPR',\n config,\n fnFilter,\n periodSettings,\n });\n };\n};\n\nconst filterFuturePeriods = (periods: any) => {\n const array = [];\n const now = new Date(Date.now());\n\n for (let i = 0; i < periods.length; i++) {\n if (new Date(periods[i].startDate) <= now) {\n array.push(periods[i]);\n }\n }\n\n return array;\n};\n\nconst getOptions = (periodSettings?: any) => {\n return [\n {\n id: DAILY,\n getPeriods: getDailyPeriodType(filterFuturePeriods, periodSettings),\n name: i18n.t('Daily'),\n },\n {\n id: WEEKLY,\n getPeriods: getWeeklyPeriodType(\n { startDay: 1 },\n filterFuturePeriods,\n periodSettings\n ),\n name: i18n.t('Weekly'),\n },\n {\n id: WEEKLYWED,\n getPeriods: getWeeklyPeriodType(\n { startDay: 3 },\n filterFuturePeriods,\n periodSettings\n ),\n name: i18n.t('Weekly (Start Wednesday)'),\n },\n {\n id: WEEKLYTHU,\n getPeriods: getWeeklyPeriodType(\n { startDay: 4 },\n filterFuturePeriods,\n periodSettings\n ),\n name: i18n.t('Weekly (Start Thursday)'),\n },\n {\n id: WEEKLYSAT,\n getPeriods: getWeeklyPeriodType(\n { startDay: 6 },\n filterFuturePeriods,\n periodSettings\n ),\n name: i18n.t('Weekly (Start Saturday)'),\n },\n {\n id: WEEKLYSUN,\n getPeriods: getWeeklyPeriodType(\n { startDay: 7 },\n filterFuturePeriods,\n periodSettings\n ),\n name: i18n.t('Weekly (Start Sunday)'),\n },\n {\n id: BIWEEKLY,\n getPeriods: getBiWeeklyPeriodType(filterFuturePeriods, periodSettings),\n name: i18n.t('Bi-weekly'),\n },\n {\n id: MONTHLY,\n getPeriods: getMonthlyPeriodType(filterFuturePeriods, periodSettings),\n name: i18n.t('Monthly'),\n },\n {\n id: BIMONTHLY,\n getPeriods: getBiMonthlyPeriodType(filterFuturePeriods, periodSettings),\n name: i18n.t('Bi-monthly'),\n },\n {\n id: QUARTERLY,\n getPeriods: getQuarterlyPeriodType(filterFuturePeriods, periodSettings),\n name: i18n.t('Quarterly'),\n },\n {\n id: SIXMONTHLY,\n getPeriods: getSixMonthlyPeriodType(filterFuturePeriods, periodSettings),\n name: i18n.t('Six-monthly'),\n },\n {\n id: SIXMONTHLYAPR,\n getPeriods: getSixMonthlyAprilPeriodType(\n filterFuturePeriods,\n periodSettings\n ),\n name: i18n.t('Six-monthly April'),\n },\n {\n id: YEARLY,\n getPeriods: getYearlyPeriodType(filterFuturePeriods, periodSettings),\n name: i18n.t('Yearly'),\n },\n {\n id: FYNOV,\n getPeriods: getFinancialNovemberPeriodType(\n filterFuturePeriods,\n periodSettings\n ),\n name: i18n.t('Financial year (Start November)'),\n },\n {\n id: FYOCT,\n getPeriods: getFinancialOctoberPeriodType(\n filterFuturePeriods,\n periodSettings\n ),\n name: i18n.t('Financial year (Start October)'),\n },\n {\n id: FYJUL,\n getPeriods: getFinancialJulyPeriodType(\n filterFuturePeriods,\n periodSettings\n ),\n name: i18n.t('Financial year (Start July)'),\n },\n {\n id: FYAPR,\n getPeriods: getFinancialAprilPeriodType(\n filterFuturePeriods,\n periodSettings\n ),\n name: i18n.t('Financial year (Start April)'),\n },\n ];\n};\n\nexport const getFixedPeriodsOptionsById = (\n id: string,\n periodSettings?: any\n) => {\n return getOptions(periodSettings).find((option) => option.id === id);\n};\n\nexport const getFixedPeriodsOptions = () => getOptions();\n\nexport const getYearOffsetFromNow = (yearStr: any) =>\n parseInt(yearStr) - new Date(Date.now()).getFullYear();\n\nexport const parsePeriodCode = (code: any, allowedTypes: any) => {\n const periodTypes = Object.keys(PERIOD_TYPE_REGEX);\n let i = 0;\n let type = '';\n let match = undefined;\n\n while (i < periodTypes.length && !match) {\n type = periodTypes[i];\n match = code.match((PERIOD_TYPE_REGEX as any)[type]);\n i++;\n }\n\n if (\n !match ||\n (Array.isArray(allowedTypes) && !allowedTypes.some((t) => t === type))\n ) {\n return undefined;\n }\n\n const period = getFixedPeriodsOptionsById(type);\n const offset = getYearOffsetFromNow(match[1]);\n const options = period?.getPeriods({ offset });\n\n return period\n ? {\n id: period.id,\n name: period.name,\n year: match[1],\n options,\n }\n : null;\n};\n","export const filterPeriodTypesById = (\n allPeriodTypes = [],\n excludedPeriodTypes = []\n) =>\n allPeriodTypes.filter(\n (period: unknown) => !excludedPeriodTypes.includes((period as never)['id'])\n );\n\nexport * from './relativePeriods';\nexport * from './fixedPeriods';\nexport * from './periodTypes';\n","import i18n from '@dhis2/d2-i18n';\nimport {\n InputField,\n SingleSelectField,\n SingleSelectOption,\n spacers,\n} from '@dhis2/ui';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { filterPeriodTypesById, getFixedPeriodsOptions } from './utils';\n\nconst FixedPeriodFilter = ({\n allowedPeriodTypes,\n excludedPeriodTypes,\n currentPeriodType,\n currentYear,\n onSelectPeriodType,\n onSelectYear,\n dataTest,\n}: any) => {\n const onlyAllowedTypeIsSelected =\n Array.isArray(allowedPeriodTypes) &&\n allowedPeriodTypes.length === 1 &&\n allowedPeriodTypes[0] === currentPeriodType;\n\n return (\n <>\n <div className=\"leftSection\">\n <SingleSelectField\n label={i18n.t('Period type')}\n onChange={({ selected }: any) => onSelectPeriodType(selected)}\n dense\n selected={currentPeriodType}\n disabled={onlyAllowedTypeIsSelected}\n className=\"filterElement\"\n dataTest={`${dataTest}-period-type`}\n >\n {(allowedPeriodTypes\n ? getFixedPeriodsOptions().filter((option: any) =>\n allowedPeriodTypes.some((type: any) => type === option.id)\n )\n : filterPeriodTypesById(\n getFixedPeriodsOptions() as any,\n excludedPeriodTypes\n )\n ).map((option) => (\n <SingleSelectOption\n key={crypto.randomUUID() || option.id}\n value={option.id}\n label={option.name}\n dataTest={`${dataTest}-period-type-option-${option.id}`}\n />\n ))}\n </SingleSelectField>\n </div>\n <div className=\"rightSection\">\n <InputField\n label={i18n.t('Year')}\n className=\"filterElement\"\n type=\"number\"\n placeholder={i18n.t('Select year')}\n value={currentYear}\n onChange={({ value }: any) => onSelectYear(value)}\n dense\n dataTest={`${dataTest}-year`}\n ></InputField>\n </div>\n <style jsx>{`\n .leftSection {\n flex-grow: 1;\n }\n .leftSection > :global(.filterElement),\n .rightSection > :global(.filterElement) {\n margin: 0;\n }\n .rightSection {\n width: 120px;\n margin-left: ${spacers.dp8};\n }\n `}</style>\n </>\n );\n};\n\nFixedPeriodFilter.defaultProps = {\n excludedPeriodTypes: [],\n};\n\nFixedPeriodFilter.propTypes = {\n currentPeriodType: PropTypes.string.isRequired,\n currentYear: PropTypes.string.isRequired,\n onSelectPeriodType: PropTypes.func.isRequired,\n onSelectYear: PropTypes.func.isRequired,\n allowedPeriodTypes: PropTypes.arrayOf(PropTypes.string),\n dataTest: PropTypes.string,\n excludedPeriodTypes: PropTypes.arrayOf(PropTypes.string),\n};\n\nexport default FixedPeriodFilter;\n","import { SingleSelectField, SingleSelectOption } from '@dhis2/ui';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport i18n from '@dhis2/d2-i18n';\nimport { filterPeriodTypesById, getRelativePeriodsOptions } from './utils';\nimport { spacers } from '@dhis2/ui';\n\nexport const RelativePeriodFilter = ({\n currentFilter,\n onSelectFilter,\n dataTest,\n excludedPeriodTypes,\n}: any) => (\n <div className=\"leftSection\">\n <SingleSelectField\n label={i18n.t('Period type')}\n onChange={({ selected }: any) => onSelectFilter(selected)}\n dense\n selected={currentFilter}\n className=\"filterElement\"\n dataTest={dataTest}\n >\n {filterPeriodTypesById(\n getRelativePeriodsOptions() as any,\n excludedPeriodTypes\n ).map((option: any) => (\n <SingleSelectOption\n key={crypto.randomUUID() || option.id}\n value={option.id}\n label={option.name}\n dataTest={`${dataTest}-option-${option.id}`}\n />\n ))}\n </SingleSelectField>\n <style jsx>{`\n .leftSection {\n flex-grow: 1;\n }\n .leftSection > :global(.filterElement),\n .rightSection > :global(.filterElement) {\n margin: 0;\n }\n .rightSection {\n width: 120px;\n margin-left: ${spacers.dp8};\n }\n `}</style>\n </div>\n);\n\nRelativePeriodFilter.propTypes = {\n currentFilter: PropTypes.string.isRequired,\n onSelectFilter: PropTypes.func.isRequired,\n dataTest: PropTypes.string,\n excludedPeriodTypes: PropTypes.arrayOf(PropTypes.string),\n};\n","import React from 'react';\n\nexport default (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n >\n <path\n fill=\"#6E7A8A\"\n d=\"M8,4 C10.209139,4 12,5.790861 12,8 C12,10.209139 10.209139,12 8,12 C5.790861,12 4,10.209139 4,8 C4,5.790861 5.790861,4 8,4 Z M8,5 C6.34314575,5 5,6.34314575 5,8 C5,9.65685425 6.34314575,11 8,11 C9.65685425,11 11,9.65685425 11,8 C11,6.34314575 9.65685425,5 8,5 Z M8.5,6 L8.5,7.5 L9.5,7.5 L9.5,8.5 L7.5,8.5 L7.5,6 L8.5,6 Z\"\n />\n </svg>\n);\n","import { getNowInCalendar } from '@dhis2/multi-calendar-dates';\nimport { TabBar, Tab, Transfer } from '@dhis2/ui';\nimport PropTypes from 'prop-types';\nimport React, { useState } from 'react';\nimport i18n from '@dhis2/d2-i18n';\nimport {\n TRANSFER_HEIGHT,\n TRANSFER_OPTIONS_WIDTH,\n TRANSFER_SELECTED_WIDTH,\n TransferOption,\n} from '../../../shared';\nimport styles from '../../../shared/styles/DimensionSelector.style';\nimport FixedPeriodFilter from './FixedPeriodFilter';\nimport { RelativePeriodFilter } from './RelativePeriodFilter';\n\nimport {\n MONTHLY,\n QUARTERLY,\n getRelativePeriodsOptionsById,\n getFixedPeriodsOptionsById,\n} from './utils';\nimport PeriodIcon from '../../../shared/assets/DimensionItemIcons/PeriodIcon';\n\nconst PeriodTransfer = ({\n onSelect,\n dataTest,\n initialSelectedPeriods,\n rightFooter,\n excludedPeriodTypes,\n periodsSettings,\n}: any) => {\n const defaultRelativePeriodType = excludedPeriodTypes.includes(MONTHLY)\n ? getRelativePeriodsOptionsById(QUARTERLY)\n : getRelativePeriodsOptionsById(MONTHLY);\n const defaultFixedPeriodType = excludedPeriodTypes.includes(MONTHLY)\n ? getFixedPeriodsOptionsById(QUARTERLY, periodsSettings)\n : getFixedPeriodsOptionsById(MONTHLY, periodsSettings);\n\n const now = getNowInCalendar(periodsSettings.calendar);\n // use \".eraYear\" rather than \".year\" because in Ethiopian calendar, eraYear is what our users expect to see (for other calendars, it doesn't matter)\n // there is still a pending decision in Temporal regarding which era to use by default: https://github.com/js-temporal/temporal-polyfill/blob/9350ee7dd0d29f329fc097debf923a517c32f813/lib/calendar.ts#L1964\n const defaultFixedPeriodYear = now.eraYear || now.year;\n\n const fixedPeriodConfig = (year: any) => ({\n offset: year - defaultFixedPeriodYear,\n filterFuturePeriods: false,\n reversePeriods: false,\n });\n\n const [allPeriods, setAllPeriods] = useState(\n defaultRelativePeriodType?.getPeriods() || []\n );\n const [selectedPeriods, setSelectedPeriods] = useState(\n initialSelectedPeriods\n );\n const [isRelative, setIsRelative] = useState(true);\n const [relativeFilter, setRelativeFilter] = useState({\n periodType: defaultRelativePeriodType?.id || '',\n });\n const [fixedFilter, setFixedFilter] = useState({\n periodType: defaultFixedPeriodType?.id || '',\n year: defaultFixedPeriodYear.toString(),\n });\n\n const onIsRelativeClick = (state: any) => {\n if (state !== isRelative) {\n setIsRelative(state);\n setAllPeriods(\n state\n ? getRelativePeriodsOptionsById(\n relativeFilter.periodType\n )?.getPeriods() || []\n : getFixedPeriodsOptionsById(\n fixedFilter.periodType,\n periodsSettings\n )?.getPeriods(fixedPeriodConfig(Number(fixedFilter.year))) || []\n );\n }\n };\n\n const renderLeftHeader = () => (\n <>\n <TabBar>\n <Tab\n selected={isRelative}\n onClick={() => onIsRelativeClick(true)}\n dataTest={`${dataTest}-relative-periods-button`}\n >\n {i18n.t('Relative periods')}\n </Tab>\n <Tab\n selected={!isRelative}\n onClick={() => onIsRelativeClick(false)}\n dataTest={`${dataTest}-fixed-periods-button`}\n >\n {i18n.t('Fixed periods')}\n </Tab>\n </TabBar>\n <div className=\"filterContainer\">\n {isRelative ? (\n <RelativePeriodFilter\n currentFilter={relativeFilter.periodType}\n onSelectFilter={(filter: any) => {\n setRelativeFilter({ periodType: filter });\n setAllPeriods(\n getRelativePeriodsOptionsById(filter)?.getPeriods() || []\n );\n }}\n dataTest={`${dataTest}-relative-period-filter`}\n excludedPeriodTypes={excludedPeriodTypes}\n />\n ) : (\n <FixedPeriodFilter\n currentPeriodType={fixedFilter.periodType}\n currentYear={fixedFilter.year}\n onSelectPeriodType={(periodType: string) => {\n onSelectFixedPeriods({\n periodType,\n year: fixedFilter.year,\n });\n }}\n onSelectYear={(year: any) => {\n onSelectFixedPeriods({\n periodType: fixedFilter.periodType,\n year,\n });\n }}\n dataTest={`${dataTest}-fixed-period-filter`}\n excludedPeriodTypes={excludedPeriodTypes}\n />\n )}\n </div>\n <style jsx>{styles}</style>\n </>\n );\n\n const renderRightHeader = () => (\n <>\n <p className=\"rightHeader\">{i18n.t('Selected Periods')}</p>\n <style jsx>{styles}</style>\n </>\n );\n\n const onSelectFixedPeriods = (filter: any) => {\n setFixedFilter(filter);\n setAllPeriods(\n (getFixedPeriodsOptionsById(\n filter.periodType,\n periodsSettings\n )?.getPeriods(fixedPeriodConfig(Number(filter.year))) || []) as any\n );\n };\n\n const renderEmptySelection = () => (\n <>\n <p className=\"emptyList\">{i18n.t('No periods selected')}</p>\n <style jsx>{styles}</style>\n </>\n );\n\n return (\n <Transfer\n onChange={({ selected }: any) => {\n const formattedItems = selected.map((id: string) => ({\n id,\n name: [...allPeriods, ...selectedPeriods].find(\n (item) => item.id === id\n ).name,\n }));\n setSelectedPeriods(formattedItems);\n onSelect(formattedItems);\n }}\n selected={selectedPeriods.map((period: any) => period.id)}\n leftHeader={renderLeftHeader()}\n enableOrderChange\n height={TRANSFER_HEIGHT}\n optionsWidth={TRANSFER_OPTIONS_WIDTH}\n selectedWidth={TRANSFER_SELECTED_WIDTH}\n selectedEmptyComponent={renderEmptySelection()}\n rightHeader={renderRightHeader()}\n rightFooter={rightFooter}\n options={[...allPeriods, ...selectedPeriods].map(({ id, name }) => ({\n label: name,\n value: id,\n }))}\n renderOption={(props: any) => (\n <TransferOption\n {...props}\n icon={PeriodIcon}\n dataTest={`${dataTest}-transfer-option`}\n />\n )}\n dataTest={`${dataTest}-transfer`}\n ></Transfer>\n );\n};\n\nPeriodTransfer.defaultProps = {\n initialSelectedPeriods: [],\n excludedPeriodTypes: [],\n periodsSettings: {\n calendar: 'gregory',\n locale: 'en',\n },\n};\n\nPeriodTransfer.propTypes = {\n onSelect: PropTypes.func.isRequired,\n dataTest: PropTypes.string,\n excludedPeriodTypes: PropTypes.arrayOf(PropTypes.string),\n initialSelectedPeriods: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string,\n })\n ),\n periodsSettings: PropTypes.shape({\n calendar: PropTypes.string,\n locale: PropTypes.string,\n }),\n rightFooter: PropTypes.node,\n};\n\nexport default PeriodTransfer;\n","import { useDataQuery } from '@dhis2/app-runtime';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { DIMENSION_ID_PERIOD } from '../../../shared/utils/predefinedDimensions';\nimport PeriodTransfer from './PeriodTransfer';\n\nconst userSettingsQuery = {\n userSettings: {\n resource: 'userSettings',\n params: {\n key: ['keyUiLocale'],\n },\n },\n};\n\nexport const PeriodDimension = ({\n onSelect,\n selectedPeriods,\n rightFooter,\n excludedPeriodTypes,\n systemInfo,\n}: any) => {\n const result = useDataQuery(userSettingsQuery);\n\n const { calendar = 'gregory' } = systemInfo as any;\n // const { data: { userSettings: { keyUiLocale: locale } = {} } = {} } =\n // result as any;\n\n const locale =\n result.data && result.data['userSettings']\n ? (result.data['userSettings'] as any)['keyUiLocale']\n : '';\n\n const periodsSettings = { calendar, locale };\n\n const selectPeriods = (periods: any[]) => {\n onSelect({\n dimensionId: DIMENSION_ID_PERIOD,\n items: periods,\n });\n };\n return (\n <PeriodTransfer\n onSelect={selectPeriods}\n initialSelectedPeriods={selectedPeriods}\n rightFooter={rightFooter}\n dataTest={'period-dimension'}\n excludedPeriodTypes={excludedPeriodTypes}\n periodsSettings={periodsSettings}\n />\n );\n};\n\nPeriodDimension.propTypes = {\n onSelect: PropTypes.func.isRequired,\n excludedPeriodTypes: PropTypes.arrayOf(PropTypes.string),\n rightFooter: PropTypes.node,\n selectedPeriods: PropTypes.array,\n systemInfo: PropTypes.object,\n};\n\nPeriodDimension.defaultProps = {\n selectedPeriods: [],\n};\n","import {\n Component,\n Input,\n ElementRef,\n Output,\n EventEmitter,\n} from '@angular/core';\nimport { DataProvider } from '@dhis2/app-runtime';\nimport {\n Modal,\n ModalContent,\n ModalActions,\n ButtonStrip,\n Button,\n ModalTitle,\n} from '@dhis2/ui';\nimport { NgxDhis2HttpClientService } from '@iapps/ngx-dhis2-http-client';\nimport React, { useState } from 'react';\nimport * as ReactDOM from 'react-dom/client';\nimport { firstValueFrom } from 'rxjs';\nimport { PeriodDimension } from '../../components/PeriodDimension';\nimport {\n BIMONTHLY,\n BIWEEKLY,\n DAILY,\n MONTHLY,\n WEEKLY,\n WEEKLYSAT,\n WEEKLYSUN,\n WEEKLYTHU,\n WEEKLYWED,\n} from '../../components/utils';\nimport { ReactWrapperModule } from '../../../react-wrapper/react-wrapper.component';\n\ntype PeriodSelectionEvent = {\n dimensionId: string;\n items: Record<string, unknown>[];\n};\n\n@Component({\n selector: 'ng-dhis2-ui-period-selector-modal',\n template: `<ng-container></ng-container>`,\n styles: [\n `\n ::ng-deep .layer {\n z-index: 2 !important;\n }\n `,\n ],\n standalone: false,\n})\nexport class PeriodSelectorModalComponent extends ReactWrapperModule {\n @Input() selectedPeriods: any[] = [];\n\n @Output() cancel = new EventEmitter();\n @Output() confirm = new EventEmitter();\n\n constructor(\n elementRef: ElementRef<HTMLElement>,\n private httpClient: NgxDhis2HttpClientService\n ) {\n super(elementRef);\n }\n\n override async ngAfterViewInit() {\n if (!this.elementRef) throw new Error('No element ref');\n this.reactDomRoot = ReactDOM.createRoot(this.elementRef.nativeElement);\n const systemInfo = await firstValueFrom(this.httpClient.systemInfo());\n const excludedPeriodTypes = this.getExcludedPeriodTypes(systemInfo);\n\n this.component = () => {\n const [selected, setSelected] = useState(this.selectedPeriods);\n return (\n <DataProvider>\n {\n <Modal position=\"middle\" large>\n <ModalTitle>Period</ModalTitle>\n <ModalContent>\n <PeriodDimension\n selectedPeriods={selected}\n onSelect={(selectionEvent: PeriodSelectionEvent) =>\n setSelected(selectionEvent.items)\n }\n excludedPeriodTypes={excludedPeriodTypes}\n systemInfo={systemInfo}\n />\n </ModalContent>\n <ModalActions>\n <ButtonStrip end>\n <Button\n onClick={() => {\n this.onCancel();\n }}\n >\n Cancel\n </Button>\n <Button\n primary\n disabled={selected.length === 0}\n onClick={() => {\n this.onConfirm(selected);\n }}\n >\n Confirm\n </Button>\n </ButtonStrip>\n </ModalActions>\n </Modal>\n }\n </DataProvider>\n );\n };\n this.render();\n }\n\n onCancel() {\n this.cancel.emit();\n }\n\n onConfirm(selectedItems: any[]) {\n this.confirm.emit(selectedItems);\n }\n\n getExcludedPeriodTypes = (systemSettings: any = {}) => {\n const types = [];\n if (systemSettings['hideDailyPeriods']) {\n types.push(DAILY);\n }\n if (systemSettings['hideWeeklyPeriods']) {\n types.push(WEEKLY, WEEKLYWED, WEEKLYTHU, WEEKLYSAT, WEEKLYSUN);\n }\n if (systemSettings['hideBiWeeklyPeriods']) {\n types.push(BIWEEKLY);\n }\n if (systemSettings['hideMonthlyPeriods']) {\n types.push(MONTHLY);\n }\n if (systemSettings['hideBiMonthlyPeriods']) {\n types.push(BIMONTHLY);\n }\n return types;\n };\n}\n","import {\n Component,\n Input,\n ElementRef,\n Output,\n EventEmitter,\n NgZone,\n} from '@angular/core';\nimport { DataProvider } from '@dhis2/app-runtime';\nimport { NgxDhis2HttpClientService } from '@iapps/ngx-dhis2-http-client';\nimport React from 'react';\nimport * as ReactDOM from 'react-dom/client';\nimport { firstValueFrom } from 'rxjs';\nimport { PeriodDimension } from '../../components/PeriodDimension';\nimport {\n BIMONTHLY,\n BIWEEKLY,\n DAILY,\n MONTHLY,\n WEEKLY,\n WEEKLYSAT,\n WEEKLYSUN,\n WEEKLYTHU,\n WEEKLYWED,\n} from '../../components/utils';\nimport { ReactWrapperModule } from '../../../react-wrapper/react-wrapper.component';\n\ntype PeriodSelectionEvent = {\n dimensionId: string;\n items: Record<string, unknown>[];\n};\n\n@Component({\n selector: 'ng-dhis2-ui-period-selector',\n template: `<ng-container></ng-container>`,\n styles: [\n `\n ::ng-deep .content-container {\n z-index: 0 !important;\n }\n `,\n ],\n standalone: false,\n})\nexport class PeriodSelectorComponent extends ReactWrapperModule {\n @Input() selectedPeriods: any[] = [];\n\n @Output() selectPeriods = new EventEmitter();\n\n override props: Record<string, unknown> = {\n onSelect: (e: any) => {\n this.onSelectItems(e);\n },\n };\n\n constructor(\n elementRef: ElementRef<HTMLElement>,\n private httpClient: NgxDhis2HttpClientService,\n private ngZone: NgZone\n ) {\n super(elementRef);\n }\n\n override async ngAfterViewInit() {\n if (!this.elementRef) throw new Error('No element ref');\n this.reactDomRoot = ReactDOM.createRoot(this.elementRef.nativeElement);\n const systemInfo = await firstValueFrom(this.httpClient.systemInfo());\n const excludedPeriodTypes = this.getExcludedPeriodTypes(systemInfo);\n\n this.component = () => (\n <DataProvider>\n {\n <PeriodDimension\n selectedPeriods={this.selectedPeriods}\n onSelect={(selectionEvent: PeriodSelectionEvent) =>\n this.ngZone.run(() => {\n this.onSelectItems(selectionEvent);\n })\n }\n excludedPeriodTypes={excludedPeriodTypes}\n systemInfo={systemInfo}\n />\n }\n </DataProvider>\n );\n this.render();\n }\n\n onSelectItems(selectionEvent: PeriodSelectionEvent) {\n this.selectPeriods.emit(selectionEvent.items);\n }\n\n getExcludedPeriodTypes = (systemSettings: any = {}) => {\n const types = [];\n if (systemSettings['hideDailyPeriods']) {\n types.push(DAILY);\n }\n if (systemSettings['hideWeeklyPeriods']) {\n types.push(WEEKLY, WEEKLYWED, WEEKLYTHU, WEEKLYSAT, WEEKLYSUN);\n }\n if (systemSettings['hideBiWeeklyPeriods']) {\n types.push(BIWEEKLY);\n }\n if (systemSettings['hideMonthlyPeriods']) {\n types.push(MONTHLY);\n }\n if (systemSettings['hideBiMonthlyPeriods']) {\n types.push(BIMONTHLY);\n }\n return types;\n };\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SharedDhis2UiModule } from '../../shared/shared.module';\nimport { PeriodSelectorModalComponent } from './containers/period-selector-modal/period-selector-modal.component';\nimport { PeriodSelectorComponent } from './containers/period-selector/period-selector.component';\n\n@NgModule({\n imports: [CommonModule, SharedDhis2UiModule],\n declarations: [PeriodSelectorComponent, PeriodSelectorModalComponent],\n exports: [PeriodSelectorComponent, PeriodSelectorModalComponent],\n})\nexport class PeriodSelectorModule {}\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './period-selector.module';\nexport { PeriodSelectorComponent } from './containers/period-selector/period-selector.component';\nexport { PeriodSelectorModalComponent } from './containers/period-selector-modal/period-selector-modal.component';\n","const LEVEL_ID_PREFIX = 'LEVEL';\nconst GROUP_ID_PREFIX = 'OU_GROUP';\nexport const USER_ORG_UNIT = 'USER_ORGUNIT';\nexport const USER_ORG_UNIT_CHILDREN = 'USER_ORGUNIT_CHILDREN';\nexport const USER_ORG_UNIT_GRANDCHILDREN = 'USER_ORGUNIT_GRANDCHILDREN';\n\nconst hasGroupPrefix = (id: string) =>\n id.substr(0, GROUP_ID_PREFIX.length) === GROUP_ID_PREFIX;\n\nconst hasLevelPrefix = (id: string) => id.includes(LEVEL_ID_PREFIX);\n\nconst stripLevelPrefix = (id: string) =>\n hasLevelPrefix(id) ? id.substr(LEVEL_ID_PREFIX.length + 1) : id;\n\nconst stripGroupPrefix = (id: string) =>\n hasGroupPrefix(id) ? id.substr(GROUP_ID_PREFIX.length + 1) : id;\n\nconst removePrefix = (id: string) => stripGroupPrefix(stripLevelPrefix(id));\n\nexport const ouIdHelper = Object.freeze({\n addLevelPrefix: (id: string) => `${LEVEL_ID_PREFIX}-${removePrefix(id)}`,\n addGroupPrefix: (id: string) => `${GROUP_ID_PREFIX}-${removePrefix(id)}`,\n removePrefix,\n hasGroupPrefix,\n hasLevelPrefix,\n});\n","import {\n DIMENSION_ID_ORGUNIT,\n dimensionGetItems,\n layoutGetDimension,\n layoutReplaceDimension,\n} from '../../../../../shared';\n\nimport { ouIdHelper } from '../ouIdHelper';\n\nconst isOuLevelIntId = (id: string) =>\n ouIdHelper.hasLevelPrefix(id)\n ? Number.isInteger(parseInt(ouIdHelper.removePrefix(id), 10))\n : false;\n\nconst replaceNumericOuLevelWithUid = (ouLevels: any) => (item: any) => {\n if (!isOuLevelIntId(item.id)) {\n return item;\n }\n\n const ouIntId = parseInt(ouIdHelper.removePrefix(item.id), 10);\n const ouUid = ouLevels.find(\n (l: any) => parseInt(l.level, 10) === ouIntId\n )?.id;\n\n return ouUid\n ? Object.assign({}, item, { id: ouIdHelper.addLevelPrefix(ouUid) })\n : item;\n};\n\nexport const convertOuLevelsToUids = (ouLevels: any, layout: any) => {\n const ouDimension = layoutGetDimension(layout, DIMENSION_ID_ORGUNIT);\n\n const hasNumericOuLevels =\n ouDimension &&\n dimensionGetItems(ouDimension).some((item: any) => isOuLevelIntId(item.id));\n\n if (hasNumericOuLevels) {\n const replaceNumericOuLevel = replaceNumericOuLevelWithUid(ouLevels);\n\n const updatedOuItems = dimensionGetItems(ouDimension).map(\n replaceNumericOuLevel\n );\n\n return layoutReplaceDimension(layout, DIMENSION_ID_ORGUNIT, updatedOuItems);\n }\n\n return layout;\n};\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './ouIdHelper';\nexport * from './ouLevelUtils';\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nexport * from './OrgUnitDimension';\nexport * from './utils';\n","import { colors, spacers } from '@dhis2/ui';\n\nexport const styles = `\n .container {\n height: 100%;\n display: flex;\n flex-direction: column;\n }\n\n .orgUnitTreeWrapper {\n height: 382px;\n flex-grow: 1;\n overflow: auto;\n }\n\n .orgUnitTreeWrapper > :global(*) {\n flex-grow: 1;\n }\n\n .disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n\n .disabled > :global(*) {\n pointer-events: none;\n }\n\n .userOrgUnitsWrapper {\n display: flex;\n background: ${colors.grey200};\n padding: ${spacers.dp8} ${spacers.dp8} ${spacers.dp8} ${spacers.dp24};\n margin-bottom: ${spacers.dp12};\n }\n\n .userOrgUnitsWrapper > :global(*) {\n margin-right: ${spacers.dp48};\n }\n\n .selectsWrapper {\n display: flex;\n align-items: flex-start;\n gap: ${spacers.dp8};\n margin-top: ${spacers.dp12};\n }\n\n .selectsWrapper.hidden {\n display: none;\n }\n\n .selectsWrapper > :global(*) {\n width: 50%;\n }\n\n .summaryWrapper {\n display: inline-flex;\n align-items: center;\n margin-top: ${spacers.dp8};\n }\n\n .warningWrapper {\n display: inline-flex;\n align-items: center;\n }\n\n .warningText {\n margin-left: ${spacers.dp8};\n font-size: 14px;\n line-height: 18px;\n color: ${colors.red600};\n }\n\n .summaryText {\n font-size: 14px;\n line-height: 18px;\n color: ${colors.grey700};\n }\n\n .deselectButton {\n display: inline-block;\n margin-left: ${spacers.dp8};\n }\n`;\n","import { useDataEngine } from '@dhis2/app-runtime';\nimport i18n from '@dhis2/d2-i18n';\nimport {\n Button,\n Checkbox,\n colors,\n IconWarningFilled16,\n MultiSelect,\n MultiSelectOption,\n OrganisationUnitTree,\n} from '@dhis2/ui';\nimport cx from 'classnames';\nimport PropTypes from 'prop-types';\nimport React, { useEffect, useState } from 'react';\n\nimport {\n DIMENSION_ID_ORGUNIT,\n DIMENSION_ID_ORGUNIT_LEVEL,\n formatList,\n} from '../../../shared';\nimport {\n ouIdHelper,\n USER_ORG_UNIT,\n USER_ORG_UNIT_CHILDREN,\n USER_ORG_UNIT_GRANDCHILDREN,\n} from '../components';\nimport { styles } from './styles/OrgUnitDimension.style';\n\nconst DYNAMIC_ORG_UNITS = [\n USER_ORG_UNIT,\n USER_ORG_UNIT_CHILDREN,\n USER_ORG_UNIT_GRANDCHILDREN,\n];\n\nconst OrgUnitDimension = ({\n roots,\n selected,\n onSelect,\n hideGroupSelect,\n hideLevelSelect,\n hideUserOrgUnits,\n allowSingleSelection,\n warning,\n orgUnitGroupPromise,\n orgUnitLevelPromise,\n}: any) => {\n const [ouLevels, setOuLevels] = useState([]);\n const [ouGroups, setOuGroups] = useState([]);\n const [selectedItems, setSelectedItems] = useState(selected);\n const dataEngine = useDataEngine();\n\n const onSelectItems = (selectedItem: any) => {\n const { id, checked, displayName, path } = selectedItem;\n let result = [...selectedItems];\n\n if (checked && DYNAMIC_ORG_UNITS.includes(id)) {\n result = [\n ...result.filter((item) => DYNAMIC_ORG_UNITS.includes(item.id)),\n { id, displayName, type: 'USER_ORGUNIT' },\n ];\n } else if (checked) {\n result.push({ id, path, name: displayName, type: 'ORGUNIT' });\n } else {\n result = [...result.filter((item) => item.id !== id)];\n }\n\n setSelectedItems(result as any);\n\n onSelect({\n dimensionId: DIMENSION_ID_ORGUNIT,\n items: result,\n });\n };\n\n const clearSelection = () => {\n setSelectedItems([]);\n onSelect({\n dimensionId: DIMENSION_ID_ORGUNIT,\n items: [],\n });\n };\n\n useEffect(() => {\n const doFetchOuLevels = async () => {\n const result = await orgUnitLevelPromise;\n result.sort((a: any, b: any) => (a.level > b.level ? 1 : -1));\n setOuLevels(result);\n };\n const doFetchOuGroups = async () => {\n const result = await orgUnitGroupPromise;\n setOuGroups(result);\n };\n\n !hideLevelSelect && doFetchOuLevels();\n !hideGroupSelect && doFetchOuGroups();\n }, [dataEngine, hideLevelSelect, hideGroupSelect]);\n\n const onLevelChange = (ids: string[]) => {\n const items = ids.map((id: string) => ({\n id: ouIdHelper.addLevelPrefix(id),\n name: (ouLevels?.find((level: any) => level.id === id) as any)\n ?.displayName,\n type: 'ORGUNIT_LEVEL',\n }));\n\n const updatedSelectedItems = [\n ...selectedItems.filter((ou: any) => !ouIdHelper.hasLevelPrefix(ou.id)),\n ...items,\n ];\n\n setSelectedItems(updatedSelectedItems);\n\n onSelect({\n dimensionId: DIMENSION_ID_ORGUNIT,\n items: updatedSelectedItems,\n });\n };\n\n const onGroupChange = (ids: string[]) => {\n const items = ids.map((id: string) => ({\n id: ouIdHelper.addGroupPrefix(id),\n name: ((ouGroups?.find((group: any) => group.id === id) || {}) as any)\n .displayName,\n type: 'ORGUNIT_GROUP',\n }));\n\n const updatedSelectedItems = [\n ...selectedItems.filter((ou: any) => !ouIdHelper.hasGroupPrefix(ou.id)),\n ...items,\n ];\n\n setSelectedItems(updatedSelectedItems);\n\n onSelect({\n dimensionId: DIMENSION_ID_ORGUNIT,\n items: updatedSelectedItems,\n });\n };\n\n const getSummary = () => {\n let summary;\n if (selectedItems.length) {\n const numberOfOrgUnits = selectedItems.filter(\n (item: any) =>\n !DYNAMIC_ORG_UNITS.includes(item.id) &&\n !ouIdHelper.hasLevelPrefix(item.id) &&\n !ouIdHelper.hasGroupPrefix(item.id)\n ).length;\n\n const numberOfLevels = selectedItems.filter((item: any) =>\n ouIdHelper.hasLevelPrefix(item.id)\n ).length;\n const numberOfGroups = selectedItems.filter((item: any) =>\n ouIdHelper.hasGroupPrefix(item.id)\n ).length;\n const userOrgUnits = selectedItems.filter((item: any) =>\n DYNAMIC_ORG_UNITS.includes(item.id)\n );\n\n const parts = [];\n\n if (numberOfOrgUnits) {\n parts.push(\n i18n.t('{{count}} org units', {\n count: numberOfOrgUnits,\n defaultValue: '{{count}} org unit',\n defaultValue_plural: '{{count}} org units',\n })\n );\n }\n if (numberOfLevels) {\n parts.push(\n i18n.t('{{count}} levels', {\n count: numberOfLevels,\n defaultValue: '{{count}} level',\n defaultValue_plural: '{{count}} levels',\n })\n );\n }\n if (numberOfGroups) {\n parts.push(\n i18n.t('{{count}} groups', {\n count: numberOfGroups,\n defaultValue: '{{count}} group',\n defaultValue_plural: '{{count}} groups',\n })\n );\n }\n userOrgUnits.forEach((orgUnit: any) => {\n parts.push(orgUnit.name || orgUnit.displayName);\n });\n summary = i18n.t('Selected: {{commaSeparatedListOfOrganisationUnits}}', {\n keySeparator: '>',\n nsSeparator: '|',\n commaSeparatedListOfOrganisationUnits: formatList(parts),\n });\n } else {\n summary = i18n.t('Nothing selected');\n }\n\n return summary;\n };\n\n return (\n <div className=\"container\">\n {!hideUserOrgUnits && (\n <div className=\"userOrgUnitsWrapper\">\n <Checkbox\n label={i18n.t('User organisation unit')}\n checked={selectedItems.some(\n (item: any) => item.id === USER_ORG_UNIT\n )}\n onChange={({ checked }: any) =>\n onSelectItems({\n id: USER_ORG_UNIT,\n checked,\n displayName: i18n.t('User organisation unit'),\n })\n }\n dense\n />\n <Checkbox\n label={i18n.t('User sub-units')}\n checked={selectedItems.some(\n (item: any) => item.id === USER_ORG_UNIT_CHILDREN\n )}\n onChange={({ checked }: any) =>\n onSelectItems({\n id: USER_ORG_UNIT_CHILDREN,\n checked,\n displayName: i18n.t('User sub-units'),\n })\n }\n dense\n />\n <Checkbox\n label={i18n.t('User sub-x2-units')}\n checked={selectedItems.some(\n (item: any) => item.id === USER_ORG_UNIT_GRANDCHILDREN\n )}\n onChange={({ checked }: any) =>\n onSelectItems({\n id: USER_ORG_UNIT_GRANDCHILDREN,\n checked,\n displayName: i18n.t('User sub-x2-units'),\n })\n }\n dense\n />\n </div>\n )}\n <div\n className={cx('orgUnitTreeWrapper', {\n disabled: selectedItems.some((item: any) =>\n DYNAMIC_ORG_UNITS.includes(item.id)\n ),\n })}\n >\n <OrganisationUnitTree\n roots={roots}\n singleSelection={allowSingleSelection}\n initiallyExpanded={[\n ...(roots.length === 1 ? [`/${roots[0]}`] : []),\n ...selectedItems\n .filter(\n (item: any) =>\n !DYNAMIC_ORG_UNITS.includes(item.id) &&\n !ouIdHelper.hasLevelPrefix(item.id) &&\n !ouIdHelper.hasGroupPrefix(item.id)\n )\n .map((item: any) =>\n item.path.substring(0, item.path.lastIndexOf('/'))\n )\n .filter((path: any) => path),\n ]}\n selected={selectedItems\n .filter(\n (item: any) =>\n !DYNAMIC_ORG_UNITS.includes(item.id) &&\n !ouIdHelper.hasLevelPrefix(item.id) &&\n !ouIdHelper.hasGroupPrefix(item.id)\n )\n .map((item: any) => item.path)}\n onChange={onSelectItems}\n dataTest={'org-unit-tree'}\n />\n </div>\n <div\n className={cx('selectsWrapper', {\n disabled: selectedItems.some((item: any) =>\n DYNAMIC_ORG_UNITS.includes(item.id)\n ),\n hidden: hideLevelSelect && hideGroupSelect,\n })}\n >\n {!hideLevelSelect && (\n <MultiSelect\n selected={\n ouLevels.length\n ? selectedItems\n .filter((item: any) => ouIdHelper.hasLevelPrefix(item.id))\n .map((item: any) => ouIdHelper.removePrefix(item.id))\n : []\n }\n onChange={({ selected }: any) => onLevelChange(selected)}\n placeholder={i18n.t('Select a level')}\n loading={!ouLevels.length}\n dense\n dataTest={'org-unit-level-select'}\n >\n {ouLevels.map((level: any) => (\n <MultiSelectOption\n key={level.id}\n value={level.id}\n label={level.displayName}\n dataTest={`org-unit-level-select-option-${level.id}`}\n />\n ))}\n </MultiSelect>\n )}\n {!hideGroupSelect && (\n <MultiSelect\n selected={\n ouGroups.length\n ? selectedItems\n .filter((item: any) => ouIdHelper.hasGroupPrefix(item.id))\n .map((item: any) => ouIdHelper.removePrefix(item.id))\n : []\n }\n onChange={({ selected }: any) => onGroupChange(selected)}\n placeholder={i18n.t('Select a group')}\n loading={!ouGroups.length}\n dense\n dataTest={'org-unit-group-select'}\n >\n {ouGroups.map((group: any) => (\n <MultiSelectOption\n key={group.id}\n value={group.id}\n label={group.displayName}\n dataTest={`org-unit-group-select-option-${group.id}`}\n />\n ))}\n </MultiSelect>\n )}\n </div>\n <div className=\"summaryWrapper\">\n {warning ? (\n <div className=\"warningWrapper\">\n <IconWarningFilled16 color={colors.red500} />\n <span className=\"warningText\">{warning}</span>\n </div>\n ) : (\n <span className=\"summaryText\">{getSummary()}</span>\n )}\n <div className=\"deselectButton\">\n <Button\n secondary\n small\n onClick={clearSelection}\n disabled={!selectedItems.length}\n >\n {i18n.t('Deselect all')}\n </Button>\n </div>\n </div>\n <style jsx>{styles}</style>\n </div>\n );\n};\n\nOrgUnitDimension.defaultProps = {\n hideGroupSelect: false,\n hideLevelSelect: false,\n hideUserOrgUnits: false,\n allowSingleSelection: false,\n};\n\nOrgUnitDimension.propTypes = {\n hideGroupSelect: PropTypes.bool,\n hideLevelSelect: PropTypes.bool,\n hideUserOrgUnits: PropTypes.bool,\n allowSingleSelection: PropTypes.bool,\n roots: PropTypes.arrayOf(PropTypes.string),\n selected: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n path: PropTypes.string,\n })\n ),\n warning: PropTypes.string,\n onSelect: PropTypes.func,\n orgUnitGroupPromise: PropTypes.any,\n orgUnitLevelPromise: PropTypes.any,\n};\n\nexport default OrgUnitDimension;\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nexport type OrganisationUnitSelectionUsageType = 'DATA_ENTRY' | 'DATA_VIEW';\nexport class OrganisationUnitSelectionConfig {\n hideGroupSelect!: boolean;\n hideLevelSelect!: boolean;\n hideUserOrgUnits!: boolean;\n usageType!: OrganisationUnitSelectionUsageType;\n minLevel?: number;\n allowSingleSelection?: boolean;\n batchSize?: number;\n additionalQueryFields?: string[];\n allowCaching?: boolean;\n\n constructor(params?: Partial<OrganisationUnitSelectionConfig>) {\n this.hideGroupSelect = params?.hideGroupSelect || false;\n this.hideLevelSelect = params?.hideLevelSelect || false;\n this.hideUserOrgUnits = params?.hideUserOrgUnits || false;\n this.usageType = params?.usageType || 'DATA_ENTRY';\n this.minLevel = params?.minLevel;\n this.allowSingleSelection = params?.allowSingleSelection || false;\n this.batchSize = params?.batchSize;\n this.additionalQueryFields = params?.additionalQueryFields;\n this.allowCaching = params?.allowCaching;\n }\n}\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './organisation-unit-config.model';\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n Output,\n} from '@angular/core';\nimport { Provider } from '@dhis2/app-runtime';\nimport { D2Window } from '@iapps/d2-web-sdk';\nimport React from 'react';\nimport * as ReactDOM from 'react-dom/client';\nimport { ReactWrapperModule } from '../../../react-wrapper/react-wrapper.component';\nimport OrgUnitDimension from '../../components/OrgUnitDimension';\nimport {\n OrganisationUnitSelectionConfig,\n OrganisationUnitSelectionUsageType,\n} from '../../models';\n\ntype OrganisationUnitSelectionEvent = {\n dimensionId: string;\n items: Record<string, unknown>[];\n};\n\n@Component({\n selector: 'ng-dhis2-ui-org-unit-selector',\n template: '<ng-container><ng-container>',\n standalone: false,\n})\nexport class OrganisationUnitSelectorComponent extends ReactWrapperModule {\n d2 = (window as unknown as D2Window).d2Web;\n @Input() selectedOrgUnits: any[] = [];\n @Input() orgUnitSelectionConfig: OrganisationUnitSelectionConfig =\n new OrganisationUnitSelectionConfig();\n\n @Output() selectOrgUnits = new EventEmitter();\n\n override props: Record<string, unknown> = {\n onSelect: (e: any) => {\n this.onSelectItems(e);\n },\n };\n\n constructor(elementRef: ElementRef<HTMLElement>, private ngZone: NgZone) {\n super(elementRef);\n }\n\n override async ngAfterViewInit() {\n if (!this.elementRef) throw new Error('No element ref');\n this.reactDomRoot = ReactDOM.createRoot(this.elementRef.nativeElement);\n const rootOrgUnits = await this.getRootOrgUnits();\n\n const config = await this.getAppConfig();\n\n if (config) {\n this.component = () => (\n <Provider\n config={config}\n plugin={false}\n parentAlertsAdd={undefined}\n showAlertsInPlugin={false}\n >\n {\n <OrgUnitDimension\n selected={this.selectedOrgUnits}\n hideGroupSelect={this.orgUnitSelectionConfig.hideGroupSelect}\n hideLevelSelect={this.orgUnitSelectionConfig.hideLevelSelect}\n hideUserOrgUnits={this.orgUnitSelectionConfig.hideUserOrgUnits}\n onSelect={(selectionEvent: OrganisationUnitSelectionEvent) =>\n this.ngZone.run(() => {\n this.onSelectItems(selectionEvent);\n })\n }\n orgUnitGroupPromise={this.getOrgUnitGroups()}\n orgUnitLevelPromise={this.getOrgUnitLevels()}\n roots={rootOrgUnits}\n />\n }\n </Provider>\n );\n\n this.render();\n }\n }\n\n private async getAppConfig() {\n const systemInfo = this.d2.systemInfo;\n\n if (!systemInfo) {\n return systemInfo;\n }\n\n return {\n baseUrl: document?.location?.host?.includes('localhost')\n ? `${document.location.protocol}//${document.location.host}`\n : systemInfo.contextPath,\n apiVersion: systemInfo.apiVersion,\n };\n }\n\n getOrgUnitAttributeByUsage(usageType: OrganisationUnitSelectionUsageType) {\n switch (usageType) {\n case 'DATA_ENTRY':\n return 'organisationUnits';\n\n case 'DATA_VIEW':\n return 'dataViewOrganisationUnits';\n\n default:\n return 'organisationUnits';\n }\n }\n\n async getRootOrgUnits(): Promise<string[]> {\n const orgUnitAttribute = this.getOrgUnitAttributeByUsage(\n this.orgUnitSelectionConfig.usageType\n );\n\n const currentUser = this.d2?.currentUser;\n\n return (currentUser ? currentUser[orgUnitAttribute] : []).map(\n (orgUnit) => orgUnit.id\n );\n }\n\n async getOrgUnitGroups(): Promise<any> {\n const orgUnitGroupResponse = await this.d2?.httpInstance?.get(\n 'organisationUnitGroups.json?fields=id,displayName,name&paging=false',\n {\n useIndexDb: this.orgUnitSelectionConfig?.allowCaching,\n }\n );\n\n return orgUnitGroupResponse?.data?.['organisationUnitGroups'] ?? [];\n }\n\n async getOrgUnitLevels(): Promise<any> {\n const orgUnitLevelResponse = await this.d2?.httpInstance?.get(\n 'organisationUnitLevels.json?fields=id,level,displayName,name&paging=false',\n {\n useIndexDb: this.orgUnitSelectionConfig?.allowCaching,\n }\n );\n\n return orgUnitLevelResponse?.data?.['organisationUnitLevels'] ?? [];\n }\n\n onSelectItems(selectionEvent: OrganisationUnitSelectionEvent) {\n this.selectOrgUnits.emit(selectionEvent.items);\n }\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { Provider } from '@dhis2/app-runtime';\nimport {\n Button,\n ButtonStrip,\n Modal,\n ModalActions,\n ModalContent,\n ModalTitle,\n} from '@dhis2/ui';\nimport { NgxDhis2HttpClientService, User } from '@iapps/ngx-dhis2-http-client';\nimport React, { useState } from 'react';\nimport * as ReactDOM from 'react-dom/client';\nimport { firstValueFrom, map } from 'rxjs';\nimport { ReactWrapperModule } from '../../../react-wrapper/react-wrapper.component';\nimport OrgUnitDimension from '../../components/OrgUnitDimension';\nimport {\n OrganisationUnitSelectionConfig,\n OrganisationUnitSelectionUsageType,\n} from '../../models';\n\ntype OrganisationUnitSelectionEvent = {\n dimensionId: string;\n items: Record<string, unknown>[];\n};\n\n@Component({\n selector: 'ng-dhis2-ui-org-unit-selector-modal',\n template: '<ng-container><ng-container>',\n styles: [\n `\n ::ng-deep .layer {\n z-index: 2 !important;\n }\n `,\n ],\n standalone: false,\n})\nexport class OrganisationUnitSelectorModalComponent extends ReactWrapperModule {\n @Input() selectedOrgUnits: any[] = [];\n @Input() orgUnitSelectionConfig: OrganisationUnitSelectionConfig =\n new OrganisationUnitSelectionConfig();\n\n @Output() selectOrgUnits = new EventEmitter();\n @Output() cancel = new EventEmitter();\n @Output() confirm = new EventEmitter();\n\n override props: Record<string, unknown> = {\n onSelect: (e: any) => {\n this.onSelectItems(e);\n },\n };\n\n constructor(\n elementRef: ElementRef<HTMLElement>,\n private httpClient: NgxDhis2HttpClientService\n ) {\n super(elementRef);\n }\n\n override async ngAfterViewInit() {\n if (!this.elementRef) throw new Error('No element ref');\n this.reactDomRoot = ReactDOM.createRoot(this.elementRef.nativeElement);\n const rootOrgUnits = await this.getRootOrgUnits();\n\n const config = await this.getAppConfig();\n\n this.component = () => {\n const [selected, setSelected] = useState(this.selectedOrgUnits);\n return (\n <Provider\n config={config}\n plugin={false}\n parentAlertsAdd={undefined}\n showAlertsInPlugin={false}\n >\n {\n <Modal position=\"middle\" large>\n <ModalTitle>Organisation unit</ModalTitle>\n <ModalContent>\n <OrgUnitDimension\n selected={selected}\n hideGroupSelect={this.orgUnitSelectionConfig.hideGroupSelect}\n hideLevelSelect={this.orgUnitSelectionConfig.hideLevelSelect}\n hideUserOrgUnits={\n this.orgUnitSelectionConfig.hideUserOrgUnits\n }\n onSelect={(\n selectionEvent: OrganisationUnitSelectionEvent\n ) => {\n setSelected(selectionEvent.items);\n }}\n orgUnitGroupPromise={this.getOrgUnitGroups()}\n orgUnitLevelPromise={this.getOrgUnitLevels()}\n roots={rootOrgUnits}\n />\n </ModalContent>\n <ModalActions>\n <ButtonStrip end>\n <Button\n onClick={() => {\n this.onCancel();\n }}\n >\n Cancel\n </Button>\n <Button\n primary\n disabled={selected.length === 0}\n onClick={() => {\n this.onConfirm(selected);\n }}\n >\n Confirm\n </Button>\n </ButtonStrip>\n </ModalActions>\n </Modal>\n }\n </Provider>\n );\n };\n\n this.render();\n }\n\n onCancel() {\n this.cancel.emit();\n }\n\n onConfirm(selectedItems: any[]) {\n this.confirm.emit(selectedItems);\n }\n\n private async getAppConfig() {\n const systemInfo = (await firstValueFrom(\n this.httpClient.systemInfo()\n )) as unknown as Record<string, unknown>;\n\n return {\n baseUrl: (document?.location?.host?.includes('localhost')\n ? `${document.location.protocol}//${document.location.host}`\n : systemInfo['contextPath']) as string,\n apiVersion: Number(\n (((systemInfo['version'] as string) || '')?.split('.') || [])[1]\n ),\n };\n }\n\n getOrgUnitAttributeByUsage(usageType: OrganisationUnitSelectionUsageType) {\n switch (usageType) {\n case 'DATA_ENTRY':\n return 'organisationUnits';\n\n case 'DATA_VIEW':\n return 'dataViewOrganisationUnits';\n\n default:\n return 'organisationUnits';\n }\n }\n\n getRootOrgUnits(): Promise<string[]> {\n const orgUnitAttribute = this.getOrgUnitAttributeByUsage(\n this.orgUnitSelectionConfig.usageType\n );\n return firstValueFrom(\n this.httpClient\n .me()\n .pipe(\n map((user: User) =>\n (user ? user[orgUnitAttribute] : []).map((orgUnit) => orgUnit.id)\n )\n )\n );\n }\n\n getOrgUnitGroups(): Promise<any> {\n return firstValueFrom(\n this.httpClient\n .get(\n 'organisationUnitGroups.json?fields=id,displayName,name&paging=false'\n )\n .pipe(\n map((res: Record<string, unknown>) => res?.['organisationUnitGroups'])\n )\n );\n }\n\n getOrgUnitLevels(): Promise<any> {\n return firstValueFrom(\n this.httpClient\n .get(\n 'organisationUnitLevels.json?fields=id,level,displayName,name&paging=false'\n )\n .pipe(\n map((res: Record<string, unknown>) => res?.['organisationUnitLevels'])\n )\n );\n }\n\n onSelectItems(selectionEvent: OrganisationUnitSelectionEvent) {\n this.selectOrgUnits.emit(selectionEvent.items);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SharedDhis2UiModule } from '../../shared/shared.module';\nimport { OrganisationUnitSelectorComponent } from './containers/organisation-unit-selector/organisation-unit-selector.component';\nimport { OrganisationUnitSelectorModalComponent } from './containers/organisation-unit-selector-modal/organisation-unit-selector-modal.component-modal';\n\n@NgModule({\n imports: [CommonModule, SharedDhis2UiModule],\n declarations: [\n OrganisationUnitSelectorComponent,\n OrganisationUnitSelectorModalComponent,\n ],\n exports: [\n OrganisationUnitSelectorComponent,\n OrganisationUnitSelectorModalComponent,\n ],\n})\nexport class OrganisationUnitSelectorModule {}\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './organisation-unit-selector.module';\nexport { OrganisationUnitSelectorComponent } from './containers/organisation-unit-selector/organisation-unit-selector.component';\nexport { OrganisationUnitSelectorModalComponent } from './containers/organisation-unit-selector-modal/organisation-unit-selector-modal.component-modal';\nexport * from './models';\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// @flow\nimport { Provider, useDataQuery } from '@dhis2/app-runtime';\nimport { colors } from '@dhis2/ui';\nimport React, {\n SyntheticEvent,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport { useDynamicStyles } from '../../../shared';\nimport { OrganisationUnitTree, CircularLoader, InputField } from '@dhis2/ui';\nimport { D2Window } from '@iapps/d2-web-sdk';\nimport { debounce } from 'lodash';\nimport { Chip } from '@dhis2/ui';\nimport { Tooltip } from '@dhis2/ui';\n\nconst orgUnitFieldStyles = {\n container: {\n border: '1px solid',\n borderColor: colors.grey400,\n borderRadius: '3px',\n height: '100%',\n width: '100%',\n zIndex: 0,\n backgroundColor: 'white',\n },\n searchField: {\n height: '40px',\n overflow: 'hidden',\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0,\n boxShadow: 'none',\n border: 'none',\n },\n debounceFieldContainer: {\n padding: '8px',\n background: colors.grey100,\n borderTopLeftRadius: '3px',\n borderTopRightRadius: '3px',\n },\n orgUnitTreeContainer: {\n borderBottomLeftRadius: '3px',\n borderBottomRightRadius: '3px',\n overflow: 'auto',\n },\n orgUnitTreeLoader: {\n padding: '8px',\n },\n\n orgUnitFieldLabel: {\n marginBottom: '8px',\n display: 'block',\n boxSizing: 'border-box',\n fontSize: '14px',\n lineHeight: '19px',\n color: 'rgb(33, 41, 52)',\n padding: '0',\n },\n\n orgUnitFieldRequiredLabel: {\n paddingInlineStart: '4px',\n },\n};\n\ntype Props = {\n key: string;\n label?: string;\n required?: boolean;\n onSelectOrgUnit: (selectedOrgUnits: any) => void;\n onBlur?: (selectedOrgUnit: Record<string, unknown>) => void;\n selected?: string;\n maxTreeHeight?: number;\n disabled?: boolean;\n previousOrgUnitId?: string;\n};\n\nexport const OrgUnitFormField = (props: Props) => {\n const { onSelectOrgUnit, label, required, selected, disabled, key } = props;\n const d2 = (window as unknown as D2Window)?.d2Web;\n const classes = useDynamicStyles(orgUnitFieldStyles);\n\n const config = useMemo(() => {\n return d2.systemInfo?.toInitObject();\n }, []);\n\n const rootOrgUnits = useMemo(() => {\n return d2.currentUser?.organisationUnits || [];\n }, []);\n\n const getExpandedItems = () => {\n if (rootOrgUnits && rootOrgUnits.length === 1) {\n return [`/${rootOrgUnits[0].id}`];\n } else if (rootOrgUnits?.length > 1) {\n return rootOrgUnits.map((root) => root.path);\n }\n\n return undefined;\n };\n\n const initiallyExpanded = getExpandedItems();\n const [searchText, setSearchText] = useState<string | undefined>(undefined);\n const [loading, setLoading] = useState<boolean>(true);\n const [searchLoading, setSearchLoading] = useState<boolean>();\n const [searchData, setSearchData] = useState<any>();\n const [selectedOrgUnit, setSelectedOrgUnit] =\n useState<Record<string, unknown>>();\n const [expanded, setExpanded] = useState<any[] | undefined>(\n initiallyExpanded\n );\n const [showOrgUnitTree, setShowOrgUnitTree] = useState<boolean>(!selected);\n\n useEffect(() => {\n setLoading(true);\n\n if (selected) {\n d2.httpInstance\n .get(\n `organisationUnits/${selected}.json?fields=id,displayName,path,code,ancestors[id,displayName]`\n )\n .then((response) => {\n if (response.data) {\n setSelectedOrgUnit(response.data);\n\n handleExpand({ path: response.data['path'] as string });\n\n setLoading(false);\n }\n });\n } else {\n setShowOrgUnitTree(true);\n setLoading(false);\n }\n }, []);\n\n const highlighted: string[] | undefined = useMemo(() => {\n if (selectedOrgUnit) {\n return [selectedOrgUnit['path']] as string[];\n }\n\n return undefined;\n }, [selectedOrgUnit]);\n\n const selectedOrgUnitLabel: string = useMemo(() => {\n if (selectedOrgUnit) {\n return [\n ...((selectedOrgUnit['ancestors'] as any[]) || []),\n selectedOrgUnit,\n ]\n .map((orgUnit) => orgUnit['displayName'])\n .join(' / ');\n }\n\n return '';\n }, [selectedOrgUnit]);\n\n const handleExpand = ({ path }: { path: string }) => {\n if (expanded && !expanded.includes(path)) {\n setExpanded([...expanded, path]);\n }\n };\n\n const handleCollapse = ({ path }: { path: string }) => {\n const pathIndex = expanded?.indexOf(path);\n\n if (pathIndex && pathIndex !== -1 && expanded) {\n const updatedExpanded =\n pathIndex === 0\n ? expanded.slice(1)\n : [...expanded.slice(0, pathIndex), ...expanded.slice(pathIndex + 1)];\n setExpanded(updatedExpanded);\n }\n };\n\n const handleOrgUnitSearch = async (query: string) => {\n setSearchLoading(true);\n try {\n const searchResponse = await d2.httpInstance.get(\n `organisationUnits.json?fields=id,displayName,path,publicAccess,access,lastUpdated,children[id,displayName,publicAccess,access,path,children::isNotEmpty]&paging=true&query=${query}&withinUserSearchHierarchy=true&pageSize=15`\n );\n setSearchData((searchResponse.data || {})['organisationUnits']);\n setSearchLoading(false);\n } catch (e) {\n setSearchLoading(false);\n }\n };\n\n const debouncedSearch = useCallback(\n debounce((value) => {\n handleOrgUnitSearch(value);\n }, 500),\n []\n );\n\n const handleFilterChange = (event: { value: string }) => {\n setSearchText(event.value);\n debouncedSearch(event.value);\n };\n\n const ready = useMemo(() => {\n return searchText?.length ? !searchLoading : !loading;\n }, [searchText, searchLoading, loading]);\n\n const renderOrgUnitTree = () => {\n if (searchText && searchText?.length > 0) {\n if (searchLoading) {\n return (\n <div className={classes.orgUnitTreeLoader}>\n <CircularLoader small />\n </div>\n );\n }\n\n return (\n ready && (\n <OrganisationUnitTree\n key={`${key}-search`}\n roots={searchData?.map((orgUnit: any) => orgUnit.id) || []}\n singleSelection={true}\n expanded={expanded as any}\n handleExpand={handleExpand}\n handleCollapse={handleCollapse}\n selected={highlighted}\n onChange={(event: any) => {\n setSelectedOrgUnit(event);\n setShowOrgUnitTree(false);\n onSelectOrgUnit(event);\n }}\n />\n )\n );\n }\n return (\n <OrganisationUnitTree\n key={key}\n roots={rootOrgUnits?.map((orgUnit) => orgUnit.id) || []}\n singleSelection={true}\n expanded={expanded as any}\n handleExpand={handleExpand}\n handleCollapse={handleCollapse}\n selected={highlighted}\n onChange={(event: any) => {\n setSelectedOrgUnit(event);\n setShowOrgUnitTree(false);\n onSelectOrgUnit(event);\n }}\n />\n );\n };\n\n const handleBlur = () => {\n // onBlur && onBlur(null);\n };\n\n return (\n config && (\n <Provider\n config={config}\n plugin={false}\n parentAlertsAdd={undefined}\n showAlertsInPlugin={false}\n >\n <div>\n {label && (\n <div className={classes.orgUnitFieldLabel}>\n <span>{label}</span>\n {required ? (\n <span className={classes.orgUnitFieldRequiredLabel}>*</span>\n ) : (\n <></>\n )}\n </div>\n )}\n\n {!showOrgUnitTree ? (\n selectedOrgUnit ? (\n <>\n <Tooltip content={selectedOrgUnitLabel}>\n <Chip\n onRemove={() => {\n setShowOrgUnitTree(true);\n }}\n >\n {(selectedOrgUnit as any).displayName}\n </Chip>\n </Tooltip>\n </>\n ) : (\n <div className={classes.orgUnitTreeLoader}>\n <CircularLoader small />\n </div>\n )\n ) : (\n <div className={classes.container}>\n <div className={classes.debounceFieldContainer}>\n <InputField\n placeholder=\"Search\"\n value={searchText}\n disabled={disabled}\n onChange={handleFilterChange}\n />\n </div>\n {loading ? (\n <div className={classes.orgUnitTreeLoader}>\n <CircularLoader small />\n </div>\n ) : (\n <div\n className={classes.orgUnitTreeContainer}\n style={{ maxHeight: '200px', overflowY: 'auto' }}\n >\n {renderOrgUnitTree()}\n </div>\n )}\n </div>\n )}\n </div>\n </Provider>\n )\n );\n};\n","import React from \"react\";\nimport { OrgUnitFormField } from '../components/org-unit-form-field.component';\nimport {\n Button,\n ButtonStrip,\n Modal,\n ModalActions,\n ModalContent,\n ModalTitle,\n } from '@dhis2/ui';\nexport const OrgUnitSelector = ({\n hide,\n setHide,\n selectedOrgUnit,\n setSelectedOrgUnit,\n setOrgUnitState,\n setTempOrgUnitState,\n tempOrgUnitState\n }: any) => (\n <Modal hide={hide} position=\"middle\">\n <ModalTitle>Select organization unit</ModalTitle>\n <ModalContent>\n <OrgUnitFormField\n key={selectedOrgUnit}\n onSelectOrgUnit={(selectedOrgUnit: any) => {\n setSelectedOrgUnit(selectedOrgUnit.displayName);\n setTempOrgUnitState(selectedOrgUnit.id);\n setHide(true);\n }}\n />\n </ModalContent>\n <ModalActions>\n <ButtonStrip end>\n <Button onClick={() => setHide(true)} secondary>\n Close\n </Button>\n </ButtonStrip>\n </ModalActions>\n </Modal>\n );\n ","import {\n Button,\n CalendarInput,\n DataTableToolbar,\n InputField,\n SingleSelectField,\n SingleSelectOption,\n DropdownButton,\n ButtonStrip,\n FlyoutMenu,\n} from '@dhis2/ui';\nimport React, { useState } from 'react';\nimport { parseISO, format, isValid } from 'date-fns';\n\nexport const FilterToolbar = ({\n orgUnitLabel,\n selectedOrgUnit,\n setSelectedOrgUnit,\n setOrgUnitState,\n defaultOrgUnit,\n setHide,\n startDateState,\n setStartDateState,\n endDateState,\n setEndDateState,\n visibleFilters,\n dateStates,\n inputValues,\n setInputValues,\n handleInputChange,\n handleInputChangeForSelectField,\n handleDateSelect,\n showAllFilters,\n setShowAllFilters,\n setTempStartDateState,\n setTempEndDateState,\n setTempOrgUnitState,\n tempStartDateState,\n tempEndDateState,\n tempOrgUnitState,\n dataQueryFiltersState,\n setDataQueryFiltersState,\n SetOrgUnitModalVisible,\n showEnrollmentDates,\n handleAdditionalFilters,\n handleStartDateFilter,\n handleEndDateFilter,\n handleOrgUnitFilter,\n setDateStates,\n prevInputValues,\n setPrevInputValues,\n setTempDataQueryFiltersState,\n prevDateStates,\n setPrevDateStates,\n prevSelectedOrgUnit,\n setPrevSelectedOrgUnit,\n}: any) => {\n const [isOpen, setIsOpen] = useState(false);\n const [isOpenOrgUnitDropdown, setIsOpenOrgUnitDropdown] = useState(false);\n const [openDropdownKey, setOpenDropdownKey] = useState<string | null>(null);\n type ClearIconProps = {\n className?: string;\n [key: string]: any;\n };\n\n //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\n const ClearIcon = ({ className, ...props }: ClearIconProps) => (\n <svg\n className={className}\n {...props}\n viewBox=\"0 0 24 24\"\n width={16}\n height={16}\n >\n <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\" />\n </svg>\n );\n return (\n <DataTableToolbar className=\"table-top-toolbar\">\n <div\n style={{\n display: 'flex',\n gap: '10px',\n flexWrap: 'wrap',\n }}\n >\n {/* default filters */}\n {/* 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 */}\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '10px',\n flexWrap: 'wrap',\n }}\n >\n <DropdownButton\n name=\"customDropdown\"\n open={isOpenOrgUnitDropdown}\n onClick={() => setIsOpenOrgUnitDropdown(!isOpenOrgUnitDropdown)}\n component={\n <div>\n <FlyoutMenu>\n <div style={{ padding: '16px' }}>\n <InputField\n key=\"location\"\n placeholder={\n orgUnitLabel ? orgUnitLabel : 'registering unit'\n }\n value={selectedOrgUnit}\n onFocus={() => {\n SetOrgUnitModalVisible(true);\n setHide(false);\n }}\n />\n <div\n style={{\n paddingTop: '8px',\n display: 'flex',\n justifyContent: 'flex-end',\n }}\n >\n <ButtonStrip>\n <Button\n primary\n disabled={!selectedOrgUnit}\n onClick={() => {\n setPrevSelectedOrgUnit(selectedOrgUnit);\n handleOrgUnitFilter();\n setIsOpenOrgUnitDropdown(false);\n }}\n >\n update\n </Button>\n <Button\n disabled={!selectedOrgUnit}\n onClick={() => {\n setSelectedOrgUnit('');\n setPrevSelectedOrgUnit('');\n setOrgUnitState(defaultOrgUnit);\n setTempOrgUnitState(defaultOrgUnit);\n setIsOpenOrgUnitDropdown(false);\n }}\n >\n reset filter\n </Button>\n </ButtonStrip>\n </div>\n </div>\n </FlyoutMenu>\n </div>\n }\n >\n {orgUnitLabel ? orgUnitLabel : 'registering unit'}{' '}\n {prevSelectedOrgUnit && ':'} {prevSelectedOrgUnit}\n {prevSelectedOrgUnit && (\n <span\n onClick={(event) => {\n event.stopPropagation();\n setSelectedOrgUnit('');\n setPrevSelectedOrgUnit('');\n setOrgUnitState(defaultOrgUnit);\n setTempOrgUnitState(defaultOrgUnit);\n setIsOpenOrgUnitDropdown(false);\n }}\n style={{ display: 'inline-flex', alignItems: 'center' }}\n >\n <ClearIcon className=\"my-icon-class\" />\n </span>\n )}\n </DropdownButton>\n {showEnrollmentDates && (\n <>\n <DropdownButton\n name=\"customDropdown\"\n open={isOpen}\n onClick={() => setIsOpen(!isOpen)}\n component={\n <div>\n <FlyoutMenu>\n <div style={{ padding: '16px' }}>\n <div\n style={{\n display: 'flex',\n alignItems: 'flex-end',\n gap: '16px',\n }}\n >\n <CalendarInput\n calendar=\"gregory\"\n locale=\"en-GB\"\n timeZone=\"Africa/Dar_es_Salaam\"\n date={formatDateForDisplay(tempStartDateState)}\n onDateSelect={(selectedDate: any) => {\n setTempStartDateState(\n selectedDate.calendarDateString\n );\n }}\n />\n <span style={{ paddingBottom: '8px' }}>to</span>\n <CalendarInput\n calendar=\"gregory\"\n locale=\"en-GB\"\n timeZone=\"Africa/Dar_es_Salaam\"\n date={formatDateForDisplay(tempEndDateState)}\n onDateSelect={(selectedDate: any) => {\n setTempEndDateState(\n selectedDate.calendarDateString\n );\n }}\n />\n </div>\n <div\n style={{\n paddingTop: '8px',\n display: 'flex',\n justifyContent: 'flex-end',\n }}\n >\n <ButtonStrip>\n <Button\n primary\n onClick={() => {\n handleStartDateFilter();\n handleEndDateFilter();\n setIsOpen(false);\n }}\n >\n update\n </Button>\n <Button\n onClick={() => {\n setStartDateState(null);\n setTempEndDateState(null);\n setTempStartDateState(null);\n setEndDateState(null);\n setIsOpen(false);\n }}\n >\n reset\n </Button>\n </ButtonStrip>\n </div>\n </div>\n </FlyoutMenu>\n </div>\n }\n >\n registration dates {(startDateState || endDateState) && ':'}{' '}\n {startDateState}\n {endDateState && ` - ${endDateState}`}\n {(startDateState || endDateState) && (\n <span\n onClick={(event) => {\n event.stopPropagation();\n setStartDateState(null);\n setTempEndDateState(null);\n setTempStartDateState(null);\n setEndDateState(null);\n setIsOpen(false);\n }}\n style={{ display: 'inline-flex', alignItems: 'center' }}\n >\n <ClearIcon className=\"my-icon-class\" />\n </span>\n )}\n </DropdownButton>\n </>\n )}\n </div>\n {/* 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 */}\n {/* visibleFilters */}\n {(visibleFilters ?? []).map(\n ({ label, key, valueType, options, type }: any) => {\n if (valueType === 'DATE') {\n return (\n <DropdownButton\n name=\"customDropdown\"\n open={openDropdownKey === key}\n onClick={() => {\n setOpenDropdownKey(openDropdownKey === key ? null : key);\n }}\n component={\n <div>\n <FlyoutMenu>\n <div style={{ padding: '16px' }}>\n <CalendarInput\n key={key}\n calendar=\"gregory\"\n locale=\"en-GB\"\n timeZone=\"Africa/Dar_es_Salaam\"\n date={dateStates[key]}\n onDateSelect={(selectedDate: any) => {\n handleDateSelect(key, selectedDate, type);\n }}\n />\n <div\n style={{\n paddingTop: '8px',\n display: 'flex',\n justifyContent: 'flex-end',\n }}\n >\n <ButtonStrip>\n <Button\n primary\n onClick={() => {\n setPrevDateStates((prev: any) => ({\n ...prev,\n [key]: dateStates[key],\n }));\n handleAdditionalFilters();\n setOpenDropdownKey(null);\n }}\n >\n update\n </Button>\n <Button\n onClick={() => {\n setIsOpen(false);\n }}\n >\n reset\n </Button>\n </ButtonStrip>\n </div>\n </div>\n </FlyoutMenu>\n </div>\n }\n >\n {label} {prevDateStates[key] && ':'} {prevDateStates[key]}\n {prevDateStates[key] && (\n <span\n onClick={(event) => {\n event.stopPropagation();\n setDateStates((prev: any) => ({\n ...prev,\n [key]: '',\n }));\n setPrevDateStates((prev: any) => ({\n ...prev,\n [key]: '',\n }));\n const filteredFilters = dataQueryFiltersState.filter(\n (f: { attribute: any }) => f.attribute !== key\n );\n setDataQueryFiltersState(filteredFilters);\n setTempDataQueryFiltersState(filteredFilters);\n setOpenDropdownKey(null);\n }}\n style={{ display: 'inline-flex', alignItems: 'center' }}\n >\n <ClearIcon className=\"my-icon-class\" />\n </span>\n )}\n </DropdownButton>\n );\n }\n\n if (options && options.options.length > 0) {\n return (\n <DropdownButton\n name=\"customDropdown\"\n open={openDropdownKey === key}\n onClick={() => {\n setOpenDropdownKey(openDropdownKey === key ? null : key);\n }}\n component={\n <div>\n <FlyoutMenu>\n <div style={{ padding: '16px' }}>\n <SingleSelectField\n key={key}\n placeholder={`${label}`}\n selected={inputValues[key] || ''}\n onChange={({ selected }: { selected: string }) => {\n setInputValues((prevValues: any) => ({\n ...prevValues,\n [key]: selected ?? '',\n }));\n handleInputChangeForSelectField(\n key,\n selected ?? '',\n type\n );\n }}\n >\n {(options.options ?? []).map((opt: any) => (\n <SingleSelectOption\n key={opt.id}\n label={opt.name}\n value={opt.code}\n />\n ))}\n </SingleSelectField>\n <div\n style={{\n paddingTop: '8px',\n display: 'flex',\n justifyContent: 'flex-end',\n }}\n >\n <ButtonStrip>\n <Button\n primary\n disabled={\n !inputValues[key] ||\n inputValues[key] === prevInputValues[key]\n }\n onClick={() => {\n setPrevInputValues((prev: any) => ({\n ...prev,\n [key]: inputValues[key],\n }));\n handleAdditionalFilters();\n setOpenDropdownKey(null);\n }}\n >\n update\n </Button>\n <Button\n disabled={!inputValues[key]}\n onClick={() => {\n setInputValues((prevValues: any) => ({\n ...prevValues,\n [key]: '',\n }));\n setPrevInputValues((prevValues: any) => ({\n ...prevValues,\n [key]: '',\n }));\n\n handleInputChangeForSelectField(\n key,\n '',\n type\n );\n const filteredFilters =\n dataQueryFiltersState.filter(\n (f: { attribute: any }) =>\n f.attribute !== key\n );\n\n setDataQueryFiltersState(filteredFilters);\n setTempDataQueryFiltersState(filteredFilters);\n setOpenDropdownKey(null);\n }}\n >\n reset\n </Button>\n </ButtonStrip>\n </div>\n </div>\n </FlyoutMenu>\n </div>\n }\n >\n {label} {prevInputValues[key] && ':'} {prevInputValues[key]}\n {prevInputValues[key] && (\n <span\n onClick={(event) => {\n event.stopPropagation();\n setInputValues((prevValues: any) => ({\n ...prevValues,\n [key]: '',\n }));\n setPrevInputValues((prevValues: any) => ({\n ...prevValues,\n [key]: '',\n }));\n\n handleInputChangeForSelectField(key, '', type);\n const filteredFilters = dataQueryFiltersState.filter(\n (f: { attribute: any }) => f.attribute !== key\n );\n\n setDataQueryFiltersState(filteredFilters);\n setTempDataQueryFiltersState(filteredFilters);\n setOpenDropdownKey(null);\n }}\n style={{ display: 'inline-flex', alignItems: 'center' }}\n >\n <ClearIcon className=\"my-icon-class\" />\n </span>\n )}\n </DropdownButton>\n );\n }\n return (\n <DropdownButton\n name=\"customDropdown\"\n open={openDropdownKey === key}\n onClick={() => {\n setOpenDropdownKey(openDropdownKey === key ? null : key);\n }}\n component={\n <div>\n <FlyoutMenu>\n <div style={{ padding: '16px' }}>\n <InputField\n key={key}\n placeholder={`${label}`}\n value={inputValues[key] || ''}\n onChange={(e: any) => {\n const currentValue =\n 'target' in e ? e.target.value : e.value ?? '';\n setInputValues((prevValues: any) => ({\n ...prevValues,\n [key]: currentValue,\n }));\n handleInputChange(key, currentValue, type);\n }}\n />\n <div\n style={{\n paddingTop: '8px',\n display: 'flex',\n justifyContent: 'flex-end',\n }}\n >\n <ButtonStrip>\n <Button\n primary\n disabled={\n !inputValues[key] ||\n inputValues[key] === prevInputValues[key]\n }\n onClick={() => {\n setPrevInputValues((prev: any) => ({\n ...prev,\n [key]: inputValues[key],\n }));\n handleAdditionalFilters();\n setOpenDropdownKey(null);\n }}\n >\n update\n </Button>\n <Button\n disabled={!inputValues[key]}\n onClick={() => {\n setInputValues((prevValues: any) => ({\n ...prevValues,\n [key]: '',\n }));\n setPrevInputValues((prevValues: any) => ({\n ...prevValues,\n [key]: '',\n }));\n // Remove the filter for this key\n const filteredFilters =\n dataQueryFiltersState.filter(\n (f: { attribute: any }) =>\n f.attribute !== key\n );\n setDataQueryFiltersState(filteredFilters);\n setTempDataQueryFiltersState(filteredFilters);\n setOpenDropdownKey(null);\n }}\n >\n reset\n </Button>\n </ButtonStrip>\n </div>\n </div>\n </FlyoutMenu>\n </div>\n }\n >\n {label} {prevInputValues[key] && ':'} {prevInputValues[key]}\n {prevInputValues[key] && (\n <span\n onClick={(event) => {\n event.stopPropagation();\n // Clear the input value for this key\n setInputValues((prevValues: any) => ({\n ...prevValues,\n [key]: '',\n }));\n setPrevInputValues((prevValues: any) => ({\n ...prevValues,\n [key]: '',\n }));\n // Remove the filter for this key\n const filteredFilters = dataQueryFiltersState.filter(\n (f: { attribute: any }) => f.attribute !== key\n );\n setDataQueryFiltersState(filteredFilters);\n setTempDataQueryFiltersState(filteredFilters);\n }}\n style={{ display: 'inline-flex', alignItems: 'center' }}\n >\n <ClearIcon className=\"my-icon-class\" />\n </span>\n )}\n </DropdownButton>\n );\n }\n )}\n {/* </div>\n )} */}\n <div\n style={{\n display: 'flex',\n gap: '10px',\n }}\n >\n <Button onClick={() => setShowAllFilters(!showAllFilters)}>\n {showAllFilters ? 'Less Filters' : 'More Filters'}\n </Button>\n </div>\n </div>\n </DataTableToolbar>\n );\n};\n\nexport function formatDateForDisplay(\n dateString: string | null | undefined\n): string {\n if (!dateString || dateString === 'dd-mm-yyyy') return 'dd-mm-yyyy';\n\n try {\n const parsedDate = parseISO(dateString);\n if (!isValid(parsedDate)) return 'dd-mm-yyyy';\n return format(parsedDate, 'dd-MM-yyyy');\n } catch {\n return 'dd-mm-yyyy';\n }\n}\n","import {\n Checkbox,\n DataTableColumnHeader,\n DataTableRow,\n TableHead,\n} from '@dhis2/ui';\nimport React from 'react';\n\nexport const TableHeader = ({\n columns,\n allSelected,\n onSelectAll,\n selectable,\n showActionButtons,\n}: {\n columns: any[];\n allSelected: boolean;\n onSelectAll: (checked: boolean) => void;\n selectable: boolean;\n showActionButtons: boolean;\n}) => {\n const handleCheckboxChange = () => {\n onSelectAll(!allSelected);\n };\n\n return (\n <TableHead>\n <DataTableRow>\n {selectable && (\n <DataTableColumnHeader width=\"48px\">\n <Checkbox checked={allSelected} onChange={handleCheckboxChange} />\n </DataTableColumnHeader>\n )}\n {/* {columns.map((col) => (\n <DataTableColumnHeader key={col.key}>\n {col.label}\n </DataTableColumnHeader>\n ))} */}\n {columns\n .filter((col) => showActionButtons || col.key !== 'actions')\n .map((col) => (\n <DataTableColumnHeader key={col.key}>\n {col.label}\n </DataTableColumnHeader>\n ))}\n </DataTableRow>\n </TableHead>\n );\n};\n","export const dropdownStyles = {\n layer: {\n zIndex: '1 !important',\n },\n};\n","import { set } from \"lodash\";\nimport { useEffect, useState, useRef } from \"react\";\n\n// Helper function to generate a unique class name\nconst generateClassName = (base: string) =>\n `${base}-${Math.random().toString(36).substr(2, 9)}`;\n\n// Helper function to convert camelCased properties to hyphenated CSS properties\nconst convertStylesToCSS = (\n className: string,\n styles: React.CSSProperties | any\n) => {\n let cssString = `.${className} {`;\n for (const key in styles) {\n if (typeof styles[key] === \"object\" && key.startsWith(\"@media\")) {\n const mediaStyles = convertStylesToCSS(className, styles[key]);\n cssString += `${key} { ${mediaStyles} }`;\n } else if (key.startsWith(\"&:\")) {\n const pseudoClass = key.replace(\"&\", \"\");\n cssString += `${pseudoClass} { ${convertStylesToCSS(\"\", styles[key])} }`;\n } else {\n const cssKey = key.replace(\n /[A-Z]/g,\n (match) => `-${match.toLowerCase()}`\n );\n cssString += `${cssKey}: ${styles[key]}; `;\n }\n }\n cssString += \"}\";\n return cssString;\n};\n\n// Custom hook for dynamic styles with generics\n\nexport const useDynamicStyles = <\n T extends Record<string, React.CSSProperties | any>\n>(\n stylesObj: T\n) => {\n const [classNames, setClassNames] = useState<{ [K in keyof T]: string }>(\n {} as { [K in keyof T]: string }\n );\n useEffect(() => {\n const convertedStyles = Object.keys(stylesObj).map((key) => {\n const className = generateClassName(key);\n const styleElement = document.createElement(\"style\");\n styleElement.innerHTML = convertStylesToCSS(className, stylesObj[key]);\n document.head.appendChild(styleElement);\n\n return {\n key,\n className,\n styleElement,\n };\n });\n\n setClassNames(\n convertedStyles.reduce((classNameEntity, convertedStyle) => {\n return {\n ...classNameEntity,\n [convertedStyle.key]: convertedStyle.className,\n };\n }, {} as { [K in keyof T]: string })\n );\n\n return () => {\n convertedStyles.forEach((convertedStyle) => {\n document.head.removeChild(convertedStyle.styleElement);\n });\n };\n }, []);\n\n return classNames;\n};\n","import {\n Button,\n colors,\n FlyoutMenu,\n IconMore24,\n Layer,\n MenuItem,\n Popper,\n} from '@dhis2/ui';\nimport React, { useRef, useState } from 'react';\nimport { dropdownStyles } from './dropdown-menu.styles';\nimport { useDynamicStyles } from '../../hooks';\nimport { DropdownMenuOption } from '../../models';\n\nconst useCurrentModal = () => {\n const [CurrentModal, setCurrentModal] = useState();\n\n return [\n CurrentModal,\n (Modal: any) => {\n // As setState supports functional updates, we can't pass functional\n // components directly\n setCurrentModal(() => Modal);\n },\n ] as any;\n};\n\nexport const ContextMenu = (params: {\n dropDownOptions: DropdownMenuOption[];\n anchorRef: any;\n onClose: (event?: any, data?: any) => void;\n onMenuClick: (dropdownOption: DropdownMenuOption) => void;\n}) => {\n const { onClose, onMenuClick, anchorRef, dropDownOptions } = params;\n const [CurrentModal, setCurrentModal] = useCurrentModal();\n\n const styles = useDynamicStyles(dropdownStyles);\n\n return (\n <>\n {/* <Layer onBackdropClick={onClose} className={styles.layer}> */}\n <Layer\n onBackdropClick={(event: any, data: any) => onClose(event, data)}\n className={styles.layer}\n >\n <Popper reference={anchorRef} placement=\"bottom-start\">\n <FlyoutMenu>\n {dropDownOptions.map((dropDownOption, index) => (\n <MenuItem\n key={index}\n destructive={dropDownOption.destructive}\n label={dropDownOption.label}\n icon={dropDownOption.icon}\n onClick={() => {\n onMenuClick(dropDownOption);\n onClose();\n }}\n dense\n />\n ))}\n </FlyoutMenu>\n </Popper>\n </Layer>\n {CurrentModal && (\n <CurrentModal\n onClose={() => {\n onClose();\n setCurrentModal!(null);\n }}\n />\n )}\n </>\n );\n};\n\nexport const DropdownMenu = (props: {\n dropdownOptions: DropdownMenuOption[];\n onClick: (dropdownOption: DropdownMenuOption) => void;\n}) => {\n const ref = useRef();\n const [visible, setVisible] = useState(false);\n const { dropdownOptions, onClick } = props;\n return (\n <div ref={ref as any} style={{ display: 'inline-block' }}>\n <Button\n small\n secondary\n icon={<IconMore24 color={colors.grey600} />}\n onClick={() => setVisible(true)}\n ></Button>\n {visible && (\n <ContextMenu\n dropDownOptions={dropdownOptions}\n anchorRef={ref}\n onClose={() => setVisible(false)}\n onMenuClick={(dropDownOption) => {\n onClick(dropDownOption);\n }}\n />\n )}\n </div>\n );\n};\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport {\n ActionOptionOrientation,\n DropdownMenuOption,\n LineListActionOption,\n} from '../../models';\nimport { DropdownMenu } from '../dropdown-menu';\nimport React from 'react';\nimport { ButtonStrip, Button, colors } from '@dhis2/ui';\nimport { TableRow } from '../../models/line-list.models';\n\nexport const DataTableActions = (props: {\n data: TableRow;\n actionOptions: LineListActionOption[];\n actionOptionOrientation: ActionOptionOrientation;\n onClick: (dropdownOption: LineListActionOption) => void;\n}) => {\n const { data, actionOptions, actionOptionOrientation, onClick } = props;\n\n switch (actionOptionOrientation) {\n case 'BUTTON':\n return (\n <ButtonStrip>\n {actionOptions.map((option) => (\n <Button\n key={option.label}\n onClick={() => onClick(option)}\n icon={option.icon ? <option.icon /> : <></>}\n small\n destructive={option.destructive}\n >\n {!option.iconOnly ? option.label : ''}\n </Button>\n ))}\n </ButtonStrip>\n );\n\n case 'DROPDOWN':\n return (\n <DropdownMenu\n dropdownOptions={actionOptions}\n onClick={(option) => {\n onClick(option);\n }}\n />\n );\n\n case 'LINK':\n return (\n <div\n style={{\n display: 'flex',\n gap: 16,\n alignItems: 'center',\n }}\n >\n {actionOptions.map((option) => (\n <a\n style={{\n cursor: 'pointer',\n textDecoration: 'underline',\n fontSize: 14,\n display: 'flex',\n alignItems: 'center',\n gap: 4,\n color: option.destructive ? colors.red700 : colors.grey900,\n }}\n key={option.label}\n onClick={(event: any) => {\n event.stopPropagation();\n onClick(option);\n }}\n >\n {option.icon ? <option.icon /> : <></>}\n {!option.iconOnly ? <span>{option.label}</span> : <></>}\n </a>\n ))}\n </div>\n );\n\n default:\n return <></>;\n }\n};\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './data-table-actions';\n","import { DataTableCell } from '@dhis2/ui';\nimport React from 'react';\n\nexport const TableCell = ({\n cell,\n getTextColorFromBackGround,\n}: {\n cell: any;\n getTextColorFromBackGround: (color: string) => string;\n}) => {\n if (cell?.style && cell?.style !== 'default-value') {\n return (\n <DataTableCell>\n <div style={{ display: 'flex', justifyContent: 'center' }}>\n <span\n style={{\n backgroundColor: cell.style,\n display: 'inline-flex',\n alignItems: 'center',\n fontWeight: 'lighter',\n paddingTop: 4,\n paddingBottom: 4,\n paddingLeft: 8,\n paddingRight: 8,\n borderRadius: 3,\n fontSize: 12,\n color: getTextColorFromBackGround(cell.style),\n }}\n >\n {cell.value}\n </span>\n </div>\n </DataTableCell>\n );\n }\n\n return (\n <DataTableCell>\n <div className=\"text-sm text-gray-800\">{cell?.value || '-'}</div>\n </DataTableCell>\n );\n};\n","import { Checkbox, DataTableCell, DataTableRow } from '@dhis2/ui';\nimport React from 'react';\nimport { DataTableActions } from '../data-table-actions';\nimport { TableCell } from './tableCell';\n\nexport const TableRow = ({\n row,\n columns,\n getTextColorFromBackGround,\n actionOptions,\n actionOptionOrientation,\n actionSelected,\n isChecked,\n onToggle,\n selectable,\n showActionButtons,\n}: any) => {\n const handleCheckBoxChange = () => {\n onToggle(row);\n };\n\n return (\n <DataTableRow key={row.index.value} selected={isChecked}>\n {selectable && (\n <DataTableCell width=\"48px\">\n <Checkbox onChange={handleCheckBoxChange} checked={isChecked} />\n </DataTableCell>\n )}\n {columns.map((col: any) => {\n if (col.key === 'actions') {\n return (\n <DataTableCell key={col.key}>\n {actionOptions && showActionButtons && (\n <DataTableActions\n actionOptions={actionOptions}\n data={row}\n actionOptionOrientation={actionOptionOrientation}\n onClick={(option) => {\n const data = row['responseData']?.['value'];\n if (option.onClick) option.onClick(data);\n actionSelected.emit({\n action: option.label,\n data,\n });\n }}\n />\n )}\n </DataTableCell>\n );\n }\n\n return (\n <TableCell\n key={col.key}\n cell={row[col.key]}\n getTextColorFromBackGround={getTextColorFromBackGround}\n />\n );\n })}\n </DataTableRow>\n );\n};\n","import React from 'react';\nimport {\n TableBody as DHISTableBody,\n DataTableRow,\n DataTableCell,\n} from '@dhis2/ui';\nimport { TableRow } from './tableRow';\n\n// export const TableBody = ({\n// data,\n// columns,\n// getTextColorFromBackGround,\n// actionOptions,\n// actionOptionOrientation,\n// actionSelected,\n// }: any) => (\n// <DHISTableBody>\n// {data.length > 0 ? (\n// data.map((row: any) => (\n// <TableRow\n// key={row.index.value}\n// row={row}\n// columns={columns}\n// getTextColorFromBackGround={getTextColorFromBackGround}\n// actionOptions={actionOptions}\n// actionOptionOrientation={actionOptionOrientation}\n// actionSelected={actionSelected}\n// />\n// ))\n// ) : (\n// <DataTableRow>\n// <DataTableCell\n// colSpan={columns.length.toString()}\n// style={{\n// textAlign: 'center',\n// fontWeight: 'bold',\n// color: 'grey',\n// padding: '20px',\n// }}\n// >\n// No data found\n// </DataTableCell>\n// </DataTableRow>\n// )}\n// </DHISTableBody>\n// );\n\nexport const TableBody = ({\n data,\n columns,\n getTextColorFromBackGround,\n actionOptions,\n actionOptionOrientation,\n actionSelected,\n selectedRows,\n onRowToggle,\n selectable,\n showActionButtons,\n error,\n}: any) => (\n <DHISTableBody>\n {error ? (\n <DataTableRow>\n <DataTableCell\n colSpan={columns.length.toString()}\n style={{\n textAlign: 'center',\n fontWeight: 'bold',\n color: 'red',\n padding: '20px',\n }}\n >\n {error}\n </DataTableCell>\n </DataTableRow>\n ) : data.length > 0 ? (\n data.map((row: any) => (\n <TableRow\n key={row.index.value}\n row={row}\n columns={columns}\n getTextColorFromBackGround={getTextColorFromBackGround}\n actionOptions={actionOptions}\n actionOptionOrientation={actionOptionOrientation}\n actionSelected={actionSelected}\n isChecked={selectedRows.some(\n (r: { index: { value: any } }) =>\n r.index?.value === row.index?.value\n )}\n onToggle={onRowToggle}\n selectable={selectable}\n showActionButtons={showActionButtons}\n />\n ))\n ) : (\n <DataTableRow>\n <DataTableCell\n colSpan={columns.length.toString()}\n style={{\n textAlign: 'center',\n fontWeight: 'bold',\n color: 'grey',\n padding: '20px',\n }}\n >\n No data found\n </DataTableCell>\n </DataTableRow>\n )}\n </DHISTableBody>\n);\n","import { Pagination as DHISPagination } from '@dhis2/ui';\nimport { Pager } from '@iapps/d2-web-sdk';\nimport React from 'react';\n\ntype PaginationProps = {\n pager: Pager;\n setPager: React.Dispatch<React.SetStateAction<Pager>>;\n };\n \nexport const Pagination = ({ pager, setPager }: PaginationProps) => {\n if (!pager || pager.page === undefined || pager.pageSize === undefined) {\n return null; //skip rendering until valid\n }\n \n return (\n <DHISPagination\n page={pager.page}\n pageCount={pager.pageCount}\n pageSize={pager.pageSize}\n total={pager.total}\n onPageChange={(page: number) =>\n setPager((prev: Pager) => new Pager({ ...prev, page }))\n }\n onPageSizeChange={(pageSize: number) =>\n setPager((prev: any) =>\n new Pager({\n ...prev,\n pageSize: Number(pageSize),\n page: 1,\n })\n )\n }\n pageSizes={['10', '20', '50', '100', '500']}\n />\n )\n }\n","\nimport { DataTableRow, DataTableCell, TableFoot } from '@dhis2/ui';\nimport React from 'react';\nimport { Pagination } from './pagination';\n\nexport const TableFooter = ({ pager, setPager, columns }: any) => {\n \n return (\n <TableFoot>\n <DataTableRow>\n <DataTableCell colSpan={columns.length.toString()}>\n <Pagination pager={pager} setPager={setPager} />\n </DataTableCell>\n </DataTableRow>\n </TableFoot>\n );\n };\n ","// import { DataTable } from '@dhis2/ui';\n// import React from 'react';\n// import { TableHeader } from './tableHeader';\n// //import { TableBody } from './TableBody';\n// import { TableFooter } from './tableFooter';\n// import { TableBody } from './tableBody';\n\n// export const LineListTable = ({\n// columns,\n// data,\n// pager,\n// setPager,\n// getTextColorFromBackGround,\n// actionOptions,\n// actionOptionOrientation,\n// actionSelected,\n// }: any) => {\n// return (\n// <DataTable>\n// <TableHeader columns={columns} data={data} />\n// <TableBody\n// data={data}\n// columns={columns}\n// getTextColorFromBackGround={getTextColorFromBackGround}\n// actionOptions={actionOptions}\n// actionOptionOrientation={actionOptionOrientation}\n// actionSelected={actionSelected}\n// />\n// <TableFooter columns={columns} pager={pager} setPager={setPager} />\n// </DataTable>\n// );\n// };\n\nimport React, { useState } from 'react';\nimport { DataTable } from '@dhis2/ui';\nimport { TableHeader } from './tableHeader';\nimport { TableBody } from './tableBody';\nimport { TableFooter } from './tableFooter';\nimport { TableRow } from '../../models/line-list.models';\n\nexport const LineListTable = ({\n columns,\n data,\n pager,\n setPager,\n getTextColorFromBackGround,\n actionOptions,\n actionOptionOrientation,\n actionSelected,\n selectable,\n rowsSelected,\n showActionButtons,\n error\n}: any) => {\n const [selectedRows, setSelectedRows] = useState<TableRow[]>([]);\n\n const handleRowToggle = (row: any) => {\n const exists = selectedRows.find(\n (r) => r.index?.value === row.index?.value\n );\n const updatedRows = exists\n ? selectedRows.filter((r) => r.index?.value !== row.index?.value)\n : [...selectedRows, row];\n\n setSelectedRows(updatedRows);\n rowsSelected.emit(\n updatedRows.map((row: TableRow) => row['responseData']?.value)\n );\n };\n\n const handleSelectAll = (checked: boolean) => {\n const updatedRows = checked ? data : [];\n setSelectedRows(updatedRows);\n rowsSelected.emit(updatedRows);\n };\n\n return (\n <DataTable>\n <TableHeader\n columns={columns}\n allSelected={selectedRows.length === data.length && data.length > 0}\n onSelectAll={handleSelectAll}\n selectable={selectable}\n showActionButtons={showActionButtons}\n />\n <TableBody\n data={data}\n columns={columns}\n getTextColorFromBackGround={getTextColorFromBackGround}\n actionOptions={actionOptions}\n actionOptionOrientation={actionOptionOrientation}\n actionSelected={actionSelected}\n selectedRows={selectedRows}\n onRowToggle={handleRowToggle}\n selectable={selectable}\n showActionButtons={showActionButtons}\n error={error}\n />\n <TableFooter columns={columns} pager={pager} setPager={setPager} />\n </DataTable>\n );\n};\n","import { Injectable } from '@angular/core';\nimport { NgxDhis2HttpClientService } from '@iapps/ngx-dhis2-http-client';\nimport { Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\n@Injectable()\nexport class LineListService {\n constructor(private httpClient: NgxDhis2HttpClientService) {}\n\n\n /**\n * Fetch orgUnit names for given orgUnit IDs\n */\n fetchOrgUnits(orgUnitIds: string[]): Observable<Map<string, string>> {\n const idsQuery = `filter=id:in:[${orgUnitIds}]`;\n return this.httpClient\n .get(`organisationUnits.json?fields=id,name&paging=false&${idsQuery}`)\n .pipe(\n map((response) => {\n const orgUnitsMap = new Map<string, string>();\n response.organisationUnits.forEach(\n (orgUnit: { id: string; name: string }) => {\n orgUnitsMap.set(orgUnit.id, orgUnit.name);\n }\n );\n return orgUnitsMap;\n })\n );\n}\n}","import {\n Attribute,\n DataValue,\n Program,\n TrackedEntityInstance,\n} from '@iapps/d2-web-sdk';\nimport {\n LineListResponse,\n ColumnDefinition,\n TableRow,\n TrackedEntityInstancesResponse,\n} from '../models/line-list.models';\nimport { parse, format } from 'date-fns';\n\nexport const getTrackedEntityTableData = (\n response: LineListResponse,\n programId: string,\n pager: any,\n metaData: Program,\n searcheableDataElements: string[]\n): {\n columns: ColumnDefinition[];\n data: TableRow[];\n filteredEntityColumns: ColumnDefinition[];\n orgUnitLabel: string;\n} => {\n const teisRaw = (response.data as TrackedEntityInstancesResponse)\n .trackedEntityInstances;\n const teis: TrackedEntityInstance[] = Array.isArray(teisRaw)\n ? teisRaw\n : [teisRaw];\n\n const orgUnitLabel = metaData.orgUnitLabel as string;\n const orgUnitMap = (response.data as TrackedEntityInstancesResponse)\n .orgUnitsMap;\n\n const attributeColumns = metaData.displayInListTrackedEntityAttributes\n .sort((a, b) => a.sortOrder! - b.sortOrder!)\n .map((trackedEntityAttribute) => ({\n label: trackedEntityAttribute.formName ?? trackedEntityAttribute.name,\n key: trackedEntityAttribute.id,\n }));\n\n const tableSearcheableDataElements = metaData\n .programStages!.sort((a, b) => a.sortOrder - b.sortOrder)\n .flatMap((stage) =>\n stage\n .programStageDataElements!.filter((psde) => psde.displayInReports)\n .sort((a, b) => a.sortOrder - b.sortOrder)\n .map((psde) => ({\n label: psde.dataElement.formName || psde.dataElement.name,\n key: psde.dataElement.id,\n valueType: psde.dataElement.valueType,\n options: psde.dataElement.optionSet,\n type: 'dataElement',\n }))\n .filter((col) => searcheableDataElements.includes(col.key))\n );\n\n const dataElementColumns = metaData\n .programStages!.sort((a, b) => a.sortOrder - b.sortOrder) // Sorts stages by sortOrder\n .flatMap((stage) =>\n stage\n .programStageDataElements!.filter((psde) => psde.displayInReports)\n .sort((a, b) => a.sortOrder - b.sortOrder) // Sorts data elements within stage\n .map((psde) => ({\n label: psde.dataElement.formName || psde.dataElement.name,\n key: psde.dataElement.id,\n }))\n );\n\n const dataElementOptions = metaData.displayInListDataElements.map(\n (element) => ({\n id: element.id,\n options: element.optionSet?.options.map((opt) => ({\n name: opt.name,\n color: opt.style?.color,\n })),\n })\n );\n\n const tableColumns = [\n {\n label: orgUnitLabel || 'registering unit',\n key: 'orgUnit',\n },\n ...attributeColumns,\n ...dataElementColumns,\n ];\n\n const tableFilters = metaData.searchableTrackedEntityAttributes\n .sort((a, b) => a.sortOrder! - b.sortOrder!)\n .map((attr) => ({\n label: attr.name,\n key: attr.id,\n valueType: attr.valueType,\n options: attr.optionSet ?? undefined,\n type: 'attribute',\n }));\n\n const tableData = teis.map((tei: TrackedEntityInstance, idx: number) => {\n const row: TableRow = {\n trackedEntityInstance: { value: tei.trackedEntity },\n index: { value: (pager.page - 1) * pager.pageSize + idx + 1 },\n };\n\n const matchingEnrollment = tei.latestEnrollment;\n\n let attributesData = matchingEnrollment.attributes;\n\n const dataElementsData = matchingEnrollment!.events.flatMap(\n (event) => event.dataValues\n );\n\n attributesData = attributesData!.map((attr: any) => {\n if (attr?.valueType?.toLowerCase() === 'date') {\n try {\n return {\n ...attr,\n value: format(\n parse(attr.value, 'yyyy-MM-dd', new Date()),\n 'dd/MM/yyyy'\n ),\n };\n } catch {\n return { ...attr };\n }\n }\n return attr;\n });\n // attributesData.forEach((attr: any) => {\n // const attributeMeta = metaData.programTrackedEntityAttributes?.find(\n // (metadata) => metadata.trackedEntityAttribute.id === attr.attribute\n // );\n\n // if (attributeMeta?.trackedEntityAttribute.optionSetValue) {\n // const optionSet = attributeMeta?.trackedEntityAttribute?.optionSet;\n\n // const option = optionSet?.options?.find(\n // (option) => option.code === attr.value\n // );\n\n // row[attr.attribute] = option\n // ? { value: option?.name }\n // : { value: attr.value };\n // } else {\n // row[attr.attribute] = { value: attr.value };\n // }\n // });\n attributesData.forEach((attr: any) => {\n const attributeMeta = metaData.programTrackedEntityAttributes?.find(\n (metadata) => metadata.trackedEntityAttribute.id === attr.attribute\n );\n\n const valueType = attributeMeta?.trackedEntityAttribute?.valueType;\n\n if (valueType === 'ORGANISATION_UNIT') {\n const orgUnitName = orgUnitMap?.get(attr.value);\n row[attr.attribute] = { value: orgUnitName || attr.value };\n } else if (attributeMeta?.trackedEntityAttribute.optionSetValue) {\n const optionSet = attributeMeta?.trackedEntityAttribute?.optionSet;\n\n const option = optionSet?.options?.find(\n (option) => option.code === attr.value\n );\n\n row[attr.attribute] = option\n ? { value: option?.name }\n : { value: attr.value };\n } else {\n row[attr.attribute] = { value: attr.value };\n }\n });\n\n dataElementsData.forEach((element: DataValue) => {\n // Finds the matching data element in dataElementOptions by ID\n const dataElementOption = dataElementOptions.find(\n (deo) => deo.id === element.dataElement\n );\n\n // finds a matching option within that data element's options\n const matchingOption = dataElementOption?.options?.find(\n (opt) => opt.name === element.value\n );\n\n // Builds the row entry with value and optional style\n if (matchingOption) {\n row[element.dataElement] = {\n value: element.value,\n style: matchingOption.color,\n };\n } else {\n row[element.dataElement] = {\n value: element.value,\n };\n }\n });\n\n // Includes orgUnit in the row for id access with style\n row['orgUnitId'] = { value: matchingEnrollment!.orgUnit };\n row['orgUnit'] = {\n value: orgUnitMap?.get(matchingEnrollment!.orgUnit) || '-',\n };\n row['responseData'] = { value: tei.toObject() as TrackedEntityInstance };\n return row;\n });\n\n return {\n columns: tableColumns,\n data: tableData,\n filteredEntityColumns: [...tableFilters, ...tableSearcheableDataElements],\n orgUnitLabel: orgUnitLabel,\n };\n};\n\nexport const addActionsColumn = (\n columns: ColumnDefinition[],\n actionOptions?: any[]\n): ColumnDefinition[] => {\n return [\n ...columns,\n ...(actionOptions && actionOptions.length > 0\n ? [{ label: 'Actions', key: 'actions' }]\n : []),\n ];\n};\n","import { Program } from '@iapps/d2-web-sdk';\nimport { FilterConfig } from '../models/filter-config.model';\nimport {\n LineListResponse,\n ColumnDefinition,\n TableRow,\n EventsResponse,\n} from '../models/line-list.models';\n\nexport const getEvents = (\n response: LineListResponse,\n programStageId: string,\n pager: any,\n metaData: Program\n): { columns: ColumnDefinition[]; data: TableRow[] } => {\n const events = (response.data as EventsResponse).events;\n const eventsiiii = response.data;\n const allDataElements = new Set<string>();\n\n events.forEach((event: any) => {\n event.dataValues.forEach((dv: any) => allDataElements.add(dv.dataElement));\n });\n\n let stageFromMetaData;\n if (programStageId) {\n stageFromMetaData = metaData.programStages!.find(\n (stage: any) => stage.id === programStageId\n );\n } else if (metaData.programType === 'WITHOUT_REGISTRATION') {\n stageFromMetaData = metaData.programStages![0];\n }\n\n if (!stageFromMetaData) {\n throw new Error(`Program stage with ID ${programStageId} not found`);\n }\n\n const entityColumns = Array.from(allDataElements).map(\n (dataElementId: string) => {\n const dataElementMeta = stageFromMetaData.programStageDataElements!.find(\n (psde: any) => psde.dataElement.id === dataElementId\n );\n\n return {\n label: dataElementMeta?.dataElement.name || dataElementId,\n key: dataElementId,\n };\n }\n );\n\n const dataElementsData: TableRow[] = events.map((event: any, idx: number) => {\n const row: TableRow = {\n event: { value: event.event },\n index: {\n value: (pager.page - 1) * pager.pageSize + idx + 1,\n },\n };\n\n allDataElements.forEach((dataElementId: string) => {\n row[dataElementId] = { value: '' };\n });\n\n event.dataValues.forEach((dv: any) => {\n const dataElementMeta = stageFromMetaData.programStageDataElements!.find(\n (psde: any) => psde.dataElement.id === dv.dataElement\n );\n\n if (dataElementMeta?.dataElement.optionSet) {\n const optionSet = dataElementMeta.dataElement.optionSet;\n const matchingOption = optionSet.options.find(\n (option: any) => option.code === dv.value\n );\n\n row[dv.dataElement] = matchingOption\n ? { value: matchingOption.name }\n : { value: dv.value };\n } else {\n row[dv.dataElement] = { value: dv.value };\n }\n });\n\n return row;\n });\n\n\n return { columns: entityColumns, data: dataElementsData };\n};\n","import {\n Component,\n EventEmitter,\n inject,\n Input,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { CircularLoader, colors, DropdownButton, MenuItem } from '@dhis2/ui';\nimport {\n D2Window,\n DataFilterCondition,\n DataOrderCriteria,\n DataQueryFilter,\n DHIS2Event,\n EnrollmentStatus,\n EventStatus,\n OuMode,\n Pager,\n Program,\n TrackedEntityInstance,\n} from '@iapps/d2-web-sdk';\nimport React, { useEffect, useRef, useState } from 'react';\nimport * as ReactDOM from 'react-dom/client';\nimport { ReactWrapperModule } from '../../react-wrapper/react-wrapper.component';\nimport { OrgUnitSelector } from '../components/orgUnitSelector';\nimport { FilterToolbar } from '../components/table/filterToolbar';\nimport { LineListTable } from '../components/table/lineListTable';\nimport { ActionOptionOrientation, LineListActionOption } from '../models';\nimport { AttributeFilter } from '../models/attribute-filter.model';\nimport {\n ColumnDefinition,\n EventsResponse,\n TableRow,\n TrackedEntityInstancesResponse,\n} from '../models/line-list.models';\nimport { LineListService } from '../services/line-list.service';\nimport {\n addActionsColumn,\n getTrackedEntityTableData,\n} from '../utils/tei-table-data-utils';\nimport { getEvents } from '../utils/event-table-data-util';\nimport * as XLSX from 'xlsx';\nimport { addDays, format } from 'date-fns';\nimport { firstValueFrom } from 'rxjs';\n\n@Component({\n selector: 'ng-dhis2-ui-line-list',\n template: '<ng-content></ng-content>',\n styleUrls: ['./line-list.component.scss'],\n standalone: false,\n})\nexport class LineListTableComponent extends ReactWrapperModule {\n @Input() triggerToken!: string;\n @Input() programId!: string;\n @Input() orgUnit!: string;\n @Input() programStageId?: string;\n @Input() actionOptions?: LineListActionOption[];\n @Input() actionOptionOrientation: ActionOptionOrientation = 'DROPDOWN';\n @Input() attributeFilters?: AttributeFilter[];\n @Input() useOuModeWithOlderDHIS2Instance?: boolean;\n @Input() startDate?: string;\n @Input() endDate?: string;\n @Input() dataQueryFilters?: DataQueryFilter[] = [];\n @Input() ouMode?: string;\n @Input() isButtonLoading = false;\n @Input() buttonFilter!: string;\n @Input() filterRootOrgUnit = false;\n @Input() showFilters = false;\n @Input() isOptionSetNameVisible = false;\n @Input() allowRowsSelection = false;\n @Input() enrollmentStatus!: EnrollmentStatus;\n @Input() filterableColumnIds!: string[];\n @Input() triggerRefetch = false;\n @Input() eventStatus!: {\n programStage: string;\n status: EventStatus;\n };\n @Output() actionSelected = new EventEmitter<{\n action: string;\n data: TrackedEntityInstance | DHIS2Event;\n }>();\n @Output() rowsSelected = new EventEmitter<\n TrackedEntityInstance[] | DHIS2Event[]\n >();\n @Input() showActionButtons = true;\n @Input() showEnrollmentDates = true;\n @Input() showDownloadButton = false;\n @Input() searcheableDataElements: string[] = [];\n private reactStateUpdaters: any = null;\n\n setReactStateUpdaters = (updaters: any) => {\n this.reactStateUpdaters = updaters;\n };\n\n ngOnChanges(changes: SimpleChanges) {\n if (this.reactStateUpdaters) {\n if (changes['triggerToken']) {\n this.reactStateUpdaters.setTriggerTokenState(this.triggerToken);\n this.reactStateUpdaters.setTriggerRefetch(this.triggerRefetch);\n }\n if (changes['programId']) {\n this.reactStateUpdaters.setProgramIdState(this.programId);\n }\n if (changes['isOptionSetNameVisible']) {\n this.reactStateUpdaters.setOptionSetNameVisible(\n this.isOptionSetNameVisible\n );\n }\n if (changes['orgUnit']) {\n this.reactStateUpdaters.setOrgUnitState(this.orgUnit);\n }\n if (changes['programStageId']) {\n this.reactStateUpdaters.setProgramStageIdState(this.programStageId);\n }\n if (changes['attributeFilters']) {\n this.reactStateUpdaters.setAttributeFiltersState(this.attributeFilters);\n }\n if (changes['startDate']) {\n this.reactStateUpdaters.setStartDateState(this.startDate);\n }\n if (changes['endDate']) {\n this.reactStateUpdaters.setEndDateState(this.endDate);\n }\n if (changes['isButtonLoading']) {\n this.reactStateUpdaters.setIsButtonLoading(this.isButtonLoading);\n }\n if (changes['allowRowsSelection']) {\n this.reactStateUpdaters.setIsButtonLoading(this.allowRowsSelection);\n }\n if (changes['triggerRefetch']) {\n this.reactStateUpdaters.setTriggerRefetch(this.triggerRefetch);\n }\n }\n }\n\n lineListService = inject(LineListService);\n\n LineList = () => {\n const [columns, setColumns] = useState<ColumnDefinition[]>([]);\n const [data, setData] = useState<TableRow[]>([]);\n const [pager, setPager] = useState<Pager>(\n new Pager({\n page: 1,\n pageSize: 10,\n total: 0,\n pageCount: 1,\n })\n );\n const [triggerTokenState, setTriggerTokenState] = useState<\n string | undefined\n >(this.triggerToken);\n const [programIdState, setProgramIdState] = useState<string>(\n this.programId\n );\n const [isOptionSetNameVisibleState, setOptionSetNameVisible] =\n useState<boolean>(this.isOptionSetNameVisible);\n const [orgUnitState, setOrgUnitState] = useState<string>(this.orgUnit);\n const [tempOrgUnitState, setTempOrgUnitState] = useState<string>(\n this.orgUnit\n );\n const [programStageIdState, setProgramStageIdState] = useState<\n string | undefined\n >(this.programStageId);\n const [attributeFiltersState, setAttributeFiltersState] = useState<\n AttributeFilter[] | undefined\n >(this.attributeFilters);\n const [dataQueryFiltersState, setDataQueryFiltersState] = useState<\n DataQueryFilter[]\n >(this.dataQueryFilters as DataQueryFilter[]);\n const [tempDataQueryFiltersState, setTempDataQueryFiltersState] = useState<\n DataQueryFilter[]\n >(this.dataQueryFilters as DataQueryFilter[]);\n const [startDateState, setStartDateState] = useState<string | undefined>(\n this.startDate\n );\n const [tempStartDateState, setTempStartDateState] = useState<\n string | undefined\n >(this.startDate);\n const [endDateState, setEndDateState] = useState<string | undefined>(\n this.endDate\n );\n const [tempEndDateState, setTempEndDateState] = useState<\n string | undefined\n >(this.endDate);\n const [loading, setLoading] = useState<boolean>(false);\n const [filteredColumns, setFilteredColumns] =\n useState<ColumnDefinition[]>();\n const [inputValues, setInputValues] = useState<Record<string, string>>({});\n const [orgUnitLabel, setOrgUnitLabel] = useState<string>('');\n const [selectedOrgUnit, setSelectedOrgUnit] = useState<string>('');\n const [prevSelectedOrgUnit, setPrevSelectedOrgUnit] = useState<string>('');\n const [hide, setHide] = useState<boolean>(true);\n const [showAllFilters, setShowAllFilters] = useState(false);\n const visibleFilters = showAllFilters\n ? filteredColumns ?? []\n : (filteredColumns ?? []).slice(0, 5);\n // const visibleFilters = showAllFilters\n // ? filteredColumns ?? []\n // : filteredColumns ?? []).slice(0, 2);\n const defaultOrgUnit = this.orgUnit;\n const [dateStates, setDateStates] = useState<{ [key: string]: string }>({});\n const [prevDateStates, setPrevDateStates] = useState<{\n [key: string]: string;\n }>({});\n const [metaData, setMetaData] = useState<Program | null>(null);\n const [selectable, setSelectable] = useState<boolean>(\n this.allowRowsSelection\n );\n const [triggerRefetch, setTriggerRefetch] = useState<boolean>(\n this.triggerRefetch\n );\n const [showActionButtons, setShowActionButtons] = useState<boolean>(\n this.showActionButtons\n );\n const [orgUnitModalVisible, setOrgUnitModalVisible] =\n useState<boolean>(false);\n const [error, setError] = useState<string | null>(null);\n const [prevInputValues, setPrevInputValues] = useState<\n Record<string, string>\n >({});\n\n const d2 = (window as unknown as D2Window).d2Web;\n\n // Stores updaters in refs for Angular to access\n const updateRefs = useRef({\n setProgramIdState,\n setOrgUnitState,\n setProgramStageIdState,\n setAttributeFiltersState,\n setStartDateState,\n setEndDateState,\n setOptionSetNameVisible,\n setSelectable,\n setTriggerRefetch,\n setTriggerTokenState,\n });\n\n\n useEffect(() => {\n this.setReactStateUpdaters?.(updateRefs.current);\n const fetchmetaData = async () => {\n setLoading(true);\n if (!this.programId) {\n setMetaData(null);\n setLoading(false);\n return;\n }\n\n setError(null);\n try {\n const trackerResponse = (await d2.trackerModule.trackedEntity\n .setProgram(this.programId)\n .getMetaData({ skipProgramRules: true })) as Program;\n if (!trackerResponse || !trackerResponse.programType) {\n throw new Error('failed to load data.');\n }\n const data = trackerResponse;\n setMetaData(data);\n } catch (error) {\n setError(error as string);\n setLoading(false);\n }\n };\n\n fetchmetaData();\n }, []);\n\n useEffect(() => {\n if (!metaData) {\n return undefined;\n }\n const isTracker = metaData.programType === 'WITH_REGISTRATION';\n const isEvent = metaData.programType === 'WITHOUT_REGISTRATION';\n const endDate =\n endDateState ?? format(addDays(new Date(), 1), 'yyyy-MM-dd');\n\n if (this.programStageId || isEvent) {\n const fetchEventData = async () => {\n try {\n setError(null);\n setLoading(true);\n const response = await d2.eventModule.event\n .setEndDate(endDate)\n .setStartDate(startDateState as string)\n .setProgram(this.programId)\n .setProgramStage(this.programStageId as string)\n .setOrgUnit(orgUnitState)\n .setOuMode(this.ouMode as OuMode)\n .setPagination(\n new Pager({\n pageSize: pager.pageSize,\n page: pager.page,\n })\n )\n .get();\n if (response.responseStatus.status !== 200) {\n throw new Error('failed to load data.');\n }\n const eventsResponse: EventsResponse = {\n events: response.data!,\n pager: pager,\n // orgUnitsMap: fetchedOrgUnits,\n };\n const { columns, data } = getEvents(\n { data: eventsResponse },\n this.programStageId as string,\n pager,\n metaData\n );\n\n // const filterableColumnIdsSet = new Set(\n // this.filterableColumnIds\n // );\n\n // const updatedFilterableColumnIds: ColumnDefinition[] =\n // columns.filter((column) =>\n // filterableColumnIdsSet.has(column.key)\n // );\n\n // const finalColumns: ColumnDefinition[] = addActionsColumn(\n // [{ label: '#', key: 'index' }, ...updatedFilterableColumnIds],\n // this.actionOptions\n // );\n\n let updatedFilterableColumnIds: ColumnDefinition[];\n\n if (\n Array.isArray(this.filterableColumnIds) &&\n this.filterableColumnIds.length > 0\n ) {\n const filterableColumnIdsSet = new Set(this.filterableColumnIds);\n updatedFilterableColumnIds = columns.filter((column) =>\n filterableColumnIdsSet.has(column.key)\n );\n } else {\n updatedFilterableColumnIds = columns;\n }\n\n const finalColumns: ColumnDefinition[] = addActionsColumn(\n [{ label: '#', key: 'index' }, ...updatedFilterableColumnIds],\n this.actionOptions\n );\n\n const pagerResponse = response.pagination;\n\n setColumns(finalColumns);\n setData(data);\n setPager(new Pager(pagerResponse || {}));\n } catch {\n console.error('Failed to fetch event data:', error);\n setError('Could not load records. Please reload.');\n } finally {\n setLoading(false);\n }\n };\n fetchEventData();\n } else if (isTracker) {\n const fetchTrackerData = async () => {\n try {\n setError(null);\n setLoading(true);\n const response = await d2.trackerModule.trackedEntity\n .setEndDate(endDate)\n .setStartDate(startDateState as string)\n .setProgram(this.programId)\n .setProgramStage(this.programStageId as string)\n .setOrgUnit(orgUnitState)\n .setOuMode(this.ouMode as OuMode)\n .setStatus(this.enrollmentStatus)\n .setEventStatus(\n this.eventStatus?.status,\n this.eventStatus?.programStage\n )\n .setFilters(dataQueryFiltersState)\n .setPagination(\n new Pager({\n pageSize: pager.pageSize,\n page: pager.page,\n })\n )\n .setOrderCriterias([\n new DataOrderCriteria().setField('createdAt').setOrder('desc'),\n ])\n .get();\n if (response.responseStatus.status !== 200) {\n throw new Error('failed to load data.');\n }\n\n const trackedEntityInstances = Array.isArray(response.data)\n ? response.data\n : ([response.data] as TrackedEntityInstance[]);\n const orgUnitIdsFromEnrollments = new Set(\n trackedEntityInstances.map(\n (tei: TrackedEntityInstance) => tei.latestEnrollment.orgUnit\n )\n ) as Set<string>;\n\n const orgUnitsFromAttributes = new Set(\n trackedEntityInstances.flatMap(\n (tei: TrackedEntityInstance) =>\n tei.attributes\n ?.filter(\n (attr: any) => attr.valueType === 'ORGANISATION_UNIT'\n )\n .map((attr: any) => attr.value) || []\n )\n );\n\n const uniqueOrgUnitIds = [\n ...orgUnitIdsFromEnrollments,\n ...orgUnitsFromAttributes,\n ];\n\n const fetchedOrgUnits = await firstValueFrom(\n this.lineListService.fetchOrgUnits(uniqueOrgUnitIds)\n );\n\n const trackedEntityResponse: TrackedEntityInstancesResponse = {\n trackedEntityInstances: response.data!,\n pager: pager,\n orgUnitsMap: fetchedOrgUnits,\n };\n\n const { columns, data, filteredEntityColumns, orgUnitLabel } =\n getTrackedEntityTableData(\n { data: trackedEntityResponse },\n this.programId,\n pager,\n metaData,\n this.searcheableDataElements\n );\n\n setFilteredColumns((prev) =>\n filteredEntityColumns.length > 0 ? filteredEntityColumns : prev\n );\n\n let updatedFilterableColumnIds: ColumnDefinition[];\n\n if (\n Array.isArray(this.filterableColumnIds) &&\n this.filterableColumnIds.length > 0\n ) {\n const filterableColumnIdsSet = new Set(this.filterableColumnIds);\n updatedFilterableColumnIds = columns.filter((column) =>\n filterableColumnIdsSet.has(column.key)\n );\n } else {\n updatedFilterableColumnIds = columns;\n }\n\n const finalColumns: ColumnDefinition[] = addActionsColumn(\n [{ label: '#', key: 'index' }, ...updatedFilterableColumnIds],\n this.actionOptions\n );\n\n // const finalColumns: ColumnDefinition[] = addActionsColumn(\n // [{ label: '#', key: 'index' }, ...columns],\n // this.actionOptions\n // );\n\n const pagerResponse = response.pagination;\n\n setColumns(finalColumns);\n setData(data);\n setPager(new Pager(pagerResponse || {}));\n setOrgUnitLabel(orgUnitLabel);\n } catch (error) {\n console.error('Failed to fetch tracker data:', error);\n setError('Could not load records. Please reload.');\n } finally {\n setLoading(false);\n }\n };\n fetchTrackerData();\n }\n }, [\n metaData,\n programIdState,\n orgUnitState,\n programStageIdState,\n attributeFiltersState,\n startDateState,\n endDateState,\n pager.page,\n pager.pageSize,\n isOptionSetNameVisibleState,\n dataQueryFiltersState,\n triggerRefetch,\n triggerTokenState,\n ]);\n\n const handleExcelDownload = () => {\n const filteredColumns = columns.filter((col) => col.label !== 'Actions');\n const header = filteredColumns.map((col) => col.label);\n const rows = data.map((row) =>\n filteredColumns.map((col) => {\n const cell = row[col.key];\n if (cell === null || cell === undefined) return '';\n return typeof cell === 'object' && 'value' in cell\n ? cell.value\n : cell;\n })\n );\n const worksheetData = [header, ...rows];\n\n const worksheet = XLSX.utils.aoa_to_sheet(worksheetData);\n const workbook = XLSX.utils.book_new();\n XLSX.utils.book_append_sheet(workbook, worksheet, 'LineListData');\n XLSX.writeFile(workbook, 'records.xlsx');\n };\n\n const handleCsvDownload = () => {\n const safeValue = (value: any) => {\n if (value === null || value === undefined) return '';\n if (typeof value === 'object') {\n if ('value' in value) {\n return value.value;\n }\n return JSON.stringify(value);\n }\n return value;\n };\n\n const filteredColumns = columns.filter((col) => col.label !== 'Actions');\n const header = filteredColumns.map((col) => `\"${col.label}\"`).join(',');\n const csvData = data.map((row) =>\n filteredColumns.map((col) => `\"${safeValue(row[col.key])}\"`).join(',')\n );\n const csvContent = [header, ...csvData].join('\\n');\n\n const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });\n const url = URL.createObjectURL(blob);\n\n const link = document.createElement('a');\n link.href = url;\n link.setAttribute('download', 'records.csv');\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n };\n\n const handleInputChange = (key: string, value: string, type: string) => {\n setInputValues((prevValues) => ({\n ...prevValues,\n [key]: value ?? '',\n }));\n\n setTempDataQueryFiltersState((prevFilters) => {\n // Removes old filter for this key\n const filteredFilters = prevFilters.filter((f) => f.attribute !== key);\n\n // adds new filter only if value is not empty\n let updatedFilters;\n if (type === 'dataElement') {\n updatedFilters =\n value && value.length\n ? [\n ...filteredFilters,\n new DataQueryFilter()\n .setAttribute(key)\n .setCondition(DataFilterCondition.Like)\n .setValue(value)\n .setType('DATA_ELEMENT'),\n ]\n : filteredFilters;\n } else {\n updatedFilters = value.trim()\n ? [\n ...filteredFilters,\n new DataQueryFilter()\n .setAttribute(key)\n .setCondition(DataFilterCondition.Like)\n .setValue(value),\n ]\n : filteredFilters;\n }\n\n return updatedFilters;\n });\n };\n\n //TODO: MERGE THIS WITH HANDLE INPUT CHANGE PUT A CHECK FOR IF ITS A SELECT FIELD TO USE EQ\n const handleInputChangeForSelectField = (\n key: string,\n value: string,\n type: string\n ) => {\n setInputValues((prevValues) => ({\n ...prevValues,\n [key]: value ?? '',\n }));\n\n setTempDataQueryFiltersState((prevFilters = []) => {\n // Removes existing filter for the same key (attribute)\n const filteredFilters = prevFilters.filter((f) => f.attribute !== key);\n\n // adds new filter only if value is not empty\n let updatedFilters;\n if (type === 'dataElement') {\n updatedFilters =\n value && value.length\n ? [\n ...filteredFilters,\n new DataQueryFilter()\n .setAttribute(key)\n .setCondition(DataFilterCondition.Equal)\n .setValue(value)\n .setType('DATA_ELEMENT'),\n ]\n : filteredFilters;\n } else {\n updatedFilters = value.trim()\n ? [\n ...filteredFilters,\n new DataQueryFilter()\n .setAttribute(key)\n .setCondition(DataFilterCondition.Equal)\n .setValue(value),\n ]\n : filteredFilters;\n }\n\n return updatedFilters;\n });\n };\n\n const handleDateSelect = (key: string, selectedDate: any, type: string) => {\n const selectedDateString = selectedDate?.calendarDateString ?? '';\n\n // Updates dateStates\n setDateStates((prevDateStates) => ({\n ...prevDateStates,\n [key]: selectedDateString,\n }));\n\n // Updates dataQueryFilters\n setTempDataQueryFiltersState((prevFilters) => {\n const filteredFilters = (prevFilters || []).filter(\n (f) => f.attribute !== key\n );\n\n // const updatedFilters = selectedDateString.trim()\n // ? [\n // ...filteredFilters,\n // new DataQueryFilter()\n // .setAttribute(key)\n // .setCondition(DataFilterCondition.Equal)\n // .setValue(selectedDateString),\n // ]\n // : filteredFilters;\n let updatedFilters;\n if (type === 'dataElement') {\n updatedFilters = selectedDateString.trim()\n ? [\n ...filteredFilters,\n new DataQueryFilter()\n .setAttribute(key)\n .setCondition(DataFilterCondition.Equal)\n .setValue(selectedDateString)\n .setType('DATA_ELEMENT'),\n ]\n : filteredFilters;\n } else {\n updatedFilters = selectedDateString.trim()\n ? [\n ...filteredFilters,\n new DataQueryFilter()\n .setAttribute(key)\n .setCondition(DataFilterCondition.Equal)\n .setValue(selectedDateString),\n ]\n : filteredFilters;\n }\n\n return updatedFilters;\n });\n };\n\n const handleAdditionalFilters = () =>\n setDataQueryFiltersState(tempDataQueryFiltersState);\n const handleStartDateFilter = () => setStartDateState(tempStartDateState);\n const handleEndDateFilter = () => setEndDateState(tempEndDateState);\n const handleOrgUnitFilter = () => setOrgUnitState(tempOrgUnitState);\n\n function getTextColorFromBackGround(hex: string): string {\n hex = hex.replace('#', '');\n\n const r = parseInt(hex.substr(0, 2), 16);\n const g = parseInt(hex.substr(2, 2), 16);\n const b = parseInt(hex.substr(4, 2), 16);\n\n const yiq = (r * 299 + g * 587 + b * 114) / 1000;\n\n // Returns black for light backgrounds, white for dark backgrounds\n return yiq >= 128 ? colors.grey700 : '#FFFFFF';\n }\n\n return (\n <div>\n {loading ? (\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n padding: 8,\n }}\n >\n <CircularLoader small />\n <div\n style={{\n fontSize: 14,\n }}\n >\n Loading\n </div>\n </div>\n ) : (\n <div>\n {this.showDownloadButton && (\n <div\n style={{\n paddingBottom: '1rem',\n display: 'flex',\n justifyContent: 'flex-end',\n }}\n >\n <DropdownButton\n name=\"Download\"\n component={\n <span>\n {' '}\n <MenuItem\n label=\"Download Csv\"\n onClick={handleCsvDownload}\n />\n <MenuItem\n label=\"Download Excel\"\n onClick={handleExcelDownload}\n />\n </span>\n }\n value=\"Download\"\n >\n Download\n </DropdownButton>\n </div>\n )}\n {orgUnitModalVisible && (\n <OrgUnitSelector\n hide={hide}\n setHide={setHide}\n selectedOrgUnit={selectedOrgUnit}\n setSelectedOrgUnit={setSelectedOrgUnit}\n setOrgUnitState={setOrgUnitState}\n setTempOrgUnitState={setTempOrgUnitState}\n tempOrgUnitState={tempOrgUnitState}\n />\n )}\n\n {this.showFilters && (\n <FilterToolbar\n orgUnitLabel={orgUnitLabel}\n selectedOrgUnit={selectedOrgUnit}\n setSelectedOrgUnit={setSelectedOrgUnit}\n setOrgUnitState={setOrgUnitState}\n defaultOrgUnit={defaultOrgUnit}\n setHide={setHide}\n startDateState={startDateState}\n setStartDateState={setStartDateState}\n endDateState={endDateState}\n setEndDateState={setEndDateState}\n visibleFilters={visibleFilters}\n dateStates={dateStates}\n inputValues={inputValues}\n setInputValues={setInputValues}\n handleInputChange={handleInputChange}\n handleInputChangeForSelectField={\n handleInputChangeForSelectField\n }\n handleDateSelect={handleDateSelect}\n showAllFilters={showAllFilters}\n setShowAllFilters={setShowAllFilters}\n setTempStartDateState={setTempStartDateState}\n setTempEndDateState={setTempEndDateState}\n setTempOrgUnitState={setTempOrgUnitState}\n tempStartDateState={tempStartDateState}\n tempEndDateState={tempEndDateState}\n tempOrgUnitState={tempOrgUnitState}\n dataQueryFiltersState={dataQueryFiltersState}\n setDataQueryFiltersState={setDataQueryFiltersState}\n SetOrgUnitModalVisible={setOrgUnitModalVisible}\n showEnrollmentDates={this.showEnrollmentDates}\n handleAdditionalFilters={handleAdditionalFilters}\n handleStartDateFilter={handleStartDateFilter}\n handleEndDateFilter={handleEndDateFilter}\n handleOrgUnitFilter={handleOrgUnitFilter}\n setDateStates={setDateStates}\n prevInputValues={prevInputValues}\n setPrevInputValues={setPrevInputValues}\n setTempDataQueryFiltersState={setTempDataQueryFiltersState}\n prevDateStates={prevDateStates}\n setPrevDateStates={setPrevDateStates}\n prevSelectedOrgUnit={prevSelectedOrgUnit}\n setPrevSelectedOrgUnit={setPrevSelectedOrgUnit}\n // filteredFilters={filteredFilters}\n />\n )}\n <LineListTable\n columns={columns}\n data={data}\n pager={pager}\n setPager={setPager}\n getTextColorFromBackGround={getTextColorFromBackGround}\n actionOptions={this.actionOptions}\n actionOptionOrientation={this.actionOptionOrientation}\n actionSelected={this.actionSelected}\n selectable={selectable}\n rowsSelected={this.rowsSelected}\n showActionButtons={showActionButtons}\n error={error}\n />\n </div>\n )}\n </div>\n );\n };\n\n override async ngAfterViewInit() {\n if (!this.elementRef) throw new Error('No element ref');\n this.reactDomRoot = ReactDOM.createRoot(this.elementRef.nativeElement);\n\n this.component = this.LineList;\n this.render();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SharedDhis2UiModule } from '../../shared/shared.module';\nimport { LineListTableComponent } from './containers/line-list.component';\nimport { LineListService } from './services/line-list.service';\nimport { ReactWrapperModule } from '../react-wrapper/react-wrapper.component';\n@NgModule({\n declarations: [LineListTableComponent],\n exports: [LineListTableComponent],\n imports: [CommonModule, SharedDhis2UiModule, ReactWrapperModule],\n providers: [LineListService],\n})\nexport class LineListModule {}\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport { DHIS2Event, TrackedEntityInstance } from '@iapps/d2-web-sdk';\nimport { DropdownMenuOption } from './dropdown-menu.model';\n\nexport interface LineListActionOption extends DropdownMenuOption {\n condition?: string;\n onClick?: (tableRow: TrackedEntityInstance | DHIS2Event) => void;\n}\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './action-option-orientation.model';\nexport * from './dropdown-menu.model';\nexport * from './line-list-action-option.model';\n","export const dropdownStyles = {\n layer: {\n zIndex: '1 !important',\n },\n};\n","import { set } from \"lodash\";\nimport { useEffect, useState, useRef } from \"react\";\n\n// Helper function to generate a unique class name\nconst generateClassName = (base: string) =>\n `${base}-${Math.random().toString(36).substr(2, 9)}`;\n\n// Helper function to convert camelCased properties to hyphenated CSS properties\nconst convertStylesToCSS = (\n className: string,\n styles: React.CSSProperties | any\n) => {\n let cssString = `.${className} {`;\n for (const key in styles) {\n if (typeof styles[key] === \"object\" && key.startsWith(\"@media\")) {\n const mediaStyles = convertStylesToCSS(className, styles[key]);\n cssString += `${key} { ${mediaStyles} }`;\n } else if (key.startsWith(\"&:\")) {\n const pseudoClass = key.replace(\"&\", \"\");\n cssString += `${pseudoClass} { ${convertStylesToCSS(\"\", styles[key])} }`;\n } else {\n const cssKey = key.replace(\n /[A-Z]/g,\n (match) => `-${match.toLowerCase()}`\n );\n cssString += `${cssKey}: ${styles[key]}; `;\n }\n }\n cssString += \"}\";\n return cssString;\n};\n\n// Custom hook for dynamic styles with generics\n\nexport const useDynamicStyles = <\n T extends Record<string, React.CSSProperties | any>\n>(\n stylesObj: T\n) => {\n const [classNames, setClassNames] = useState<{ [K in keyof T]: string }>(\n {} as { [K in keyof T]: string }\n );\n useEffect(() => {\n const convertedStyles = Object.keys(stylesObj).map((key) => {\n const className = generateClassName(key);\n const styleElement = document.createElement(\"style\");\n styleElement.innerHTML = convertStylesToCSS(className, stylesObj[key]);\n document.head.appendChild(styleElement);\n\n return {\n key,\n className,\n styleElement,\n };\n });\n\n setClassNames(\n convertedStyles.reduce((classNameEntity, convertedStyle) => {\n return {\n ...classNameEntity,\n [convertedStyle.key]: convertedStyle.className,\n };\n }, {} as { [K in keyof T]: string })\n );\n\n return () => {\n convertedStyles.forEach((convertedStyle) => {\n document.head.removeChild(convertedStyle.styleElement);\n });\n };\n }, []);\n\n return classNames;\n};\n","import {\n Button,\n colors,\n FlyoutMenu,\n IconMore24,\n Layer,\n MenuItem,\n Popper,\n} from \"@dhis2/ui\";\nimport React, { useRef, useState } from \"react\";\nimport { dropdownStyles } from \"./dropdown-menu.styles\";\nimport { useDynamicStyles } from \"../../hooks\";\n\nexport interface DropdownMenuOption {\n id?: string;\n label: string;\n description?: string;\n icon?: any;\n destructive?: boolean;\n onClick?: Function;\n}\n\nconst useCurrentModal = () => {\n const [CurrentModal, setCurrentModal] = useState();\n\n return [\n CurrentModal,\n (Modal: any) => {\n // As setState supports functional updates, we can't pass functional\n // components directly\n setCurrentModal(() => Modal);\n },\n ] as any;\n};\n\nexport const ContextMenu = (params: {\n dropDownOptions: DropdownMenuOption[];\n anchorRef: any;\n onClose: Function;\n onMenuClick: (dropdownOption: DropdownMenuOption) => void;\n}) => {\n const { onClose, onMenuClick, anchorRef, dropDownOptions } = params;\n const [CurrentModal, setCurrentModal] = useCurrentModal();\n\n const styles = useDynamicStyles(dropdownStyles);\n\n return (\n <>\n {/* <Layer onBackdropClick={onClose} className={styles.layer}> */}\n <Layer onBackdropClick={(event: any, data: any) => onClose(event, data)} className={styles.layer}>\n <Popper reference={anchorRef} placement=\"bottom-start\">\n <FlyoutMenu>\n {dropDownOptions.map((dropDownOption, index) => (\n <MenuItem\n key={index}\n destructive={dropDownOption.destructive}\n label={dropDownOption.label}\n icon={dropDownOption.icon}\n onClick={() => {\n onMenuClick(dropDownOption);\n onClose();\n }}\n dense\n />\n ))}\n </FlyoutMenu>\n </Popper>\n </Layer>\n {CurrentModal && (\n <CurrentModal\n onClose={() => {\n onClose();\n setCurrentModal!(null);\n }}\n />\n )}\n </>\n );\n};\n\nexport const DropdownMenu = (props: {\n dropdownOptions: DropdownMenuOption[];\n onClick: (dropdownOption: DropdownMenuOption) => void;\n}) => {\n const ref = useRef();\n const [visible, setVisible] = useState(false);\n const { dropdownOptions, onClick } = props;\n return (\n <div ref={ref as any} style={{ display: \"inline-block\" }}>\n <Button\n small\n secondary\n icon={<IconMore24 color={colors.grey600} />}\n onClick={() => setVisible(true)}\n ></Button>\n {visible && (\n <ContextMenu\n dropDownOptions={dropdownOptions}\n anchorRef={ref}\n onClose={() => setVisible(false)}\n onMenuClick={(dropDownOption) => {\n onClick(dropDownOption);\n }}\n />\n )}\n </div>\n );\n};\n","import {\n Component,\n Input,\n AfterViewInit,\n EventEmitter,\n Output,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\nimport {\n CircularLoader,\n DataTable,\n TableHead,\n DataTableRow,\n DataTableColumnHeader,\n TableBody,\n DataTableCell,\n TableFoot,\n} from '@dhis2/ui';\nimport React, { useState, useEffect } from 'react';\n\nimport { ReactWrapperModule } from '../../../react-wrapper/react-wrapper.component';\nimport * as ReactDOM from 'react-dom/client';\nimport { ColumnDefinition, TableRow } from '../../models/data-table.models';\nimport {\n DropdownMenu,\n DropdownMenuOption,\n} from '../../components/dropdown-menu';\n\n@Component({\n selector: 'app-data-table-ui',\n standalone: false,\n template: '<ng-content></ng-content>',\n styleUrls: ['./data-table-ui.component.scss'],\n})\nexport class DataTableUIComponent\n extends ReactWrapperModule\n implements AfterViewInit, OnChanges\n{\n @Input() data!: TableRow[];\n @Input() columnDefinitions!: ColumnDefinition[];\n @Input() actionOptions?: DropdownMenuOption[];\n @Output() actionSelected = new EventEmitter<{\n action: string;\n row: TableRow;\n }>();\n\n DataTableUI = () => {\n const [columns, setColumns] = useState<ColumnDefinition[]>([]);\n const [tableData, setTableData] = useState<TableRow[]>([]);\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n const hasData = this.data?.length > 0;\n const hasColumns = this.columnDefinitions?.length > 0;\n\n if (!hasData || !hasColumns) {\n setLoading(true);\n return;\n }\n\n const filteredColumns = this.columnDefinitions.filter(\n (col) => col.visible !== false\n );\n const sortedColumns = filteredColumns.sort((a, b) => {\n const indexA = Number(a.index) || 0;\n const indexB = Number(b.index) || 0;\n return indexA - indexB;\n });\n\n setColumns(sortedColumns);\n setTableData(this.data);\n setLoading(false);\n }, [this.data, this.columnDefinitions]);\n\n const getDropdownOptions = (row: TableRow): DropdownMenuOption[] => {\n return (this.actionOptions || []).map((option) => ({\n ...option,\n onClick: () => {\n if (option.onClick) {\n option.onClick(row);\n }\n this.actionSelected.emit({ action: option.label, row });\n },\n }));\n };\n\n return (\n <div>\n {loading ? (\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n padding: 8,\n }}\n >\n <CircularLoader small />\n <div\n style={{\n fontSize: 14,\n }}\n >\n Loading\n </div>\n </div>\n ) : (\n <DataTable>\n <TableHead>\n <DataTableRow>\n {columns.map((col) => (\n <DataTableColumnHeader key={col.column}>\n {col.display}\n </DataTableColumnHeader>\n ))}\n {this.actionOptions && this.actionOptions.length > 0 && (\n <DataTableColumnHeader>Actions</DataTableColumnHeader>\n )}\n </DataTableRow>\n </TableHead>\n <TableBody>\n {tableData.map((row, rowIndex) => (\n <DataTableRow key={rowIndex}>\n {columns.map((col) => (\n <DataTableCell key={col.column}>\n {row[col.column] || '-'}\n </DataTableCell>\n ))}\n {this.actionOptions && this.actionOptions.length > 0 && (\n <DataTableCell>\n <DropdownMenu\n dropdownOptions={getDropdownOptions(row)}\n onClick={(option) => option.onClick?.(row)}\n />\n </DataTableCell>\n )}\n </DataTableRow>\n ))}\n </TableBody>\n <TableFoot>\n <DataTableRow>\n <DataTableCell\n colSpan={(columns.length || 0 + 1).toString()}\n ></DataTableCell>\n </DataTableRow>\n </TableFoot>\n </DataTable>\n )}\n </div>\n );\n };\n\n override async ngAfterViewInit() {\n if (!this.elementRef) throw new Error('No element ref');\n this.reactDomRoot = ReactDOM.createRoot(this.elementRef.nativeElement);\n this.component = this.DataTableUI;\n this.render();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['data'] || changes['columnDefinitions']) {\n if (!this.elementRef) throw new Error('No element ref');\n this.reactDomRoot = ReactDOM.createRoot(this.elementRef.nativeElement);\n this.component = this.DataTableUI;\n this.render();\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SharedDhis2UiModule } from '../../shared/shared.module';\nimport { ReactWrapperModule } from '../react-wrapper/react-wrapper.component';\n\nimport { DataTableUIComponent } from './containers/data-table-ui/data-table-ui.component';\n@NgModule({\n declarations: [DataTableUIComponent],\n exports: [DataTableUIComponent],\n imports: [CommonModule, SharedDhis2UiModule, ReactWrapperModule],\n providers: [],\n})\nexport class DataTableUIModule {}\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport { FormGroup } from '@angular/forms';\nimport { useMemo } from 'react';\nimport { IFormField } from '../interfaces';\n\nexport const useFieldValidation = (props: {\n form: FormGroup;\n field: IFormField<string>;\n touched: boolean;\n value: string;\n initialError?: string;\n recordExistError?: string;\n}) => {\n const { form, touched, field, value, initialError, recordExistError } = props;\n\n const hasError = useMemo(() => {\n if (recordExistError) {\n return true;\n }\n\n if (initialError && value) {\n return true;\n }\n\n return touched && (form.get(field.id) || form.get(field.key))?.invalid;\n }, [value, touched, initialError, recordExistError]);\n\n const validationError = useMemo(() => {\n if (recordExistError) {\n return recordExistError;\n }\n\n if (initialError && value) {\n return initialError;\n }\n\n if (!touched) {\n return undefined;\n }\n\n const error = (form.get(field.id) || form.get(field.key))?.errors;\n\n if (!error) {\n return undefined;\n }\n\n if (error['min']) {\n return `${field.label || 'Value'} should not be less than ${\n error['min'].min\n }!`;\n }\n\n if (error['max']) {\n return `${field.label || 'Value'} should not be greater than ${\n error['max'].max\n }!`;\n }\n\n if (error['pattern']) {\n if (field.type === 'email') {\n return `The email address provided is not valid`;\n }\n\n if (field.type === 'tel') {\n return 'Phone number provided is not valid';\n }\n\n return `${field.label || 'Value'} should have appropriate format`;\n }\n\n if (error['customError']) {\n return error['customError'];\n }\n\n return error['required']\n ? `${field.label || 'Value'} is required`\n : undefined;\n }, [touched, value, initialError, recordExistError]);\n\n return { validationError, hasError };\n};\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './field-validation.hook';\n","import { format } from 'date-fns';\nimport {\n FieldControlType,\n FormFieldMetaType,\n IFormField,\n IFieldDropdown,\n FormFieldExtension,\n} from '../interfaces';\n\ninterface FormFieldFunction<T> {\n setMax: (field: Partial<IFormField<T>>) => string | number | Date | undefined;\n}\n\nexport class FormField<T> implements IFormField<T>, FormFieldFunction<T> {\n value?: T | '';\n id: string;\n code?: string;\n key: string;\n referenceKey?: string;\n label: string;\n required: boolean;\n order?: number;\n controlType: FieldControlType;\n type: string;\n disabled?: boolean;\n options?: IFieldDropdown[];\n placeholder?: string;\n min?: number | Date | string;\n max?: number | Date | string;\n maxLength?: number | string;\n hidden: boolean;\n units?: string;\n generated?: boolean;\n unique?: boolean;\n isDataElement?: boolean;\n isAttribute?: boolean;\n isOrgUnit?: boolean;\n isEnrollmentDate?: boolean;\n event?: string;\n programStage?: string;\n program?: string;\n trackedEntityInstance?: string;\n trackedEntityType?: string;\n hasOptions?: boolean;\n dependentField?: any;\n fieldOptionsDependsOn?: string;\n displayInList?: boolean;\n displayInReports?: boolean;\n searchable?: boolean;\n metaType?: FormFieldMetaType;\n stepId?: string;\n availableOptionsLabel?: string;\n selectedOptionsLabel?: string;\n allowFutureDate?: boolean;\n extension?: FormFieldExtension;\n\n constructor(options: Partial<FormField<T>> = {}) {\n this.value = options.value || '';\n this.key = options.key || '';\n this.referenceKey = options.referenceKey || '';\n this.id = options.id || '';\n this.code = options.code || '';\n this.label = options.label || '';\n this.required = !!options.required;\n this.order = options.order === undefined ? 1 : options.order;\n this.controlType = options.controlType as FieldControlType;\n this.type = options.type || '';\n this.options = options.options || [];\n this.disabled = options.disabled ?? false;\n this.placeholder = options.placeholder || '';\n this.min = options.min;\n this.max = this.setMax(options);\n this.maxLength = options.maxLength as number;\n this.hidden = options.hidden || false;\n this.unique = options.unique || false;\n this.generated = options.generated || false;\n this.isDataElement = options.isDataElement;\n this.isAttribute = options.isAttribute;\n this.isOrgUnit = options.isOrgUnit;\n this.isEnrollmentDate = options.isEnrollmentDate;\n this.event = options.event;\n this.programStage = options.programStage;\n this.program = options.program;\n this.trackedEntityInstance = options.trackedEntityInstance;\n this.trackedEntityType = options.trackedEntityType;\n this.hasOptions = options.hasOptions;\n this.dependentField = options.dependentField;\n this.displayInList = options.displayInList;\n this.displayInReports = options.displayInReports;\n this.searchable = options.searchable;\n this.unique = options.unique;\n this.metaType = options.metaType;\n this.stepId = options.stepId;\n this.availableOptionsLabel =\n options.availableOptionsLabel ?? 'Available options';\n this.selectedOptionsLabel =\n options.availableOptionsLabel ?? 'Selected options';\n this.allowFutureDate = options.allowFutureDate;\n this.extension = options.extension;\n }\n\n setMax(field: Partial<FormField<T>>): string | number | Date | undefined {\n if (field.controlType !== 'date') {\n return field.max;\n }\n\n if (field.allowFutureDate) {\n return undefined;\n }\n\n return format(new Date(), 'yyyy-MM-dd');\n }\n}\n","import { FieldControlType } from '../interfaces';\nimport { FormField } from './form-field.model';\n\nexport class Boolean extends FormField<string> {\n override controlType: FieldControlType = 'boolean';\n}\n","import { FormField } from './form-field.model';\nimport { FieldControlType } from '../interfaces';\n\nexport class CheckBox extends FormField<string> {\n override controlType: FieldControlType = 'checkbox';\n}\n","import { format } from 'date-fns';\nimport { FieldControlType } from '../interfaces';\nimport { FormField } from './form-field.model';\n\nexport class DateField extends FormField<string> {\n override controlType: FieldControlType = 'date';\n override type = 'date';\n constructor(field: Partial<DateField>) {\n super(field);\n this.max = field.max ?? format(new Date(), 'yyyy-MM-dd');\n }\n}\n","import { FormField } from './form-field.model';\nimport { FieldControlType } from '../interfaces';\n\nexport class Dropdown extends FormField<string> {\n override controlType: FieldControlType = 'dropdown';\n}\n","// Copyright 2024 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport class FieldConfig {\n hideLabel?: boolean;\n inputWidth: string;\n\n constructor(config?: Partial<FieldConfig>) {\n this.hideLabel = config?.hideLabel ?? false;\n this.inputWidth = config?.inputWidth || '100%';\n }\n}\n","// Copyright 2024 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport class DateRangeValue {\n startDate!: string;\n endDate!: string;\n}\n","export enum FieldType {\n TEXT = 'TEXT',\n MULTI_TEXT = 'MULTI_TEXT',\n TRUE_ONLY = 'TRUE_ONLY',\n LONG_TEXT = 'LONG_TEXT',\n BOOLEAN = 'BOOLEAN',\n NUMBER = 'NUMBER',\n INTEGER_ZERO_OR_POSITIVE = 'INTEGER_ZERO_OR_POSITIVE',\n IMAGE = 'IMAGE',\n FILE_RESOURCE = 'FILE_RESOURCE',\n DATE = 'DATE',\n DATE_TIME = 'DATETIME',\n ORG_UNIT = 'ORGANISATION_UNIT',\n PHONE_NUMBER = 'PHONE_NUMBER',\n EMAIL = 'EMAIL',\n}\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './form-field.interface';\nexport * from './field-dropdown.interface';\nexport * from './field-control-type.interface';\nexport * from './field-type.interface';\nexport * from './form-field-meta-type.interface';\nexport * from './form-configuration.model';\nexport * from './form-field-group.interface';\nexport * from './form-metadata-section.interface';\nexport * from './form-metadata.interface';\nexport * from './form-field-extension.interface';\n","import { sortBy } from 'lodash';\nimport { FieldType, IFieldDropdown } from '../interfaces';\n\nexport class FieldDropdown implements IFieldDropdown {\n key!: string;\n value!: string;\n label!: string;\n order?: number | undefined;\n\n constructor(params: IFieldDropdown) {\n this.key = params.key;\n this.value = params.value;\n this.label = params.label;\n this.order = params.order;\n }\n\n toJson(): IFieldDropdown {\n return {\n key: this.key,\n value: this.value,\n label: this.label,\n order: this.order,\n };\n }\n\n static getDropdownOptions(field: any, locale?: string): FieldDropdown[] {\n if (field?.valueType === FieldType.BOOLEAN) {\n return [\n {\n key: 'Yes',\n value: 'true',\n label: 'Yes',\n order: 1,\n },\n {\n key: 'No',\n value: 'false',\n label: 'No',\n order: 2,\n },\n ].map((dropdown) => new FieldDropdown(dropdown));\n }\n\n return sortBy(\n (field?.optionSet?.options || []).map(\n (option: { id: any; code: any; name: any; sortOrder: any }) => {\n return new FieldDropdown({\n key: option.id,\n value: option.code,\n label: option.name,\n order: option.sortOrder,\n });\n }\n ),\n 'order'\n );\n }\n}\n","import { FieldConfig } from './field-config.model';\n\nexport type FormDirection = 'horizontal' | 'vertical';\n\nexport class FormConfig {\n direction: FormDirection;\n showSaveButton: boolean;\n formName?: string;\n fieldConfig!: FieldConfig;\n\n constructor(config?: Partial<FormConfig>) {\n this.direction = config?.direction || 'vertical';\n this.showSaveButton = config?.showSaveButton ?? true;\n this.fieldConfig = config?.fieldConfig || new FieldConfig();\n this.formName = config?.formName;\n }\n\n get directionClassName() {\n return this.direction === 'vertical' ? 'form-vertical' : 'form-horizontal';\n }\n}\n","import { sortBy } from 'lodash';\n\nimport { FieldControlType, FieldType } from '../interfaces';\nimport { DropdownOption } from '../models';\n\nexport class FieldUtil {\n static getFieldDropdownOptions(field: any): DropdownOption[] {\n if (field.valueType === FieldType.BOOLEAN) {\n return [\n {\n key: 'Yes',\n value: 'true',\n label: 'Yes',\n order: 1,\n },\n {\n key: 'No',\n value: 'false',\n label: 'No',\n order: 2,\n },\n ];\n }\n\n return FieldUtil.sanitizeOptions(field.optionSet?.options || []);\n }\n\n static sanitizeOptions(options: any[]): any {\n return sortBy(\n (options || []).map((option) => ({\n key: option.id,\n value: option.code,\n label: option.name,\n order: option.sortOrder,\n color: option.style?.color,\n attributeValues: option.attributeValues,\n options: FieldUtil.sanitizeOptions(option.options),\n })),\n 'order'\n );\n }\n\n static getFieldType(valueType: string) {\n switch (valueType) {\n case FieldType.NUMBER:\n return 'number';\n case FieldType.PHONE_NUMBER:\n return 'tel';\n case FieldType.EMAIL:\n return 'email';\n case FieldType.ORG_UNIT:\n return 'org-unit';\n case FieldType.DATE:\n return 'date';\n case FieldType.FILE_RESOURCE:\n return 'file';\n default:\n return 'text';\n }\n }\n\n static getFieldControlType(\n valueType: string,\n hasOptions: boolean\n ): FieldControlType {\n if (hasOptions) {\n return 'dropdown';\n }\n\n switch (valueType) {\n case FieldType.TEXT:\n return 'textbox';\n case FieldType.LONG_TEXT:\n return 'textarea';\n case FieldType.TRUE_ONLY:\n return 'checkbox';\n case FieldType.NUMBER:\n return 'textbox';\n case FieldType.PHONE_NUMBER:\n return 'textbox';\n case FieldType.ORG_UNIT:\n return 'org-unit';\n case FieldType.DATE:\n return 'date';\n case FieldType.DATE_TIME:\n return 'date-time';\n case FieldType.IMAGE:\n return 'image';\n case FieldType.FILE_RESOURCE:\n return 'file';\n default:\n return 'textbox';\n }\n }\n\n static getOptionEntities?(options: any[]) {\n return (options || []).reduce((entity, option) => {\n return { ...entity, [option.value]: option.label };\n }, {});\n }\n}\n","import { FieldControlType, FieldType } from '../interfaces';\n\nexport class FieldControlTypeUtil {\n static getFieldControlType(\n valueType: string,\n hasOptions: boolean\n ): FieldControlType {\n if (hasOptions) {\n if (valueType === FieldType.MULTI_TEXT) {\n return 'multi-dropdown';\n }\n return 'dropdown';\n }\n\n switch (valueType) {\n case FieldType.TEXT:\n return 'textbox';\n case FieldType.MULTI_TEXT:\n return 'multi-dropdown';\n case FieldType.BOOLEAN:\n return 'dropdown';\n case FieldType.LONG_TEXT:\n return 'textarea';\n case FieldType.TRUE_ONLY:\n return 'checkbox';\n case FieldType.NUMBER:\n return 'textbox';\n case FieldType.INTEGER_ZERO_OR_POSITIVE:\n return 'textbox';\n case FieldType.ORG_UNIT:\n return 'org-unit';\n case FieldType.DATE:\n return 'date';\n case FieldType.DATE_TIME:\n return 'date-time';\n case FieldType.IMAGE:\n return 'image';\n case FieldType.FILE_RESOURCE:\n return 'file';\n default:\n return 'textbox';\n }\n }\n}\n","import { FieldType } from '../interfaces';\n\nexport class FormFieldTypeUtil {\n static getFieldType(valueType: string) {\n switch (valueType) {\n case FieldType.NUMBER:\n return 'number';\n case FieldType.INTEGER_ZERO_OR_POSITIVE:\n return 'number';\n case FieldType.ORG_UNIT:\n return 'org-unit';\n case FieldType.IMAGE:\n return 'image';\n case FieldType.FILE_RESOURCE:\n return 'file';\n default:\n return 'text';\n }\n }\n}\n","import {\n UntypedFormControl,\n UntypedFormGroup,\n Validators,\n} from '@angular/forms';\nimport { camelCase, find, isArray } from 'lodash';\nimport { FormField } from '../models';\nimport { FieldUtil } from '../utils';\nimport { IFormField } from '../interfaces';\n\nexport class FormUtil {\n static getFormGroup(\n fields: IFormField<string>[],\n dataEntities: any\n ): UntypedFormGroup {\n const group: any = {};\n (fields || []).forEach((field: IFormField<string>) => {\n if (field) {\n const value = FormUtil.getFieldValue(field, dataEntities);\n const minValidators = field.min\n ? [Validators.min(field.min as number)]\n : [];\n\n const maxValidators = field.max\n ? [Validators.max(field.max as number)]\n : [];\n\n const phoneNumberValidator = field.type === 'tel' ? [] : [];\n\n const emailValidator =\n field.type === 'email'\n ? [\n Validators.pattern(\n '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}$'\n ),\n ]\n : [];\n\n group[field.key] = field.required\n ? new UntypedFormControl(\n { value, disabled: field.disabled },\n {\n validators: [\n Validators.required,\n ...minValidators,\n ...maxValidators,\n ...phoneNumberValidator,\n ...emailValidator,\n ],\n updateOn: 'change',\n }\n )\n : new UntypedFormControl(\n { value, disabled: field.disabled },\n {\n validators: [\n ...minValidators,\n ...maxValidators,\n ...phoneNumberValidator,\n ...emailValidator,\n ],\n }\n );\n\n if (field.referenceKey) {\n const value = dataEntities\n ? dataEntities[field.referenceKey] || ''\n : '';\n group[field.referenceKey] = field.required\n ? new UntypedFormControl(\n { value, disabled: field.disabled },\n {\n validators: [\n Validators.required,\n ...minValidators,\n ...maxValidators,\n ...phoneNumberValidator,\n ...emailValidator,\n ],\n updateOn: 'change',\n }\n )\n : new UntypedFormControl(\n { value, disabled: field.disabled },\n {\n validators: [\n ...minValidators,\n ...maxValidators,\n ...phoneNumberValidator,\n ...emailValidator,\n ],\n }\n );\n }\n }\n });\n\n return new UntypedFormGroup(group);\n }\n\n static getFieldValue(\n field: IFormField<string>,\n dataEntities: Record<string, any>\n ) {\n const fieldValue = dataEntities\n ? dataEntities[field.id] || dataEntities[field.key] || ''\n : '';\n\n return isArray(fieldValue) ? JSON.stringify(fieldValue) : fieldValue;\n }\n\n static getFormFields(fields: any[]): FormField<string>[] {\n return (fields || []).map((field: any) => {\n const options = FieldUtil.getFieldDropdownOptions(field);\n\n const dependentField = find(fields, ['id', field.fieldOptionsDependsOn]);\n\n const label = field.formName || field.name || field.displayName;\n\n return new FormField<string>({\n id: field.id,\n label,\n code: field.code,\n key: camelCase(field.code) || field.id,\n referenceKey: field.referenceKey,\n required: field.mandatory && !field.generated,\n displayInList: field.displayInList,\n type: FieldUtil.getFieldType(field.valueType),\n controlType: FieldUtil.getFieldControlType(\n field.valueType,\n options?.length > 0 || field.hasOptions\n ),\n options,\n isDataElement: field.isDataElement,\n isAttribute: field.isAttribute,\n isOrgUnit: field.isOrgUnit,\n isEnrollmentDate: field.isEnrollmentDate,\n programStage: field.stageId,\n event: field.event,\n trackedEntityInstance: field.trackedEntityInstance,\n disabled: field.disabled || field.generated,\n dependentField: dependentField,\n min: field.min,\n max: field.max,\n maxLength: field.maxLength,\n });\n });\n }\n\n static createField(\n id: string,\n label: string,\n required: boolean,\n controlType:\n | 'textbox'\n | 'dropdown'\n | 'textarea'\n | 'transfer'\n | 'search'\n | 'file',\n disabled?: boolean,\n placeholder?: string,\n options?: Array<any>\n ): FormField<string> {\n return new FormField<string>({\n id,\n code: id,\n key: id,\n label,\n required,\n controlType,\n type: 'text',\n options: options ?? [],\n disabled: disabled ?? false,\n placeholder: placeholder,\n });\n }\n}\n","import { FormValue } from '../models';\n\nexport class FormValueUtil {\n static getFormDataEntities(formValueEntities: Record<string, FormValue>) {\n const formValueKeys = Object.keys(formValueEntities);\n\n return formValueKeys.reduce((entity, key) => {\n const formValue = formValueEntities[key];\n\n const formRawValues = formValue.form.getRawValue() || {};\n const dataValueEntities = Object.keys(formRawValues).reduce(\n (valueObject, key) => {\n const field = formValue.fields.find((field) => field.id === key);\n\n if (!field) {\n return valueObject;\n }\n\n return {\n ...valueObject,\n [key]: {\n ...field,\n value: formRawValues[key],\n attribute: field?.isAttribute ? field.id : undefined,\n dataElement: field?.isDataElement ? field.id : undefined,\n },\n };\n },\n {}\n );\n return { ...entity, ...dataValueEntities };\n }, {});\n }\n}\n","export class TranslationUtil {\n static getTranslatedFormName(\n field: Record<string, unknown>,\n locale = 'sw'\n ): string {\n const translation = (\n (field['translations'] as Record<string, unknown>[]) || []\n ).find(\n (translation) =>\n translation['locale'] == locale && translation['property'] == 'NAME'\n );\n\n return (\n translation ? translation['value'] : field['formName'] || field['name']\n ) as string;\n }\n}\n","// Copyright 2023 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nimport { camelCase, find } from 'lodash';\nimport { FormFieldMetaType, IFormField, IFormFieldGroup } from '../interfaces';\nimport { FieldUtil, TranslationUtil } from '../utils';\nimport { FieldDropdown } from './field-dropdown.model';\nimport { FormField } from './form-field.model';\nimport { FormFieldExtension } from '../interfaces/form-field-extension.interface';\n\nexport class FormFieldGroup implements IFormFieldGroup {\n id!: string;\n name!: string;\n translations?: any;\n isFormHorizontal?: boolean | undefined;\n attributes?: string[] | object[] | undefined;\n dataElements?: string[] | object[] | undefined;\n booleanGroupedDataElements?: string[] | object[] | undefined;\n repeatableStage?: string | undefined;\n repeatDependentField?: string | undefined;\n dataKey?: string | undefined;\n\n constructor(\n private params: {\n formFieldGroup: Partial<FormFieldGroup>;\n fieldMetaData: Record<string, unknown>[];\n locale?: string;\n formFieldExtensions?: FormFieldExtension[];\n }\n ) {}\n\n get fields(): IFormField<string>[] {\n const fields = this.params.formFieldGroup?.fields || [];\n return fields\n .map((field) => {\n if (field instanceof FormField) {\n return field;\n }\n\n const fieldMetaData = this.params.fieldMetaData.find(\n (attribute) => attribute['id'] === field.id\n );\n\n if (!fieldMetaData) {\n return null;\n }\n\n const dependentField = find(fields, [\n 'id',\n field?.fieldOptionsDependsOn,\n ]);\n\n const options = FieldDropdown.getDropdownOptions(\n fieldMetaData as any,\n this.params.locale\n );\n\n const hasOptions = (options?.length > 0 ||\n dependentField !== undefined ||\n fieldMetaData['hasOptions']) as boolean;\n\n const extension = this.params.formFieldExtensions?.find(\n (fieldExtension) => fieldExtension?.id === field.id\n );\n\n return new FormField({\n ...(fieldMetaData || {}),\n ...field,\n id: field.id,\n code: fieldMetaData['code'] as string,\n label: (fieldMetaData['formName'] ??\n fieldMetaData['name'] ??\n field['label']) as string,\n key: camelCase(fieldMetaData['code'] as string) || field.id,\n required: (fieldMetaData['mandatory'] ??\n fieldMetaData['required']) as boolean,\n type: FieldUtil.getFieldType(fieldMetaData['valueType'] as string),\n dependentField,\n options,\n disabled:\n field.disabled ??\n (fieldMetaData['disabled'] as boolean) ??\n (fieldMetaData['generated'] as boolean),\n min: field.min ?? (fieldMetaData['min'] as number),\n max: field.max ?? (fieldMetaData['max'] as number),\n order:\n field.order ??\n ((fieldMetaData['order'] ?? fieldMetaData['sortOrder']) as number),\n hidden: field.hidden ?? (fieldMetaData['hidden'] as boolean),\n fieldOptionsDependsOn: field.fieldOptionsDependsOn,\n hasOptions,\n controlType: FieldUtil.getFieldControlType(\n fieldMetaData['valueType'] as string,\n hasOptions\n ),\n metaType: fieldMetaData['metaType'] as FormFieldMetaType,\n stepId: fieldMetaData['stepId'] as string,\n extension,\n });\n })\n .filter((field) => field) as IFormField<string>[];\n }\n\n toJson(): IFormFieldGroup {\n return {\n id: this.params.formFieldGroup?.id as string,\n name: TranslationUtil.getTranslatedFormName(\n this.params.formFieldGroup,\n this.params.locale\n ) as string,\n isFormHorizontal: this.params.formFieldGroup?.isFormHorizontal,\n repeatDependentField: this.params.formFieldGroup?.repeatDependentField,\n dataKey: this.params.formFieldGroup?.dataKey,\n repeatableStage: this.params.formFieldGroup?.repeatableStage,\n fields: this.fields,\n };\n }\n}\n","import {\n Option,\n ProgramRule,\n ProgramRuleAction,\n ProgramRuleVariable,\n} from '@iapps/d2-web-sdk';\nimport { camelCase } from 'lodash';\n\ninterface JsonTransformer<T> {\n toJson: () => T;\n}\n\nexport interface IMetadataRuleAction {\n field: string;\n actionType: string;\n assignedData?: string;\n displayedContent?: string;\n options?: Partial<Option>[];\n}\n\nexport class MetadataRuleAction\n implements IMetadataRuleAction, JsonTransformer<IMetadataRuleAction>\n{\n constructor(\n private ruleAction: ProgramRuleAction,\n private ruleVariables: ProgramRuleVariable[]\n ) {}\n get field(): string {\n return (\n (this.ruleAction.dataElement?.id as string) ||\n (this.ruleAction.trackedEntityAttribute?.id as string)\n );\n }\n\n get actionType(): string {\n return this.ruleAction.programRuleActionType;\n }\n\n get assignedData(): string | undefined {\n const regex = /(A|#|V)\\{([^}]+)\\}/g;\n\n return this.ruleAction?.data?.replace(regex, (match, _, dataVariable) => {\n const ruleVariableObject = this.ruleVariables?.find(\n (variable) => variable.name === dataVariable\n );\n\n if (!ruleVariableObject) {\n return `{${dataVariable}}`;\n }\n\n const code =\n camelCase(ruleVariableObject?.dataElement?.code) ||\n ruleVariableObject?.dataElement?.id ||\n camelCase(ruleVariableObject?.trackedEntityAttribute?.code) ||\n ruleVariableObject?.trackedEntityAttribute?.id;\n\n return `{${code}}`;\n });\n }\n\n get displayedContent(): string | undefined {\n return this.ruleAction.displayContent;\n }\n\n get options(): Partial<Option>[] | undefined {\n if (this.ruleAction.option) {\n return [this.ruleAction.option];\n }\n\n return this.ruleAction.optionGroup?.options || [];\n }\n\n toJson(): IMetadataRuleAction {\n return {\n field: this.field,\n actionType: this.actionType,\n assignedData: this.assignedData,\n displayedContent: this.ruleAction.displayContent,\n options: this.options,\n };\n }\n}\n\nexport interface IMetadataRule {\n actions: IMetadataRuleAction[];\n condition: string;\n}\n\nexport class MetadataRule\n implements IMetadataRule, JsonTransformer<IMetadataRule>\n{\n constructor(\n private rule: ProgramRule,\n private ruleVariables: ProgramRuleVariable[]\n ) {}\n\n get actions(): MetadataRuleAction[] {\n return (this.rule?.programRuleActions || []).map(\n (action) => new MetadataRuleAction(action, this.ruleVariables)\n );\n }\n\n get condition(): string {\n const regex = /(A|#|V)\\{([^}]+)\\}/g;\n\n return this.rule?.condition?.replace(regex, (match, _, ruleVariable) => {\n const ruleVariableObject = this.ruleVariables?.find(\n (variable) => variable.name === ruleVariable\n );\n\n if (!ruleVariableObject) {\n return `{${ruleVariable}}`;\n }\n\n const code =\n camelCase(ruleVariableObject?.dataElement?.code) ||\n ruleVariableObject?.dataElement?.id ||\n camelCase(ruleVariableObject?.trackedEntityAttribute?.code) ||\n ruleVariableObject?.trackedEntityAttribute?.id;\n\n return `{${code}}`;\n });\n }\n\n toJson(): IMetadataRule {\n return {\n actions: this.actions.map((action) => action.toJson()),\n condition: this.condition,\n };\n }\n}\n","import {\n IFormMetadataSection,\n IFormFieldGroup,\n FormFieldExtension,\n} from '../interfaces';\nimport { FormFieldGroup } from './form-field-group.model';\nimport { flatten } from 'lodash';\n\nexport class FormMetadataSection implements IFormMetadataSection {\n id!: string;\n name!: string;\n program?: string | undefined;\n sectionStateComplete?: boolean | undefined;\n description?: string | undefined;\n translations?: any;\n inheritedAttributes = [];\n\n constructor(\n private params: {\n section: Partial<IFormMetadataSection>;\n program: Record<string, unknown>;\n locale?: string;\n excludeInheritedAttributes?: boolean;\n formFieldExtensions?: FormFieldExtension[];\n }\n ) {\n this.inheritedAttributes =\n ((this.params.program['trackedEntityType'] as any) || {})[\n 'trackedEntityTypeAttributes'\n ] || [];\n }\n\n get attributes() {\n let programTrackedEntityAttributes =\n (this.params.program['programTrackedEntityAttributes'] as Record<\n string,\n unknown\n >[]) || [];\n\n if (this.params.excludeInheritedAttributes) {\n programTrackedEntityAttributes = programTrackedEntityAttributes.filter(\n (programTrackedEntityAttribute) => {\n return !this.inheritedAttributes.find(\n (inheritedAttribute: any) =>\n inheritedAttribute['trackedEntityAttribute']?.id ===\n (programTrackedEntityAttribute['trackedEntityAttribute'] as any)\n ?.id\n );\n }\n );\n }\n\n return programTrackedEntityAttributes.map(\n (programTrackedEntityAttribute) => {\n return {\n ...(programTrackedEntityAttribute['trackedEntityAttribute'] as Record<\n string,\n unknown\n >),\n sortOrder: programTrackedEntityAttribute['sortOrder'],\n mandatory: programTrackedEntityAttribute['mandatory'],\n allowFutureDate: programTrackedEntityAttribute['allowFutureDate'],\n trackedEntityType: ((this.params.program[\n 'trackedEntityType'\n ] as Record<string, unknown>) || {})['id'],\n metaType: 'ATTRIBUTE',\n };\n }\n );\n }\n\n get dataElements() {\n return flatten(\n (\n (this.params.program['programStages'] as Record<string, unknown>[]) ||\n []\n ).map((programStage) => {\n return (\n (programStage['programStageDataElements'] as Record<\n string,\n unknown\n >[]) || []\n ).map((stageDataElement) => {\n return {\n ...((stageDataElement['dataElement'] as Record<string, unknown>) ||\n {}),\n mandatory: stageDataElement['compulsory'],\n allowFutureDate: stageDataElement['allowFutureDate'],\n stepId: programStage['id'],\n metaType: 'DATA_ELEMENT',\n };\n });\n })\n );\n }\n\n get fieldGroups(): IFormFieldGroup[] {\n return (this.params.section.fieldGroups || []).map((formFieldGroup) => {\n return new FormFieldGroup({\n formFieldGroup,\n fieldMetaData: [...this.attributes, ...this.dataElements],\n locale: this.params.locale,\n formFieldExtensions: this.params.formFieldExtensions,\n }).toJson();\n });\n }\n\n toJson(): IFormMetadataSection {\n return {\n id: this.params.section?.id as string,\n name: this.params.section?.name as string,\n fieldGroups: this.fieldGroups.filter(\n (fieldGroup) => fieldGroup.fields?.length > 0\n ),\n };\n }\n}\n","import { camelCase, flatten } from 'lodash';\n\nimport { FormMetadataSection } from './form-metadata-section.model';\nimport { IMetadataRule, MetadataRule } from './form-metadata-rule.model';\nimport { FormField } from './form-field.model';\nimport { Program, ProgramRule, ProgramRuleVariable } from '@iapps/d2-web-sdk';\nimport {\n IFormField,\n IFormMetadata,\n IFormMetadataSection,\n FormFieldExtension,\n} from '../interfaces';\nimport { DateField } from './date-field.model';\nimport { TranslationUtil } from '../utils';\n\nexport class FormMetaData implements IFormMetadata {\n id!: string;\n name!: string;\n description?: string | undefined;\n downloadSqlView?: string | undefined;\n\n constructor(\n private params: {\n programs: Program[];\n locale?: string;\n splitRegistrationSection?: boolean;\n includeAllProgramStages?: boolean;\n disableEnrollmentDate?: boolean;\n excludeInheritedAttributes?: boolean;\n programStage?: string;\n customFormMetaData?: Partial<FormMetaData>;\n formFieldExtensions?: FormFieldExtension[];\n }\n ) {}\n\n get sections(): IFormMetadataSection[] {\n const customSections = this.params.customFormMetaData?.sections;\n\n if (!customSections) {\n return this.#getSectionFromPrograms(this.params.programs);\n }\n\n return (this.params.customFormMetaData?.sections || [])\n .map((section) => {\n const program = this.params.programs.find(\n (program) => section.program === program['id']\n );\n\n if (!program) {\n return null;\n }\n\n return new FormMetadataSection({\n section,\n program,\n locale: this.params.locale,\n formFieldExtensions: this.params.formFieldExtensions,\n }).toJson();\n })\n .filter((section) => section !== null) as IFormMetadataSection[];\n }\n\n get fields(): IFormField<string>[] {\n return flatten(\n flatten(\n this.sections.map((section) =>\n section.fieldGroups.map((fieldGroup) => fieldGroup.fields || [])\n )\n )\n );\n }\n\n get rules(): IMetadataRule[] {\n let ruleVariables: ProgramRuleVariable[] = [];\n return [\n ...(this.params.customFormMetaData?.rules || []),\n ...(\n flatten(\n this.params.programs.map((program) => {\n ruleVariables = [\n ...ruleVariables,\n ...(program.programRuleVariables as ProgramRuleVariable[]),\n ];\n return program.programRules;\n })\n ) || []\n ).map((rule) =>\n new MetadataRule(rule as ProgramRule, ruleVariables).toJson()\n ),\n ];\n }\n\n #getSectionFromPrograms(programs: Program[]): IFormMetadataSection[] {\n const sections = flatten(\n programs.map((program) => {\n if (this.params.programStage) {\n return this.#getProgramStageSections(\n program,\n this.params.programStage\n );\n }\n\n return [\n ...(this.params.splitRegistrationSection\n ? [\n this.#getRegisteringUnitSection(program),\n this.#getReportingDateSection(program),\n this.#getRegistrationSection(program),\n ]\n : [this.#getMergedRegistrationSection(program)]),\n ...this.#getProgramStageSections(program),\n ];\n })\n );\n\n if (sections.length === 0) {\n return [];\n }\n\n return sections as IFormMetadataSection[];\n }\n\n #getProgramStageSections(program: Program, programStageId?: string) {\n const programStages = programStageId\n ? (program.programStages || []).filter(\n (programStage) => programStage.id === programStageId\n )\n : this.params.includeAllProgramStages\n ? program.programStages\n : program.useFirstStageDuringRegistration\n ? [(program.programStages || [])[0]]\n : [];\n\n return (programStages || []).map((programStage) => {\n return new FormMetadataSection({\n section: {\n id: programStage.id,\n name: programStage.name,\n fieldGroups:\n (programStage.programStageSections || []).length > 0\n ? programStage.programStageSections!.map(\n (programStageSection) => {\n return {\n id: programStageSection.id,\n name: programStageSection.name,\n dataKey: camelCase(programStage.code),\n repeatableStage: programStage.repeatable\n ? programStage.id\n : undefined,\n sortOrder: programStageSection.sortOrder,\n fields: programStageSection.dataElements as any,\n };\n }\n )\n : [\n {\n id: programStage.id,\n dataKey: camelCase(programStage.code),\n repeatableStage: programStage.repeatable\n ? programStage.id\n : undefined,\n fields: (programStage.programStageDataElements || []).map(\n (programStageDataElement) => {\n return {\n id: programStageDataElement.dataElement?.id,\n };\n }\n ) as any,\n },\n ],\n },\n program,\n locale: this.params.locale,\n excludeInheritedAttributes: this.params.excludeInheritedAttributes,\n formFieldExtensions: this.params.formFieldExtensions,\n }).toJson();\n });\n }\n\n #getRegisteringUnitSection(program: Program): IFormMetadataSection {\n return new FormMetadataSection({\n section: {\n id: 'registering_unit_details',\n name: 'Registering unit details',\n fieldGroups: [\n {\n id: 'registering_unit_details',\n sortOrder: 1,\n isFormHorizontal: false,\n fields: [\n new FormField<string>({\n id: 'orgUnit',\n key: 'orgUnit',\n label: program.orgUnitLabel || 'Registering unit',\n code: 'orgUnit',\n required: true,\n controlType: 'org-unit',\n isOrgUnit: true,\n }),\n ],\n },\n ],\n },\n program,\n locale: this.params.locale,\n excludeInheritedAttributes: this.params.excludeInheritedAttributes,\n formFieldExtensions: this.params.formFieldExtensions,\n }).toJson();\n }\n\n #getReportingDateSection(program: Program): IFormMetadataSection {\n return new FormMetadataSection({\n section: {\n id: 'reporting_dates',\n name: 'Reporting dates',\n fieldGroups: [\n {\n id: 'reporting_dates',\n sortOrder: 1,\n isFormHorizontal: false,\n fields: [\n new DateField({\n id: 'enrollmentDate',\n label: program.enrollmentDateLabel || 'Enrollment date',\n code: 'enrollmentDate',\n key: 'enrollmentDate',\n required: true,\n disabled: this.params.disableEnrollmentDate,\n }),\n program.displayIncidentDate\n ? new DateField({\n id: 'incidentDate',\n label: program.incidentDateLabel || 'Incident date',\n code: 'incidentDate',\n key: 'incidentDate',\n required: true,\n })\n : null,\n ].filter((field) => field) as FormField<string>[],\n },\n ],\n },\n program,\n locale: this.params.locale,\n excludeInheritedAttributes: this.params.excludeInheritedAttributes,\n formFieldExtensions: this.params.formFieldExtensions,\n }).toJson();\n }\n\n #getRegistrationSection(program: Program): IFormMetadataSection {\n return new FormMetadataSection({\n section: {\n id: 'registration',\n name: 'Registration',\n fieldGroups:\n (program.programSections || []).length > 0\n ? program.programSections!.map((programSection) => {\n return {\n id: programSection.id,\n name: programSection.name,\n sortOrder: programSection.sortOrder,\n fields: programSection.trackedEntityAttributes as any,\n };\n })\n : [\n {\n id: 'registration',\n name: '',\n sortOrder: 1,\n fields: (program.programTrackedEntityAttributes || []).map(\n (programTrackedEntityAttribute) => {\n return {\n id: programTrackedEntityAttribute.trackedEntityAttribute\n ?.id,\n };\n }\n ),\n },\n ],\n },\n program,\n locale: this.params.locale,\n excludeInheritedAttributes: this.params.excludeInheritedAttributes,\n formFieldExtensions: this.params.formFieldExtensions,\n }).toJson();\n }\n\n #getMergedRegistrationSection(program: Program): IFormMetadataSection {\n return new FormMetadataSection({\n section: {\n id: 'registration',\n name: 'Registration',\n fieldGroups: [\n {\n id: 'registering_unit_details',\n name: 'Registering unit details',\n sortOrder: 1,\n isFormHorizontal: false,\n fields: [\n new FormField<string>({\n id: 'orgUnit',\n key: 'orgUnit',\n label: program.orgUnitLabel || 'Registering unit',\n code: 'orgUnit',\n required: true,\n controlType: 'org-unit',\n }),\n ],\n },\n {\n id: 'reporting_dates',\n name: 'Reporting dates',\n sortOrder: 1,\n isFormHorizontal: false,\n fields: [\n new DateField({\n id: 'enrollmentDate',\n label: program.enrollmentDateLabel || 'Enrollment date',\n code: 'enrollmentDate',\n key: 'enrollmentDate',\n required: true,\n disabled: this.params.disableEnrollmentDate,\n }),\n program.displayIncidentDate\n ? new DateField({\n id: 'incidentDate',\n label: program.incidentDateLabel || 'Incident date',\n code: 'incidentDate',\n key: 'incidentDate',\n required: true,\n })\n : null,\n ].filter((field) => field) as FormField<string>[],\n },\n ...((program.programSections || []).length > 0\n ? program.programSections!.map((programSection) => {\n return {\n id: programSection.id,\n name: programSection.name,\n sortOrder: programSection.sortOrder,\n fields: programSection.trackedEntityAttributes as any,\n };\n })\n : [\n {\n id: 'registration',\n name: 'Registration',\n sortOrder: 1,\n fields: (program.programTrackedEntityAttributes || []).map(\n (programTrackedEntityAttribute) => {\n return {\n id: programTrackedEntityAttribute.trackedEntityAttribute\n ?.id,\n };\n }\n ),\n },\n ]),\n ],\n },\n program,\n locale: this.params.locale,\n excludeInheritedAttributes: this.params.excludeInheritedAttributes,\n formFieldExtensions: this.params.formFieldExtensions,\n }).toJson();\n }\n\n toJson(): IFormMetadata {\n return {\n id: this.params.customFormMetaData?.id as string,\n name: TranslationUtil.getTranslatedFormName(\n this.params.customFormMetaData || {},\n this.params.locale\n ),\n fields: this.fields,\n sections: this.sections,\n rules: this.rules,\n };\n }\n}\n","import { FormGroup } from '@angular/forms';\nimport { find } from 'lodash';\nimport { IFormField } from '../interfaces';\n\nexport class FormValue {\n form: FormGroup;\n fields: IFormField<string>[];\n changedField?: IFormField<string>;\n constructor(\n form: FormGroup,\n fields: IFormField<string>[],\n changedField?: IFormField<string>\n ) {\n this.form = form;\n this.fields = fields;\n this.changedField = changedField;\n }\n\n get isValid(): boolean {\n return this.form.valid;\n }\n\n clear(): void {\n this.form.reset();\n }\n\n getValues(options?: { valueOnly?: boolean }): {\n [id: string]: { id: string; value: string; options: any[] };\n } {\n const newValues: { [key: string]: any } = {};\n const formValues = this.form?.getRawValue();\n\n if (options?.valueOnly) {\n return formValues;\n }\n\n Object.keys(formValues).forEach((key) => {\n const field = find(this.fields, ['key', key]);\n\n if (field) {\n newValues[key] = {\n ...field,\n value: formValues[key],\n };\n }\n });\n\n return newValues;\n }\n}\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './boolean.model';\nexport * from './check-box.model';\nexport * from './date-field.model';\nexport * from './dropdown-option.model';\nexport * from './dropdown.model';\nexport * from './form-field.model';\nexport * from './fields-data.model';\nexport * from './field-config.model';\nexport * from './date-range-value.model';\nexport * from './field-dropdown.model';\nexport * from './form-config.model';\nexport * from './form-field-group.model';\nexport * from './form-metadata-rule.model';\nexport * from './form-metadata-section.model';\nexport * from './form-metadata.model';\nexport * from './form-value.model';\nexport * from './form.model';\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport { FileListItem } from '@dhis2/ui';\nimport { FileInputField } from '@dhis2/ui';\nimport { D2Window } from '@iapps/d2-web-sdk';\nimport { isUndefined } from 'lodash';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { FormFieldExtension } from '../interfaces';\nimport { set } from 'date-fns';\n\nexport const FileUploadField = (props: {\n label?: string;\n id: string;\n fileId?: string;\n performUpload?: boolean;\n hasError?: boolean;\n uploadUrl?: string;\n required?: boolean;\n validationText?: string;\n onChange?: (files: any[]) => void;\n onUploadSuccess?: (fileId: string) => void;\n extension?: FormFieldExtension;\n}) => {\n const {\n label,\n id,\n uploadUrl,\n performUpload,\n validationText,\n required,\n hasError,\n onChange,\n onUploadSuccess,\n extension\n } = props;\n const d2 = (window as unknown as D2Window)?.d2Web;\n const [file, setFile] = useState<any>(null);\n const [uploading, setUploading] = useState<boolean>();\n const [validationError, setValidationError] = useState<string | null>(null);\n\n const valid = useMemo(() => {\n if (isUndefined(hasError)) {\n return undefined;\n }\n\n return !hasError;\n }, [hasError]);\n\n const uploadFile = async (fileItem: any) => {\n if (fileItem) {\n setUploading(true);\n const formData = new FormData();\n formData.append('file', fileItem);\n try {\n const fileUploadResponse = await d2.httpInstance.post(\n uploadUrl as string,\n formData as any\n );\n\n setUploading(false);\n const fileId = (fileUploadResponse?.data as any)?.response?.fileResource\n ?.id;\n\n if (fileId) {\n onUploadSuccess!(fileId);\n }\n } catch (error) {\n setUploading(false);\n }\n }\n };\n\n return (\n <FileInputField\n accept={extension?.accept?.join(',')}\n buttonLabel=\"Upload a file\"\n label={label}\n name={id}\n required={required}\n error={!!validationError}\n validationText={validationError || validationText}\n onChange={(event: any) => {\n const fileItem = (event?.files || [])[0];\n setValidationError(null);\n \n if (extension?.sizeLimit && fileItem.size > extension?.sizeLimit) {\n setValidationError(`File size must not exceed ${extension.sizeLimit / (1024 * 1024)}MB`);\n setFile(null);\n return;\n }\n setFile(fileItem);\n\n if (performUpload) {\n uploadFile(fileItem);\n } else {\n onChange!(file);\n }\n }}\n >\n {file && (\n <FileListItem\n cancelText=\"Cancel\"\n label={file.name}\n loading={uploading}\n onRemove={() => {\n setFile(null);\n }}\n removeText=\"Remove\"\n />\n )}\n </FileInputField>\n );\n};\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// @flow\nimport { Provider, useDataQuery } from '@dhis2/app-runtime';\nimport { colors } from '@dhis2/ui';\nimport React, {\n SyntheticEvent,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport { useDynamicStyles } from '../../../shared';\nimport { OrganisationUnitTree, CircularLoader, InputField } from '@dhis2/ui';\nimport { D2Window } from '@iapps/d2-web-sdk';\nimport { debounce } from 'lodash';\nimport { Chip } from '@dhis2/ui';\nimport { Tooltip } from '@dhis2/ui';\n\nconst orgUnitFieldStyles = {\n container: {\n border: '1px solid',\n borderColor: colors.grey400,\n borderRadius: '3px',\n height: '100%',\n width: '100%',\n zIndex: 0,\n backgroundColor: 'white',\n },\n searchField: {\n height: '40px',\n overflow: 'hidden',\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0,\n boxShadow: 'none',\n border: 'none',\n },\n debounceFieldContainer: {\n padding: '8px',\n background: colors.grey100,\n borderTopLeftRadius: '3px',\n borderTopRightRadius: '3px',\n },\n orgUnitTreeContainer: {\n borderBottomLeftRadius: '3px',\n borderBottomRightRadius: '3px',\n overflow: 'auto',\n },\n orgUnitTreeLoader: {\n padding: '8px',\n },\n\n orgUnitFieldLabel: {\n marginBottom: '8px',\n display: 'block',\n boxSizing: 'border-box',\n fontSize: '14px',\n lineHeight: '19px',\n color: 'rgb(33, 41, 52)',\n padding: '0',\n },\n\n orgUnitFieldRequiredLabel: {\n paddingInlineStart: '4px',\n },\n};\n\n// type Props = {\n// key: string;\n// label?: string;\n// required?: boolean;\n// onSelectOrgUnit: (selectedOrgUnits: any) => void;\n// onBlur?: (selectedOrgUnit: Record<string, unknown>) => void;\n// selected?: string;\n// maxTreeHeight?: number;\n// disabled?: boolean;\n// customOrgUnitRoots?: string[];\n// previousOrgUnitId?: string;\n// };\n\nexport type CustomOrgUnitConfig = { field: string; orgUnit: string };\n\ntype OrgUnit = {\n id: string;\n name?: string;\n code?: string;\n path: string;\n level: number;\n};\n\ntype OrgUnitResponse = {\n id: string;\n name?: string;\n displayName?: string;\n code?: string;\n path: string;\n level: number;\n};\n\ntype Props = {\n key: string;\n label?: string;\n field: string;\n required?: boolean;\n onSelectOrgUnit: (selectedOrgUnits: any) => void;\n onBlur?: (selectedOrgUnit: Record<string, unknown>) => void;\n selected?: string;\n maxTreeHeight?: number;\n disabled?: boolean;\n customOrgUnitRoots?: CustomOrgUnitConfig[];\n previousOrgUnitId?: string;\n};\n\nexport const OrgUnitFormField = (props: Props) => {\n // const { onSelectOrgUnit, label, required, selected, disabled, key, customOrgUnitRoots } = props;\n // const d2 = (window as unknown as D2Window)?.d2Web;\n // const classes = useDynamicStyles(orgUnitFieldStyles);\n\n // const config = useMemo(() => {\n // return d2.systemInfo?.toInitObject();\n // }, []);\n\n // TODO: Improvements\n const {\n onSelectOrgUnit,\n label,\n required,\n selected,\n disabled,\n key,\n field,\n customOrgUnitRoots,\n } = props;\n const d2 = (window as unknown as D2Window)?.d2Web;\n const classes = useDynamicStyles(orgUnitFieldStyles);\n\n const config = useMemo(() => d2.systemInfo?.toInitObject(), []);\n\n // TODO: Improvements\n // New state to hold full orgUnit info from customOrgUnitRoots\n // const [configuredRootInfo, setConfiguredRootInfo] = useState<\n // { id: string; name: string; code?: string; path: string; level: number }[]\n // >([]);\n\n const [configuredRootInfo, setConfiguredRootInfo] = useState<OrgUnit[]>([]);\n const [configuredRootsLoading, setConfiguredRootsLoading] = useState(false);\n\n // Strike-through (fallback) current user roots\n const [useCustomRoots, setUseCustomRoots] = useState(\n customOrgUnitRoots && customOrgUnitRoots.length ? true : false\n );\n\n // TODO: START | Deprecated Approach that doesn't support passing ID of Organisation Unit as root\n // const rootOrgUnits = useMemo(() => {\n // return d2.currentUser?.organisationUnits || [];\n // }, []);\n // TODO: END | Deprecated Approach that doesn't support passing ID of Organisation Unit as root\n\n // TODO: Improvements\n // Fetch matching configured roots on mount or when key changes:\n // useEffect(() => {\n // const matchList =\n // customOrgUnitRoots?.filter((entry) => entry.field === (field || key)) ||\n // [];\n\n // if (matchList?.length > 0) {\n // setUseCustomRoots(true);\n\n // Promise.all(\n // (matchList || []).map((entry) =>\n // d2.httpInstance\n // .get(\n // `organisationUnits/${entry.orgUnit}.json?fields=id,displayName,name,code,path,level`\n // )\n // .then((res) => {\n // const u = res.data as OrgUnitResponse;\n // return {\n // id: u.id,\n // name: u.displayName || u.name,\n // code: u.code,\n // path: u.path,\n // level: u.level,\n // };\n // })\n // )\n // )\n // .then(setConfiguredRootInfo)\n // .catch((err) =>\n // console.warn(\n // `[OrgUnitFormField] Failed to fetch customOrgUnitRoots:`,\n // err\n // )\n // );\n // }\n // }, [customOrgUnitRoots, key, field, d2.httpInstance]);\n\n useEffect(() => {\n const matchList =\n customOrgUnitRoots?.filter((entry) => entry.field === (field || key)) ||\n [];\n\n if (matchList.length > 0) {\n setUseCustomRoots(true);\n setConfiguredRootsLoading(true);\n\n Promise.all(\n matchList.map((entry) =>\n d2.httpInstance\n .get(\n `organisationUnits/${entry.orgUnit}.json?fields=id,displayName,name,code,path,level`\n )\n .then((res) => {\n const orgUnitPayload = res.data as OrgUnitResponse;\n return {\n id: orgUnitPayload?.id,\n name: orgUnitPayload?.displayName || orgUnitPayload?.name,\n code: orgUnitPayload?.code,\n path: orgUnitPayload?.path,\n level: orgUnitPayload.level,\n };\n })\n )\n )\n .then((result) => {\n setConfiguredRootInfo(result);\n setConfiguredRootsLoading(false);\n })\n .catch((err) => {\n console.warn(\n `[OrgUnitFormField] Failed to fetch customOrgUnitRoots:`,\n err\n );\n setConfiguredRootsLoading(false);\n });\n }\n }, [customOrgUnitRoots, key, field, d2.httpInstance]);\n\n // const rootOrgUnits = useMemo(() => {\n // if (customOrgUnitRoots && customOrgUnitRoots.length > 0) {\n // return customOrgUnitRoots.map((id) => ({ id }));\n // }\n // return d2.currentUser?.organisationUnits || [];\n // }, [customOrgUnitRoots]);\n\n // const getExpandedItems = () => {\n // if (rootOrgUnits && rootOrgUnits.length === 1) {\n // return [`/${rootOrgUnits[0].id}`];\n // } else if (rootOrgUnits?.length > 1) {\n // return rootOrgUnits.map((root) => root.path);\n // }\n\n // return undefined;\n // };\n\n // TODO: Improvements\n // Decide which roots to render\n // const rootOrgUnits = useMemo(() => {\n // if (useCustomRoots && configuredRootInfo.length > 0) {\n // return configuredRootInfo.map((u) => u);\n // }\n // return d2.currentUser?.organisationUnits || [];\n // }, [useCustomRoots, configuredRootInfo, d2.currentUser]);\n\n const rootOrgUnits = useMemo(() => {\n if (useCustomRoots) {\n if (configuredRootsLoading) {\n return [];\n }\n return configuredRootInfo;\n }\n return d2.currentUser?.organisationUnits || [];\n }, [\n useCustomRoots,\n configuredRootsLoading,\n configuredRootInfo,\n d2.currentUser,\n ]);\n\n const getExpandedItems = () => {\n if (rootOrgUnits && rootOrgUnits.length === 1) {\n return [`/${rootOrgUnits[0].id}`];\n } else if (rootOrgUnits?.length > 1) {\n return rootOrgUnits.map((root) => root.path || `/${root.id}`);\n }\n return undefined;\n };\n\n const initiallyExpanded = getExpandedItems();\n const [searchText, setSearchText] = useState<string | undefined>(undefined);\n const [loading, setLoading] = useState<boolean>(true);\n const [searchLoading, setSearchLoading] = useState<boolean>();\n const [searchData, setSearchData] = useState<any>();\n const [selectedOrgUnit, setSelectedOrgUnit] =\n useState<Record<string, unknown>>();\n const [expanded, setExpanded] = useState<any[] | undefined>(\n initiallyExpanded\n );\n const [showOrgUnitTree, setShowOrgUnitTree] = useState<boolean>(!selected);\n\n useEffect(() => {\n setLoading(true);\n if (selected) {\n d2.httpInstance\n .get(\n `organisationUnits/${selected}.json?fields=id,displayName,path,code,ancestors[id,displayName]`\n )\n .then((response) => {\n if (response.data) {\n setSelectedOrgUnit(response.data);\n\n handleExpand({ path: response.data['path'] as string });\n\n setLoading(false);\n }\n });\n } else {\n setShowOrgUnitTree(true);\n setLoading(false);\n }\n }, []);\n\n const highlighted: string[] | undefined = useMemo(() => {\n if (selectedOrgUnit) {\n return [selectedOrgUnit['path']] as string[];\n }\n\n return undefined;\n }, [selectedOrgUnit]);\n\n const selectedOrgUnitLabel: string = useMemo(() => {\n if (selectedOrgUnit) {\n return [\n ...((selectedOrgUnit['ancestors'] as any[]) || []),\n selectedOrgUnit,\n ]\n .map((orgUnit) => orgUnit['displayName'])\n .join(' / ');\n }\n\n return '';\n }, [selectedOrgUnit]);\n\n const handleExpand = ({ path }: { path: string }) => {\n if (expanded && !expanded.includes(path)) {\n setExpanded([...expanded, path]);\n }\n };\n\n const handleCollapse = ({ path }: { path: string }) => {\n const pathIndex = expanded?.indexOf(path);\n\n if (pathIndex && pathIndex !== -1 && expanded) {\n const updatedExpanded =\n pathIndex === 0\n ? expanded.slice(1)\n : [...expanded.slice(0, pathIndex), ...expanded.slice(pathIndex + 1)];\n setExpanded(updatedExpanded);\n }\n };\n\n const handleOrgUnitSearch = async (query: string) => {\n setSearchLoading(true);\n try {\n const searchResponse = await d2.httpInstance.get(\n `organisationUnits.json?fields=id,displayName,path,publicAccess,access,lastUpdated,children[id,displayName,publicAccess,access,path,children::isNotEmpty]&paging=true&query=${query}&withinUserSearchHierarchy=true&pageSize=15`\n );\n setSearchData((searchResponse.data || {})['organisationUnits']);\n setSearchLoading(false);\n } catch (e) {\n setSearchLoading(false);\n }\n };\n\n const debouncedSearch = useCallback(\n debounce((value) => {\n handleOrgUnitSearch(value);\n }, 500),\n []\n );\n\n const handleFilterChange = (event: { value: string }) => {\n setSearchText(event.value);\n debouncedSearch(event.value);\n };\n\n const ready = useMemo(() => {\n return searchText?.length ? !searchLoading : !loading;\n }, [searchText, searchLoading, loading]);\n\n const renderOrgUnitTree = () => {\n if (searchText && searchText?.length > 0) {\n if (searchLoading) {\n return (\n <div className={classes.orgUnitTreeLoader}>\n <CircularLoader small />\n </div>\n );\n }\n\n return (\n ready && (\n <OrganisationUnitTree\n key={`${key}-search`}\n roots={searchData?.map((orgUnit: any) => orgUnit.id) || []}\n singleSelection={true}\n expanded={expanded as any}\n handleExpand={handleExpand}\n handleCollapse={handleCollapse}\n selected={highlighted}\n onChange={(event: any) => {\n setSelectedOrgUnit(event);\n setShowOrgUnitTree(false);\n onSelectOrgUnit(event.id);\n }}\n />\n )\n );\n }\n return (\n rootOrgUnits.length > 0 && (\n <OrganisationUnitTree\n key={key}\n roots={rootOrgUnits?.map((orgUnit) => orgUnit.id) || []}\n singleSelection={true}\n expanded={expanded as any}\n handleExpand={handleExpand}\n handleCollapse={handleCollapse}\n selected={highlighted}\n onChange={(event: any) => {\n setSelectedOrgUnit(event);\n setShowOrgUnitTree(false);\n onSelectOrgUnit(event.id);\n }}\n />\n )\n );\n };\n\n const handleBlur = () => {\n // onBlur && onBlur(null);\n };\n\n return (\n config && (\n <Provider\n config={config}\n plugin={false}\n parentAlertsAdd={undefined}\n showAlertsInPlugin={false}\n >\n <div>\n {label && (\n <div className={classes.orgUnitFieldLabel}>\n <span>{label}</span>\n {required ? (\n <span className={classes.orgUnitFieldRequiredLabel}>*</span>\n ) : (\n <></>\n )}\n </div>\n )}\n\n {!showOrgUnitTree ? (\n selectedOrgUnit ? (\n <>\n <Tooltip content={selectedOrgUnitLabel}>\n {disabled ? (\n <Chip>{(selectedOrgUnit as any).displayName}</Chip>\n ) : (\n <Chip\n onRemove={() => {\n setShowOrgUnitTree(true);\n }}\n >\n {(selectedOrgUnit as any).displayName}\n </Chip>\n )}\n </Tooltip>\n </>\n ) : (\n <div className={classes.orgUnitTreeLoader}>\n <CircularLoader small />\n </div>\n )\n ) : (\n <div className={classes.container}>\n <div className={classes.debounceFieldContainer}>\n <InputField\n placeholder=\"Search\"\n value={searchText}\n disabled={disabled}\n onChange={handleFilterChange}\n />\n </div>\n {loading ? (\n <div className={classes.orgUnitTreeLoader}>\n <CircularLoader small />\n </div>\n ) : (\n <div\n className={classes.orgUnitTreeContainer}\n style={{ maxHeight: '200px', overflowY: 'auto' }}\n >\n {renderOrgUnitTree()}\n </div>\n )}\n </div>\n )}\n </div>\n </Provider>\n )\n );\n};\n","// Copyright 2024 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport {\n computed,\n Directive,\n EventEmitter,\n inject,\n input,\n model,\n NgZone,\n Output,\n Signal,\n} from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { FormGroup } from '@angular/forms';\nimport {\n Checkbox,\n CircularLoader,\n colors,\n InputField,\n MultiSelectField,\n MultiSelectOption,\n SingleSelectField,\n SingleSelectOption,\n TextAreaField,\n Transfer,\n} from '@dhis2/ui';\nimport {\n D2Window,\n DataFilterCondition,\n DataQueryFilter,\n DHIS2Event,\n TrackedEntityInstance,\n} from '@iapps/d2-web-sdk';\nimport { NgxDhis2HttpClientService } from '@iapps/ngx-dhis2-http-client';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport * as ReactDOM from 'react-dom/client';\nimport { filter, take } from 'rxjs';\nimport { ReactWrapperModule } from '../../react-wrapper/react-wrapper.component';\nimport { useFieldValidation } from '../hooks';\nimport { IFormField } from '../interfaces';\nimport { FieldConfig } from '../models';\nimport { FileUploadField } from './file-upload-field.component';\nimport {\n OrgUnitFormField,\n CustomOrgUnitConfig,\n} from './org-unit-form-field.component';\nimport { CalendarInput } from '@dhis2/ui';\n\n@Directive()\nexport class BaseFormFieldComponent extends ReactWrapperModule {\n ngZone = inject(NgZone);\n httpClient = inject(NgxDhis2HttpClientService);\n fieldType = 'textbox';\n field = input.required<IFormField<string>>();\n fieldError = input<string | undefined>();\n fieldConfig = input<FieldConfig>(new FieldConfig());\n form = model.required<FormGroup>();\n isValid = input<boolean>();\n isValueAssigned = input<boolean>();\n dataId = input<string>();\n customOrgUnitRoots = input<CustomOrgUnitConfig[]>();\n\n value = model<string>();\n protected value$ = toObservable(this.value);\n protected isValueAssigned$ = toObservable(this.isValueAssigned);\n protected fieldError$ = toObservable(this.fieldError);\n\n label: Signal<string | undefined> = computed(() => {\n return !this.fieldConfig()?.hideLabel ? this.field().label : undefined;\n });\n\n placeholder: Signal<string> = computed(() => {\n return (\n this.field()?.placeholder || `Enter ${this.field()?.label || 'value'}`\n );\n });\n\n InputField = this.#getInputField();\n\n @Output() update = new EventEmitter<{ form: FormGroup; value: any }>();\n @Output() immediateUpdate = new EventEmitter<{\n form: FormGroup;\n value: any;\n }>();\n\n override async ngAfterViewInit() {\n if (!this.elementRef) throw new Error('No element ref');\n this.reactDomRoot = ReactDOM.createRoot(this.elementRef.nativeElement);\n\n this.component = this.InputField;\n this.render();\n }\n\n #getInputField() {\n return (): React.JSX.Element => {\n const [value, setValue] = useState(\n this.form().get(this.field().id)?.value ||\n this.form().get(this.field().key)?.value\n );\n\n const [selected, setSelected] = useState();\n const [touched, setTouched] = useState(false);\n const [disabled, setDisabled] = useState<boolean>(\n this.field()?.disabled ?? this.field()?.generated ?? false\n );\n const [initialError, setInitialError] = useState<string>();\n const [recordExistError, setRecordExistError] = useState<\n string | undefined\n >();\n const [checkingUniqueness, setCheckingUniqueness] = useState<boolean>();\n\n useEffect(() => {\n const isAssignedSubscription = this.isValueAssigned$\n .pipe(filter((isValueAssigned) => isValueAssigned === true))\n .subscribe({\n next: () => {\n const value =\n this.form().get(this.field().id)?.value ||\n this.form().get(this.field().key)?.value;\n setValue(value);\n setDisabled(true);\n checkValueUniqueness();\n },\n });\n\n return () => {\n isAssignedSubscription.unsubscribe();\n };\n }, []);\n\n // TODO: Review error handling as take() has potential to missed any other updated error information\n useEffect(() => {\n const fieldErrorSubscription = this.fieldError$\n .pipe(\n filter((error) => error !== initialError),\n take(1)\n )\n .subscribe({\n next: (error: string | undefined) => {\n setInitialError(error);\n },\n });\n\n return () => {\n fieldErrorSubscription.unsubscribe();\n };\n }, [initialError]); // Add initialError as a dependency to avoid stale closures\n\n const arrayValue = useMemo(() => {\n if (value && value.length > 0) {\n return value.split(',');\n }\n\n return [];\n }, [value]);\n\n const inputWidth = useMemo(() => {\n if (\n this.field().controlType === 'date' ||\n this.field().controlType === 'date-time'\n ) {\n return '360px';\n }\n\n return this.fieldConfig()?.inputWidth;\n }, []);\n\n const { validationError, hasError } = useFieldValidation({\n field: this.field(),\n form: this.form(),\n initialError,\n recordExistError,\n value,\n touched,\n });\n\n const onValueChange = (value: unknown) => {\n this.ngZone.run(() => {\n (\n this.form().get(this.field().id) ||\n this.form().get(this.field().key)\n )?.setValue(value);\n\n this.update.emit({\n form: this.form(),\n value,\n });\n });\n\n setValue(value);\n setTouched(true);\n };\n\n const checkValueUniqueness = async () => {\n if (\n this.field().unique ||\n ((this.field().extension?.isDataElementUnique ?? false) &&\n value &&\n value.length > 0 &&\n touched)\n ) {\n // if (this.field().unique && value && value.length > 0 && touched) {\n setCheckingUniqueness(true);\n setRecordExistError(undefined);\n try {\n const isDuplicate = await this.searchForDuplicates(value);\n\n setCheckingUniqueness(false);\n\n if (isDuplicate) {\n const customError = `Record with this ${this.label()} is already registered`;\n (\n this.form().controls[this.field().id] ||\n this.form().controls[this.field().key]\n )?.setErrors({\n customError,\n });\n setRecordExistError(customError);\n }\n } catch (e) {\n setCheckingUniqueness(false);\n setRecordExistError(undefined);\n }\n }\n };\n\n const formFieldContent = () => {\n switch (this.field().controlType) {\n case 'textarea':\n return (\n <TextAreaField\n error={hasError}\n validationText={validationError}\n inputWidth={this.fieldConfig()?.inputWidth}\n required={this.field().required}\n name={this.field().id}\n disabled={disabled}\n label={this.label()}\n rows={5}\n placeholder={this.placeholder()}\n value={value}\n onChange={(event: any) => {\n onValueChange(event.value);\n }}\n onBlur={() => {\n checkValueUniqueness();\n }}\n />\n );\n\n case 'org-unit': {\n return (\n <OrgUnitFormField\n label={this.label()}\n key={this.field().id}\n field={this.field().id}\n required={this.field().required}\n disabled={disabled}\n customOrgUnitRoots={this.customOrgUnitRoots()}\n onSelectOrgUnit={(selectedOrgUnit: string) => {\n onValueChange(selectedOrgUnit);\n }}\n selected={value}\n />\n );\n }\n\n case 'transfer':\n return (\n <Transfer\n filterable\n filterPlaceholder=\"Search\"\n selected={selected}\n leftHeader={\n <div\n style={{\n fontSize: 14,\n padding: '8px 4px',\n }}\n >\n {this.field().availableOptionsLabel}\n </div>\n }\n rightHeader={\n <div\n style={{\n fontSize: 14,\n padding: '8px 4px',\n }}\n >\n {this.field().selectedOptionsLabel}\n </div>\n }\n options={this.field().options}\n onChange={(event: any) => {\n onValueChange(event.selected);\n }}\n />\n );\n case 'checkbox':\n return (\n <Checkbox\n checked={Boolean(value)}\n error={hasError}\n label={this.label()}\n name={this.field().id}\n disabled={disabled}\n onChange={(event: any) => {\n onValueChange(event.checked);\n }}\n onBlur={() => {\n checkValueUniqueness();\n }}\n />\n );\n case 'dropdown':\n return (\n <SingleSelectField\n filterable={(this.field().options || []).length > 5}\n clearable\n error={hasError}\n validationText={validationError}\n inputWidth={this.fieldConfig()?.inputWidth}\n disabled={disabled}\n required={this.field().required}\n className=\"select\"\n label={this.label()}\n selected={value}\n onChange={(event: any) => {\n onValueChange(event.selected);\n }}\n onBlur={() => {\n checkValueUniqueness();\n }}\n >\n {(this.field().options || []).map((option) => (\n <SingleSelectOption\n key={crypto.randomUUID() || option.key}\n label={option.label}\n value={option.value}\n />\n ))}\n </SingleSelectField>\n );\n case 'multi-dropdown':\n return (\n <MultiSelectField\n clearText=\"Clear\"\n clearable\n empty=\"No data found\"\n filterable={(this.field().options || []).length > 5}\n filterPlaceholder=\"Type to filter options\"\n error={hasError}\n validationText={validationError}\n inputWidth={this.fieldConfig()?.inputWidth}\n disabled={disabled}\n label={this.label()}\n required={this.field().required}\n loadingText=\"Loading options\"\n noMatchText=\"No options found\"\n onChange={(event: { selected: string[] }) => {\n const selectedValue = (event.selected || []).join(',');\n onValueChange(selectedValue);\n }}\n onBlur={() => {\n checkValueUniqueness();\n }}\n selected={arrayValue}\n >\n {(this.field().options || []).map((option) => (\n <MultiSelectOption\n key={option.key}\n label={option.label}\n value={option.value}\n />\n ))}\n </MultiSelectField>\n );\n case 'date':\n case 'date-time':\n return (\n <InputField\n error={hasError}\n validationText={validationError}\n type={this.field().type as any}\n inputWidth={inputWidth}\n required={this.field().required}\n name={this.field().id}\n label={this.label()}\n min={this.field().min?.toString()}\n max={this.field().max?.toString()}\n placeholder={this.placeholder()}\n value={value}\n readOnly={disabled}\n onChange={(event: any) => {\n onValueChange(event.value);\n }}\n onBlur={() => {\n checkValueUniqueness();\n }}\n />\n );\n case 'file':\n return (\n <>\n <FileUploadField\n label={this.label()}\n id={this.field().id}\n hasError={hasError}\n required={this.field().required}\n validationText={validationError}\n performUpload={true}\n uploadUrl={'fileResources'}\n onUploadSuccess={(fileId: string) => {\n onValueChange(fileId);\n }}\n extension={this.field()?.extension}\n />\n </>\n );\n default:\n return (\n <InputField\n error={hasError}\n validationText={validationError}\n type={this.field().type as any}\n inputWidth={inputWidth}\n required={this.field().required}\n name={this.field().id}\n label={this.label()}\n min={this.field().min?.toString()}\n max={this.field().max?.toString()}\n placeholder={this.placeholder()}\n value={value}\n readOnly={disabled}\n onChange={(event: any) => {\n onValueChange(event.value);\n }}\n onBlur={() => {\n checkValueUniqueness();\n }}\n />\n );\n }\n };\n\n {\n return (\n <React.Fragment>\n {formFieldContent()}\n {checkingUniqueness && (\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n paddingTop: 8,\n }}\n >\n <CircularLoader small />\n <div style={{ color: colors.grey800, fontSize: 14 }}>\n Checking...\n </div>\n </div>\n )}\n </React.Fragment>\n );\n }\n };\n }\n\n onChange(event: any): void {\n this.value.set(event);\n }\n\n async searchForDuplicates(value: string) {\n const d2 = (window as unknown as D2Window).d2Web;\n\n if (!value) {\n return false;\n }\n\n switch (this.field().metaType) {\n case 'ATTRIBUTE': {\n const data = (\n await d2.trackerModule.trackedEntity\n .setTrackedEntityType(this.field().trackedEntityType as string)\n .setOuMode('ACCESSIBLE')\n .setFilters([\n new DataQueryFilter()\n .setAttribute(this.field().id)\n .setCondition(DataFilterCondition.Equal)\n .setValue(value),\n ])\n .get()\n )?.data as TrackedEntityInstance[];\n\n return (\n data?.filter(\n (trackedEntity) => trackedEntity.trackedEntity !== this.dataId()\n )?.length > 0\n );\n }\n\n case 'DATA_ELEMENT': {\n const data = (\n await d2.eventModule.event\n .setOuMode('ACCESSIBLE')\n .setFilters([\n new DataQueryFilter()\n .setAttribute(this.field().id)\n .setCondition(DataFilterCondition.Equal)\n .setValue(value)\n .setType('DATA_ELEMENT'),\n ])\n .get()\n )?.data as DHIS2Event[];\n\n return (\n data?.filter((event) => event.event !== this.dataId())?.length > 0\n );\n }\n\n default:\n return false;\n }\n }\n}\n","import { Component } from '@angular/core';\nimport { BaseFormFieldComponent } from './base-form-field.component';\n\n@Component({\n selector: 'ng-dhis2-ui-form-field-item',\n template: `<ng-content></ng-content>`,\n standalone: false,\n})\nexport class FormFieldItemComponent extends BaseFormFieldComponent {}\n","import {\n Component,\n EffectRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n effect,\n input,\n signal,\n} from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { find } from 'lodash';\nimport moment from 'moment';\nimport { Subject, takeUntil } from 'rxjs';\nimport { IFormField } from '../../interfaces';\nimport { FieldConfig, IMetadataRuleAction } from '../../models';\nimport { CustomOrgUnitConfig } from '../../components/org-unit-form-field.component';\n\n@Component({\n selector: 'ng-dhis2-ui-form-field',\n templateUrl: './form-field.component.html',\n styleUrls: ['./form-field.component.scss'],\n standalone: false,\n})\nexport class FormFieldComponent implements OnInit, OnChanges, OnDestroy {\n field = input.required<IFormField<string>>();\n fieldConfig = input.required<FieldConfig>();\n @Input() form!: FormGroup;\n isCheckBoxButton = input<boolean>();\n fieldClass = input<string>('');\n programRuleActions = input<IMetadataRuleAction[]>([]);\n dataEntities = input<any>({});\n minDate = input<any>();\n maxDate = input(new Date());\n dataId = input<string>();\n customOrgUnitRoots = input<CustomOrgUnitConfig[]>();\n color = 'primary';\n @Output() fieldUpdate: EventEmitter<FormGroup> =\n new EventEmitter<FormGroup>();\n\n @Output() immediateFieldUpdate: EventEmitter<{ value: string }> =\n new EventEmitter<{ value: string }>();\n\n @Output() runtimeOptionChange: EventEmitter<any> = new EventEmitter<any>();\n\n value = signal<any>('');\n runtimeError = signal<string | undefined>(undefined);\n\n private _runtimeOptions: any[] = [];\n runtimeOptions: any = [];\n fieldFilterControl: FormControl = new FormControl();\n protected _onDestroy = new Subject<void>();\n optionSearchTerm!: string;\n isValueAssigned = signal<boolean>(false);\n\n ruleProcessor: EffectRef;\n constructor() {\n this.ruleProcessor = effect(() => {\n this.#processRules(this.programRuleActions());\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes && changes['dataEntities'] && this.field()?.dependentField) {\n if (this._runtimeOptions?.length === 0) {\n const parentOption = find(\n this.field()?.dependentField?.optionSet?.options,\n ['code', (this.form?.value || {})[this.field()?.dependentField?.id]]\n );\n\n this.runtimeOptions = parentOption?.options || [];\n\n this.runtimeOptionChange.emit({\n field: this.field(),\n options: this.runtimeOptions,\n });\n } else {\n this.runtimeOptions = this._runtimeOptions;\n }\n }\n }\n\n ngOnInit() {\n this.value.set(this.form?.get(this.field()?.id)?.value);\n this.fieldFilterControl.valueChanges\n .pipe(takeUntil(this._onDestroy))\n .subscribe(() => {\n this.optionSearchTerm = this.fieldFilterControl.value;\n });\n }\n\n #processRules(ruleActions: IMetadataRuleAction[]) {\n const fieldRuleActions = ruleActions.filter(\n (ruleAction) => ruleAction.field === this.field().id\n );\n\n let runtimeError;\n let isValueAssigned = false;\n fieldRuleActions.forEach((ruleAction) => {\n switch (ruleAction.actionType) {\n case 'ASSIGN': {\n if (ruleAction.assignedData) {\n const currentValue = this.form?.get(this.field().key)?.value;\n\n if (currentValue != ruleAction.assignedData) {\n this.form\n ?.get(this.field().key)\n ?.setValue(ruleAction.assignedData);\n isValueAssigned = true;\n this.onValueChange();\n }\n }\n break;\n }\n\n case 'SHOWERROR': {\n runtimeError = ruleAction.displayedContent;\n (\n this.form.controls[this.field().id] ||\n this.form.controls[this.field().key]\n )?.setErrors({\n customError: runtimeError,\n });\n\n break;\n }\n\n default:\n break;\n }\n });\n\n this.runtimeError.set(runtimeError);\n this.isValueAssigned.set(isValueAssigned);\n }\n\n ngOnDestroy() {\n this._onDestroy.next();\n this._onDestroy.complete();\n this.ruleProcessor.destroy();\n }\n\n get isValid(): boolean {\n return this.form?.controls[this.field().id]?.valid;\n }\n\n get fieldError(): string | undefined {\n const error = this.form?.controls[this.field()?.id]?.errors;\n\n if (!error) {\n return undefined;\n }\n\n if (error['min']) {\n return `${this.field().label} should not be less than ${\n error['min'].min\n }!`;\n } else if (error['max']) {\n return `${this.field().label} should not be greater than ${\n error['max'].max\n }!`;\n } else if (error['pattern']) {\n if (this.field().type === 'email') {\n return `The email address provided is not valid`;\n } else if (this.field().type === 'tel') {\n return 'Phone number provided is not valid';\n } else {\n return `${this.field().label} should have appropriate format`;\n }\n }\n\n return error['required'] ? `${this.field()?.label} is required` : undefined;\n }\n\n get minErrorText(): string | undefined {\n const minError = this.form?.controls[this.field()?.id]?.errors?.['min'];\n\n return minError ? `${this.field()?.label} is min` : undefined;\n }\n\n get maxErrorText(): string | undefined {\n const maxError = this.form?.controls[this.field()?.id]?.errors?.['max'];\n\n return maxError ? `${this.field()?.label} is required` : undefined;\n }\n\n get isInvalid(): boolean {\n return (\n this.form?.controls[this.field().id]?.invalid &&\n !this.form?.controls[this.field().id].pristine\n );\n }\n\n get isDate(): boolean {\n return this.field().controlType === 'date';\n }\n\n get isDateTime(): boolean {\n return this.field().controlType === 'date-time';\n }\n\n get isBoolean(): boolean {\n return this.field().controlType === 'boolean';\n }\n\n get isCheckbox(): boolean {\n return this.field()?.controlType === 'checkbox';\n }\n\n get isCommonField(): boolean {\n return !this.isCheckbox && !this.isDate && !this.isDateTime;\n }\n\n get fieldId(): string {\n return this.field()?.id;\n }\n\n onValueChange() {\n this.fieldUpdate.emit(this.form);\n }\n\n onImmediateChange(event: { value: string }) {\n this.immediateFieldUpdate.emit({ value: event?.value || '' });\n }\n\n onFieldUpdate(e?: any, isDate?: boolean, isDateTime?: boolean): void {\n if (e && e.value) {\n const dateValue = new Date(e.value);\n if (isDate) {\n const dateValue = new Date(e.value);\n const formattedDate = moment(e.value).format('YYYY-MM-DD');\n let dateTimeString = formattedDate;\n\n if (isDateTime) {\n const hours =\n dateValue.getHours() < 10\n ? '0' + dateValue.getHours()\n : dateValue.getHours();\n const minutes =\n dateValue.getMinutes() < 10\n ? '0' + dateValue.getMinutes()\n : dateValue.getMinutes();\n const seconds =\n dateValue.getSeconds() < 10\n ? '0' + dateValue.getSeconds()\n : dateValue.getSeconds();\n\n const timeValue = `${hours}:${minutes}:${seconds}`;\n dateTimeString = `${formattedDate}T${timeValue}`;\n }\n\n const formControl = this.form.get(this.field().key);\n if (formControl) {\n formControl.setValue(dateTimeString);\n }\n } else {\n const formControl = this.form.get(this.field().key);\n if (formControl) {\n formControl.setValue(e.value);\n }\n }\n }\n\n this.fieldUpdate.emit(this.form);\n }\n\n onUpdateRuntimeOptions(options: any[]) {\n this._runtimeOptions = [...options];\n }\n}\n","<div *ngIf=\"field()\" class=\"form-field-item\">\n <ng-dhis2-ui-form-field-item\n [field]=\"field()\"\n [fieldError]=\"runtimeError()\"\n [isValueAssigned]=\"isValueAssigned()\"\n [fieldConfig]=\"fieldConfig()\"\n [(form)]=\"form\"\n [dataId]=\"dataId()\"\n [customOrgUnitRoots]=\"customOrgUnitRoots()\"\n [value]=\"value()\"\n (update)=\"onValueChange()\"\n (immediateUpdate)=\"onImmediateChange($event)\"\n />\n</div>\n","import {\n Component,\n EffectRef,\n EventEmitter,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewChildren,\n computed,\n effect,\n input,\n} from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { head } from 'lodash';\nimport {\n FieldsData,\n FormConfig,\n FormValue,\n IMetadataRuleAction,\n} from '../../models';\nimport { FormFieldComponent } from '../form-field/form-field.component';\nimport { IFormField } from '../../interfaces';\nimport { CustomOrgUnitConfig } from '../../components/org-unit-form-field.component';\n\n@Component({\n selector: 'ng-dhis2-ui-form',\n templateUrl: './form.component.html',\n styleUrls: ['./form.component.scss'],\n standalone: false,\n})\nexport class FormComponent implements OnChanges, OnDestroy, OnInit {\n formConfig = input<FormConfig>();\n fields = input.required<IFormField<string>[]>();\n form = input.required<FormGroup>();\n isFormHorizontal = input<boolean>(false);\n showSaveButton = input<boolean>(false);\n fieldsData = input<FieldsData>();\n fieldClass = input<string>('');\n shouldRenderAsCheckBoxesButton = input<boolean>(false);\n programRuleActions = input<IMetadataRuleAction[]>([]);\n dataEntities = input<any>(undefined);\n dataId = input<string>();\n customOrgUnitRoots = input<CustomOrgUnitConfig[]>();\n\n configuration = computed(() => {\n if (!this.formConfig()) {\n return new FormConfig({\n direction: this.isFormHorizontal() ? 'horizontal' : 'vertical',\n });\n }\n\n return this.formConfig() as FormConfig;\n });\n\n @Output() formUpdate: EventEmitter<any> = new EventEmitter<any>();\n @Output() formValidityUpdate: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n @ViewChildren(FormFieldComponent) fieldComponents!: FormFieldComponent[];\n\n values: any;\n\n get sanitizedFields(): IFormField<string>[] {\n return (this.fields() || []).filter((field: any) => {\n if (field.hidden) {\n return false;\n }\n\n const type = field.isDataElement\n ? 'dataElement'\n : 'trackedEntityAttribute';\n const elementItem = field[type] || field;\n if (!elementItem) {\n return true;\n }\n\n const availableRule = head(\n (this.programRuleActions() || []).filter((ruleAction) => {\n return (\n ruleAction.field === elementItem.id &&\n ruleAction.actionType === 'HIDEFIELD'\n );\n })\n );\n\n if (!availableRule) {\n return true;\n }\n\n return availableRule.actionType !== 'HIDEFIELD';\n });\n }\n\n get layoutCssClass(): string {\n if (!this.isFormHorizontal()) {\n return 'col-12';\n }\n\n const numberOfFields = this.sanitizedFields.length;\n\n if (numberOfFields === 2) {\n return 'col-sm-6';\n }\n\n if (numberOfFields === 1) {\n return 'col-12';\n }\n\n return 'col-sm-4';\n }\n\n ruleProcessor: EffectRef;\n constructor() {\n this.ruleProcessor = effect(() => {\n this.#processRules(this.programRuleActions());\n });\n }\n\n ngOnInit(): void {\n this.values = this.form().getRawValue();\n // TODO: This is uneccesary emit at this stage of execution, since nothing has changes at initiation and potentially break some of implementation that depends formUpdate, which also is triggered when there is actual change in the form apart form initial values that came with it\n this.formUpdate.emit(new FormValue(this.form(), this.fields()));\n this.formValidityUpdate.emit(new FormValue(this.form(), this.fields()).isValid);\n\n console.log()\n }\n // ngOnChanges(changes: SimpleChanges): void {\n // this.values = this.form.getRawValue();\n // }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.values = this.form().getRawValue();\n }\n\n #processRules(ruleActions: IMetadataRuleAction[]) {\n ruleActions.forEach((ruleAction) => {\n switch (ruleAction.actionType) {\n case 'HIDEFIELD': {\n const fieldToRemove = this.fields().find(\n (field) => field.id === ruleAction.field\n );\n\n if (fieldToRemove) {\n const form = this.form();\n const currentValue = form.get(fieldToRemove.key)?.value;\n\n if (currentValue != null) {\n form.get(fieldToRemove.key)?.setValue(null);\n this.onFieldUpdate(form, fieldToRemove);\n }\n }\n break;\n }\n\n default:\n break;\n }\n });\n }\n\n onSubmit(): void {\n this.formUpdate.emit(this.form().getRawValue());\n this.formValidityUpdate.emit(this.form().valid);\n this.formValidityUpdate.emit(new FormValue(this.form(), this.fields()).isValid);\n }\n\n onFieldUpdate(form: FormGroup, field: IFormField<string>): void {\n if (!this.showSaveButton() && form) {\n this.formUpdate.emit(new FormValue(this.form(), this.fields(), field));\n this.formValidityUpdate.emit(this.form().valid);\n\n this.values = form.getRawValue();\n }\n }\n\n onClear(): void {\n this.form().reset();\n }\n\n isFormInValid() {\n return this.form().invalid;\n }\n\n onRunTimeOptionUpdate(result: any) {\n if (this.fieldComponents) {\n const fieldToUpdate = this.fieldComponents.find(\n (fieldComponent) =>\n fieldComponent?.field()?.dependentField?.id === result?.field?.id\n );\n\n const parentOption = result?.options.find(\n (option: { code: any }) =>\n option.code === this.form()?.value[result?.field?.id]\n );\n\n fieldToUpdate?.onUpdateRuntimeOptions(parentOption?.options || []);\n }\n }\n\n ngOnDestroy(): void {\n this.ruleProcessor.destroy();\n }\n}\n","<form [formGroup]=\"form()\" class=\"{{ configuration().directionClassName }}\">\n <!-- form name -->\n <div class=\"form-name\">\n <h2>{{ configuration().formName }}</h2>\n </div>\n <div\n *ngFor=\"let field of sanitizedFields\"\n class=\"form-field-{{ configuration().direction }}\"\n >\n <ng-dhis2-ui-form-field\n [field]=\"field\"\n [fieldConfig]=\"configuration().fieldConfig\"\n [form]=\"form()\"\n [fieldClass]=\"fieldClass()\"\n [dataEntities]=\"dataEntities()\"\n [dataId]=\"dataId()\"\n [customOrgUnitRoots]=\"customOrgUnitRoots()\"\n [programRuleActions]=\"programRuleActions()\"\n [isCheckBoxButton]=\"shouldRenderAsCheckBoxesButton()\"\n (fieldUpdate)=\"onFieldUpdate($event, field)\"\n (runtimeOptionChange)=\"onRunTimeOptionUpdate($event)\"\n />\n </div>\n</form>\n","import {\n Component,\n EventEmitter,\n inject,\n input,\n Input,\n model,\n NgZone,\n OnInit,\n Output,\n signal,\n} from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { Observable } from 'rxjs';\nimport { IFormField, IFormFieldGroup } from '../../interfaces';\nimport { FormField, FormValue } from '../../models';\nimport { FormUtil } from '../../utils';\n\n@Component({\n selector: 'ng-dhis2-ui-repeatable-form',\n templateUrl: './repeatable-form.component.html',\n styleUrls: ['./repeatable-form.component.scss'],\n standalone: false,\n})\nexport class RepeatableFormComponent implements OnInit {\n ngZone = inject(NgZone);\n @Input() formObject!: any;\n @Input() formData: any;\n fieldGroup = input.required<IFormFieldGroup>();\n @Input() form!: FormGroup;\n @Input() numberOfRows!: number | string;\n @Input() programRuleActions!: any[];\n events = model<Record<string, unknown>[] | unknown>();\n @Input() program!: string;\n @Input() programStage!: string;\n @Input() repeatDependentField!: string;\n dataEntities = input.required<Record<string, unknown>>();\n repeatableEvents: any[] = [];\n\n repeatableData: { [index: number]: FormValue } = {};\n\n @Output() repeatableStageUpdate = new EventEmitter<any>();\n\n repeatableFormEntities!: { [event: string]: FormGroup };\n\n eventForm!: FormGroup;\n eventFormValue = signal<FormValue | null>(null);\n #eventFormValue$: Observable<FormValue | null>;\n\n showForm = signal<boolean>(false);\n #showForm$: Observable<boolean>;\n\n #events$: Observable<any>;\n eventIndex = signal<number>(0);\n\n constructor() {\n this.#eventFormValue$ = toObservable(this.eventFormValue);\n this.#showForm$ = toObservable(this.showForm);\n this.#events$ = toObservable(this.events);\n }\n\n get isValid(): boolean {\n return !Object.keys(this.repeatableData).some((index: any) => {\n const formValue = this.repeatableData[index];\n\n return !formValue?.isValid;\n });\n }\n\n ngOnInit(): void {\n this.eventForm = FormUtil.getFormGroup(this.fieldGroup().fields, {});\n this.eventFormValue.set(\n new FormValue(this.eventForm, this.fieldGroup().fields)\n );\n\n this.repeatableEvents = ((this.events() as any[]) || []).map(\n (event: any, index: number) => {\n const fieldControls = (this.fieldGroup().fields || []).reduce(\n (fieldObject: any, field: IFormField<string>) => {\n const value = (event.dataValueEntities || {})[field.key] || '';\n\n return {\n ...fieldObject,\n [field.key]: new FormControl(\n value,\n field.required ? [Validators.required] : []\n ),\n };\n },\n {}\n );\n\n const form = new FormGroup(fieldControls);\n this.repeatableData[index] = new FormValue(\n form,\n this.fieldGroup().fields || []\n );\n return { ...event, form };\n }\n );\n\n this.repeatableStageUpdate.emit(this.repeatableData);\n }\n\n onFormUpdate(formValue: FormValue): void {\n this.eventFormValue.set(formValue);\n this.repeatableData = {\n ...this.repeatableData,\n [this.eventIndex()]: formValue,\n };\n }\n}\n","<div class=\"form__repeatable-stage-container\">\n <!-- <ng-dhis2-ui-wrapper [component]=\"EventTable()\"></ng-dhis2-ui-wrapper> -->\n @if(showForm()) {\n <div class=\"form__repeatable-stage-form\">\n <ng-dhis2-ui-form\n [fields]=\"fieldGroup().fields || []\"\n [form]=\"eventForm\"\n [programRuleActions]=\"programRuleActions\"\n [dataEntities]=\"{}\"\n [isFormHorizontal]=\"false\"\n (formUpdate)=\"onFormUpdate($event)\"\n >\n </ng-dhis2-ui-form>\n\n <!-- <ng-dhis2-ui-wrapper [component]=\"FormActionButtons\"></ng-dhis2-ui-wrapper> -->\n </div>\n }\n</div>\n","/* eslint-disable @angular-eslint/no-output-native */\nimport {\n Component,\n EventEmitter,\n NgZone,\n OnInit,\n Output,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { FormGroup } from '@angular/forms';\nimport { ProgramRuleEngine } from '@iapps/d2-web-sdk';\nimport { isEmpty } from 'lodash';\nimport { Observable } from 'rxjs';\nimport { IFormFieldGroup, IFormMetadata } from '../../interfaces';\nimport { FormValue } from '../../models';\nimport { FormUtil } from '../../utils';\n\n@Component({\n selector: 'ng-dhis2-ui-section-form',\n templateUrl: './section-form.component.html',\n styleUrls: ['./section-form.component.scss'],\n standalone: false,\n})\nexport class SectionFormComponent implements OnInit {\n ngZone = inject(NgZone);\n loading = input<boolean>();\n isloading!: boolean;\n formMetaData = input.required<IFormMetadata>();\n dataValueEntities = input.required<Record<string, unknown>>();\n formGroups: Record<string, FormGroup> = {};\n formValueEntity: Record<string, FormValue> = {};\n repeatableFormValueEntity: Record<string, Record<number, FormValue>> = {};\n ruleActions = signal<any[]>([]);\n\n @Output() save = new EventEmitter<Record<string, unknown>>();\n @Output() formUpdate = new EventEmitter<Record<string, unknown>>();\n @Output() cancel = new EventEmitter();\n @Output() formValidityUpdate: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n inValid = signal<boolean>(true);\n inValid$: Observable<boolean>;\n\n constructor() {\n this.inValid$ = toObservable(this.inValid);\n }\n\n ngOnInit(): void {\n if (this.formMetaData().sections) {\n (this.formMetaData().sections || []).forEach((formSection) => {\n (formSection.fieldGroups || []).forEach((fieldGroup) => {\n const formGroup = FormUtil.getFormGroup(\n fieldGroup.fields,\n this.dataValueEntities()\n );\n\n const formValue = new FormValue(formGroup, fieldGroup.fields);\n this.formGroups[fieldGroup.id] = formGroup;\n\n if (!fieldGroup.repeatableStage) {\n this.formValueEntity[fieldGroup.id] = formValue;\n } else {\n this.repeatableFormValueEntity[\n fieldGroup.dataKey || fieldGroup.id\n ] = {\n 0: formValue,\n };\n }\n });\n });\n\n this.inValid.set(this.checkIfInValid());\n\n this.ruleActions.set(\n new ProgramRuleEngine()\n .setRules(this.formMetaData().rules)\n .setDataValues(this.#getDataValue())\n .execute()\n );\n }\n }\n\n onUpdateRepeatableStage(\n repeatableData: Record<number, FormValue>,\n fieldGroup: IFormFieldGroup\n ) {\n if (!isEmpty(repeatableData)) {\n this.repeatableFormValueEntity[fieldGroup.dataKey || fieldGroup.id] =\n repeatableData;\n this.inValid.set(this.checkIfInValid());\n const dataValues = this.#getDataValue();\n\n this.formUpdate.emit(dataValues);\n this.formValidityUpdate.emit(this.checkIfInValid());\n }\n }\n\n onFormUpdate(formValue: FormValue, fieldGroupId: string) {\n this.formValueEntity[fieldGroupId] = formValue;\n this.inValid.set(this.checkIfInValid());\n\n const dataValues = this.#getDataValue();\n\n this.ruleActions.set(\n new ProgramRuleEngine()\n .setRules(this.formMetaData().rules)\n .setDataValues(dataValues)\n .execute()\n );\n\n this.formUpdate.emit(dataValues);\n this.formValidityUpdate.emit(this.checkIfInValid());\n }\n\n onSubmit() {\n const dataValues = this.#getDataValue();\n\n this.save.emit(dataValues);\n }\n\n onCancel(event?: MouseEvent) {\n event?.stopPropagation();\n this.cancel.emit();\n }\n\n #getDataValue() {\n const dataValues = Object.keys(this.formValueEntity).reduce(\n (valueObject, key) => {\n const values = this.formValueEntity[key]?.form?.getRawValue();\n return { ...valueObject, ...(values || {}) };\n },\n {}\n );\n\n const repeatableValues = Object.keys(this.repeatableFormValueEntity).reduce(\n (repeatableObject, key) => {\n const formValueEntity = this.repeatableFormValueEntity[key];\n\n const values = Object.keys(formValueEntity)\n .map((valueIndex) => {\n return (formValueEntity[+valueIndex] || {}).form?.getRawValue();\n })\n .filter((value) => value);\n\n return { ...repeatableObject, [key]: values };\n },\n {}\n );\n\n return { ...dataValues, ...repeatableValues };\n }\n\n checkIfInValid() {\n const valueValidity = Object.keys(this.formValueEntity)\n .map((key) => {\n return (this.formValueEntity[key] || {}).isValid;\n })\n .some((validity) => !validity);\n\n const repeatableDataValidity = Object.keys(this.repeatableFormValueEntity)\n .map((key) => {\n return Object.keys(this.repeatableFormValueEntity[key]).some(\n (valueIndex) => {\n return (\n (this.repeatableFormValueEntity[key] || {})[+valueIndex] || {}\n ).isValid;\n }\n );\n })\n .some((validity) => !validity);\n\n return valueValidity || repeatableDataValidity;\n }\n}\n","<ng-container *ngIf=\"formMetaData()\">\n <ng-container *ngFor=\"let formSection of formMetaData().sections\">\n @if(formSection?.name; as sectionName) {\n <div class=\"form__section-name\">\n {{ sectionName }}\n </div>\n }\n <div class=\"form__section-content\">\n <ng-container *ngIf=\"formSection\">\n <div *ngFor=\"let fieldGroup of formSection?.fieldGroups\">\n <ng-container *ngIf=\"formGroups[fieldGroup.id] as formGroup\">\n <div\n *ngIf=\"fieldGroup.name && !fieldGroup.repeatableStage\"\n class=\"form__field-group-name\"\n >\n {{ fieldGroup?.name }}\n </div>\n <div *ngIf=\"fieldGroup.fields\">\n <!-- Single stage form section -->\n <ng-container *ngIf=\"!fieldGroup.repeatableStage\">\n <ng-dhis2-ui-form\n *ngIf=\"fieldGroup.fields.length > 0\"\n [fields]=\"fieldGroup.fields\"\n [form]=\"formGroup\"\n [dataEntities]=\"dataValueEntities()\"\n [programRuleActions]=\"ruleActions()\"\n [isFormHorizontal]=\"fieldGroup.isFormHorizontal || false\"\n (formUpdate)=\"onFormUpdate($event, fieldGroup.id)\"\n ></ng-dhis2-ui-form>\n </ng-container>\n\n <!-- Repeatable stage form section -->\n <ng-container *ngIf=\"fieldGroup.repeatableStage\">\n @if(fieldGroup.repeatDependentField) {\n\n <ng-container *ngIf=\"fieldGroup.repeatDependentField\">\n <ng-container\n *ngIf=\"{\n numberOfRows:\n dataValueEntities()[fieldGroup.repeatDependentField]\n } as dataParams\"\n >\n <ng-dhis2-ui-repeatable-form\n *ngIf=\"\n dataParams.numberOfRows &&\n dataParams.numberOfRows !== '0'\n \"\n [fieldGroup]=\"fieldGroup\"\n [dataEntities]=\"dataValueEntities()\"\n [form]=\"formGroup\"\n [program]=\"formSection.program || ''\"\n [programStage]=\"fieldGroup.repeatableStage\"\n [programRuleActions]=\"ruleActions()\"\n [numberOfRows]=\"+dataParams.numberOfRows\"\n [repeatDependentField]=\"\n fieldGroup.repeatDependentField || ''\n \"\n [events]=\"dataValueEntities()[fieldGroup.dataKey!]\"\n (repeatableStageUpdate)=\"\n onUpdateRepeatableStage($event, fieldGroup)\n \"\n ></ng-dhis2-ui-repeatable-form\n ></ng-container>\n </ng-container>\n } @else {\n <ng-dhis2-ui-repeatable-form\n [fieldGroup]=\"fieldGroup\"\n [dataEntities]=\"dataValueEntities()\"\n [form]=\"formGroup\"\n [program]=\"formSection.program || ''\"\n [programStage]=\"fieldGroup.repeatableStage\"\n [programRuleActions]=\"ruleActions()\"\n [numberOfRows]=\"1\"\n [repeatDependentField]=\"fieldGroup.repeatDependentField || ''\"\n [events]=\"dataValueEntities()[fieldGroup.dataKey!]\"\n (repeatableStageUpdate)=\"\n onUpdateRepeatableStage($event, fieldGroup)\n \"\n ></ng-dhis2-ui-repeatable-form>\n }\n </ng-container>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n </ng-container>\n</ng-container>\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport {\n Directive,\n effect,\n EffectRef,\n EventEmitter,\n inject,\n input,\n NgZone,\n OnDestroy,\n Output,\n signal,\n} from '@angular/core';\nimport { IFormField } from '../../interfaces';\nimport { FormValue, IMetadataRule, IMetadataRuleAction } from '../../models';\nimport { ProgramRuleEngine } from '@iapps/d2-web-sdk';\nimport { CustomOrgUnitConfig } from '../../components/org-unit-form-field.component';\n\n@Directive()\nexport class BaseFormWrapperComponent implements OnDestroy {\n ngZone = inject(NgZone);\n name = input<string>();\n fields = input.required<IFormField<string>[]>();\n rules = input<IMetadataRule[]>([]);\n dataValues = input<Record<string, unknown>>({});\n dataId = input<string>();\n customOrgUnitRoots = input<CustomOrgUnitConfig[]>();\n\n\n ruleActions = signal<IMetadataRuleAction[]>([]);\n isFormValid = signal<boolean>(true);\n #updatedDataValues = signal<Record<string, unknown>>({});\n\n @Output() formSave = new EventEmitter<Record<string, unknown>>();\n @Output() formUpdate = new EventEmitter<Record<string, unknown>>();\n @Output() formCancel = new EventEmitter<void>();\n @Output() formValidityUpdate = new EventEmitter<boolean>();\n\n ruleProcessor: EffectRef;\n constructor() {\n this.ruleProcessor = effect(() => {\n if (this.#updatedDataValues()) {\n this.executeRules();\n }\n });\n }\n\n updateDataValues(dataValues: Record<string, unknown>) {\n this.#updatedDataValues.set(dataValues);\n this.formUpdate.emit(this.#updatedDataValues());\n }\n\n updateFormValidity(isFormValid: boolean) {\n this.isFormValid.set(isFormValid);\n this.formValidityUpdate.emit(isFormValid);\n }\n\n protected executeRules() {\n this.ruleActions.set(\n new ProgramRuleEngine()\n .setRules(this.rules())\n .setDataValues(this.#updatedDataValues())\n .execute()\n );\n }\n\n ngOnDestroy(): void {\n this.ruleProcessor.destroy();\n }\n}\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './base-form-wrapper.component';\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './components';\n","import { Component, OnInit } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { BaseFormWrapperComponent } from '../../shared';\nimport { FormUtil } from '../../utils';\n\n@Component({\n selector: 'ng-dhis2-ui-flat-form',\n templateUrl: './flat-form.component.html',\n standalone: false,\n})\nexport class FlatFormComponent\n extends BaseFormWrapperComponent\n implements OnInit\n{\n formGroup!: FormGroup;\n ngOnInit(): void {\n this.formGroup = FormUtil.getFormGroup(this.fields(), this.dataValues());\n this.onFormUpdate();\n }\n\n onFormUpdate() {\n this.updateDataValues(this.formGroup.getRawValue());\n this.updateFormValidity(this.formGroup.valid);\n }\n}\n","<ng-dhis2-ui-form\n [fields]=\"fields()\"\n [form]=\"formGroup\"\n [dataEntities]=\"dataValues()\"\n [dataId]=\"dataId()\"\n [customOrgUnitRoots]=\"customOrgUnitRoots()\"\n [programRuleActions]=\"ruleActions()\"\n (formUpdate)=\"onFormUpdate()\"\n/>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FormFieldItemComponent } from './components/form-field-item.component';\nimport { FormFieldComponent } from './containers/form-field/form-field.component';\nimport { FormComponent } from './containers/form/form.component';\nimport { RepeatableFormComponent } from './containers/repeatable-form/repeatable-form.component';\nimport { SectionFormComponent } from './containers/section-form/section-form.component';\nimport { OrganisationUnitSelectorModule } from '../organisation-unit-selector';\nimport { ReactWrapperModule } from '../react-wrapper/react-wrapper.component';\nimport { FlatFormComponent } from './containers/flat-form/flat-form.component';\n\n@NgModule({\n declarations: [\n FormFieldComponent,\n FormComponent,\n RepeatableFormComponent,\n SectionFormComponent,\n FlatFormComponent,\n FormFieldItemComponent,\n ],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n ReactWrapperModule,\n OrganisationUnitSelectorModule,\n ],\n exports: [\n FormFieldComponent,\n FormComponent,\n RepeatableFormComponent,\n SectionFormComponent,\n FlatFormComponent,\n ],\n})\nexport class D2FormModule {}\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './form.module';\nexport * from './containers/form-field/form-field.component';\nexport * from './containers/form/form.component';\nexport * from './containers/repeatable-form/repeatable-form.component';\nexport * from './containers/section-form/section-form.component';\nexport * from './containers/flat-form/flat-form.component';\nexport * from './models';\nexport * from './interfaces';\nexport * from './utils';\n","import {\n AfterViewInit,\n Component,\n EventEmitter,\n inject,\n Input,\n NgZone,\n Output,\n signal,\n} from '@angular/core';\nimport React, { useState, useEffect } from 'react';\nimport * as ReactDOM from 'react-dom/client';\nimport { ReactWrapperModule } from '../../../react-wrapper/react-wrapper.component';\n\nimport {\n ProgramAttributesFilter,\n ProgramStageDataElementFilter,\n SelectionFiltersProps,\n TableRow,\n} from '../../models/selection-filters-ui.model';\n\nimport {\n InputField,\n SingleSelectField,\n SingleSelectOption,\n Button,\n ButtonStrip,\n Modal,\n ModalActions,\n ModalContent,\n ModalTitle,\n CircularLoader,\n} from '@dhis2/ui';\nimport { Provider } from '@dhis2/app-runtime';\nimport { firstValueFrom, map, Observable, take, zip } from 'rxjs';\nimport { NgxDhis2HttpClientService, User } from '@iapps/ngx-dhis2-http-client';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { OrganisationUnitSelectionConfig } from '../../../organisation-unit-selector';\nimport OrgUnitDimension from '../../../organisation-unit-selector/components/OrgUnitDimension';\n\n@Component({\n selector: 'app-selection-filters-ui',\n template: '<ng-content></ng-content>',\n styleUrls: ['./selection-filters-ui.component.scss'],\n standalone: false,\n})\nexport class SelectionFiltersComponent\n extends ReactWrapperModule\n implements AfterViewInit\n{\n @Input() actionOptions: {\n label: string;\n onClick: (row: TableRow) => void;\n }[] = [];\n @Input() programAttributesFilters: ProgramAttributesFilter[] = [];\n @Input() programStageDataElementFilters: ProgramStageDataElementFilter[] = [];\n @Input() startDate?: string;\n @Input() endDate?: string;\n @Input() program?: string;\n @Input() organisationUnit?: string;\n @Output() actionSelected = new EventEmitter<SelectionFiltersProps>();\n\n httpClient = inject(NgxDhis2HttpClientService);\n ngZone = inject(NgZone);\n\n private getAppConfig(): Observable<any> {\n return this.httpClient.systemInfo().pipe(\n map((response) => {\n const systemInfo = response as unknown as Record<string, unknown>;\n return {\n baseUrl: (document?.location?.host?.includes('localhost')\n ? `${document.location.protocol}//${document.location.host}`\n : systemInfo['contextPath']) as string,\n apiVersion: Number(\n (((systemInfo['version'] as string) || '')?.split('.') || [])[1]\n ),\n };\n })\n );\n }\n\n getRootOrgUnits(): Observable<string[]> {\n const orgUnitAttribute = this.getOrgUnitAttributeByUsage(\n this.orgUnitSelectionConfig.usageType\n );\n return this.httpClient\n .me()\n .pipe(\n map((user: User) =>\n (user ? user[orgUnitAttribute] : []).map((orgUnit) => orgUnit.id)\n )\n );\n }\n\n getOrgUnitLevels(): Promise<any> {\n return firstValueFrom(\n this.httpClient\n .get(\n 'organisationUnitLevels.json?fields=id,level,displayName,name&paging=false'\n )\n .pipe(\n map((res: Record<string, unknown>) => res?.['organisationUnitLevels'])\n )\n );\n }\n\n onSelectOrgUnit(selectedOrgUnits: Record<string, string>[]) {\n this.showOrgUnitTree.set(false);\n\n if ((selectedOrgUnits || [])[0]) {\n this.selectedOrgUnit.set(selectedOrgUnits[0]);\n }\n }\n\n getOrgUnitGroups(): Promise<any> {\n return firstValueFrom(\n this.httpClient\n .get(\n 'organisationUnitGroups.json?fields=id,displayName,name&paging=false'\n )\n .pipe(\n map((res: Record<string, unknown>) => res?.['organisationUnitGroups'])\n )\n );\n }\n\n getOrgUnitAttributeByUsage(usageType: string) {\n switch (usageType) {\n case 'DATA_ENTRY':\n return 'organisationUnits';\n\n case 'DATA_VIEW':\n return 'dataViewOrganisationUnits';\n\n default:\n return 'organisationUnits';\n }\n }\n\n FieldOrgUnitSelector = (props: {\n onSelectOrgUnit: (selectedOrgUnits: any) => void;\n onCancelOrgUnit: () => void;\n }) => {\n const { onSelectOrgUnit, onCancelOrgUnit } = props;\n const [selected, setSelected] = useState([]);\n const [rootOrgUnits, setRootOrgUnits] = useState<string[]>();\n const [config, setConfig] = useState<any>();\n\n // TODO: START::: Improve approach on handling observables \n // useEffect(() => {\n // zip(this.getAppConfig(), this.getRootOrgUnits()).subscribe({\n // next: ([appConfig, rootOrgUnits]) => {\n // setConfig(appConfig);\n // setRootOrgUnits(rootOrgUnits);\n // },\n // error: (error) => console.error(error),\n // });\n // }, []);\n // TODO: END::: Improve approach on handling observables \n\n useEffect(() => {\n const subscription = zip(this.getAppConfig(), this.getRootOrgUnits())\n .pipe(take(1)) // Ensures only one emission\n .subscribe({\n next: ([appConfig, rootOrgUnits]) => {\n setConfig(appConfig);\n setRootOrgUnits(rootOrgUnits);\n },\n error: (error) => console.error(error),\n });\n \n return () => {\n subscription.unsubscribe(); // Cleanup to avoid memory leaks\n };\n }, []);\n \n return config ? (\n <Provider\n config={config}\n plugin={false}\n parentAlertsAdd={undefined}\n showAlertsInPlugin={false}\n >\n {\n <Modal position=\"middle\" large>\n <ModalTitle>Organisation unit</ModalTitle>\n <ModalContent>\n <OrgUnitDimension\n selected={selected}\n hideGroupSelect={this.orgUnitSelectionConfig.hideGroupSelect}\n hideLevelSelect={this.orgUnitSelectionConfig.hideLevelSelect}\n hideUserOrgUnits={this.orgUnitSelectionConfig.hideUserOrgUnits}\n onSelect={(selectionEvent: any) => {\n setSelected(selectionEvent.items);\n }}\n orgUnitGroupPromise={this.getOrgUnitGroups()}\n orgUnitLevelPromise={this.getOrgUnitLevels()}\n roots={rootOrgUnits}\n />\n </ModalContent>\n <ModalActions>\n <ButtonStrip end>\n <Button\n onClick={() => {\n onCancelOrgUnit();\n }}\n >\n Cancel\n </Button>\n <Button\n primary\n disabled={selected.length === 0}\n onClick={() => {\n onSelectOrgUnit(selected);\n }}\n >\n Confirm\n </Button>\n </ButtonStrip>\n </ModalActions>\n </Modal>\n }\n </Provider>\n ) : (\n <CircularLoader small />\n );\n };\n showOrgUnitTree = signal<boolean>(false);\n orgUnitSelectionConfig: OrganisationUnitSelectionConfig = {\n hideGroupSelect: true,\n hideLevelSelect: true,\n hideUserOrgUnits: true,\n allowSingleSelection: true,\n usageType: 'DATA_ENTRY',\n };\n\n selectedOrgUnit = signal<any>(null);\n selectedOrgUnit$ = toObservable(this.selectedOrgUnit);\n\n SelectionFiltersUI = () => {\n const [filters, setFilters] = useState<{\n programAttributesFilters: ProgramAttributesFilter[];\n programStageDataElementFilters: ProgramStageDataElementFilter[];\n startDate: string;\n endDate: string;\n program: string;\n organisationUnit: string;\n }>({\n programAttributesFilters: this.programAttributesFilters || [],\n programStageDataElementFilters: this.programStageDataElementFilters || [],\n startDate: this.startDate || '',\n endDate: this.endDate || '',\n program: this.program || '',\n organisationUnit: this.organisationUnit || '',\n });\n\n const [displayValue, setDisplayValue] = useState(null);\n const [selected, setSelected] = useState();\n const [selectedOrganisationUnit, setSelectedOrganisationUnit] = useState();\n const [touched, setTouched] = useState(false);\n const [showOrgUnit, setShowOrgUnit] = useState<boolean>(false);\n const [value, setValue] = useState(null);\n const [showMoreFilters, setShowMoreFilters] = useState(false);\n\n const toggleMoreFilters = () => setShowMoreFilters((prev) => !prev);\n\n useEffect(() => {\n setFilters({\n programAttributesFilters: this.programAttributesFilters,\n programStageDataElementFilters: this.programStageDataElementFilters,\n startDate: this.startDate || '',\n endDate: this.endDate || '',\n program: this.program || '',\n organisationUnit: this.organisationUnit || filters.organisationUnit,\n });\n }, [\n this.programAttributesFilters,\n this.programStageDataElementFilters,\n this.startDate,\n this.endDate,\n ]);\n\n const handleAttributeChange = (index: number, selectedValue: string) => {\n setFilters((prevFilters) => {\n const updatedFilters = [...prevFilters.programAttributesFilters];\n updatedFilters[index] = {\n ...updatedFilters[index],\n value: selectedValue,\n };\n return { ...prevFilters, programAttributesFilters: updatedFilters };\n });\n };\n\n const handleDataElementChange = (index: number, selectedValue: string) => {\n setFilters((prevFilters) => {\n const updatedFilters = [...prevFilters.programStageDataElementFilters];\n updatedFilters[index] = {\n ...updatedFilters[index],\n value: selectedValue,\n };\n return {\n ...prevFilters,\n programStageDataElementFilters: updatedFilters,\n };\n });\n };\n\n const handleSearch = () => {\n this.actionSelected.emit({\n ...filters,\n organisationUnit:\n selectedOrganisationUnit ||\n this.organisationUnit ||\n filters.organisationUnit,\n startDate: filters.startDate,\n endDate: filters.endDate,\n program: this.program || filters.program,\n } as unknown as SelectionFiltersProps);\n };\n\n const getAttributeColumnSpan = (index: number) => {\n const totalItems = filters.programAttributesFilters.length;\n\n if (totalItems <= 4) {\n if (totalItems === 1) {\n return 'span 4';\n }\n if (totalItems === 2) {\n return 'span 2';\n }\n if (totalItems === 3) {\n return 'span 1';\n }\n if (totalItems === 4) {\n return 'span 1';\n }\n } else {\n const rowIndex = Math.floor(index / 2);\n if (index % 2 === 0) {\n return 'span 2';\n } else if (index === totalItems - 1) {\n return 'span 4';\n } else {\n return 'span 2';\n }\n }\n\n return 'span 1';\n };\n\n const getDataElementColumnSpan = (index: number) => {\n const totalItems = filters.programStageDataElementFilters.length;\n\n if (totalItems <= 4) {\n if (totalItems === 1) {\n return 'span 4';\n }\n if (totalItems === 2) {\n return 'span 2';\n }\n if (totalItems === 3) {\n return 'span 1';\n }\n if (totalItems === 4) {\n return 'span 1';\n }\n } else {\n const rowIndex = Math.floor(index / 2);\n if (index % 2 === 0) {\n return 'span 2';\n } else if (index === totalItems - 1) {\n return 'span 4';\n } else {\n return 'span 2';\n }\n }\n\n return 'span 1';\n };\n\n return (\n <div\n style={{\n fontFamily: 'Arial, sans-serif',\n padding: '20px',\n backgroundColor: '#f9f9f9',\n borderRadius: '8px',\n boxShadow: '0 4px 8px rgba(0, 0, 0, 0.1)',\n }}\n >\n {/* Organization Unit, Start Date, End Date Row */}\n {/* <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(3, 1fr)',\n gap: '16px',\n marginBottom: '16px',\n }}\n >\n <>\n <InputField\n value={displayValue}\n label=\"Organization Unit\"\n readOnly={false}\n onFocus={() => {\n setShowOrgUnit(true);\n }}\n onBlur={() => {\n setTouched(true);\n }}\n />\n {showOrgUnit && (\n <this.FieldOrgUnitSelector\n onCancelOrgUnit={() => {\n setShowOrgUnit(false);\n setTouched(true);\n }}\n onSelectOrgUnit={(selectedOrgUnits) => {\n if ((selectedOrgUnits || [])[0]) {\n const selectedOrgUnit = selectedOrgUnits[0];\n setDisplayValue(selectedOrgUnit.name);\n setSelected(selectedOrgUnit.id);\n setSelectedOrganisationUnit(selectedOrgUnit.id);\n setValue(selectedOrgUnit.id);\n setShowOrgUnit(false);\n setTouched(true);\n\n // this.ngZone.run(() => {\n // setDisplayValue(selectedOrgUnit.name);\n // setSelected(selectedOrgUnit.id)\n // setSelectedOrganisationUnit(selectedOrgUnit.id)\n // setValue(selectedOrgUnit.id);\n // setShowOrgUnit(false);\n // setTouched(true);\n // });\n }\n }}\n />\n )}\n </>\n\n <InputField\n className=\"input-field\"\n label=\"Start Date\"\n type=\"DATE\"\n value={filters.startDate}\n onChange={(event: { value: string }) =>\n setFilters({ ...filters, startDate: event.value })\n }\n />\n\n <InputField\n className=\"input-field\"\n label=\"End Date\"\n type=\"DATE\"\n value={filters.endDate}\n onChange={(event: { value: string }) =>\n setFilters({ ...filters, endDate: event.value })\n }\n />\n </div> */}\n\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: '1fr 1fr 1fr auto', // Ensure proper button sizing\n gap: '16px',\n alignItems: 'center', // Align inputs and button on the same row\n marginBottom: '16px',\n }}\n >\n {/* Organization Unit Selector */}\n <div style={{ width: '100%' }}>\n <InputField\n value={displayValue}\n label=\"Organization Unit\"\n readOnly={false}\n onFocus={() => setShowOrgUnit(true)}\n onBlur={() => {\n setTouched(true);\n }}\n />\n {showOrgUnit && (\n <this.FieldOrgUnitSelector\n onCancelOrgUnit={() => {\n setShowOrgUnit(false);\n setTouched(true);\n }}\n onSelectOrgUnit={(selectedOrgUnits) => {\n if ((selectedOrgUnits || [])[0]) {\n const selectedOrgUnit = selectedOrgUnits[0];\n setDisplayValue(selectedOrgUnit.name);\n setSelected(selectedOrgUnit.id);\n setSelectedOrganisationUnit(selectedOrgUnit.id);\n setValue(selectedOrgUnit.id);\n setShowOrgUnit(false);\n setTouched(true);\n }\n }}\n />\n )}\n </div>\n\n {/* Start Date */}\n <InputField\n className=\"input-field\"\n label=\"Start Date\"\n type=\"date\"\n value={filters.startDate}\n onChange={(event: { value: string }) =>\n setFilters({ ...filters, startDate: event.value })\n }\n />\n\n {/* End Date */}\n <InputField\n className=\"input-field\"\n label=\"End Date\"\n type=\"date\"\n value={filters.endDate}\n onChange={(event: { value: string }) =>\n setFilters({ ...filters, endDate: event.value })\n }\n />\n\n {/* Toggle Button with Hidden Label */}\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n height: '100%',\n }}\n >\n <label\n style={{\n color: 'transparent', // Hides label text but keeps spacing\n fontSize: '14px',\n marginBottom: '4px',\n }}\n >\n Toggle\n </label>\n <Button\n style={{ height: '40px' }} // Match input field height\n onClick={() => setShowMoreFilters(!showMoreFilters)}\n >\n {showMoreFilters ? 'Hide Filters' : 'More Filters'}\n </Button>\n </div>\n </div>\n\n {showMoreFilters && (\n <>\n {/* Attribute Filters Grid */}\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(4, 1fr)',\n gap: '16px',\n }}\n >\n {filters.programAttributesFilters.map((filter, index) => (\n <div\n key={index}\n style={{ gridColumn: getAttributeColumnSpan(index) }}\n >\n {filter.hasOptions && filter.options.length > 0 ? (\n <SingleSelectField\n className=\"single-select\"\n label={filter.name || 'Select Option'}\n selected={filter.value}\n onChange={(event: { selected: string }) =>\n handleAttributeChange(index, event.selected)\n }\n >\n {filter.options.map((option, i) => (\n <SingleSelectOption\n key={crypto.randomUUID() || i}\n label={option.name}\n value={option.code}\n />\n ))}\n </SingleSelectField>\n ) : (\n <InputField\n className=\"input-field\"\n label={filter.name || 'Program name'}\n type={filter.valueType as any}\n value={filter.value}\n onChange={(event: { value: string }) =>\n handleAttributeChange(index, event.value)\n }\n />\n )}\n </div>\n ))}\n </div>\n\n {/* Data Element Filters Grid */}\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(4, 1fr)',\n gap: '16px',\n }}\n >\n {filters.programStageDataElementFilters.map((filter, index) => (\n <div\n key={index}\n style={{ gridColumn: getDataElementColumnSpan(index) }}\n >\n {filter.hasOptions && filter.options.length > 0 ? (\n <SingleSelectField\n className=\"single-select\"\n label={filter.name || 'Aggregation type'}\n selected={filter.value}\n onChange={(event: { selected: string }) =>\n handleDataElementChange(index, event.selected)\n }\n >\n {filter.options.map((option, i) => (\n <SingleSelectOption\n key={crypto.randomUUID() || i}\n label={option.name}\n value={option.code}\n />\n ))}\n </SingleSelectField>\n ) : (\n <InputField\n className=\"input-field\"\n type={filter.valueType as any}\n label={filter.name || 'Program name'}\n value={filter.value}\n onChange={(event: { value: string }) =>\n handleDataElementChange(index, event.value)\n }\n />\n )}\n </div>\n ))}\n </div>\n\n {/* Search Button */}\n <div style={{ textAlign: 'right', marginTop: '16px' }}>\n <Button onClick={handleSearch}>Search</Button>\n </div>\n </>\n )}\n </div>\n );\n };\n\n override async ngAfterViewInit() {\n if (!this.elementRef) throw new Error('No element ref');\n this.reactDomRoot = ReactDOM.createRoot(this.elementRef.nativeElement);\n this.component = this.SelectionFiltersUI;\n this.render();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SelectionFiltersComponent } from './containers/selection-filters-ui/selection-filters-ui.component';\n\nimport { SharedDhis2UiModule } from '../../shared/shared.module';\nimport { ReactWrapperModule } from '../react-wrapper/react-wrapper.component';\nimport { OrganisationUnitSelectorModule } from '../organisation-unit-selector';\n\n@NgModule({\n declarations: [SelectionFiltersComponent],\n imports: [CommonModule, SharedDhis2UiModule, ReactWrapperModule, OrganisationUnitSelectorModule],\n exports: [SelectionFiltersComponent],\n})\nexport class SelectionFiltersUiModule {}\n","import { Component, Input, input, OnInit } from '@angular/core';\nimport {\n BaseTrackerQuery,\n D2Window,\n TrackedEntityInstance,\n} from '@iapps/d2-web-sdk';\nimport { FormFieldExtension, FormMetaData, IFormMetadata } from '../form';\n\n@Component({\n selector: 'ng-dhis2-ui-tracker-form',\n templateUrl: './tracker-form.component.html',\n standalone: false,\n})\nexport class TrackerFormComponent implements OnInit {\n program = input.required<string>();\n programStage = input<string>();\n trackedEntity = input<string | undefined>();\n d2 = (window as unknown as D2Window).d2Web;\n trackerQuery!: BaseTrackerQuery<TrackedEntityInstance>;\n formMetaData!: IFormMetadata;\n instance!: TrackedEntityInstance;\n\n async ngOnInit() {\n this.trackerQuery = this.d2.trackerModule.trackedEntity.setProgram(\n this.program()\n );\n const program = await this.trackerQuery.getMetaData();\n\n this.instance = this.trackedEntity()\n ? ((\n await this.trackerQuery\n .setTrackedEntity(this.trackedEntity() as string)\n .get()\n ).data as TrackedEntityInstance) || (await this.trackerQuery.create())\n : await this.trackerQuery.create();\n\n if (program) {\n this.formMetaData = new FormMetaData({\n programs: [program],\n programStage: this.programStage(),\n disableEnrollmentDate: true,\n excludeInheritedAttributes: false,\n }).toJson();\n }\n }\n\n onFormUpdate(values: any) {\n const instance = this.instance as TrackedEntityInstance;\n instance?.updateDataValues(values);\n }\n\n onSave(event: any) {}\n\n onCancel() {}\n}\n","@if(formMetaData) {\n<ng-dhis2-ui-section-form\n [formMetaData]=\"formMetaData\"\n [dataValueEntities]=\"instance\"\n (formUpdate)=\"onFormUpdate($event)\"\n (save)=\"onSave($event)\"\n (cancel)=\"onCancel()\"\n/>\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { TrackerFormComponent } from './tracker-form.component';\nimport { D2FormModule } from '../form';\n\n@NgModule({\n imports: [CommonModule, D2FormModule],\n declarations: [TrackerFormComponent],\n exports: [TrackerFormComponent],\n})\nexport class TrackerFormModule {}\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './tracker-form.module';\nexport * from './tracker-form.component';\n","import { Component, input, OnInit } from '@angular/core';\nimport { BaseEventQuery, D2Window, DHIS2Event } from '@iapps/d2-web-sdk';\nimport { FormMetaData, IFormMetadata } from '../form';\n\n@Component({\n selector: 'ng-dhis2-ui-event-form',\n templateUrl: './event-form.component.html',\n standalone: false,\n})\nexport class EventFormComponent implements OnInit {\n program = input.required<string>();\n programStage = input.required<string>();\n eventId = input<string | undefined>();\n enrollment = input<string | undefined>();\n trackedEntity = input<string | undefined>();\n d2 = (window as unknown as D2Window).d2Web;\n eventQuery!: BaseEventQuery<DHIS2Event>;\n formMetaData!: IFormMetadata;\n instance!: DHIS2Event;\n\n async ngOnInit() {\n this.eventQuery = this.d2.eventModule.event\n .setProgram(this.program())\n .setProgramStage(this.programStage())\n .setEnrollment(this.enrollment() as string)\n .setTrackedEntity(this.trackedEntity() as string);\n\n const program = await this.eventQuery.getMetaData();\n\n this.instance = this.eventId()\n ? ((await this.eventQuery.setEvent(this.eventId() as string).get())\n .data as DHIS2Event) || (await this.eventQuery.create())\n : await this.eventQuery.create();\n\n if (program) {\n this.formMetaData = new FormMetaData({\n programs: [program],\n programStage: this.programStage(),\n }).toJson();\n }\n }\n\n onFormUpdate(values: any) {\n const instance = this.instance as DHIS2Event;\n instance?.updateDataValues(values);\n }\n\n onSave(event: any) {}\n\n onCancel() {}\n}\n","@if(formMetaData) {\n<ng-dhis2-ui-section-form\n [formMetaData]=\"formMetaData\"\n [dataValueEntities]=\"instance\"\n (formUpdate)=\"onFormUpdate($event)\"\n (save)=\"onSave($event)\"\n (cancel)=\"onCancel()\"\n/>\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { EventFormComponent } from './event-form.component';\nimport { D2FormModule } from '../form';\n\n@NgModule({\n imports: [CommonModule, D2FormModule],\n declarations: [EventFormComponent],\n exports: [EventFormComponent],\n})\nexport class EventFormModule {}\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\nexport * from './event-form.module';\nexport * from './event-form.component';\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport { FormFieldExtension } from '../../form';\n\nexport type AutoAssignedValues = { field: string; value: string };\n\nexport interface IProgramEntryFormConfig {\n program: string;\n programStage?: string;\n displayType: 'FLAT' | 'SECTION' | 'CUSTOM';\n formType: 'TRACKER' | 'EVENT';\n hideRegistrationUnit?: boolean;\n hideEnrollmentDate?: boolean;\n hideTrackedEntityTypeAttributes?: boolean;\n disableRegistrationUnit?: boolean;\n disableEnrollmentDate?: boolean;\n disabledIncidentDate?: boolean;\n excludeProgramStages?: boolean;\n excludeInheritedAttributes?: boolean;\n includedProgramStages?: string[];\n submitButtonLabel?: string;\n cancelButtonLabel?: string;\n hideActionButtons?: boolean;\n hideSubmitButton?: boolean;\n hideCancelButton?: boolean;\n ignoreRepeatability?: boolean;\n autoAssignedValues?: AutoAssignedValues[];\n hideCustomAssignedFields?: boolean;\n autoComplete?: boolean;\n formFieldExtensions?: FormFieldExtension[];\n updateTeiOrgUnit?: boolean;\n}\nexport class ProgramEntryFormConfig implements IProgramEntryFormConfig {\n program!: string;\n programStage?: string;\n displayType: 'FLAT' | 'SECTION' | 'CUSTOM' = 'FLAT';\n formType!: 'TRACKER' | 'EVENT';\n hideRegistrationUnit?: boolean;\n hideEnrollmentDate?: boolean;\n hideTrackedEntityTypeAttributes?: boolean;\n disableRegistrationUnit?: boolean;\n disableEnrollmentDate?: boolean;\n disabledIncidentDate?: boolean;\n excludeProgramStages?: boolean;\n excludeInheritedAttributes?: boolean;\n includedProgramStages?: string[];\n submitButtonLabel = 'Submit';\n cancelButtonLabel = 'Cancel';\n hideActionButtons?: boolean;\n hideSubmitButton?: boolean;\n hideCancelButton?: boolean;\n ignoreRepeatability?: boolean;\n autoAssignedValues?: AutoAssignedValues[];\n hideCustomAssignedFields?: boolean;\n autoComplete?: boolean;\n formFieldExtensions?: FormFieldExtension[];\n updateTeiOrgUnit: boolean = false;\n\n constructor(config: IProgramEntryFormConfig) {\n Object.assign(this, config);\n }\n}\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport {\n DataElement,\n Program,\n ProgramStage,\n TrackedEntityAttribute,\n} from '@iapps/d2-web-sdk';\nimport { ProgramEntryFormConfig } from '../models';\nimport {\n DateField,\n FieldDropdown,\n FieldUtil,\n FormField,\n FormFieldMetaType,\n IFormField,\n} from '../../form';\nimport { camelCase, flatten, isUndefined } from 'lodash';\n\nexport class ProgramEntryFormFieldUtil {\n constructor(\n private program: Program,\n private config: ProgramEntryFormConfig\n ) {}\n\n get attributes() {\n let programTrackedEntityAttributes =\n this.program.programTrackedEntityAttributes || [];\n\n if (this.config.excludeInheritedAttributes) {\n programTrackedEntityAttributes = programTrackedEntityAttributes.filter(\n (programTrackedEntityAttribute) => {\n return !(\n this.program.trackedEntityType?.trackedEntityTypeAttributes || []\n ).find(\n (inheritedAttribute) =>\n inheritedAttribute.trackedEntityAttribute?.id ===\n programTrackedEntityAttribute?.trackedEntityAttribute?.id\n );\n }\n );\n }\n\n return programTrackedEntityAttributes.map(\n (programTrackedEntityAttribute) => {\n return {\n ...programTrackedEntityAttribute.trackedEntityAttribute,\n sortOrder: programTrackedEntityAttribute.sortOrder,\n mandatory: programTrackedEntityAttribute.mandatory,\n allowFutureDate: programTrackedEntityAttribute.allowFutureDate,\n trackedEntityType: this.program.trackedEntityType?.id,\n metaType: 'ATTRIBUTE',\n stepId: null,\n };\n }\n );\n }\n\n get dataElements() {\n const programStages = this.config.programStage\n ? this.program.programStages?.filter(\n (programStage) => programStage.id === this.config.programStage\n )\n : this.program.programStages;\n return flatten(\n (programStages || []).map((programStage) => {\n const dataElements = (programStage.programStageDataElements || []).map(\n (stageDataElement) => {\n return {\n ...stageDataElement.dataElement,\n sortOrder: stageDataElement.sortOrder,\n mandatory: stageDataElement.compulsory,\n allowFutureDate: stageDataElement.allowFutureDate,\n stepId: programStage.id,\n metaType: 'DATA_ELEMENT',\n };\n }\n );\n\n const eventDateName =\n programStage.executionDateLabel ||\n `Reporting date - ${programStage.name}`;\n\n return [\n {\n id: 'occurredAt',\n code: 'OCCURRED_AT',\n formName: eventDateName,\n name: eventDateName,\n shortName: eventDateName,\n displayName: eventDateName,\n sortOrder: 1,\n mandatory: true,\n stepId: programStage.id,\n valueType: 'DATE',\n metaType: 'EVENT_DATE',\n domainType: 'TRACKER',\n aggregationType: 'NONE',\n lastUpdated: '',\n created: '',\n },\n ...dataElements,\n ];\n })\n );\n }\n\n #getOrgUniField() {\n if (this.config.hideRegistrationUnit) {\n return null;\n }\n\n return new FormField<string>({\n id: 'orgUnit',\n key: 'orgUnit',\n label: this.program.orgUnitLabel ?? 'Registering unit',\n code: 'orgUnit',\n required: true,\n controlType: 'org-unit',\n disabled: this.config.disableRegistrationUnit,\n isOrgUnit: true,\n });\n }\n\n #getEnrollmentDateField() {\n if (this.config.hideEnrollmentDate || this.config.programStage) {\n return null;\n }\n\n return new FormField<string>({\n id: 'enrollmentDate',\n label: this.program.enrollmentDateLabel || 'Enrollment date',\n code: 'enrollmentDate',\n key: 'enrollmentDate',\n required: true,\n type: 'date',\n controlType: 'date',\n disabled: this.config.disableEnrollmentDate,\n });\n }\n\n #getIncidentDateField() {\n if (!this.program.displayIncidentDate || this.config.programStage) {\n return null;\n }\n\n return new DateField({\n id: 'incidentDate',\n label: this.program.incidentDateLabel || 'Incident date',\n code: 'incidentDate',\n key: 'incidentDate',\n required: true,\n type: 'date',\n controlType: 'date',\n disabled: this.config.disabledIncidentDate,\n });\n }\n\n get reportFields() {\n return [\n this.#getOrgUniField(),\n this.#getEnrollmentDateField(),\n this.#getIncidentDateField(),\n ].filter((field) => field != null);\n }\n\n get fields(): IFormField<string>[] {\n const fields = [...this.attributes, ...this.dataElements]\n .map((field) => {\n const options = FieldDropdown.getDropdownOptions(field);\n\n const hasOptions = options?.length > 0;\n\n const extension = this.config.formFieldExtensions?.find(\n (fieldExtension) => fieldExtension?.id === field.id\n );\n\n const autoAssignedValue = this.#getAutoAssignedValue(field);\n\n if (\n !isUndefined(autoAssignedValue) &&\n this.config.hideCustomAssignedFields\n ) {\n return null;\n }\n\n return new FormField<string>({\n ...field,\n id: field.id,\n code: field.code,\n label: field.formName || field.name,\n key: field.code ? camelCase(field.code) : field.id,\n required: field.mandatory,\n type: FieldUtil.getFieldType(field.valueType),\n options,\n disabled: this.#getDisabledStatus(field),\n order: field.sortOrder,\n hasOptions,\n controlType: FieldUtil.getFieldControlType(\n field.valueType,\n hasOptions\n ),\n metaType: field.metaType as FormFieldMetaType,\n stepId: (field as { stepId: string }).stepId,\n extension,\n });\n })\n .filter((field) => field != null)\n .sort((a, b) => a.order ?? 0 - (b.order ?? 0));\n\n return [...this.reportFields, ...fields];\n }\n\n #getDisabledStatus(field: TrackedEntityAttribute | DataElement): boolean {\n if (field?.generated) {\n return true;\n }\n\n if (\n this.config.autoAssignedValues &&\n this.config.autoAssignedValues.length > 0\n ) {\n const assignedValue = this.#getAutoAssignedValue(field);\n\n return !isUndefined(assignedValue);\n }\n\n return false;\n }\n\n #getAutoAssignedValue(field: TrackedEntityAttribute | DataElement) {\n const key = field.code ? camelCase(field.code) : field.id;\n\n const assignedValue = (this.config.autoAssignedValues || []).find(\n (assignedValue) => assignedValue.field === key\n )?.value;\n\n return assignedValue;\n }\n}\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport { Program } from '@iapps/d2-web-sdk';\nimport { IProgramEntryFormSection, ProgramEntryFormConfig } from '../models';\n\nexport class ProgramEntryFormSectionUtil {\n constructor(\n private program: Program,\n private config: ProgramEntryFormConfig\n ) {}\n\n get sections(): IProgramEntryFormSection[] {\n return [];\n }\n}\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nexport * from './program-entry-form-field.util';\nexport * from './program-entry-form-section.util';\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport { D2Window, Program, ProgramRule } from '@iapps/d2-web-sdk';\nimport { ProgramEntryFormConfig } from './program-entry-form.config';\nimport { IFormField, IMetadataRule, MetadataRule } from '../../form';\nimport { IProgramEntryFormSection } from './program-entry-form-section.model';\nimport {\n ProgramEntryFormFieldUtil,\n ProgramEntryFormSectionUtil,\n} from '../utils';\n\nexport interface IProgramEntryFormMetaData {\n id: string;\n name: string;\n description?: string;\n program: Program;\n formFields: IFormField<string>[];\n sections: IProgramEntryFormSection[];\n rules: IMetadataRule[];\n}\n\nexport class ProgramEntryFormMetaData implements IProgramEntryFormMetaData {\n id!: string;\n name!: string;\n description?: string;\n\n d2 = (window as unknown as D2Window)?.d2Web;\n config!: ProgramEntryFormConfig;\n program!: Program;\n\n setConfig(config: ProgramEntryFormConfig): ProgramEntryFormMetaData {\n this.config = config;\n return this;\n }\n\n getProgramPromise() {\n const program = this.config.program;\n\n const programQuery = this.d2.programModule.program\n .select([\n 'id',\n 'code',\n 'name',\n 'captureCoordinates',\n 'featureType',\n 'enrollmentDateLabel',\n 'incidentDateLabel',\n 'displayIncidentDate',\n 'onlyEnrollOnce',\n 'orgUnitLabel',\n 'programType',\n 'useFirstStageDuringRegistration',\n 'trackedEntityType',\n ])\n\n .with(\n this.d2.programModule.trackedEntityType\n .select(['id', 'name'])\n .with(\n this.d2.programModule.trackedEntityTypeAttribute.select([\n 'trackedEntityAttribute',\n ])\n ),\n 'ToOne'\n )\n\n .with(\n this.d2.programModule.programRuleVariable\n .with(\n this.d2.dataElementModule.dataElement.select([\n 'id',\n 'code',\n 'name',\n ]),\n 'ToOne'\n )\n .with(\n this.d2.programModule.trackedEntityAttribute.select([\n 'id',\n 'code',\n 'name',\n ]),\n 'ToOne'\n )\n )\n .byId(program as string);\n\n if (!this.config.programStage) {\n programQuery.with(\n this.d2.programModule.programTrackedEntityAttribute.with(\n this.d2.programModule.trackedEntityAttribute.with(\n this.d2.optionSetModule.optionSet.with(\n this.d2.optionSetModule.option\n ),\n 'ToOne'\n ),\n 'ToOne'\n )\n );\n }\n\n if (this.config.displayType === 'FLAT') {\n programQuery.with(\n this.d2.programModule.programSection.with(\n this.d2.programModule.trackedEntityAttribute.select(['id'])\n )\n );\n }\n\n if (!this.config.excludeProgramStages || this.config.programStage) {\n const programStageQuery = this.d2.programModule.programStage\n .with(this.d2.programModule.programStageSection)\n .with(\n this.d2.programModule.programStageDataElement.with(\n this.d2.dataElementModule.dataElement.with(\n this.d2.optionSetModule.optionSet.with(\n this.d2.optionSetModule.option\n ),\n 'ToOne'\n ),\n 'ToOne'\n )\n );\n\n programQuery.with(programStageQuery);\n }\n\n return programQuery.get();\n }\n\n async #getProgramMetaData(): Promise<Program | null> {\n const program = this.config.program;\n\n if (!this.d2) {\n return null;\n }\n\n const metaDataResponse = await Promise.all([\n this.getProgramPromise(),\n this.d2.programModule.programRule\n .where({\n attribute: 'program.id' as any,\n value: program as string,\n })\n .with(\n this.d2.programModule.programRuleAction\n .select([\n 'id',\n 'programRuleActionType',\n 'data',\n 'displayContent',\n 'content',\n ])\n .with(\n this.d2.dataElementModule.dataElement.select([\n 'id',\n 'code',\n 'name',\n ]),\n 'ToOne'\n )\n .with(\n this.d2.programModule.trackedEntityAttribute.select([\n 'id',\n 'code',\n 'name',\n ]),\n 'ToOne'\n )\n .with(\n this.d2.optionSetModule.optionGroup\n .select(['id'])\n .with(\n this.d2.optionSetModule.option.select([\n 'id',\n 'code',\n 'displayName',\n ]),\n 'ToMany'\n ),\n 'ToOne'\n )\n .with(\n this.d2.optionSetModule.option.select([\n 'id',\n 'code',\n 'displayName',\n ]),\n 'ToOne'\n )\n )\n .get(),\n ]);\n\n const [programResponse, programRuleResponse] = metaDataResponse;\n\n const metaData = programResponse.data as Program;\n metaData.programRules = programRuleResponse.data as ProgramRule[];\n\n return metaData;\n }\n\n get formFields(): IFormField<string>[] {\n if (!this.program) {\n return [];\n }\n\n return new ProgramEntryFormFieldUtil(this.program, this.config).fields;\n }\n\n get sections(): IProgramEntryFormSection[] {\n if (!this.program || this.config.displayType !== 'SECTION') {\n return [];\n }\n\n return new ProgramEntryFormSectionUtil(this.program, this.config).sections;\n }\n\n get rules(): IMetadataRule[] {\n if (!this.program || !this.program.programRules) {\n return [];\n }\n\n return this.program.programRules.map((programRule) =>\n new MetadataRule(\n programRule,\n this.program.programRuleVariables || []\n ).toJson()\n );\n }\n\n toJson(): IProgramEntryFormMetaData {\n return {\n id: this.program?.id,\n name: this.program?.name,\n description: this.program?.description,\n program: this.program,\n formFields: this.formFields,\n sections: this.sections,\n rules: this.rules,\n };\n }\n\n async get() {\n try {\n const program = await this.#getProgramMetaData();\n\n if (program) {\n this.program = program;\n return this.toJson();\n }\n\n return null;\n } catch (err) {\n return null;\n }\n }\n}\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport { IFormField } from '../../form';\n\nexport interface IProgramEntryFormSection {\n id: string;\n name: string;\n description?: string;\n formFields: IFormField<string>[];\n orientation: 'HORIZONTAL' | 'VERTICAL';\n}\n\nexport class ProgramEntryFormSection implements IProgramEntryFormSection {\n id!: string;\n name!: string;\n description?: string;\n formFields: IFormField<string>[] = [];\n orientation: 'HORIZONTAL' | 'VERTICAL' = 'HORIZONTAL';\n\n constructor(props: IProgramEntryFormSection) {\n Object.assign(this, props);\n }\n}\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nexport * from './program-entry-form.config';\nexport * from './program-entry-form-metadata';\nexport * from './program-entry-form-section.model';\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n computed,\n EventEmitter,\n inject,\n input,\n NgZone,\n Output,\n signal,\n} from '@angular/core';\nimport {\n AutoAssignedValues,\n IProgramEntryFormMetaData,\n ProgramEntryFormConfig,\n ProgramEntryFormMetaData,\n} from './models';\nimport { D2FormModule } from '../form';\nimport { CircularLoader, ButtonStrip, Button } from '@dhis2/ui';\nimport React, { useEffect, useState } from 'react';\nimport { ReactWrapperModule } from '../react-wrapper/react-wrapper.component';\nimport { firstValueFrom, Observable, of } from 'rxjs';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport {\n BaseEventQuery,\n BaseTrackerQuery,\n D2EventResponse,\n D2TrackerResponse,\n D2Window,\n DHIS2Event,\n Program,\n TrackedEntityInstance,\n} from '@iapps/d2-web-sdk';\nimport { CustomOrgUnitConfig } from '../form/components/org-unit-form-field.component';\n\n@Component({\n selector: 'ng-dhis2-ui-program-entry-form',\n templateUrl: './program-entry-form.component.html',\n styleUrls: ['./program-entry-form.component.scss'],\n\n imports: [CommonModule, D2FormModule, ReactWrapperModule],\n})\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport class ProgramEntryFormModule {\n config = input.required<ProgramEntryFormConfig>();\n trackedEntity = input<string>();\n event = input<string>();\n enrollment = input<string>();\n orgUnit = input<string>();\n customOrgUnitRoots = input<CustomOrgUnitConfig[]>();\n\n ngZone = inject(NgZone);\n d2 = (window as unknown as D2Window).d2Web;\n\n loading = signal<boolean>(false);\n metaData = signal<IProgramEntryFormMetaData | null>(null);\n isFormValid = signal<boolean>(true);\n isFormValid$: Observable<boolean> = toObservable(this.isFormValid);\n instance = signal<TrackedEntityInstance | DHIS2Event | null>(null);\n instanceQuery!:\n | BaseTrackerQuery<TrackedEntityInstance>\n | BaseEventQuery<DHIS2Event>;\n\n @Output() instanceSave = new EventEmitter<\n TrackedEntityInstance | DHIS2Event\n >();\n @Output() instanceSaveCompleted = new EventEmitter<\n | D2TrackerResponse<TrackedEntityInstance>\n | D2EventResponse<DHIS2Event>\n | null\n >();\n @Output() instanceUpdate = new EventEmitter<\n TrackedEntityInstance | DHIS2Event\n >();\n @Output() formValidityUpdate = new EventEmitter<boolean>();\n @Output() formCancel = new EventEmitter();\n\n FormLoader = () => {\n return <CircularLoader small />;\n };\n\n dataId = computed(() => {\n return this.instance()?.trackedEntity || this.instance()?.event;\n });\n\n FormActionButtons = computed(() => {\n if (this.config().hideActionButtons) {\n return <></>;\n }\n\n return () => {\n const [isValid, setIsValid] = useState<boolean>();\n const [submitting, setSubmitting] = useState<boolean>(false);\n\n useEffect(() => {\n const isValidSubscription = this.isFormValid$.subscribe((isValid) => {\n setIsValid(isValid);\n });\n\n return () => {\n isValidSubscription.unsubscribe();\n };\n }, []);\n\n const onSave = () => {\n setSubmitting(true);\n this.ngZone.run(async () => {\n const saveResponse = await this.#saveInstance();\n\n this.instanceSaveCompleted.emit(saveResponse);\n\n setSubmitting(false);\n });\n };\n return (\n <ButtonStrip>\n {!this.config().hideSubmitButton && (\n <Button\n primary\n disabled={!isValid}\n loading={submitting}\n onClick={onSave}\n >\n {this.config().submitButtonLabel}\n </Button>\n )}\n {!this.config().hideCancelButton && (\n <Button\n onClick={() => {\n this.ngZone.run(() => {\n this.onCancel();\n });\n }}\n >\n {this.config().cancelButtonLabel}\n </Button>\n )}\n </ButtonStrip>\n );\n };\n });\n\n async ngOnInit() {\n this.loading.set(true);\n try {\n // Loading metadata\n const metaData = await new ProgramEntryFormMetaData()\n .setConfig(this.config())\n .get();\n this.metaData.set(metaData);\n\n // Load initial instance information\n const instance = await this.#getInstance();\n this.instance.set(instance);\n\n if (this.config().autoAssignedValues) {\n this.#updateInstanceWithAutoAssignedValues(\n this.config().autoAssignedValues || []\n );\n }\n\n this.loading.set(false);\n } catch (err) {\n this.loading.set(false);\n }\n }\n\n onFormUpdate(dataValues: Record<string, unknown>) {\n this.#updateInstance(dataValues);\n if (this.instance()) {\n this.instanceUpdate.emit(\n this.instance() as TrackedEntityInstance | DHIS2Event\n );\n }\n }\n\n onValidityUpdate(isFormValid: boolean) {\n this.isFormValid.set(isFormValid);\n this.formValidityUpdate.emit(isFormValid);\n }\n\n onCancel() {\n this.formCancel.emit();\n }\n\n #updateInstanceWithAutoAssignedValues(\n autoAssignedValues: AutoAssignedValues[]\n ) {\n const assignedDataValues = autoAssignedValues.reduce(\n (entities, assignedValue) => {\n return {\n ...entities,\n [assignedValue.field]: assignedValue.value,\n };\n },\n {}\n );\n this.#updateInstance(assignedDataValues);\n }\n #updateInstance(dataValues: Record<string, unknown>) {\n this.instance.update((instance) => {\n instance?.updateDataValues(dataValues, this.config().updateTeiOrgUnit);\n\n return instance;\n });\n }\n\n async #saveInstance(): Promise<\n | D2TrackerResponse<TrackedEntityInstance>\n | D2EventResponse<DHIS2Event>\n | null\n > {\n switch (this.config().formType) {\n case 'TRACKER': {\n if (this.config().autoComplete) {\n this.instance()!.complete();\n }\n return (this.instanceQuery as BaseTrackerQuery<TrackedEntityInstance>)\n .setData(this.instance() as TrackedEntityInstance)\n .save();\n }\n\n case 'EVENT': {\n if (this.config().autoComplete) {\n this.instance()!.complete();\n }\n return (this.instanceQuery as BaseEventQuery<DHIS2Event>)\n .setData(this.instance() as DHIS2Event)\n .save();\n }\n\n default:\n return firstValueFrom(of(null));\n }\n }\n\n async #getTrackerInstance(): Promise<TrackedEntityInstance> {\n this.instanceQuery = this.d2.trackerModule.trackedEntity\n .setProgram(this.config().program)\n .setOrgUnit(this.orgUnit() as string);\n\n if (!this.trackedEntity()) {\n return await this.instanceQuery.create();\n }\n\n const instanceResult = (\n await this.instanceQuery\n .setTrackedEntity(this.trackedEntity() as string)\n .get()\n ).data as TrackedEntityInstance;\n\n if (!instanceResult) {\n return await this.instanceQuery.create();\n }\n\n const instance = await this.instanceQuery\n .setInstanceFields(this.metaData()?.program as Program)\n .setReservedValues();\n\n if (this.orgUnit()) {\n instance.setOrgUnit(this.orgUnit() as string);\n }\n\n return instance;\n }\n\n async #getEventInstance() {\n this.instanceQuery = this.d2.eventModule.event\n .setProgram(this.config().program)\n .setProgramStage(this.config().programStage as string)\n .setEnrollment(this.enrollment() as string)\n .setTrackedEntity(this.trackedEntity() as string)\n .setOrgUnit(this.orgUnit() as string);\n\n if (!this.event()) {\n return await this.instanceQuery.create();\n }\n\n const instance = (\n await this.instanceQuery.setEvent(this.event() as string).get()\n ).data as DHIS2Event;\n\n if (!instance) {\n return await this.instanceQuery.create();\n }\n\n if (this.metaData()?.program) {\n instance.setFields(this.metaData()!.program);\n }\n\n return instance;\n }\n\n #getInstance(): Promise<TrackedEntityInstance | DHIS2Event | null> {\n switch (this.config().formType) {\n case 'TRACKER':\n return this.#getTrackerInstance();\n\n case 'EVENT':\n return this.#getEventInstance();\n\n default:\n return firstValueFrom(of(null));\n }\n }\n}\n","@if (loading()) {\n<div className=\"program-entry__form-loader\">\n <ng-dhis2-ui-wrapper [component]=\"FormLoader\" />\n</div>\n} @else if(metaData()) {\n\n<div>\n <!-- Form content -->\n @switch (config().displayType) {\n\n <!-- Flat display -->\n @case ('FLAT') {\n\n <ng-dhis2-ui-flat-form\n [name]=\"metaData()!.name\"\n [dataValues]=\"instance() || {}\"\n [dataId]=\"dataId()\"\n [rules]=\"metaData()!.rules\"\n [fields]=\"metaData()!.formFields\"\n [customOrgUnitRoots]=\"customOrgUnitRoots()\"\n (formUpdate)=\"onFormUpdate($event)\"\n (formValidityUpdate)=\"onValidityUpdate($event)\"\n />\n }\n\n <!-- SECTION display -->\n @case ('SECTION') { Section form }\n\n <!-- CUSTOM FORM -->\n @case ('CUSTOM') { } }\n\n <!-- Action buttons -->\n\n @if(!config().hideActionButtons) {\n <ng-dhis2-ui-wrapper [component]=\"FormActionButtons()\" />\n }\n</div>\n}\n","// Copyright 2025 UDSM DHIS2 Lab. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nexport * from './models';\nexport * from './program-entry-form.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["React","Button","spacers","colors","theme","generateClassName","convertStylesToCSS","useDynamicStyles","styles","getOptions","InputField","Modal","ModalTitle","ModalContent","ModalActions","ButtonStrip","orgUnitFieldStyles","OrgUnitFormField","CircularLoader","dropdownStyles","useCurrentModal","ContextMenu","Layer","MenuItem","DropdownMenu","DHISTableBody","DHISPagination","map","parse","TableBody","i1","i2.FormFieldItemComponent","i3.FormFieldComponent","i1.FormComponent","i2.FormComponent","i3.RepeatableFormComponent","i1.SectionFormComponent"],"mappings":"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"}