Skip to content

Commit ef6badd

Browse files
committed
Add class to provider container elements
1 parent 88623f4 commit ef6badd

7 files changed

Lines changed: 46 additions & 20 deletions

File tree

src/components/Chatwoot/index.tsx

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import React, { CSSProperties } from 'react'
22

33
import useChat from '../../hooks/useChat'
4+
import { ProviderProps, ClassNames } from '../../types'
45

56
const styles: {
67
button: CSSProperties
@@ -34,17 +35,20 @@ const styles: {
3435
}
3536
}
3637

37-
interface Props {
38+
interface Props extends ProviderProps {
3839
color?: string
3940
}
4041

41-
const Provider = ({ color }: Props): JSX.Element | null => {
42+
const Provider = ({
43+
color,
44+
containerClass = ClassNames.container
45+
}: Props): JSX.Element | null => {
4246
const [state, loadChat] = useChat({ loadWhenIdle: true })
4347

4448
if (state === 'complete') return null
4549

4650
return (
47-
<div>
51+
<div className={containerClass}>
4852
<div
4953
role="button"
5054
aria-label="Load Chat"

src/components/Drift/index.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import React, { useState, useEffect, CSSProperties } from 'react'
22

33
import useChat from '../../hooks/useChat'
44
import useWindowWidth from '../../hooks/useWindowWidth'
5+
import { ProviderProps, ClassNames } from '../../types'
56

67
const styles: {
78
container: CSSProperties
@@ -40,14 +41,15 @@ const styles: {
4041
}
4142
}
4243

43-
interface Props {
44+
interface Props extends ProviderProps {
4445
color?: string
4546
icon?: 'A' | 'B' | 'C' | 'D'
4647
}
4748

4849
const Drift = ({
4950
color = '#0176ff',
50-
icon = 'A'
51+
icon = 'A',
52+
containerClass = ClassNames.container
5153
}: Props): JSX.Element | null => {
5254
const [state, loadChat] = useChat({ loadWhenIdle: true })
5355
const windowWidth = useWindowWidth()
@@ -72,7 +74,7 @@ const Drift = ({
7274
}
7375

7476
return (
75-
<div style={positionStyles}>
77+
<div className={containerClass} style={positionStyles}>
7678
<div style={styles.container}>
7779
<div
7880
role="button"

src/components/HelpScout/index.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import React, { CSSProperties, useEffect, useState } from 'react'
22

33
import useChat from '../../hooks/useChat'
44
import useWindowHeight from '../../hooks/useWindowHeight'
5+
import { ProviderProps, ClassNames } from '../../types'
56

67
const styles: {
78
wrapper: CSSProperties
@@ -157,7 +158,7 @@ const getIcon = (icon: HelpScoutIcon): JSX.Element => {
157158
}
158159
}
159160

160-
interface Props {
161+
interface Props extends ProviderProps {
161162
color?: string
162163
icon?: HelpScoutIcon
163164
zIndex?: string
@@ -168,7 +169,8 @@ const HelpScout = ({
168169
color = '#976ad4',
169170
icon = 'beacon',
170171
zIndex = '1050',
171-
horizontalPosition = 'left'
172+
horizontalPosition = 'left',
173+
containerClass = ClassNames.container
172174
}: Props): JSX.Element | null => {
173175
const [state, loadChat] = useChat({ loadWhenIdle: true })
174176
const windowHeight = useWindowHeight()
@@ -201,6 +203,7 @@ const HelpScout = ({
201203

202204
return (
203205
<div
206+
className={containerClass}
204207
style={{
205208
...styles.wrapper,
206209
...positionStyles,

src/components/Intercom/index.tsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import React, { CSSProperties } from 'react'
22

33
import useChat from '../../hooks/useChat'
4+
import { ProviderProps, ClassNames } from '../../types'
45

56
const styles: {
67
wrapper: CSSProperties
@@ -88,11 +89,14 @@ const styles: {
8889
}
8990
}
9091

91-
interface Props {
92+
interface Props extends ProviderProps {
9293
color?: string
9394
}
9495

95-
const Intercom = ({ color }: Props): JSX.Element | null => {
96+
const Intercom = ({
97+
color,
98+
containerClass = ClassNames.container
99+
}: Props): JSX.Element | null => {
96100
const [state, loadChat] = useChat({ loadWhenIdle: true })
97101

98102
if (state === 'complete') {
@@ -101,6 +105,7 @@ const Intercom = ({ color }: Props): JSX.Element | null => {
101105

102106
return (
103107
<div
108+
className={containerClass}
104109
style={{
105110
...styles.wrapper,
106111
background: color

src/components/Messenger/index.tsx

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import React, { CSSProperties, memo } from 'react'
22

33
import useProvider from '../../hooks/useProvider'
44
import useChat from '../../hooks/useChat'
5+
import { ProviderProps, ClassNames } from '../../types'
56

67
const styles: CSSProperties = {
78
appearance: 'none',
@@ -24,7 +25,7 @@ const styles: CSSProperties = {
2425
userSelect: 'none'
2526
}
2627

27-
interface Props {
28+
interface Props extends ProviderProps {
2829
themeColor?: string
2930
loggedInGreeting?: string
3031
loggedOutGreeting?: string
@@ -34,7 +35,6 @@ interface Props {
3435
greetingDialogDelay?: string
3536
greetingDialogDisplay?: string
3637
color?: string
37-
className?: string
3838
}
3939

4040
interface ChatProps extends Props {
@@ -70,10 +70,10 @@ const CustomerChat = memo(
7070

7171
const Widget = ({
7272
color,
73-
className
73+
containerClass
7474
}: {
7575
color: string
76-
className: string
76+
containerClass: string
7777
}): JSX.Element | null => {
7878
const [state, loadChat] = useChat({ loadWhenIdle: true })
7979

@@ -83,7 +83,7 @@ const Widget = ({
8383

8484
return (
8585
<div
86-
className={className}
86+
className={containerClass}
8787
style={styles}
8888
role="button"
8989
aria-label="Load Chat"
@@ -114,15 +114,15 @@ const Widget = ({
114114

115115
const Messenger = ({
116116
color = '',
117-
className = 'live-chat-loader-placeholder',
117+
containerClass = ClassNames.container,
118118
...props
119119
}: Props): JSX.Element => {
120120
const { providerKey } = useProvider()
121121

122122
return (
123123
<>
124124
<CustomerChat color={color} providerKey={providerKey} {...props} />
125-
<Widget color={color} className={className} />
125+
<Widget color={color} containerClass={containerClass} />
126126
</>
127127
)
128128
}

src/components/Userlike/index.tsx

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import React, { CSSProperties } from 'react'
22

33
import useChat from '../../hooks/useChat'
4+
import { ProviderProps, ClassNames } from '../../types'
45

56
const styles: {
67
container: CSSProperties
@@ -34,7 +35,7 @@ const styles: {
3435
}
3536
}
3637

37-
interface Props {
38+
interface Props extends ProviderProps {
3839
color?: string
3940
backgroundColor?: string
4041
position?: string
@@ -49,7 +50,8 @@ const Userlike = ({
4950
position = 'right',
5051
vOffset = '24px',
5152
hOffset = '24px',
52-
style = 'round'
53+
style = 'round',
54+
containerClass = ClassNames.container
5355
}: Props): JSX.Element | null => {
5456
const [state, loadChat] = useChat({ loadWhenIdle: true })
5557
const positionStyles = {
@@ -66,7 +68,10 @@ const Userlike = ({
6668
}
6769

6870
return (
69-
<div style={{ ...styles.container, ...positionStyles, ...shapeStyle }}>
71+
<div
72+
className={containerClass}
73+
style={{ ...styles.container, ...positionStyles, ...shapeStyle }}
74+
>
7075
<button
7176
role="button"
7277
aria-label="Load Chat"

src/types.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
export enum ClassNames {
2+
container = 'live-chat-loader-placeholder'
3+
}
4+
export interface ProviderProps {
5+
containerClass?: string
6+
}
7+
18
export type State = 'initial' | 'open' | 'complete'
29

310
export type Provider =

0 commit comments

Comments
 (0)