@pega/cosmos-react-core 9.0.0-build.25.0 → 9.0.0-build.25.2

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.
Files changed (38) hide show
  1. package/lib/components/Actions/Actions.d.ts.map +1 -1
  2. package/lib/components/Actions/Actions.js +2 -2
  3. package/lib/components/Actions/Actions.js.map +1 -1
  4. package/lib/components/File/FileItem.d.ts.map +1 -1
  5. package/lib/components/File/FileItem.js +7 -4
  6. package/lib/components/File/FileItem.js.map +1 -1
  7. package/lib/components/Lightbox/Lightbox.d.ts.map +1 -1
  8. package/lib/components/Lightbox/Lightbox.js +10 -7
  9. package/lib/components/Lightbox/Lightbox.js.map +1 -1
  10. package/lib/components/Lightbox/Lightbox.types.d.ts +2 -0
  11. package/lib/components/Lightbox/Lightbox.types.d.ts.map +1 -1
  12. package/lib/components/Lightbox/Lightbox.types.js.map +1 -1
  13. package/lib/components/ListToolbar/ListToolbar.d.ts.map +1 -1
  14. package/lib/components/ListToolbar/ListToolbar.js +3 -1
  15. package/lib/components/ListToolbar/ListToolbar.js.map +1 -1
  16. package/lib/components/ListToolbar/ListToolbar.types.d.ts +2 -0
  17. package/lib/components/ListToolbar/ListToolbar.types.d.ts.map +1 -1
  18. package/lib/components/ListToolbar/ListToolbar.types.js.map +1 -1
  19. package/lib/components/SummaryList/SummaryList.d.ts +9 -3
  20. package/lib/components/SummaryList/SummaryList.d.ts.map +1 -1
  21. package/lib/components/SummaryList/SummaryList.js +51 -6
  22. package/lib/components/SummaryList/SummaryList.js.map +1 -1
  23. package/lib/components/SummaryList/ViewAll.d.ts +7 -1
  24. package/lib/components/SummaryList/ViewAll.d.ts.map +1 -1
  25. package/lib/components/SummaryList/ViewAll.js +22 -3
  26. package/lib/components/SummaryList/ViewAll.js.map +1 -1
  27. package/lib/components/SummaryList/index.d.ts +1 -0
  28. package/lib/components/SummaryList/index.d.ts.map +1 -1
  29. package/lib/components/SummaryList/index.js.map +1 -1
  30. package/lib/hooks/useI18n.d.ts +25 -0
  31. package/lib/hooks/useI18n.d.ts.map +1 -1
  32. package/lib/i18n/default.d.ts +25 -0
  33. package/lib/i18n/default.d.ts.map +1 -1
  34. package/lib/i18n/default.js +27 -1
  35. package/lib/i18n/default.js.map +1 -1
  36. package/lib/i18n/i18n.d.ts +25 -0
  37. package/lib/i18n/i18n.d.ts.map +1 -1
  38. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Actions.d.ts","sourceRoot":"","sources":["../../../src/components/Actions/Actions.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAc,cAAc,EAAE,MAAM,aAAa,CAAC;AAEtF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAG7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGzC,MAAM,MAAM,YAAY,GAAG,cAAc,CACvC,QAAQ,EACR,cAAc,GACZ,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,UAAU,CAAC,GACzC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG;IAC5B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE;QAChB,OAAO,CAAC,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;QACrC,SAAS,CAAC,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC;KAC1C,CAAC;IACF,oBAAoB;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qBAAqB;IACrB,OAAO,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;CAClC,CACJ,CAAC;;AAEF,wBAsGG"}
1
+ {"version":3,"file":"Actions.d.ts","sourceRoot":"","sources":["../../../src/components/Actions/Actions.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAc,cAAc,EAAE,MAAM,aAAa,CAAC;AAEtF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAG7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGzC,MAAM,MAAM,YAAY,GAAG,cAAc,CACvC,QAAQ,EACR,cAAc,GACZ,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,UAAU,CAAC,GACzC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG;IAC5B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE;QAChB,OAAO,CAAC,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;QACrC,SAAS,CAAC,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC;KAC1C,CAAC;IACF,oBAAoB;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qBAAqB;IACrB,OAAO,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;CAClC,CACJ,CAAC;;AAEF,wBAuGG"}
@@ -50,8 +50,8 @@ export default forwardRef(function Actions({
50
50
  : undefined
51
51
  })),
52
52
  loading: progress
53
- } })) : (_jsx(_Fragment, { children: items.map(({ id, icon, text, onClick, ...restProps }) => {
54
- return (_createElement(Button, { ...(dataTestId ? { 'data-testid': dataTestId } : {}), key: id, variant: icon && iconOnly ? 'simple' : undefined, onClick: (event) => onClick?.(id, event), label: icon ? text : undefined, icon: !!icon && iconOnly, compact: compact, "aria-label": contextualLabel ? `${text} - ${contextualLabel}` : text, disabled: disabled, ...restProps }, icon && iconOnly ? _jsx(Icon, { name: icon }) : text));
53
+ } })) : (_jsx(_Fragment, { children: items.map(({ id, icon, text, onClick, ...restProps }, index) => {
54
+ return (_createElement(Button, { ...(dataTestId ? { 'data-testid': dataTestId } : {}), ref: index === 0 ? menuButtonRef : undefined, key: id, variant: icon && iconOnly ? 'simple' : undefined, onClick: (event) => onClick?.(id, event), label: icon ? text : undefined, icon: !!icon && iconOnly, compact: compact, "aria-label": contextualLabel ? `${text} - ${contextualLabel}` : text, disabled: disabled, ...restProps }, icon && iconOnly ? _jsx(Icon, { name: icon }) : text));
55
55
  }) }));
56
56
  });
57
57
  //# sourceMappingURL=Actions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Actions.js","sourceRoot":"","sources":["../../../src/components/Actions/Actions.tsx"],"names":[],"mappings":"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","sourcesContent":["import { forwardRef, useRef, useState } from 'react';\nimport type { PropsWithoutRef, MouseEvent, ChangeEvent, FocusEvent } from 'react';\n\nimport { useConsolidatedRef, useI18n, useUID } from '../../hooks';\nimport type { Action, NoChildrenProp, RefElement, WithAttributes } from '../../types';\nimport Button from '../Button';\nimport type { ButtonProps } from '../Button';\nimport Icon from '../Icon';\nimport MenuButton from '../MenuButton';\nimport type { MenuButtonProps } from '../MenuButton';\nimport type { MenuProps } from '../Menu';\nimport { createStringMatcher, isInstance } from '../../utils';\n\nexport type ActionsProps = WithAttributes<\n 'button',\n NoChildrenProp &\n Pick<ButtonProps, 'compact' | 'disabled'> &\n Pick<MenuProps, 'scrollAt'> & {\n items: Action[];\n contextualLabel?: string;\n /** @default 2 */\n menuAt?: number;\n filterAt?: number;\n progress?: boolean;\n menuButtonProps?: {\n onClick?: MenuButtonProps['onClick'];\n onKeyDown?: MenuButtonProps['onKeyDown'];\n };\n /** @default true */\n iconOnly?: boolean;\n /** @default false */\n compact?: ButtonProps['compact'];\n }\n>;\n\nexport default forwardRef<RefElement<ActionsProps>, PropsWithoutRef<ActionsProps>>(function Actions(\n {\n // @ts-expect-error\n 'data-testid': dataTestId,\n items,\n menuAt = 2,\n filterAt,\n scrollAt,\n progress,\n iconOnly = true,\n menuButtonProps,\n contextualLabel,\n compact = false,\n disabled = false,\n tabIndex\n },\n ref\n) {\n const t = useI18n();\n const menuRef = useRef<HTMLDivElement>(null);\n const menuButtonRef = useConsolidatedRef(ref);\n const filterElRef = useConsolidatedRef<HTMLInputElement>(null);\n const filterListId = useUID();\n const [filterValue, setFilterValue] = useState('');\n\n if (!items) {\n return null;\n }\n\n const renderFilter = typeof filterAt === 'number' && items.length >= filterAt;\n const filterRegex = createStringMatcher(filterValue, 'contains');\n const itemsToRender = renderFilter ? items.filter(item => filterRegex.test(item.text)) : items;\n\n const onBlur = (e: FocusEvent) => {\n if (isInstance(e.relatedTarget, Node) && menuRef.current?.contains(e.relatedTarget)) {\n return;\n }\n setFilterValue('');\n };\n\n const filterInputProps = renderFilter\n ? {\n value: filterValue,\n ref: filterElRef,\n onChange: (e: ChangeEvent<HTMLInputElement>) => setFilterValue?.(e.target.value),\n onBlur\n }\n : undefined;\n\n return items.length >= menuAt ? (\n <MenuButton\n {...(dataTestId ? { 'data-testid': dataTestId } : {})}\n ref={menuButtonRef}\n text={t('actions')}\n aria-label={contextualLabel && t('actions_for', [contextualLabel])}\n iconOnly\n icon='more'\n variant='simple'\n compact={compact}\n onClick={menuButtonProps?.onClick}\n onKeyDown={menuButtonProps?.onKeyDown}\n disabled={disabled}\n tabIndex={tabIndex}\n menu={{\n scrollAt,\n filterInputProps: progress ? undefined : filterInputProps,\n listId: filterListId,\n items: itemsToRender.map(({ text, onClick, ...restProps }) => ({\n ...restProps,\n primary: text,\n onClick: onClick\n ? (id, e) => {\n onClick(id, e, menuButtonRef.current ?? undefined);\n menuButtonRef.current?.focus();\n }\n : undefined\n })),\n loading: progress\n }}\n />\n ) : (\n <>\n {items.map(({ id, icon, text, onClick, ...restProps }) => {\n return (\n <Button\n {...(dataTestId ? { 'data-testid': dataTestId } : {})}\n key={id}\n variant={icon && iconOnly ? 'simple' : undefined}\n onClick={(event: MouseEvent<HTMLButtonElement>) => onClick?.(id, event)}\n label={icon ? text : undefined}\n icon={!!icon && iconOnly}\n compact={compact}\n aria-label={contextualLabel ? `${text} - ${contextualLabel}` : text}\n disabled={disabled}\n {...restProps}\n >\n {icon && iconOnly ? <Icon name={icon} /> : text}\n </Button>\n );\n })}\n </>\n );\n});\n"]}
