From 8b7a068546e62597005e154cbb71f7863cd909ba Mon Sep 17 00:00:00 2001 From: JF-Cozy Date: Thu, 21 Mar 2024 12:31:01 +0100 Subject: [PATCH] feat(Viewer): Refactor PrintButton and use `ActionsItems` instead of doing it by hand --- react/ActionsMenu/ActionsItems.jsx | 8 +++ react/Viewer/components/PrintButton.jsx | 77 +++++++++++++++---------- 2 files changed, 55 insertions(+), 30 deletions(-) diff --git a/react/ActionsMenu/ActionsItems.jsx b/react/ActionsMenu/ActionsItems.jsx index d9a66f415..f723be860 100644 --- a/react/ActionsMenu/ActionsItems.jsx +++ b/react/ActionsMenu/ActionsItems.jsx @@ -74,4 +74,12 @@ ActionsItems.propTypes = { onClick: PropTypes.func } +export const actionsItemsComponentPropTypes = { + docs: PropTypes.array, + action: PropTypes.object, + autoFocus: PropTypes.bool, + disabled: PropTypes.bool, + onClick: PropTypes.func +} + export default ActionsItems diff --git a/react/Viewer/components/PrintButton.jsx b/react/Viewer/components/PrintButton.jsx index e05681461..8b083cc22 100644 --- a/react/Viewer/components/PrintButton.jsx +++ b/react/Viewer/components/PrintButton.jsx @@ -1,30 +1,57 @@ -import React, { useState, useEffect } from 'react' +import React, { useState, useEffect, forwardRef } from 'react' import PropTypes from 'prop-types' -import { useClient } from 'cozy-client' import { useWebviewIntent } from 'cozy-intent' import Button from '../../Buttons' import IconButton from '../../IconButton' import Icon from '../../Icon' +import ActionsItems, { + actionsItemsComponentPropTypes +} from '../../ActionsMenu/ActionsItems' import { print } from '../../ActionsMenu/Actions/print' +import { makeActions } from '../../ActionsMenu/Actions/helpers' + +const ActionComponent = forwardRef(({ action, variant, onClick }, ref) => { + const { label, icon } = action + + if (variant === 'button') { + return ( +