survos / mobile-bundle
Bundle with utilities for creating a Symfony-based mobile app
Fund package maintenance!
kbond
Installs: 257
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 3
Forks: 0
Open Issues: 0
Type:symfony-bundle
Requires
- php: ^8.3
- knplabs/knp-menu-bundle: ^3.2
- survos/core-bundle: ^1.5
- symfony/config: ^6.4 || ^7.1
- symfony/dependency-injection: ^6.4 || ^7.1
- symfony/event-dispatcher: ^6.4 || ^7.1
- symfony/http-kernel: ^6.4 || ^7.1
- symfony/options-resolver: ^7.2
- symfony/ux-twig-component: ^2.22
- twig/twig: ^3.4
Requires (Dev)
- phpstan/phpstan: ^2.0
- symfony/browser-kit: ^6.4 || ^7.1
- symfony/framework-bundle: ^6.4 || ^7.1
- symfony/phpunit-bridge: ^6.4 || ^7.1
- symfony/security-bundle: ^6.4 || ^7.1
- symfony/twig-bundle: ^6.4 || ^7.1
- symfony/var-dumper: ^6.4 || ^7.1
- dev-main
- 1.5.442
- 1.5.441
- 1.5.440
- 1.5.439
- 1.5.438
- 1.5.437
- 1.5.436
- 1.5.435
- 1.5.434
- 1.5.433
- 1.5.432
- 1.5.431
- 1.5.430
- 1.5.429
- 1.5.428
- 1.5.427
- 1.5.426
- 1.5.425
- 1.5.424
- 1.5.423
- 1.5.422
- 1.5.421
- 1.5.420
- 1.5.419
- 1.5.418
- 1.5.417
- 1.5.416
- 1.5.415
- 1.5.414
- 1.5.413
- 1.5.412
- 1.5.411
- 1.5.410
- 1.5.409
- 1.5.408
- 1.5.407
- 1.5.406
- 1.5.405
- 1.5.404
- 1.5.403
- 1.5.402
- 1.5.401
- 1.5.400
- 1.5.399
- 1.5.398
- 1.5.397
- 1.5.396
- 1.5.395
- 1.5.394
- 1.5.393
- 1.5.392
- 1.5.391
- 1.5.390
- 1.5.389
- 1.5.388
- 1.5.387
- 1.5.386
- 1.5.385
- 1.5.384
- 1.5.383
- 1.5.382
- 1.5.381
- 1.5.380
- 1.5.379
- 1.5.378
- 1.5.377
- 1.5.376
- 1.5.375
- 1.5.374
- 1.5.373
- 1.5.372
- 1.5.371
- 1.5.370
- 1.5.369
- 1.5.368
- 1.5.367
- 1.5.366
- 1.5.365
- 1.5.364
- 1.5.363
- 1.5.362
- 1.5.361
- 1.5.360
- 1.5.359
- 1.5.358
- 1.5.357
- 1.5.356
- 1.5.355
- 1.5.354
- 1.5.353
- 1.5.352
- 1.5.351
- 1.5.350
- 1.5.345
- 1.5.344
- 1.5.343
- 1.5.342
- 1.5.341
- 1.5.340
- 1.5.339
- 1.5.338
- 1.5.337
- 1.5.336
- 1.5.335
- 1.5.334
- 1.5.333
- 1.5.332
- 1.5.331
- 1.5.330
- 1.5.329
- 1.5.328
- 1.5.327
- 1.5.326
- 1.5.325
- 1.5.324
- 1.5.323
- 1.5.322
- 1.5.321
- 1.5.320
- 1.5.319
- 1.5.318
- 1.5.317
- 1.5.316
- 1.5.315
- 1.5.314
- 1.5.313
- 1.5.312
- 1.5.311
- 1.5.310
- 1.5.309
- 1.5.308
- 1.5.307
- 1.5.306
- 1.5.305
- 1.5.304
- 1.5.303
- 1.5.302
- 1.5.301
- 1.5.300
- 1.5.299
- 1.5.298
- 1.5.297
- 1.5.296
- 1.5.295
- 1.5.294
- 1.5.293
- 1.5.292
- 1.5.291
- 1.5.290
- 1.5.289
- 1.5.288
- 1.5.287
- 1.5.286
- 1.5.285
- 1.5.284
- 1.5.283
- 1.5.282
- 1.5.281
- 1.5.280
- 1.5.279
- 1.5.278
- 1.5.277
- 1.5.276
- 1.5.275
- 1.5.274
- 1.5.273
- 1.5.272
- 1.5.271
- 1.5.270
- 1.5.269
- 1.5.268
- 1.5.267
- 1.5.266
- 1.5.265
- 1.5.264
- 1.5.263
- 1.5.262
- 1.5.261
- 1.5.260
- 1.5.259
- 1.5.258
- 1.5.257
- 1.5.256
- 1.5.255
- 1.5.254
- 1.5.253
- 1.5.252
- 1.5.251
- 1.5.250
- 1.5.249
- 1.5.248
- 1.5.247
- 1.5.246
- 1.5.245
- 1.5.244
- 1.5.243
- 1.5.242
- 1.5.241
- 1.5.240
- 1.5.239
- 1.5.238
- 1.5.237
- 1.5.236
- 1.5.235
- 1.5.234
- 1.5.233
- 1.5.232
- 1.5.231
- 1.5.230
- 1.5.229
- 1.5.228
- 1.5.227
- 1.5.226
- 1.5.225
- 1.5.224
- 1.5.223
- 1.5.222
- 1.5.221
- 1.5.220
- 1.5.219
- 1.5.218
- 1.5.217
- 1.5.216
- 1.5.215
- 1.5.214
- 1.5.213
- 1.5.212
- 1.5.211
- 1.5.210
- 1.5.209
- 1.5.208
- 1.5.207
- 1.5.206
- 1.5.205
- 1.5.204
- 1.5.203
- 1.5.202
This package is auto-updated.
Last update: 2024-12-18 17:30:36 UTC
README
A collection of tools to help create Symfony-based mobile apps.
- OnsenUI
- pwa-bundle
- Dexie
Work in Progress. See survos-sites/pokemon to see this in action.
Notes
These need to be cleaned up, but they're useful to me during development.
Twig
The application can be run as an SPA. The initial page must extend the base page
{% extends "@SurvosMobile/base.html.twig" %}
create app_controller and extend it from
If using the OnsenUI documentation, replace
onclick="loadPage('whatever')"
with
{{ stimulus_action(_app_sc, 'loadPage', 'click', {
route: 'whatever'
}) }}
_app_sc should be set to 'app', someday this may change (hotwired/stimulus#641)
Tabs and Pages
Two fundamental concepts: the tabs at the bottom of the screen, and everything else.
All pages, though, are pre-loaded as twig templates in OnsenController.
To create the tabs, the following, where id is the name of the tab template
#[AsEventListener(event: KnpMenuEvent::MOBILE_TAB_MENU)] public function tabMenu(KnpMenuEvent $event): void { $menu = $event->getMenu(); $this->add($menu, id: 'projects', label: 'projects', icon: 'fa-list'); $this->add($menu, id: 'tours', label: 'tours', icon: 'fa-list', badge: 'x'); $this->add($menu, id: 'share', label: 'share', icon: 'fa-qrcode');
Events
When a tab is clicked, a 'prechange' event is dispatched, with event.tabItem as the tab that's about to become active. We intercept
Dynamic Data
To load dynamic data into a page, you must first put the data into dixie. The basic way is to set up "stores" and define the indexable fields, eg..
survos_js_twig: debug: true db: omar-db version: 7 stores: - name: items schema: "++id,code,title,projectCode" url: /api/items - name: projects schema: "code" url: /api/projects
Stimulus Helpers
https://github.com/symfony/ux/blob/2.x/src/StimulusBundle/src/Dto/StimulusAttributes.php
tests: https://github.com/symfony/ux/blob/2.x/src/StimulusBundle/tests/Twig/StimulusTwigExtensionTest.php
I need a create and publish an es6 package that exports 3 functions produce the exact same result as their PHP counterpart.
For example,
import {stimulus_controller, stimulus_target, stimulus_action} from 'stimulus-twig'; let str = stimulus_controller('my-controller', {myValue: 'scalar-value'}); console.assert(str == 'data-controller="my-controller" data-my-controller-my-value-value="scalar-value"');
All of the tests can be found (in PHP) at https://github.com/symfony/ux/blob/2.x/src/StimulusBundle/tests/Twig/StimulusTwigExtensionTest.php The PHP code is at https://github.com/symfony/ux/blob/2.x/src/StimulusBundle/src/Dto/StimulusAttributes.php The methods should be able to return an array and a string, exactly as the PHP code does. Fortunately, the PHP code is very well written
This job consists of the following:
- Convert the PHP unit tests to javascript, using Jest or another testing packing.
- Convert the PHP code to an es6 class that exports the 3 methods and passes the tests
- Push the code to a github repo
- Publish the package to npmjs, and make sure it works with package bundlers like jsdelivr and unpkg
Please point to a package on npmjs that you've written
Requirement
bin/console importmap:require stimulus-attributes bin/console importmap:require fos-routing composer req friendsofsymfony/jsrouting-bundle