Added checkboxes & radio buttons; Updated uninstall script
This commit is contained in:
57
README.md
57
README.md
@@ -75,13 +75,14 @@ INSTALL_DIR=~/.local/bin bash install.sh
|
||||
|
||||
### Popup запущенного скрипта
|
||||
|
||||
| Клавиша | Действие |
|
||||
|---|---|
|
||||
| `↑` / `↓` или `k` / `j` | Прокрутка лога / навигация по селектору |
|
||||
| `PgUp` / `PgDn` | Прокрутка лога на 10 строк |
|
||||
| `Y` / `N` или `l` / `h` | Ответ на подтверждение (без Enter) |
|
||||
| `Enter` или `l` | Выбрать пункт селектора / подтвердить |
|
||||
| `Esc` или `h` | Прервать скрипт и закрыть popup |
|
||||
| Клавиша | Контекст | Действие |
|
||||
|---|---|---|
|
||||
| `↑` / `↓` или `k` / `j` | Лог / селектор / форма | Прокрутка лога или навигация между элементами |
|
||||
| `PgUp` / `PgDn` | Лог | Прокрутка на 10 строк |
|
||||
| `Space` | Форма | Переключить чекбокс / выбрать радиокнопку |
|
||||
| `Y` / `N` или `l` / `h` | Подтверждение | Ответ без Enter |
|
||||
| `Enter` или `l` | Любой ввод | Отправить / выбрать / применить форму |
|
||||
| `Esc` или `h` | — | Прервать скрипт и закрыть popup |
|
||||
|
||||
> Vim-motions (`j`/`k`/`l`/`h`) отключаются автоматически во время текстового ввода — символы идут в поле ввода как обычно.
|
||||
|
||||
@@ -431,6 +432,48 @@ notify '{"type":"progress","percent":100,"message":"Готово!"}'
|
||||
|
||||
---
|
||||
|
||||
### Форма с чекбоксами и радиокнопками (`form`)
|
||||
|
||||
Отображает список полей с возможностью навигации и переключения. Возвращает строку с ID всех включённых/выбранных полей через пробел.
|
||||
|
||||
```json
|
||||
{
|
||||
"type": "form",
|
||||
"prompt": "Параметры поиска:",
|
||||
"fields": [
|
||||
{"id": "verbose", "label": "Подробный вывод", "field_type": "checkbox", "default": false},
|
||||
{"id": "php", "label": "PHP файлы (*.php)", "field_type": "radio", "group": "ftype", "default": true},
|
||||
{"id": "js", "label": "JS файлы (*.js)", "field_type": "radio", "group": "ftype", "default": false}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
| Поле | Описание |
|
||||
|---|---|
|
||||
| `id` | Идентификатор, возвращается если поле включено |
|
||||
| `label` | Отображаемый текст |
|
||||
| `field_type` | `"checkbox"` или `"radio"` |
|
||||
| `default` | Начальное состояние |
|
||||
| `group` | Группа радиокнопок — одновременно активна только одна в группе |
|
||||
|
||||
**Ответ:** строка с ID активных полей через пробел: `"verbose php"`
|
||||
|
||||
**Клавиши внутри формы:** `↑`/`↓`/`j`/`k` — навигация, `Space` — переключить, `Enter`/`l` — применить, `Esc` — отмена.
|
||||
|
||||
**Важно:** весь JSON должен быть на **одной строке** — протокол читает строки, не блоки.
|
||||
|
||||
```bash
|
||||
result=$(ask '{"type":"form","prompt":"Параметры:","fields":[{"id":"verbose","label":"Подробный вывод","field_type":"checkbox","default":false},{"id":"php","label":"PHP файлы","field_type":"radio","group":"t","default":true},{"id":"js","label":"JS файлы","field_type":"radio","group":"t","default":false}]}')
|
||||
|
||||
is_on() { [[ " $result " == *" $1 "* ]]; }
|
||||
|
||||
is_on "verbose" && FLAGS+=("-v")
|
||||
is_on "php" && INCLUDE="--include=*.php"
|
||||
is_on "js" && INCLUDE="--include=*.js"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Запуск внешнего приложения (`exec`)
|
||||
|
||||
Временно **передаёт терминал** внешней программе (mysql, vim, htop и др.). Клиент скрывает TUI, программа работает на полном экране, после завершения TUI восстанавливается. Возвращает код завершения.
|
||||
|
||||
Reference in New Issue
Block a user