Вам необходимо реализовать функционал aналогичный нативному confirm("")
с некоторыми особенностями:
- Асинхронный неблокирующий возврат
- Реализация через наследование классов
- Полная типизация TypeScript
- Поддержка нестандартного отображения
Перед Вами проект, который необходимо дописать, чтобы:
- диалог открывался по нажатию кнопки "Open Dialog"
- закрывался по нажатию одной из кнопок "Отмена"/"Подтвердить"
- по нажатию одной из кнопок "Отмена"/"Подтвердить" возвращаемый из метода
open
Promise должен разрешаться(resolve) в значенияfalse
иtrue
соответственно (Отмена - false, Подтвердить - true).
Вам требуется:
- Реализовать класс
src/dialog/Dialog.ts
- Реализовать логику компонента
src/dialog/ConfirmDialogComponent.vue
- Реализовать шаблонизацию строк 6-14 в
src/App.vue
или вынести в отдельный компонент - Учесть, что на странице может быть одновременно открыто некоторое количество диалогов (каскадом), в том числе одного типа (верстка уже произведена за вас)
- (По необходимости) реализовать дополнительные классы и компоненты для выполнения требований.
- Использовать TypeScript и полную типизацию
- Учесть по возможности best-practise, принципы, паттерны и т.п.
Допольнительные требования:
- Код открытия диалога
openDialog
, объявление классаConfirmUserDeleteDialog
, реализацияConfirmDialog
, должен остаться неизменным - Подключать глобальные хранилища любого типа нельзя
- Подключать сторонний IoC - можно (но задача решается и без него)
- Взаимодействовать с
DOM API
вручную КРАЙНЕ не рекомендуется - у вас есть Vue))) ( Но можно дополнительно решить задачу используя толькоDOM API
иTypeScript
без использования runtime-зависимостей -)
Примечание:
- За вас уже произведена верстка - если Вам понадобилось что-то верстать - вероятно Вы ушли не в ту сторону
- Установить зависимости
pnpm i
- Запустить лайвсервер
vite