@homefile/components-v2 1.0.9 → 1.0.10
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/components/forms/dynamicForm/DynamicFormSimple.js +1 -1
- package/dist/components/homeAssistant/HomeAssistantButton.js +2 -1
- package/dist/components/homeAssistant/HomeAssistantSteps.d.ts +1 -1
- package/dist/components/homeAssistant/HomeAssistantSteps.js +22 -2
- package/dist/components/homeBoard/HomeBoard.js +15 -5
- package/dist/helpers/forms/dynamicForm.helper.js +2 -1
- package/dist/hooks/homeBoard/useHomeBoard.d.ts +4 -0
- package/dist/hooks/homeBoard/useHomeBoard.js +21 -1
- package/dist/interfaces/forms/dynamicForm/DynamicForm.interface.d.ts +1 -1
- package/dist/interfaces/homeAssistant/HomeAssistantSteps.interface.d.ts +1 -0
- package/dist/mocks/homeAssistant/homeAssistantForms.d.ts +1 -0
- package/dist/mocks/homeAssistant/homeAssistantForms.js +47 -0
- package/dist/stories/homeAssistant/panel/HomeAssistantPanel.stories.js +2 -2
- package/package.json +1 -1
- package/src/components/forms/dynamicForm/DynamicFormSimple.tsx +1 -1
- package/src/components/homeAssistant/HomeAssistantButton.tsx +2 -1
- package/src/components/homeAssistant/HomeAssistantSteps.tsx +25 -2
- package/src/components/homeBoard/HomeBoard.tsx +40 -3
- package/src/helpers/forms/dynamicForm.helper.ts +2 -2
- package/src/hooks/homeBoard/useHomeBoard.ts +26 -2
- package/src/interfaces/forms/dynamicForm/DynamicForm.interface.ts +1 -0
- package/src/interfaces/homeAssistant/HomeAssistantSteps.interface.ts +1 -0
- package/src/mocks/homeAssistant/homeAssistantForms.ts +50 -13
- package/src/stories/homeAssistant/panel/HomeAssistantPanel.stories.tsx +2 -1
|
@@ -13,7 +13,7 @@ export const DynamicFormSimple = ({ form: fields }) => {
|
|
|
13
13
|
id,
|
|
14
14
|
value,
|
|
15
15
|
icon: icon ? fieldIcons[icon] : undefined,
|
|
16
|
-
placeholder: name
|
|
16
|
+
placeholder: name !== null && name !== void 0 ? name : description,
|
|
17
17
|
};
|
|
18
18
|
switch (type) {
|
|
19
19
|
case 'number':
|
|
@@ -10,7 +10,8 @@ export const HomeAssistantButton = ({ currentStep, onStepClick, status, step, })
|
|
|
10
10
|
if (!isPending)
|
|
11
11
|
onStepClick(currentStep);
|
|
12
12
|
};
|
|
13
|
-
|
|
13
|
+
const buttonId = `homeAssistantButton-${currentStep}`;
|
|
14
|
+
return (_jsxs(Box, { position: "relative", id: buttonId, children: [isCompleted && (_jsx(Image, { src: CheckInCircle, alt: "check", w: "22px", h: "auto", position: "absolute", top: "-4px", left: "-2px", boxShadow: "lg", borderRadius: "full" })), _jsxs(Stack, Object.assign({ as: "button", spacing: "2", borderRadius: "lg", boxShadow: "lg", border: "1px solid transparent", w: "116px", align: "center", h: "106px", py: "base", onClick: handleClick }, setStyles(status), { children: [_jsx(Center, { h: "60%", children: _jsx(Image, { src: step.icon, alt: iconAltText, w: "auto", h: "38px" }) }), _jsx(Center, { h: "40%", children: _jsx(Text, { fontSize: "sm", textTransform: "uppercase", textAlign: "center", lineHeight: "14px", children: step.title }) })] }))] }));
|
|
14
15
|
};
|
|
15
16
|
const setStyles = (status) => {
|
|
16
17
|
switch (status) {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { HomeAssistantStepsI } from '../../interfaces';
|
|
2
|
-
export declare const HomeAssistantSteps: ({ currentStep, onStepClick, }: HomeAssistantStepsI) => import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare const HomeAssistantSteps: ({ currentStep, onStepClick, isPanelOpen, }: HomeAssistantStepsI) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -2,8 +2,28 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { Center, SimpleGrid, Stack } from '@chakra-ui/react';
|
|
3
3
|
import { HomeAssistantButton, HomeAssistantStepper } from '..';
|
|
4
4
|
import { homeAssistantSteps } from '../../helpers';
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
import { useState } from 'react';
|
|
6
|
+
import { useComponentStyles } from '../../hooks';
|
|
7
|
+
export const HomeAssistantSteps = ({ currentStep, onStepClick, isPanelOpen, }) => {
|
|
8
|
+
const [step, setStep] = useState(currentStep);
|
|
9
|
+
const stepId = `homeAssistantButton-${step}`;
|
|
10
|
+
const componentIds = isPanelOpen
|
|
11
|
+
? [
|
|
12
|
+
'homeAssistantButton-1',
|
|
13
|
+
'homeAssistantButton-2',
|
|
14
|
+
'homeAssistantButton-3',
|
|
15
|
+
'homeAssistantButton-4',
|
|
16
|
+
'homeAssistantButton-5',
|
|
17
|
+
'homeAssistantButton-6',
|
|
18
|
+
]
|
|
19
|
+
: [];
|
|
20
|
+
const handleStepClick = (step) => {
|
|
21
|
+
onStepClick(step);
|
|
22
|
+
setStep(step);
|
|
23
|
+
};
|
|
24
|
+
useComponentStyles(componentIds, stepId);
|
|
25
|
+
const wrapperZIndex = isPanelOpen ? undefined : '2';
|
|
26
|
+
return (_jsxs(Stack, { spacing: "8", w: "fit-content", position: "relative", top: ['-10px', '-30px'], zIndex: wrapperZIndex, children: [_jsx(HomeAssistantStepper, { currentStep: currentStep, totalSteps: 6 }), _jsx(SimpleGrid, { columns: [2, 3], spacing: "base", children: homeAssistantSteps.map((step, index) => (_jsx(Center, { w: "100%", children: _jsx(HomeAssistantButton, { currentStep: index + 1, onStepClick: handleStepClick, status: getStatus(index + 1, currentStep), step: step }) }, step.title))) })] }));
|
|
7
27
|
};
|
|
8
28
|
const getStatus = (index, currentStep) => {
|
|
9
29
|
if (index === currentStep)
|
|
@@ -9,13 +9,22 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
};
|
|
10
10
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
11
11
|
import { Box, DrawerBody, DrawerContent, DrawerHeader, Flex, Stack, } from '@chakra-ui/react';
|
|
12
|
-
import { HomeHeader, HomeCardWithRecipent, AddFolder, EditAccountType, FolderSharing, RightPanel, HomeBoardTour, RoomsMenu, ContactsContent, AppBar, BarDivider, ContactList, PeopleConnected, StorageUsed, TourButton, Trash, TutorialsButton, FolderTypeSelection, DisplayFiles, DisplayOptions, FilesUploader, FolderDetailBody, FolderDetailContent, FolderDetailFooter, FolderDetailHeader, FolderInfo, SharedAccounts, ReceiptAutofiler, HomeBoardGrid, ShortPartnerTile, ValueMonitor, TrendingValue, ReceiptsFiled, PropertyTaxes, AddHomeItem, SendCommunication, PartnerCatalogPanel, DynamicForm, PanelHeader, EditHomePanel, HomeCard, EditHomeFooter, HomeAssistant, } from '..';
|
|
12
|
+
import { HomeHeader, HomeCardWithRecipent, AddFolder, EditAccountType, FolderSharing, RightPanel, HomeBoardTour, RoomsMenu, ContactsContent, AppBar, BarDivider, ContactList, PeopleConnected, StorageUsed, TourButton, Trash, TutorialsButton, FolderTypeSelection, DisplayFiles, DisplayOptions, FilesUploader, FolderDetailBody, FolderDetailContent, FolderDetailFooter, FolderDetailHeader, FolderInfo, SharedAccounts, ReceiptAutofiler, HomeBoardGrid, ShortPartnerTile, ValueMonitor, TrendingValue, ReceiptsFiled, PropertyTaxes, AddHomeItem, SendCommunication, PartnerCatalogPanel, DynamicForm, PanelHeader, EditHomePanel, HomeCard, EditHomeFooter, HomeAssistant, HomeAssistantPanel, } from '..';
|
|
13
13
|
import { HomeCards, recipientsDb, FoldersDB, selectOptions, RoomsList, RoomsToAdd, } from '../../helpers';
|
|
14
|
-
import { ContactsMock, DisplayFilesMock, formFieldsMock, homeBoardRecorsMock, lineChartData, menuMock, partnerCatalogMock, sharedAccountsMock, socialLinksMock2, taxesMock, userMock, videoMock, } from '../../mocks';
|
|
14
|
+
import { ContactsMock, DisplayFilesMock, formFieldsMock, homeBoardRecorsMock, lineChartData, menuMock, partnerCatalogMock, sharedAccountsMock, socialLinksMock2, taxesMock, userMock, videoMock, homeAssitantStep1FormMock, homeAssitantStep2FormMock, homeAssitantStep3FormMock, homeAssitantStep4FormMock, homeAssitantStep5FormMock, homeAssitantStep6FormMock, } from '../../mocks';
|
|
15
15
|
import { useHomeBoard, useWindowDimensions } from '../../hooks';
|
|
16
16
|
import { Painting } from '../../assets/images';
|
|
17
|
+
const forms = {
|
|
18
|
+
1: homeAssitantStep1FormMock,
|
|
19
|
+
2: homeAssitantStep2FormMock,
|
|
20
|
+
3: homeAssitantStep3FormMock,
|
|
21
|
+
4: homeAssitantStep4FormMock,
|
|
22
|
+
5: homeAssitantStep5FormMock,
|
|
23
|
+
6: homeAssitantStep6FormMock,
|
|
24
|
+
};
|
|
17
25
|
export const HomeBoard = () => {
|
|
18
|
-
const { currentStep, activeTour, currentComponent, form, handleClose, handleEditHomeClick, handleFolderClick, handleNewFolder, handleStep, homeName, isRightOpen, onRightClose, setActiveTour, setShowFooter, showFooter, showOverlay, } = useHomeBoard();
|
|
26
|
+
const { currentStep, activeTour, currentComponent, form, handleClose, handleEditHomeClick, handleFolderClick, handleNewFolder, handleStep, homeName, isRightOpen, onRightClose, setActiveTour, setShowFooter, showFooter, showOverlay, handleHomeAssistantFormChange, handleHomeAssistantBack, homeAssistantCurrentStep, handleHomeAssistantClick, } = useHomeBoard();
|
|
27
|
+
const currentHomeAssistantForm = forms[homeAssistantCurrentStep];
|
|
19
28
|
const rightPanelComponents = {
|
|
20
29
|
AddFolder: (_jsx(AddFolder, { handleClose: onRightClose, handleSubmit: (_) => {
|
|
21
30
|
onRightClose();
|
|
@@ -37,11 +46,12 @@ export const HomeBoard = () => {
|
|
|
37
46
|
handleClick: () => null,
|
|
38
47
|
},
|
|
39
48
|
] })),
|
|
40
|
-
PartnerCatalog: (_jsx(PartnerCatalogPanel, { onClose:
|
|
49
|
+
PartnerCatalog: (_jsx(PartnerCatalogPanel, { onClose: onRightClose, onPartnerAdd: () => null, partners: partnerCatalogMock })),
|
|
41
50
|
AddHouseholdItem: (_jsxs(DrawerContent, { bg: "lightBlue.1", children: [_jsx(DrawerHeader, { p: "0", children: _jsx(PanelHeader, { handleCloseButton: handleClose, icon: Painting, title: "Add Household Item" }) }), _jsx(DrawerBody, { children: _jsx(DynamicForm, { form: formFieldsMock }) })] })),
|
|
51
|
+
HomeAssistant: (_jsx(HomeAssistantPanel, { currentStep: homeAssistantCurrentStep, currentForm: currentHomeAssistantForm, onNext: handleHomeAssistantFormChange, onBack: handleHomeAssistantBack, onApplianceClick: () => null, onClose: onRightClose })),
|
|
42
52
|
};
|
|
43
53
|
const panelSize = currentComponent === 'PartnerCatalog' ? 'lg' : 'md';
|
|
44
|
-
return (_jsxs(Box, { overflowX: "hidden", children: [_jsx(RightPanel, { overlay: showOverlay, isOpen: isRightOpen, onClose: onRightClose, size: panelSize, children: rightPanelComponents[currentComponent] }), _jsxs(Flex, { w: "full", minH: "100dvh", children: [_jsx(RoomsMenu, { activeRoom: "homeboard", handleAddRoom: (id) => __awaiter(void 0, void 0, void 0, function* () { return console.log(id); }), handleClick: () => null, handleHomeClick: () => null, rooms: RoomsList, roomsToAdd: RoomsToAdd }), _jsxs(Box, { w: "full", children: [_jsx(AppBarComponent, { setActiveTour: setActiveTour }), _jsxs(Stack, { spacing: "base", p: "base", children: [_jsx(HomeHeader, { buttonLabel: "Partner catalog", onBack: () => null, homeName: homeName, onAdd: () => null }), _jsxs(HomeBoardGrid, { children: [_jsx(HomeCardWithRecipent, { address: HomeCards[0].address, handleEdit: handleEditHomeClick, handleDeleteAccountType: (email) => email, handleSubmitAccountType: (form) => form, _id: HomeCards[0]._id, image: HomeCards[0].image, loading: false, name: HomeCards[0].name, menu: menuMock, addImage: () => null, recipients: recipientsDb, records: homeBoardRecorsMock }), _jsx(HomeAssistant, { currentStep: 6, onStepClick:
|
|
54
|
+
return (_jsxs(Box, { overflowX: "hidden", children: [_jsx(RightPanel, { overlay: showOverlay, isOpen: isRightOpen, onClose: onRightClose, size: panelSize, children: rightPanelComponents[currentComponent] }), _jsxs(Flex, { w: "full", minH: "100dvh", children: [_jsx(RoomsMenu, { activeRoom: "homeboard", handleAddRoom: (id) => __awaiter(void 0, void 0, void 0, function* () { return console.log(id); }), handleClick: () => null, handleHomeClick: () => null, rooms: RoomsList, roomsToAdd: RoomsToAdd }), _jsxs(Box, { w: "full", children: [_jsx(AppBarComponent, { setActiveTour: setActiveTour }), _jsxs(Stack, { spacing: "base", p: "base", children: [_jsx(HomeHeader, { buttonLabel: "Partner catalog", onBack: () => null, homeName: homeName, onAdd: () => null }), _jsxs(HomeBoardGrid, { children: [_jsx(HomeCardWithRecipent, { address: HomeCards[0].address, handleEdit: handleEditHomeClick, handleDeleteAccountType: (email) => email, handleSubmitAccountType: (form) => form, _id: HomeCards[0]._id, image: HomeCards[0].image, loading: false, name: HomeCards[0].name, menu: menuMock, addImage: () => null, recipients: recipientsDb, records: homeBoardRecorsMock }), _jsx(HomeAssistant, { isPanelOpen: isRightOpen, currentStep: 6, onStepClick: handleHomeAssistantClick }), _jsx(PropertyTaxes, { estimatedTaxValue: 1000, menuItems: menuMock, taxes: taxesMock, title: "Travis County Property Taxes" }), _jsxs(Stack, { spacing: "base", children: [_jsx(ReceiptAutofiler, { onClick: () => null, totalReceipts: 36, totalTitle: "Receipts Received", forwardTo: "reciepts@homefile.cloud", onFilter: () => null, children: _jsx(ReceiptsFiled, { incidentalItemsNumber: 0, incidentalSpent: 0, inventoryItemsNumber: 0, inventorySpent: 0, total: 0 }) }), _jsx(ValueMonitor, { menuItems: menuMock, balance: "+3%", totalValue: 323421, year: "2023", yearValue: 5684 })] }), _jsx(ShortPartnerTile, { _id: "1", buttonText: "Contact Audrey Scheck", description: "Full-service design firm focusing on residential remodels, furnishing, and styling.", onClick: () => null, socialLinks: socialLinksMock2, logo: "https://static.wixstatic.com/media/258105_8e04439070694f278e4787a310ea9f4b~mv2.png", partnerName: "Audrey Scheck", websiteUrl: "" }), _jsx(TrendingValue, { chartData: lineChartData, marketValue: 894000, menuItems: menuMock, mortgageBalance: 220532, purchasePrice: 220532, roi: "+234%" }), _jsx(ShortPartnerTile, { _id: "2", buttonText: "Contact Audrey Scheck", description: "Full-service design firm focusing on residential remodels, furnishing, and styling.", onClick: () => null, socialLinks: socialLinksMock2, logo: "https://static.wixstatic.com/media/258105_8e04439070694f278e4787a310ea9f4b~mv2.png", partnerName: "Audrey Scheck", websiteUrl: "" }), _jsx(FolderSharing, { folders: FoldersDB, handleAddNewFolder: handleNewFolder, handleFolderClick: handleFolderClick, handleSelect: () => null, initialSelectItem: selectOptions[0], menuItems: menuMock, selectItems: selectOptions }), _jsxs(Stack, { spacing: "base", children: [_jsx(AddHomeItem, { handleClick: () => null }), _jsx(SendCommunication, { documentList: [] })] }), _jsx(ShortPartnerTile, { _id: "3", buttonText: "Contact Audrey Scheck", description: "Full-service design firm focusing on residential remodels, furnishing, and styling.", onClick: () => null, socialLinks: socialLinksMock2, logo: "https://static.wixstatic.com/media/258105_8e04439070694f278e4787a310ea9f4b~mv2.png", partnerName: "Audrey Scheck", websiteUrl: "" })] })] })] })] }), _jsx(HomeBoardTour, { currentStep: currentStep, handleClose: handleClose, handleStep: handleStep, meetStepUrl: videoMock, isActive: activeTour })] }));
|
|
45
55
|
};
|
|
46
56
|
export const AppBarComponent = ({ setActiveTour = (value) => { } }) => {
|
|
47
57
|
const handleTour = () => {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Paint, Receipt, Barcode, GoldenBars, Heart, Rating, Notes, Book, ImgIcon, Registry, ShareWith, Calendar, Tools2, Billing, Calc, CheckPen, GenericField, Price, Battery2, Co2, Detector, Electricity, Sprinkler, SixtyEight, DropCalendar, MobileDrop, SolarPanel, Calendar2, Drop, Wind, Foundation, Heater, Light, Plate, Pool2, Closet, Structure, GlassWater, Roof2, } from '../../assets/images';
|
|
1
|
+
import { Paint, Receipt, Barcode, GoldenBars, Heart, Rating, Notes, Book, ImgIcon, Registry, ShareWith, Calendar, Tools2, Billing, Calc, CheckPen, GenericField, Price, Battery2, Co2, Detector, Electricity, Sprinkler, SixtyEight, DropCalendar, MobileDrop, SolarPanel, Calendar2, Drop, Wind, Foundation, Heater, Light, Plate, Pool2, Closet, Structure, GlassWater, Roof2, Target, } from '../../assets/images';
|
|
2
2
|
export const fieldIcons = {
|
|
3
3
|
barcode: Barcode,
|
|
4
4
|
billing: Billing,
|
|
@@ -40,4 +40,5 @@ export const fieldIcons = {
|
|
|
40
40
|
umbrella: Closet,
|
|
41
41
|
water: GlassWater,
|
|
42
42
|
house: Structure,
|
|
43
|
+
target: Target,
|
|
43
44
|
};
|
|
@@ -17,4 +17,8 @@ export declare const useHomeBoard: () => {
|
|
|
17
17
|
setShowFooter: import("react").Dispatch<import("react").SetStateAction<boolean>>;
|
|
18
18
|
showFooter: boolean;
|
|
19
19
|
showOverlay: boolean;
|
|
20
|
+
handleHomeAssistantFormChange: () => void;
|
|
21
|
+
handleHomeAssistantBack: () => void;
|
|
22
|
+
homeAssistantCurrentStep: number;
|
|
23
|
+
handleHomeAssistantClick: (step: number) => void;
|
|
20
24
|
};
|
|
@@ -7,8 +7,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
|
-
import { useDisclosure } from '@chakra-ui/react';
|
|
11
10
|
import { useEffect, useState } from 'react';
|
|
11
|
+
import { useDisclosure } from '@chakra-ui/react';
|
|
12
12
|
export const useHomeBoard = () => {
|
|
13
13
|
const homeName = 'The Edmunds';
|
|
14
14
|
const { isOpen: isRightOpen, onOpen: onRightOpen, onClose: onRightClose, } = useDisclosure();
|
|
@@ -17,6 +17,17 @@ export const useHomeBoard = () => {
|
|
|
17
17
|
const [activeTour, setActiveTour] = useState(false);
|
|
18
18
|
const [showFooter, setShowFooter] = useState(false);
|
|
19
19
|
const [currentStep, setCurrentStep] = useState('homeboard');
|
|
20
|
+
const [homeAssistantCurrentStep, setHomeAssistantCurrentStep] = useState(6);
|
|
21
|
+
const handleHomeAssistantFormChange = () => setHomeAssistantCurrentStep((prev) => {
|
|
22
|
+
if (prev === 6)
|
|
23
|
+
return 1;
|
|
24
|
+
return prev + 1;
|
|
25
|
+
});
|
|
26
|
+
const handleHomeAssistantBack = () => setHomeAssistantCurrentStep((prev) => {
|
|
27
|
+
if (prev === 1)
|
|
28
|
+
return 6;
|
|
29
|
+
return prev - 1;
|
|
30
|
+
});
|
|
20
31
|
const handleNewFolder = () => {
|
|
21
32
|
setCurrentComponent('AddFolder');
|
|
22
33
|
onRightOpen();
|
|
@@ -29,6 +40,11 @@ export const useHomeBoard = () => {
|
|
|
29
40
|
setCurrentComponent('EditHome');
|
|
30
41
|
onRightOpen();
|
|
31
42
|
};
|
|
43
|
+
const handleHomeAssistantClick = (step) => {
|
|
44
|
+
setCurrentComponent('HomeAssistant');
|
|
45
|
+
setHomeAssistantCurrentStep(step);
|
|
46
|
+
onRightOpen();
|
|
47
|
+
};
|
|
32
48
|
const componentsByStep = {
|
|
33
49
|
nameFolder: 'AddFolder',
|
|
34
50
|
addFiles: 'FolderDetail',
|
|
@@ -113,5 +129,9 @@ export const useHomeBoard = () => {
|
|
|
113
129
|
setShowFooter,
|
|
114
130
|
showFooter,
|
|
115
131
|
showOverlay,
|
|
132
|
+
handleHomeAssistantFormChange,
|
|
133
|
+
handleHomeAssistantBack,
|
|
134
|
+
homeAssistantCurrentStep,
|
|
135
|
+
handleHomeAssistantClick,
|
|
116
136
|
};
|
|
117
137
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { FolderFileI } from '../..';
|
|
2
2
|
type KindTypes = 'checkbox' | 'currency' | 'date' | 'email' | 'file' | 'grid' | 'group' | 'number' | 'radio' | 'rating' | 'select' | 'string' | 'switch' | 'telephone' | 'text' | 'textarea' | 'default';
|
|
3
|
-
export type IconTypes = 'barcode' | 'battery' | 'billing' | 'book' | 'calc' | 'calendar' | 'check' | 'co2' | 'date' | 'default' | 'detector' | 'electricity' | 'goldbars' | 'heart' | 'image' | 'notes' | 'palette' | 'people' | 'price' | 'rating' | 'receipt' | 'registry' | 'sprinkler' | 'tools' | 'wind' | '68' | 'calendar2' | 'water' | 'calendar-drop' | 'umbrella' | 'heater' | 'roof' | 'foundation' | 'solar-panel' | 'pool' | 'drop' | 'mobile-drop' | 'light' | 'plate' | 'house';
|
|
3
|
+
export type IconTypes = 'barcode' | 'battery' | 'billing' | 'book' | 'calc' | 'calendar' | 'check' | 'co2' | 'date' | 'default' | 'detector' | 'electricity' | 'goldbars' | 'heart' | 'image' | 'notes' | 'palette' | 'people' | 'price' | 'rating' | 'receipt' | 'registry' | 'sprinkler' | 'tools' | 'wind' | '68' | 'calendar2' | 'water' | 'calendar-drop' | 'umbrella' | 'heater' | 'roof' | 'foundation' | 'solar-panel' | 'pool' | 'drop' | 'mobile-drop' | 'light' | 'plate' | 'house' | 'target';
|
|
4
4
|
export type ValueTypes = string | string[] | number | boolean;
|
|
5
5
|
export type OptionsTypes = string[] | number[] | null;
|
|
6
6
|
export interface ReportI {
|
|
@@ -4,3 +4,4 @@ export declare const homeAssitantStep2FormMock: ReportI[];
|
|
|
4
4
|
export declare const homeAssitantStep3FormMock: ReportI[];
|
|
5
5
|
export declare const homeAssitantStep4FormMock: ReportI[];
|
|
6
6
|
export declare const homeAssitantStep5FormMock: ReportI[];
|
|
7
|
+
export declare const homeAssitantStep6FormMock: ReportI[];
|
|
@@ -236,3 +236,50 @@ export const homeAssitantStep5FormMock = [
|
|
|
236
236
|
icon: 'plate',
|
|
237
237
|
},
|
|
238
238
|
];
|
|
239
|
+
export const homeAssitantStep6FormMock = [
|
|
240
|
+
{
|
|
241
|
+
id: faker.database.mongodbObjectId(),
|
|
242
|
+
name: 'Save money',
|
|
243
|
+
description: 'I want to save money.',
|
|
244
|
+
options: ['Highest', 'High', 'Neutral', 'Low', 'None'],
|
|
245
|
+
value: 'Highest',
|
|
246
|
+
type: 'select',
|
|
247
|
+
icon: 'target',
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
id: faker.database.mongodbObjectId(),
|
|
251
|
+
name: 'Maintain home',
|
|
252
|
+
description: 'I want to know how to maintain my home.',
|
|
253
|
+
options: ['Highest', 'High', 'Neutral', 'Low', 'None'],
|
|
254
|
+
value: 'Highest',
|
|
255
|
+
type: 'select',
|
|
256
|
+
icon: 'target',
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
id: faker.database.mongodbObjectId(),
|
|
260
|
+
name: 'Investments',
|
|
261
|
+
description: 'I want to know how to make good investmemts into my home to maximize my ROI.',
|
|
262
|
+
options: ['Highest', 'High', 'Neutral', 'Low', 'None'],
|
|
263
|
+
value: 'Highest',
|
|
264
|
+
type: 'select',
|
|
265
|
+
icon: 'target',
|
|
266
|
+
},
|
|
267
|
+
{
|
|
268
|
+
id: faker.database.mongodbObjectId(),
|
|
269
|
+
name: 'Investments',
|
|
270
|
+
description: 'I want to be able to see how much I invest into my home.',
|
|
271
|
+
options: ['Highest', 'High', 'Neutral', 'Low', 'None'],
|
|
272
|
+
value: 'Highest',
|
|
273
|
+
type: 'select',
|
|
274
|
+
icon: 'target',
|
|
275
|
+
},
|
|
276
|
+
{
|
|
277
|
+
id: faker.database.mongodbObjectId(),
|
|
278
|
+
name: 'Investments',
|
|
279
|
+
description: 'I want to be able to see how much I invest into my home.',
|
|
280
|
+
options: ['Highest', 'High', 'Neutral', 'Low', 'None'],
|
|
281
|
+
value: 'Highest',
|
|
282
|
+
type: 'select',
|
|
283
|
+
icon: 'target',
|
|
284
|
+
},
|
|
285
|
+
];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { action } from '@storybook/addon-actions';
|
|
3
3
|
import { HomeAssistantPanel, RightPanel } from '../../../components';
|
|
4
|
-
import { homeAssitantStep1FormMock, homeAssitantStep2FormMock, homeAssitantStep3FormMock, homeAssitantStep4FormMock, homeAssitantStep5FormMock, } from '../../../mocks';
|
|
4
|
+
import { homeAssitantStep1FormMock, homeAssitantStep2FormMock, homeAssitantStep3FormMock, homeAssitantStep4FormMock, homeAssitantStep5FormMock, homeAssitantStep6FormMock, } from '../../../mocks';
|
|
5
5
|
import { useState } from 'react';
|
|
6
6
|
export default {
|
|
7
7
|
title: 'Components/HomeAssistant',
|
|
@@ -22,7 +22,7 @@ export const HomeAssistantPanelComponent = (args) => {
|
|
|
22
22
|
3: homeAssitantStep3FormMock,
|
|
23
23
|
4: homeAssitantStep4FormMock,
|
|
24
24
|
5: homeAssitantStep5FormMock,
|
|
25
|
-
6:
|
|
25
|
+
6: homeAssitantStep6FormMock,
|
|
26
26
|
};
|
|
27
27
|
const handleFormChange = () => setCurrentStep((prev) => {
|
|
28
28
|
if (prev === 6)
|
package/package.json
CHANGED
|
@@ -27,7 +27,7 @@ export const DynamicFormSimple = ({ form: fields }: DynamicFormSimpleI) => {
|
|
|
27
27
|
id,
|
|
28
28
|
value,
|
|
29
29
|
icon: icon ? (fieldIcons[icon] as IconTypes) : undefined,
|
|
30
|
-
placeholder: name
|
|
30
|
+
placeholder: name ?? description,
|
|
31
31
|
}
|
|
32
32
|
switch (type) {
|
|
33
33
|
case 'number':
|
|
@@ -15,8 +15,9 @@ export const HomeAssistantButton = ({
|
|
|
15
15
|
const handleClick = () => {
|
|
16
16
|
if (!isPending) onStepClick(currentStep)
|
|
17
17
|
}
|
|
18
|
+
const buttonId = `homeAssistantButton-${currentStep}`
|
|
18
19
|
return (
|
|
19
|
-
<Box position="relative">
|
|
20
|
+
<Box position="relative" id={buttonId}>
|
|
20
21
|
{isCompleted && (
|
|
21
22
|
<Image
|
|
22
23
|
src={CheckInCircle}
|
|
@@ -2,18 +2,41 @@ import { Center, SimpleGrid, Stack } from '@chakra-ui/react'
|
|
|
2
2
|
import { HomeAssistantStepsI } from '@/interfaces'
|
|
3
3
|
import { HomeAssistantButton, HomeAssistantStepper } from '@/components'
|
|
4
4
|
import { homeAssistantSteps } from '@/helpers'
|
|
5
|
+
import { useState } from 'react'
|
|
6
|
+
import { useComponentStyles } from '@/hooks'
|
|
5
7
|
|
|
6
8
|
export const HomeAssistantSteps = ({
|
|
7
9
|
currentStep,
|
|
8
10
|
onStepClick,
|
|
11
|
+
isPanelOpen,
|
|
9
12
|
}: HomeAssistantStepsI) => {
|
|
13
|
+
const [step, setStep] = useState(currentStep)
|
|
14
|
+
const stepId = `homeAssistantButton-${step}`
|
|
15
|
+
const componentIds = isPanelOpen
|
|
16
|
+
? [
|
|
17
|
+
'homeAssistantButton-1',
|
|
18
|
+
'homeAssistantButton-2',
|
|
19
|
+
'homeAssistantButton-3',
|
|
20
|
+
'homeAssistantButton-4',
|
|
21
|
+
'homeAssistantButton-5',
|
|
22
|
+
'homeAssistantButton-6',
|
|
23
|
+
]
|
|
24
|
+
: []
|
|
25
|
+
|
|
26
|
+
const handleStepClick = (step: number) => {
|
|
27
|
+
onStepClick(step)
|
|
28
|
+
setStep(step)
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
useComponentStyles(componentIds, stepId)
|
|
32
|
+
const wrapperZIndex = isPanelOpen ? undefined : '2'
|
|
10
33
|
return (
|
|
11
34
|
<Stack
|
|
12
35
|
spacing="8"
|
|
13
36
|
w="fit-content"
|
|
14
37
|
position="relative"
|
|
15
38
|
top={['-10px', '-30px']}
|
|
16
|
-
zIndex=
|
|
39
|
+
zIndex={wrapperZIndex}
|
|
17
40
|
>
|
|
18
41
|
<HomeAssistantStepper currentStep={currentStep} totalSteps={6} />
|
|
19
42
|
<SimpleGrid columns={[2, 3]} spacing="base">
|
|
@@ -21,7 +44,7 @@ export const HomeAssistantSteps = ({
|
|
|
21
44
|
<Center key={step.title} w="100%">
|
|
22
45
|
<HomeAssistantButton
|
|
23
46
|
currentStep={index + 1}
|
|
24
|
-
onStepClick={
|
|
47
|
+
onStepClick={handleStepClick}
|
|
25
48
|
status={getStatus(index + 1, currentStep)}
|
|
26
49
|
step={step}
|
|
27
50
|
/>
|
|
@@ -50,6 +50,7 @@ import {
|
|
|
50
50
|
HomeCard,
|
|
51
51
|
EditHomeFooter,
|
|
52
52
|
HomeAssistant,
|
|
53
|
+
HomeAssistantPanel,
|
|
53
54
|
} from '@/components'
|
|
54
55
|
import {
|
|
55
56
|
HomeCards,
|
|
@@ -60,7 +61,6 @@ import {
|
|
|
60
61
|
RoomsToAdd,
|
|
61
62
|
} from '@/helpers'
|
|
62
63
|
|
|
63
|
-
|
|
64
64
|
import {
|
|
65
65
|
ContactsMock,
|
|
66
66
|
DisplayFilesMock,
|
|
@@ -74,10 +74,27 @@ import {
|
|
|
74
74
|
taxesMock,
|
|
75
75
|
userMock,
|
|
76
76
|
videoMock,
|
|
77
|
+
homeAssitantStep1FormMock,
|
|
78
|
+
homeAssitantStep2FormMock,
|
|
79
|
+
homeAssitantStep3FormMock,
|
|
80
|
+
homeAssitantStep4FormMock,
|
|
81
|
+
homeAssitantStep5FormMock,
|
|
82
|
+
homeAssitantStep6FormMock,
|
|
77
83
|
} from '@/mocks'
|
|
78
84
|
import { useHomeBoard, useWindowDimensions } from '@/hooks'
|
|
79
85
|
import { Painting } from '@/assets/images'
|
|
80
86
|
|
|
87
|
+
import { ReportI } from '@/interfaces'
|
|
88
|
+
|
|
89
|
+
const forms: Record<number, ReportI[]> = {
|
|
90
|
+
1: homeAssitantStep1FormMock,
|
|
91
|
+
2: homeAssitantStep2FormMock,
|
|
92
|
+
3: homeAssitantStep3FormMock,
|
|
93
|
+
4: homeAssitantStep4FormMock,
|
|
94
|
+
5: homeAssitantStep5FormMock,
|
|
95
|
+
6: homeAssitantStep6FormMock,
|
|
96
|
+
}
|
|
97
|
+
|
|
81
98
|
export const HomeBoard = () => {
|
|
82
99
|
const {
|
|
83
100
|
currentStep,
|
|
@@ -96,8 +113,14 @@ export const HomeBoard = () => {
|
|
|
96
113
|
setShowFooter,
|
|
97
114
|
showFooter,
|
|
98
115
|
showOverlay,
|
|
116
|
+
handleHomeAssistantFormChange,
|
|
117
|
+
handleHomeAssistantBack,
|
|
118
|
+
homeAssistantCurrentStep,
|
|
119
|
+
handleHomeAssistantClick,
|
|
99
120
|
} = useHomeBoard()
|
|
100
121
|
|
|
122
|
+
const currentHomeAssistantForm = forms[homeAssistantCurrentStep]
|
|
123
|
+
|
|
101
124
|
const rightPanelComponents: { [key: string]: JSX.Element } = {
|
|
102
125
|
AddFolder: (
|
|
103
126
|
<AddFolder
|
|
@@ -212,7 +235,7 @@ export const HomeBoard = () => {
|
|
|
212
235
|
),
|
|
213
236
|
PartnerCatalog: (
|
|
214
237
|
<PartnerCatalogPanel
|
|
215
|
-
onClose={
|
|
238
|
+
onClose={onRightClose}
|
|
216
239
|
onPartnerAdd={() => null}
|
|
217
240
|
partners={partnerCatalogMock}
|
|
218
241
|
/>
|
|
@@ -231,6 +254,16 @@ export const HomeBoard = () => {
|
|
|
231
254
|
</DrawerBody>
|
|
232
255
|
</DrawerContent>
|
|
233
256
|
),
|
|
257
|
+
HomeAssistant: (
|
|
258
|
+
<HomeAssistantPanel
|
|
259
|
+
currentStep={homeAssistantCurrentStep}
|
|
260
|
+
currentForm={currentHomeAssistantForm}
|
|
261
|
+
onNext={handleHomeAssistantFormChange}
|
|
262
|
+
onBack={handleHomeAssistantBack}
|
|
263
|
+
onApplianceClick={() => null}
|
|
264
|
+
onClose={onRightClose}
|
|
265
|
+
/>
|
|
266
|
+
),
|
|
234
267
|
}
|
|
235
268
|
|
|
236
269
|
const panelSize = currentComponent === 'PartnerCatalog' ? 'lg' : 'md'
|
|
@@ -280,7 +313,11 @@ export const HomeBoard = () => {
|
|
|
280
313
|
records={homeBoardRecorsMock}
|
|
281
314
|
/>
|
|
282
315
|
|
|
283
|
-
<HomeAssistant
|
|
316
|
+
<HomeAssistant
|
|
317
|
+
isPanelOpen={isRightOpen}
|
|
318
|
+
currentStep={6}
|
|
319
|
+
onStepClick={handleHomeAssistantClick}
|
|
320
|
+
/>
|
|
284
321
|
<PropertyTaxes
|
|
285
322
|
estimatedTaxValue={1000}
|
|
286
323
|
menuItems={menuMock}
|
|
@@ -34,12 +34,11 @@ import {
|
|
|
34
34
|
Light,
|
|
35
35
|
Plate,
|
|
36
36
|
Pool2,
|
|
37
|
-
Roof,
|
|
38
37
|
Closet,
|
|
39
|
-
Water,
|
|
40
38
|
Structure,
|
|
41
39
|
GlassWater,
|
|
42
40
|
Roof2,
|
|
41
|
+
Target,
|
|
43
42
|
} from '@/assets/images'
|
|
44
43
|
import { IconTypes } from '@/interfaces'
|
|
45
44
|
|
|
@@ -84,4 +83,5 @@ export const fieldIcons: Record<IconTypes, string> = {
|
|
|
84
83
|
umbrella: Closet,
|
|
85
84
|
water: GlassWater,
|
|
86
85
|
house: Structure,
|
|
86
|
+
target: Target,
|
|
87
87
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { EditHomeFormI, FolderI } from '@/interfaces'
|
|
2
|
-
import { useDisclosure } from '@chakra-ui/react'
|
|
3
1
|
import { useEffect, useState } from 'react'
|
|
2
|
+
import { useDisclosure } from '@chakra-ui/react'
|
|
3
|
+
import { EditHomeFormI, FolderI } from '@/interfaces'
|
|
4
4
|
|
|
5
5
|
export const useHomeBoard = () => {
|
|
6
6
|
const homeName = 'The Edmunds'
|
|
@@ -15,6 +15,20 @@ export const useHomeBoard = () => {
|
|
|
15
15
|
const [activeTour, setActiveTour] = useState(false)
|
|
16
16
|
const [showFooter, setShowFooter] = useState(false)
|
|
17
17
|
const [currentStep, setCurrentStep] = useState('homeboard')
|
|
18
|
+
const [homeAssistantCurrentStep, setHomeAssistantCurrentStep] =
|
|
19
|
+
useState<number>(6)
|
|
20
|
+
|
|
21
|
+
const handleHomeAssistantFormChange = () =>
|
|
22
|
+
setHomeAssistantCurrentStep((prev) => {
|
|
23
|
+
if (prev === 6) return 1
|
|
24
|
+
return prev + 1
|
|
25
|
+
})
|
|
26
|
+
|
|
27
|
+
const handleHomeAssistantBack = () =>
|
|
28
|
+
setHomeAssistantCurrentStep((prev) => {
|
|
29
|
+
if (prev === 1) return 6
|
|
30
|
+
return prev - 1
|
|
31
|
+
})
|
|
18
32
|
|
|
19
33
|
const handleNewFolder = () => {
|
|
20
34
|
setCurrentComponent('AddFolder')
|
|
@@ -31,6 +45,12 @@ export const useHomeBoard = () => {
|
|
|
31
45
|
onRightOpen()
|
|
32
46
|
}
|
|
33
47
|
|
|
48
|
+
const handleHomeAssistantClick = (step: number) => {
|
|
49
|
+
setCurrentComponent('HomeAssistant')
|
|
50
|
+
setHomeAssistantCurrentStep(step)
|
|
51
|
+
onRightOpen()
|
|
52
|
+
}
|
|
53
|
+
|
|
34
54
|
const componentsByStep: Record<string, string> = {
|
|
35
55
|
nameFolder: 'AddFolder',
|
|
36
56
|
addFiles: 'FolderDetail',
|
|
@@ -122,5 +142,9 @@ export const useHomeBoard = () => {
|
|
|
122
142
|
setShowFooter,
|
|
123
143
|
showFooter,
|
|
124
144
|
showOverlay,
|
|
145
|
+
handleHomeAssistantFormChange,
|
|
146
|
+
handleHomeAssistantBack,
|
|
147
|
+
homeAssistantCurrentStep,
|
|
148
|
+
handleHomeAssistantClick,
|
|
125
149
|
}
|
|
126
150
|
}
|
|
@@ -1,17 +1,5 @@
|
|
|
1
1
|
import { faker } from '@faker-js/faker'
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
CookTop,
|
|
5
|
-
Dishwasher,
|
|
6
|
-
Dryer,
|
|
7
|
-
Freezer,
|
|
8
|
-
Fridge,
|
|
9
|
-
Hood,
|
|
10
|
-
Microwave,
|
|
11
|
-
Oven,
|
|
12
|
-
Range,
|
|
13
|
-
Washer,
|
|
14
|
-
} from '@/assets/images'
|
|
2
|
+
import { ReportI } from '@/interfaces'
|
|
15
3
|
|
|
16
4
|
export const homeAssitantStep1FormMock: ReportI[] = [
|
|
17
5
|
{
|
|
@@ -255,3 +243,52 @@ export const homeAssitantStep5FormMock: ReportI[] = [
|
|
|
255
243
|
icon: 'plate',
|
|
256
244
|
},
|
|
257
245
|
]
|
|
246
|
+
|
|
247
|
+
export const homeAssitantStep6FormMock: ReportI[] = [
|
|
248
|
+
{
|
|
249
|
+
id: faker.database.mongodbObjectId(),
|
|
250
|
+
name: 'Save money',
|
|
251
|
+
description: 'I want to save money.',
|
|
252
|
+
options: ['Highest', 'High', 'Neutral', 'Low', 'None'],
|
|
253
|
+
value: 'Highest',
|
|
254
|
+
type: 'select',
|
|
255
|
+
icon: 'target',
|
|
256
|
+
},
|
|
257
|
+
{
|
|
258
|
+
id: faker.database.mongodbObjectId(),
|
|
259
|
+
name: 'Maintain home',
|
|
260
|
+
description: 'I want to know how to maintain my home.',
|
|
261
|
+
options: ['Highest', 'High', 'Neutral', 'Low', 'None'],
|
|
262
|
+
value: 'Highest',
|
|
263
|
+
type: 'select',
|
|
264
|
+
icon: 'target',
|
|
265
|
+
},
|
|
266
|
+
{
|
|
267
|
+
id: faker.database.mongodbObjectId(),
|
|
268
|
+
name: 'Investments',
|
|
269
|
+
description:
|
|
270
|
+
'I want to know how to make good investmemts into my home to maximize my ROI.',
|
|
271
|
+
options: ['Highest', 'High', 'Neutral', 'Low', 'None'],
|
|
272
|
+
value: 'Highest',
|
|
273
|
+
type: 'select',
|
|
274
|
+
icon: 'target',
|
|
275
|
+
},
|
|
276
|
+
{
|
|
277
|
+
id: faker.database.mongodbObjectId(),
|
|
278
|
+
name: 'Investments',
|
|
279
|
+
description: 'I want to be able to see how much I invest into my home.',
|
|
280
|
+
options: ['Highest', 'High', 'Neutral', 'Low', 'None'],
|
|
281
|
+
value: 'Highest',
|
|
282
|
+
type: 'select',
|
|
283
|
+
icon: 'target',
|
|
284
|
+
},
|
|
285
|
+
{
|
|
286
|
+
id: faker.database.mongodbObjectId(),
|
|
287
|
+
name: 'Investments',
|
|
288
|
+
description: 'I want to be able to see how much I invest into my home.',
|
|
289
|
+
options: ['Highest', 'High', 'Neutral', 'Low', 'None'],
|
|
290
|
+
value: 'Highest',
|
|
291
|
+
type: 'select',
|
|
292
|
+
icon: 'target',
|
|
293
|
+
},
|
|
294
|
+
]
|
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
homeAssitantStep3FormMock,
|
|
9
9
|
homeAssitantStep4FormMock,
|
|
10
10
|
homeAssitantStep5FormMock,
|
|
11
|
+
homeAssitantStep6FormMock,
|
|
11
12
|
} from '@/mocks'
|
|
12
13
|
import { useState } from 'react'
|
|
13
14
|
|
|
@@ -35,7 +36,7 @@ export const HomeAssistantPanelComponent = (args: HomeAssistantPanelI) => {
|
|
|
35
36
|
3: homeAssitantStep3FormMock,
|
|
36
37
|
4: homeAssitantStep4FormMock,
|
|
37
38
|
5: homeAssitantStep5FormMock,
|
|
38
|
-
6:
|
|
39
|
+
6: homeAssitantStep6FormMock,
|
|
39
40
|
}
|
|
40
41
|
const handleFormChange = () =>
|
|
41
42
|
setCurrentStep((prev) => {
|