Skip to content

Commit bb313e3

Browse files
authored
Merge pull request #942 from devtron-labs/feat/create-backup
feat: add validateCronExpression
2 parents 33ee55b + 44f5ce2 commit bb313e3

File tree

11 files changed

+109
-11
lines changed

11 files changed

+109
-11
lines changed

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@devtron-labs/devtron-fe-common-lib",
3-
"version": "1.20.6-pre-31",
3+
"version": "1.20.6-alpha-31",
44
"description": "Supporting common component library",
55
"type": "module",
66
"main": "dist/index.js",
Lines changed: 6 additions & 0 deletions
Loading
Lines changed: 5 additions & 0 deletions
Loading
Lines changed: 3 additions & 0 deletions
Loading

src/Assets/IconV2/ic-pause.svg

Lines changed: 4 additions & 0 deletions
Loading

src/Common/ClipboardButton/ClipboardButton.tsx

Lines changed: 35 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,12 @@
1717
import { useEffect, useRef, useState } from 'react'
1818

1919
import Tooltip from '@Common/Tooltip/Tooltip'
20+
import { Button, ButtonStyleType, ButtonVariantType } from '@Shared/Components/Button'
2021

2122
import { ReactComponent as Check } from '../../Assets/Icon/ic-check.svg'
2223
import { ReactComponent as ICCopy } from '../../Assets/Icon/ic-copy.svg'
2324
import { copyToClipboard, noop, stopPropagation } from '../Helper'
24-
import ClipboardProps from './types'
25+
import { ClipboardProps } from './types'
2526

2627
/**
2728
* @param content - Content to be copied
@@ -40,6 +41,8 @@ export const ClipboardButton = ({
4041
rootClassName = '',
4142
iconSize = 16,
4243
handleSuccess,
44+
variant = 'default',
45+
size,
4346
}: ClipboardProps) => {
4447
const [copied, setCopied] = useState<boolean>(false)
4548
const setCopiedFalseTimeoutRef = useRef<ReturnType<typeof setTimeout>>(-1)
@@ -96,18 +99,44 @@ export const ClipboardButton = ({
9699

97100
const iconClassName = `icon-dim-${iconSize} dc__no-shrink`
98101

102+
const ariaLabel = `Copy ${content}`
103+
104+
const renderIcon = () => (
105+
<div className="flex">
106+
{copied ? <Check className={iconClassName} /> : <ICCopy className={iconClassName} />}
107+
</div>
108+
)
109+
110+
const tooltipContent = copied ? copiedTippyText : initialTippyText
111+
112+
if (variant === 'button--secondary') {
113+
return (
114+
<Button
115+
variant={ButtonVariantType.secondary}
116+
dataTestId="clippy-button"
117+
icon={renderIcon()}
118+
size={size}
119+
onClick={handleCopyContent}
120+
tooltipProps={{
121+
content: tooltipContent,
122+
}}
123+
showTooltip
124+
ariaLabel={ariaLabel}
125+
style={ButtonStyleType.neutral}
126+
/>
127+
)
128+
}
129+
99130
return (
100-
<Tooltip content={copied ? copiedTippyText : initialTippyText} alwaysShowTippyOnHover>
131+
<Tooltip content={tooltipContent} alwaysShowTippyOnHover>
101132
{/* TODO: semantically buttons should not be nested; fix later */}
102133
<button
103134
type="button"
104135
className={`dc__outline-none-imp p-0 flex dc__transparent--unstyled dc__no-border ${rootClassName}`}
105-
aria-label={`Copy ${content}`}
136+
aria-label={ariaLabel}
106137
onClick={handleCopyContent}
107138
>
108-
<div className="flex">
109-
{copied ? <Check className={iconClassName} /> : <ICCopy className={iconClassName} />}
110-
</div>
139+
{renderIcon()}
111140
</button>
112141
</Tooltip>
113142
)

src/Common/ClipboardButton/types.ts

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,21 @@
1414
* limitations under the License.
1515
*/
1616

