@skatteetaten/ds-overlays 1.5.0 → 1.6.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.
@@ -1,8 +1,8 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
- import { forwardRef, useId, useRef, useImperativeHandle, useEffect } from 'react';
2
+ import { forwardRef, useId, useRef, useImperativeHandle, useState, useEffect } from 'react';
3
3
  import { useTranslation } from 'react-i18next';
4
4
  import { IconButton } from '@skatteetaten/ds-buttons';
5
- import { dsI18n, SkatteetatenLogo, Separator, getCommonClassNameDefault } from '@skatteetaten/ds-core-utils';
5
+ import { dsI18n, getCommonClassNameDefault, SkatteetatenLogo, Separator } from '@skatteetaten/ds-core-utils';
6
6
  import { CancelSVGpath } from '@skatteetaten/ds-icons';
7
7
  import { Heading } from '@skatteetaten/ds-typography';
8
8
  import './styles.css';
@@ -41,6 +41,46 @@ const Modal = /*#__PURE__*/ forwardRef(({ id, className = getCommonClassNameDefa
41
41
  });
42
42
  const modalRef = useRef(null);
43
43
  useImperativeHandle(ref, ()=>modalRef?.current);
44
+ const [isAutoOpened, setIsAutoOpened] = useState();
45
+ useEffect(()=>{
46
+ const dialog = modalRef.current;
47
+ if (dialog) {
48
+ const originalMethod = dialog.showModal;
49
+ dialog.showModal = function showModal(...args) {
50
+ setIsAutoOpened(document.activeElement?.nodeName === 'BODY');
51
+ originalMethod.apply(dialog, args);
52
+ };
53
+ }
54
+ }, []);
55
+ useEffect(()=>{
56
+ const dialog = modalRef.current;
57
+ const handleClose = ()=>{
58
+ if (isAutoOpened) {
59
+ setIsAutoOpened(false);
60
+ //TODO skiplink kan ligge i shadowDom. Da kan vi ikke finne den med querySelector
61
+ // Denne modalen kan også eksistere i en shadowDom. ;-)
62
+ const skipLink = document.querySelector('a[data-skip-link]');
63
+ if (skipLink) {
64
+ skipLink?.focus();
65
+ } else {
66
+ const prevTabIndex = document.body.tabIndex;
67
+ document.body.tabIndex = -1;
68
+ document.body.focus();
69
+ document.body.tabIndex = prevTabIndex;
70
+ }
71
+ }
72
+ };
73
+ if (dialog) {
74
+ dialog.addEventListener('close', handleClose);
75
+ }
76
+ return ()=>{
77
+ if (dialog) {
78
+ dialog.removeEventListener('close', handleClose);
79
+ }
80
+ };
81
+ }, [
82
+ isAutoOpened
83
+ ]);
44
84
  useEffect(()=>{
45
85
  /**
46
86
  * Hvis konsument endrer children i en åpen modal, vil fokus settes til body og dismissOnEsc vil slutte å fungere.
@@ -80,6 +120,9 @@ const Modal = /*#__PURE__*/ forwardRef(({ id, className = getCommonClassNameDefa
80
120
  const paddingClassName = styles[`modalPadding${padding.toUpperCase()}`];
81
121
  const noPaddingTop = imageSource ? styles.modalNoPaddingTop : '';
82
122
  const headingNoPaddingClassName = padding === 'mega' ? styles.modalHeadingNoPadding : '';
123
+ if (variant === 'important') {
124
+ console.warn('Modal: Varianten "important" er deprekert og vil bli fjernet i neste major versjon.');
125
+ }
83
126
  return /*#__PURE__*/ jsx("dialog", {
84
127
  ref: modalRef,
85
128
  id: id,
@@ -1,8 +1,8 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { useRef, useState, useEffect, useMemo } from 'react';
3
- import { useFloating, autoUpdate, offset, flip, shift, arrow, useDismiss, useInteractions } from '@floating-ui/react';
3
+ import { useFloating, offset, flip, shift, arrow, autoUpdate, useDismiss, useInteractions } from '@floating-ui/react';
4
4
  import { useMediaQuery } from '@skatteetaten/ds-core-utils';
5
- import { P as PopoverContent, a as getPopoverPositionDefault } from '../PopoverContent.esm.js';
5
+ import { a as getPopoverPositionDefault, P as PopoverContent } from '../PopoverContent.esm.js';
6
6
  export { g as getPopoverColorDefault, b as getPopoverRestoreFocusDefault } from '../PopoverContent.esm.js';
7
7
  import { PopoverContext } from '../PopoverContext/index.esm.js';
8
8
  import { PopoverTrigger } from '../PopoverTrigger/index.esm.js';
@@ -5,7 +5,7 @@ import { Button } from '@skatteetaten/ds-buttons';
5
5
  import { dsI18n, getCommonClassNameDefault } from '@skatteetaten/ds-core-utils';
6
6
  import { FavoriteSVGpath, LogOutSVGpath } from '@skatteetaten/ds-icons';
7
7
  import { Paragraph } from '@skatteetaten/ds-typography';
8
- import { Modal, getModalDismissOnEscDefault, getModalDismissOnOutsideClickDefault } from '../Modal/index.esm.js';
8
+ import { Modal, getModalDismissOnOutsideClickDefault, getModalDismissOnEscDefault } from '../Modal/index.esm.js';
9
9
  import { RolePickerBusinessList } from '../RolePickerBusinessList/index.esm.js';
10
10
  import { RolePickerContext } from '../RolePickerContext/index.esm.js';
11
11
  import { RolePickerFilterInput } from '../RolePickerFilterInput/index.esm.js';
@@ -20,16 +20,14 @@ import './styles.css';
20
20
  const getRolePickerHideCloseButtonDefault = ()=>false;
21
21
  const getRolePickerShowSubunitsDefault = ()=>true;
22
22
  const getRolePickerShowInactiveBusinessesDefault = ()=>false;
23
+ const getRolePickerShowDeceasedPeopleDefault = ()=>false;
23
24
 
24
25
  var styles = {
25
26
  "rolePicker": "RolePicker-module_rolePicker__pTz4X",
26
27
  "rolePickerFooter": "RolePicker-module_rolePickerFooter__64Pj-",
27
- "container": "RolePicker-module_container__VtHRL",
28
- "showMoreButton": "RolePicker-module_showMoreButton__rY5m5",
29
- "srOnly": "RolePicker-module_srOnly__ePXta"
30
- };
28
+ "container": "RolePicker-module_container__VtHRL"};
31
29
 
32
- const RolePicker = /*#__PURE__*/ forwardRef(({ id, className = getCommonClassNameDefault(), lang, 'data-testid': dataTestId, me, businesses, people, title, dismissOnEsc = getModalDismissOnEscDefault(), dismissOnOutsideClick = getModalDismissOnOutsideClickDefault(), hideCloseButton = getRolePickerHideCloseButtonDefault(), showInactiveBusinesses = getRolePickerShowInactiveBusinessesDefault(), showSubunits = getRolePickerShowSubunitsDefault(), onClose, onEntitySelect, onLogout, children }, ref)=>{
30
+ const RolePicker = /*#__PURE__*/ forwardRef(({ id, className = getCommonClassNameDefault(), lang, 'data-testid': dataTestId, me, businesses, people, title, dismissOnEsc = getModalDismissOnEscDefault(), dismissOnOutsideClick = getModalDismissOnOutsideClickDefault(), hideCloseButton = getRolePickerHideCloseButtonDefault(), showInactiveBusinesses = getRolePickerShowInactiveBusinessesDefault(), showSubunits = getRolePickerShowSubunitsDefault(), showDeceasedPeople = getRolePickerShowDeceasedPeopleDefault(), onClose, onEntitySelect, onLogout, children }, ref)=>{
33
31
  const [filter, setFilter] = useState('');
34
32
  const [loadingEntityId, setLoadingEntityId] = useState(undefined);
35
33
  const [error, setError] = useState(undefined);
@@ -80,7 +78,7 @@ const RolePicker = /*#__PURE__*/ forwardRef(({ id, className = getCommonClassNam
80
78
  }
81
79
  };
82
80
  const concatenatedClassName = `${styles.container} ${className}`.trim();
83
- const noValidBusinesses = !me && !people && (!businesses || businesses.total === 0);
81
+ const noValidBusinesses = !me && !people && businesses && businesses.total === 0;
84
82
  let internalTitle = title ? title : t('rolepicker.Heading');
85
83
  if (noValidBusinesses) {
86
84
  internalTitle = t('rolepicker.NoBusinessesErrorTitle');
@@ -117,7 +115,7 @@ const RolePicker = /*#__PURE__*/ forwardRef(({ id, className = getCommonClassNam
117
115
  me ? /*#__PURE__*/ jsx(RolePickerRow, {
118
116
  id: me.personId,
119
117
  title: t('rolepicker.MeHeading'),
120
- description: me.personId,
118
+ description: `${t('rolepicker.PeopleDescriptionPrefix')} ${me.personId}`,
121
119
  svgPath: FavoriteSVGpath,
122
120
  titleAs: 'h2',
123
121
  onClick: ()=>{
@@ -142,7 +140,8 @@ const RolePicker = /*#__PURE__*/ forwardRef(({ id, className = getCommonClassNam
142
140
  }) : null,
143
141
  people && people?.total > 0 ? /*#__PURE__*/ jsx(RolePickerPeopleList, {
144
142
  people: people,
145
- filterQuery: deferredFilter
143
+ filterQuery: deferredFilter,
144
+ showDeceasedPeople: showDeceasedPeople
146
145
  }) : null,
147
146
  businesses && businesses.total > 0 ? /*#__PURE__*/ jsx(RolePickerBusinessList, {
148
147
  businesses: businesses,
@@ -193,4 +192,4 @@ const RolePicker = /*#__PURE__*/ forwardRef(({ id, className = getCommonClassNam
193
192
  });
194
193
  RolePicker.displayName = 'RolePicker';
195
194
 
196
- export { RolePicker, getRolePickerHideCloseButtonDefault, getRolePickerShowInactiveBusinessesDefault, getRolePickerShowSubunitsDefault };
195
+ export { RolePicker, getRolePickerHideCloseButtonDefault, getRolePickerShowDeceasedPeopleDefault, getRolePickerShowInactiveBusinessesDefault, getRolePickerShowSubunitsDefault };
@@ -49,16 +49,16 @@ const RolePickerFilterInput = /*#__PURE__*/ forwardRef(({ label, value, onChange
49
49
  htmlFor: 'filterInputId',
50
50
  children: label
51
51
  }),
52
- /*#__PURE__*/ jsx("span", {
52
+ /*#__PURE__*/ jsx("div", {
53
53
  className: styles.srOnly,
54
54
  id: 'liveSearchId',
55
55
  children: t('rolepicker.SearchResultDescription')
56
56
  }),
57
- /*#__PURE__*/ jsx("span", {
57
+ /*#__PURE__*/ jsx("div", {
58
58
  className: styles.srOnly,
59
59
  "aria-live": 'assertive',
60
60
  "aria-atomic": 'true',
61
- children: value ? /*#__PURE__*/ jsx("span", {
61
+ children: value ? /*#__PURE__*/ jsx("div", {
62
62
  children: liveRegionContent
63
63
  }) : null
64
64
  }),
@@ -1,8 +1,9 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
- import { useState, useContext, useRef, useMemo } from 'react';
2
+ import { useState, useContext, useRef, useMemo, useCallback } from 'react';
3
3
  import { useTranslation } from 'react-i18next';
4
4
  import { Button } from '@skatteetaten/ds-buttons';
5
5
  import { dsI18n } from '@skatteetaten/ds-core-utils';
6
+ import { Checkbox } from '@skatteetaten/ds-forms';
6
7
  import { PersonSVGpath } from '@skatteetaten/ds-icons';
7
8
  import { Heading } from '@skatteetaten/ds-typography';
8
9
  import { RolePickerContext } from '../RolePickerContext/index.esm.js';
@@ -14,15 +15,17 @@ import './styles.css';
14
15
 
15
16
  var styles = {
16
17
  "peopleList": "RolePickerPeopleList-module_peopleList__dEumR",
18
+ "showDeceasedChecbox": "RolePickerPeopleList-module_showDeceasedChecbox__4SCg3",
17
19
  "showAllButtonWrapper": "RolePickerPeopleList-module_showAllButtonWrapper__-ErxO"
18
20
  };
19
21
 
20
22
  const MAX_INIITAL_ITEMS = 5;
21
- const RolePickerPeopleList = ({ people, filterQuery })=>{
23
+ const RolePickerPeopleList = ({ people, filterQuery, showDeceasedPeople: showDeceasedPeopleExternal })=>{
22
24
  const { t } = useTranslation('ds_overlays', {
23
25
  i18n: dsI18n
24
26
  });
25
27
  const [showAll, setShowAll] = useState(false);
28
+ const [showDeceasedPeople, setShowDeceasedPeople] = useState(showDeceasedPeopleExternal);
26
29
  const ctx = useContext(RolePickerContext);
27
30
  const navRef = useRef(null);
28
31
  const handleShowAll = ()=>{
@@ -42,17 +45,28 @@ const RolePickerPeopleList = ({ people, filterQuery })=>{
42
45
  });
43
46
  };
44
47
  const visibleItems = useMemo(()=>{
48
+ // lager en dyp kopiering av person-listen for å unngå mutasjon
49
+ let items = JSON.parse(JSON.stringify(people.list));
50
+ items = !showDeceasedPeople ? items.filter((p)=>!p.isDeleted) : items;
45
51
  if (filterQuery) {
46
- return people.list.filter((f)=>f.name.toLowerCase().includes(filterQuery.toLowerCase()) || f.personId.includes(filterQuery.toLowerCase()));
52
+ return items.filter((f)=>f.name.toLowerCase().includes(filterQuery.toLowerCase()) || f.personId.includes(filterQuery.toLowerCase()));
47
53
  }
48
54
  if (showAll) {
49
- return people.list;
55
+ return items;
50
56
  }
51
- return people.list.slice(0, MAX_INIITAL_ITEMS);
57
+ return items.slice(0, MAX_INIITAL_ITEMS);
52
58
  }, [
59
+ people.list,
60
+ showDeceasedPeople,
53
61
  filterQuery,
54
- showAll,
55
- people.list
62
+ showAll
63
+ ]);
64
+ const getShowAllCount = useCallback(()=>{
65
+ return showDeceasedPeople ? people.total : people.list.filter((p)=>!p.isDeleted).length;
66
+ }, [
67
+ people.list,
68
+ people.total,
69
+ showDeceasedPeople
56
70
  ]);
57
71
  const displayShowAllButton = !showAll && !filterQuery && people.total > MAX_INIITAL_ITEMS;
58
72
  return /*#__PURE__*/ jsxs("div", {
@@ -63,6 +77,12 @@ const RolePickerPeopleList = ({ people, filterQuery })=>{
63
77
  id: 'otherPeopleHeadingId',
64
78
  children: filterQuery ? `${visibleItems.length} ${t('rolepicker.PeopleHits')}` : t('rolepicker.PeopleHeading')
65
79
  }),
80
+ people.list.some((person)=>person.isDeleted) ? /*#__PURE__*/ jsx(Checkbox, {
81
+ className: styles.showDeceasedChecbox,
82
+ checked: showDeceasedPeople,
83
+ onChange: (e)=>setShowDeceasedPeople(e.target.checked),
84
+ children: t('rolepicker.ShowDeceasedPersons')
85
+ }) : null,
66
86
  /*#__PURE__*/ jsx("nav", {
67
87
  ref: navRef,
68
88
  "aria-labelledby": 'otherPeopleHeadingId',
@@ -72,7 +92,7 @@ const RolePickerPeopleList = ({ people, filterQuery })=>{
72
92
  return /*#__PURE__*/ jsx("li", {
73
93
  children: /*#__PURE__*/ jsx(RolePickerRow, {
74
94
  id: item.personId,
75
- title: item.name,
95
+ title: `${item.name}${item.isDeleted ? ` (${t('rolepicker.Deceased')})` : ''}`,
76
96
  description: `${t('rolepicker.PeopleDescriptionPrefix')} ${item.personId}`,
77
97
  svgPath: PersonSVGpath,
78
98
  onClick: ()=>handleEntityClicked(item)
@@ -86,7 +106,7 @@ const RolePickerPeopleList = ({ people, filterQuery })=>{
86
106
  children: /*#__PURE__*/ jsx(Button, {
87
107
  variant: 'tertiary',
88
108
  onClick: handleShowAll,
89
- children: `${t('rolepicker.ShowAll')} ${t('rolepicker.People')} (${people.total})`
109
+ children: `${t('rolepicker.ShowAll')} ${t('rolepicker.People')} (${getShowAllCount()})`
90
110
  })
91
111
  }) : null
92
112
  ]
@@ -1 +1 @@
1
- .RolePickerPeopleList-module_peopleList__dEumR{display:flex;flex-direction:column;gap:var(--spacing-s);list-style-type:none;padding:0}.RolePickerPeopleList-module_showAllButtonWrapper__-ErxO{margin-top:var(--spacing-xs);text-align:right}
1
+ .RolePickerPeopleList-module_peopleList__dEumR{display:flex;flex-direction:column;gap:var(--spacing-s);list-style-type:none;padding:0}.RolePickerPeopleList-module_showDeceasedChecbox__4SCg3{margin-top:var(--spacing-s)}.RolePickerPeopleList-module_showAllButtonWrapper__-ErxO{margin-top:var(--spacing-xs);text-align:right}
package/index.esm.js CHANGED
@@ -1,7 +1,7 @@
1
1
  export { Modal, getModalDismissOnEscDefault, getModalDismissOnOutsideClickDefault, getModalPaddingDefault, getModalVariantDefault } from './Modal/index.esm.js';
2
2
  export { Popover } from './Popover/index.esm.js';
3
3
  import { colorNamesArr } from '@skatteetaten/ds-core-utils';
4
- export { RolePicker, getRolePickerHideCloseButtonDefault, getRolePickerShowInactiveBusinessesDefault, getRolePickerShowSubunitsDefault } from './RolePicker/index.esm.js';
4
+ export { RolePicker, getRolePickerHideCloseButtonDefault, getRolePickerShowDeceasedPeopleDefault, getRolePickerShowInactiveBusinessesDefault, getRolePickerShowSubunitsDefault } from './RolePicker/index.esm.js';
5
5
  export { g as getPopoverColorDefault, a as getPopoverPositionDefault, b as getPopoverRestoreFocusDefault } from './PopoverContent.esm.js';
6
6
  import 'react/jsx-runtime';
7
7
  import 'react';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@skatteetaten/ds-overlays",
3
3
  "groupId": "no.skatteetaten.aurora",
4
- "version": "1.5.0",
4
+ "version": "1.6.0",
5
5
  "main": "./index.esm.js",
6
6
  "type": "module",
7
7
  "module": "./index.esm.js",
@@ -16,16 +16,16 @@
16
16
  "i18next": "^23",
17
17
  "react": "^18",
18
18
  "react-i18next": "^14",
19
- "@skatteetaten/ds-core-utils": "1.5.0",
20
- "@skatteetaten/ds-buttons": "1.5.0",
21
- "@skatteetaten/ds-forms": "1.5.0",
22
- "@skatteetaten/ds-icons": "1.5.0",
23
- "@skatteetaten/ds-navigation": "1.5.0",
24
- "@skatteetaten/ds-typography": "1.5.0",
25
- "@skatteetaten/ds-progress": "1.5.0",
26
- "@skatteetaten/ds-status": "1.5.0",
27
- "@floating-ui/react": "0.26.28",
28
- "date-fns": "^3"
19
+ "@skatteetaten/ds-core-utils": "1.6.0",
20
+ "@skatteetaten/ds-buttons": "1.6.0",
21
+ "@skatteetaten/ds-forms": "1.6.0",
22
+ "@skatteetaten/ds-icons": "1.6.0",
23
+ "@skatteetaten/ds-navigation": "1.6.0",
24
+ "@skatteetaten/ds-typography": "1.6.0",
25
+ "@skatteetaten/ds-progress": "1.6.0",
26
+ "@skatteetaten/ds-status": "1.6.0",
27
+ "date-fns": "^3",
28
+ "@floating-ui/react": "0.26.28"
29
29
  },
30
30
  "dependencies": {},
31
31
  "scripts": {}
@@ -12,7 +12,12 @@ export interface ModalProps extends BaseProps {
12
12
  };
13
13
  /** Innhold */
14
14
  children: ReactNode;
15
- /** Definerer stilen til Modal */
15
+ /**
16
+ * Definerer stilen til Modal.
17
+ *
18
+ * **Deprecated:** Variant 'important' skal fases ut i neste major versjon.
19
+ * Bruk 'outline' i stedet.
20
+ */
16
21
  variant?: ModalVariant;
17
22
  /** Padding rundt Modal */
18
23
  padding?: ModalPadding;
@@ -34,7 +39,7 @@ export interface ModalProps extends BaseProps {
34
39
  renderIcon?: () => ReactElement<IconProps>;
35
40
  /**
36
41
  * Modal i shadowndom.
37
- * Deprecated: Prop skal fjernes ved lansering av neste major versjon.
42
+ * @deprecated Prop skal fjernes ved lansering av neste major versjon.
38
43
  */
39
44
  shadowRootNode?: Document | ShadowRoot;
40
45
  /** Callback når modalen lukkes */
@@ -1,4 +1,4 @@
1
- import { getRolePickerHideCloseButtonDefault, getRolePickerShowInactiveBusinessesDefault, getRolePickerShowSubunitsDefault } from './defaults';
1
+ import { getRolePickerHideCloseButtonDefault, getRolePickerShowDeceasedPeopleDefault, getRolePickerShowInactiveBusinessesDefault, getRolePickerShowSubunitsDefault } from './defaults';
2
2
  import { RolePickerProps } from './RolePicker.types';
3
3
  export declare const RolePicker: import("react").ForwardRefExoticComponent<RolePickerProps & import("react").RefAttributes<HTMLDialogElement>>;
4
- export { getRolePickerHideCloseButtonDefault, getRolePickerShowInactiveBusinessesDefault, getRolePickerShowSubunitsDefault, };
4
+ export { getRolePickerHideCloseButtonDefault, getRolePickerShowInactiveBusinessesDefault, getRolePickerShowSubunitsDefault, getRolePickerShowDeceasedPeopleDefault, };
@@ -31,10 +31,12 @@ export interface RolePickerProps extends BaseProps, Partial<Pick<ModalProps, 'di
31
31
  people?: Paginated<Person>;
32
32
  /** En paginert liste over virksomheter. */
33
33
  businesses?: Paginated<Business>;
34
- /** Om avviklede virksomheter skal vises. */
34
+ /** Om avviklede virksomheter skal vises som standard når rollevelger åpnes. */
35
35
  showInactiveBusinesses?: boolean;
36
- /** Om underenheter av virksomheter skal vises. */
36
+ /** Om underenheter av virksomheter skal vises som standard når rollevelger åpnes. */
37
37
  showSubunits?: boolean;
38
+ /** Om avdøde personer skal vises som standard når rollevelger åpnes. */
39
+ showDeceasedPeople?: boolean;
38
40
  /** Tilbakekallingsfunksjon for å håndtere valg av virksomhet/person. */
39
41
  onEntitySelect?: OnEntitySelectHandler;
40
42
  /** Tilbakekallingsfunksjon for å håndtere utlogging. */
@@ -1,3 +1,4 @@
1
1
  export declare const getRolePickerHideCloseButtonDefault: () => boolean;
2
2
  export declare const getRolePickerShowSubunitsDefault: () => boolean;
3
3
  export declare const getRolePickerShowInactiveBusinessesDefault: () => boolean;
4
+ export declare const getRolePickerShowDeceasedPeopleDefault: () => boolean;
@@ -1,2 +1,2 @@
1
1
  import { RolePickerPeopleListProps } from './RolePickerPeopleList.types';
2
- export declare const RolePickerPeopleList: ({ people, filterQuery, }: RolePickerPeopleListProps) => JSX.Element | null;
2
+ export declare const RolePickerPeopleList: ({ people, filterQuery, showDeceasedPeople: showDeceasedPeopleExternal, }: RolePickerPeopleListProps) => JSX.Element | null;
@@ -2,4 +2,5 @@ import { Paginated, Person } from '../RolePicker/RolePicker.types';
2
2
  export type RolePickerPeopleListProps = {
3
3
  filterQuery?: string;
4
4
  people: Paginated<Person>;
5
+ showDeceasedPeople: boolean;
5
6
  };