@homefile/components-v2 2.1.0 → 2.2.0
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.
- package/dist/assets/images/ia.svg +15 -16
- package/dist/assets/images/index.d.ts +2 -1
- package/dist/assets/images/index.js +2 -1
- package/dist/assets/images/index.ts +2 -0
- package/dist/assets/images/pressure-washer.svg +16 -0
- package/dist/assets/locales/en/index.json +8 -7
- package/dist/components/animations/HomieAnimation.d.ts +3 -1
- package/dist/components/animations/HomieAnimation.js +2 -2
- package/dist/components/contacts/ContactsContent.js +1 -1
- package/dist/components/forms/dynamicForm/DynamicForm.js +3 -1
- package/dist/components/forms/dynamicForm/fields/CheckboxGroupField.d.ts +2 -0
- package/dist/components/forms/dynamicForm/fields/CheckboxGroupField.js +18 -0
- package/dist/components/forms/dynamicForm/fields/SingleFields.js +3 -3
- package/dist/components/forms/dynamicForm/fields/index.d.ts +1 -0
- package/dist/components/forms/dynamicForm/fields/index.js +1 -0
- package/dist/components/forms/dynamicForm/fields/uiFields/TileBodyAction.d.ts +1 -1
- package/dist/components/forms/dynamicForm/fields/uiFields/TileBodyAction.js +2 -2
- package/dist/components/forms/dynamicForm/fields/uiFields/TileBodyAction.tsx +2 -2
- package/dist/components/forms/dynamicForm/fields/uiFields/TileCta.d.ts +1 -1
- package/dist/components/forms/dynamicForm/fields/uiFields/TileCta.js +15 -2
- package/dist/components/forms/dynamicForm/fields/uiFields/TileCta.tsx +3 -2
- package/dist/components/homeAssistant/HomeAssistantTutorial.js +1 -1
- package/dist/components/homeAssistant/HomeAssistantWrapper.js +1 -1
- package/dist/components/homeAssistant/HomeMonitorButton.d.ts +1 -1
- package/dist/components/homeAssistant/HomeMonitorButton.js +3 -8
- package/dist/components/homeAssistant/HomeMonitorSteps.js +18 -4
- package/dist/components/homeAssistant/monitorAlerts/HomefileMonitoring.js +1 -1
- package/dist/components/homeAssistant/panel/ApplianceSteps.js +4 -1
- package/dist/components/homeAssistant/panel/HomeAssistantPanel.js +14 -1
- package/dist/components/homeBoard/HomeBoard.js +7 -2
- package/dist/components/inputs/SelectButton.js +1 -1
- package/dist/components/launchpad/IconMenu.d.ts +1 -1
- package/dist/components/launchpad/IconMenu.js +2 -2
- package/dist/helpers/forms/dynamicForm.helper.js +2 -1
- package/dist/interfaces/forms/dynamicForm/DynamicForm.interface.d.ts +2 -2
- package/dist/interfaces/forms/dynamicForm/fields/UIFields.interface.d.ts +14 -3
- package/dist/interfaces/homeAssistant/ApplianceSteps.interface.d.ts +1 -2
- package/dist/interfaces/homeAssistant/HomeMonitorSteps.interface.d.ts +0 -1
- package/dist/interfaces/launchpad/IconMenu.interface.d.ts +2 -0
- package/dist/mocks/forms/dynamicForm.mock.js +66 -0
- package/dist/mocks/homeAssistant/homeAssistantForms.js +6 -0
- package/dist/stories/animations/HomieAnimation.stories.d.ts +1 -0
- package/dist/stories/animations/HomieAnimation.stories.js +1 -0
- package/dist/stories/assets/Illustrations.stories.js +2 -2
- package/dist/stories/forms/dynamicForm/DynamicForm.stories.js +1 -3
- package/package.json +1 -1
- package/src/assets/images/ia.svg +15 -16
- package/src/assets/images/index.ts +2 -0
- package/src/assets/images/pressure-washer.svg +16 -0
- package/src/assets/locales/en/index.json +8 -7
- package/src/components/animations/HomieAnimation.tsx +2 -2
- package/src/components/contacts/ContactsContent.tsx +1 -1
- package/src/components/forms/dynamicForm/DynamicForm.tsx +11 -0
- package/src/components/forms/dynamicForm/fields/CheckboxGroupField.tsx +65 -0
- package/src/components/forms/dynamicForm/fields/SingleFields.tsx +12 -2
- package/src/components/forms/dynamicForm/fields/index.ts +1 -0
- package/src/components/forms/dynamicForm/fields/uiFields/TileBodyAction.tsx +2 -2
- package/src/components/forms/dynamicForm/fields/uiFields/TileCta.tsx +3 -2
- package/src/components/homeAssistant/HomeAssistantTutorial.tsx +3 -0
- package/src/components/homeAssistant/HomeAssistantWrapper.tsx +0 -5
- package/src/components/homeAssistant/HomeMonitorButton.tsx +3 -17
- package/src/components/homeAssistant/HomeMonitorSteps.tsx +36 -10
- package/src/components/homeAssistant/monitorAlerts/HomefileMonitoring.tsx +1 -1
- package/src/components/homeAssistant/panel/ApplianceSteps.tsx +7 -1
- package/src/components/homeAssistant/panel/HomeAssistantPanel.tsx +21 -3
- package/src/components/homeBoard/HomeBoard.tsx +23 -0
- package/src/components/inputs/SelectButton.tsx +3 -1
- package/src/components/launchpad/IconMenu.tsx +4 -1
- package/src/helpers/forms/dynamicForm.helper.ts +2 -0
- package/src/interfaces/forms/dynamicForm/DynamicForm.interface.ts +3 -0
- package/src/interfaces/forms/dynamicForm/fields/UIFields.interface.ts +18 -3
- package/src/interfaces/homeAssistant/ApplianceSteps.interface.ts +1 -1
- package/src/interfaces/homeAssistant/HomeMonitorSteps.interface.ts +0 -1
- package/src/interfaces/launchpad/IconMenu.interface.ts +2 -0
- package/src/mocks/forms/dynamicForm.mock.ts +67 -0
- package/src/mocks/homeAssistant/homeAssistantForms.ts +6 -0
- package/src/stories/animations/HomieAnimation.stories.tsx +1 -0
- package/src/stories/assets/Illustrations.stories.tsx +2 -0
- package/src/stories/forms/dynamicForm/DynamicForm.stories.tsx +6 -3
|
@@ -48,7 +48,6 @@ export const HomeAssistantWrapper = ({
|
|
|
48
48
|
h="80px"
|
|
49
49
|
top="80px"
|
|
50
50
|
animation={`${moveRightToLeftWithFade} 400s linear infinite`}
|
|
51
|
-
zIndex="1"
|
|
52
51
|
/>
|
|
53
52
|
<Image
|
|
54
53
|
src={Cloud2}
|
|
@@ -57,7 +56,6 @@ export const HomeAssistantWrapper = ({
|
|
|
57
56
|
h="112px"
|
|
58
57
|
top="150px"
|
|
59
58
|
animation={`${moveRightToLeft} 200s linear infinite`}
|
|
60
|
-
zIndex="1"
|
|
61
59
|
/>
|
|
62
60
|
<Image
|
|
63
61
|
src={Cloud3}
|
|
@@ -66,7 +64,6 @@ export const HomeAssistantWrapper = ({
|
|
|
66
64
|
h="160px"
|
|
67
65
|
top="200px"
|
|
68
66
|
animation={`${moveRightToLeft} 130s linear infinite`}
|
|
69
|
-
zIndex="1"
|
|
70
67
|
/>
|
|
71
68
|
{showAirplane && (
|
|
72
69
|
<Image
|
|
@@ -76,7 +73,6 @@ export const HomeAssistantWrapper = ({
|
|
|
76
73
|
h="40px"
|
|
77
74
|
top="85px"
|
|
78
75
|
animation={`${moveLeftToRightAirplane} 500s cubic-bezier(1, 1, 1, 500) infinite`}
|
|
79
|
-
zIndex="1"
|
|
80
76
|
/>
|
|
81
77
|
)}
|
|
82
78
|
<Image
|
|
@@ -87,7 +83,6 @@ export const HomeAssistantWrapper = ({
|
|
|
87
83
|
right="2"
|
|
88
84
|
w="auto"
|
|
89
85
|
h="70px"
|
|
90
|
-
zIndex="1"
|
|
91
86
|
/>
|
|
92
87
|
</Box>
|
|
93
88
|
</TileTooltip>
|
|
@@ -1,24 +1,18 @@
|
|
|
1
1
|
import { Box, Center, Image, Stack, Text } from '@chakra-ui/react'
|
|
2
2
|
import { HomeMonitorButtonI } from '@/interfaces'
|
|
3
3
|
import { getIconAltText } from '@/utils'
|
|
4
|
-
import { IconMenu, MoreHorizontal } from '@/components'
|
|
5
4
|
|
|
6
5
|
export const HomeMonitorButton = ({
|
|
7
6
|
currentStep,
|
|
8
|
-
menuItems,
|
|
9
7
|
onStepClick,
|
|
10
8
|
status = 'ok',
|
|
11
9
|
step,
|
|
12
10
|
}: HomeMonitorButtonI) => {
|
|
11
|
+
const buttonId = `homeMonitorButton-${currentStep}`
|
|
13
12
|
const iconAltText = getIconAltText(step.icon)
|
|
14
|
-
const handleClick = () => {
|
|
15
|
-
if (status !== 'ok') onStepClick(currentStep)
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
const isDisabled = Number(menuItems.length) === 0
|
|
19
13
|
|
|
20
14
|
return (
|
|
21
|
-
<Box position="relative">
|
|
15
|
+
<Box position="relative" id={buttonId}>
|
|
22
16
|
<Box
|
|
23
17
|
position="relative"
|
|
24
18
|
bg="neutral.white"
|
|
@@ -47,7 +41,7 @@ export const HomeMonitorButton = ({
|
|
|
47
41
|
h="96px"
|
|
48
42
|
py="base"
|
|
49
43
|
{...setStyles(status)}
|
|
50
|
-
onClick={
|
|
44
|
+
onClick={() => onStepClick(currentStep)}
|
|
51
45
|
>
|
|
52
46
|
<Center h="60%" marginTop="2">
|
|
53
47
|
<Image src={step.icon} alt={iconAltText} w="auto" h="28px" />
|
|
@@ -64,14 +58,6 @@ export const HomeMonitorButton = ({
|
|
|
64
58
|
</Center>
|
|
65
59
|
</Stack>
|
|
66
60
|
</Box>
|
|
67
|
-
<Box position="absolute" top="-2px" right="4px" zIndex="4">
|
|
68
|
-
<IconMenu
|
|
69
|
-
icon={<MoreHorizontal size={26} />}
|
|
70
|
-
itemForm={currentStep}
|
|
71
|
-
menuItems={menuItems}
|
|
72
|
-
disabled={isDisabled}
|
|
73
|
-
/>
|
|
74
|
-
</Box>
|
|
75
61
|
</Box>
|
|
76
62
|
)
|
|
77
63
|
}
|
|
@@ -1,24 +1,50 @@
|
|
|
1
1
|
import { Box, Flex } from '@chakra-ui/react'
|
|
2
2
|
import { HomeMonitortStepsI } from '@/interfaces'
|
|
3
|
-
import { HomeMonitorButton } from '@/components'
|
|
3
|
+
import { HomeMonitorButton, IconMenu, MoreHorizontal } from '@/components'
|
|
4
4
|
import { homeAssistantSteps } from '@/helpers'
|
|
5
|
+
import { useComponentStyles } from '@/hooks'
|
|
6
|
+
import { useState } from 'react'
|
|
5
7
|
|
|
6
8
|
export const HomeMonitorSteps = ({
|
|
7
|
-
menuItems,
|
|
9
|
+
menuItems = [],
|
|
8
10
|
onStepClick,
|
|
9
11
|
stepsWithAlerts,
|
|
10
12
|
}: HomeMonitortStepsI) => {
|
|
13
|
+
const ids = [
|
|
14
|
+
'homeMonitorButton-1',
|
|
15
|
+
'homeMonitorButton-2',
|
|
16
|
+
'homeMonitorButton-3',
|
|
17
|
+
'homeMonitorButton-4',
|
|
18
|
+
'homeMonitorButton-5',
|
|
19
|
+
'homeMonitorButton-6',
|
|
20
|
+
]
|
|
21
|
+
const [selectedId, setSelectedId] = useState<string>('')
|
|
22
|
+
const isDisabled = menuItems.length === 0
|
|
23
|
+
|
|
24
|
+
useComponentStyles({ ids, selectedId, zIndex: '2' })
|
|
25
|
+
const handleStepClick = (step: number) => onStepClick(step)
|
|
11
26
|
return (
|
|
12
27
|
<Flex gap="base">
|
|
13
28
|
{homeAssistantSteps.map((step, index) => (
|
|
14
|
-
<Box key={step
|
|
15
|
-
<
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
29
|
+
<Box key={step?.title} position="relative">
|
|
30
|
+
<Box flex="auto">
|
|
31
|
+
<HomeMonitorButton
|
|
32
|
+
currentStep={index + 1}
|
|
33
|
+
onStepClick={handleStepClick}
|
|
34
|
+
status={getStatus(index + 1, stepsWithAlerts)}
|
|
35
|
+
step={step}
|
|
36
|
+
/>
|
|
37
|
+
<Box position="absolute" top="-2px" right="4px" zIndex="1400">
|
|
38
|
+
<IconMenu
|
|
39
|
+
zIndex="2"
|
|
40
|
+
icon={<MoreHorizontal size={26} />}
|
|
41
|
+
itemForm={index + 1}
|
|
42
|
+
menuItems={menuItems}
|
|
43
|
+
disabled={isDisabled}
|
|
44
|
+
onClick={() => setSelectedId(`homeMonitorButton-${index + 1}`)}
|
|
45
|
+
/>
|
|
46
|
+
</Box>
|
|
47
|
+
</Box>
|
|
22
48
|
</Box>
|
|
23
49
|
))}
|
|
24
50
|
</Flex>
|
|
@@ -7,7 +7,7 @@ export const HomefileMonitoring = () => {
|
|
|
7
7
|
<Box p="base" borderRadius="lg" bg="#C5E9F4" h="66px" zIndex="2" flex="1">
|
|
8
8
|
<Flex align="center">
|
|
9
9
|
<Box boxSize="47px">
|
|
10
|
-
<HomieAnimation />
|
|
10
|
+
<HomieAnimation animation="homie-v3" />
|
|
11
11
|
</Box>
|
|
12
12
|
<Text>{t('homeAssistant.homeMonitoring')}</Text>
|
|
13
13
|
</Flex>
|
|
@@ -14,13 +14,18 @@ import {
|
|
|
14
14
|
Microwave,
|
|
15
15
|
Range,
|
|
16
16
|
} from '@/assets/images'
|
|
17
|
-
import { useState } from 'react'
|
|
17
|
+
import { useState, useEffect } from 'react'
|
|
18
18
|
|
|
19
19
|
export const ApplianceSteps = ({
|
|
20
20
|
addedAppliances = [],
|
|
21
21
|
onClick,
|
|
22
22
|
}: ApplianceStepsI) => {
|
|
23
23
|
const [appliances, setAppliances] = useState<string[]>(addedAppliances)
|
|
24
|
+
|
|
25
|
+
useEffect(() => {
|
|
26
|
+
setAppliances(addedAppliances)
|
|
27
|
+
}, [addedAppliances])
|
|
28
|
+
|
|
24
29
|
const handleClick = (id: string) => {
|
|
25
30
|
if (appliances.includes(id)) {
|
|
26
31
|
const newAppliances = appliances.filter((appliance) => appliance !== id)
|
|
@@ -31,6 +36,7 @@ export const ApplianceSteps = ({
|
|
|
31
36
|
setAppliances([...appliances, id])
|
|
32
37
|
onClick([...appliances, id])
|
|
33
38
|
}
|
|
39
|
+
|
|
34
40
|
return (
|
|
35
41
|
<Stack spacing="base" bg="lightBlue.2" p="base">
|
|
36
42
|
<Text fontFamily="secondary" fontSize="sm">
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { PropsWithChildren } from 'react'
|
|
1
|
+
import { PropsWithChildren, useState, useEffect } from 'react'
|
|
2
2
|
import { FormProvider } from 'react-hook-form'
|
|
3
3
|
import { t } from 'i18next'
|
|
4
4
|
import {
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
HomeAssistantPanelStep,
|
|
18
18
|
PanelHeader,
|
|
19
19
|
} from '@/components'
|
|
20
|
-
import { HomeAssistantPanelI } from '@/interfaces'
|
|
20
|
+
import { AppliancesType, HomeAssistantPanelI } from '@/interfaces'
|
|
21
21
|
import { homeAssistantSteps } from '@/helpers'
|
|
22
22
|
import { useSimpleDynamicForm } from '@/hooks'
|
|
23
23
|
|
|
@@ -33,9 +33,22 @@ export const HomeAssistantPanel = ({
|
|
|
33
33
|
backDisabled,
|
|
34
34
|
nextDisabled,
|
|
35
35
|
}: PropsWithChildren<HomeAssistantPanelI>) => {
|
|
36
|
+
const [addedAppliances, updateAddedAppliances] = useState<AppliancesType[]>([])
|
|
36
37
|
const { title } = homeAssistantSteps[currentStep - 1]
|
|
37
38
|
const text = `${t('homeAssistant.details')} ${title.toLowerCase()}:`
|
|
38
39
|
const isAppliances = currentStep === 4
|
|
40
|
+
|
|
41
|
+
useEffect(() => {
|
|
42
|
+
if (isAppliances) {
|
|
43
|
+
const targetAppliances = currentForm.find(
|
|
44
|
+
(field) =>
|
|
45
|
+
field.name?.toLocaleLowerCase() === 'appliances list' &&
|
|
46
|
+
field.type === 'hidden'
|
|
47
|
+
)?.value as AppliancesType[]
|
|
48
|
+
updateAddedAppliances(targetAppliances)
|
|
49
|
+
}
|
|
50
|
+
}, [currentForm, isAppliances])
|
|
51
|
+
|
|
39
52
|
const { form, updatedFields } = useSimpleDynamicForm({
|
|
40
53
|
fields: currentForm,
|
|
41
54
|
})
|
|
@@ -52,7 +65,12 @@ export const HomeAssistantPanel = ({
|
|
|
52
65
|
<DrawerBody p="0">
|
|
53
66
|
<HomeAssistantPanelStep currentStep={currentStep} />
|
|
54
67
|
{children}
|
|
55
|
-
{isAppliances &&
|
|
68
|
+
{isAppliances && (
|
|
69
|
+
<ApplianceSteps
|
|
70
|
+
onClick={onApplianceClick}
|
|
71
|
+
addedAppliances={addedAppliances}
|
|
72
|
+
/>
|
|
73
|
+
)}
|
|
56
74
|
<Stack spacing="base" p="base">
|
|
57
75
|
<Text fontFamily="secondary" fontSize="sm">
|
|
58
76
|
{text}
|
|
@@ -51,6 +51,10 @@ import {
|
|
|
51
51
|
EditHomeFooter,
|
|
52
52
|
HomeAssistant,
|
|
53
53
|
HomeAssistantPanel,
|
|
54
|
+
HomeMonitor,
|
|
55
|
+
HomefileMonitoring,
|
|
56
|
+
Notifications,
|
|
57
|
+
HomeMonitorSteps,
|
|
54
58
|
} from '@/components'
|
|
55
59
|
import {
|
|
56
60
|
HomeCards,
|
|
@@ -329,6 +333,25 @@ export const HomeBoard = () => {
|
|
|
329
333
|
taxes={taxesMock}
|
|
330
334
|
title="Travis County Property Taxes"
|
|
331
335
|
/>
|
|
336
|
+
<HomeMonitor>
|
|
337
|
+
<Stack spacing="base">
|
|
338
|
+
<Flex gap="base">
|
|
339
|
+
<HomefileMonitoring />
|
|
340
|
+
<Notifications date="10-10-24" local="TX - Houston" />
|
|
341
|
+
</Flex>
|
|
342
|
+
<HomeMonitorSteps
|
|
343
|
+
menuItems={[
|
|
344
|
+
{
|
|
345
|
+
label: 'Details',
|
|
346
|
+
handleClick: handleHomeAssistantClick,
|
|
347
|
+
},
|
|
348
|
+
]}
|
|
349
|
+
stepsWithAlerts={[]}
|
|
350
|
+
onStepClick={() => null}
|
|
351
|
+
/>
|
|
352
|
+
</Stack>
|
|
353
|
+
</HomeMonitor>
|
|
354
|
+
|
|
332
355
|
<Stack spacing="base">
|
|
333
356
|
<ReceiptAutofiler
|
|
334
357
|
onClick={() => null}
|
|
@@ -64,7 +64,9 @@ export const SelectButton = ({
|
|
|
64
64
|
>
|
|
65
65
|
<Flex align="center" gap="4" justify="space-between">
|
|
66
66
|
<Text {...textVariants[variant]}>{selectedValue}</Text>
|
|
67
|
-
<
|
|
67
|
+
<Flex flexShrink={0}>
|
|
68
|
+
<ChevronDown {...iconVariants[variant]} />
|
|
69
|
+
</Flex>
|
|
68
70
|
</Flex>
|
|
69
71
|
</MenuButton>
|
|
70
72
|
)
|
|
@@ -13,8 +13,10 @@ export const IconMenu = <T extends unknown>({
|
|
|
13
13
|
icon,
|
|
14
14
|
itemForm,
|
|
15
15
|
menuItems,
|
|
16
|
+
onClick,
|
|
16
17
|
variant = 'menuIcon',
|
|
17
18
|
width = 'fit-content',
|
|
19
|
+
zIndex,
|
|
18
20
|
}: IconMenuI<T>) => {
|
|
19
21
|
return (
|
|
20
22
|
<Menu isLazy>
|
|
@@ -24,7 +26,7 @@ export const IconMenu = <T extends unknown>({
|
|
|
24
26
|
bg="overlay"
|
|
25
27
|
showOverlay={isOpen}
|
|
26
28
|
position="fixed"
|
|
27
|
-
zIndex=
|
|
29
|
+
zIndex={zIndex}
|
|
28
30
|
/>
|
|
29
31
|
<MenuButton
|
|
30
32
|
as={IconButton}
|
|
@@ -34,6 +36,7 @@ export const IconMenu = <T extends unknown>({
|
|
|
34
36
|
w={width}
|
|
35
37
|
disabled={disabled}
|
|
36
38
|
marginTop="0 !important"
|
|
39
|
+
onClick={onClick}
|
|
37
40
|
/>
|
|
38
41
|
<MenuList zIndex="5">
|
|
39
42
|
{menuItems?.map(({ handleClick, label }) => (
|
|
@@ -47,6 +47,7 @@ import {
|
|
|
47
47
|
HolidayLights,
|
|
48
48
|
GutterCleaning,
|
|
49
49
|
HomeCleaning,
|
|
50
|
+
PressureWasher,
|
|
50
51
|
} from '@/assets/images'
|
|
51
52
|
import { IconTypes } from '@/interfaces'
|
|
52
53
|
|
|
@@ -86,6 +87,7 @@ export const fieldIcons: Record<IconTypes, string> = {
|
|
|
86
87
|
heater: Heater,
|
|
87
88
|
light: Light,
|
|
88
89
|
plate: Plate,
|
|
90
|
+
'pressure-washer': PressureWasher,
|
|
89
91
|
pool: Pool2,
|
|
90
92
|
roof: Roof2,
|
|
91
93
|
umbrella: Closet,
|
|
@@ -2,12 +2,14 @@ import { FolderFileI, MenuItemI, PartnerFooterI, TileCtaI } from '@/interfaces'
|
|
|
2
2
|
|
|
3
3
|
type KindTypes =
|
|
4
4
|
| 'checkbox'
|
|
5
|
+
| 'checkbox-group'
|
|
5
6
|
| 'currency'
|
|
6
7
|
| 'date'
|
|
7
8
|
| 'email'
|
|
8
9
|
| 'file'
|
|
9
10
|
| 'grid'
|
|
10
11
|
| 'group'
|
|
12
|
+
| 'hidden'
|
|
11
13
|
| 'number'
|
|
12
14
|
| 'radio'
|
|
13
15
|
| 'rating'
|
|
@@ -72,6 +74,7 @@ export type IconTypes =
|
|
|
72
74
|
| 'mobile-drop'
|
|
73
75
|
| 'light'
|
|
74
76
|
| 'plate'
|
|
77
|
+
| 'pressure-washer'
|
|
75
78
|
| 'house'
|
|
76
79
|
| 'target'
|
|
77
80
|
| 'title'
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DynamicFormI, MenuItemI, PartnerFooterI } from '@/interfaces'
|
|
1
|
+
import { DynamicFormI, MenuItemI, PartnerFooterI, ReportI } from '@/interfaces'
|
|
2
2
|
|
|
3
3
|
export interface TileBodyLogoI {
|
|
4
4
|
menuItems?: MenuItemI[]
|
|
@@ -17,8 +17,23 @@ export interface VerticalIconI {
|
|
|
17
17
|
value: string
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
interface TileCtaCallbackI {
|
|
21
|
+
id: string
|
|
22
|
+
value: string
|
|
23
|
+
name?: string
|
|
24
|
+
link?: string
|
|
25
|
+
icon?: string
|
|
26
|
+
description?: string
|
|
27
|
+
canBeHidden?: boolean
|
|
28
|
+
visible?: boolean
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export interface TileCtaI
|
|
32
|
+
extends Pick<
|
|
33
|
+
ReportI,
|
|
34
|
+
'id' | 'name' | 'link' | 'icon' | 'description' | 'canBeHidden' | 'visible'
|
|
35
|
+
> {
|
|
36
|
+
callback?: (form: TileCtaCallbackI) => void
|
|
22
37
|
type: 'primary-cta' | 'secondary-cta'
|
|
23
38
|
value: string
|
|
24
39
|
}
|
|
@@ -13,6 +13,7 @@ export const formFieldsMock: ReportI[] = [
|
|
|
13
13
|
visible: false,
|
|
14
14
|
icon: 'barcode',
|
|
15
15
|
},
|
|
16
|
+
|
|
16
17
|
{
|
|
17
18
|
id: faker.database.mongodbObjectId(),
|
|
18
19
|
name: 'Receipt',
|
|
@@ -191,6 +192,72 @@ export const formFieldsMock: ReportI[] = [
|
|
|
191
192
|
visible: false,
|
|
192
193
|
icon: 'book',
|
|
193
194
|
},
|
|
195
|
+
{
|
|
196
|
+
id: faker.database.mongodbObjectId(),
|
|
197
|
+
name: 'Services',
|
|
198
|
+
description: faker.lorem.sentence(),
|
|
199
|
+
comments: faker.lorem.sentence(),
|
|
200
|
+
value: 'Select the services you are requesting support for?',
|
|
201
|
+
type: 'checkbox-group',
|
|
202
|
+
visible: true,
|
|
203
|
+
icon: 'pressure-washer',
|
|
204
|
+
children: [
|
|
205
|
+
{
|
|
206
|
+
id: faker.database.mongodbObjectId(),
|
|
207
|
+
name: 'Pressure Washing',
|
|
208
|
+
description: faker.lorem.sentence(),
|
|
209
|
+
comments: faker.lorem.sentence(),
|
|
210
|
+
value: true,
|
|
211
|
+
type: 'checkbox',
|
|
212
|
+
visible: true,
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
id: faker.database.mongodbObjectId(),
|
|
216
|
+
name: 'Window Cleaning',
|
|
217
|
+
description: faker.lorem.sentence(),
|
|
218
|
+
comments: faker.lorem.sentence(),
|
|
219
|
+
value: false,
|
|
220
|
+
type: 'checkbox',
|
|
221
|
+
visible: true,
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
id: faker.database.mongodbObjectId(),
|
|
225
|
+
name: 'Roof Cleaning',
|
|
226
|
+
description: faker.lorem.sentence(),
|
|
227
|
+
comments: faker.lorem.sentence(),
|
|
228
|
+
value: false,
|
|
229
|
+
type: 'checkbox',
|
|
230
|
+
visible: true,
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
id: faker.database.mongodbObjectId(),
|
|
234
|
+
name: 'Holiday Lights',
|
|
235
|
+
description: faker.lorem.sentence(),
|
|
236
|
+
comments: faker.lorem.sentence(),
|
|
237
|
+
value: true,
|
|
238
|
+
type: 'checkbox',
|
|
239
|
+
visible: true,
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
id: faker.database.mongodbObjectId(),
|
|
243
|
+
name: 'Gutter Cleaning',
|
|
244
|
+
description: faker.lorem.sentence(),
|
|
245
|
+
comments: faker.lorem.sentence(),
|
|
246
|
+
value: true,
|
|
247
|
+
type: 'checkbox',
|
|
248
|
+
visible: true,
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
id: faker.database.mongodbObjectId(),
|
|
252
|
+
name: 'Exterior Cleaning',
|
|
253
|
+
description: faker.lorem.sentence(),
|
|
254
|
+
comments: faker.lorem.sentence(),
|
|
255
|
+
value: true,
|
|
256
|
+
type: 'checkbox',
|
|
257
|
+
visible: false,
|
|
258
|
+
},
|
|
259
|
+
],
|
|
260
|
+
},
|
|
194
261
|
]
|
|
195
262
|
|
|
196
263
|
export const contactFieldsMock: ReportI[] = [
|
|
@@ -164,6 +164,12 @@ export const homeAssitantStep3FormMock: ReportI[] = [
|
|
|
164
164
|
]
|
|
165
165
|
|
|
166
166
|
export const homeAssitantStep4FormMock: ReportI[] = [
|
|
167
|
+
{
|
|
168
|
+
id: faker.database.mongodbObjectId(),
|
|
169
|
+
name: 'Appliances List',
|
|
170
|
+
value: ['fridge', 'dish-washer', 'hood', 'oven'],
|
|
171
|
+
type: 'hidden',
|
|
172
|
+
},
|
|
167
173
|
{
|
|
168
174
|
id: faker.database.mongodbObjectId(),
|
|
169
175
|
name: 'Heater',
|
|
@@ -121,6 +121,7 @@ import {
|
|
|
121
121
|
Plus,
|
|
122
122
|
Pool,
|
|
123
123
|
Pool2,
|
|
124
|
+
PressureWasher,
|
|
124
125
|
Porch,
|
|
125
126
|
Price,
|
|
126
127
|
Profile,
|
|
@@ -360,6 +361,7 @@ export const Illustrations = () => {
|
|
|
360
361
|
<IconWrapper icon={Plus} name="Plus" />
|
|
361
362
|
<IconWrapper icon={Pool} name="Pool" />
|
|
362
363
|
<IconWrapper icon={Pool2} name="Pool2" />
|
|
364
|
+
<IconWrapper icon={PressureWasher} name="PressureWasher" />
|
|
363
365
|
<IconWrapper icon={Price} name="Price" />
|
|
364
366
|
<IconWrapper icon={Profile} name="Profile" />
|
|
365
367
|
<IconWrapper icon={ProgressReport} name="ProgressReport" />
|
|
@@ -9,8 +9,6 @@ export default {
|
|
|
9
9
|
title: 'Components/Forms/DynamicForm',
|
|
10
10
|
component: DynamicForm,
|
|
11
11
|
args: {
|
|
12
|
-
callback: action('callback'),
|
|
13
|
-
onUpload: action('onUpload'),
|
|
14
12
|
menuItems: menuMock,
|
|
15
13
|
socialLinks: socialLinksMock,
|
|
16
14
|
websiteUrl: 'http://www.audreyscheckdesign.com',
|
|
@@ -28,7 +26,12 @@ export const DynamicFormComponent = (args: DynamicFormI) => {
|
|
|
28
26
|
export const DynamicUIFormComponent = (args: DynamicFormI) => {
|
|
29
27
|
return (
|
|
30
28
|
<Box m="base" w={['full', '320px']}>
|
|
31
|
-
<DynamicForm
|
|
29
|
+
<DynamicForm
|
|
30
|
+
{...args}
|
|
31
|
+
form={tileUIMock}
|
|
32
|
+
showTitle={false}
|
|
33
|
+
callback={action('callback')}
|
|
34
|
+
/>
|
|
32
35
|
</Box>
|
|
33
36
|
)
|
|
34
37
|
}
|