1
+ {"version":3,"file":"Actions.js","sourceRoot":"","sources":["../../../src/components/Actions/Actions.tsx"],"names":[],"mappings":"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","sourcesContent":["import { forwardRef, useRef, useState } from 'react';\nimport type { PropsWithoutRef, MouseEvent, ChangeEvent, FocusEvent } from 'react';\n\nimport { useConsolidatedRef, useI18n, useUID } from '../../hooks';\nimport type { Action, NoChildrenProp, RefElement, WithAttributes } from '../../types';\nimport Button from '../Button';\nimport type { ButtonProps } from '../Button';\nimport Icon from '../Icon';\nimport MenuButton from '../MenuButton';\nimport type { MenuButtonProps } from '../MenuButton';\nimport type { MenuProps } from '../Menu';\nimport { createStringMatcher, isInstance } from '../../utils';\n\nexport type ActionsProps = WithAttributes<\n 'button',\n NoChildrenProp &\n Pick<ButtonProps, 'compact' | 'disabled'> &\n Pick<MenuProps, 'scrollAt'> & {\n items: Action[];\n contextualLabel?: string;\n /** @default 2 */\n menuAt?: number;\n filterAt?: number;\n progress?: boolean;\n menuButtonProps?: {\n onClick?: MenuButtonProps['onClick'];\n onKeyDown?: MenuButtonProps['onKeyDown'];\n };\n /** @default true */\n iconOnly?: boolean;\n /** @default false */\n compact?: ButtonProps['compact'];\n }\n>;\n\nexport default forwardRef<RefElement<ActionsProps>, PropsWithoutRef<ActionsProps>>(function Actions(\n {\n // @ts-expect-error\n 'data-testid': dataTestId,\n items,\n menuAt = 2,\n filterAt,\n scrollAt,\n progress,\n iconOnly = true,\n menuButtonProps,\n contextualLabel,\n compact = false,\n disabled = false,\n tabIndex\n },\n ref\n) {\n const t = useI18n();\n const menuRef = useRef<HTMLDivElement>(null);\n const menuButtonRef = useConsolidatedRef(ref);\n const filterElRef = useConsolidatedRef<HTMLInputElement>(null);\n const filterListId = useUID();\n const [filterValue, setFilterValue] = useState('');\n\n if (!items) {\n return null;\n }\n\n const renderFilter = typeof filterAt === 'number' && items.length >= filterAt;\n const filterRegex = createStringMatcher(filterValue, 'contains');\n const itemsToRender = renderFilter ? items.filter(item => filterRegex.test(item.text)) : items;\n\n const onBlur = (e: FocusEvent) => {\n if (isInstance(e.relatedTarget, Node) && menuRef.current?.contains(e.relatedTarget)) {\n return;\n }\n setFilterValue('');\n };\n\n const filterInputProps = renderFilter\n ? {\n value: filterValue,\n ref: filterElRef,\n onChange: (e: ChangeEvent<HTMLInputElement>) => setFilterValue?.(e.target.value),\n onBlur\n }\n : undefined;\n\n return items.length >= menuAt ? (\n <MenuButton\n {...(dataTestId ? { 'data-testid': dataTestId } : {})}\n ref={menuButtonRef}\n text={t('actions')}\n aria-label={contextualLabel && t('actions_for', [contextualLabel])}\n iconOnly\n icon='more'\n variant='simple'\n compact={compact}\n onClick={menuButtonProps?.onClick}\n onKeyDown={menuButtonProps?.onKeyDown}\n disabled={disabled}\n tabIndex={tabIndex}\n menu={{\n scrollAt,\n filterInputProps: progress ? undefined : filterInputProps,\n listId: filterListId,\n items: itemsToRender.map(({ text, onClick, ...restProps }) => ({\n ...restProps,\n primary: text,\n onClick: onClick\n ? (id, e) => {\n onClick(id, e, menuButtonRef.current ?? undefined);\n menuButtonRef.current?.focus();\n }\n : undefined\n })),\n loading: progress\n }}\n />\n ) : (\n <>\n {items.map(({ id, icon, text, onClick, ...restProps }, index) => {\n return (\n <Button\n {...(dataTestId ? { 'data-testid': dataTestId } : {})}\n ref={index === 0 ? menuButtonRef : undefined}\n key={id}\n variant={icon && iconOnly ? 'simple' : undefined}\n onClick={(event: MouseEvent<HTMLButtonElement>) => onClick?.(id, event)}\n label={icon ? text : undefined}\n icon={!!icon && iconOnly}\n compact={compact}\n aria-label={contextualLabel ? `${text} - ${contextualLabel}` : text}\n disabled={disabled}\n {...restProps}\n >\n {icon && iconOnly ? <Icon name={icon} /> : text}\n </Button>\n );\n })}\n </>\n );\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"FileItem.d.ts","sourceRoot":"","sources":["../../../src/components/File/FileItem.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAmB,GAAG,EAAuC,MAAM,OAAO,CAAC;AAYvF,OAAO,KAAK,EAAE,+BAA+B,EAAE,SAAS,EAAU,MAAM,aAAa,CAAC;AAwBtF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAIpD,MAAM,WAAW,aAAc,SAAQ,SAAS;IAC9C,0BAA0B;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,oIAAoI;IACpI,SAAS,CAAC,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC;IACzC,yCAAyC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8IAA8I;IAC9I,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IAC7C,yGAAyG;IACzG,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IAC3C,6IAA6I;IAC7I,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IAC9C,8HAA8H;IAC9H,qBAAqB,CAAC,EAAE,CAAC,EAAE,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IAC1D;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,0IAA0I;IAC1I,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IAC/C,yGAAyG;IACzG,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IAC7C,yGAAyG;IACzG,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IAC3C,gIAAgI;IAChI,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oGAAoG;IACpG,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oCAAoC;IACpC,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;CAC3B;AAgBD,eAAO,MAAM,kBAAkB;;2IAE9B,CAAC;AAEF,eAAO,MAAM,eAAe;;uIAE3B,CAAC;AAyBF,eAAO,MAAM,cAAc;iBACZ,aAAa,CAAC,SAAS,CAAC;iBACxB,aAAa,CAAC,UAAU,CAAC;YA2EvC,CAAC;AAIF,QAAA,MAAM,QAAQ,EAAE,+BAA+B,CAAC,aAAa,CA8P3D,CAAC;AAEH,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"FileItem.d.ts","sourceRoot":"","sources":["../../../src/components/File/FileItem.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAmB,GAAG,EAAuC,MAAM,OAAO,CAAC;AAYvF,OAAO,KAAK,EAAE,+BAA+B,EAAE,SAAS,EAAU,MAAM,aAAa,CAAC;AAyBtF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAIpD,MAAM,WAAW,aAAc,SAAQ,SAAS;IAC9C,0BAA0B;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,oIAAoI;IACpI,SAAS,CAAC,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC;IACzC,yCAAyC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8IAA8I;IAC9I,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IAC7C,yGAAyG;IACzG,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IAC3C,6IAA6I;IAC7I,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IAC9C,8HAA8H;IAC9H,qBAAqB,CAAC,EAAE,CAAC,EAAE,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IAC1D;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,0IAA0I;IAC1I,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IAC/C,yGAAyG;IACzG,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IAC7C,yGAAyG;IACzG,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IAC3C,gIAAgI;IAChI,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oGAAoG;IACpG,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oCAAoC;IACpC,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;CAC3B;AAgBD,eAAO,MAAM,kBAAkB;;2IAE9B,CAAC;AAEF,eAAO,MAAM,eAAe;;uIAE3B,CAAC;AAyBF,eAAO,MAAM,cAAc;iBACZ,aAAa,CAAC,SAAS,CAAC;iBACxB,aAAa,CAAC,UAAU,CAAC;YA2EvC,CAAC;AAIF,QAAA,MAAM,QAAQ,EAAE,+BAA+B,CAAC,aAAa,CAiQ3D,CAAC;AAEH,eAAe,QAAQ,CAAC"}
@@ -12,7 +12,7 @@ import Text, { StyledText } from '../Text';
12
12
  import Tooltip from '../Tooltip';
13
13
  import { defaultThemeProp } from '../../theme';
14
14
  import Button, { StyledButton } from '../Button';
15
- import { useI18n, useElement, useConfiguration, useConsolidatedRef, usePreviewContext } from '../../hooks';
15
+ import { useI18n, useElement, useConfiguration, useConsolidatedRef, usePreviewContext, useModalContext } from '../../hooks';
16
16
  import Actions from '../Actions';
17
17
  import Progress from '../Progress';
18
18
  import { StyledProgressRing } from '../Progress/Progress.styles';
@@ -125,6 +125,7 @@ const FileItem = forwardRef(function FileItem(props, ref) {
125
125
  const [popover, setPopover] = useState(false);
126
126
  const [previewPopover, setPreviewPopover] = useState(false);
127
127
  const { locale } = useConfiguration();
128
+ const { initialized: inModal } = useModalContext();
128
129
  const { previewTriggerRef } = usePreviewContext();
129
130
  const t = useI18n();
130
131
  const uploading = typeof progress === 'number' && progress < 100;
@@ -190,17 +191,19 @@ const FileItem = forwardRef(function FileItem(props, ref) {
190
191
  alignItems: 'center',
191
192
  justify: 'start',
192
193
  gap: 1
193
- }, isDisabled: disabled, compactMode: compact, ref: itemRef, children: [visual, !previewFromActions && (onPreviewPopoverClick || onPreview) && !(error || uploading) ? (_jsxs(Button, { ...restProps, as: StyledPreviewTitle, variant: 'link', ref: setTextTarget, onClick: () => {
194
+ }, isDisabled: disabled, compactMode: compact, ref: itemRef, children: [visual, !previewFromActions &&
195
+ ((!inModal && onPreviewPopoverClick) || onPreview) &&
196
+ !(error || uploading) ? (_jsxs(Button, { ...restProps, as: StyledPreviewTitle, variant: 'link', ref: setTextTarget, onClick: () => {
194
197
  onPreview?.(id);
195
198
  }, onKeyDown: (e) => {
196
199
  if (e.getModifierState('Alt') && e.code === 'KeyP') {
197
200
  previewTriggerRef.current = e.currentTarget;
198
201
  onPreviewPopoverClick?.(id);
199
202
  }
200
- }, onMouseEnter: onPreviewPopoverClick ? () => setPopover(true) : undefined, onMouseLeave: onPreviewPopoverClick ? () => setPopover(false) : undefined, onFocus: onPreviewPopoverClick ? () => setPreviewPopover(true) : undefined, onBlur: onPreviewPopoverClick ? () => setPreviewPopover(false) : undefined, "aria-label": t('preview_file', [name]), disabled: disabled, children: [name, format === 'url' && _jsx(Icon, { name: 'open' })] })) : (_jsx(Text, { ...restProps, as: StyledTextTitle, ref: setTextTarget, children: name })), metaMessage && (_jsxs(_Fragment, { children: [_jsx(Text, { as: StyledMeta, variant: 'secondary', error: error && !uploading, ref: setMetaTarget, children: metaMessage }), metaTarget && (_jsx(Tooltip, { target: metaTarget, describeTarget: false, smart: true, children: metaMessage }))] })), (error || uploading) && onCancel && (_jsx(StyledActionsWrapper, { meta: !!metaMessage, children: _jsx(Button, { label: t('cancel'), "aria-label": `${t('cancel')} - ${contextualLabel}`, variant: 'simple', compact: true, icon: true, onClick: () => onCancel(id), children: _jsx(Icon, { name: 'times' }) }) })), !(error || uploading) && !!definedActions.length && (_jsx(StyledActionsWrapper, { meta: !!metaMessage, children: _jsx(Actions, { items: definedActions, compact: true, iconOnly: true, contextualLabel: name, disabled: disabled }) })), textTarget && !onPreviewPopoverClick && (_jsx(Tooltip, { target: textTarget, smart: true, describeTarget: false, children: name })), onPreviewPopoverClick && !previewFromActions && (_jsx(Popover, { as: StyledLinkPopover, show: popover, placement: 'top', groupId: 'tooltip', showDelay: 'short', target: textTarget, onMouseEnter: () => setPopover(true), onMouseLeave: () => setPopover(false), arrow: true, portal: true, children: _jsx(StyledLinkPreviewPopoverBtn, { type: 'button', onClick: () => {
203
+ }, onMouseEnter: onPreviewPopoverClick ? () => setPopover(true) : undefined, onMouseLeave: onPreviewPopoverClick ? () => setPopover(false) : undefined, onFocus: onPreviewPopoverClick ? () => setPreviewPopover(true) : undefined, onBlur: onPreviewPopoverClick ? () => setPreviewPopover(false) : undefined, "aria-label": t('preview_file', [name]), disabled: disabled, children: [name, format === 'url' && _jsx(Icon, { name: 'open' })] })) : (_jsx(Text, { ...restProps, as: StyledTextTitle, ref: setTextTarget, children: name })), metaMessage && (_jsxs(_Fragment, { children: [_jsx(Text, { as: StyledMeta, variant: 'secondary', error: error && !uploading, ref: setMetaTarget, children: metaMessage }), metaTarget && (_jsx(Tooltip, { target: metaTarget, describeTarget: false, smart: true, children: metaMessage }))] })), (error || uploading) && onCancel && (_jsx(StyledActionsWrapper, { meta: !!metaMessage, children: _jsx(Button, { label: t('cancel'), "aria-label": `${t('cancel')} - ${contextualLabel}`, variant: 'simple', compact: true, icon: true, onClick: () => onCancel(id), children: _jsx(Icon, { name: 'times' }) }) })), !(error || uploading) && !!definedActions.length && (_jsx(StyledActionsWrapper, { meta: !!metaMessage, children: _jsx(Actions, { items: definedActions, compact: true, iconOnly: true, contextualLabel: name, disabled: disabled }) })), textTarget && !onPreviewPopoverClick && (_jsx(Tooltip, { target: textTarget, smart: true, describeTarget: false, children: name })), onPreviewPopoverClick && !inModal && !previewFromActions && (_jsx(Popover, { as: StyledLinkPopover, show: popover, placement: 'top', groupId: 'tooltip', showDelay: 'short', target: textTarget, onMouseEnter: () => setPopover(true), onMouseLeave: () => setPopover(false), arrow: true, portal: true, children: _jsx(StyledLinkPreviewPopoverBtn, { type: 'button', onClick: () => {
201
204
  previewTriggerRef.current = textTarget;
202
205
  onPreviewPopoverClick?.(id);
203
- }, tabIndex: -1, children: _jsx("div", { children: _jsx("span", { children: t('preview') }) }) }) })), onPreviewPopoverClick && !previewFromActions && (_jsx(Popover, { as: StyledLinkPopover, show: previewPopover, placement: 'top', groupId: 'tooltip', showDelay: 'short', target: textTarget, arrow: true, portal: true, children: _jsx(StyledLinkPreviewPopoverBtn, { type: 'button', onClick: () => {
206
+ }, tabIndex: -1, children: _jsx("div", { children: _jsx("span", { children: t('preview') }) }) }) })), onPreviewPopoverClick && !inModal && !previewFromActions && (_jsx(Popover, { as: StyledLinkPopover, show: previewPopover, placement: 'top', groupId: 'tooltip', showDelay: 'short', target: textTarget, arrow: true, portal: true, children: _jsx(StyledLinkPreviewPopoverBtn, { type: 'button', onClick: () => {
204
207
  previewTriggerRef.current = textTarget;
205
208
  onPreviewPopoverClick?.(id);
206
209
  }, tabIndex: -1, children: _jsxs("div", { children: [_jsx("span", { children: t('preview') }), _jsxs(Flex, { container: { inline: true, justify: 'end' }, children: [_jsx(Keyboard, { keyName: 'Alt' }), _jsx(Keyboard, { keyName: 'P' })] })] }) }) }))] }));
@@ -1 +1 @@
1
- {"version":3,"file":"FileItem.js","sourceRoot":"","sources":["../../../src/components/File/FileItem.tsx"],"names":[],"mappings":"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","sourcesContent":["import { forwardRef, useEffect, useState } from 'react';\nimport type { PropsWithoutRef, Ref, KeyboardEvent as ReactKeyboardEvent } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport Icon, { registerIcon } from '../Icon';\nimport * as openIcon from '../Icon/icons/open.icon';\nimport * as timesIcon from '../Icon/icons/times.icon';\nimport * as previewIcon from '../Icon/icons/preview.icon';\nimport * as editIcon from '../Icon/icons/pencil.icon';\nimport * as downloadIcon from '../Icon/icons/download.icon';\nimport * as deleteIcon from '../Icon/icons/trash.icon';\nimport Text, { StyledText } from '../Text';\nimport Tooltip from '../Tooltip';\nimport type { ForwardRefForwardPropsComponent, BaseProps, Action } from '../../types';\nimport { defaultThemeProp } from '../../theme';\nimport Button, { StyledButton } from '../Button';\nimport {\n useI18n,\n useElement,\n useConfiguration,\n useConsolidatedRef,\n usePreviewContext\n} from '../../hooks';\nimport Actions from '../Actions';\nimport Progress from '../Progress';\nimport { StyledProgressRing } from '../Progress/Progress.styles';\nimport { formatNumber } from '../Number';\nimport Flex from '../Flex';\nimport { StyledIconShape } from '../Icon/Icon';\nimport { getActiveElement, getFocusables } from '../../utils';\nimport { ellipsisOverflow } from '../../styles/mixins';\nimport { StyledLinkPopover, StyledLinkPreviewPopoverBtn } from '../Link/Link';\nimport Popover from '../Popover';\nimport { Keyboard } from '../Badges';\n\nimport { getKindFromMimeType, getMimeTypeFromFile } from './utils';\nimport FileVisual, { StyledFileVisual } from './FileVisual';\nimport type { FileVisualProps } from './FileVisual';\n\nregisterIcon(openIcon, timesIcon, previewIcon, editIcon, downloadIcon, deleteIcon);\n\nexport interface FileItemProps extends BaseProps {\n /** Unique id for item. */\n id: string;\n /** Name of the file. */\n name: string;\n /** A string to be used as an image src for a attachment thumbnail. Falls back to a provided icon or the default attachment icon. */\n thumbnail?: FileVisualProps['thumbnail'];\n /** File extension. Use 'url' for link */\n format?: string;\n /**\n * Used for a smaller sized FileItem.\n * @default false\n */\n compact?: boolean;\n /** When passed, will render a single icon button for yet to be or in progress uploads. Use this action to trigger xhr request termination. */\n onCancel?: (id: FileItemProps['id']) => void;\n /** When passed, will render a single icon button or within a MenuButton if other actions are defined. */\n onEdit?: (id: FileItemProps['id']) => void;\n /** When passed, the file name will be rendered as a clickable button. Fires on direct click of the name. Passes file id as the parameter. */\n onPreview?: (id: FileItemProps['id']) => void;\n /** When passed, will render a preview tooltip. Will be fired on click of preview tooltip. Passes file id as the parameter. */\n onPreviewPopoverClick?: (id: FileItemProps['id']) => void;\n /**\n * Moves preview option to actions menu.\n * To be used only in compact mode of single file input when rendered in a table\n */\n previewFromActions?: boolean;\n /** When passed, will render a single icon button or within a MenuButton if other actions are defined. Passes file id as the parameter. */\n onDownload?: (id: FileItemProps['id']) => void;\n /** When passed, will render a single icon button or within a MenuButton if other actions are defined. */\n onDelete?: (id: FileItemProps['id']) => void;\n /** When passed, will render a single icon button or within a MenuButton if other actions are defined. */\n onOpen?: (id: FileItemProps['id']) => void;\n /** If the attachment is in an upload state, pass progress as a number between 0-100 representing the percentage of progress. */\n progress?: number;\n /** Set if there is an error uploading the file. Applies error styling to the meta string passed. */\n error?: string;\n /** Setting the disable state */\n disabled?: boolean;\n /** Ref for the wrapping element. */\n ref?: Ref<HTMLDivElement>;\n}\n\nconst StyledErrorIcon = styled(Icon)(({ theme }) => {\n return css`\n color: ${theme.base.palette.urgent};\n margin-inline-start: calc(0.5 * ${theme.base.spacing});\n `;\n});\n\nStyledErrorIcon.defaultProps = defaultThemeProp;\n\nconst titleEllipsisStyle = css`\n flex-shrink: 1;\n ${ellipsisOverflow}\n`;\n\nexport const StyledPreviewTitle = styled(Button)`\n ${titleEllipsisStyle}\n`;\n\nexport const StyledTextTitle = styled(Text)`\n ${titleEllipsisStyle}\n`;\n\nconst StyledMeta = styled(StyledText)<{ error: boolean }>(({ theme, error }) => {\n return css`\n /* min width to show percentage in full */\n min-width: 4ch;\n margin-inline-start: auto;\n ${titleEllipsisStyle}\n ${error &&\n css`\n color: ${theme.base.palette.urgent};\n `}\n `;\n});\n\nStyledMeta.defaultProps = defaultThemeProp;\n\nconst StyledActionsWrapper = styled.div<{ meta: boolean }>(({ meta }) => {\n return css`\n margin-inline-start: ${meta ? 'unset' : 'auto'};\n `;\n});\n\nStyledActionsWrapper.defaultProps = defaultThemeProp;\n\nexport const StyledFileItem = styled.div<{\n compactMode: FileItemProps['compact'];\n isDisabled?: FileItemProps['disabled'];\n}>(\n ({\n theme: {\n base: {\n palette,\n spacing,\n 'hit-area': { compact },\n 'disabled-opacity': disabledOpacity\n },\n components: {\n input,\n 'form-control': {\n ':disabled': {\n 'background-color': disabledBackgroundColor,\n 'border-color': disabledBorderColor\n }\n }\n }\n },\n compactMode,\n isDisabled\n }) => {\n return css`\n border-radius: calc(var(--container-border-radius) * 0.5);\n border: 0.0625rem solid ${palette['border-line']};\n background-color: ${palette['primary-background']};\n height: ${input.height};\n min-width: calc(${input.height} + 12ch + 1.5 * ${spacing} + ${compact});\n\n ${compactMode &&\n css`\n height: ${compact};\n min-width: calc(${compact} + 12ch + 2 * ${spacing});\n width: fit-content;\n max-width: 25ch;\n\n ${StyledPreviewTitle}, ${StyledTextTitle} {\n min-width: 12ch;\n max-width: calc(25ch - (${compact} + 2 * ${spacing}));\n }\n\n ${StyledActionsWrapper} > ${StyledButton} {\n min-height: 100%;\n min-width: 100%;\n margin-block: ${spacing};\n }\n `}\n\n > ${StyledProgressRing} {\n margin-inline-start: calc(0.5 * ${spacing});\n }\n\n > ${StyledFileVisual}, > ${StyledIconShape} {\n border-start-start-radius: inherit;\n border-end-start-radius: inherit;\n border-start-end-radius: 0;\n border-end-end-radius: 0;\n width: ${input.height};\n flex-shrink: 0;\n\n ${compactMode &&\n css`\n height: ${compact};\n width: ${compact};\n `}\n }\n ${isDisabled &&\n css`\n background-color: ${disabledBackgroundColor};\n border-color: ${disabledBorderColor};\n opacity: ${disabledOpacity};\n `}\n `;\n }\n);\n\nStyledFileItem.defaultProps = defaultThemeProp;\n\nconst FileItem: ForwardRefForwardPropsComponent<FileItemProps> = forwardRef(function FileItem(\n props: PropsWithoutRef<FileItemProps>,\n ref: FileItemProps['ref']\n) {\n const {\n id,\n name,\n thumbnail,\n format,\n error,\n onCancel,\n onEdit,\n onPreview,\n onPreviewPopoverClick,\n onDownload,\n onDelete,\n onOpen,\n progress,\n compact = false,\n previewFromActions = false,\n disabled = false,\n ...restProps\n } = props;\n\n const [thumbnailError, setThumbnailError] = useState(false);\n const [textTarget, setTextTarget] = useElement();\n const [metaTarget, setMetaTarget] = useElement();\n const [popover, setPopover] = useState(false);\n const [previewPopover, setPreviewPopover] = useState(false);\n const { locale } = useConfiguration();\n const { previewTriggerRef } = usePreviewContext();\n const t = useI18n();\n const uploading = typeof progress === 'number' && progress < 100;\n const itemRef = useConsolidatedRef(ref);\n\n const activeElement = getActiveElement();\n const activeElementInItem = itemRef.current?.contains(activeElement);\n\n let metaMessage;\n\n if (uploading) {\n metaMessage = formatNumber(progress, {\n locale,\n options: {\n style: 'unit',\n unit: 'percent',\n maximumFractionDigits: 0\n }\n });\n } else if (error) {\n metaMessage = error;\n }\n\n const definedActions: Action[] = [\n previewFromActions ? { onClick: onPreview, text: t('preview'), icon: 'preview' } : undefined,\n { onClick: onEdit, text: t('edit'), icon: 'pencil' },\n { onClick: onDownload, text: t('download'), icon: 'download' },\n { onClick: onDelete, text: t('delete'), icon: 'trash' },\n { onClick: onOpen, text: t('link_open_in_tab_text'), icon: 'open' }\n ].flatMap(action => {\n if (!action || !action.onClick) return [];\n\n const { text, icon, onClick: onActionClick } = action;\n return [\n {\n id: text,\n text,\n icon,\n onClick: () => onActionClick(id)\n }\n ];\n });\n\n let visual;\n let contextualLabel;\n\n if (uploading) {\n visual = <Progress variant='ring' placement='inline' value={progress} />;\n contextualLabel = t('uploading_file', [name]);\n } else if (error) {\n visual = <StyledErrorIcon name='warn-solid' />;\n contextualLabel = t('upload_failed', [name, error]);\n } else {\n visual = (\n <FileVisual\n type={\n format === 'url' ? 'link' : getKindFromMimeType(getMimeTypeFromFile(format ?? '') ?? '')\n }\n thumbnail={thumbnailError ? undefined : thumbnail}\n onThumbnailError={() => {\n setThumbnailError(true);\n }}\n />\n );\n contextualLabel = name;\n }\n\n useEffect(() => {\n if (!activeElement?.isConnected && activeElementInItem && itemRef.current) {\n getFocusables(itemRef.current)[0]?.focus();\n }\n }, [progress, error, onCancel, onDelete, onPreview, onEdit, onDownload]);\n\n return (\n <Flex\n as={StyledFileItem}\n container={{\n pad: [undefined, 0.5, undefined, undefined],\n alignItems: 'center',\n justify: 'start',\n gap: 1\n }}\n isDisabled={disabled}\n compactMode={compact}\n ref={itemRef}\n >\n {visual}\n\n {!previewFromActions && (onPreviewPopoverClick || onPreview) && !(error || uploading) ? (\n <Button\n {...restProps}\n as={StyledPreviewTitle}\n variant='link'\n ref={setTextTarget}\n onClick={() => {\n onPreview?.(id);\n }}\n onKeyDown={(e: ReactKeyboardEvent) => {\n if (e.getModifierState('Alt') && e.code === 'KeyP') {\n previewTriggerRef.current = e.currentTarget as HTMLElement;\n onPreviewPopoverClick?.(id);\n }\n }}\n onMouseEnter={onPreviewPopoverClick ? () => setPopover(true) : undefined}\n onMouseLeave={onPreviewPopoverClick ? () => setPopover(false) : undefined}\n onFocus={onPreviewPopoverClick ? () => setPreviewPopover(true) : undefined}\n onBlur={onPreviewPopoverClick ? () => setPreviewPopover(false) : undefined}\n aria-label={t('preview_file', [name])}\n disabled={disabled}\n >\n {name}\n {format === 'url' && <Icon name='open' />}\n </Button>\n ) : (\n <Text {...restProps} as={StyledTextTitle} ref={setTextTarget}>\n {name}\n </Text>\n )}\n {metaMessage && (\n <>\n <Text as={StyledMeta} variant='secondary' error={error && !uploading} ref={setMetaTarget}>\n {metaMessage}\n </Text>\n\n {metaTarget && (\n <Tooltip target={metaTarget} describeTarget={false} smart>\n {metaMessage}\n </Tooltip>\n )}\n </>\n )}\n\n {(error || uploading) && onCancel && (\n <StyledActionsWrapper meta={!!metaMessage}>\n <Button\n label={t('cancel')}\n aria-label={`${t('cancel')} - ${contextualLabel}`}\n variant='simple'\n compact\n icon\n onClick={() => onCancel(id)}\n >\n <Icon name='times' />\n </Button>\n </StyledActionsWrapper>\n )}\n\n {!(error || uploading) && !!definedActions.length && (\n <StyledActionsWrapper meta={!!metaMessage}>\n <Actions\n items={definedActions}\n compact\n iconOnly\n contextualLabel={name}\n disabled={disabled}\n />\n </StyledActionsWrapper>\n )}\n\n {textTarget && !onPreviewPopoverClick && (\n <Tooltip target={textTarget} smart describeTarget={false}>\n {name}\n </Tooltip>\n )}\n\n {onPreviewPopoverClick && !previewFromActions && (\n <Popover\n as={StyledLinkPopover}\n show={popover}\n placement='top'\n groupId='tooltip'\n showDelay='short'\n target={textTarget}\n onMouseEnter={() => setPopover(true)}\n onMouseLeave={() => setPopover(false)}\n arrow\n portal\n >\n <StyledLinkPreviewPopoverBtn\n type='button'\n onClick={() => {\n previewTriggerRef.current = textTarget as HTMLElement;\n onPreviewPopoverClick?.(id);\n }}\n tabIndex={-1}\n >\n <div>\n <span>{t('preview')}</span>\n </div>\n </StyledLinkPreviewPopoverBtn>\n </Popover>\n )}\n\n {onPreviewPopoverClick && !previewFromActions && (\n <Popover\n as={StyledLinkPopover}\n show={previewPopover}\n placement='top'\n groupId='tooltip'\n showDelay='short'\n target={textTarget}\n arrow\n portal\n >\n <StyledLinkPreviewPopoverBtn\n type='button'\n onClick={() => {\n previewTriggerRef.current = textTarget as HTMLElement;\n onPreviewPopoverClick?.(id);\n }}\n tabIndex={-1}\n >\n <div>\n <span>{t('preview')}</span>\n <Flex container={{ inline: true, justify: 'end' }}>\n <Keyboard keyName='Alt' />\n <Keyboard keyName='P' />\n </Flex>\n </div>\n </StyledLinkPreviewPopoverBtn>\n </Popover>\n )}\n </Flex>\n );\n});\n\nexport default FileItem;\n"]}
1
+ {"version":3,"file":"FileItem.js","sourceRoot":"","sources":["../../../src/components/File/FileItem.tsx"],"names":[],"mappings":"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","sourcesContent":["import { forwardRef, useEffect, useState } from 'react';\nimport type { PropsWithoutRef, Ref, KeyboardEvent as ReactKeyboardEvent } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport Icon, { registerIcon } from '../Icon';\nimport * as openIcon from '../Icon/icons/open.icon';\nimport * as timesIcon from '../Icon/icons/times.icon';\nimport * as previewIcon from '../Icon/icons/preview.icon';\nimport * as editIcon from '../Icon/icons/pencil.icon';\nimport * as downloadIcon from '../Icon/icons/download.icon';\nimport * as deleteIcon from '../Icon/icons/trash.icon';\nimport Text, { StyledText } from '../Text';\nimport Tooltip from '../Tooltip';\nimport type { ForwardRefForwardPropsComponent, BaseProps, Action } from '../../types';\nimport { defaultThemeProp } from '../../theme';\nimport Button, { StyledButton } from '../Button';\nimport {\n useI18n,\n useElement,\n useConfiguration,\n useConsolidatedRef,\n usePreviewContext,\n useModalContext\n} from '../../hooks';\nimport Actions from '../Actions';\nimport Progress from '../Progress';\nimport { StyledProgressRing } from '../Progress/Progress.styles';\nimport { formatNumber } from '../Number';\nimport Flex from '../Flex';\nimport { StyledIconShape } from '../Icon/Icon';\nimport { getActiveElement, getFocusables } from '../../utils';\nimport { ellipsisOverflow } from '../../styles/mixins';\nimport { StyledLinkPopover, StyledLinkPreviewPopoverBtn } from '../Link/Link';\nimport Popover from '../Popover';\nimport { Keyboard } from '../Badges';\n\nimport { getKindFromMimeType, getMimeTypeFromFile } from './utils';\nimport FileVisual, { StyledFileVisual } from './FileVisual';\nimport type { FileVisualProps } from './FileVisual';\n\nregisterIcon(openIcon, timesIcon, previewIcon, editIcon, downloadIcon, deleteIcon);\n\nexport interface FileItemProps extends BaseProps {\n /** Unique id for item. */\n id: string;\n /** Name of the file. */\n name: string;\n /** A string to be used as an image src for a attachment thumbnail. Falls back to a provided icon or the default attachment icon. */\n thumbnail?: FileVisualProps['thumbnail'];\n /** File extension. Use 'url' for link */\n format?: string;\n /**\n * Used for a smaller sized FileItem.\n * @default false\n */\n compact?: boolean;\n /** When passed, will render a single icon button for yet to be or in progress uploads. Use this action to trigger xhr request termination. */\n onCancel?: (id: FileItemProps['id']) => void;\n /** When passed, will render a single icon button or within a MenuButton if other actions are defined. */\n onEdit?: (id: FileItemProps['id']) => void;\n /** When passed, the file name will be rendered as a clickable button. Fires on direct click of the name. Passes file id as the parameter. */\n onPreview?: (id: FileItemProps['id']) => void;\n /** When passed, will render a preview tooltip. Will be fired on click of preview tooltip. Passes file id as the parameter. */\n onPreviewPopoverClick?: (id: FileItemProps['id']) => void;\n /**\n * Moves preview option to actions menu.\n * To be used only in compact mode of single file input when rendered in a table\n */\n previewFromActions?: boolean;\n /** When passed, will render a single icon button or within a MenuButton if other actions are defined. Passes file id as the parameter. */\n onDownload?: (id: FileItemProps['id']) => void;\n /** When passed, will render a single icon button or within a MenuButton if other actions are defined. */\n onDelete?: (id: FileItemProps['id']) => void;\n /** When passed, will render a single icon button or within a MenuButton if other actions are defined. */\n onOpen?: (id: FileItemProps['id']) => void;\n /** If the attachment is in an upload state, pass progress as a number between 0-100 representing the percentage of progress. */\n progress?: number;\n /** Set if there is an error uploading the file. Applies error styling to the meta string passed. */\n error?: string;\n /** Setting the disable state */\n disabled?: boolean;\n /** Ref for the wrapping element. */\n ref?: Ref<HTMLDivElement>;\n}\n\nconst StyledErrorIcon = styled(Icon)(({ theme }) => {\n return css`\n color: ${theme.base.palette.urgent};\n margin-inline-start: calc(0.5 * ${theme.base.spacing});\n `;\n});\n\nStyledErrorIcon.defaultProps = defaultThemeProp;\n\nconst titleEllipsisStyle = css`\n flex-shrink: 1;\n ${ellipsisOverflow}\n`;\n\nexport const StyledPreviewTitle = styled(Button)`\n ${titleEllipsisStyle}\n`;\n\nexport const StyledTextTitle = styled(Text)`\n ${titleEllipsisStyle}\n`;\n\nconst StyledMeta = styled(StyledText)<{ error: boolean }>(({ theme, error }) => {\n return css`\n /* min width to show percentage in full */\n min-width: 4ch;\n margin-inline-start: auto;\n ${titleEllipsisStyle}\n ${error &&\n css`\n color: ${theme.base.palette.urgent};\n `}\n `;\n});\n\nStyledMeta.defaultProps = defaultThemeProp;\n\nconst StyledActionsWrapper = styled.div<{ meta: boolean }>(({ meta }) => {\n return css`\n margin-inline-start: ${meta ? 'unset' : 'auto'};\n `;\n});\n\nStyledActionsWrapper.defaultProps = defaultThemeProp;\n\nexport const StyledFileItem = styled.div<{\n compactMode: FileItemProps['compact'];\n isDisabled?: FileItemProps['disabled'];\n}>(\n ({\n theme: {\n base: {\n palette,\n spacing,\n 'hit-area': { compact },\n 'disabled-opacity': disabledOpacity\n },\n components: {\n input,\n 'form-control': {\n ':disabled': {\n 'background-color': disabledBackgroundColor,\n 'border-color': disabledBorderColor\n }\n }\n }\n },\n compactMode,\n isDisabled\n }) => {\n return css`\n border-radius: calc(var(--container-border-radius) * 0.5);\n border: 0.0625rem solid ${palette['border-line']};\n background-color: ${palette['primary-background']};\n height: ${input.height};\n min-width: calc(${input.height} + 12ch + 1.5 * ${spacing} + ${compact});\n\n ${compactMode &&\n css`\n height: ${compact};\n min-width: calc(${compact} + 12ch + 2 * ${spacing});\n width: fit-content;\n max-width: 25ch;\n\n ${StyledPreviewTitle}, ${StyledTextTitle} {\n min-width: 12ch;\n max-width: calc(25ch - (${compact} + 2 * ${spacing}));\n }\n\n ${StyledActionsWrapper} > ${StyledButton} {\n min-height: 100%;\n min-width: 100%;\n margin-block: ${spacing};\n }\n `}\n\n > ${StyledProgressRing} {\n margin-inline-start: calc(0.5 * ${spacing});\n }\n\n > ${StyledFileVisual}, > ${StyledIconShape} {\n border-start-start-radius: inherit;\n border-end-start-radius: inherit;\n border-start-end-radius: 0;\n border-end-end-radius: 0;\n width: ${input.height};\n flex-shrink: 0;\n\n ${compactMode &&\n css`\n height: ${compact};\n width: ${compact};\n `}\n }\n ${isDisabled &&\n css`\n background-color: ${disabledBackgroundColor};\n border-color: ${disabledBorderColor};\n opacity: ${disabledOpacity};\n `}\n `;\n }\n);\n\nStyledFileItem.defaultProps = defaultThemeProp;\n\nconst FileItem: ForwardRefForwardPropsComponent<FileItemProps> = forwardRef(function FileItem(\n props: PropsWithoutRef<FileItemProps>,\n ref: FileItemProps['ref']\n) {\n const {\n id,\n name,\n thumbnail,\n format,\n error,\n onCancel,\n onEdit,\n onPreview,\n onPreviewPopoverClick,\n onDownload,\n onDelete,\n onOpen,\n progress,\n compact = false,\n previewFromActions = false,\n disabled = false,\n ...restProps\n } = props;\n\n const [thumbnailError, setThumbnailError] = useState(false);\n const [textTarget, setTextTarget] = useElement();\n const [metaTarget, setMetaTarget] = useElement();\n const [popover, setPopover] = useState(false);\n const [previewPopover, setPreviewPopover] = useState(false);\n const { locale } = useConfiguration();\n const { initialized: inModal } = useModalContext();\n const { previewTriggerRef } = usePreviewContext();\n const t = useI18n();\n const uploading = typeof progress === 'number' && progress < 100;\n const itemRef = useConsolidatedRef(ref);\n\n const activeElement = getActiveElement();\n const activeElementInItem = itemRef.current?.contains(activeElement);\n\n let metaMessage;\n\n if (uploading) {\n metaMessage = formatNumber(progress, {\n locale,\n options: {\n style: 'unit',\n unit: 'percent',\n maximumFractionDigits: 0\n }\n });\n } else if (error) {\n metaMessage = error;\n }\n\n const definedActions: Action[] = [\n previewFromActions ? { onClick: onPreview, text: t('preview'), icon: 'preview' } : undefined,\n { onClick: onEdit, text: t('edit'), icon: 'pencil' },\n { onClick: onDownload, text: t('download'), icon: 'download' },\n { onClick: onDelete, text: t('delete'), icon: 'trash' },\n { onClick: onOpen, text: t('link_open_in_tab_text'), icon: 'open' }\n ].flatMap(action => {\n if (!action || !action.onClick) return [];\n\n const { text, icon, onClick: onActionClick } = action;\n return [\n {\n id: text,\n text,\n icon,\n onClick: () => onActionClick(id)\n }\n ];\n });\n\n let visual;\n let contextualLabel;\n\n if (uploading) {\n visual = <Progress variant='ring' placement='inline' value={progress} />;\n contextualLabel = t('uploading_file', [name]);\n } else if (error) {\n visual = <StyledErrorIcon name='warn-solid' />;\n contextualLabel = t('upload_failed', [name, error]);\n } else {\n visual = (\n <FileVisual\n type={\n format === 'url' ? 'link' : getKindFromMimeType(getMimeTypeFromFile(format ?? '') ?? '')\n }\n thumbnail={thumbnailError ? undefined : thumbnail}\n onThumbnailError={() => {\n setThumbnailError(true);\n }}\n />\n );\n contextualLabel = name;\n }\n\n useEffect(() => {\n if (!activeElement?.isConnected && activeElementInItem && itemRef.current) {\n getFocusables(itemRef.current)[0]?.focus();\n }\n }, [progress, error, onCancel, onDelete, onPreview, onEdit, onDownload]);\n\n return (\n <Flex\n as={StyledFileItem}\n container={{\n pad: [undefined, 0.5, undefined, undefined],\n alignItems: 'center',\n justify: 'start',\n gap: 1\n }}\n isDisabled={disabled}\n compactMode={compact}\n ref={itemRef}\n >\n {visual}\n\n {!previewFromActions &&\n ((!inModal && onPreviewPopoverClick) || onPreview) &&\n !(error || uploading) ? (\n <Button\n {...restProps}\n as={StyledPreviewTitle}\n variant='link'\n ref={setTextTarget}\n onClick={() => {\n onPreview?.(id);\n }}\n onKeyDown={(e: ReactKeyboardEvent) => {\n if (e.getModifierState('Alt') && e.code === 'KeyP') {\n previewTriggerRef.current = e.currentTarget as HTMLElement;\n onPreviewPopoverClick?.(id);\n }\n }}\n onMouseEnter={onPreviewPopoverClick ? () => setPopover(true) : undefined}\n onMouseLeave={onPreviewPopoverClick ? () => setPopover(false) : undefined}\n onFocus={onPreviewPopoverClick ? () => setPreviewPopover(true) : undefined}\n onBlur={onPreviewPopoverClick ? () => setPreviewPopover(false) : undefined}\n aria-label={t('preview_file', [name])}\n disabled={disabled}\n >\n {name}\n {format === 'url' && <Icon name='open' />}\n </Button>\n ) : (\n <Text {...restProps} as={StyledTextTitle} ref={setTextTarget}>\n {name}\n </Text>\n )}\n {metaMessage && (\n <>\n <Text as={StyledMeta} variant='secondary' error={error && !uploading} ref={setMetaTarget}>\n {metaMessage}\n </Text>\n\n {metaTarget && (\n <Tooltip target={metaTarget} describeTarget={false} smart>\n {metaMessage}\n </Tooltip>\n )}\n </>\n )}\n\n {(error || uploading) && onCancel && (\n <StyledActionsWrapper meta={!!metaMessage}>\n <Button\n label={t('cancel')}\n aria-label={`${t('cancel')} - ${contextualLabel}`}\n variant='simple'\n compact\n icon\n onClick={() => onCancel(id)}\n >\n <Icon name='times' />\n </Button>\n </StyledActionsWrapper>\n )}\n\n {!(error || uploading) && !!definedActions.length && (\n <StyledActionsWrapper meta={!!metaMessage}>\n <Actions\n items={definedActions}\n compact\n iconOnly\n contextualLabel={name}\n disabled={disabled}\n />\n </StyledActionsWrapper>\n )}\n\n {textTarget && !onPreviewPopoverClick && (\n <Tooltip target={textTarget} smart describeTarget={false}>\n {name}\n </Tooltip>\n )}\n\n {onPreviewPopoverClick && !inModal && !previewFromActions && (\n <Popover\n as={StyledLinkPopover}\n show={popover}\n placement='top'\n groupId='tooltip'\n showDelay='short'\n target={textTarget}\n onMouseEnter={() => setPopover(true)}\n onMouseLeave={() => setPopover(false)}\n arrow\n portal\n >\n <StyledLinkPreviewPopoverBtn\n type='button'\n onClick={() => {\n previewTriggerRef.current = textTarget as HTMLElement;\n onPreviewPopoverClick?.(id);\n }}\n tabIndex={-1}\n >\n <div>\n <span>{t('preview')}</span>\n </div>\n </StyledLinkPreviewPopoverBtn>\n </Popover>\n )}\n\n {onPreviewPopoverClick && !inModal && !previewFromActions && (\n <Popover\n as={StyledLinkPopover}\n show={previewPopover}\n placement='top'\n groupId='tooltip'\n showDelay='short'\n target={textTarget}\n arrow\n portal\n >\n <StyledLinkPreviewPopoverBtn\n type='button'\n onClick={() => {\n previewTriggerRef.current = textTarget as HTMLElement;\n onPreviewPopoverClick?.(id);\n }}\n tabIndex={-1}\n >\n <div>\n <span>{t('preview')}</span>\n <Flex container={{ inline: true, justify: 'end' }}>\n <Keyboard keyName='Alt' />\n <Keyboard keyName='P' />\n </Flex>\n </div>\n </StyledLinkPreviewPopoverBtn>\n </Popover>\n )}\n </Flex>\n );\n});\n\nexport default FileItem;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Lightbox.d.ts","sourceRoot":"","sources":["../../../src/components/Lightbox/Lightbox.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,aAAa,CAAC;AA+CnE,OAAO,KAAK,EAAE,aAAa,EAAgB,MAAM,kBAAkB,CAAC;;;;AAocpE,wBAA6D"}
1
+ {"version":3,"file":"Lightbox.d.ts","sourceRoot":"","sources":["../../../src/components/Lightbox/Lightbox.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,aAAa,CAAC;AA+CnE,OAAO,KAAK,EAAE,aAAa,EAAgB,MAAM,kBAAkB,CAAC;;;;AAucpE,wBAA6D"}
@@ -137,16 +137,17 @@ const LightboxComp = forwardRef(function Lightbox({ testId, items, placement = '
137
137
  const extractMimeType = mimeTypes[currentItem.format.toLowerCase()];
138
138
  const getType = currentItem.format === 'url' ? 'link' : 'generic';
139
139
  attachmentType = extractMimeType ? getKindFromMimeType(extractMimeType) : getType;
140
- validContent = previewableAttachmentTypes.includes(attachmentType)
141
- ? !!currentItem.src
142
- : !!attachmentType;
140
+ validContent =
141
+ currentItem.disablePreview ||
142
+ (previewableAttachmentTypes.includes(attachmentType) ? !!currentItem.src : !!attachmentType);
143
143
  }
144
144
  if (validContent) {
145
- const nonPreviewableContent = (_jsxs(_Fragment, { children: [_jsx(Text, { children: t('non_previewable', [
145
+ const nonPreviewableContent = (_jsxs(_Fragment, { children: [_jsx(Text, { children: t(currentItem.disablePreview ? 'large_non_previewable' : 'non_previewable', [
146
146
  currentItem.format ? currentItem.format.toUpperCase() : currentItem.name
147
147
  ]) }), onItemDownload && (_jsx(Button, { "aria-label": t('download'), onClick: () => onItemDownload(currentItem.id), "data-testid": testIds.nonPreviewableDownload, children: t('download') }))] }));
148
- const defaultContent = (_jsxs(Flex, { container: { direction: 'column', gap: 2, alignItems: 'center' }, as: StyledInfo, "data-testid": testIds.content, children: [_jsx(FileVisual, { type: attachmentType, size: 'l' }), attachmentType === 'link' && currentItem.src ? (_jsx(Link, { href: currentItem.src, "data-testid": testIds.link, children: currentItem.name })) : (nonPreviewableContent)] }));
149
- switch (attachmentType) {
148
+ const defaultContent = (_jsxs(Flex, { container: { direction: 'column', gap: 2, alignItems: 'center' }, as: StyledInfo, "data-testid": testIds.content, children: [_jsx(FileVisual, { type: attachmentType, size: 'l' }), !currentItem.disablePreview && attachmentType === 'link' && currentItem.src ? (_jsx(Link, { href: currentItem.src, "data-testid": testIds.link, children: currentItem.name })) : (nonPreviewableContent)] }));
149
+ const mediaType = currentItem.disablePreview ? undefined : attachmentType;
150
+ switch (mediaType) {
150
151
  case 'image':
151
152
  media = currentItem.src && (_jsx(Image, { "data-testid": testIds.content, src: currentItem.src, alt: currentItem.description ?? t('description_unavailable'), onLoad: handleLoad, onError: handleError, ref: mediaRef }));
152
153
  break;
@@ -192,7 +193,9 @@ const LightboxComp = forwardRef(function Lightbox({ testId, items, placement = '
192
193
  justify: 'center',
193
194
  colGap: 2,
194
195
  rowGap: 0.5
195
- }, children: [_jsx(StyledLightboxTitle, { "data-testid": testIds.name, variant: 'primary', as: 'h2', ref: setLightboxTitle, children: currentItem.name }), currentItem.metadata && (_jsx(MetaList, { "data-testid": testIds.metadata, items: currentItem.metadata }))] }), _jsxs(Flex, { container: true, as: StyledContainer, children: [attachmentType !== 'link' && onItemDownload && (_jsx(Button, { "data-testid": testIds.download, variant: 'simple', label: t('download'), icon: true, onClick: () => onItemDownload(currentItem.id), children: _jsx(Icon, { name: 'download' }) })), previewableAttachmentTypes.includes(attachmentType) && currentItem.src && (_jsx(Button, { "data-testid": testIds.openInNewTab, variant: 'simple', label: t('link_open_in_tab_text'), icon: true, href: currentItem.src, target: '_blank', children: _jsx(Icon, { name: 'open' }) })), placement === 'global' && (_jsx(Button, { "data-testid": testIds.close, variant: 'simple', ref: closeButtonRef, label: t('close'), icon: true, onClick: close, children: _jsx(Icon, { name: 'times' }) })), placement === 'local' && (_jsx(Button, { "data-testid": testIds.close, variant: 'simple', label: t('enter_fullscreen'), icon: true, onClick: () => setGlobalFromLocalOpen(true), children: _jsx(Icon, { name: 'undock' }) }))] })] }), _jsxs(Flex, { container: { justify: 'between' }, as: StyledPreviewRegion, item: { grow: 1, shrink: 0 }, children: [items.length > 1 && (_jsx(StyledNavButton, { "data-testid": testIds.prev, ref: prevButtonRef, variant: 'simple', "aria-label": t('pagination_prev'), hidden: !cycle && currentIndex === 0, icon: true, onClick: () => {
196
+ }, children: [_jsx(StyledLightboxTitle, { "data-testid": testIds.name, variant: 'primary', as: 'h2', ref: setLightboxTitle, children: currentItem.name }), currentItem.metadata && (_jsx(MetaList, { "data-testid": testIds.metadata, items: currentItem.metadata }))] }), _jsxs(Flex, { container: true, as: StyledContainer, children: [attachmentType !== 'link' && onItemDownload && (_jsx(Button, { "data-testid": testIds.download, variant: 'simple', label: t('download'), icon: true, onClick: () => onItemDownload(currentItem.id), children: _jsx(Icon, { name: 'download' }) })), !currentItem.disablePreview &&
197
+ previewableAttachmentTypes.includes(attachmentType) &&
198
+ currentItem.src && (_jsx(Button, { "data-testid": testIds.openInNewTab, variant: 'simple', label: t('link_open_in_tab_text'), icon: true, href: currentItem.src, target: '_blank', children: _jsx(Icon, { name: 'open' }) })), placement === 'global' && (_jsx(Button, { "data-testid": testIds.close, variant: 'simple', ref: closeButtonRef, label: t('close'), icon: true, onClick: close, children: _jsx(Icon, { name: 'times' }) })), placement === 'local' && (_jsx(Button, { "data-testid": testIds.close, variant: 'simple', label: t('enter_fullscreen'), icon: true, onClick: () => setGlobalFromLocalOpen(true), children: _jsx(Icon, { name: 'undock' }) }))] })] }), _jsxs(Flex, { container: { justify: 'between' }, as: StyledPreviewRegion, item: { grow: 1, shrink: 0 }, children: [items.length > 1 && (_jsx(StyledNavButton, { "data-testid": testIds.prev, ref: prevButtonRef, variant: 'simple', "aria-label": t('pagination_prev'), hidden: !cycle && currentIndex === 0, icon: true, onClick: () => {
196
199
  navigate(-1);
197
200
  }, children: _jsx("span", { children: _jsx(Icon, { name: 'caret-left' }) }) })), _jsx(Flex, { item: { grow: 1 }, as: StyledMediaContainer, global: global, children: _jsx(Flex, { container: { alignItems: 'center', justify: 'center' }, onMouseDown: (e) => {
198
201
  if (e.button !== 0)
@@ -1 +1 @@
1
- {"version":3,"file":"Lightbox.js","sourceRoot":"","sources":["../../../src/components/Lightbox/Lightbox.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useImperativeHandle, useRef, useState, forwardRef, useCallback } from 'react';\nimport type { PropsWithoutRef, MouseEvent, SyntheticEvent, RefObject } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport type { ForwardRefForwardPropsComponent } from '../../types';\nimport { cap, getActiveElement, getFocusables, withTestIds } from '../../utils';\nimport Flex from '../Flex';\nimport MetaList from '../MetaList';\nimport Icon, { registerIcon } from '../Icon';\nimport Image from '../Image';\nimport Text from '../Text';\nimport {\n useConfiguration,\n useConsolidatedRef,\n useDirection,\n useElement,\n useEvent,\n useFocusTrap,\n useI18n,\n useScrollToggle,\n useTestIds\n} from '../../hooks';\nimport ErrorState from '../ErrorState';\nimport Progress from '../Progress';\nimport FileVisual from '../File/FileVisual';\nimport Tooltip from '../Tooltip';\nimport Button from '../Button';\nimport Link from '../Link/Link';\nimport mimeTypes from '../File/mimeTypes.json';\nimport { getKindFromMimeType } from '../File/utils';\nimport type { AttachmentType } from '../File/utils';\nimport * as openIcon from '../Icon/icons/open.icon';\nimport * as timesIcon from '../Icon/icons/times.icon';\nimport * as downloadIcon from '../Icon/icons/download.icon';\nimport * as caretLeftIcon from '../Icon/icons/caret-left.icon';\nimport * as caretRightIcon from '../Icon/icons/caret-right.icon';\nimport * as undockIcon from '../Icon/icons/undock.icon';\n\nimport {\n StyledHeader,\n StyledCountTracker,\n StyledInfo,\n StyledPreviewRegion,\n StyledNavButton,\n StyledMediaContainer,\n StyledLiveRegion,\n StyledLightbox,\n StyledContainer,\n StyledObject,\n StyledLightboxTitle\n} from './Lightbox.styles';\nimport type { LightboxProps, MediaElement } from './Lightbox.types';\nimport { getLightboxTestIds } from './Lightbox.test-ids';\n\nregisterIcon(openIcon, timesIcon, downloadIcon, caretLeftIcon, caretRightIcon, undockIcon);\n\nconst LightboxComp: ForwardRefForwardPropsComponent<LightboxProps> = forwardRef(function Lightbox(\n {\n testId,\n items,\n placement = 'global',\n defaultIndex = 0,\n cycle = false,\n onItemLoad,\n onItemError,\n onNavigate,\n navigateHandle,\n onItemDownload,\n onAfterClose,\n ...restProps\n }: PropsWithoutRef<LightboxProps>,\n refArg: LightboxProps['ref']\n) {\n const t = useI18n();\n const { start, end } = useDirection();\n const { portalTarget } = useConfiguration();\n const global = placement === 'global';\n const [currentIndex, setCurrentIndex] = useState(defaultIndex);\n const currentItem = items[currentIndex];\n const { disableScroll, enableScroll } = useScrollToggle();\n const lightboxRef = useConsolidatedRef(refArg);\n const headerRef = useRef<HTMLDivElement>(null);\n const closeButtonRef = useRef<HTMLButtonElement>(null);\n const prevButtonRef = useRef<HTMLButtonElement>(null);\n const nextButtonRef = useRef<HTMLButtonElement>(null);\n const [open, setOpen] = useState(true);\n const [lightboxTitle, setLightboxTitle] = useElement();\n const [globalFromLocalOpen, setGlobalFromLocalOpen] = useState(false);\n const mediaRef = useConsolidatedRef(currentItem.ref);\n const [liveText, setLiveText] = useState('');\n const countTrackerText = items.length > 1 ? t('x_of_y', [currentIndex + 1, items.length]) : '';\n const testIds = useTestIds(testId, getLightboxTestIds);\n const previewableAttachmentTypes = ['pdf', 'image', 'link', 'video', 'audio'];\n\n const initiatorRef = useRef<Element | null>(null);\n\n const close = () => {\n if (!global) return;\n setOpen(false);\n\n if (\n initiatorRef.current?.isConnected &&\n (initiatorRef.current instanceof HTMLElement || initiatorRef.current instanceof SVGElement)\n )\n initiatorRef.current.focus();\n };\n\n useImperativeHandle(navigateHandle, () => ({\n navigate: index => {\n if (!items.length) return;\n const clampedIndex = Math.min(Math.max(index, 0), items.length - 1);\n setCurrentIndex(clampedIndex);\n }\n }));\n\n const navigate = (direction: 1 | -1) => {\n if (direction === 1) {\n if (currentIndex < items.length - 1) {\n setCurrentIndex(cur => cur + 1);\n } else if (cycle) {\n setCurrentIndex(0);\n }\n } else if (currentIndex > 0) {\n setCurrentIndex(cur => cur - 1);\n } else if (cycle) {\n setCurrentIndex(items.length - 1);\n }\n };\n const keyDownHandler = (e: KeyboardEvent) => {\n if (e.repeat) return;\n if (!lightboxRef.current?.contains(getActiveElement())) return;\n\n if (e.key === 'Escape') {\n close();\n } else if (e.key === `Arrow${cap(end)}`) {\n navigate(1);\n } else if (e.key === `Arrow${cap(start)}`) {\n navigate(-1);\n }\n };\n\n useEvent('keydown', keyDownHandler);\n\n useFocusTrap(global ? lightboxRef : null);\n\n useEffect(() => {\n setLiveText(`${currentItem.name}. ${countTrackerText ? `${countTrackerText}.` : ''}`);\n }, [currentItem.name, countTrackerText]);\n\n useEffect(() => {\n onNavigate?.(currentItem.id, currentIndex);\n }, [currentIndex]);\n\n useEffect(() => {\n const activeElement = getActiveElement();\n initiatorRef.current = activeElement;\n if (getFocusables(lightboxRef).length > 0) getFocusables(lightboxRef)[0].focus();\n }, []);\n\n const handleLoad = useCallback(\n (e: SyntheticEvent<MediaElement> | Event) => {\n onItemLoad?.(currentItem.id, e);\n },\n [onItemLoad, currentItem.id]\n );\n\n const handleError = useCallback(\n (e: SyntheticEvent<MediaElement> | Event) => {\n onItemError?.(currentItem.id, e);\n },\n [onItemError, currentItem.id]\n );\n\n // Object elements appear to need native event handlers bound as JSX does not work.\n // TODO: Follow up on reason why.\n useEffect(() => {\n if (!mediaRef.current || currentItem.format !== 'pdf') return;\n const pdfObject = mediaRef.current;\n pdfObject.addEventListener('load', handleLoad);\n pdfObject.addEventListener('error', handleError);\n\n return () => {\n pdfObject.removeEventListener('load', handleLoad);\n pdfObject.removeEventListener('error', handleError);\n };\n }, [currentItem]);\n\n let media;\n let validContent = true;\n let attachmentType: AttachmentType = 'generic';\n if (currentItem.format === undefined) {\n validContent = !currentItem.error;\n } else {\n const extractMimeType = (mimeTypes as Record<string, string>)[currentItem.format.toLowerCase()];\n const getType = currentItem.format === 'url' ? 'link' : 'generic';\n attachmentType = extractMimeType ? getKindFromMimeType(extractMimeType) : getType;\n validContent = previewableAttachmentTypes.includes(attachmentType)\n ? !!currentItem.src\n : !!attachmentType;\n }\n\n if (validContent) {\n const nonPreviewableContent = (\n <>\n <Text>\n {t('non_previewable', [\n currentItem.format ? currentItem.format.toUpperCase() : currentItem.name\n ])}\n </Text>\n {onItemDownload && (\n <Button\n aria-label={t('download')}\n onClick={() => onItemDownload(currentItem.id)}\n data-testid={testIds.nonPreviewableDownload}\n >\n {t('download')}\n </Button>\n )}\n </>\n );\n\n const defaultContent = (\n <Flex\n container={{ direction: 'column', gap: 2, alignItems: 'center' }}\n as={StyledInfo}\n data-testid={testIds.content}\n >\n <FileVisual type={attachmentType} size='l' />\n {attachmentType === 'link' && currentItem.src ? (\n <Link href={currentItem.src} data-testid={testIds.link}>\n {currentItem.name}\n </Link>\n ) : (\n nonPreviewableContent\n )}\n </Flex>\n );\n\n switch (attachmentType) {\n case 'image':\n media = currentItem.src && (\n <Image\n data-testid={testIds.content}\n src={currentItem.src}\n alt={currentItem.description ?? t('description_unavailable')}\n onLoad={handleLoad}\n onError={handleError}\n ref={mediaRef as RefObject<HTMLImageElement>}\n />\n );\n break;\n case 'pdf':\n media = currentItem.src && (\n <>\n {navigator.pdfViewerEnabled ? (\n <StyledObject\n data-testid={testIds.content}\n data={currentItem.src}\n type='application/pdf'\n ref={mediaRef as RefObject<HTMLObjectElement>}\n >\n {currentItem.description ?? t('description_unavailable')}\n </StyledObject>\n ) : (\n defaultContent\n )}\n </>\n );\n break;\n case 'video':\n media = currentItem.src && (\n // eslint-disable-next-line jsx-a11y/media-has-caption\n <video\n data-testid={testIds.content}\n src={currentItem.src}\n controls\n onLoadedData={handleLoad}\n onError={handleError}\n ref={mediaRef as RefObject<HTMLVideoElement>}\n />\n );\n break;\n case 'audio':\n media = currentItem.src && (\n // eslint-disable-next-line jsx-a11y/media-has-caption\n <audio\n data-testid={testIds.content}\n src={currentItem.src}\n controls\n onLoadedData={handleLoad}\n onError={handleError}\n ref={mediaRef as RefObject<HTMLAudioElement>}\n />\n );\n break;\n default: {\n media = defaultContent;\n }\n }\n } else {\n media = <Progress placement='block' delay />;\n }\n\n const content = (\n <StyledLightbox\n data-testid={testIds.root}\n {...restProps}\n tabIndex={-1}\n ref={lightboxRef}\n open={open}\n global={global}\n role={global ? 'dialog' : undefined}\n aria-modal={global ? true : undefined}\n container={{ alignItems: 'start', justify: 'start', direction: 'column' }}\n alpha={0.9}\n variant='dark'\n position={global ? 'fixed' : 'absolute'}\n transitionSpeed='slow'\n onBeforeTransitionIn={global ? disableScroll : undefined}\n onAfterTransitionOut={() => {\n if (global) {\n enableScroll();\n }\n onAfterClose?.();\n }}\n >\n <Flex\n as={StyledHeader}\n ref={headerRef}\n global={global}\n role='none'\n container={{\n justify: 'between',\n alignItems: 'center',\n gap: 2\n }}\n onMouseDown={(e: MouseEvent<HTMLDivElement>) => {\n if (e.button !== 0) return;\n if (e.target === e.currentTarget) close();\n }}\n >\n <StyledCountTracker data-testid={testIds.pagination} aria-hidden>\n {countTrackerText}\n </StyledCountTracker>\n\n <Flex\n as={StyledInfo}\n container={{\n direction: 'column',\n wrap: 'wrap',\n alignItems: 'center',\n justify: 'center',\n colGap: 2,\n rowGap: 0.5\n }}\n >\n <StyledLightboxTitle\n data-testid={testIds.name}\n variant='primary'\n as='h2'\n ref={setLightboxTitle}\n >\n {currentItem.name}\n </StyledLightboxTitle>\n {currentItem.metadata && (\n <MetaList data-testid={testIds.metadata} items={currentItem.metadata} />\n )}\n </Flex>\n\n <Flex container as={StyledContainer}>\n {attachmentType !== 'link' && onItemDownload && (\n <Button\n data-testid={testIds.download}\n variant='simple'\n label={t('download')}\n icon\n onClick={() => onItemDownload(currentItem.id)}\n >\n <Icon name='download' />\n </Button>\n )}\n {previewableAttachmentTypes.includes(attachmentType) && currentItem.src && (\n <Button\n data-testid={testIds.openInNewTab}\n variant='simple'\n label={t('link_open_in_tab_text')}\n icon\n href={currentItem.src}\n target='_blank'\n >\n <Icon name='open' />\n </Button>\n )}\n {placement === 'global' && (\n <Button\n data-testid={testIds.close}\n variant='simple'\n ref={closeButtonRef}\n label={t('close')}\n icon\n onClick={close}\n >\n <Icon name='times' />\n </Button>\n )}\n {placement === 'local' && (\n <Button\n data-testid={testIds.close}\n variant='simple'\n label={t('enter_fullscreen')}\n icon\n onClick={() => setGlobalFromLocalOpen(true)}\n >\n <Icon name='undock' />\n </Button>\n )}\n </Flex>\n </Flex>\n\n <Flex\n container={{ justify: 'between' }}\n as={StyledPreviewRegion}\n item={{ grow: 1, shrink: 0 }}\n >\n {items.length > 1 && (\n <StyledNavButton\n data-testid={testIds.prev}\n ref={prevButtonRef}\n variant='simple'\n aria-label={t('pagination_prev')}\n hidden={!cycle && currentIndex === 0}\n icon\n onClick={() => {\n navigate(-1);\n }}\n >\n <span>\n <Icon name='caret-left' />\n </span>\n </StyledNavButton>\n )}\n\n <Flex item={{ grow: 1 }} as={StyledMediaContainer} global={global}>\n <Flex\n container={{ alignItems: 'center', justify: 'center' }}\n onMouseDown={(e: MouseEvent<HTMLDivElement>) => {\n if (e.button !== 0) return;\n if (e.target === e.currentTarget) close();\n }}\n >\n {currentItem.error ? <ErrorState message={t('content_load_error')} /> : media}\n </Flex>\n </Flex>\n\n {items.length > 1 && (\n <StyledNavButton\n data-testid={testIds.next}\n ref={nextButtonRef}\n variant='simple'\n aria-label={t('pagination_next')}\n hidden={!cycle && currentIndex === items.length - 1}\n icon\n onClick={() => {\n navigate(1);\n }}\n >\n <span>\n <Icon name='caret-right' />\n </span>\n </StyledNavButton>\n )}\n </Flex>\n {!global && (\n <Tooltip smart showDelay='none' hideDelay='none' target={lightboxTitle}>\n {currentItem.name}\n </Tooltip>\n )}\n <StyledLiveRegion aria-live='polite' aria-label={liveText} />\n </StyledLightbox>\n );\n\n const globalFromLocalLightbox = (\n <LightboxComp\n items={items}\n placement='global'\n defaultIndex={currentIndex}\n cycle={cycle}\n onItemLoad={onItemLoad}\n onItemError={onItemError}\n onNavigate={onNavigate}\n onItemDownload={onItemDownload}\n onAfterClose={() => setGlobalFromLocalOpen(false)}\n />\n );\n\n return (\n <>\n {global && portalTarget ? createPortal(content, portalTarget) : content}\n {globalFromLocalOpen && globalFromLocalLightbox}\n </>\n );\n});\n\nexport default withTestIds(LightboxComp, getLightboxTestIds);\n"]}
1
+ {"version":3,"file":"Lightbox.js","sourceRoot":"","sources":["../../../src/components/Lightbox/Lightbox.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useImperativeHandle, useRef, useState, forwardRef, useCallback } from 'react';\nimport type { PropsWithoutRef, MouseEvent, SyntheticEvent, RefObject } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport type { ForwardRefForwardPropsComponent } from '../../types';\nimport { cap, getActiveElement, getFocusables, withTestIds } from '../../utils';\nimport Flex from '../Flex';\nimport MetaList from '../MetaList';\nimport Icon, { registerIcon } from '../Icon';\nimport Image from '../Image';\nimport Text from '../Text';\nimport {\n useConfiguration,\n useConsolidatedRef,\n useDirection,\n useElement,\n useEvent,\n useFocusTrap,\n useI18n,\n useScrollToggle,\n useTestIds\n} from '../../hooks';\nimport ErrorState from '../ErrorState';\nimport Progress from '../Progress';\nimport FileVisual from '../File/FileVisual';\nimport Tooltip from '../Tooltip';\nimport Button from '../Button';\nimport Link from '../Link/Link';\nimport mimeTypes from '../File/mimeTypes.json';\nimport { getKindFromMimeType } from '../File/utils';\nimport type { AttachmentType } from '../File/utils';\nimport * as openIcon from '../Icon/icons/open.icon';\nimport * as timesIcon from '../Icon/icons/times.icon';\nimport * as downloadIcon from '../Icon/icons/download.icon';\nimport * as caretLeftIcon from '../Icon/icons/caret-left.icon';\nimport * as caretRightIcon from '../Icon/icons/caret-right.icon';\nimport * as undockIcon from '../Icon/icons/undock.icon';\n\nimport {\n StyledHeader,\n StyledCountTracker,\n StyledInfo,\n StyledPreviewRegion,\n StyledNavButton,\n StyledMediaContainer,\n StyledLiveRegion,\n StyledLightbox,\n StyledContainer,\n StyledObject,\n StyledLightboxTitle\n} from './Lightbox.styles';\nimport type { LightboxProps, MediaElement } from './Lightbox.types';\nimport { getLightboxTestIds } from './Lightbox.test-ids';\n\nregisterIcon(openIcon, timesIcon, downloadIcon, caretLeftIcon, caretRightIcon, undockIcon);\n\nconst LightboxComp: ForwardRefForwardPropsComponent<LightboxProps> = forwardRef(function Lightbox(\n {\n testId,\n items,\n placement = 'global',\n defaultIndex = 0,\n cycle = false,\n onItemLoad,\n onItemError,\n onNavigate,\n navigateHandle,\n onItemDownload,\n onAfterClose,\n ...restProps\n }: PropsWithoutRef<LightboxProps>,\n refArg: LightboxProps['ref']\n) {\n const t = useI18n();\n const { start, end } = useDirection();\n const { portalTarget } = useConfiguration();\n const global = placement === 'global';\n const [currentIndex, setCurrentIndex] = useState(defaultIndex);\n const currentItem = items[currentIndex];\n const { disableScroll, enableScroll } = useScrollToggle();\n const lightboxRef = useConsolidatedRef(refArg);\n const headerRef = useRef<HTMLDivElement>(null);\n const closeButtonRef = useRef<HTMLButtonElement>(null);\n const prevButtonRef = useRef<HTMLButtonElement>(null);\n const nextButtonRef = useRef<HTMLButtonElement>(null);\n const [open, setOpen] = useState(true);\n const [lightboxTitle, setLightboxTitle] = useElement();\n const [globalFromLocalOpen, setGlobalFromLocalOpen] = useState(false);\n const mediaRef = useConsolidatedRef(currentItem.ref);\n const [liveText, setLiveText] = useState('');\n const countTrackerText = items.length > 1 ? t('x_of_y', [currentIndex + 1, items.length]) : '';\n const testIds = useTestIds(testId, getLightboxTestIds);\n const previewableAttachmentTypes = ['pdf', 'image', 'link', 'video', 'audio'];\n\n const initiatorRef = useRef<Element | null>(null);\n\n const close = () => {\n if (!global) return;\n setOpen(false);\n\n if (\n initiatorRef.current?.isConnected &&\n (initiatorRef.current instanceof HTMLElement || initiatorRef.current instanceof SVGElement)\n )\n initiatorRef.current.focus();\n };\n\n useImperativeHandle(navigateHandle, () => ({\n navigate: index => {\n if (!items.length) return;\n const clampedIndex = Math.min(Math.max(index, 0), items.length - 1);\n setCurrentIndex(clampedIndex);\n }\n }));\n\n const navigate = (direction: 1 | -1) => {\n if (direction === 1) {\n if (currentIndex < items.length - 1) {\n setCurrentIndex(cur => cur + 1);\n } else if (cycle) {\n setCurrentIndex(0);\n }\n } else if (currentIndex > 0) {\n setCurrentIndex(cur => cur - 1);\n } else if (cycle) {\n setCurrentIndex(items.length - 1);\n }\n };\n const keyDownHandler = (e: KeyboardEvent) => {\n if (e.repeat) return;\n if (!lightboxRef.current?.contains(getActiveElement())) return;\n\n if (e.key === 'Escape') {\n close();\n } else if (e.key === `Arrow${cap(end)}`) {\n navigate(1);\n } else if (e.key === `Arrow${cap(start)}`) {\n navigate(-1);\n }\n };\n\n useEvent('keydown', keyDownHandler);\n\n useFocusTrap(global ? lightboxRef : null);\n\n useEffect(() => {\n setLiveText(`${currentItem.name}. ${countTrackerText ? `${countTrackerText}.` : ''}`);\n }, [currentItem.name, countTrackerText]);\n\n useEffect(() => {\n onNavigate?.(currentItem.id, currentIndex);\n }, [currentIndex]);\n\n useEffect(() => {\n const activeElement = getActiveElement();\n initiatorRef.current = activeElement;\n if (getFocusables(lightboxRef).length > 0) getFocusables(lightboxRef)[0].focus();\n }, []);\n\n const handleLoad = useCallback(\n (e: SyntheticEvent<MediaElement> | Event) => {\n onItemLoad?.(currentItem.id, e);\n },\n [onItemLoad, currentItem.id]\n );\n\n const handleError = useCallback(\n (e: SyntheticEvent<MediaElement> | Event) => {\n onItemError?.(currentItem.id, e);\n },\n [onItemError, currentItem.id]\n );\n\n // Object elements appear to need native event handlers bound as JSX does not work.\n // TODO: Follow up on reason why.\n useEffect(() => {\n if (!mediaRef.current || currentItem.format !== 'pdf') return;\n const pdfObject = mediaRef.current;\n pdfObject.addEventListener('load', handleLoad);\n pdfObject.addEventListener('error', handleError);\n\n return () => {\n pdfObject.removeEventListener('load', handleLoad);\n pdfObject.removeEventListener('error', handleError);\n };\n }, [currentItem]);\n\n let media;\n let validContent = true;\n let attachmentType: AttachmentType = 'generic';\n if (currentItem.format === undefined) {\n validContent = !currentItem.error;\n } else {\n const extractMimeType = (mimeTypes as Record<string, string>)[currentItem.format.toLowerCase()];\n const getType = currentItem.format === 'url' ? 'link' : 'generic';\n attachmentType = extractMimeType ? getKindFromMimeType(extractMimeType) : getType;\n validContent =\n currentItem.disablePreview ||\n (previewableAttachmentTypes.includes(attachmentType) ? !!currentItem.src : !!attachmentType);\n }\n\n if (validContent) {\n const nonPreviewableContent = (\n <>\n <Text>\n {t(currentItem.disablePreview ? 'large_non_previewable' : 'non_previewable', [\n currentItem.format ? currentItem.format.toUpperCase() : currentItem.name\n ])}\n </Text>\n {onItemDownload && (\n <Button\n aria-label={t('download')}\n onClick={() => onItemDownload(currentItem.id)}\n data-testid={testIds.nonPreviewableDownload}\n >\n {t('download')}\n </Button>\n )}\n </>\n );\n\n const defaultContent = (\n <Flex\n container={{ direction: 'column', gap: 2, alignItems: 'center' }}\n as={StyledInfo}\n data-testid={testIds.content}\n >\n <FileVisual type={attachmentType} size='l' />\n {!currentItem.disablePreview && attachmentType === 'link' && currentItem.src ? (\n <Link href={currentItem.src} data-testid={testIds.link}>\n {currentItem.name}\n </Link>\n ) : (\n nonPreviewableContent\n )}\n </Flex>\n );\n\n const mediaType = currentItem.disablePreview ? undefined : attachmentType;\n switch (mediaType) {\n case 'image':\n media = currentItem.src && (\n <Image\n data-testid={testIds.content}\n src={currentItem.src}\n alt={currentItem.description ?? t('description_unavailable')}\n onLoad={handleLoad}\n onError={handleError}\n ref={mediaRef as RefObject<HTMLImageElement>}\n />\n );\n break;\n case 'pdf':\n media = currentItem.src && (\n <>\n {navigator.pdfViewerEnabled ? (\n <StyledObject\n data-testid={testIds.content}\n data={currentItem.src}\n type='application/pdf'\n ref={mediaRef as RefObject<HTMLObjectElement>}\n >\n {currentItem.description ?? t('description_unavailable')}\n </StyledObject>\n ) : (\n defaultContent\n )}\n </>\n );\n break;\n case 'video':\n media = currentItem.src && (\n // eslint-disable-next-line jsx-a11y/media-has-caption\n <video\n data-testid={testIds.content}\n src={currentItem.src}\n controls\n onLoadedData={handleLoad}\n onError={handleError}\n ref={mediaRef as RefObject<HTMLVideoElement>}\n />\n );\n break;\n case 'audio':\n media = currentItem.src && (\n // eslint-disable-next-line jsx-a11y/media-has-caption\n <audio\n data-testid={testIds.content}\n src={currentItem.src}\n controls\n onLoadedData={handleLoad}\n onError={handleError}\n ref={mediaRef as RefObject<HTMLAudioElement>}\n />\n );\n break;\n default: {\n media = defaultContent;\n }\n }\n } else {\n media = <Progress placement='block' delay />;\n }\n\n const content = (\n <StyledLightbox\n data-testid={testIds.root}\n {...restProps}\n tabIndex={-1}\n ref={lightboxRef}\n open={open}\n global={global}\n role={global ? 'dialog' : undefined}\n aria-modal={global ? true : undefined}\n container={{ alignItems: 'start', justify: 'start', direction: 'column' }}\n alpha={0.9}\n variant='dark'\n position={global ? 'fixed' : 'absolute'}\n transitionSpeed='slow'\n onBeforeTransitionIn={global ? disableScroll : undefined}\n onAfterTransitionOut={() => {\n if (global) {\n enableScroll();\n }\n onAfterClose?.();\n }}\n >\n <Flex\n as={StyledHeader}\n ref={headerRef}\n global={global}\n role='none'\n container={{\n justify: 'between',\n alignItems: 'center',\n gap: 2\n }}\n onMouseDown={(e: MouseEvent<HTMLDivElement>) => {\n if (e.button !== 0) return;\n if (e.target === e.currentTarget) close();\n }}\n >\n <StyledCountTracker data-testid={testIds.pagination} aria-hidden>\n {countTrackerText}\n </StyledCountTracker>\n\n <Flex\n as={StyledInfo}\n container={{\n direction: 'column',\n wrap: 'wrap',\n alignItems: 'center',\n justify: 'center',\n colGap: 2,\n rowGap: 0.5\n }}\n >\n <StyledLightboxTitle\n data-testid={testIds.name}\n variant='primary'\n as='h2'\n ref={setLightboxTitle}\n >\n {currentItem.name}\n </StyledLightboxTitle>\n {currentItem.metadata && (\n <MetaList data-testid={testIds.metadata} items={currentItem.metadata} />\n )}\n </Flex>\n\n <Flex container as={StyledContainer}>\n {attachmentType !== 'link' && onItemDownload && (\n <Button\n data-testid={testIds.download}\n variant='simple'\n label={t('download')}\n icon\n onClick={() => onItemDownload(currentItem.id)}\n >\n <Icon name='download' />\n </Button>\n )}\n {!currentItem.disablePreview &&\n previewableAttachmentTypes.includes(attachmentType) &&\n currentItem.src && (\n <Button\n data-testid={testIds.openInNewTab}\n variant='simple'\n label={t('link_open_in_tab_text')}\n icon\n href={currentItem.src}\n target='_blank'\n >\n <Icon name='open' />\n </Button>\n )}\n {placement === 'global' && (\n <Button\n data-testid={testIds.close}\n variant='simple'\n ref={closeButtonRef}\n label={t('close')}\n icon\n onClick={close}\n >\n <Icon name='times' />\n </Button>\n )}\n {placement === 'local' && (\n <Button\n data-testid={testIds.close}\n variant='simple'\n label={t('enter_fullscreen')}\n icon\n onClick={() => setGlobalFromLocalOpen(true)}\n >\n <Icon name='undock' />\n </Button>\n )}\n </Flex>\n </Flex>\n\n <Flex\n container={{ justify: 'between' }}\n as={StyledPreviewRegion}\n item={{ grow: 1, shrink: 0 }}\n >\n {items.length > 1 && (\n <StyledNavButton\n data-testid={testIds.prev}\n ref={prevButtonRef}\n variant='simple'\n aria-label={t('pagination_prev')}\n hidden={!cycle && currentIndex === 0}\n icon\n onClick={() => {\n navigate(-1);\n }}\n >\n <span>\n <Icon name='caret-left' />\n </span>\n </StyledNavButton>\n )}\n\n <Flex item={{ grow: 1 }} as={StyledMediaContainer} global={global}>\n <Flex\n container={{ alignItems: 'center', justify: 'center' }}\n onMouseDown={(e: MouseEvent<HTMLDivElement>) => {\n if (e.button !== 0) return;\n if (e.target === e.currentTarget) close();\n }}\n >\n {currentItem.error ? <ErrorState message={t('content_load_error')} /> : media}\n </Flex>\n </Flex>\n\n {items.length > 1 && (\n <StyledNavButton\n data-testid={testIds.next}\n ref={nextButtonRef}\n variant='simple'\n aria-label={t('pagination_next')}\n hidden={!cycle && currentIndex === items.length - 1}\n icon\n onClick={() => {\n navigate(1);\n }}\n >\n <span>\n <Icon name='caret-right' />\n </span>\n </StyledNavButton>\n )}\n </Flex>\n {!global && (\n <Tooltip smart showDelay='none' hideDelay='none' target={lightboxTitle}>\n {currentItem.name}\n </Tooltip>\n )}\n <StyledLiveRegion aria-live='polite' aria-label={liveText} />\n </StyledLightbox>\n );\n\n const globalFromLocalLightbox = (\n <LightboxComp\n items={items}\n placement='global'\n defaultIndex={currentIndex}\n cycle={cycle}\n onItemLoad={onItemLoad}\n onItemError={onItemError}\n onNavigate={onNavigate}\n onItemDownload={onItemDownload}\n onAfterClose={() => setGlobalFromLocalOpen(false)}\n />\n );\n\n return (\n <>\n {global && portalTarget ? createPortal(content, portalTarget) : content}\n {globalFromLocalOpen && globalFromLocalLightbox}\n </>\n );\n});\n\nexport default withTestIds(LightboxComp, getLightboxTestIds);\n"]}
@@ -55,6 +55,8 @@ export interface LightboxItem {
55
55
  * @default false
56
56
  */
57
57
  error?: boolean;
58
+ /** When true, skips inline preview and shows the download-only fallback instead. */
59
+ disablePreview?: boolean;
58
60
  /** Additional info about the item. */
59
61
  metadata?: ReactNode[];
60
62
  /** A ref to the item's underlying element. */
@@ -1 +1 @@
1
- {"version":3,"file":"Lightbox.types.d.ts","sourceRoot":"","sources":["../../../src/components/Lightbox/Lightbox.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5D,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,MAAM,YAAY,GACpB,gBAAgB,GAChB,iBAAiB,GACjB,gBAAgB,GAChB,gBAAgB,CAAC;AAErB,MAAM,WAAW,mBAAmB;IAClC,wCAAwC;IACxC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,aAAc,SAAQ,cAAc,EAAE,SAAS,EAAE,UAAU;IAC1E,+DAA+D;IAC/D,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC/B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC,YAAY,CAAC,GAAG,KAAK,KAAK,IAAI,CAAC;IACvF,oEAAoE;IACpE,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC,YAAY,CAAC,GAAG,KAAK,KAAK,IAAI,CAAC;IACxF,oDAAoD;IACpD,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7D,yEAAyE;IACzE,cAAc,CAAC,EAAE,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAC1C,qEAAqE;IACrE,cAAc,CAAC,EAAE,CAAC,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IAClD,sDAAsD;IACtD,YAAY,CAAC,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;IACrD,4DAA4D;IAC5D,GAAG,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;CAC5B;AAED,MAAM,WAAW,YAAY;IAC3B,wCAAwC;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mFAAmF;IACnF,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,yCAAyC;IACzC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC;IACvB,8CAA8C;IAC9C,GAAG,CAAC,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;CACzB"}
1
+ {"version":3,"file":"Lightbox.types.d.ts","sourceRoot":"","sources":["../../../src/components/Lightbox/Lightbox.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5D,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,MAAM,YAAY,GACpB,gBAAgB,GAChB,iBAAiB,GACjB,gBAAgB,GAChB,gBAAgB,CAAC;AAErB,MAAM,WAAW,mBAAmB;IAClC,wCAAwC;IACxC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,aAAc,SAAQ,cAAc,EAAE,SAAS,EAAE,UAAU;IAC1E,+DAA+D;IAC/D,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC/B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC,YAAY,CAAC,GAAG,KAAK,KAAK,IAAI,CAAC;IACvF,oEAAoE;IACpE,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC,YAAY,CAAC,GAAG,KAAK,KAAK,IAAI,CAAC;IACxF,oDAAoD;IACpD,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7D,yEAAyE;IACzE,cAAc,CAAC,EAAE,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAC1C,qEAAqE;IACrE,cAAc,CAAC,EAAE,CAAC,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IAClD,sDAAsD;IACtD,YAAY,CAAC,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;IACrD,4DAA4D;IAC5D,GAAG,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;CAC5B;AAED,MAAM,WAAW,YAAY;IAC3B,wCAAwC;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mFAAmF;IACnF,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,yCAAyC;IACzC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,oFAAoF;IACpF,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC;IACvB,8CAA8C;IAC9C,GAAG,CAAC,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;CACzB"}
@@ -1 +1 @@
1
- {"version":3,"file":"Lightbox.types.js","sourceRoot":"","sources":["../../../src/components/Lightbox/Lightbox.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { ReactNode, Ref, SyntheticEvent } from 'react';\n\nimport type { NoChildrenProp, BaseProps, TestIdProp } from '../../types';\nimport type { BackdropProps } from '../Backdrop/Backdrop';\n\nexport type MediaElement =\n | HTMLImageElement\n | HTMLObjectElement\n | HTMLVideoElement\n | HTMLAudioElement;\n\nexport interface LightboxHandleValue {\n /** Used to navigate programatically. */\n navigate: (index: number) => void;\n}\n\nexport interface LightboxProps extends NoChildrenProp, BaseProps, TestIdProp {\n /** A list of compatible content to present in the lightbox. */\n items: LightboxItem[];\n /**\n * Determines the placement of the component.\n * @default 'global'\n */\n placement?: 'global' | 'local';\n /**\n * The index of the item to present on mount.\n * @default 0\n */\n defaultIndex?: number;\n /**\n * Allow cycling through the items in either direction.\n * @default false\n */\n cycle?: boolean;\n /** Called when an item's file is loaded. */\n onItemLoad?: (id: LightboxItem['id'], e: SyntheticEvent<MediaElement> | Event) => void;\n /** Called when an item's file encounters an error while loading. */\n onItemError?: (id: LightboxItem['id'], e: SyntheticEvent<MediaElement> | Event) => void;\n /** Called when the user navigates between items. */\n onNavigate?: (id: LightboxItem['id'], index: number) => void;\n /** Ref handle to imperatively trigger navigation to a specific index. */\n navigateHandle?: Ref<LightboxHandleValue>;\n /** Called when a download action is triggered for an item's file. */\n onItemDownload?: (id: LightboxItem['id']) => void;\n /** Called after the lightbox has transitioned out. */\n onAfterClose?: BackdropProps['onAfterTransitionOut'];\n /** A ref to the underlying root element of the lightbox. */\n ref?: BackdropProps['ref'];\n}\n\nexport interface LightboxItem {\n /** A unique identifier for the item. */\n id: string;\n /** The item's name e.g. filename. */\n name: string;\n /** Text to describe the item. */\n description?: string;\n /** URL for the item's binary file. Pass null for when src is not yet available. */\n src: string | null;\n /** File extension. Use 'url' for link */\n format: string | undefined;\n /**\n * Prop for showing Error state\n * @default false\n */\n error?: boolean;\n /** Additional info about the item. */\n metadata?: ReactNode[];\n /** A ref to the item's underlying element. */\n ref?: Ref<MediaElement>;\n}\n"]}
1
+ {"version":3,"file":"Lightbox.types.js","sourceRoot":"","sources":["../../../src/components/Lightbox/Lightbox.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { ReactNode, Ref, SyntheticEvent } from 'react';\n\nimport type { NoChildrenProp, BaseProps, TestIdProp } from '../../types';\nimport type { BackdropProps } from '../Backdrop/Backdrop';\n\nexport type MediaElement =\n | HTMLImageElement\n | HTMLObjectElement\n | HTMLVideoElement\n | HTMLAudioElement;\n\nexport interface LightboxHandleValue {\n /** Used to navigate programatically. */\n navigate: (index: number) => void;\n}\n\nexport interface LightboxProps extends NoChildrenProp, BaseProps, TestIdProp {\n /** A list of compatible content to present in the lightbox. */\n items: LightboxItem[];\n /**\n * Determines the placement of the component.\n * @default 'global'\n */\n placement?: 'global' | 'local';\n /**\n * The index of the item to present on mount.\n * @default 0\n */\n defaultIndex?: number;\n /**\n * Allow cycling through the items in either direction.\n * @default false\n */\n cycle?: boolean;\n /** Called when an item's file is loaded. */\n onItemLoad?: (id: LightboxItem['id'], e: SyntheticEvent<MediaElement> | Event) => void;\n /** Called when an item's file encounters an error while loading. */\n onItemError?: (id: LightboxItem['id'], e: SyntheticEvent<MediaElement> | Event) => void;\n /** Called when the user navigates between items. */\n onNavigate?: (id: LightboxItem['id'], index: number) => void;\n /** Ref handle to imperatively trigger navigation to a specific index. */\n navigateHandle?: Ref<LightboxHandleValue>;\n /** Called when a download action is triggered for an item's file. */\n onItemDownload?: (id: LightboxItem['id']) => void;\n /** Called after the lightbox has transitioned out. */\n onAfterClose?: BackdropProps['onAfterTransitionOut'];\n /** A ref to the underlying root element of the lightbox. */\n ref?: BackdropProps['ref'];\n}\n\nexport interface LightboxItem {\n /** A unique identifier for the item. */\n id: string;\n /** The item's name e.g. filename. */\n name: string;\n /** Text to describe the item. */\n description?: string;\n /** URL for the item's binary file. Pass null for when src is not yet available. */\n src: string | null;\n /** File extension. Use 'url' for link */\n format: string | undefined;\n /**\n * Prop for showing Error state\n * @default false\n */\n error?: boolean;\n /** When true, skips inline preview and shows the download-only fallback instead. */\n disablePreview?: boolean;\n /** Additional info about the item. */\n metadata?: ReactNode[];\n /** A ref to the item's underlying element. */\n ref?: Ref<MediaElement>;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ListToolbar.d.ts","sourceRoot":"","sources":["../../../src/components/ListToolbar/ListToolbar.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAU,+BAA+B,EAAE,MAAM,aAAa,CAAC;AA4C3E,OAAO,KAAK,EACV,gBAAgB,EAIjB,MAAM,qBAAqB,CAAC;;;;AA+f7B,wBAA+D"}
1
+ {"version":3,"file":"ListToolbar.d.ts","sourceRoot":"","sources":["../../../src/components/ListToolbar/ListToolbar.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAU,+BAA+B,EAAE,MAAM,aAAa,CAAC;AA4C3E,OAAO,KAAK,EACV,gBAAgB,EAIjB,MAAM,qBAAqB,CAAC;;;;AAigB7B,wBAA+D"}
@@ -207,7 +207,8 @@ const ListToolbar = forwardRef(function ListToolbar({ testId, name, headingTag =
207
207
  const viewItems = helpers.getViews(viewSelector?.views ?? []);
208
208
  const shouldRenderViewSelector = viewSelector &&
209
209
  (viewSelector.views.length > 1 ||
210
- (!!viewSelector.views.length && !!viewSelector.onCreateView));
210
+ (!!viewSelector.views.length && !!viewSelector.onCreateView) ||
211
+ (!!viewSelector.views.length && !!viewSelector.filterInputProps));
211
212
  const selectedViewName = shouldRenderViewSelector && !!viewItems.length
212
213
  ? helpers.getSelectedView(viewSelector.views)?.text ?? viewItems[0].text
213
214
  : '';
@@ -249,6 +250,7 @@ const ListToolbar = forwardRef(function ListToolbar({ testId, name, headingTag =
249
250
  };
250
251
  }),
251
252
  onItemClick: viewSelector.onViewSelect,
253
+ filterInputProps: viewSelector.filterInputProps,
252
254
  ...(viewSelector.onCreateView &&
253
255
  labelEl && {
254
256
  onCreateNew: {