Um seletor de arquivos e pastas leve, sem dependências, feito com HTML5, CSS3 e JavaScript puro. Projetado para uso independente ou integrado com ambientes como o Tasker no Android, ele permite navegação hierárquica, seleção múltipla, busca e cache de diretórios via localStorage.
- Navegação hierárquica com trilhas e botão de voltar
- Listagem com Metadados (contagem de itens por pasta, tamanho e data de modificação)
- Metódos de ordenação para arquivos e pastas
- Seleção múltipla de arquivos e pastas e cópia dos caminhos
- Busca local por arquivos e pastas no diretório atual
- Renderização otimizada com scroll infinito
- Internacionalização (i18n) baseada no ambiente (pt-BR, en-US, es-ES)
- Modo claro/escuro baseado no ambiente
- Cache de diretórios para carregamento rápido
- Compatível com Tasker (Android) via script shell
file-picker.sh
- Frontend: HTML5 + CSS3 + JavaScript
- Backend (opcional): Script shell SH
file-picker.shpara integração com Tasker ou outro ambiente hospedeiro.
-
Clone o repositório:
git clone https://github.com/x-mrrobot/file-picker.git -
Navegue para a pasta do projeto:
cd file-picker -
Acesse
index.htmlno navegador (clique no arquivo ou abra com um servidor local).
A navegação usará dados mockados via data.js.
Para usar o seletor de arquivos diretamente no Tasker:
- Instale o Tasker na Play Store
- Importe o projeto na TaskerNet
- Mostre a cena executando a tarefa FP - PICK FILES UI
- Receba o resultado da seleção na aba toque no link do webview
- O ambiente hospedeiro deve:
- Executar comandos via
file-picker.sh - Expor propriedades:
languageCode: "en-US"isDarkModeEnabled: true
- Expor métodos:
execute(command, ...args)notify(message)terminate()submitSelection(items)
- Executar comandos via
- Comandos esperados no script:
list_directory "caminho"get_sd_card_pathget_subfolder_item_count "caminho"
/file-picker
│
├── index.html
│
├── css/
│ ├── variables.css
│ ├── reset.css
│ ├── loading.css
│ ├── header.css
│ ├── sort.css
│ ├── navigation.css
│ ├── search.css
│ ├── file-list.css
│ ├── checkbox.css
│ └── footer.css
│
├── js/
│ ├── fileSystemData.js
│ ├── webEnvironment.js
│ ├── EnvironmentManager.js
│ ├── EventBus.js
│ ├── Utils.js
│ ├── IconManager.js
│ ├── I18nManager.js
│ ├── AppState.js
│ ├── CacheManager.js
│ ├── DOMElements.js
│ ├── FileManager.js
│ ├── NavigationManager.js
│ ├── SearchManager.js
│ ├── SelectionManager.js
│ ├── PaginationManager.js
│ ├── SubfolderQueueManager.js
│ ├── FileListRenderer.js
│ ├── UIRenderer.js
│ ├── SortManager.js
│ ├── PullToRefreshManager.js
│ ├── EventManager.js
│ └── App.js
│
└── file-picker.sh
Contribuições são bem-vindas! Sinta-se à vontade para:
- Abrir issues com sugestões ou problemas.
- Enviar pull requests com melhorias, correções ou novas funcionalidades.
Este projeto está licenciado sob a MIT License.
