File "InstallFreeTemplateKitButton.jsx"
Full Path: /home/rubycabfbt/www/wp-content/plugins/envato-elements/src/js/react/components/Buttons/InstallFreeTemplateKitButton.jsx
File size: 1.85 KB
MIME-type: text/plain
Charset: utf-8
import React from 'react'
import installFreeTemplateKit from '../../api/installFreeTemplateKit'
import Button from './Button'
import InternalLinkButton from './InternalLinkButton'
import ButtonActionProvider from '../Actions/ButtonActionProvider'
import { getImportedKitUrl } from '../../utils/linkGenerator'
import useGlobalConfig from '../Contexts/useGlobalConfig'
/**
* Helper to render a series of buttons to install a template kit.
*
* @param templateKitId
* @param importedTemplateKitId
* @param customActionHook
* @param completeCallback
* @param errorCallback
* @returns {*}
* @constructor
*/
const InstallFreeTemplateKitButton = ({ zipUrl, templateKitId, importedTemplateKitId, customActionHook = null, completeCallback = null, errorCallback = null }) => {
const { addDownloadedItem } = useGlobalConfig()
return (
<ButtonActionProvider
DefaultButton={<Button type='primary' label='Install Kit' icon='plus' />}
LoadingButton={<Button type='primary' label='Installing' icon='updateSpinning' disabled />}
ErrorButton={<Button type='warning' label='Error' icon='cross' disabled />}
SuccessButton={<Button type='primary' label='Success!' icon='plus' disabled />}
CompletedButton={<InternalLinkButton type='primary' label='View Kit' icon='eye' href={getImportedKitUrl({ importedTemplateKitId })} />}
actionHook={() => customActionHook ? customActionHook() : installFreeTemplateKit({ zipUrl, templateKitId })}
isAlreadyCompleted={!!importedTemplateKitId}
completedCallback={(data) => {
if (data && data.success && data.template_kit_id) {
addDownloadedItem({ humaneId: templateKitId, importedId: data.template_kit_id })
}
if (completeCallback) {
completeCallback(data)
}
}}
errorCallback={errorCallback}
/>
)
}
export default InstallFreeTemplateKitButton