Skip to content

Commit 2c58f37

Browse files
feat(PDYE-1293): modals
1 parent 8564895 commit 2c58f37

File tree

23 files changed

+1289
-111
lines changed

23 files changed

+1289
-111
lines changed

.vscode/settings.json

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
{
2+
"workbench.colorCustomizations": {
3+
"activityBar.activeBackground": "#93e6fc",
4+
"activityBar.background": "#93e6fc",
5+
"activityBar.foreground": "#15202b",
6+
"activityBar.inactiveForeground": "#15202b99",
7+
"activityBarBadge.background": "#fa45d4",
8+
"activityBarBadge.foreground": "#15202b",
9+
"commandCenter.border": "#15202b99",
10+
"sash.hoverBorder": "#93e6fc",
11+
"statusBar.background": "#61dafb",
12+
"statusBar.foreground": "#15202b",
13+
"statusBarItem.hoverBackground": "#2fcefa",
14+
"statusBarItem.remoteBackground": "#61dafb",
15+
"statusBarItem.remoteForeground": "#15202b",
16+
"titleBar.activeBackground": "#61dafb",
17+
"titleBar.activeForeground": "#15202b",
18+
"titleBar.inactiveBackground": "#61dafb99",
19+
"titleBar.inactiveForeground": "#15202b99"
20+
},
21+
"peacock.color": "#61dafb"
22+
}

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@
3030
"Sebastián González Riffo <sebastian@gonzalezr.cl>"
3131
],
3232
"scripts": {
33-
"dev": "vite",
33+
"dev": "VITE_APP_MODE=playground vite",
34+
"docu": "vite",
3435
"build": "tsc && vite build && npm run build:types && npm run copy-dts",
3536
"build:types": "tsc -p tsconfig.types.json",
3637
"copy-dts": "copyfiles -u 1 \"src/**/*.d.ts\" dist",

src/documentation/components/Organisms/ModalAlertDoc/ModalAlertDoc.tsx

Lines changed: 7 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,69 +1,16 @@
1-
import { useState } from 'react'
2-
import { ModalAlert } from '@/organisms'
3-
import { BtnPrimary } from '@/molecules'
4-
import { ModalAlertProps } from '@/organisms/ModalAlert/types'
1+
// import { useState } from 'react'
2+
// // import { ModalAlert } from '@/organisms'
3+
// import { BtnPrimary } from '@/molecules'
4+
// import { ModalAlertProps } from '@/organisms/ModalAlert/types'
55

66
export function ModalAlertDoc(): JSX.Element {
7-
const [isOpen, setIsOpen] = useState(false)
8-
const [isOpenInfo, setIsOpenInfo] = useState(false)
9-
const optionsModal: ModalAlertProps = {
10-
showModal: isOpen,
11-
typeAlert: 'success',
12-
title: '¿Seguro que deseas borrar esta pregunta?',
13-
description: 'Por favor escoge otro horario.',
14-
optionsButton: [
15-
{
16-
id: '1',
17-
label: 'Opcion 1',
18-
action: () => {
19-
setIsOpen(false)
20-
},
21-
},
22-
{
23-
id: '2',
24-
label: 'Opcion 2',
25-
action: () => {
26-
setIsOpen(false)
27-
},
28-
},
29-
],
30-
}
31-
32-
const optionsModaInfol: ModalAlertProps = {
33-
showModal: isOpenInfo,
34-
typeAlert: 'info',
35-
title: 'Información sobre tu nota',
36-
description: (
37-
<>
38-
La razón por la que tu nota bajó en la evaluación podría ser que no entendiste completamente
39-
el tema. Esto sucede porque si no comprendes bien el contenido, es difícil responder
40-
correctamente a las preguntas. Es importante dedicar tiempo a estudiar y practicar para
41-
asegurarte de tener un buen entendimiento del tema antes de la evaluación. <br />
42-
<br />
43-
La razón para la disminución de tu nota podría ser que se detectó que copiaste en tus
44-
respuestas. Copiar no solo es deshonesto, sino que también muestra una falta de comprensión
45-
y habilidad para resolver problemas por tu cuenta. Es importante recordar que la integridad
46-
académica es fundamental y que es mejor esforzarse por entender y resolver los problemas por
47-
uno mismo, incluso si eso significa obtener una nota más baja en el corto plazo.
48-
</>
49-
),
50-
optionsButton: [
51-
{
52-
id: '1',
53-
label: 'Entendido',
54-
action: () => {
55-
setIsOpenInfo(false)
56-
},
57-
},
58-
],
59-
}
607
return (
618
<>
62-
<BtnPrimary onClick={() => setIsOpen(true)}>Ejemplo modal</BtnPrimary>
63-
<br />
9+
<p>Ejemplo modal</p>
10+
{/* <br />
6411
<BtnPrimary onClick={() => setIsOpenInfo(true)}>Ejemplo modal Info</BtnPrimary>
6512
<ModalAlert {...optionsModal} />
66-
<ModalAlert {...optionsModaInfol} />
13+
<ModalAlert {...optionsModaInfol} /> */}
6714
</>
6815
)
6916
}
Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
import { useDisclosure } from '@chakra-ui/react'
2+
import { BtnPrimary } from '@/molecules'
3+
import { Modal, ModalAlertNew } from '@/organisms'
4+
5+
export const ModalDemo = ({
6+
type,
7+
}: {
8+
type?:
9+
| 'withoutButtons'
10+
| 'buttonsCenter'
11+
| 'buttonsColumn'
12+
| 'buttonsInside'
13+
| 'fixedSubtitle'
14+
| 'withoutMargin'
15+
| 'closeOnOverlayClick'
16+
}): JSX.Element => {
17+
const { isOpen, onOpen, onClose } = useDisclosure()
18+
19+
const name = {
20+
default: 'Open Modal',
21+
withoutButtons: 'Sin botones (withoutButtons)',
22+
buttonsCenter: 'Con boton centrado (buttonsCenter)',
23+
buttonsColumn: 'Botones en mobile no pasan a columas (buttonsColumn)',
24+
buttonsInside: 'Botones dentro del contenido (buttonsInside)',
25+
fixedSubtitle: 'Subtitulo fijo (fixedSubtitle="")',
26+
withoutMargin: 'Sin margin (withoutMargin)',
27+
closeOnOverlayClick: 'Cerrar solo en botones (closeOnOverlayClick)',
28+
}
29+
30+
return (
31+
<>
32+
<BtnPrimary onClick={onOpen}>{name[type ?? 'default']}</BtnPrimary>
33+
<Modal
34+
isOpen={isOpen}
35+
onClose={onClose}
36+
title="Confirmación"
37+
fixedSubtitle={type === 'fixedSubtitle' ? 'Este es un subtitulo que queda fijo' : ''}
38+
buttonsCenter={type === 'buttonsCenter'}
39+
buttonsColumn={type !== 'buttonsColumn'}
40+
buttonsInside={type === 'buttonsInside'}
41+
withoutMargin={type === 'withoutMargin'}
42+
closeOnOverlayClick={type !== 'closeOnOverlayClick'}
43+
buttons={
44+
type === 'withoutButtons'
45+
? []
46+
: type === 'buttonsCenter'
47+
? [{ action: () => onClose(), text: 'Guardar' }]
48+
: [
49+
{ action: () => onClose(), text: 'Guardar' },
50+
{ type: 'secondary', action: () => onClose(), text: 'Cancelar' },
51+
]
52+
}
53+
>
54+
<p>
55+
alumnos, además de definir el uso de la plataforma de estudio. 1) El material del programa
56+
de estudio estará disponible en una plataforma tecnológica a la que cada alumno podrá
57+
acceder en la siguiente dirección: http://cursos.eclass.cl 2) Las credenciales de acceso
58+
que recibe el alumno para ingresar a su programa de estudio, son personales e
59+
intransferibles. 3) Al aceptar estos términos y condiciones, el alumno se compromete a
60+
realizar el programa en el que se encuentra inscrito y a revisar los siguientes
61+
documentos: Reglamento Académico, Manual del Alumno e Información del Programa.Estos
62+
documentos estarán disponibles en la plataforma de estudio, y contienen toda la
63+
información académica del programa. 4) El alumno se compromete a utilizar los materiales y
64+
medios tecnológicos de eClass exclusivamente con fines educativos en el marco del programa
65+
de estudio. Se deja constancia que la alumnos, además de definir el uso de la plataforma
66+
de estudio. 5) El material del programa de estudio estará disponible en una plataforma
67+
tecnológica a la que cada alumno podrá acceder en la siguiente dirección:
68+
http://cursos.eclass.cl 2) Las credenciales de acceso que recibe el alumno para ingresar a
69+
su programa de estudio, son personales e intransferibles. 3) Al aceptar estos términos y
70+
condiciones, el alumno se compromete a realizar el programa en el que se encuentra
71+
inscrito y a revisar los siguientes documentos: Reglamento Académico, Manual del Alumno e
72+
Información del Programa.Estos documentos estarán disponibles en la plataforma de estudio,
73+
y contienen toda la información académica del programa. 4) El alumno se compromete a
74+
utilizar los materiales y medios tecnológicos de eClass exclusivamente con fines
75+
educativos en el marco del programa de estudio. Se deja constancia que la
76+
</p>
77+
</Modal>
78+
</>
79+
)
80+
}
81+
82+
export const ModalAlertDemo = ({
83+
button,
84+
type,
85+
status,
86+
withoutTitle,
87+
withoutDescription,
88+
}: {
89+
button?: string
90+
type?: 'loading' | 'info'
91+
status?: 'success' | 'error' | 'warning' | 'info'
92+
withoutTitle?: boolean
93+
withoutDescription?: boolean
94+
}): JSX.Element => {
95+
const { isOpen, onOpen, onClose } = useDisclosure()
96+
97+
const text = {
98+
info: {
99+
button: 'ModalAlertNew',
100+
title: '¿Seguro que deseas borrar esta pregunta?',
101+
description: 'Por favor escoge otro horario.',
102+
},
103+
loading: {
104+
button: 'ModalAlertNew Loading',
105+
title: 'Descargando documento',
106+
description: 'Se está preparando el archivo. Esto podría tardar un momento.',
107+
},
108+
}
109+
return (
110+
<>
111+
<BtnPrimary onClick={onOpen}>{status ?? button}</BtnPrimary>
112+
<ModalAlertNew
113+
isOpen={isOpen}
114+
onClose={onClose}
115+
type={type === 'loading' ? 'loading' : 'info'}
116+
status={status ?? 'success'}
117+
title={withoutTitle ? '' : text[type ?? 'info'].title}
118+
description={withoutDescription ? '' : text[type ?? 'info'].description}
119+
buttons={[
120+
{ action: () => onClose(), text: 'Opciones más largas' },
121+
{ action: () => onClose(), text: 'Cancelar' },
122+
]}
123+
/>
124+
</>
125+
)
126+
}

0 commit comments

Comments
 (0)