>(new Set())
+
+ const handleSelect = (id: string, checked: boolean) => {
+ if (checked) {
+ setSelectedModels(new Set(selectedModels).add(id))
+ } else {
+ selectedModels.delete(id)
+ setSelectedModels(new Set(selectedModels))
+ }
+ }
+
+ const handleSelectAll = (checked: boolean) => {
+ if (checked) {
+ setSelectedModels(
+ new Set(
+ data?.result?.map((model) => {
+ return model.id
+ })
+ )
+ )
+ } else {
+ setSelectedModels(new Set())
+ }
+ }
+
+ const allSelected = useMemo(() => {
+ return (
+ data?.result.length !== 0 &&
+ data?.result.length === selectedModels.size
+ )
+ }, [data?.result, selectedModels.size])
+
+ const SectionListMessage = () => {
+ if (error) {
+ console.log(error.details || error)
+ return
+ }
+ if (!data?.result) {
+ return
+ }
+ if (data?.result?.length < 1) {
+ return
+ }
+ return null
+ }
+
+ return (
+
+ {filterElement}
+
+
+
+ {data?.result &&
+ data?.result.map((model) => (
+
+ ))}
+
+
+
+ )
+}
diff --git a/src/components/sectionList/SelectionListHeaderNormal.tsx b/src/components/sectionList/SelectionListHeaderNormal.tsx
new file mode 100644
index 00000000..4a0c26dc
--- /dev/null
+++ b/src/components/sectionList/SelectionListHeaderNormal.tsx
@@ -0,0 +1,21 @@
+import i18n from '@dhis2/d2-i18n'
+import { Button } from '@dhis2/ui'
+import { IconAdd24 } from '@dhis2/ui-icons'
+import React from 'react'
+import { Link } from 'react-router-dom'
+import { routePaths } from '../../app/routes/routePaths'
+import css from './SectionList.module.css'
+
+export const SelectionListHeader = () => {
+ return (
+
+
+ }>
+ {i18n.t('New')}
+
+
+
+
+
+ )
+}
diff --git a/src/components/sectionList/filters/ConstantFilters.tsx b/src/components/sectionList/filters/ConstantFilters.tsx
new file mode 100644
index 00000000..4dacfef1
--- /dev/null
+++ b/src/components/sectionList/filters/ConstantFilters.tsx
@@ -0,0 +1,27 @@
+import React from 'react'
+import {
+ DOMAIN_TYPE,
+ VALUE_TYPE,
+} from '../../../constants/translatedModelConstants'
+import { ConstantSelectionFilter } from './ConstantSelectionFilter'
+
+export const DomainTypeSelectionFilter = () => {
+ return (
+
+ )
+}
+
+export const ValueTypeSelectionFilter = () => {
+ return (
+
+ )
+}
diff --git a/src/components/sectionList/filters/ConstantSelectionFilter.tsx b/src/components/sectionList/filters/ConstantSelectionFilter.tsx
new file mode 100644
index 00000000..50b3bde1
--- /dev/null
+++ b/src/components/sectionList/filters/ConstantSelectionFilter.tsx
@@ -0,0 +1,41 @@
+import i18n from '@dhis2/d2-i18n'
+import { SingleSelect, SingleSelectOption } from '@dhis2/ui'
+import React from 'react'
+import { SelectOnChangeObject } from '../../../types'
+import css from './Filters.module.css'
+import { useSectionListFilter } from './useSectionListFilter'
+
+type ConstantSelectionFilterProps = {
+ label: string
+ constants: Record
+ filterKey: string
+ filterable?: boolean
+}
+
+export const ConstantSelectionFilter = ({
+ constants,
+ filterKey,
+ label,
+ filterable,
+}: ConstantSelectionFilterProps) => {
+ const [filter, setFilter] = useSectionListFilter(filterKey)
+ return (
+ {
+ setFilter(selected)
+ }}
+ selected={filter}
+ placeholder={label}
+ dense
+ filterable={filterable}
+ filterPlaceholder={i18n.t('Type to filter options')}
+ noMatchText={i18n.t('No matches')}
+ >
+
+ {Object.entries(constants).map(([key, label]) => (
+
+ ))}
+
+ )
+}
diff --git a/src/components/sectionList/filters/FilterWrapper.tsx b/src/components/sectionList/filters/FilterWrapper.tsx
new file mode 100644
index 00000000..662ad197
--- /dev/null
+++ b/src/components/sectionList/filters/FilterWrapper.tsx
@@ -0,0 +1,26 @@
+import i18n from '@dhis2/d2-i18n'
+import { Button } from '@dhis2/ui'
+import React from 'react'
+import css from './Filters.module.css'
+import { IdentifiableFilter } from './IdentifiableFilter'
+import { useSectionListFilters } from './useSectionListFilter'
+
+type FilterWrapperProps = React.PropsWithChildren
+
+export const FilterWrapper = ({ children }: FilterWrapperProps) => {
+ const [, setFilters] = useSectionListFilters()
+
+ const handleClear = () => {
+ setFilters(undefined)
+ }
+
+ return (
+
+
+ {children}
+
+
+ )
+}
diff --git a/src/components/sectionList/filters/Filters.module.css b/src/components/sectionList/filters/Filters.module.css
new file mode 100644
index 00000000..6363b729
--- /dev/null
+++ b/src/components/sectionList/filters/Filters.module.css
@@ -0,0 +1,23 @@
+.selectionFilter {
+ min-width: 190px;
+}
+
+.constantSelectionFilter {
+ composes: selectionFilter;
+}
+
+/* make dense selection fields same height as text field*/
+.constantSelectionFilter [data-test='dhis2-uicore-select-input'] {
+ max-height: 32px;
+}
+
+.identifiableSelectionFilter {
+ width: 320px;
+}
+
+.filterWrapper {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 4px;
+ align-items: center;
+}
diff --git a/src/components/sectionList/filters/IdentifiableFilter.tsx b/src/components/sectionList/filters/IdentifiableFilter.tsx
new file mode 100644
index 00000000..f4aa0aad
--- /dev/null
+++ b/src/components/sectionList/filters/IdentifiableFilter.tsx
@@ -0,0 +1,35 @@
+import i18n from '@dhis2/d2-i18n'
+import { Input } from '@dhis2/ui'
+import React, { useEffect, useState } from 'react'
+import { useDebounce } from '../../../lib'
+import { InputOnChangeObject } from '../../../types'
+import css from './Filters.module.css'
+import { IDENTIFIABLE_KEY, useSectionListFilter } from './useSectionListFilter'
+
+export const IdentifiableFilter = () => {
+ const [filter, setFilter] = useSectionListFilter(IDENTIFIABLE_KEY)
+ const [value, setValue] = useState(filter || '')
+ const debouncedValue = useDebounce(value, 200)
+
+ useEffect(() => {
+ setFilter(debouncedValue || undefined) // convert empty string to undefined
+ }, [debouncedValue, setFilter])
+
+ useEffect(() => {
+ if (!filter) {
+ setValue('')
+ }
+ }, [filter])
+
+ return (
+ <>
+ setValue(value.value)}
+ value={value}
+ dense
+ />
+ >
+ )
+}
diff --git a/src/components/sectionList/filters/index.ts b/src/components/sectionList/filters/index.ts
new file mode 100644
index 00000000..01def766
--- /dev/null
+++ b/src/components/sectionList/filters/index.ts
@@ -0,0 +1,4 @@
+export * from './useSectionListFilter'
+export * from './ConstantSelectionFilter'
+export * from './IdentifiableFilter'
+export * from './ConstantFilters'
diff --git a/src/components/sectionList/filters/useSectionListFilter.ts b/src/components/sectionList/filters/useSectionListFilter.ts
new file mode 100644
index 00000000..535e9e98
--- /dev/null
+++ b/src/components/sectionList/filters/useSectionListFilter.ts
@@ -0,0 +1,153 @@
+import { useCallback, useMemo } from 'react'
+import { useQueryParam, ObjectParam, UrlUpdateType } from 'use-query-params'
+import {
+ Schema,
+ useSchemaFromHandle,
+ CustomObjectParam,
+ GistParams,
+} from '../../../lib'
+import { usePaginationQueryParams } from '../SectionListPagination'
+
+type ObjectParamType = typeof ObjectParam.default
+
+type Filters = Record
+
+// special key for handling search for identifiable objects
+// eg. searches for name, code, id and shortname
+// this would translate to "token" in the old API, but does not exist in GIST-API
+export const IDENTIFIABLE_KEY = 'identifiable'
+
+const IDENTIFIABLE_FIELDS = {
+ name: {
+ operator: 'ilike',
+ },
+ code: {
+ operator: 'ilike',
+ },
+ shortName: {
+ operator: 'ilike',
+ },
+ id: {
+ operator: 'eq',
+ },
+}
+
+const getVerifiedFiltersForSchema = (
+ filters: ObjectParamType,
+ schema: Schema
+): Filters => {
+ if (!filters) {
+ return {}
+ }
+ /* TODO: verify values for filters */
+ const relevantFilters = Object.entries(filters).filter(([key]) => {
+ return key === IDENTIFIABLE_KEY || schema.properties[key]
+ })
+ return Object.fromEntries(relevantFilters)
+}
+
+const useFilterQueryParam = () => {
+ return useQueryParam('filter', CustomObjectParam)
+}
+
+export const useSectionListFilters = () => {
+ const [filter, setFilterParam] = useFilterQueryParam()
+ const [, setPagingParam] = usePaginationQueryParams()
+
+ const schema = useSchemaFromHandle()
+
+ // override setFilter to be able to reset Page when filter changes
+ const setFilter = useCallback(
+ (
+ filter: Parameters[0],
+ updateType?: UrlUpdateType
+ ) => {
+ setFilterParam(filter, updateType)
+ // set page to 1 when filter changes
+ // do this here instead of useEffect to prevent unnecessary refetches
+ setPagingParam((pagingParams) => ({ ...pagingParams, page: 1 }))
+ },
+ [setFilterParam, setPagingParam]
+ )
+
+ return useMemo(
+ () => [getVerifiedFiltersForSchema(filter, schema), setFilter] as const,
+ [filter, schema, setFilter]
+ )
+}
+
+/** Helper-hook to select a single filter.
+ * eg. [domainType, setDomainType] = useSectionListFilter('domainType')
+ */
+export const useSectionListFilter = (
+ filterKey: string
+): [string | undefined, (value: string | undefined) => void] => {
+ const [filters, setFilters] = useSectionListFilters()
+
+ const boundSetFilter = useCallback(
+ (value: string | undefined) => {
+ if (!value) {
+ setFilters((filters) => {
+ if (!filters) {
+ return undefined
+ }
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ const { [filterKey]: _, ...rest } = filters
+ return Object.keys(rest).length === 0 ? undefined : rest
+ })
+ } else {
+ setFilters((filters) => ({ ...filters, [filterKey]: value }))
+ }
+ },
+ [filterKey, setFilters]
+ )
+
+ return [filters?.[filterKey] ?? undefined, boundSetFilter]
+}
+
+const parseToGistQueryFilter = (filters: Filters): string[] => {
+ const { [IDENTIFIABLE_KEY]: identifiableValue, ...restFilters } = filters
+ const queryFilters: string[] = []
+
+ // Groups are a powerful way to combine filters,
+ // here we use them for identifiable filters, to group them with "OR" and
+ // rest of the filters with "AND".
+ // see https://docs.dhis2.org/en/develop/using-the-api/dhis-core-version-239/metadata-gist.html#gist_parameters_filter
+ if (identifiableValue) {
+ const identifiableFilterGroup = `0:`
+ Object.entries(IDENTIFIABLE_FIELDS).forEach(([key, { operator }]) => {
+ queryFilters.push(
+ `${identifiableFilterGroup}${key}:${operator}:${identifiableValue}`
+ )
+ })
+ }
+ let restFilterGroup: number | undefined
+ if (identifiableValue) {
+ restFilterGroup = 1
+ }
+ Object.entries(restFilters).forEach(([key, value]) => {
+ const group = restFilterGroup ? `${restFilterGroup++}:` : ''
+ queryFilters.push(`${group}${key}:eq:${value}`)
+ })
+ return queryFilters
+}
+
+export const useSectionListQueryFilter = () => {
+ const [filters] = useSectionListFilters()
+
+ return useMemo(() => {
+ return parseToGistQueryFilter(filters)
+ }, [filters])
+}
+
+export const useQueryParamsForModelGist = (): GistParams => {
+ const [paginationParams] = usePaginationQueryParams()
+ const filterParams = useSectionListQueryFilter()
+
+ return useMemo(() => {
+ return {
+ ...paginationParams,
+ filter: filterParams,
+ }
+ }, [paginationParams, filterParams])
+}
diff --git a/src/components/sectionList/index.ts b/src/components/sectionList/index.ts
new file mode 100644
index 00000000..74644164
--- /dev/null
+++ b/src/components/sectionList/index.ts
@@ -0,0 +1,7 @@
+export * from './SectionList'
+export * from './SectionListRow'
+export * from './SectionListWrapper'
+export type * from './types'
+export * from './filters'
+export * from './SectionListPagination'
+export * from './useSectionListParamsRefetch'
diff --git a/src/components/sectionList/types.ts b/src/components/sectionList/types.ts
new file mode 100644
index 00000000..d714f9b2
--- /dev/null
+++ b/src/components/sectionList/types.ts
@@ -0,0 +1,16 @@
+import { IdentifiableObject } from '../../types/generated'
+
+export type SelectedColumn = {
+ label: string
+ modelPropertyName: keyof Model
+}
+
+export type SelectedColumns<
+ Model extends IdentifiableObject = IdentifiableObject
+> = SelectedColumn[]
+
+export type CheckBoxOnChangeObject = {
+ checked: boolean
+ name?: string
+ value?: string
+}
diff --git a/src/components/sectionList/useSectionListParamsRefetch.tsx b/src/components/sectionList/useSectionListParamsRefetch.tsx
new file mode 100644
index 00000000..77bd5e00
--- /dev/null
+++ b/src/components/sectionList/useSectionListParamsRefetch.tsx
@@ -0,0 +1,14 @@
+import { useEffect } from 'react'
+import { QueryRefetchFunction } from '../../types'
+import { useQueryParamsForModelGist } from './filters'
+
+/** Refetches when filter and pagination params change */
+export const useSectionListParamsRefetch = (refetch: QueryRefetchFunction) => {
+ const params = useQueryParamsForModelGist()
+
+ useEffect(() => {
+ refetch({
+ ...params,
+ })
+ }, [refetch, params])
+}
diff --git a/src/constants/translatedModelConstants.ts b/src/constants/translatedModelConstants.ts
new file mode 100644
index 00000000..08dd790d
--- /dev/null
+++ b/src/constants/translatedModelConstants.ts
@@ -0,0 +1,71 @@
+import i18n from '@dhis2/d2-i18n'
+
+// because of the way d2-i18n works, we cannot translate dynamic values
+// so we have to list them manually
+export const AGGREGATION_TYPE = {
+ SUM: i18n.t('Sum'),
+ AVERAGE: i18n.t('Average'),
+ AVERAGE_SUM_ORG_UNIT: i18n.t('Average (sum in org unit)'),
+ LAST: i18n.t('Last value (sum in org unit hierarchy)'),
+ LAST_AVERAGE_ORG_UNIT: i18n.t('Last value (average in org unit)'),
+ LAST_LAST_ORG_UNIT: i18n.t('Last value (last in org unit hierarchy)'),
+ LAST_IN_PERIOD: i18n.t('Last value in period (sum in org unit hierarchy)'),
+ LAST_IN_PERIOD_AVERAGE_ORG_UNIT: i18n.t('Lastinperiodaverageorgunit'),
+ FIRST: i18n.t('First value (sum in org unit hierarchy)'),
+ FIRST_AVERAGE_ORG_UNIT: i18n.t(
+ 'First value (average in org unit hierarchy)'
+ ),
+ FIRST_FIRST_ORG_UNIT: i18n.t('First value (first in org unit hierarchy)'),
+ COUNT: i18n.t('Count'),
+ STDDEV: i18n.t('Standard deviation'),
+ VARIANCE: i18n.t('Variance'),
+ MIN: i18n.t('Min'),
+ MAX: i18n.t('Max'),
+ MIN_SUM_ORG_UNIT: i18n.t('Min (sum in org unit)'),
+ MAX_SUM_ORG_UNIT: i18n.t('Max (sum in org unit)'),
+ NONE: i18n.t('None'),
+ CUSTOM: i18n.t('Custom'),
+ DEFAULT: i18n.t('Default'),
+}
+
+export const DOMAIN_TYPE = {
+ AGGREGATE: i18n.t('Aggregate'),
+ TRACKER: i18n.t('Tracker'),
+}
+
+export const VALUE_TYPE = {
+ TEXT: i18n.t('Text'),
+ LONG_TEXT: i18n.t('Long text'),
+ MULTI_TEXT: i18n.t('Text with multiple values'),
+ LETTER: i18n.t('Letter'),
+ PHONE_NUMBER: i18n.t('Phone number'),
+ EMAIL: i18n.t('Email'),
+ BOOLEAN: i18n.t('Yes/No'),
+ TRUE_ONLY: i18n.t('Yes only'),
+ DATE: i18n.t('Date'),
+ DATETIME: i18n.t('Date and time'),
+ TIME: i18n.t('Time'),
+ NUMBER: i18n.t('Number'),
+ UNIT_INTERVAL: i18n.t('Unit interval'),
+ PERCENTAGE: i18n.t('Percentage'),
+ INTEGER: i18n.t('Integer'),
+ INTEGER_POSITIVE: i18n.t('Positive integer'),
+ INTEGER_NEGATIVE: i18n.t('Negative integer'),
+ INTEGER_ZERO_OR_POSITIVE: i18n.t('Positive or Zero integer'),
+ TRACKER_ASSOCIATE: i18n.t('Tracker associate'),
+ USERNAME: i18n.t('Username'),
+ COORDINATE: i18n.t('Coordinate'),
+ ORGANISATION_UNIT: i18n.t('Organisation unit'),
+ REFERENCE: i18n.t('Reference'),
+ AGE: i18n.t('Age'),
+ URL: i18n.t('URL'),
+ FILE_RESOURCE: i18n.t('File'),
+ IMAGE: i18n.t('Image'),
+ GEOJSON: i18n.t('GeoJSON'),
+}
+
+export const constantPropertyTranslations = {
+ aggregationType: AGGREGATION_TYPE,
+ domainType: DOMAIN_TYPE,
+ valueType: VALUE_TYPE,
+}
diff --git a/src/lib/index.ts b/src/lib/index.ts
index ef513787..02caed71 100644
--- a/src/lib/index.ts
+++ b/src/lib/index.ts
@@ -4,5 +4,6 @@ export { useLoadApp } from './useLoadApp'
export type { Schema } from './useLoadApp'
export * from './errors'
export * from './user'
-export * from './useSectionHandle'
export * from './sections'
+export * from './useDebounce'
+export * from './routeUtils'
diff --git a/src/lib/models/index.ts b/src/lib/models/index.ts
index f3c9fbe9..7578ef97 100644
--- a/src/lib/models/index.ts
+++ b/src/lib/models/index.ts
@@ -1 +1,8 @@
+export { useModelGist } from './useModelGist'
+export type {
+ GistPaginator,
+ GistParams,
+ UseModelGistResultPaginated,
+ UseModelGistResult,
+} from './useModelGist'
export { isValidUid } from './uid'
diff --git a/src/lib/models/useModelGist.ts b/src/lib/models/useModelGist.ts
new file mode 100644
index 00000000..3916b264
--- /dev/null
+++ b/src/lib/models/useModelGist.ts
@@ -0,0 +1,186 @@
+import { useDataQuery } from '@dhis2/app-runtime'
+import React, { useState, useCallback } from 'react'
+import {
+ GistParams as BaseGistParams,
+ IdentifiableObject,
+ GistResponse,
+ GistPager,
+ GistCollectionResponse,
+ GistPagedResponse,
+ GistObjectResponse,
+} from '../../types/models'
+import { QueryResponse, Query } from '../../types/query'
+
+// these normally are just strings, but useQuery supports arrays
+export type GistParams = Omit & {
+ fields?: string | string[]
+ filter?: string | string[]
+}
+
+type GistResourceString = `${string}/gist`
+type ResourceQuery = Query[number]
+type GistResourceQuery = Omit & {
+ resource: GistResourceString
+}
+
+// note that we do not support parallel queries
+// this makes it significantly easier to implement
+// and parallel use of gist queries shouldn't be a common use case
+type GistQuery = {
+ result: GistResourceQuery
+}
+
+type GistQueryResult = {
+ result: Response
+}
+
+function createGistQuery(
+ resource: GistResourceString,
+ params?: GistParams
+): GistQuery {
+ return {
+ result: {
+ resource: `${resource}`,
+ params: ({ ...dynamicParams }) => ({
+ pageListName: 'result',
+ total: true,
+ order: 'name:ASC',
+ ...params,
+ ...dynamicParams,
+ }),
+ },
+ }
+}
+
+function usePagination(
+ refetch: QueryResponse['refetch'],
+ data?: unknown
+): GistPaginator | null {
+ let pager: GistPager | undefined
+
+ if (isDataCollection(data)) {
+ pager = data.pager
+ }
+ const getNextPage = useCallback(() => {
+ if (!pager?.nextPage) {
+ return false
+ }
+ refetch({ page: pager.page + 1 })
+ return true
+ }, [refetch, pager])
+
+ const getPrevPage = useCallback(() => {
+ if (!pager?.prevPage) {
+ return false
+ }
+ refetch({ page: pager.page - 1 })
+ return true
+ }, [refetch, pager])
+
+ const goToPage = useCallback(
+ (page: number) => {
+ if (!pager?.pageCount || page > pager.pageCount) {
+ return false
+ }
+ refetch({ page: page })
+ return true
+ },
+ [refetch, pager]
+ )
+
+ const changePageSize = useCallback(
+ (pageSize: number) => {
+ refetch({ pageSize: pageSize })
+ return true
+ },
+ [refetch]
+ )
+
+ return {
+ getNextPage,
+ getPrevPage,
+ goToPage,
+ changePageSize,
+ pager,
+ }
+}
+
+export type GistPaginator = {
+ changePageSize: (pageSize: number) => boolean
+ getNextPage: () => boolean
+ getPrevPage: () => boolean
+ goToPage: (page: number) => boolean
+ pager?: GistPager
+}
+
+type BaseUseModelGistResult = Pick<
+ QueryResponse,
+ 'loading' | 'error' | 'called' | 'refetch'
+> & {
+ data?: Response
+}
+
+export type UseModelGistResultPaginated =
+ BaseUseModelGistResult & {
+ pagination: GistPaginator
+ }
+export type UseModelGistResult =
+ | BaseUseModelGistResult
+ | UseModelGistResultPaginated
+
+export const isDataCollection = (
+ data: unknown
+): data is GistCollectionResponse => {
+ // gist endpoints are always paged if they're collections
+ return (data as GistCollectionResponse)?.pager !== undefined
+}
+
+type UseDataQueryOptions = Parameters[1]
+export function useModelGist(
+ gistResource: GistResourceString,
+ params?: GistParams,
+ dataQueryOptions?: UseDataQueryOptions
+): UseModelGistResultPaginated
+
+export function useModelGist(
+ gistResource: GistResourceString,
+ params?: GistParams,
+ dataQueryOptions?: UseDataQueryOptions
+): UseModelGistResult
+
+export function useModelGist(
+ gistResource: GistResourceString,
+ params?: GistParams,
+ dataQueryOptions?: Parameters[1]
+): UseModelGistResult {
+ const [gistQuery] = useState(
+ createGistQuery(gistResource, params)
+ )
+ const queryResponse = useDataQuery>(
+ gistQuery,
+ dataQueryOptions
+ )
+
+ const pagination = usePagination(
+ queryResponse.refetch,
+ queryResponse.data?.result
+ )
+
+ return React.useMemo(() => {
+ const baseResult: UseModelGistResult = {
+ loading: queryResponse.loading,
+ called: queryResponse.called,
+ error: queryResponse.error,
+ data: queryResponse.data?.result,
+ refetch: queryResponse.refetch,
+ }
+ if (pagination) {
+ const result: UseModelGistResultPaginated = {
+ ...baseResult,
+ pagination,
+ }
+ return result
+ }
+ return baseResult
+ }, [queryResponse, pagination])
+}
diff --git a/src/lib/routeUtils/CustomQueryParam.ts b/src/lib/routeUtils/CustomQueryParam.ts
new file mode 100644
index 00000000..df64773a
--- /dev/null
+++ b/src/lib/routeUtils/CustomQueryParam.ts
@@ -0,0 +1,9 @@
+import { encodeObject, decodeObject, ObjectParam } from 'use-query-params'
+
+const entrySeparator = '~' // default is "_" which breaks constants (delimited by _)
+
+export const CustomObjectParam: typeof ObjectParam = {
+ encode: (obj) => encodeObject(obj, undefined, entrySeparator),
+
+ decode: (str) => decodeObject(str, undefined, entrySeparator),
+}
diff --git a/src/lib/routeUtils/index.ts b/src/lib/routeUtils/index.ts
new file mode 100644
index 00000000..974d45db
--- /dev/null
+++ b/src/lib/routeUtils/index.ts
@@ -0,0 +1,2 @@
+export * from './CustomQueryParam'
+export * from './useSectionHandle'
diff --git a/src/lib/routeUtils/useSectionHandle.ts b/src/lib/routeUtils/useSectionHandle.ts
new file mode 100644
index 00000000..8d0f447b
--- /dev/null
+++ b/src/lib/routeUtils/useSectionHandle.ts
@@ -0,0 +1,21 @@
+import { useMatches } from 'react-router-dom'
+import { MatchRouteHandle } from '../../app/routes/types'
+import { SchemaSection, Section } from '../../types'
+
+export const useSectionHandle = (): Section | undefined => {
+ const matches = useMatches() as MatchRouteHandle[]
+ const match = matches.find((routeMatch) => routeMatch.handle?.section)
+
+ return match?.handle?.section
+}
+
+export const useSchemaSectionHandleOrThrow = (): SchemaSection => {
+ const matches = useMatches() as MatchRouteHandle[]
+ const match = matches.find((routeMatch) => routeMatch.handle?.section)
+
+ const section = match?.handle?.section
+ if (!section) {
+ throw new Error('Could not find schema section handle')
+ }
+ return section
+}
diff --git a/src/lib/schemas/index.tsx b/src/lib/schemas/index.tsx
index f2b0c0cd..adb49860 100644
--- a/src/lib/schemas/index.tsx
+++ b/src/lib/schemas/index.tsx
@@ -1,2 +1,3 @@
export * from '../../types/schemaBase'
export { useSchemas, useSchema, useSetSchemas } from './schemaStore'
+export * from './useSchemaFromHandle'
diff --git a/src/lib/schemas/useSchemaFromHandle.tsx b/src/lib/schemas/useSchemaFromHandle.tsx
new file mode 100644
index 00000000..0010ba1b
--- /dev/null
+++ b/src/lib/schemas/useSchemaFromHandle.tsx
@@ -0,0 +1,8 @@
+import { useSchemaSectionHandleOrThrow } from '../routeUtils'
+import { useSchema } from './schemaStore'
+
+export const useSchemaFromHandle = () => {
+ const section = useSchemaSectionHandleOrThrow()
+ const schema = useSchema(section.name)
+ return schema
+}
diff --git a/src/lib/useDebounce.ts b/src/lib/useDebounce.ts
new file mode 100644
index 00000000..d7fa2567
--- /dev/null
+++ b/src/lib/useDebounce.ts
@@ -0,0 +1,15 @@
+import { useEffect, useState } from 'react'
+
+export function useDebounce(value: T, delay?: number): T {
+ const [debouncedValue, setDebouncedValue] = useState(value)
+
+ useEffect(() => {
+ const timer = setTimeout(() => setDebouncedValue(value), delay || 200)
+
+ return () => {
+ clearTimeout(timer)
+ }
+ }, [value, delay])
+
+ return debouncedValue
+}
diff --git a/src/lib/useSectionHandle.ts b/src/lib/useSectionHandle.ts
deleted file mode 100644
index 9d8d1059..00000000
--- a/src/lib/useSectionHandle.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import { useMatches } from 'react-router-dom'
-import { Section } from '../types'
-import { MatchRouteHandle } from './../app/routes/types'
-
-export const useSectionHandle = (): Section | undefined => {
- const matches = useMatches() as MatchRouteHandle[]
- const match = matches.find((routeMatch) => routeMatch.handle?.section)
-
- return match?.handle?.section
-}
diff --git a/src/pages/dataElements/List.tsx b/src/pages/dataElements/List.tsx
index d58967cd..4a70ac07 100644
--- a/src/pages/dataElements/List.tsx
+++ b/src/pages/dataElements/List.tsx
@@ -1,5 +1,69 @@
+import i18n from '@dhis2/d2-i18n'
import React from 'react'
+import {
+ SectionListWrapper,
+ SelectedColumns,
+ DomainTypeSelectionFilter,
+ ValueTypeSelectionFilter,
+ useQueryParamsForModelGist,
+ useSectionListParamsRefetch,
+} from '../../components'
+import { useModelGist } from '../../lib/'
+import { DataElement, GistCollectionResponse } from '../../types/models'
+
+const filterFields = [
+ 'access',
+ 'id',
+ 'name',
+ 'code',
+ 'domainType',
+ 'valueType',
+ 'lastUpdated',
+ 'sharing',
+] as const
+
+type FilteredDataElement = Pick
+
+type DataElements = GistCollectionResponse
+
+const defaulHeaderColumns: SelectedColumns = [
+ {
+ modelPropertyName: 'name',
+ label: i18n.t('Name'),
+ },
+ { modelPropertyName: 'domainType', label: i18n.t('Domain') },
+ { modelPropertyName: 'valueType', label: i18n.t('Value') },
+ { modelPropertyName: 'lastUpdated', label: i18n.t('Last updated') },
+ { modelPropertyName: 'sharing', label: i18n.t('Public access') },
+]
export const Component = () => {
- return This is a list of Data Elements
+ const initialParams = useQueryParamsForModelGist()
+ const { refetch, error, data } = useModelGist(
+ 'dataElements/gist',
+ {
+ fields: filterFields.concat(),
+ ...initialParams,
+ },
+ // refetched on mount by useSectionListParamsRefetch below
+ { lazy: true }
+ )
+
+ useSectionListParamsRefetch(refetch)
+
+ return (
+
+
+
+
+ >
+ }
+ error={error}
+ data={data}
+ />
+
+ )
}
diff --git a/src/types/generated/utility.ts b/src/types/generated/utility.ts
index 30a9f2c4..76206d0b 100644
--- a/src/types/generated/utility.ts
+++ b/src/types/generated/utility.ts
@@ -5,7 +5,7 @@ import { IdentifiableObject, GistPager } from './'
type ModelReferenceCollection = Array
type ModelReference = IdentifiableObject | ModelReferenceCollection
-type BaseGist = {
+type BaseGist = IdentifiableObject & {
apiEndpoints: GistApiEndpoints
}
export type GistApiEndpoints = {
@@ -27,25 +27,29 @@ export type GistModel = BaseGist & {
export type GistModelCollection = GistModel[]
// a modelcollection with the keyprop
-// need it's own type because the key is based on the resource
+// need it's own type because the name of the list is based on resource or pagedListName query-param
export type GistModelCollectionPart<
T extends IdentifiableObject,
- Resource extends string
+ PagedListName extends string = 'result'
> = {
- [K in Resource]: GistModel[]
+ [K in PagedListName]: GistModel[]
}
-export type GistCollectionResponse<
- T extends IdentifiableObject,
- Resource extends string
-> = {
+export type GistPagedResponse = {
pager: GistPager
-} & GistModelCollectionPart
+}
-export type GistObjectResponse = GistModel
+export type GistCollectionResponse<
+ T extends IdentifiableObject = IdentifiableObject,
+ PagedListName extends string = 'result'
+> = GistPagedResponse & GistModelCollectionPart
+
+export type GistObjectResponse<
+ T extends IdentifiableObject = IdentifiableObject
+> = GistModel
export type GistResponse<
- T extends IdentifiableObject,
+ T extends IdentifiableObject = IdentifiableObject,
R extends string = string
> = GistCollectionResponse | GistObjectResponse
@@ -99,6 +103,7 @@ export type GistParams = {
order?: string
page?: number
pageSize?: number
+ pageListName?: string
references?: boolean
rootJunction?: 'AND' | 'OR'
total?: boolean
diff --git a/src/types/index.ts b/src/types/index.ts
index 37428556..18fa41db 100644
--- a/src/types/index.ts
+++ b/src/types/index.ts
@@ -4,3 +4,4 @@
export * from './schemaBase'
export * from './section'
export type * from './query'
+export * from './ui'
diff --git a/src/types/query.ts b/src/types/query.ts
index d4b9b55d..b4f9415f 100644
--- a/src/types/query.ts
+++ b/src/types/query.ts
@@ -3,3 +3,5 @@ import type { useDataQuery } from '@dhis2/app-runtime'
export type QueryResponse = ReturnType
export type Query = Parameters[0]
+
+export type QueryRefetchFunction = QueryResponse['refetch']
diff --git a/src/types/ui.ts b/src/types/ui.ts
new file mode 100644
index 00000000..0d4c43cf
--- /dev/null
+++ b/src/types/ui.ts
@@ -0,0 +1,22 @@
+// @dhis2/ui is not typed, so we need to create our own types for it.
+
+export type CheckBoxOnChangeObject = {
+ checked: boolean
+ name?: string
+ value?: string
+}
+
+export type InputOnChangeObject = {
+ value: string
+ name: string | undefined
+}
+
+export type InputOnChange = (
+ value: InputOnChangeObject,
+ event: React.ChangeEvent
+) => void
+
+export type SelectOnChangeObject = {
+ selected: string | undefined
+}
+export type SelectOnChange = (value: SelectOnChangeObject) => void
diff --git a/yarn.lock b/yarn.lock
index 758d49ed..4dca13af 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1407,566 +1407,583 @@
debug "^3.1.0"
lodash.once "^4.1.1"
-"@dhis2-ui/alert@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2-ui/alert/-/alert-8.7.7.tgz#a909c6182b3c7f6a421e70d8f356a8053ca67a01"
- integrity sha512-kAqG+/q1E9ZxOs7D8nw58bq8Q0A9Lle/1Y03qIWLWzz+TDZt5m/YkVzWhEwUQv+uFynZXh6QPROIbH5/a9Yg2Q==
+"@dhis2-ui/alert@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2-ui/alert/-/alert-8.13.10.tgz#c298180208f7bc4ecf29940796a43f502f98915b"
+ integrity sha512-3XB0ftudQUvaNPSuIQDyIWdFsxUnhiS7zoQBM5nArLjiW0JTwAuGB2W3UxpAZcaFQbjRZlaN9qEnDdLZ1YF4oQ==
dependencies:
- "@dhis2-ui/portal" "8.7.7"
+ "@dhis2-ui/portal" "8.13.10"
"@dhis2/prop-types" "^3.1.2"
- "@dhis2/ui-constants" "8.7.7"
- "@dhis2/ui-icons" "8.7.7"
+ "@dhis2/ui-constants" "8.13.10"
+ "@dhis2/ui-icons" "8.13.10"
classnames "^2.3.1"
prop-types "^15.7.2"
-"@dhis2-ui/box@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2-ui/box/-/box-8.7.7.tgz#0ba4cb61fa087e80ef67fec8043cf509ef61f3c5"
- integrity sha512-inS/ymN/xQH79rPlUGnFEslLiWmHXXicFy192imQD6TaGTmdvsxOU8kF4jzic9Qbwf8pYC8bwsxmvxBqVupJCg==
+"@dhis2-ui/box@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2-ui/box/-/box-8.13.10.tgz#bde5b658a80170f2cd56e265083ae99a1130e191"
+ integrity sha512-aHzFERPRdG1L2NHRUE0qKNnn7DbRxdCxQ9IWRDSf8BTZDkm3ueiLfkLeGqkBxhjQpW3juGRSiXGZUfoFtqkrlw==
dependencies:
"@dhis2/prop-types" "^3.1.2"
- "@dhis2/ui-constants" "8.7.7"
+ "@dhis2/ui-constants" "8.13.10"
classnames "^2.3.1"
prop-types "^15.7.2"
-"@dhis2-ui/button@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2-ui/button/-/button-8.7.7.tgz#7ddeb2b6e1d38ac5fe49f1cc688ea497e0c726d1"
- integrity sha512-1BB+hFS2mdc0hc1F4FMgbH1Z8cQVT5193ibCNB1oaeT/lCtgGgpfplYAwKG7UriNI/WbDQMAmmW++QHan3+0Rg==
+"@dhis2-ui/button@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2-ui/button/-/button-8.13.10.tgz#e230631bc4ede0afd7fee2696a5f0030710c9f2c"
+ integrity sha512-ZN36pQKc00HCqdCueT+uNf8kZNnm51YzusdiAbahIeX0OJMOK0YyxPfNamX7NoPYQ+6269wln37RmefSNBCVVw==
dependencies:
- "@dhis2-ui/layer" "8.7.7"
- "@dhis2-ui/loader" "8.7.7"
- "@dhis2-ui/popper" "8.7.7"
+ "@dhis2-ui/layer" "8.13.10"
+ "@dhis2-ui/loader" "8.13.10"
+ "@dhis2-ui/popper" "8.13.10"
"@dhis2/prop-types" "^3.1.2"
- "@dhis2/ui-constants" "8.7.7"
- "@dhis2/ui-icons" "8.7.7"
+ "@dhis2/ui-constants" "8.13.10"
+ "@dhis2/ui-icons" "8.13.10"
classnames "^2.3.1"
prop-types "^15.7.2"
-"@dhis2-ui/card@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2-ui/card/-/card-8.7.7.tgz#cc0d953575aae4b0f8a669c2fe73ceaea5e6130e"
- integrity sha512-mDDAhTqOIHy+pVNTp0NOyVR0nk2vE1oFaDWqacVZ+7mJFydjg7CMEQlZ4yZ5XmVl57D997pr8jSh/cnzyAATVQ==
+"@dhis2-ui/calendar@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2-ui/calendar/-/calendar-8.13.10.tgz#aaa84dfa6f703cdd356c93a83588fa20e8a6a398"
+ integrity sha512-8nWYRpMFzrO/bfvNK6N50OgyQe6mrdLcILxhXi/NwGmPB5F+cU1qI/BSCAy5Qp6Jbb6Z/TVbTffWBdqW1HTRrA==
+ dependencies:
+ "@dhis2-ui/button" "8.13.10"
+ "@dhis2-ui/card" "8.13.10"
+ "@dhis2-ui/input" "8.13.10"
+ "@dhis2-ui/layer" "8.13.10"
+ "@dhis2-ui/popper" "8.13.10"
+ "@dhis2/multi-calendar-dates" "1.0.2"
+ "@dhis2/prop-types" "^3.1.2"
+ "@dhis2/ui-constants" "8.13.10"
+ "@dhis2/ui-icons" "8.13.10"
+ classnames "^2.3.1"
+ prop-types "^15.7.2"
+
+"@dhis2-ui/card@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2-ui/card/-/card-8.13.10.tgz#938142f409460c2645cef0729b8290556171ba43"
+ integrity sha512-1LG8iSOGqlTlENP3O2Z8TKZ+TQfJhQZYrDED5z1zUDBbkxLSWLAD3cWbdvYtQTvgwKVhkNg1IVWF0+mB69a6LQ==
dependencies:
"@dhis2/prop-types" "^3.1.2"
- "@dhis2/ui-constants" "8.7.7"
+ "@dhis2/ui-constants" "8.13.10"
classnames "^2.3.1"
prop-types "^15.7.2"
-"@dhis2-ui/center@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2-ui/center/-/center-8.7.7.tgz#f61ae07ef8a296922d91a35c04d39ce5deed0e00"
- integrity sha512-3kPgCpmjO1kdexoooemM2e4jg98QPPFa6aypka+I4q+cQba5D/tYKVwIZAYN+QjzC15hCSbhf0k4yIZ9hs3M4A==
+"@dhis2-ui/center@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2-ui/center/-/center-8.13.10.tgz#83a4f0e69e69185742e0ae960851df9efb199aac"
+ integrity sha512-kXijSnPd3ePZTKfnnPB9ufrdBH9Gxzl3Y4dThd4ZhZkKRlsEKvfgu/sN+cxlyojTnjJD/YiI5xAhyE5WhSvXHg==
dependencies:
"@dhis2/prop-types" "^3.1.2"
- "@dhis2/ui-constants" "8.7.7"
+ "@dhis2/ui-constants" "8.13.10"
classnames "^2.3.1"
prop-types "^15.7.2"
-"@dhis2-ui/checkbox@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2-ui/checkbox/-/checkbox-8.7.7.tgz#ad333b7201c7bbf1ae554d571c6b03e5e3094484"
- integrity sha512-Oc2fFH85Xcc7qqJIlBgUbeA7TTFLKvnSeMv2VcLZpv8ApQG2Onm8MtlVK86T72ZvXj529ejex6XRCjYWdbp+dQ==
+"@dhis2-ui/checkbox@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2-ui/checkbox/-/checkbox-8.13.10.tgz#e994154cab4bb51e142080567c964fcda95bb61e"
+ integrity sha512-srcJ+FzxuAnzOl+mzh846++FcFqNzH7eBzctFwp2s6JhuekoRGAQh30pgdxlTXMO8aEKfPY+5q1vrw3VeR+YjA==
dependencies:
- "@dhis2-ui/field" "8.7.7"
- "@dhis2-ui/required" "8.7.7"
+ "@dhis2-ui/field" "8.13.10"
+ "@dhis2-ui/required" "8.13.10"
"@dhis2/prop-types" "^3.1.2"
- "@dhis2/ui-constants" "8.7.7"
+ "@dhis2/ui-constants" "8.13.10"
classnames "^2.3.1"
prop-types "^15.7.2"
-"@dhis2-ui/chip@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2-ui/chip/-/chip-8.7.7.tgz#76ef229e8c452c2c8812666120be1128710f0614"
- integrity sha512-fhfAg+y4gWKc7rntqGgNVD6Wth70sMybqrB11qykEhKLrZIPzqgYkfOTZmgS/ClV1ultnWXWOL+YZt3ak2FKqg==
+"@dhis2-ui/chip@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2-ui/chip/-/chip-8.13.10.tgz#1a9aa5092950253cdaf2469b6036280b142ea698"
+ integrity sha512-If1odfD8dUHZ+s91H2auDTX6MaDqjW9DYhkczUYybDpZ3TVb7ohm5o5Anhlgv6mkwcgBKP7Xz9DtyjgkAZOwKw==
dependencies:
"@dhis2/prop-types" "^3.1.2"
- "@dhis2/ui-constants" "8.7.7"
+ "@dhis2/ui-constants" "8.13.10"
classnames "^2.3.1"
prop-types "^15.7.2"
-"@dhis2-ui/cover@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2-ui/cover/-/cover-8.7.7.tgz#7d244c3505d98184504d9363add87b4a55d15a84"
- integrity sha512-tibwsokBCVUufKdtpgTzD/+Kaw2o7/dwIQmfeF+gJ+18a7yxaXu3taXIqPegtKNz6xnQYkDixyTu1QJsolidHQ==
+"@dhis2-ui/cover@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2-ui/cover/-/cover-8.13.10.tgz#33360b9b32897bed334d2fd8db4f5e3ddfe14a93"
+ integrity sha512-DNIfBz/RMIa7q4woLG2LtsKGYPjG7OaYsqIuckfNIsYNyLjQp9+WdoXONY+NXXfomoAN0PoOKudLMs177Ejg0Q==
dependencies:
"@dhis2/prop-types" "^3.1.2"
- "@dhis2/ui-constants" "8.7.7"
+ "@dhis2/ui-constants" "8.13.10"
classnames "^2.3.1"
prop-types "^15.7.2"
-"@dhis2-ui/css@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2-ui/css/-/css-8.7.7.tgz#d014d7a5e2380b7d58e10eaf890a8867a8c8ed5e"
- integrity sha512-lRjXrIaxvc6wCRJMcK14ksNR53s1wNej10DBtOZCJRANltXR4Uf2inwEJhNzWtR7m6Wufv4tKYZ67LtN3GMSjw==
+"@dhis2-ui/css@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2-ui/css/-/css-8.13.10.tgz#bc2a2e0603a34557d9fb137abc3fe5d875f6822f"
+ integrity sha512-+SGTmTVR1wrdVhteTl1bPUJJMbcM2tFc040AGHR1yWSsqH8rxWx/GSZ7ezfHu32PCHKW8wXpS8jcV8/bqijF/w==
dependencies:
"@dhis2/prop-types" "^3.1.2"
- "@dhis2/ui-constants" "8.7.7"
+ "@dhis2/ui-constants" "8.13.10"
classnames "^2.3.1"
prop-types "^15.7.2"
-"@dhis2-ui/divider@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2-ui/divider/-/divider-8.7.7.tgz#7f5c3f39fbda5a25d1b764bdb572ae642910a81d"
- integrity sha512-DTAuBpnfsDZbvIIfPAfu/7oURL74ezNQQs+F09ad9EszJECKG24A49daKCXzdYr+ytsM7krl8WF2a0NoG/v8uA==
+"@dhis2-ui/divider@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2-ui/divider/-/divider-8.13.10.tgz#69a20c2157b54439a3b7fac3d0474fbd7a23cf18"
+ integrity sha512-B+1d2uE3S7AwzUqHKr2PdsnTVqllIxxNTSgIdbd0BW7INEqh/Da1fVVXEX7Y5mdhlbPg0MoIDUGQgc0llqVAvQ==
dependencies:
"@dhis2/prop-types" "^3.1.2"
- "@dhis2/ui-constants" "8.7.7"
+ "@dhis2/ui-constants" "8.13.10"
classnames "^2.3.1"
prop-types "^15.7.2"
-"@dhis2-ui/field@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2-ui/field/-/field-8.7.7.tgz#31363edac1715035d6fd1358f1f1c6bc819c0a0e"
- integrity sha512-9TzJGzddbLqWBWTcHBZaXimPMAfSsa9c6kTMBZUJVtgZE3y1E8SsoiVEMY35e+ZAiij2cmJHjg2h0++DTLJvlA==
+"@dhis2-ui/field@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2-ui/field/-/field-8.13.10.tgz#dc7e8148d846ce9d7c9d25e42068d219e0017e90"
+ integrity sha512-nQdyM+4iPNhIiSVbjQ8mVbl9QZa5hJToYBia3CXjuzYpVUzvs5574smpkcJ9HLu7s8I5SyMl0Bjcev7F6KJIhg==
dependencies:
- "@dhis2-ui/box" "8.7.7"
- "@dhis2-ui/help" "8.7.7"
- "@dhis2-ui/label" "8.7.7"
+ "@dhis2-ui/box" "8.13.10"
+ "@dhis2-ui/help" "8.13.10"
+ "@dhis2-ui/label" "8.13.10"
"@dhis2/prop-types" "^3.1.2"
- "@dhis2/ui-constants" "8.7.7"
+ "@dhis2/ui-constants" "8.13.10"
classnames "^2.3.1"
prop-types "^15.7.2"
-"@dhis2-ui/file-input@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2-ui/file-input/-/file-input-8.7.7.tgz#809983cc1b91bfc2488fcf2c287ae3d8ab50cffa"
- integrity sha512-hgFS1UQbTM2EFPca/UluBoYdTqkIP1FNlsdCqDyI2OgiPsT5X0a0wgjfTLDPOy7HPHhalkOCz7xOxgyB9IbWOw==
+"@dhis2-ui/file-input@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2-ui/file-input/-/file-input-8.13.10.tgz#3e052270c9abc932299931770fef49519f93ec18"
+ integrity sha512-pXwMcHxCkUh14Zidso+gRh1k1wJUVC62U43+cAM9B/CNkhDzcp704NgrtlTDvdN6n3WJ9vHTDPzUd+grOuwNag==
dependencies:
- "@dhis2-ui/button" "8.7.7"
- "@dhis2-ui/field" "8.7.7"
- "@dhis2-ui/label" "8.7.7"
- "@dhis2-ui/loader" "8.7.7"
- "@dhis2-ui/status-icon" "8.7.7"
+ "@dhis2-ui/button" "8.13.10"
+ "@dhis2-ui/field" "8.13.10"
+ "@dhis2-ui/label" "8.13.10"
+ "@dhis2-ui/loader" "8.13.10"
+ "@dhis2-ui/status-icon" "8.13.10"
"@dhis2/prop-types" "^3.1.2"
- "@dhis2/ui-constants" "8.7.7"
- "@dhis2/ui-icons" "8.7.7"
+ "@dhis2/ui-constants" "8.13.10"
+ "@dhis2/ui-icons" "8.13.10"
classnames "^2.3.1"
prop-types "^15.7.2"
-"@dhis2-ui/header-bar@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2-ui/header-bar/-/header-bar-8.7.7.tgz#4850f9c1b760762ec9ba06fe165fc996f66de37a"
- integrity sha512-S/Alqi4CCXIG49NorOCF3ItCGjZtHw6qS6J42yV7WNNMicDdz0y4bnQWZEibFrUSneVHbWLI/LE6afKKwZ+WHg==
- dependencies:
- "@dhis2-ui/box" "8.7.7"
- "@dhis2-ui/button" "8.7.7"
- "@dhis2-ui/card" "8.7.7"
- "@dhis2-ui/center" "8.7.7"
- "@dhis2-ui/divider" "8.7.7"
- "@dhis2-ui/input" "8.7.7"
- "@dhis2-ui/layer" "8.7.7"
- "@dhis2-ui/loader" "8.7.7"
- "@dhis2-ui/logo" "8.7.7"
- "@dhis2-ui/menu" "8.7.7"
- "@dhis2-ui/modal" "8.7.7"
- "@dhis2-ui/user-avatar" "8.7.7"
+"@dhis2-ui/header-bar@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2-ui/header-bar/-/header-bar-8.13.10.tgz#87981f1eff64d66b85b6f165e86ac9392134e4a0"
+ integrity sha512-QJ3740rxFd7ajYgphZ3tSnoQscCNtJdrNdpcQeZOQAkWprqA8Zb9smR3qlTRca6p/iLQ1jwWHwgGomD5WNn16Q==
+ dependencies:
+ "@dhis2-ui/box" "8.13.10"
+ "@dhis2-ui/button" "8.13.10"
+ "@dhis2-ui/card" "8.13.10"
+ "@dhis2-ui/center" "8.13.10"
+ "@dhis2-ui/divider" "8.13.10"
+ "@dhis2-ui/input" "8.13.10"
+ "@dhis2-ui/layer" "8.13.10"
+ "@dhis2-ui/loader" "8.13.10"
+ "@dhis2-ui/logo" "8.13.10"
+ "@dhis2-ui/menu" "8.13.10"
+ "@dhis2-ui/modal" "8.13.10"
+ "@dhis2-ui/user-avatar" "8.13.10"
"@dhis2/prop-types" "^3.1.2"
- "@dhis2/ui-constants" "8.7.7"
- "@dhis2/ui-icons" "8.7.7"
+ "@dhis2/ui-constants" "8.13.10"
+ "@dhis2/ui-icons" "8.13.10"
classnames "^2.3.1"
moment "^2.29.1"
prop-types "^15.7.2"
-"@dhis2-ui/help@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2-ui/help/-/help-8.7.7.tgz#344e624c1fd42c2fdedac1271e7e9b1bc65ed465"
- integrity sha512-r74kUbMdJbYviCJTpF56T2c1n+JohXEcd9886ArknSLQ2+zrtyzg2Imr32tHSHHyhjGRJN1oOZSghiWlfXu0Cw==
+"@dhis2-ui/help@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2-ui/help/-/help-8.13.10.tgz#fab3d4980a8c92152755b753cd4a00c1bc10c2dd"
+ integrity sha512-mmZw0ON4krOzdDJKA31cLqWttCJgDn0oAQ1k7B5PqdeX/Gosc0TONjz0Rm/g5sZqkLC5l4IoWXW4Q+4LelbafA==
dependencies:
"@dhis2/prop-types" "^3.1.2"
- "@dhis2/ui-constants" "8.7.7"
+ "@dhis2/ui-constants" "8.13.10"
classnames "^2.3.1"
prop-types "^15.7.2"
-"@dhis2-ui/input@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2-ui/input/-/input-8.7.7.tgz#e01e0407452d31fcb4df48c7ae74ef2e55c54d6f"
- integrity sha512-AohkES9IEimDLKNyt/Ov2V0XUToW8QAmx1uPo0EucsStBeNvYb+4B7H5CKZrmRyKCd+BUh3ot2ZK/oaSnvUmEA==
+"@dhis2-ui/input@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2-ui/input/-/input-8.13.10.tgz#2ad8f0d06d1d5f9e722bd9c308db18d2fa55b64e"
+ integrity sha512-PLBYdb/MislatP7gOjOjJc+YprzgnKW4mipMPJlQfIqk9qN9dd14yXl5wuSV60jdxe1Zra3HBw5NQtceN6v3gQ==
dependencies:
- "@dhis2-ui/box" "8.7.7"
- "@dhis2-ui/field" "8.7.7"
- "@dhis2-ui/input" "8.7.7"
- "@dhis2-ui/loader" "8.7.7"
- "@dhis2-ui/status-icon" "8.7.7"
+ "@dhis2-ui/box" "8.13.10"
+ "@dhis2-ui/field" "8.13.10"
+ "@dhis2-ui/input" "8.13.10"
+ "@dhis2-ui/loader" "8.13.10"
+ "@dhis2-ui/status-icon" "8.13.10"
"@dhis2/prop-types" "^3.1.2"
- "@dhis2/ui-constants" "8.7.7"
- "@dhis2/ui-icons" "8.7.7"
+ "@dhis2/ui-constants" "8.13.10"
+ "@dhis2/ui-icons" "8.13.10"
classnames "^2.3.1"
prop-types "^15.7.2"
-"@dhis2-ui/intersection-detector@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2-ui/intersection-detector/-/intersection-detector-8.7.7.tgz#58f0a864c02e9abd0f6e8f0592c53e5b47f0ad0f"
- integrity sha512-GvoGxVvmb/fsh4G+e42w4LZQ6qyMayRljDTwWfRUbgadwcK+3pTc4o2P3Oi39+fH9g5CDg44gjUEvb0d9wRj8g==
+"@dhis2-ui/intersection-detector@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2-ui/intersection-detector/-/intersection-detector-8.13.10.tgz#e6dc60a9d305c772a53248decd23c296176be965"
+ integrity sha512-FcsZ8tNV4ufeVkLHzdH91dDPvAwK7VLcOwZRpnWkUNtboAox2wshAClPDfo6M+4u9P0ubWJRPnmvQu0WUrKV1w==
dependencies:
"@dhis2/prop-types" "^3.1.2"
- "@dhis2/ui-constants" "8.7.7"
+ "@dhis2/ui-constants" "8.13.10"
classnames "^2.3.1"
prop-types "^15.7.2"
-"@dhis2-ui/label@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2-ui/label/-/label-8.7.7.tgz#d64ece6409e5091c0435b680fad360946a3b966b"
- integrity sha512-H0UoiPeLy2eku74NQbbBQVc6ly1eXHUmP3JSPOb/utfPag4E2sVm4f8mMjbCvRJP37lOmVvoZP3nrkDJevWllw==
+"@dhis2-ui/label@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2-ui/label/-/label-8.13.10.tgz#7d556513f6053e8d20ee5a3ca1a0174251b3c980"
+ integrity sha512-yQaK+53TZ12KJpztVTh7noLMwVgx4fWNfxGr5RwR1a2yfB7IfsaYdt+o9FElAK6Nbj6Yhzx3Fwj1uAfyQ7zCiA==
dependencies:
- "@dhis2-ui/required" "8.7.7"
+ "@dhis2-ui/required" "8.13.10"
"@dhis2/prop-types" "^3.1.2"
- "@dhis2/ui-constants" "8.7.7"
+ "@dhis2/ui-constants" "8.13.10"
classnames "^2.3.1"
prop-types "^15.7.2"
-"@dhis2-ui/layer@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2-ui/layer/-/layer-8.7.7.tgz#dd2c538885db52486a2da9c5cb1a35f4f91f1b04"
- integrity sha512-hhZEL+iO1Tm6sdVuOUyjgXs20Bi8idpv4Grw8lMGUHVCTIAOzD0FoHReV7lmUYFK/aKWQHhr6s7wKOugv4wBng==
+"@dhis2-ui/layer@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2-ui/layer/-/layer-8.13.10.tgz#ff1a462fb5b09f102b5999dbb96855b7efcefcf4"
+ integrity sha512-x6/HqcCJtBBSGdjkosIkC2mDxAlUq1/WxO7ze6jtL2Hxtuw3E1IKXf/+g+VxH8j/l9CJ6tVkZHhiunZ3AbpDoQ==
dependencies:
- "@dhis2-ui/portal" "8.7.7"
+ "@dhis2-ui/portal" "8.13.10"
"@dhis2/prop-types" "^3.1.2"
- "@dhis2/ui-constants" "8.7.7"
+ "@dhis2/ui-constants" "8.13.10"
classnames "^2.3.1"
prop-types "^15.7.2"
-"@dhis2-ui/legend@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2-ui/legend/-/legend-8.7.7.tgz#e66afa0d973e68c0d0166cc089e5258a333faf01"
- integrity sha512-a2E+rdgGn6VNHXS0+OVu8V26kWaZ8HNnK7eo/o1swaKaEVQHC4jzQLPwWWBiZTDHxj6A5tevoMV1FduG1M2a6g==
+"@dhis2-ui/legend@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2-ui/legend/-/legend-8.13.10.tgz#b8b0865f6485a26e6731cc9fa78d101e8b0fc834"
+ integrity sha512-FDQI4EwGe5nu8UXsgv/FEP7MqBPyn+iDXyHV8p5cWlg82vwg7VwivlmoavuhC+Xx7vp2Zb07Ipl6hZFhdRsmLA==
dependencies:
- "@dhis2-ui/required" "8.7.7"
+ "@dhis2-ui/required" "8.13.10"
"@dhis2/prop-types" "^3.1.2"
- "@dhis2/ui-constants" "8.7.7"
+ "@dhis2/ui-constants" "8.13.10"
classnames "^2.3.1"
prop-types "^15.7.2"
-"@dhis2-ui/loader@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2-ui/loader/-/loader-8.7.7.tgz#478b5290223e5b02669820ebb48301163313b45d"
- integrity sha512-IA3AJMCkVj4G3mBIYvdzij1AsPYATI4ToMGhvOdwwTc0uGMbXU6yFs9GRXRB9DaR2qrSgsCO94f7cfRe31HR6g==
+"@dhis2-ui/loader@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2-ui/loader/-/loader-8.13.10.tgz#4f0b29dc16bd417750ea78c3fd95544aa653f6d9"
+ integrity sha512-XUnwubWctfS/dym2bL5TgMLs/ReznSDfIyD1KRWTASU7bxToZeolkKOCDtpSsMBVCJwbpfpIRmN2b2xopj3+7A==
dependencies:
"@dhis2/prop-types" "^3.1.2"
- "@dhis2/ui-constants" "8.7.7"
+ "@dhis2/ui-constants" "8.13.10"
classnames "^2.3.1"
prop-types "^15.7.2"
-"@dhis2-ui/logo@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2-ui/logo/-/logo-8.7.7.tgz#775850958b967111b7b9f6a2ac676fea7babe238"
- integrity sha512-Dv3ui2Pcf2L9F42AyodgcFqEM/0P95WNEtJ3vnKSK1vaiNRIDyxPPLJQmmOMSS+fUx0WKoW+SzB5e4MYdK7k4g==
+"@dhis2-ui/logo@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2-ui/logo/-/logo-8.13.10.tgz#f997fd5d695daf180f56f8389aa41366e739b38e"
+ integrity sha512-9JP9T5yaLTvnH8XblNPNVKnvVbDbomD3ah4jsKhk0Tok1KA/roMo5QTw7jcihucbPz6QTscjQbxxnWlTMDiCPg==
dependencies:
"@dhis2/prop-types" "^3.1.2"
- "@dhis2/ui-constants" "8.7.7"
+ "@dhis2/ui-constants" "8.13.10"
classnames "^2.3.1"
prop-types "^15.7.2"
-"@dhis2-ui/menu@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2-ui/menu/-/menu-8.7.7.tgz#8d35e0d55e111842b3aec64d80043ce2841927f5"
- integrity sha512-wQo4LfMpIs6c87O20ix2PVeCfHBexSGFq5KMcNNlG9IFMuOgkfinCA3+Irw6AZ4a3iBGmABdqdszuFWo622Rvw==
+"@dhis2-ui/menu@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2-ui/menu/-/menu-8.13.10.tgz#ecbaec3267f6451297dd7e1779f8b0ed4d26aee3"
+ integrity sha512-67f7x1ibxSXLhSqsdEBFi8DIaMwLzIs7BtrIT83i6Tb7+PI2okXdH8ItWAwKYgdQGWuWF5MDJ6V1PyJiNIfnpQ==
dependencies:
- "@dhis2-ui/card" "8.7.7"
- "@dhis2-ui/divider" "8.7.7"
- "@dhis2-ui/layer" "8.7.7"
- "@dhis2-ui/popper" "8.7.7"
- "@dhis2-ui/portal" "8.7.7"
+ "@dhis2-ui/card" "8.13.10"
+ "@dhis2-ui/divider" "8.13.10"
+ "@dhis2-ui/layer" "8.13.10"
+ "@dhis2-ui/popper" "8.13.10"
+ "@dhis2-ui/portal" "8.13.10"
"@dhis2/prop-types" "^3.1.2"
- "@dhis2/ui-constants" "8.7.7"
- "@dhis2/ui-icons" "8.7.7"
+ "@dhis2/ui-constants" "8.13.10"
+ "@dhis2/ui-icons" "8.13.10"
classnames "^2.3.1"
prop-types "^15.7.2"
-"@dhis2-ui/modal@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2-ui/modal/-/modal-8.7.7.tgz#06de96053d46d29417cf091dac7a6daf6fb9e4a0"
- integrity sha512-yCVHLzNixz/o65BAs9hjEddk7WQUEFVhEj1FswY0x7P0Jfnmkxf4jFAZ09GS18h4l3Df60x03s/vu558f7gW2w==
+"@dhis2-ui/modal@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2-ui/modal/-/modal-8.13.10.tgz#a581a0036a4a7c1f6ed9ffd3a77b357bb2cf7ecb"
+ integrity sha512-uPjLJc4nRDrjyJFcwLhqrW94SgypX2FbHID98H2OFdFHVjR38PWkf87w08pnjEsFLf4M288wEq6rv75m6vsfSg==
dependencies:
- "@dhis2-ui/card" "8.7.7"
- "@dhis2-ui/center" "8.7.7"
- "@dhis2-ui/layer" "8.7.7"
- "@dhis2-ui/portal" "8.7.7"
+ "@dhis2-ui/card" "8.13.10"
+ "@dhis2-ui/center" "8.13.10"
+ "@dhis2-ui/layer" "8.13.10"
+ "@dhis2-ui/portal" "8.13.10"
"@dhis2/prop-types" "^3.1.2"
- "@dhis2/ui-constants" "8.7.7"
- "@dhis2/ui-icons" "8.7.7"
+ "@dhis2/ui-constants" "8.13.10"
+ "@dhis2/ui-icons" "8.13.10"
classnames "^2.3.1"
prop-types "^15.7.2"
-"@dhis2-ui/node@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2-ui/node/-/node-8.7.7.tgz#398aa8d512310daa15b36ad1335e10121dd22bb4"
- integrity sha512-RMidPD3ZqQ0e7Tm59Yhq7brylh9VdsqYZ7iv+NR+B+nCPJ6gylDb1HoiSekpCZjLlXFBHvS65l4HNAGsgmiNqA==
+"@dhis2-ui/node@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2-ui/node/-/node-8.13.10.tgz#3f7e75c483eb63137b64c22d0fa2c23a51b741f7"
+ integrity sha512-63VdT8eQTuVJXI2ECVLayJcFH3qE1kD3EfrGdRI3+iSMJ6tJjtGm6ZpD1IeYm48FxrPkEJKoI1SYQpNLiYpR0Q==
dependencies:
- "@dhis2-ui/loader" "8.7.7"
+ "@dhis2-ui/loader" "8.13.10"
"@dhis2/prop-types" "^3.1.2"
- "@dhis2/ui-constants" "8.7.7"
+ "@dhis2/ui-constants" "8.13.10"
classnames "^2.3.1"
prop-types "^15.7.2"
-"@dhis2-ui/notice-box@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2-ui/notice-box/-/notice-box-8.7.7.tgz#86fc47914c068dfc53c28db0857b81a961d1e10f"
- integrity sha512-H3X54BP7HzBXk/2DJvQMd3Sv4hG367WtGq6KTbx38puviYSWxcU8L3sbeaeGR1w6tQ5TK4szzehN7rsWKQB+Nw==
+"@dhis2-ui/notice-box@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2-ui/notice-box/-/notice-box-8.13.10.tgz#1bf76c0da6c4bb70d1efbba56c65df3cd340da37"
+ integrity sha512-6h+oC5JA8vZuJNb7UB3vj6pL6UTAhC815AIjRyK0IvwYKb6Vke1p2fRk/reK3NJ7nz+3H1wkAPNAm8qf09oiEA==
dependencies:
"@dhis2/prop-types" "^3.1.2"
- "@dhis2/ui-constants" "8.7.7"
- "@dhis2/ui-icons" "8.7.7"
+ "@dhis2/ui-constants" "8.13.10"
+ "@dhis2/ui-icons" "8.13.10"
classnames "^2.3.1"
prop-types "^15.7.2"
-"@dhis2-ui/organisation-unit-tree@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2-ui/organisation-unit-tree/-/organisation-unit-tree-8.7.7.tgz#ad9cab66f7833bcc7c65e883539713c791d4a440"
- integrity sha512-g84/VWnxaMMHNfrq80xBDp6/NVJqb/7MCtp+vfP3/cRzj6BW3/P6Ts0fM1gzr2Hvo4D8rGv9JPtECKa7Z0d5ow==
+"@dhis2-ui/organisation-unit-tree@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2-ui/organisation-unit-tree/-/organisation-unit-tree-8.13.10.tgz#bd9e085641634e069b528633f37f12b5edbff385"
+ integrity sha512-tWfE3T+/ufDhsbQl2QnSmNq3aAn5a8OyWaYyQJRRjQ1kIhCgfeu2aNU8Lo/8o2u7iCiXzXoHXU1pNQSGMckLsQ==
dependencies:
- "@dhis2-ui/checkbox" "8.7.7"
- "@dhis2-ui/loader" "8.7.7"
- "@dhis2-ui/node" "8.7.7"
+ "@dhis2-ui/checkbox" "8.13.10"
+ "@dhis2-ui/loader" "8.13.10"
+ "@dhis2-ui/node" "8.13.10"
"@dhis2/prop-types" "^3.1.2"
- "@dhis2/ui-constants" "8.7.7"
+ "@dhis2/ui-constants" "8.13.10"
classnames "^2.3.1"
prop-types "^15.7.2"
-"@dhis2-ui/pagination@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2-ui/pagination/-/pagination-8.7.7.tgz#efa73285abfee67f21768be9175ffc4c44f88dd3"
- integrity sha512-2jXs6XaatGR+Q77dNJWduguLytayYi2vmNdBkovTcfXMznuTQdIOY5uS5FIUWo2vb1nsr7LPcErNzo8r2Nf8Hw==
+"@dhis2-ui/pagination@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2-ui/pagination/-/pagination-8.13.10.tgz#36e80072d96f0f9d528b738ad28aec598dfe2fb6"
+ integrity sha512-/EIbRjnWB8AwB/MpX93fV2zdF4YRSh0s8Mqr3CPDAh1A3iN7YXwbXvtMVXY6ll2snE1Iu4mTwrlDsuLxLncLog==
dependencies:
- "@dhis2-ui/button" "8.7.7"
- "@dhis2-ui/select" "8.7.7"
+ "@dhis2-ui/button" "8.13.10"
+ "@dhis2-ui/select" "8.13.10"
"@dhis2/prop-types" "^3.1.2"
- "@dhis2/ui-constants" "8.7.7"
- "@dhis2/ui-icons" "8.7.7"
+ "@dhis2/ui-constants" "8.13.10"
+ "@dhis2/ui-icons" "8.13.10"
classnames "^2.3.1"
prop-types "^15.7.2"
-"@dhis2-ui/popover@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2-ui/popover/-/popover-8.7.7.tgz#e31d24bd9b7ac68ed1ee51d4781e0a8142551224"
- integrity sha512-aeLAQx9Jy7PxJzC98fQo4s0MPKYqqLnFInLDgy5gDT6hI6IxkA3K1LRYS/2fVD/Hy1NB+UYIbyVr+8hFZz1UtA==
+"@dhis2-ui/popover@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2-ui/popover/-/popover-8.13.10.tgz#b87f69197a70aa8d3838e0044e9a9ba7c58256a8"
+ integrity sha512-nF0pBUKvOxbCX24vChuiqX+jG3pyPdGoTNGgHixud+mShG7WIIeav8v/jj/KkRjfBdlay3UKNYbI+wIhy6zDww==
dependencies:
- "@dhis2-ui/layer" "8.7.7"
- "@dhis2-ui/popper" "8.7.7"
+ "@dhis2-ui/layer" "8.13.10"
+ "@dhis2-ui/popper" "8.13.10"
"@dhis2/prop-types" "^3.1.2"
- "@dhis2/ui-constants" "8.7.7"
+ "@dhis2/ui-constants" "8.13.10"
classnames "^2.3.1"
prop-types "^15.7.2"
-"@dhis2-ui/popper@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2-ui/popper/-/popper-8.7.7.tgz#9a31ab9509aee31988b568333c8c3c5ec0c5edde"
- integrity sha512-FOJR7+SB6iOr28O/KDrm4cczv1IeQs7aX0NrbSH28vNzbjLMfT4YkkSSWV/dQbbu9FtMKaSLktOHfFTmB89ilw==
+"@dhis2-ui/popper@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2-ui/popper/-/popper-8.13.10.tgz#b732808cc6dfa7e4874d5b36320a41e72a77c092"
+ integrity sha512-UsK9cl6S8KGkduDogVIB/ZK4BJn73ba0du3mQLKAejmNFvKdF88KQub4FZrU0acfFIdKwttQT34APVv80G98qA==
dependencies:
"@dhis2/prop-types" "^3.1.2"
- "@dhis2/ui-constants" "8.7.7"
+ "@dhis2/ui-constants" "8.13.10"
"@popperjs/core" "^2.10.1"
classnames "^2.3.1"
prop-types "^15.7.2"
react-popper "^2.2.5"
resize-observer-polyfill "^1.5.1"
-"@dhis2-ui/portal@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2-ui/portal/-/portal-8.7.7.tgz#0b25bbb39f4b63d4080bd77173b74e86d19af5c6"
- integrity sha512-DAr62e5GLapTtftv6tkio8mDFDOmuNinkl72UuVJ75XIa2S+F2yIDN33bbABRZLN6Hi62h0Cei4oDxjQWpcdCw==
+"@dhis2-ui/portal@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2-ui/portal/-/portal-8.13.10.tgz#05be783522f3f3e696804fa5dfb9d6d6bb77618f"
+ integrity sha512-DySgV5ADd0iacFckHwY20JTcCxVP7KgIkAfexcJGKTC2K8VDighguC8UxJNhVXUzNnapZeLupvpHW8m6x6seew==
dependencies:
classnames "^2.3.1"
prop-types "^15.7.2"
-"@dhis2-ui/radio@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2-ui/radio/-/radio-8.7.7.tgz#6550048c17b52fbfabb01e737570bfa0c3788342"
- integrity sha512-6/age99SmT9vi8Yg7fZFq6oKeEYMwZNrdLaTF/5fDZ7cuLOz+0YwR/H2rfn1WLqcCAmfJuOQVxFcFEHMDeRxAQ==
+"@dhis2-ui/radio@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2-ui/radio/-/radio-8.13.10.tgz#04967451be5bbb45988305dcdd38f21adc7d7b50"
+ integrity sha512-wD04X+RBbfi3671g0j1PJ8n7GtSA66iAeKZrzWixgIEv4FdvuMAWQepELaVcs/Z38Rwj1UPh7DoXqfUienuezw==
dependencies:
"@dhis2/prop-types" "^3.1.2"
- "@dhis2/ui-constants" "8.7.7"
+ "@dhis2/ui-constants" "8.13.10"
classnames "^2.3.1"
prop-types "^15.7.2"
-"@dhis2-ui/required@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2-ui/required/-/required-8.7.7.tgz#bdd810b4386e09df412f6d71e1434edb7ccbe985"
- integrity sha512-Ro1UgXGqRZizRKrPnDSoXAOzzLOmR//905JBthRO7CtQV7Uqyn/Vh2+dKnJ3Z8g6ee8zt/zLMh3sUzILSFUzgg==
+"@dhis2-ui/required@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2-ui/required/-/required-8.13.10.tgz#438e2a5913f827e38d4e550ce72cafd5b500990f"
+ integrity sha512-aVOJ4rKgKH4b0xoYB1zsUXShLcTV+Out3mmBFGrEMYyXe0hPYWPVKWelliQvPubgltlcBIEB0Ymcs4lR4WWWgQ==
dependencies:
"@dhis2/prop-types" "^3.1.2"
- "@dhis2/ui-constants" "8.7.7"
+ "@dhis2/ui-constants" "8.13.10"
classnames "^2.3.1"
prop-types "^15.7.2"
-"@dhis2-ui/segmented-control@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2-ui/segmented-control/-/segmented-control-8.7.7.tgz#0a8607a08b6eea0277afb393f93301c427e976b1"
- integrity sha512-gRnYKSKd2eAtuyIBLyQRtu7Y+A7L4k1wx63rNVDn5NQ5Kb6ObjAGKDpFC7zBq+WFOTavR0CH2t48Nyhhqlz/pQ==
+"@dhis2-ui/segmented-control@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2-ui/segmented-control/-/segmented-control-8.13.10.tgz#675acc2a3812429a9a147e49b7c54c73bed7712d"
+ integrity sha512-jh6iqfKIcHcDIMiG8/IjqIujkDNEWZFz3emsipPb7qDWyL0UZBJ4W72b9ybfFh0svj37caX3deZGSnnXM5Pweg==
dependencies:
"@dhis2/prop-types" "^3.1.2"
- "@dhis2/ui-constants" "8.7.7"
+ "@dhis2/ui-constants" "8.13.10"
classnames "^2.3.1"
prop-types "^15.7.2"
-"@dhis2-ui/select@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2-ui/select/-/select-8.7.7.tgz#3268624ea3f9bab29b3489143d615e31b1ce6d46"
- integrity sha512-sP1xlhtUtlsbEZFV3BVipI6EDDEvIKbKB4LnXwfkhlI9aJM9n/f3gIpLVWENqdH4nh+tOSm2kBXLJIzfUDYoTw==
- dependencies:
- "@dhis2-ui/box" "8.7.7"
- "@dhis2-ui/button" "8.7.7"
- "@dhis2-ui/card" "8.7.7"
- "@dhis2-ui/checkbox" "8.7.7"
- "@dhis2-ui/chip" "8.7.7"
- "@dhis2-ui/field" "8.7.7"
- "@dhis2-ui/input" "8.7.7"
- "@dhis2-ui/layer" "8.7.7"
- "@dhis2-ui/loader" "8.7.7"
- "@dhis2-ui/popper" "8.7.7"
- "@dhis2-ui/status-icon" "8.7.7"
+"@dhis2-ui/select@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2-ui/select/-/select-8.13.10.tgz#adbaf7c1c299b1b24c8f1e409a66962c806e7e29"
+ integrity sha512-Y5fDF2DBG3YMGhw7qSOFKWb41+f6SutQDP5cZckoNlNCBXTe/89O5PW96Yh/ruJ3bFg+l4HzafTa4f4Z2H7F/g==
+ dependencies:
+ "@dhis2-ui/box" "8.13.10"
+ "@dhis2-ui/button" "8.13.10"
+ "@dhis2-ui/card" "8.13.10"
+ "@dhis2-ui/checkbox" "8.13.10"
+ "@dhis2-ui/chip" "8.13.10"
+ "@dhis2-ui/field" "8.13.10"
+ "@dhis2-ui/input" "8.13.10"
+ "@dhis2-ui/layer" "8.13.10"
+ "@dhis2-ui/loader" "8.13.10"
+ "@dhis2-ui/popper" "8.13.10"
+ "@dhis2-ui/status-icon" "8.13.10"
"@dhis2/prop-types" "^3.1.2"
- "@dhis2/ui-constants" "8.7.7"
- "@dhis2/ui-icons" "8.7.7"
+ "@dhis2/ui-constants" "8.13.10"
+ "@dhis2/ui-icons" "8.13.10"
classnames "^2.3.1"
prop-types "^15.7.2"
-"@dhis2-ui/selector-bar@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2-ui/selector-bar/-/selector-bar-8.7.7.tgz#f18466831742d3a97e11c38b378c8014f680295c"
- integrity sha512-fSNyrl0xijrIzCRKFHbHM1X2d5VkoOOEX2FhsXE0V4KY+nXGUzdF3Nxm84mrOjfVUjwZk09ilDY+stQhBCmbeg==
- dependencies:
- "@dhis2-ui/button" "8.7.7"
- "@dhis2-ui/card" "8.7.7"
- "@dhis2-ui/layer" "8.7.7"
- "@dhis2-ui/popper" "8.7.7"
- "@dhis2/ui-constants" "8.7.7"
- "@dhis2/ui-icons" "8.7.7"
+"@dhis2-ui/selector-bar@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2-ui/selector-bar/-/selector-bar-8.13.10.tgz#5bfaa6f46397384c0161ba87603e2345e4852f96"
+ integrity sha512-Wa6vGpn4RfjgSC2+Fiw9xzi/rrNen3pUMhUg6KBRqtOtOUQkZzTa/5WEfWqw/IYUGiG1u9vD0BFzI9aiVsX1kA==
+ dependencies:
+ "@dhis2-ui/button" "8.13.10"
+ "@dhis2-ui/card" "8.13.10"
+ "@dhis2-ui/layer" "8.13.10"
+ "@dhis2-ui/popper" "8.13.10"
+ "@dhis2/ui-constants" "8.13.10"
+ "@dhis2/ui-icons" "8.13.10"
"@testing-library/react" "^12.1.2"
classnames "^2.3.1"
prop-types "^15.7.2"
-"@dhis2-ui/sharing-dialog@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2-ui/sharing-dialog/-/sharing-dialog-8.7.7.tgz#19ae6f15985ca002782030833ddb659bb210513b"
- integrity sha512-pxmzKODQ/AYSks7gYDKjmAq+Sr4TJfsYJksPpGViHc4Qoa/ym7Yez4vTaYyC3FlBRUEs0tj9qATXcD+kAT8f4w==
- dependencies:
- "@dhis2-ui/box" "8.7.7"
- "@dhis2-ui/button" "8.7.7"
- "@dhis2-ui/card" "8.7.7"
- "@dhis2-ui/divider" "8.7.7"
- "@dhis2-ui/input" "8.7.7"
- "@dhis2-ui/layer" "8.7.7"
- "@dhis2-ui/menu" "8.7.7"
- "@dhis2-ui/modal" "8.7.7"
- "@dhis2-ui/notice-box" "8.7.7"
- "@dhis2-ui/popper" "8.7.7"
- "@dhis2-ui/select" "8.7.7"
- "@dhis2-ui/tab" "8.7.7"
- "@dhis2-ui/tooltip" "8.7.7"
- "@dhis2-ui/user-avatar" "8.7.7"
+"@dhis2-ui/sharing-dialog@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2-ui/sharing-dialog/-/sharing-dialog-8.13.10.tgz#5d2eb77bb17b31d247092a66106f1a5a92be30a7"
+ integrity sha512-Ne/e1n/dL3GKZYlaub9GZO/EoGXTvsCFy5wvHvbrfdG+zJ/nNqBDcr+yIGf+oMCOAaHFipCKphQPBDC9LYu5aw==
+ dependencies:
+ "@dhis2-ui/box" "8.13.10"
+ "@dhis2-ui/button" "8.13.10"
+ "@dhis2-ui/card" "8.13.10"
+ "@dhis2-ui/divider" "8.13.10"
+ "@dhis2-ui/input" "8.13.10"
+ "@dhis2-ui/layer" "8.13.10"
+ "@dhis2-ui/menu" "8.13.10"
+ "@dhis2-ui/modal" "8.13.10"
+ "@dhis2-ui/notice-box" "8.13.10"
+ "@dhis2-ui/popper" "8.13.10"
+ "@dhis2-ui/select" "8.13.10"
+ "@dhis2-ui/tab" "8.13.10"
+ "@dhis2-ui/tooltip" "8.13.10"
+ "@dhis2-ui/user-avatar" "8.13.10"
"@dhis2/prop-types" "^3.1.2"
- "@dhis2/ui-constants" "8.7.7"
- "@dhis2/ui-icons" "8.7.7"
+ "@dhis2/ui-constants" "8.13.10"
+ "@dhis2/ui-icons" "8.13.10"
"@react-hook/size" "^2.1.2"
classnames "^2.3.1"
prop-types "^15.7.2"
-"@dhis2-ui/status-icon@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2-ui/status-icon/-/status-icon-8.7.7.tgz#ab4f0094c6c5a287d54bed1a88416a2ca763c154"
- integrity sha512-HMxry7oJWVnrgJsg7cCRkqy+46suRL1JlIGc7r4UNWCK5WMROsqrTAbbBJpI6r8fgGzKHVbLPjbP15WK7kMNIA==
+"@dhis2-ui/status-icon@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2-ui/status-icon/-/status-icon-8.13.10.tgz#1260b0099bc70011c28fd81ff37bf54ef43f9743"
+ integrity sha512-W3+gPTTtlNkHoeWuSvVhOTuf+PtQBxWFBSDDuxN99AlJPk6O+XTbl6z/7CTcf6K2pKSAHbpc1sqbY6Eoiy/kog==
dependencies:
- "@dhis2-ui/loader" "8.7.7"
+ "@dhis2-ui/loader" "8.13.10"
"@dhis2/prop-types" "^3.1.2"
- "@dhis2/ui-constants" "8.7.7"
- "@dhis2/ui-icons" "8.7.7"
+ "@dhis2/ui-constants" "8.13.10"
+ "@dhis2/ui-icons" "8.13.10"
classnames "^2.3.1"
prop-types "^15.7.2"
-"@dhis2-ui/switch@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2-ui/switch/-/switch-8.7.7.tgz#fadb692913aaeb1989696cbb439f44ddcac85a13"
- integrity sha512-tb0J0XUusztt4vN8ZRs4EOyvuiAHwSLJvfRcZ0XUNAjfeJwhsZMGRL8hUM7rDE40LP5s2dF+SLeZ4oUv/ytF5Q==
+"@dhis2-ui/switch@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2-ui/switch/-/switch-8.13.10.tgz#531eee0a74ad956004648b4508909889b59a2429"
+ integrity sha512-GatHs6xCor559JsVjfbEdmp7ZEdDUsN4my43kWBGYj611fgKgLqF3iqUOPom0eyn5acxRtd2gDAd6se1jJpMKQ==
dependencies:
- "@dhis2-ui/field" "8.7.7"
- "@dhis2-ui/required" "8.7.7"
+ "@dhis2-ui/field" "8.13.10"
+ "@dhis2-ui/required" "8.13.10"
"@dhis2/prop-types" "^3.1.2"
- "@dhis2/ui-constants" "8.7.7"
+ "@dhis2/ui-constants" "8.13.10"
classnames "^2.3.1"
prop-types "^15.7.2"
-"@dhis2-ui/tab@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2-ui/tab/-/tab-8.7.7.tgz#91168ba3510d7932e01098a5b487ad16920a3267"
- integrity sha512-R6UwJa87a1KByz9MY9XzIdiVYCDICwlRHdgSgu/iBq+LNhbFnKHq7oQuExI24SzDicYYJwcdBkB5fR07AKz5mQ==
+"@dhis2-ui/tab@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2-ui/tab/-/tab-8.13.10.tgz#aceda14aea299bcfe7c2cabdbdc70c057e2d834f"
+ integrity sha512-qnVwDwlZAimGLEFarOlLUc3oS8oFrRR4niwZk/iPprrTZV5snthnmkZFrITE0CvWvmoOmd2KwiKEdq47xEuELw==
dependencies:
"@dhis2/prop-types" "^3.1.2"
- "@dhis2/ui-constants" "8.7.7"
- "@dhis2/ui-icons" "8.7.7"
+ "@dhis2/ui-constants" "8.13.10"
+ "@dhis2/ui-icons" "8.13.10"
classnames "^2.3.1"
prop-types "^15.7.2"
-"@dhis2-ui/table@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2-ui/table/-/table-8.7.7.tgz#77cab7d0357e92137c3dcc6ad38107ec5c3ee2a6"
- integrity sha512-D9Le3DvsZd6D3P+rgmaom5pL1rhNKFH7iwhL/8k38ifsoI0xiTxrK9g9aD5W/0rxfSH0rjOcjb9U/fNg8rp10g==
+"@dhis2-ui/table@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2-ui/table/-/table-8.13.10.tgz#853400e83eb166a1769a94c9035758663d31ebd1"
+ integrity sha512-q2zi4t3w+gkg7wnIAGXEE6C9SPt5kNFYqIcQ8nSeexU2c5i+MkzalH3WpEqS5rq6CF9gHkCQ2DZ5GI3Pi+AEFw==
dependencies:
"@dhis2/prop-types" "^3.1.2"
- "@dhis2/ui-constants" "8.7.7"
- "@dhis2/ui-icons" "8.7.7"
+ "@dhis2/ui-constants" "8.13.10"
+ "@dhis2/ui-icons" "8.13.10"
classnames "^2.3.1"
prop-types "^15.7.2"
-"@dhis2-ui/tag@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2-ui/tag/-/tag-8.7.7.tgz#8f6b81ef2f54ed8e6749552871f559d2870397df"
- integrity sha512-B7oU/wvZ/4TSxXVQr5OQWx4bB9dZ+TrTrjZigLbTRLf7L4Kl4wdyciCMBIIPHvvLaJPKGUItuKCJSDk4y7IuEQ==
+"@dhis2-ui/tag@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2-ui/tag/-/tag-8.13.10.tgz#3a7dee10785692c8031bd5a2af6b0f5356e11723"
+ integrity sha512-bxygOblNPIu97k6yICFgFvqavqRsimwEbCQTpKJfhgsNcm8egGjgmt6lv2uWSgq3s5ypp5kpz6nvlYBe/sOM1w==
dependencies:
"@dhis2/prop-types" "^3.1.2"
- "@dhis2/ui-constants" "8.7.7"
+ "@dhis2/ui-constants" "8.13.10"
classnames "^2.3.1"
prop-types "^15.7.2"
-"@dhis2-ui/text-area@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2-ui/text-area/-/text-area-8.7.7.tgz#031da32c454cffaa590dcc75377fae58026ddd3f"
- integrity sha512-Ux36zKW+w0fgk1WANrtWldqfolnqP8/065dvyp2HG+Uvvr30oGIvCGWd8eZq8wpmGEYR4tBbVQl9kLqRdr/gpA==
+"@dhis2-ui/text-area@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2-ui/text-area/-/text-area-8.13.10.tgz#aedfc1ec6275570e1931c7a39aa1eac14f83ef6a"
+ integrity sha512-al7FSd2Mb6uZtwauY4PA+jrgPMIjMpXgavEkcfzANoBa9GKflCYJobFNq24ZmJDRxl9UgbF/CdCzCfmHkHlokw==
dependencies:
- "@dhis2-ui/box" "8.7.7"
- "@dhis2-ui/field" "8.7.7"
- "@dhis2-ui/loader" "8.7.7"
- "@dhis2-ui/status-icon" "8.7.7"
+ "@dhis2-ui/box" "8.13.10"
+ "@dhis2-ui/field" "8.13.10"
+ "@dhis2-ui/loader" "8.13.10"
+ "@dhis2-ui/status-icon" "8.13.10"
"@dhis2/prop-types" "^3.1.2"
- "@dhis2/ui-constants" "8.7.7"
- "@dhis2/ui-icons" "8.7.7"
+ "@dhis2/ui-constants" "8.13.10"
+ "@dhis2/ui-icons" "8.13.10"
classnames "^2.3.1"
prop-types "^15.7.2"
-"@dhis2-ui/tooltip@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2-ui/tooltip/-/tooltip-8.7.7.tgz#25b62ddb4ccb465435f036b49f8b1ac239b5bab3"
- integrity sha512-n5dmLI+boMXH8O569SaYcf/F337TDtR0SnCXCC4aIkpb9wtFpxTtx7FeHERxkwiiC3Z3QyRx5oott2tcmIaxVw==
+"@dhis2-ui/tooltip@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2-ui/tooltip/-/tooltip-8.13.10.tgz#3372a031c2ffbcd2c54a6fc4509bfc55c50e7d51"
+ integrity sha512-KtZvCju4CXjZ9vQxUOskSKLVVYwkfGUa6vVa5c64pKdNK4xOnpcbWp7CZpbsRrxphKr16/WmjpJCH/7tu/tO5A==
dependencies:
- "@dhis2-ui/popper" "8.7.7"
- "@dhis2-ui/portal" "8.7.7"
+ "@dhis2-ui/popper" "8.13.10"
+ "@dhis2-ui/portal" "8.13.10"
"@dhis2/prop-types" "^3.1.2"
- "@dhis2/ui-constants" "8.7.7"
+ "@dhis2/ui-constants" "8.13.10"
classnames "^2.3.1"
prop-types "^15.7.2"
-"@dhis2-ui/transfer@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2-ui/transfer/-/transfer-8.7.7.tgz#05bcd0a86121296dced7d76a0dcea634bc3600d1"
- integrity sha512-vEYXG2innjdBUa3tD+Rab83ZxYt9mOwnYKw94dUbdSdGQkdeXaJI4Iw8ept4AvBrwLtZej3wWdWsGGXGiEOMIA==
+"@dhis2-ui/transfer@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2-ui/transfer/-/transfer-8.13.10.tgz#369adb4394955a185994537ca44db551bfb7d18a"
+ integrity sha512-jiHqwbaiNXU6UHrvbpWSQF+RXEMOFoSamOWGImvCMy2NZr/98Kq5pAELOQaL9SgW6PAGgqDaIcCE76ehgGIAOw==
dependencies:
- "@dhis2-ui/button" "8.7.7"
- "@dhis2-ui/field" "8.7.7"
- "@dhis2-ui/input" "8.7.7"
- "@dhis2-ui/intersection-detector" "8.7.7"
- "@dhis2-ui/loader" "8.7.7"
+ "@dhis2-ui/button" "8.13.10"
+ "@dhis2-ui/field" "8.13.10"
+ "@dhis2-ui/input" "8.13.10"
+ "@dhis2-ui/intersection-detector" "8.13.10"
+ "@dhis2-ui/loader" "8.13.10"
"@dhis2/prop-types" "^3.1.2"
- "@dhis2/ui-constants" "8.7.7"
+ "@dhis2/ui-constants" "8.13.10"
classnames "^2.3.1"
prop-types "^15.7.2"
-"@dhis2-ui/user-avatar@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2-ui/user-avatar/-/user-avatar-8.7.7.tgz#865e5d157b4292c70dd7d699c9f0bac7ee76c83f"
- integrity sha512-NJM1gBMH2dh2HMmRkC0t4HKBjO5oyPW2GRRnae5VpSYxv+lKmak/0YF8Zw/1lgoJ+TN+dg3e4NFxJi2FzO4hlA==
+"@dhis2-ui/user-avatar@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2-ui/user-avatar/-/user-avatar-8.13.10.tgz#25c20816fb333eca1229c63085f3f14a798cf142"
+ integrity sha512-IRWKDss24ntp1Pk6v1a26Mulo+bfv4Mtr1qpYJoDp9xyqmsUqguoA+F9yEN9yXGajGMoe2zTV7Kk2Taz8L1OcQ==
dependencies:
"@dhis2/prop-types" "^3.1.2"
- "@dhis2/ui-constants" "8.7.7"
+ "@dhis2/ui-constants" "8.13.10"
classnames "^2.3.1"
prop-types "^15.7.2"
@@ -1978,7 +1995,7 @@
"@dhis2/pwa" "10.2.0"
moment "^2.24.0"
-"@dhis2/app-runtime@^3.6.1", "@dhis2/app-runtime@^3.9.4":
+"@dhis2/app-runtime@^3.6.1", "@dhis2/app-runtime@^3.9.3":
version "3.9.4"
resolved "https://registry.yarnpkg.com/@dhis2/app-runtime/-/app-runtime-3.9.4.tgz#88243dbb9a4a805be744a61cffd13a4c3d2d031d"
integrity sha512-CBwMXer5/Kcxf6MgfwPgpEaUSXbDXzwItCkH3i0nsjmkD0KIaEOZ6Y1pQL+/5RYnziZ5glYCFWsCKn0eCJrdJg==
@@ -2146,6 +2163,14 @@
i18next "^10.3"
moment "^2.24.0"
+"@dhis2/multi-calendar-dates@1.0.2":
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/@dhis2/multi-calendar-dates/-/multi-calendar-dates-1.0.2.tgz#e54dc85e512aba93fceef3004e67e199077f3ba8"
+ integrity sha512-oQZ7PFMwHFpt4ygDN9DmAeYO3g07L7AHJW6diZ37mzpkEF/DyMafhsZHnJWNlTH5HDp8nYuO3EjBiM7fZN6C0g==
+ dependencies:
+ "@js-temporal/polyfill" "^0.4.2"
+ classnames "^2.3.2"
+
"@dhis2/prop-types@^3.1.2":
version "3.1.2"
resolved "https://registry.yarnpkg.com/@dhis2/prop-types/-/prop-types-3.1.2.tgz#65b8ad2da8cd2f72bc8b951049a6c9d1b97af3e9"
@@ -2162,90 +2187,91 @@
workbox-routing "^6.1.5"
workbox-strategies "^6.1.5"
-"@dhis2/ui-constants@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2/ui-constants/-/ui-constants-8.7.7.tgz#cbdc548ddc2dc0f98fe9d8541afe0efd247adf3e"
- integrity sha512-SgvtBULPvu3/kZwrzKu55sLeWYnoWgLdiBLacScpXgGYXifHmsNtFVOB/31t2Gl01+JVO1MrQ1ANtGRNdzjF/w==
+"@dhis2/ui-constants@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2/ui-constants/-/ui-constants-8.13.10.tgz#31ec927daa1638b130b523a27f1b3437e81538d4"
+ integrity sha512-b6pJd3jMkQo8lk87tvd/jlnfX3wa5ScVzo++HGTCO5hnGUizmcD5mOskZ6nYuFu2L2iJaywaTZMrz56SrerJcQ==
dependencies:
prop-types "^15.7.2"
-"@dhis2/ui-forms@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2/ui-forms/-/ui-forms-8.7.7.tgz#b90c3253a69a169e1d5185c51783eb892f3ecb15"
- integrity sha512-7ILC6CzKIM8F1bFdvUkBQ/GFwotA+f+jgoSRM68HPFYkPU5jVZUfZ/Dk9Z0WMy+E1t8cps7sLyjyFuhiR/T9Yw==
- dependencies:
- "@dhis2-ui/button" "8.7.7"
- "@dhis2-ui/checkbox" "8.7.7"
- "@dhis2-ui/field" "8.7.7"
- "@dhis2-ui/file-input" "8.7.7"
- "@dhis2-ui/input" "8.7.7"
- "@dhis2-ui/radio" "8.7.7"
- "@dhis2-ui/select" "8.7.7"
- "@dhis2-ui/switch" "8.7.7"
- "@dhis2-ui/text-area" "8.7.7"
+"@dhis2/ui-forms@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2/ui-forms/-/ui-forms-8.13.10.tgz#d9c5bb472b12c4b1124669be6e03485d3a779bc1"
+ integrity sha512-bD5AV9XAdXg66axcON8ePqPpQ96DHzM0AbJ+kn8yW9KATiM8tC0RtO1KlKgdrYDO5mSHhNZQXBr2jtUJg7x1vg==
+ dependencies:
+ "@dhis2-ui/button" "8.13.10"
+ "@dhis2-ui/checkbox" "8.13.10"
+ "@dhis2-ui/field" "8.13.10"
+ "@dhis2-ui/file-input" "8.13.10"
+ "@dhis2-ui/input" "8.13.10"
+ "@dhis2-ui/radio" "8.13.10"
+ "@dhis2-ui/select" "8.13.10"
+ "@dhis2-ui/switch" "8.13.10"
+ "@dhis2-ui/text-area" "8.13.10"
"@dhis2/prop-types" "^3.1.2"
classnames "^2.3.1"
final-form "^4.20.2"
prop-types "^15.7.2"
react-final-form "^6.5.3"
-"@dhis2/ui-icons@8.7.7":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2/ui-icons/-/ui-icons-8.7.7.tgz#8138aebb46723cc82168663eb0f06a6659ab2a8c"
- integrity sha512-appRE/9TmJ8oa0B+Zb4g2W5nD+KMmdmgIAktRDKa6zRwiUvEPHLRoydm92kn38oDIg7oS9wsAHGMN1eff67cNg==
-
-"@dhis2/ui@^8.6.2":
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/@dhis2/ui/-/ui-8.7.7.tgz#07c29bbbf83bdeacc27660e4dbd70b917b30a2d6"
- integrity sha512-e5laICpQD0MU4aUZzkGCGAvAbuigpCuqzQg4o8gOzR/tv1K78QnY/eMyF/vv7FBKFX9b0AyfKge0YTXPxXYPUQ==
- dependencies:
- "@dhis2-ui/alert" "8.7.7"
- "@dhis2-ui/box" "8.7.7"
- "@dhis2-ui/button" "8.7.7"
- "@dhis2-ui/card" "8.7.7"
- "@dhis2-ui/center" "8.7.7"
- "@dhis2-ui/checkbox" "8.7.7"
- "@dhis2-ui/chip" "8.7.7"
- "@dhis2-ui/cover" "8.7.7"
- "@dhis2-ui/css" "8.7.7"
- "@dhis2-ui/divider" "8.7.7"
- "@dhis2-ui/field" "8.7.7"
- "@dhis2-ui/file-input" "8.7.7"
- "@dhis2-ui/header-bar" "8.7.7"
- "@dhis2-ui/help" "8.7.7"
- "@dhis2-ui/input" "8.7.7"
- "@dhis2-ui/intersection-detector" "8.7.7"
- "@dhis2-ui/label" "8.7.7"
- "@dhis2-ui/layer" "8.7.7"
- "@dhis2-ui/legend" "8.7.7"
- "@dhis2-ui/loader" "8.7.7"
- "@dhis2-ui/logo" "8.7.7"
- "@dhis2-ui/menu" "8.7.7"
- "@dhis2-ui/modal" "8.7.7"
- "@dhis2-ui/node" "8.7.7"
- "@dhis2-ui/notice-box" "8.7.7"
- "@dhis2-ui/organisation-unit-tree" "8.7.7"
- "@dhis2-ui/pagination" "8.7.7"
- "@dhis2-ui/popover" "8.7.7"
- "@dhis2-ui/popper" "8.7.7"
- "@dhis2-ui/portal" "8.7.7"
- "@dhis2-ui/radio" "8.7.7"
- "@dhis2-ui/required" "8.7.7"
- "@dhis2-ui/segmented-control" "8.7.7"
- "@dhis2-ui/select" "8.7.7"
- "@dhis2-ui/selector-bar" "8.7.7"
- "@dhis2-ui/sharing-dialog" "8.7.7"
- "@dhis2-ui/switch" "8.7.7"
- "@dhis2-ui/tab" "8.7.7"
- "@dhis2-ui/table" "8.7.7"
- "@dhis2-ui/tag" "8.7.7"
- "@dhis2-ui/text-area" "8.7.7"
- "@dhis2-ui/tooltip" "8.7.7"
- "@dhis2-ui/transfer" "8.7.7"
- "@dhis2-ui/user-avatar" "8.7.7"
- "@dhis2/ui-constants" "8.7.7"
- "@dhis2/ui-forms" "8.7.7"
- "@dhis2/ui-icons" "8.7.7"
+"@dhis2/ui-icons@8.13.10":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2/ui-icons/-/ui-icons-8.13.10.tgz#802f678bc09b157f775c0826564e23f48f1a72c8"
+ integrity sha512-NA9gm/qbsJD6JhDjQszQxKDfsQtV5SNiJA668rfJjEK51JC5L0TXeidnOnX2T4Tg4vHMIdOuyjRCTkm1z+C1JQ==
+
+"@dhis2/ui@^8.13.10", "@dhis2/ui@^8.6.2":
+ version "8.13.10"
+ resolved "https://registry.yarnpkg.com/@dhis2/ui/-/ui-8.13.10.tgz#dc70be2b02333ffea5a10110bd33c8aa0136131b"
+ integrity sha512-0iN0qoFG6km54v9xHng9BVfoCDmTc6knOG1n7HU3bkn/nv28Lj8LecMtcXpqiB7sdFLQHArMRPOE7Z+RICRwLQ==
+ dependencies:
+ "@dhis2-ui/alert" "8.13.10"
+ "@dhis2-ui/box" "8.13.10"
+ "@dhis2-ui/button" "8.13.10"
+ "@dhis2-ui/calendar" "8.13.10"
+ "@dhis2-ui/card" "8.13.10"
+ "@dhis2-ui/center" "8.13.10"
+ "@dhis2-ui/checkbox" "8.13.10"
+ "@dhis2-ui/chip" "8.13.10"
+ "@dhis2-ui/cover" "8.13.10"
+ "@dhis2-ui/css" "8.13.10"
+ "@dhis2-ui/divider" "8.13.10"
+ "@dhis2-ui/field" "8.13.10"
+ "@dhis2-ui/file-input" "8.13.10"
+ "@dhis2-ui/header-bar" "8.13.10"
+ "@dhis2-ui/help" "8.13.10"
+ "@dhis2-ui/input" "8.13.10"
+ "@dhis2-ui/intersection-detector" "8.13.10"
+ "@dhis2-ui/label" "8.13.10"
+ "@dhis2-ui/layer" "8.13.10"
+ "@dhis2-ui/legend" "8.13.10"
+ "@dhis2-ui/loader" "8.13.10"
+ "@dhis2-ui/logo" "8.13.10"
+ "@dhis2-ui/menu" "8.13.10"
+ "@dhis2-ui/modal" "8.13.10"
+ "@dhis2-ui/node" "8.13.10"
+ "@dhis2-ui/notice-box" "8.13.10"
+ "@dhis2-ui/organisation-unit-tree" "8.13.10"
+ "@dhis2-ui/pagination" "8.13.10"
+ "@dhis2-ui/popover" "8.13.10"
+ "@dhis2-ui/popper" "8.13.10"
+ "@dhis2-ui/portal" "8.13.10"
+ "@dhis2-ui/radio" "8.13.10"
+ "@dhis2-ui/required" "8.13.10"
+ "@dhis2-ui/segmented-control" "8.13.10"
+ "@dhis2-ui/select" "8.13.10"
+ "@dhis2-ui/selector-bar" "8.13.10"
+ "@dhis2-ui/sharing-dialog" "8.13.10"
+ "@dhis2-ui/switch" "8.13.10"
+ "@dhis2-ui/tab" "8.13.10"
+ "@dhis2-ui/table" "8.13.10"
+ "@dhis2-ui/tag" "8.13.10"
+ "@dhis2-ui/text-area" "8.13.10"
+ "@dhis2-ui/tooltip" "8.13.10"
+ "@dhis2-ui/transfer" "8.13.10"
+ "@dhis2-ui/user-avatar" "8.13.10"
+ "@dhis2/ui-constants" "8.13.10"
+ "@dhis2/ui-forms" "8.13.10"
+ "@dhis2/ui-icons" "8.13.10"
prop-types "^15.7.2"
"@eslint-community/eslint-utils@^4.2.0":
@@ -2610,6 +2636,14 @@
"@jridgewell/resolve-uri" "3.1.0"
"@jridgewell/sourcemap-codec" "1.4.14"
+"@js-temporal/polyfill@^0.4.2":
+ version "0.4.4"
+ resolved "https://registry.yarnpkg.com/@js-temporal/polyfill/-/polyfill-0.4.4.tgz#4c26b4a1a68c19155808363f520204712cfc2558"
+ integrity sha512-2X6bvghJ/JAoZO52lbgyAPFj8uCflhTo2g7nkFzEQdXd/D8rEeD4HtmTEpmtGCva260fcd66YNXBOYdnmHqSOg==
+ dependencies:
+ jsbi "^4.3.0"
+ tslib "^2.4.1"
+
"@juggle/resize-observer@^3.3.1":
version "3.4.0"
resolved "https://registry.yarnpkg.com/@juggle/resize-observer/-/resize-observer-3.4.0.tgz#08d6c5e20cf7e4cc02fd181c4b0c225cd31dbb60"
@@ -4755,7 +4789,7 @@ class-utils@^0.3.5:
isobject "^3.0.0"
static-extend "^0.1.1"
-classnames@^2.2.6, classnames@^2.3.1:
+classnames@^2.2.6, classnames@^2.3.1, classnames@^2.3.2:
version "2.3.2"
resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924"
integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==
@@ -8929,6 +8963,11 @@ js-yaml@^4.1.0:
dependencies:
argparse "^2.0.1"
+jsbi@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/jsbi/-/jsbi-4.3.0.tgz#b54ee074fb6fcbc00619559305c8f7e912b04741"
+ integrity sha512-SnZNcinB4RIcnEyZqFPdGPVgrg2AcnykiBy0sHVJQKHYeaLUvi3Exj+iaPpLnFVkDPZIV4U0yvgC9/R4uEAZ9g==
+
jsbn@~0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
@@ -11968,6 +12007,11 @@ serialize-javascript@^6.0.0:
dependencies:
randombytes "^2.1.0"
+serialize-query-params@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/serialize-query-params/-/serialize-query-params-2.0.2.tgz#598a3fb9e13f4ea1c1992fbd20231aa16b31db81"
+ integrity sha512-1chMo1dST4pFA9RDXAtF0Rbjaut4is7bzFbI1Z26IuMub68pNCILku85aYmeFhvnY//BXUPUhoRMjYcsT93J/Q==
+
serve-index@^1.9.1:
version "1.9.1"
resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239"
@@ -13006,7 +13050,7 @@ tslib@^1.8.1, tslib@^1.9.0:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
-tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0:
+tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.1:
version "2.5.3"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.3.tgz#24944ba2d990940e6e982c4bea147aba80209913"
integrity sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==
@@ -13307,6 +13351,13 @@ url-parse@^1.5.3:
querystringify "^2.1.1"
requires-port "^1.0.0"
+use-query-params@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/use-query-params/-/use-query-params-2.2.1.tgz#c558ab70706f319112fbccabf6867b9f904e947d"
+ integrity sha512-i6alcyLB8w9i3ZK3caNftdb+UnbfBRNPDnc89CNQWkGRmDrm/gfydHvMBfVsQJRq3NoHOM2dt/ceBWG2397v1Q==
+ dependencies:
+ serialize-query-params "^2.0.2"
+
use-sync-external-store@1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a"