@iapps/ng-dhis2-ui 1.0.8 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/iapps-ng-dhis2-ui.mjs +512 -8
- package/fesm2022/iapps-ng-dhis2-ui.mjs.map +1 -1
- package/index.d.ts +1 -0
- package/lib/modules/line-list/components/dropdown-menu/dropdown-menu.d.ts +19 -0
- package/lib/modules/line-list/components/dropdown-menu/dropdown-menu.styles.d.ts +5 -0
- package/lib/modules/line-list/components/dropdown-menu/index.d.ts +1 -0
- package/lib/modules/line-list/containers/line-list.component.d.ts +31 -0
- package/lib/modules/line-list/hooks/index.d.ts +1 -0
- package/lib/modules/line-list/hooks/use-dynamic-styles.hook.d.ts +1 -0
- package/lib/modules/line-list/index.d.ts +2 -0
- package/lib/modules/line-list/line-list.module.d.ts +9 -0
- package/lib/modules/line-list/models/attribute-filter.model.d.ts +10 -0
- package/lib/modules/line-list/models/filter-config.model.d.ts +6 -0
- package/lib/modules/line-list/models/line-list.models.d.ts +129 -0
- package/lib/modules/line-list/services/line-list.service.d.ts +16 -0
- package/lib/modules/line-list/utils/filter-builder.d.ts +5 -0
- package/lib/modules/line-list/utils/line-list-utils.d.ts +15 -0
- package/lib/modules/react-wrapper/react-wrapper.component.d.ts +2 -3
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iapps-ng-dhis2-ui.mjs","sources":["../../../../packages/ng-dhis2-ui/src/lib/shared/components/TransferOption.tsx","../../../../packages/ng-dhis2-ui/src/lib/shared/components/index.ts","../../../../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/react-wrapper/react-wrapper.module.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/react-wrapper/index.ts","../../../../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/shared/assets/AssignedCategoriesIcon.tsx","../../../../packages/ng-dhis2-ui/src/lib/shared/utils/predefinedDimensions.tsx","../../../../packages/ng-dhis2-ui/src/lib/shared/utils/dimensionSelectorHelper.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/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/iapps-ng-dhis2-ui.ts"],"sourcesContent":["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 const sharedComponents: any[] = [];\n\nexport * from './TransferOption';\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { sharedComponents } from './components';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [...sharedComponents],\n exports: [...sharedComponents],\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 {\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 standalone: false\n})\nexport class ReactWrapperComponent\n implements OnChanges, OnDestroy, AfterViewInit\n{\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 ngOnChanges(): void {\n // if (this.elementRef) 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 { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactWrapperComponent } from './react-wrapper.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [ReactWrapperComponent],\n exports: [ReactWrapperComponent],\n})\nexport class ReactWrapperModule {}\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 './react-wrapper.module';\nexport * from './react-wrapper.component';\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 { ReactWrapperComponent } from '../react-wrapper';\n\n@Component({\n selector: 'ng-dhis2-ui-header-bar',\n template: `<ng-container></ng-container>`,\n standalone: false\n})\nexport class HeaderBarComponent extends ReactWrapperComponent {\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 { ReactWrapperComponent } from '../react-wrapper';\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 ReactWrapperComponent {\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","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","export const TRANSFER_OPTIONS_WIDTH = '420px';\n\nexport const TRANSFER_SELECTED_WIDTH = '298px';\n\nexport const TRANSFER_HEIGHT = '512px';\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","// 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';\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={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={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'; //TODO: Reimplement the icon.js\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 { ReactWrapperComponent } 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 ReactWrapperComponent {\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 { ReactWrapperComponent } 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 ReactWrapperComponent {\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 console.log('WE ARE SELECTING HERE', selectedItem);\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 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 { ReactWrapperComponent } from '../../../react-wrapper';\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 ReactWrapperComponent {\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 { ReactWrapperComponent } from '../../../react-wrapper';\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 ReactWrapperComponent {\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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["React","colors","theme","spacers","Button","getOptions","InputField","styles","Modal","ModalTitle","ModalContent","ModalActions","ButtonStrip"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"iapps-ng-dhis2-ui.mjs","sources":["../../../../packages/ng-dhis2-ui/src/lib/shared/components/TransferOption.tsx","../../../../packages/ng-dhis2-ui/src/lib/shared/components/index.ts","../../../../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/react-wrapper/react-wrapper.module.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/react-wrapper/index.ts","../../../../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/shared/assets/AssignedCategoriesIcon.tsx","../../../../packages/ng-dhis2-ui/src/lib/shared/utils/predefinedDimensions.tsx","../../../../packages/ng-dhis2-ui/src/lib/shared/utils/dimensionSelectorHelper.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/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/utils/filter-builder.ts","../../../../packages/ng-dhis2-ui/src/lib/modules/line-list/services/line-list.service.ts","../../../../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/utils/line-list-utils.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/iapps-ng-dhis2-ui.ts"],"sourcesContent":["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 const sharedComponents: any[] = [];\n\nexport * from './TransferOption';\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { sharedComponents } from './components';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [...sharedComponents],\n exports: [...sharedComponents],\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 {\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 standalone: false,\n})\nexport class ReactWrapperComponent\n implements OnDestroy, AfterViewInit\n{\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 { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactWrapperComponent } from './react-wrapper.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [ReactWrapperComponent],\n exports: [ReactWrapperComponent],\n})\nexport class ReactWrapperModule {}\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 './react-wrapper.module';\nexport * from './react-wrapper.component';\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 { ReactWrapperComponent } from '../react-wrapper';\n\n@Component({\n selector: 'ng-dhis2-ui-header-bar',\n template: `<ng-container></ng-container>`,\n standalone: false\n})\nexport class HeaderBarComponent extends ReactWrapperComponent {\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 { ReactWrapperComponent } from '../react-wrapper';\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 ReactWrapperComponent {\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","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","export const TRANSFER_OPTIONS_WIDTH = '420px';\n\nexport const TRANSFER_SELECTED_WIDTH = '298px';\n\nexport const TRANSFER_HEIGHT = '512px';\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","// 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';\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={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={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'; //TODO: Reimplement the icon.js\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 { ReactWrapperComponent } 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 ReactWrapperComponent {\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 { ReactWrapperComponent } 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 ReactWrapperComponent {\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 console.log('WE ARE SELECTING HERE', selectedItem);\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 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 { ReactWrapperComponent } from '../../../react-wrapper';\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 ReactWrapperComponent {\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 { ReactWrapperComponent } from '../../../react-wrapper';\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 ReactWrapperComponent {\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","import { AttributeFilter } from '../models/attribute-filter.model';\nimport { FilterConfig } from '../models/filter-config.model';\nimport { TrackedEntityInstance } from '../models/line-list.models';\n\n// export function buildFilters(filters: AttributeFilter[]): string {\n// return filters\n// .map(({ attribute, operator, value }) => `filter=${attribute}:${operator}:${value}`)\n// .join('&');\n// }\n\nexport function buildFilters(filters: AttributeFilter[]): string {\n return filters\n .map(({ attribute, dataElement, operator, value }) => {\n // Check if attribute is defined, otherwise use dataElement\n const field = attribute || dataElement;\n return field ? `filter=${field}:${operator}:${value}` : '';\n })\n .filter(Boolean) // Remove any empty strings\n .join('&');\n}\n\nconst matchesCondition = (\n eventValue: string | number,\n operator: string,\n filterValue: string | number\n): boolean => {\n if (typeof eventValue === 'number' && typeof filterValue === 'number') {\n switch (operator) {\n case '=':\n return eventValue === filterValue;\n case '!=':\n return eventValue !== filterValue;\n case '>':\n return eventValue > filterValue;\n case '<':\n return eventValue < filterValue;\n case '>=':\n return eventValue >= filterValue;\n case '<=':\n return eventValue <= filterValue;\n default:\n return false;\n }\n }\n\n const strEventValue = String(eventValue);\n const strFilterValue = String(filterValue);\n\n switch (operator) {\n case '=':\n return strEventValue === strFilterValue;\n case '!=':\n return strEventValue !== strFilterValue;\n case 'contains':\n return strEventValue.includes(strFilterValue);\n case 'startsWith':\n return strEventValue.startsWith(strFilterValue);\n case 'endsWith':\n return strEventValue.endsWith(strFilterValue);\n case 'regex':\n return new RegExp(strFilterValue).test(strEventValue);\n default:\n return false;\n }\n};\n\nexport const getFilteredTrackedEntityInstances = (\n trackedEntityInstance: TrackedEntityInstance[],\n filters: FilterConfig[]\n): TrackedEntityInstance[] => {\n return trackedEntityInstance.filter(\n (trackedEntityInstance: TrackedEntityInstance) =>\n trackedEntityInstance.enrollments.some((enrollment) =>\n enrollment.events.some((event) =>\n filters.every(\n (filter) =>\n event.programStage === filter.programStage &&\n event.dataValues.some(\n (dataValue) =>\n dataValue.dataElement === filter.dataElement &&\n matchesCondition(\n dataValue.value,\n filter.operator,\n filter.value\n )\n )\n )\n )\n )\n );\n};","import { Injectable } from '@angular/core';\nimport { NgxDhis2HttpClientService } from '@iapps/ngx-dhis2-http-client';\nimport { Observable } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\nimport {\n ProgramMetadata,\n EventsResponse,\n TrackedEntityInstancesResponse,\n LineListResponse,\n} from '../models/line-list.models';\nimport { buildFilters } from '../utils/filter-builder';\nimport { AttributeFilter } from '../models/attribute-filter.model';\n\n@Injectable()\nexport class LineListService {\n constructor(private httpClient: NgxDhis2HttpClientService) {}\n\n private getProgramMetadata(programId: string): Observable<ProgramMetadata> {\n return this.httpClient.get(\n `programs/${programId}.json?fields=programType,programStages[id,name,programStageDataElements[dataElement[id,name]]],organisationUnits[id,name]`\n );\n }\n\n private getTrackedEntityInstances(\n programId: string,\n orgUnit: string,\n page: number,\n pageSize: number,\n filters: AttributeFilter[] = [],\n startDate?: string,\n endDate?: string,\n ): Observable<TrackedEntityInstancesResponse> {\n const filterParams = buildFilters(filters);\n const dateFilter = startDate && endDate ? `&programStartDate=${startDate}&programEndDate=${endDate}` : '';\n return this.httpClient.get(\n `trackedEntityInstances.json?program=${programId}&ou=${orgUnit}&page=${page}&pageSize=${pageSize}&fields=trackedEntityInstance,attributes[*],enrollments[*]&totalPages=true&${filterParams}${dateFilter}`\n ).pipe(\n map((response: any) => {\n response.trackedEntityInstances.forEach((tei: any) => {\n // Filter attributes to only include those with displayInList=true\n tei.attributes = tei.attributes.filter((attr: any) => attr.displayInList);\n });\n return response;\n })\n );\n }\n\n private getEvents(\n programId: string,\n orgUnit: string,\n page: number,\n pageSize: number,\n filters: AttributeFilter[] = [],\n startDate?: string,\n endDate?: string,\n ): Observable<EventsResponse> {\n const filterParams = buildFilters(filters);\n const dateFilter = startDate && endDate ? `&startDate=${startDate}&endDate=${endDate}` : '';\n return this.httpClient.get(\n `events.json?program=${programId}&orgUnit=${orgUnit}&page=${page}&pageSize=${pageSize}&fields=*&totalPages=true&${filterParams}${dateFilter}`\n );\n }\n\n private getEventsByProgramStage(\n programStageId: string,\n orgUnit: string,\n page: number,\n pageSize: number,\n filters: AttributeFilter[] = [],\n startDate?: string,\n endDate?: string,\n ): Observable<EventsResponse> {\n const filterParams = buildFilters(filters);\n const dateFilter = startDate && endDate ? `&startDate=${startDate}&endDate=${endDate}` : '';\n return this.httpClient.get(\n `events.json?programStage=${programStageId}&orgUnit=${orgUnit}&page=${page}&pageSize=${pageSize}&fields=*&totalPages=true&${filterParams}${dateFilter}`\n );\n }\n\n getLineListData(\n programId: string,\n orgUnit: string = '',\n programStageId?: string,\n page: number = 1,\n pageSize: number = 10,\n filters: AttributeFilter[] = [],\n startDate?: string,\n endDate?: string\n ): Observable<LineListResponse> {\n return this.getProgramMetadata(programId).pipe(\n switchMap((programMetadata: ProgramMetadata) => {\n if (programStageId) {\n return this.getEventsByProgramStage(programStageId, orgUnit, page, pageSize, filters, startDate, endDate).pipe(\n map((events: EventsResponse) => ({\n metadata: programMetadata,\n data: events,\n }))\n );\n }\n\n if (programMetadata.programType === 'WITH_REGISTRATION') {\n return this.getTrackedEntityInstances(programId, orgUnit, page, pageSize, filters, startDate, endDate).pipe(\n map((teis: TrackedEntityInstancesResponse) => ({\n metadata: programMetadata,\n data: teis,\n }))\n );\n } else {\n return this.getEvents(programId, orgUnit, page, pageSize, filters, startDate, endDate).pipe(\n map((events: EventsResponse) => ({\n metadata: programMetadata,\n data: events,\n }))\n );\n }\n })\n );\n }\n}\n\n\n// import { Injectable } from '@angular/core';\n// import { NgxDhis2HttpClientService } from '@iapps/ngx-dhis2-http-client';\n// import { Observable } from 'rxjs';\n// import { map, switchMap } from 'rxjs/operators';\n// import {\n// ProgramMetadata,\n// EventsResponse,\n// TrackedEntityInstancesResponse,\n// LineListResponse,\n// } from '../models/line-list.models';\n\n// @Injectable()\n// export class LineListService {\n// constructor(private httpClient: NgxDhis2HttpClientService) {}\n\n// private getProgramMetadata(programId: string): Observable<ProgramMetadata> {\n// return this.httpClient.get(\n// `programs/${programId}.json?fields=programType,programStages[id,name,programStageDataElements[dataElement[id,name]]],organisationUnits[id,name]`\n// );\n// }\n\n// private getTrackedEntityInstances(programId: string, orgUnit: string): Observable<TrackedEntityInstancesResponse> {\n// return this.httpClient.get(\n// `trackedEntityInstances.json?program=${programId}&ou=${orgUnit}&fields=trackedEntityInstance,attributes[*],enrollments[*]`\n// );\n// }\n\n// private getEvents(programId: string, orgUnit: string): Observable<EventsResponse> {\n// return this.httpClient.get(\n// `events.json?program=${programId}&orgUnit=${orgUnit}&fields=event,programStage,dataValues[dataElement,value]`\n// );\n// }\n\n// private getEventsByProgramStage(programStageId: string, orgUnit: string): Observable<EventsResponse> {\n// return this.httpClient.get(\n// `events.json?programStage=${programStageId}&orgUnit=${orgUnit}&fields=event,dataValues[dataElement,value]`\n// );\n// }\n\n// getLineListData(programId: string, orgUnit: string, programStageId?: string): Observable<LineListResponse> {\n// return this.getProgramMetadata(programId).pipe(\n// switchMap((programMetadata: ProgramMetadata) => {\n// if (programStageId) {\n// return this.getEventsByProgramStage(programStageId, orgUnit).pipe(\n// map((events: EventsResponse) => ({\n// metadata: programMetadata,\n// data: events,\n// }))\n// );\n// }\n\n// if (programMetadata.programType === 'WITH_REGISTRATION') {\n// return this.getTrackedEntityInstances(programId, orgUnit).pipe(\n// map((teis: TrackedEntityInstancesResponse) => ({\n// metadata: programMetadata,\n// data: teis,\n// }))\n// );\n// } else {\n// // TODO: Make orgUnit optional\n// return this.getEvents(programId, '').pipe(\n// map((events: EventsResponse) => ({\n// metadata: programMetadata,\n// data: events,\n// }))\n// );\n// }\n// })\n// );\n// }\n// }\n\n// import { Injectable } from '@angular/core';\n// import { NgxDhis2HttpClientService } from '@iapps/ngx-dhis2-http-client';\n// import { Observable } from 'rxjs';\n// import { map, switchMap } from 'rxjs/operators';\n\n// @Injectable()\n// export class LineListService {\n// constructor(private httpClient: NgxDhis2HttpClientService) {}\n// /**\n// * Fetches the program metadata\n// */\n// private getProgramMetadata(programId: string): Observable<any> {\n// return this.httpClient.get(\n// `programs/${programId}.json?fields=programType,programStages[id,name,programStageDataElements[dataElement[id,name]]],organisationUnits[id,name]`\n// );\n// }\n\n// /**\n// * Fetches Tracked Entity Instances (TEIs) for Tracker programs\n// */\n// private getTrackedEntityInstances(\n// programId: string,\n// orgUnit: string\n// ): Observable<any> {\n// return this.httpClient.get(\n// `trackedEntityInstances.json?program=${programId}&ou=${orgUnit}&fields=trackedEntityInstance,attributes[*],enrollments[*]`\n// );\n// }\n\n// /**\n// * Fetches Events for Event programs\n// */\n// private getEvents(programId: string, orgUnit: string): Observable<any> {\n// return this.httpClient.get(\n// `events.json?program=${programId}&orgUnit=${orgUnit}&fields=event,programStage,dataValues[dataElement,value]`\n// );\n// }\n\n// /**\n// * Fetches Events for a specific Program Stage\n// */\n// private getEventsByProgramStage(\n// programStageId: string,\n// orgUnit: string\n// ): Observable<any> {\n// return this.httpClient.get(\n// `events.json?programStage=${programStageId}&orgUnit=${orgUnit}&fields=event,dataValues[dataElement,value]`\n// );\n// }\n\n// /**\n// * Main function to fetch line list data based on conditions\n// */\n// // getLineListData(\n// // programId: string,\n// // orgUnit: string,\n// // programStageId?: string\n// // ): Observable<any> {\n// // if (programStageId) {\n// // // If `programStageId` is provided, fetch events for that stage and ignore other rules\n// // return this.getProgramMetadata(programId).pipe(\n// // switchMap(() => {\n// // return this.getEventsByProgramStage(programStageId, orgUnit);\n// // })\n// // );\n// // // return this.getEventsByProgramStage(programStageId, orgUnit);\n// // }\n\n// // // Get program metadata to determine if it's Tracker or Event\n// // return this.getProgramMetadata(programId).pipe(\n// // switchMap((program) => {\n// // if (program.programType === 'WITH_REGISTRATION') {\n// // // Tracker Program → Show Attributes\n// // return this.getTrackedEntityInstances(programId, orgUnit);\n// // } else {\n// // // Event Program → Show Data Elements\n// // return this.getEvents(programId, orgUnit);\n// // }\n// // })\n// // );\n// // }\n// getLineListData(programId: string, orgUnit: string, programStageId?: string): Observable<{ metadata: any; data: any }> {\n// return this.getProgramMetadata(programId).pipe(\n// switchMap((programMetadata) => {\n// if (programStageId) {\n// return this.getEventsByProgramStage(programStageId, orgUnit).pipe(\n// map((events) => ({\n// metadata: programMetadata, // Pass metadata to the component\n// data: events,\n// }))\n// );\n// }\n \n// if (programMetadata.programType === \"WITH_REGISTRATION\") {\n// return this.getTrackedEntityInstances(programId, orgUnit).pipe(\n// map((teis) => ({\n// metadata: programMetadata,\n// data: teis,\n// }))\n// );\n// } else {\n// //TODO:make orgUnit optional\n// return this.getEvents(programId, '').pipe(\n// map((events) => ({\n// metadata: programMetadata,\n// data: events,\n// }))\n// );\n// }\n// })\n// );\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\";\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","// src/utils/line-list-utils.ts\nimport { FilterConfig } from '../models/filter-config.model';\nimport {\n LineListResponse,\n ColumnDefinition,\n TableRow,\n EventsResponse,\n TrackedEntityInstancesResponse,\n} from '../models/line-list.models';\nimport { getFilteredTrackedEntityInstances } from './filter-builder';\n\nexport const getProgramStageData = (\n response: LineListResponse, \n programStageId: string, \n pager: any\n): { columns: ColumnDefinition[], data: TableRow[] } => {\n const events = (response.data as EventsResponse).events;\n const allDataElements = new Set<string>();\n events.forEach((event: any) => {\n event.dataValues.forEach((dv: any) =>\n allDataElements.add(dv.dataElement)\n );\n });\n \n const stageFromMetaData = response.metadata.programStages.find(\n (stage: any) => stage.id === programStageId\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 label:\n stageFromMetaData.programStageDataElements.find(\n (psde: any) => psde.dataElement.id === dataElementId\n )?.dataElement.name || dataElementId,\n key: dataElementId,\n })\n );\n \n const dataElementsData: TableRow[] = events.map((event: any, idx: number) => {\n let row: TableRow = {\n event: event.event,\n index: (pager.page - 1) * pager.pageSize + idx + 1,\n };\n allDataElements.forEach(\n (dataElementId: string) => (row[dataElementId] = '')\n );\n event.dataValues.forEach(\n (dv: any) => (row[dv.dataElement] = dv.value)\n );\n return row;\n });\n\n return { columns: entityColumns, data: dataElementsData };\n};\n\nexport const getTrackedEntityData = (\n response: LineListResponse,\n programId: string,\n pager: any,\n filters?: FilterConfig[]\n): { columns: ColumnDefinition[]; data: TableRow[] } => {\n let teis = (response.data as TrackedEntityInstancesResponse)\n .trackedEntityInstances;\n if (filters) {\n teis = getFilteredTrackedEntityInstances(teis, filters);\n }\n const allAttributes = new Set<string>();\n\n teis.forEach((tei: any) => {\n const matchingEnrollment = tei.enrollments.find(\n (enrollment: any) => enrollment.program === programId\n );\n const attributes = matchingEnrollment\n ? matchingEnrollment.attributes\n : tei.attributes;\n attributes.forEach((attr: any) => allAttributes.add(attr.attribute));\n });\n\n const entityColumns = Array.from(allAttributes).map((attrId: string) => {\n const foundAttribute = teis\n .flatMap((tei: any) => {\n const matchingEnrollment = tei.enrollments.find(\n (enrollment: any) => enrollment.program === programId\n );\n return matchingEnrollment\n ? matchingEnrollment.attributes\n : tei.attributes;\n })\n .find((attr: any) => attr.attribute === attrId);\n\n return {\n label: foundAttribute?.displayName || attrId,\n key: attrId,\n };\n });\n\n const attributesData = teis.map((tei: any, idx: number) => {\n let row: TableRow = {\n trackedEntityInstance: tei.trackedEntityInstance,\n index: (pager.page - 1) * pager.pageSize + idx + 1,\n };\n\n allAttributes.forEach((attrId: string) => (row[attrId] = ''));\n\n const matchingEnrollment = tei.enrollments.find(\n (enrollment: any) => enrollment.program === programId\n );\n const attributesToUse = matchingEnrollment\n ? matchingEnrollment.attributes\n : tei.attributes;\n\n attributesToUse.forEach((attr: any) => (row[attr.attribute] = attr.value));\n\n return row;\n });\n\n return { columns: entityColumns, data: attributesData };\n};\n\nexport const getEventData = (\n response: LineListResponse,\n pager: any\n): { columns: ColumnDefinition[]; data: TableRow[] } => {\n const events = (response.data as EventsResponse).events;\n const uniqueDataElements = new Set<string>();\n events.forEach((event: any) => {\n event.dataValues.forEach((dv: any) =>\n uniqueDataElements.add(dv.dataElement)\n );\n });\n\n const entityColumns = Array.from(uniqueDataElements).map(\n (dataElement: string) => ({\n label:\n response.metadata.programStages[0].programStageDataElements.find(\n (psde: any) => psde.dataElement.id === dataElement\n )?.dataElement.name || dataElement,\n key: dataElement,\n })\n );\n\n const dataElementsData = events.map((event: any, idx: number) => {\n let row: TableRow = {\n event: event.event,\n index: (pager.page - 1) * pager.pageSize + idx + 1,\n };\n uniqueDataElements.forEach(\n (dataElement: string) => (row[dataElement] = '')\n );\n event.dataValues.forEach((dv: any) => (row[dv.dataElement] = dv.value));\n return row;\n });\n\n return { columns: entityColumns, data: dataElementsData };\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","// src/app/line-list-table.component.ts\nimport {\n Component,\n EventEmitter,\n inject,\n Input,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport {\n DataTable,\n TableHead,\n DataTableRow,\n DataTableColumnHeader,\n TableBody,\n DataTableCell,\n Pagination,\n TableFoot,\n CircularLoader\n} from '@dhis2/ui';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { LineListService } from '../services/line-list.service';\nimport { DropdownMenu, DropdownMenuOption } from '../components/dropdown-menu';\nimport {\n LineListResponse,\n ColumnDefinition,\n TableRow,\n EventsResponse,\n TrackedEntityInstancesResponse,\n Pager,\n} from '../models/line-list.models';\nimport {\n getProgramStageData,\n getTrackedEntityData,\n getEventData,\n addActionsColumn,\n} from '../utils/line-list-utils';\nimport { AttributeFilter } from '../models/attribute-filter.model';\nimport { ReactWrapperComponent } from '../../react-wrapper';\nimport * as ReactDOM from 'react-dom/client';\nimport { FilterConfig } from '../models/filter-config.model';\nimport { filter } from 'lodash';\n\n@Component({\n selector: 'app-line-list',\n template: '<ng-content></ng-content>',\n styleUrls: ['./line-list.component.scss'],\n standalone: false,\n})\nexport class LineListTableComponent extends ReactWrapperComponent {\n @Input() programId!: string;\n @Input() orgUnit!: string;\n @Input() programStageId?: string;\n @Input() actionOptions?: DropdownMenuOption[];\n @Input() attributeFilters?: AttributeFilter[];\n @Input() startDate?: string;\n @Input() endDate?: string;\n @Input() filters?: FilterConfig[];\n @Output() actionSelected = new EventEmitter<{\n action: string;\n row: TableRow;\n }>();\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['programId']) {\n this.reactStateUpdaters.setProgramIdState(this.programId);\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 }\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 page: 1,\n pageSize: 10,\n total: 0,\n pageCount: 1,\n });\n const paginationRef = useRef<HTMLDivElement>(null);\n const [programIdState, setProgramIdState] = useState<string>(\n this.programId\n );\n const [orgUnitState, setOrgUnitState] = useState<string>(this.orgUnit);\n const [programStageIdState, setProgramStageIdState] = useState<\n string | undefined\n >(this.programStageId);\n const [attributeFiltersState, setAttributeFiltersState] = useState<\n AttributeFilter[] | undefined\n >(this.attributeFilters);\n const [startDateState, setStartDateState] = useState<string | undefined>(\n this.startDate\n );\n const [endDateState, setEndDateState] = useState<string | undefined>(\n this.endDate\n );\n const [loading, setLoading] = useState<boolean>(false);\n\n // Store updaters in refs for Angular to access\n const updateRefs = useRef({\n setProgramIdState,\n setOrgUnitState,\n setProgramStageIdState,\n setAttributeFiltersState,\n setStartDateState,\n setEndDateState,\n });\n\n useEffect(() => {\n this.setReactStateUpdaters?.(updateRefs.current);\n }, []);\n\n useEffect(() => {\n if (!loading) {\n setTimeout(() => {\n const paginationContainer = document.querySelector(\n '[data-test=\"dhis2-uiwidgets-pagination\"]'\n ) as HTMLElement;\n \n if (paginationContainer) {\n paginationContainer.style.display = 'flex';\n paginationContainer.style.flexDirection = 'row';\n paginationContainer.style.justifyContent = 'space-between';\n paginationContainer.style.alignItems = 'center';\n }\n }, 500); // Short delay to ensure styles apply after data renders\n }\n }, [loading]); \n\n useEffect(() => {\n setLoading(true);\n this.lineListService\n .getLineListData(\n this.programId,\n this.orgUnit,\n this.programStageId,\n pager.page,\n pager.pageSize,\n this.attributeFilters,\n this.startDate,\n this.endDate\n )\n .subscribe((response: LineListResponse) => {\n let entityColumns: ColumnDefinition[] = [];\n let responsePager: Pager;\n let entityData: TableRow[] = [];\n\n if (this.programStageId) {\n responsePager = (response.data as EventsResponse).pager;\n const { columns, data } = getProgramStageData(\n response,\n this.programStageId,\n pager\n );\n entityColumns = columns;\n entityData = data;\n } else if ('trackedEntityInstances' in response.data) {\n responsePager = (response.data as TrackedEntityInstancesResponse)\n .pager;\n const { columns, data } = getTrackedEntityData(\n response,\n this.programId,\n pager,\n this.filters\n );\n entityColumns = columns;\n entityData = data;\n } else {\n responsePager = (response.data as EventsResponse).pager;\n const { columns, data } = getEventData(response, pager);\n entityColumns = columns;\n entityData = data;\n }\n\n const finalColumns: ColumnDefinition[] = addActionsColumn(\n [{ label: '#', key: 'index' }, ...entityColumns],\n this.actionOptions\n );\n setLoading(false);\n console.log('hey');\n setColumns(...[finalColumns]);\n setData(...[entityData]);\n setPager(...[responsePager]);\n console.log('columns', columns);\n console.log('data', data);\n });\n }, [\n programIdState,\n orgUnitState,\n programStageIdState,\n attributeFiltersState,\n startDateState,\n endDateState,\n pager.page,\n pager.pageSize,\n ]);\n\n const getDropdownOptions = (row: TableRow): DropdownMenuOption[] => {\n return (this.actionOptions || []).map((option) => ({\n ...option,\n onClick: () => {\n option.onClick?.(row);\n this.actionSelected.emit({ action: option.label, row });\n },\n }));\n };\n\n return (\n <div>\n {loading? (\n <CircularLoader/>\n ):\n ( <DataTable>\n <TableHead>\n <DataTableRow>\n {columns.map((col) => (\n <DataTableColumnHeader key={col.key}>\n {col.label}\n </DataTableColumnHeader>\n ))}\n </DataTableRow>\n </TableHead>\n <TableBody>\n {data.map((row) => (\n <DataTableRow key={row.index}>\n {columns.map((col) => (\n <DataTableCell key={col.key}>\n {col.key === 'actions' ? (\n <DropdownMenu\n dropdownOptions={getDropdownOptions(row)}\n onClick={(option) => option.onClick?.()}\n />\n ) : (\n row[col.key]\n )}\n </DataTableCell>\n ))}\n </DataTableRow>\n ))}\n </TableBody>\n <TableFoot>\n <DataTableRow>\n {/* <DataTableCell colSpan={columns.length}> */}\n <DataTableCell colSpan={columns.length.toString()}>\n <div>\n <Pagination\n page={pager.page}\n pageCount={pager.pageCount}\n pageSize={pager.pageSize}\n total={pager.total}\n onPageChange={(page: number) =>\n setPager((prev) => ({ ...prev, page }))\n }\n onPageSizeChange={(pageSize: number) => {\n const newPageSize = Number(pageSize);\n setPager((prev) => ({\n ...prev,\n page: 1,\n pageSize: newPageSize,\n }));\n }}\n pageSizes={['5', '10', '20', '50']}\n />\n </div>\n </DataTableCell>\n </DataTableRow>\n </TableFoot>\n </DataTable>)}\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\n// import { Component, Input } from '@angular/core';\n// import {\n// DataTable,\n// TableHead,\n// DataTableRow,\n// DataTableColumnHeader,\n// TableBody,\n// DataTableCell,\n// Pagination,\n// TableFoot,\n// } from '@dhis2/ui';\n// import React, { useEffect, useRef, useState } from 'react';\n// import { LineListService } from '../services/line-list.service';\n// import { DropdownMenu, DropdownMenuOption } from '../components/dropdown-menu';\n// import {\n// LineListResponse,\n// ColumnDefinition,\n// TableRow,\n// EventsResponse,\n// TrackedEntityInstancesResponse,\n// Pager,\n// } from '../models/line-list.models';\n\n// @Component({\n// selector: 'app-line-list-table',\n// templateUrl: './line-list-table.component.html',\n// styleUrls: ['./line-list-table.component.scss'],\n// standalone: false,\n// })\n// export class LineListTableComponent {\n// @Input() programId!: string;\n// @Input() orgUnit!: string;\n// @Input() programStageId?: string;\n// @Input() actionOptions?: DropdownMenuOption[];\n\n// constructor(private lineListService: LineListService) {}\n\n// LineList = () => {\n// const [columns, setColumns] = useState<ColumnDefinition[]>([]);\n// const [data, setData] = useState<TableRow[]>([]);\n// const [pager, setPager] = useState<Pager>({\n// page: 1,\n// pageSize: 10,\n// total: 0,\n// pageCount: 1,\n// });\n// const paginationRef = useRef<HTMLDivElement>(null);\n\n// // TODO: Refactor the following column and data generation logic into a utils file (e.g., src/utils/line-list-utils.ts).\n// // Extract functions like:\n// // - buildDataElementMap: Create a map of data element IDs to names from metadata.\n// // - getProgramStageData: Generate columns and data for programStageId case.\n// // - getTrackedEntityData: Generate columns and data for trackedEntityInstances case.\n// // - getEventData: Generate columns and data for events case (without programStageId).\n// // - addActionsColumn: Conditionally add \"Actions\" column based on actionOptions.\n// // -remove index from data and make index column dynamic\n// // This will improve readability and reusability.\n\n// useEffect(() => {\n// setTimeout(() => {\n// const paginationContainer = document.querySelector(\n// '[data-test=\"dhis2-uiwidgets-pagination\"]'\n// ) as HTMLElement;\n\n// if (paginationContainer) {\n// paginationContainer.style.setProperty('display', 'flex', 'important');\n// paginationContainer.style.setProperty(\n// 'flex-direction',\n// 'row',\n// 'important'\n// );\n// paginationContainer.style.setProperty(\n// 'justify-content',\n// 'space-between',\n// 'important'\n// );\n// paginationContainer.style.setProperty(\n// 'align-items',\n// 'center',\n// 'important'\n// );\n// }\n// }, 1000);\n\n// if (paginationRef.current) {\n// paginationRef.current.style.setProperty('display', 'flex', 'important');\n// paginationRef.current.style.setProperty(\n// 'flex-direction',\n// 'row',\n// 'important'\n// );\n// }\n// this.lineListService\n// .getLineListData(\n// this.programId,\n// this.orgUnit,\n// this.programStageId,\n// pager.page,\n// pager.pageSize\n// )\n// .subscribe((response: LineListResponse) => {\n// let entityColumns: ColumnDefinition[] = [];\n// let responsePager: Pager;\n\n// if (this.programStageId) {\n// const events = (response.data as EventsResponse).events;\n// responsePager = (response.data as EventsResponse).pager;\n// const allDataElements = new Set<string>();\n// events.forEach((event) => {\n// event.dataValues.forEach((dv) =>\n// allDataElements.add(dv.dataElement)\n// );\n// });\n\n// const stageFromMetaData = response.metadata.programStages.find(\n// (stage) => stage.id === this.programStageId\n// );\n\n// if (!stageFromMetaData) {\n// throw new Error(`Program stage with ID ${this.programStageId} not found`);\n// }\n\n// entityColumns = Array.from(allDataElements).map(\n// (dataElementId) => ({\n// label:\n// stageFromMetaData.programStageDataElements.find(\n// (psde) => psde.dataElement.id === dataElementId\n// )?.dataElement.name || dataElementId,\n// key: dataElementId,\n// })\n// );\n// let dataElementsData: TableRow[] = events.map((event, idx) => {\n// let row: TableRow = {\n// event: event.event,\n// index: (pager.page - 1) * pager.pageSize + idx + 1,\n// };\n// allDataElements.forEach(\n// (dataElementId) => (row[dataElementId] = '')\n// );\n// event.dataValues.forEach(\n// (dv) => (row[dv.dataElement] = dv.value)\n// );\n// return row;\n// });\n// setData(dataElementsData);\n// } else if ('trackedEntityInstances' in response.data) {\n// // const teis = (response.data as TrackedEntityInstancesResponse)\n// // .trackedEntityInstances;\n// // responsePager = (response.data as TrackedEntityInstancesResponse)\n// // .pager;\n// // const allAttributes = new Set<string>();\n// // teis.forEach((tei) => {\n// // tei.attributes.forEach((attr) =>\n// // allAttributes.add(attr.attribute)\n// // );\n// // });\n// // entityColumns = Array.from(allAttributes).map((attrId) => {\n// // const foundAttribute = teis\n// // .flatMap((tei) => tei.attributes)\n// // .find((attr) => attr.attribute === attrId);\n// // return {\n// // label: foundAttribute?.displayName || attrId,\n// // key: attrId,\n// // };\n// // });\n// // let attributesData = teis.map((tei, idx) => {\n// // let row: TableRow = {\n// // trackedEntityInstance: tei.trackedEntityInstance,\n// // index: (pager.page - 1) * pager.pageSize + idx + 1,\n// // };\n// // allAttributes.forEach((attrId) => (row[attrId] = ''));\n// // tei.attributes.forEach(\n// // (attr) => (row[attr.attribute] = attr.value)\n// // );\n// // return row;\n// // });\n// // setData(attributesData);\n// const teis = (response.data as TrackedEntityInstancesResponse)\n// .trackedEntityInstances;\n// responsePager = (response.data as TrackedEntityInstancesResponse)\n// .pager;\n\n// const allAttributes = new Set<string>();\n\n// teis.forEach((tei) => {\n// // Find the enrollment for the given programId\n// const matchingEnrollment = tei.enrollments.find(\n// (enrollment) => enrollment.program === this.programId\n// );\n\n// // Get attributes from the enrollment or fallback to TEI-level attributes\n// const attributes = matchingEnrollment\n// ? matchingEnrollment.attributes\n// : tei.attributes;\n\n// // Collect unique attribute IDs\n// attributes.forEach((attr) =>\n// allAttributes.add(attr.attribute)\n// );\n// });\n\n// entityColumns = Array.from(allAttributes).map((attrId) => {\n// const foundAttribute = teis\n// .flatMap((tei) => {\n// const matchingEnrollment = tei.enrollments.find(\n// (enrollment) => enrollment.program === this.programId\n// );\n// return matchingEnrollment\n// ? matchingEnrollment.attributes\n// : tei.attributes;\n// })\n// .find((attr) => attr.attribute === attrId);\n\n// return {\n// label: foundAttribute?.displayName || attrId,\n// key: attrId,\n// };\n// });\n\n// let attributesData = teis.map((tei, idx) => {\n// let row: TableRow = {\n// trackedEntityInstance: tei.trackedEntityInstance,\n// index:\n// (responsePager.page - 1) * responsePager.pageSize + idx + 1,\n// };\n\n// // Initialize all attribute columns with empty strings\n// allAttributes.forEach((attrId) => (row[attrId] = ''));\n\n// // Get attributes from the correct enrollment or fallback to TEI attributes\n// const matchingEnrollment = tei.enrollments.find(\n// (enrollment) => enrollment.program === this.programId\n// );\n// const attributesToUse = matchingEnrollment\n// ? matchingEnrollment.attributes\n// : tei.attributes;\n\n// // Populate row with attribute values\n// attributesToUse.forEach(\n// (attr) => (row[attr.attribute] = attr.value)\n// );\n\n// return row;\n// });\n\n// setData(attributesData);\n// } else {\n// const events = (response.data as EventsResponse).events;\n// responsePager = (response.data as EventsResponse).pager;\n// const uniqueDataElements = new Set<string>();\n// events.forEach((event) => {\n// event.dataValues.forEach((dv) =>\n// uniqueDataElements.add(dv.dataElement)\n// );\n// });\n// entityColumns = Array.from(uniqueDataElements).map(\n// (dataElement) => ({\n// label:\n// response.metadata.programStages[0].programStageDataElements.find(\n// (psde) => psde.dataElement.id === dataElement\n// )?.dataElement.name || dataElement,\n// key: dataElement,\n// })\n// );\n// let dataElementsData = events.map((event, idx) => {\n// let row: TableRow = {\n// event: event.event,\n// index: (pager.page - 1) * pager.pageSize + idx + 1,\n// };\n// uniqueDataElements.forEach(\n// (dataElement) => (row[dataElement] = '')\n// );\n// event.dataValues.forEach(\n// (dv) => (row[dv.dataElement] = dv.value)\n// );\n// return row;\n// });\n// setData(dataElementsData);\n// }\n\n// const finalColumns: ColumnDefinition[] = [\n// { label: '#', key: 'index' },\n// ...entityColumns,\n// ...(this.actionOptions && this.actionOptions.length > 0\n// ? [{ label: 'Actions', key: 'actions' }]\n// : []),\n// ];\n\n// setColumns(finalColumns);\n// setPager(responsePager);\n// });\n// }, [\n// pager.page,\n// pager.pageSize,\n// ]);\n\n// const getDropdownOptions = (row: TableRow): DropdownMenuOption[] => {\n// return (this.actionOptions || []).map((option) => ({\n// ...option,\n// onClick: () => option.onClick?.(row),\n// }));\n// };\n\n// return (\n// <div>\n// <DataTable>\n// <TableHead>\n// <DataTableRow>\n// {columns.map((col) => (\n// <DataTableColumnHeader key={col.key}>\n// {col.label}\n// </DataTableColumnHeader>\n// ))}\n// </DataTableRow>\n// </TableHead>\n// <TableBody>\n// {data.map((row) => (\n// <DataTableRow key={row.index}>\n// {columns.map((col) => (\n// <DataTableCell key={col.key}>\n// {col.key === 'actions' ? (\n// <DropdownMenu\n// dropdownOptions={getDropdownOptions(row)}\n// onClick={(option) => option.onClick?.()}\n// />\n// ) : (\n// row[col.key]\n// )}\n// </DataTableCell>\n// ))}\n// </DataTableRow>\n// ))}\n// </TableBody>\n// <TableFoot>\n// <DataTableRow>\n// <DataTableCell colSpan={columns.length}>\n// <div>\n// <Pagination\n// page={pager.page}\n// pageCount={pager.pageCount}\n// pageSize={pager.pageSize}\n// total={pager.total}\n// onPageChange={(page: number) =>\n// setPager((prev) => ({ ...prev, page }))\n// }\n// onPageSizeChange={(pageSize: string) => {\n// const newPageSize = Number(pageSize);\n// setPager((prev) => ({\n// ...prev,\n// page: 1,\n// pageSize: newPageSize,\n// }));\n// }}\n// pageSizes={['5', '10', '20', '50']}\n// />\n// </div>\n// </DataTableCell>\n// </DataTableRow>\n// </TableFoot>\n// </DataTable>\n// </div>\n// );\n// };\n// }\n\n// import { Component, Input } from '@angular/core';\n// import {\n// DataTable,\n// TableHead,\n// DataTableRow,\n// DataTableColumnHeader,\n// TableBody,\n// DataTableCell,\n// Pagination, // Added for navigation\n// } from '@dhis2/ui';\n// import React, { useEffect, useState } from 'react';\n// import { LineListService } from '../services/line-list.service';\n// import { DropdownMenu, DropdownMenuOption } from '../components/dropdown-menu';\n// import {\n// LineListResponse,\n// ColumnDefinition,\n// TableRow,\n// EventsResponse,\n// TrackedEntityInstancesResponse,\n// } from '../models/line-list.models';\n\n// @Component({\n// selector: 'app-line-list-table',\n// templateUrl: './line-list-table.component.html',\n// styleUrls: ['./line-list-table.component.scss'],\n// standalone: false,\n// })\n// export class LineListTableComponent {\n// @Input() programId!: string;\n// @Input() orgUnit!: string;\n// @Input() programStageId?: string;\n// @Input() actionOptions?: DropdownMenuOption[];\n\n// constructor(private lineListService: LineListService) {}\n\n// LineList = () => {\n// const [columns, setColumns] = useState<ColumnDefinition[]>([]);\n// const [data, setData] = useState<TableRow[]>([]);\n// const [currentPage, setCurrentPage] = useState(1);\n// const [rowsPerPage, setRowsPerPage] = useState(10);\n\n// // TODO: Refactor the following column and data generation logic into a utils file (e.g., src/utils/line-list-utils.ts).\n// // Extract functions like:\n// // - buildDataElementMap: Create a map of data element IDs to names from metadata.\n// // - getProgramStageData: Generate columns and data for programStageId case.\n// // - getTrackedEntityData: Generate columns and data for trackedEntityInstances case.\n// // - getEventData: Generate columns and data for events case (without programStageId).\n// // - addActionsColumn: Conditionally add \"Actions\" column based on actionOptions.\n// // -remove index from data and make index column dynamic\n// // This will improve readability and reusability.\n\n// useEffect(() => {\n// this.lineListService\n// .getLineListData(this.programId, this.orgUnit, this.programStageId)\n// .subscribe((response: LineListResponse) => {\n// console.log('this is the response', response.metadata);\n// let entityColumns: ColumnDefinition[] = [];\n\n// if (this.programStageId) {\n// const dataElementMap: Record<string, string> = {};\n// response.metadata.programStages.forEach((stage) => {\n// stage.programStageDataElements.forEach((psde) => {\n// dataElementMap[psde.dataElement.id] = psde.dataElement.name;\n// });\n// });\n\n// const events = (response.data as EventsResponse).events;\n// const allDataElements = new Set<string>();\n// events.forEach((event) => {\n// event.dataValues.forEach((dv) => {\n// allDataElements.add(dv.dataElement);\n// });\n// });\n\n// entityColumns = Array.from(allDataElements).map((dataElementId) => ({\n// label: dataElementMap[dataElementId] || dataElementId,\n// key: dataElementId,\n// }));\n\n// let indexeDataElementsData: TableRow[] = events.map((event, idx) => {\n// let row: TableRow = { event: event.event, index: idx + 1 };\n// allDataElements.forEach((dataElementId) => {\n// row[dataElementId] = '';\n// });\n// event.dataValues.forEach((dv) => {\n// row[dv.dataElement] = dv.value;\n// });\n// return row;\n// });\n\n// setData(indexeDataElementsData);\n// } else if ('trackedEntityInstances' in response.data) {\n// const teis = (response.data as TrackedEntityInstancesResponse).trackedEntityInstances;\n// const allAttributes = new Set<string>();\n// teis.forEach((tei) => {\n// tei.attributes.forEach((attr) => {\n// allAttributes.add(attr.attribute);\n// });\n// });\n\n// entityColumns = Array.from(allAttributes).map((attrId) => {\n// const foundAttribute = teis\n// .flatMap((tei) => tei.attributes)\n// .find((attr) => attr.attribute === attrId);\n// return {\n// label: foundAttribute?.displayName || attrId,\n// key: attrId,\n// };\n// });\n\n// let indexedAttributesData: TableRow[] = teis.map((tei, idx) => {\n// let row: TableRow = { trackedEntityInstance: tei.trackedEntityInstance, index: idx + 1 };\n// allAttributes.forEach((attrId) => {\n// row[attrId] = '';\n// });\n// tei.attributes.forEach((attr) => {\n// row[attr.attribute] = attr.value;\n// });\n// return row;\n// });\n\n// setData(indexedAttributesData);\n// } else if ('events' in response.data) {\n// const dataElementMap: Record<string, string> = {};\n// response.metadata.programStages.forEach((stage) => {\n// stage.programStageDataElements.forEach((psde) => {\n// dataElementMap[psde.dataElement.id] = psde.dataElement.name;\n// });\n// });\n\n// const events = (response.data as EventsResponse).events;\n// const uniqueDataElements = new Set<string>();\n// events.forEach((event) => {\n// event.dataValues.forEach((dv) => {\n// uniqueDataElements.add(dv.dataElement);\n// });\n// });\n\n// entityColumns = Array.from(uniqueDataElements).map((dataElement) => ({\n// label: dataElementMap[dataElement] || dataElement,\n// key: dataElement,\n// }));\n\n// let indexedDataElementsData: TableRow[] = events.map((event, idx) => {\n// let row: TableRow = { event: event.event, index: idx + 1 };\n// uniqueDataElements.forEach((dataElement) => {\n// row[dataElement] = '';\n// });\n// event.dataValues.forEach((dv) => {\n// row[dv.dataElement] = dv.value;\n// });\n// return row;\n// });\n// setData(indexedDataElementsData);\n// }\n\n// const finalColumns: ColumnDefinition[] = [\n// { label: '#', key: 'index' },\n// ...entityColumns,\n// ...(this.actionOptions && this.actionOptions.length > 0\n// ? [{ label: 'Actions', key: 'actions' }]\n// : []),\n// ];\n// setColumns(finalColumns);\n// });\n// }, [this.programId, this.orgUnit, this.programStageId, this.actionOptions]);\n\n// const getDropdownOptions = (row: TableRow): DropdownMenuOption[] => {\n// return (this.actionOptions || []).map((option) => ({\n// ...option,\n// onClick: () => option.onClick?.(row),\n// }));\n// };\n\n// return (\n// <div>\n// <DataTable>\n// <TableHead>\n// <DataTableRow>\n// {columns.map((col) => (\n// <DataTableColumnHeader key={col.key}>\n// {col.label}\n// </DataTableColumnHeader>\n// ))}\n// </DataTableRow>\n// </TableHead>\n// <tbody>\n// {data.map((row) => (\n// <DataTableRow key={row.index}>\n// {columns.map((col) => (\n// <DataTableCell key={col.key}>\n// {col.key === 'actions' ? (\n// <DropdownMenu\n// dropdownOptions={getDropdownOptions(row)}\n// onClick={(option) => option.onClick?.()}\n// />\n// ) : (\n// row[col.key]\n// )}\n// </DataTableCell>\n// ))}\n// </DataTableRow>\n// ))}\n// </tbody>\n// </DataTable>\n// {/* Pagination controls */}\n// <Pagination\n// page={currentPage}\n// pageCount={Math.ceil(data.length / rowsPerPage)}\n// pageSize={rowsPerPage}\n// total={data.length}\n// onPageChange={(page: number) => setCurrentPage(page)}\n// onPageSizeChange={(event: React.ChangeEvent<HTMLSelectElement>) => {\n// setRowsPerPage(Number(event.target.value));\n// setCurrentPage(1); // Reset to first page\n// }}\n// pageSizes={['5', '10', '20', '50']}\n// />\n// </div>\n// );\n// };\n// }\n\n// import { Component, Input } from '@angular/core';\n// import {\n// Button,\n// DataTable,\n// TableHead,\n// DataTableRow,\n// DataTableColumnHeader,\n// TableBody,\n// DataTableCell,\n// CircularLoader,\n// Menu,\n// MenuItem,\n// Popover,\n// IconMore24,\n// colors,\n// Layer,\n// Popper,\n// FlyoutMenu,\n// } from '@dhis2/ui';\n// import React, { useEffect, useState } from 'react';\n// import { LineListService } from '../services/line-list.service';\n// import { DropdownMenu, DropdownMenuOption } from '../components/dropdown-menu';\n\n// @Component({\n// selector: 'app-line-list-table',\n// templateUrl: './line-list-table.component.html',\n// styleUrls: ['./line-list-table.component.scss'],\n// standalone: false,\n// })\n// export class LineListTableComponent {\n// @Input() programId!: string;\n// @Input() orgUnit!: string;\n// @Input() programStageId?: string;\n// @Input() actionOptions?: DropdownMenuOption[]; // New input for action options\n\n// constructor(private lineListService: LineListService) {}\n\n// LineList = () => {\n// const [columns, setColumns] = useState<{ label: string; key: string }[]>(\n// []\n// );\n// const [data, setData] = useState([]);\n\n// // TODO: Refactor the following column and data generation logic into a utils file (e.g., src/utils/line-list-utils.ts).\n// // Extract functions like:\n// // - buildDataElementMap: Create a map of data element IDs to names from metadata.\n// // - getProgramStageData: Generate columns and data for programStageId case.\n// // - getTrackedEntityData: Generate columns and data for trackedEntityInstances case.\n// // - getEventData: Generate columns and data for events case (without programStageId).\n// // - addActionsColumn: Conditionally add \"Actions\" column based on actionOptions.\n// // This will improve readability and reusability.\n// useEffect(() => {\n// this.lineListService\n// .getLineListData(this.programId, this.orgUnit, this.programStageId)\n// .subscribe((response) => {\n// console.log('this is the response', response.metadata);\n// let entityColumns: { label: string; key: string }[] = [];\n// if (this.programStageId) {\n// const dataElementMap: Record<string, string> = {};\n// response.metadata.programStages.forEach((stage: any) => {\n// stage.programStageDataElements.forEach((psde: any) => {\n// dataElementMap[psde.dataElement.id] = psde.dataElement.name;\n// });\n// });\n\n// const allDataElements = new Set<string>();\n// response.data.events.forEach((event: any) => {\n// event.dataValues.forEach((dv: any) => {\n// allDataElements.add(dv.dataElement);\n// });\n// });\n\n// entityColumns = Array.from(allDataElements).map(\n// (dataElementId: string) => ({\n// label: dataElementMap[dataElementId] || dataElementId,\n// key: dataElementId,\n// })\n// );\n\n// let dataElementData = response.data.events.map((event: any) => {\n// let row: any = { event: event.event };\n\n// // Initialize all possible data elements with empty values\n// allDataElements.forEach((dataElementId) => {\n// row[dataElementId] = '';\n// });\n\n// // Fill in actual values from the event\n// event.dataValues.forEach((dv: any) => {\n// row[dv.dataElement] = dv.value;\n// });\n\n// return row;\n// });\n\n// setData(dataElementData);\n// console.log(\n// 'These are the columns:',\n// entityColumns,\n// dataElementData\n// );\n// } else if (response.data.trackedEntityInstances) {\n// const allAttributes = new Set<string>();\n// response.data.trackedEntityInstances.forEach((tei: any) => {\n// tei.attributes.forEach((attr: any) => {\n// allAttributes.add(attr.attribute);\n// });\n// });\n\n// entityColumns = Array.from(allAttributes).map((attrId: string) => {\n// // Find an attribute with this ID to get its display name\n// const foundAttribute = response.data.trackedEntityInstances\n// .flatMap((tei: any) => tei.attributes)\n// .find((attr: any) => attr.attribute === attrId);\n\n// return {\n// label: foundAttribute?.displayName || attrId,\n// key: attrId,\n// };\n// });\n\n// let attributeData = response.data.trackedEntityInstances.map(\n// (tei: any) => {\n// let row: any = {\n// trackedEntityInstance: tei.trackedEntityInstance,\n// };\n\n// allAttributes.forEach((attrId) => {\n// row[attrId] = ''; // Default empty value\n// });\n\n// tei.attributes.forEach((attr: any) => {\n// row[attr.attribute] = attr.value;\n// });\n\n// return row;\n// }\n// );\n\n// setData(attributeData);\n// } else if (response.data.events) {\n// const dataElementMap: Record<string, string> = {};\n// response.metadata.programStages.forEach((stage: any) => {\n// stage.programStageDataElements.forEach((psde: any) => {\n// dataElementMap[psde.dataElement.id] = psde.dataElement.name;\n// });\n// });\n\n// const uniqueDataElements = new Set<string>();\n\n// response.data.events.forEach((event: any) => {\n// event.dataValues.forEach((dv: any) => {\n// uniqueDataElements.add(dv.dataElement);\n// });\n// });\n\n// entityColumns = Array.from(uniqueDataElements).map(\n// (dataElement) => ({\n// label: dataElementMap[dataElement] || dataElement,\n// key: dataElement,\n// })\n// );\n\n// let dataElementData = response.data.events.map((event: any) => {\n// let row: any = { event: event.event };\n\n// uniqueDataElements.forEach((dataElement) => {\n// row[dataElement] = '';\n// });\n\n// event.dataValues.forEach((dv: any) => {\n// row[dv.dataElement] = dv.value;\n// });\n\n// return row;\n// });\n\n// console.log('these are the data elements', dataElementData);\n// setData(dataElementData);\n// }\n\n// // Conditionally add the \"Actions\" column only if actionOptions are provided\n// if (this.actionOptions && this.actionOptions.length > 0) {\n// setColumns([\n// ...entityColumns,\n// { label: 'Actions', key: 'actions' },\n// ]);\n// } else {\n// setColumns(entityColumns);\n// }\n// });\n// }, []);\n\n// // Use the actionOptions from @Input, or fallback to an empty array\n// const getDropdownOptions = (row: any): DropdownMenuOption[] => {\n// return (this.actionOptions || []).map((option) => ({\n// ...option,\n// onClick: () => option.onClick?.(row), // Pass row data to the original onClick\n// }));\n// };\n\n// return (\n// <DataTable>\n// <TableHead>\n// <DataTableRow>\n// {/* Add Index column as the first column */}\n// <DataTableColumnHeader key=\"index\">#</DataTableColumnHeader>\n// {columns.map((col) => (\n// <DataTableColumnHeader key={col.key}>\n// {col.label}\n// </DataTableColumnHeader>\n// ))}\n// </DataTableRow>\n// </TableHead>\n// <tbody>\n// {data.map((row, index) => (\n// <DataTableRow key={index}>\n// {/* Display index (1-based) */}\n// <DataTableCell key=\"index\">{index + 1}</DataTableCell>\n// {columns.map((col) => (\n// <DataTableCell key={col.key}>\n// {col.key === 'actions' ? (\n// <DropdownMenu\n// dropdownOptions={getDropdownOptions(row)}\n// onClick={(option) => option.onClick?.()}\n// />\n// ) : (\n// row[col.key]\n// )}\n// </DataTableCell>\n// ))}\n// </DataTableRow>\n// ))}\n// </tbody>\n// </DataTable>\n// );\n// };\n// }\n\n// // Table = () => {\n// // const [columns, setColumns] = useState<{ label: string; key: string }[]>([]);\n// // const [data, setData] = useState([]);\n// // useEffect(() => {\n// // this.lineListService\n// // .getLineListData(this.programId, this.orgUnit, this.programStageId)\n// // .subscribe((response) => {\n// // if (this.programStageId) {\n// // // If programStageId is provided, show Data Elements\n// // let columns = response.dataValues.length\n// // ? response.dataValues.map((dv: any) => ({\n// // label: dv.dataElement,\n// // key: dv.dataElement,\n// // }))\n// // : [];\n// // setColumns(columns);\n// // let data = response.map((event: any) => {\n// // let row: any = { event: event.event };\n// // event.dataValues.forEach((dv: any) => {\n// // row[dv.dataElement] = dv.value;\n// // });\n// // return row;\n// // });\n// // setData(data);\n// // } else if (response.trackedEntityInstances) {\n// // // Tracker Program → Show Attributes\n// // let columns = response.trackedEntityInstances[0]?.attributes.map(\n// // (attr: any) => ({\n// // label: attr.displayName,\n// // key: attr.attribute,\n// // })\n// // );\n// // setColumns(columns);\n// // console.log('these are the columns', columns);\n\n// // let data = response.trackedEntityInstances.map((tei: any) => {\n// // let row: any = {\n// // trackedEntityInstance: tei.trackedEntityInstance,\n// // };\n// // tei.attributes.forEach((attr: any) => {\n// // row[attr.attribute] = attr.value;\n// // });\n// // return row;\n// // });\n// // setData(data);\n// // console.log('these are the data', data);\n// // } else if (response.events) {\n// // // Event Program → Show Data Elements\n// // let columns = response.events[0]?.dataValues.map((dv: any) => ({\n// // label: dv.dataElement,\n// // key: dv.dataElement,\n// // }));\n// // setColumns(columns);\n// // let data = response.events.map((event: any) => {\n// // let row: any = { event: event.event };\n// // event.dataValues.forEach((dv: any) => {\n// // row[dv.dataElement] = dv.value;\n// // });\n// // return row;\n// // });\n// // setData(data);\n// // }\n// // });\n// // }, []);\n\n// // return (\n// // <DataTable>\n// // <TableHead>\n// // <DataTableRow>\n// // {columns.map((col) => (\n// // <DataTableColumnHeader key={col.key}>\n// // {col.label}\n// // </DataTableColumnHeader>\n// // ))}\n// // </DataTableRow>\n// // </TableHead>\n// // <tbody>\n// // {data.map((row, index) => (\n// // <DataTableRow key={index}>\n// // {columns.map((col) => (\n// // <DataTableCell key={col.key}>{row[col.key]}</DataTableCell>\n// // ))}\n// // </DataTableRow>\n// // ))}\n// // </tbody>\n// // </DataTable>\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';\n@NgModule({\n declarations: [LineListTableComponent],\n exports: [LineListTableComponent],\n imports: [CommonModule, SharedDhis2UiModule],\n providers: [LineListService],\n})\nexport class LineListModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["React","colors","theme","spacers","Button","getOptions","InputField","styles","Modal","ModalTitle","ModalContent","ModalActions","ButtonStrip","map","Layer","MenuItem","CircularLoader"],"mappings":"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"}
|