|
1 | 1 | import { MyHeading, MyText, MyTitle, Code, ListComponent } from '@/documentation/components' |
2 | | -import { ModalAlertDemo, ModalDemo } from '@/documentation/components/Organisms/Modals' |
| 2 | +import { |
| 3 | + ModalAlertDemo, |
| 4 | + ModalDemo, |
| 5 | + ModalMultipleDemo, |
| 6 | +} from '@/documentation/components/Organisms/Modals' |
3 | 7 |
|
4 | 8 | export const ViewModals = (): JSX.Element => { |
5 | 9 | return ( |
6 | 10 | <> |
7 | | - <div> |
8 | | - <p>ejemplo multiple</p> |
9 | | - </div> |
10 | 11 | <MyHeading>Modales</MyHeading> |
11 | 12 | <MyText> |
12 | 13 | Para los modales, tenemos dos tipos de componentes: Modal y ModalAlert. Cada uno tiene sus{' '} |
@@ -134,6 +135,72 @@ export function View(){ |
134 | 135 | withoutDescription |
135 | 136 | /> |
136 | 137 | </ListComponent> |
| 138 | + <MyTitle>Tipo ModalMultiple</MyTitle> |
| 139 | + <MyText> |
| 140 | + Es un componente unificador que permite renderizar dos tipos de modal distintos dentro de un |
| 141 | + mismo flujo: <br /> |
| 142 | + <br /> <strong>modal</strong> → Modal tradicional (contenido libre, cabecera, footer, |
| 143 | + botones, scroll). |
| 144 | + <br /> <strong>modalAlert / modalLoading</strong> → Modal de alerta o de carga, con |
| 145 | + contenido reducido y foco en la acción del usuario. <br /> |
| 146 | + <br /> Está pensado para casos donde el estado del modal cambia (por ejemplo, |
| 147 | + confirmaciones, advertencias o pasos intermedios) sin necesidad de cerrar y volver a abrir |
| 148 | + otro modal. |
| 149 | + </MyText> |
| 150 | + <ListComponent> |
| 151 | + <ModalMultipleDemo /> |
| 152 | + </ListComponent> |
| 153 | + <Code |
| 154 | + text={` |
| 155 | +import { |
| 156 | + ModalMultiple, |
| 157 | + ModalMultipleProps, |
| 158 | + BtnPrimary, |
| 159 | + BtnSecondary, |
| 160 | + ModalContent, |
| 161 | + ModalButtons, |
| 162 | + ModalAlertButtons, |
| 163 | + BtnLink |
| 164 | +} from '@eclass/ui-kit' |
| 165 | +import { useDisclosure } from '@chakra-ui/react' |
| 166 | +
|
| 167 | +export function View(){ |
| 168 | + const { isOpen, onOpen, onClose } = useDisclosure() |
| 169 | + const [type, setType] = useState<ModalMultipleProps['type']>('modal') |
| 170 | +
|
| 171 | + return ( |
| 172 | + <> |
| 173 | + <BtnPrimary onClick={onOpen}>ModalMultiple</BtnPrimary> |
| 174 | + <ModalMultiple |
| 175 | + type={type} |
| 176 | + isOpen={isOpen} |
| 177 | + onClose={onClose} |
| 178 | + title={type === 'modal' ? 'Confirmación' : '¿Seguro que deseas borrar esta pregunta?'} |
| 179 | + status="info" |
| 180 | + description="Por favor escoge otro horario." |
| 181 | + > |
| 182 | + {type === 'modal' ? ( |
| 183 | + <ModalContent> |
| 184 | + <p>alumnos, además de definir el uso de la plataforma de estudio.</p> |
| 185 | + <ModalButtons> |
| 186 | + <BtnPrimary onClick={() => setType('modalAlert')}>Guardar</BtnPrimary> |
| 187 | + <BtnSecondary onClick={() => onClose()}>Cancelar</BtnSecondary> |
| 188 | + </ModalButtons> |
| 189 | + </ModalContent> |
| 190 | + ) : ( |
| 191 | + <ModalAlertButtons> |
| 192 | + <BtnLink as="button" onClick={() => setType('modal')}> |
| 193 | + Aceptar |
| 194 | + </BtnLink> |
| 195 | + <BtnLink as="button" onClick={() => onClose()}> |
| 196 | + Cancelar |
| 197 | + </BtnLink> |
| 198 | + </ModalAlertButtons> |
| 199 | + )} |
| 200 | + </ModalMultiple> |
| 201 | + </>) |
| 202 | +}`} |
| 203 | + /> |
137 | 204 | </> |
138 | 205 | ) |
139 | 206 | } |
|
0 commit comments