17-
export default interface ClipboardProps {
17+
import { ComponentSizeType } from '@Shared/constants'
18+
19+
export type ClipboardProps = (
20+
| {
21+
/**
22+
* @default 'default'
23+
*/
24+
variant?: 'default'
25+
size?: never
26+
}
27+
| {
28+
variant: 'button--secondary'
29+
size: ComponentSizeType
30+
}
31+
) & {
1832
content: string
1933
/**
2034
* tippy text before copying

src/Common/Constants.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ export const URLS = {
137137
DATA_PROTECTION: DATA_PROTECTION_ROOT,
138138
DATA_PROTECTION_OVERVIEW: `${DATA_PROTECTION_ROOT}/overview`,
139139
DATA_PROTECTION_BACKUP_AND_SCHEDULE,
140-
DATA_PROTECTION_BACKUP_AND_SCHEDULE_DETAIL: `${DATA_PROTECTION_BACKUP_AND_SCHEDULE}/:name`,
140+
DATA_PROTECTION_BACKUP_AND_SCHEDULE_DETAIL: `${DATA_PROTECTION_BACKUP_AND_SCHEDULE}/detail/:id`,
141141
DATA_PROTECTION_RESTORES: `${DATA_PROTECTION_ROOT}/restores`,
142142
DATA_PROTECTION_RESTORES_DETAIL: `${DATA_PROTECTION_ROOT}/restores/:restoreId`,
143143
DATA_PROTECTION_BACKUP_LOCATIONS: `${DATA_PROTECTION_ROOT}/backup-locations/:type(${Object.values(BackupLocationsTypes).join('|')})`,

src/Shared/Components/Icon/Icon.tsx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,9 @@ import { ReactComponent as ICAwsCodecommit } from '@IconsV2/ic-aws-codecommit.sv
2727
import { ReactComponent as ICAzure } from '@IconsV2/ic-azure.svg'
2828
import { ReactComponent as ICAzureAks } from '@IconsV2/ic-azure-aks.svg'
2929
import { ReactComponent as ICBackupAndSchedule } from '@IconsV2/ic-backup-and-schedule.svg'
30+
import { ReactComponent as ICBackupColor } from '@IconsV2/ic-backup-color.svg'
3031
import { ReactComponent as ICBackupLocation } from '@IconsV2/ic-backup-location.svg'
32+
import { ReactComponent as ICBackupScheduleColor } from '@IconsV2/ic-backup-schedule-color.svg'
3133
import { ReactComponent as ICBgBuild } from '@IconsV2/ic-bg-build.svg'
3234
import { ReactComponent as ICBgCluster } from '@IconsV2/ic-bg-cluster.svg'
3335
import { ReactComponent as ICBgCpu } from '@IconsV2/ic-bg-cpu.svg'
@@ -71,6 +73,7 @@ import { ReactComponent as ICClock } from '@IconsV2/ic-clock.svg'
7173
import { ReactComponent as ICClockCounterclockwise } from '@IconsV2/ic-clock-counterclockwise.svg'
7274
import { ReactComponent as ICCloseLarge } from '@IconsV2/ic-close-large.svg'
7375
import { ReactComponent as ICCloseSmall } from '@IconsV2/ic-close-small.svg'
76+
import { ReactComponent as ICCloudUpload } from '@IconsV2/ic-cloud-upload.svg'
7477
import { ReactComponent as ICCloudVms } from '@IconsV2/ic-cloud-vms.svg'
7578
import { ReactComponent as ICCluster } from '@IconsV2/ic-cluster.svg'
7679
import { ReactComponent as ICClusterIsolated } from '@IconsV2/ic-cluster-isolated.svg'
@@ -216,6 +219,7 @@ import { ReactComponent as ICPaperPlane } from '@IconsV2/ic-paper-plane.svg'
216219
import { ReactComponent as ICPaperPlaneColor } from '@IconsV2/ic-paper-plane-color.svg'
217220
import { ReactComponent as ICParty } from '@IconsV2/ic-party.svg'
218221
import { ReactComponent as ICPath } from '@IconsV2/ic-path.svg'
222+
import { ReactComponent as ICPause } from '@IconsV2/ic-pause.svg'
219223
import { ReactComponent as ICPauseCircle } from '@IconsV2/ic-pause-circle.svg'
220224
import { ReactComponent as ICPencil } from '@IconsV2/ic-pencil.svg'
221225
import { ReactComponent as ICPlayOutline } from '@IconsV2/ic-play-outline.svg'
@@ -324,7 +328,9 @@ export const iconMap = {
324328
'ic-azure-aks': ICAzureAks,
325329
'ic-azure': ICAzure,
326330
'ic-backup-and-schedule': ICBackupAndSchedule,
331+
'ic-backup-color': ICBackupColor,
327332
'ic-backup-location': ICBackupLocation,
333+
'ic-backup-schedule-color': ICBackupScheduleColor,
328334
'ic-bg-build': ICBgBuild,
329335
'ic-bg-cluster': ICBgCluster,
330336
'ic-bg-cpu': ICBgCpu,
@@ -368,6 +374,7 @@ export const iconMap = {
368374
'ic-clock': ICClock,
369375
'ic-close-large': ICCloseLarge,
370376
'ic-close-small': ICCloseSmall,
377+
'ic-cloud-upload': ICCloudUpload,
371378
'ic-cloud-vms': ICCloudVms,
372379
'ic-cluster-isolated': ICClusterIsolated,
373380
'ic-cluster': ICCluster,
@@ -514,6 +521,7 @@ export const iconMap = {
514521
'ic-party': ICParty,
515522
'ic-path': ICPath,
516523
'ic-pause-circle': ICPauseCircle,
524+
'ic-pause': ICPause,
517525
'ic-pencil': ICPencil,
518526
'ic-play-outline': ICPlayOutline,
519527
'ic-priority-medium-fill': ICPriorityMediumFill,

0 commit comments

Comments
 (0)