Wq.app

Latest version: v2.1.0

Safety actively analyzes 625726 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 7

2.1.0

**wq.app 2.1.0** is the first release of the wq.app 2.1 series! Be sure to check out the [latest documentation](https://wq.io/) and the [release notes for wq 2.1](https://github.com/wq/wq/releases/v2.1.0) when upgrading.

All changes by sheppard.

* Fix default component lookup in [AutoSubformArray](https://wq.io/components/AutoSubformArray) (2cf4d59)
* Update [Index view](https://wq.io/views/Index) to support expandable sections in site map (2cf4d59)
* Detect wq.db's new MVT service and generate default styles for [VectorTile](https://wq.io/overlays/VectorTile) via new [useStyleProp()](https://wq.io/hooks/useStyleProp) hook (8849220, 68b4fc4)
* Improve support for [natural keys](https://github.com/wq/django-natural-keys) (f08d7fd)
* New [ForeignKeyLink](https://wq.io/components/ForeignKeyLink), [ManyToManyLink](https://wq.io/components/ManyToManyLink), and [RelatedLinks](https://wq.io/components/RelatedLinks) components for use in the [DefaultDetail view](https://wq.io/views/DefaultDetail) (f08d7fd)
* Load deferred geojson before editing (68b4fc4)

2.0.0

**wq.app 2.0.0** is the first stable release of the wq.app 2.0 series! Be sure to check out the [latest documentation](https://wq.io/) and the [release notes for wq 2.0](https://github.com/wq/wq/releases/v2.0.0) when upgrading.

This release updates the Material UI integration introduced in [wq.app 1.3](https://github.com/wq/wq.app/releases/tag/v1.3.0), and also includes react-native compatible versions of all core components. The old jQuery Mobile based renderer has been completely removed.

All changes by sheppard.

Changes since wq.app 2.0 alpha 2

Breaking Changes
* Custom fieldsets should now be registered like other `inputs`, rather than as generic `components` (18fa253).

New Features
* Support both v2 and v3 theme versions for react-native-paper. Specify `theme.version` in your [wq/material](https://wq.io/wq/material) configuration to set the version used. The default is 3, but you may want to set it to 2 if you are upgrading an existing react-native app from wq/material 1.3. (f3e823d)
* To facilitate hot module reloading (like that provided with [Vite](https://vitejs.dev/)), there is a new [wq.dev.js](https://wq.io/wq) that includes the React development build (bc636a1)


Bug Fixes & Enhancements
* Improve `HighlightPopup` & `TabGroup` styles (48889d3)
* Fix `FileArray` state issue (71ff82f)
* Improve memoization of `useRouteTitle()` and `useReverse()` (441caab, 265d8e2)
* Improve object id lookup when applying delete through outbox (265d8e2)
* Fix `Geo` & `Draw` state issues (441caab)
* Fix type of default 404 template name (441caab)

2.0.0a2

**wq.app 2.0 alpha 2** is the second preview of the next version of wq.app, as part of the [wq 2.0 alpha 2](https://github.com/wq/wq/releases/v2.0.0a2) release. This release improves the usage of mui/material imports in [**wq.js**](https://wq.io/wq), provides react-native-paper equivalents for all of wq/material's [Input Types](https://wq.io/inputs/), and updates maplibre-react-native support in [wq/map-gl-native](https://wq.io/wq/map-gl-native).

All changes by sheppard.

[wq/material-web](https://wq.io/wq/material-web) & [wq.js](https://wq.io/wq)
* Update [**wq.js**](https://wq.io/wq) to export additional components from mui/material, including `ImageList` and `ToggleButtonGroup` (a12809f)
* As always, use `import { ImageList } from "mui/material"` in combination with [wq/rollup-plugin](https://wq.io/wq/rollup-plugin) to take advantage of these exports. If you would like to import one of the remaining components not exported by **wq.js**, use the full path (e.g. `import Stack from "mui/material/Stack"`) to ensure the import is ignored by the wq/rollup-plugin.
* Fix tree shaking for mui-file-dropdown (d2aa481). This dependency was causing all of `import * "mui/material"` to be included in **wq.js** even though not everything was being used or re-exported. Adjusting the import reduced the size of wq.js by over 50%.
* Update **wq.js** to export mui/material/utils, including createSvgIcon (8feb269). This facilitates using wq/rollup-plugin with modules that import custom icons from mui/icons-material. Only the unique icon data will be included in each built plugin file, rather than duplicating createSvgIcon since that is already included in wq.js.
* Ensure data attributes from formik-mui are propagated correctly to options in [Select](https://wq.io/inputs/Select) (1beec6f, 06fcbbb)

[wq/material-native](https://wq.io/wq/material-native)
* Implement react-native-paper versions of [File](https://wq.io/inputs/File), [Toggle](https://wq.io/inputs/Toggle), and [Radio](https://wq.io/inputs/Radio) inputs (69c05a7)
* Ensure all input types display hints and error messages as appropriate (69c05a7)
* Implement side panel and tab components to improve mapping UI (69c05a7, 7d69e39)

[wq/map-gl-web](https://wq.io/wq/map-gl-web)
* Use react-map-gl's Popup for highlighted features on larger screens, while preserving the panel-style popup for mobile (21f5966).

[wq/map-gl-native](https://wq.io/wq/map-gl-native)
* Switch from rnmapbox/maps to maplibre/maplibre-react-native (ee19186)
* Update map state hooks to match improvements to wq/map-gl-web in wq.app v2.0.0a1 (0881093, 69c05a7)

2.0.0a1

**wq.app 2.0 alpha** is a preview of the next version of wq.app, as part of the [wq 2.0 alpha](https://github.com/wq/wq/releases/v2.0.0a1) release. The default interface has been upgraded to MUI v5 with MapLibre integration, and support for legacy jQuery Mobile & Leaflet projects has been completely removed.

All changes by sheppard.

Packaging & Ecosystem
A number of changes significantly improve integration with npm and other build tools, as well as Node itself.

* All third-party packages have been updated to latest package versions. In particular, `material-ui/core` (v4) has been upgraded to the latest `mui/material` (v5). (9f9515c, b468228, 28e79ce, 4568600, 6453db3, 84eb5b3, 2c635b4, 79b28cf, 2cd8832).
* All imports (including package-internal imports) are now ESM-compliant with `.js` extensions. It is now possible to execute wq.app directly from Node. (wq/wq58, 34f07d9, c47b145)
* **wq/material** has been split into separate implementation packages, **wq/material-web** and **wq/material-native**. **wq/material** automatically re-exports from **wq/material-web** when running in e.g. Create React App, and from **wq/material-native** when running in e.g. Expo. This separation makes it possible to correctly specify the necessary dependencies for each implementation, while remaining compatible with the latest NPM package specifications. Similarly, **wq/map-gl** has been split into separate **wq/map-gl-web** and **wq/map-gl-native** packages; see below for details. (wq/wq59, b21881a, 984d97a).

* Support for wq 1.2-style AMD projects has been completely removed, as well as the **wq/jquery-mobile** and **wq/leaflet** npm packages. These are maintained in the [1.3 branch](https://github.com/wq/wq.app/tree/1.3) if needed. (#111, eb238c0, 1bbbe37, a6dc7bf, 60cd668)

* Several improvements have been made to the wheel generation process. (0225fc2, ad137bf, b2c946f)

wq.js improvements

The pre-built [wq.js](https://wq.io/wq) script included in wq.app (and on npm) now exports several additional MUI components for use in plugins built with [wq/rollup-plugin](https://wq.io/wq/rollup-plugin). Since these imports are processed at runtime, wq.js automatically warns if an export is not found (44ade26, c39aa11, 5f018b3).

For example, wq/rollup-plugin will transform this:
javascript
import { FakeComponent } from "mui/material";

Into this:
javascript
import { modules } from "./wq.js";
const { FakeComponent } = modules["mui/material"];


When this code is executed in the browser, wq.js will warn that it doesn't have that component (and return an empty component instead, to avoid completely breaking the UI.) Note that some valid mui/material components are missing from wq.js and will return the same error - see [modules.js](https://github.com/wq/wq.app/blob/main/modules.js) for what's included.

Also note that the mapping engine is now shipped as a separate `.js` file and not baked into wq.js (31ad8b8, see below).

MapLibre Integration

Since MapBox is no longer open source, it has been replaced with MapLibre in the default wq.app configuration for both web and native (128).
* **wq/map-gl-web** now exports a `setEngine()` function that accepts the library object to use. When installing **wq/map-gl** and **wq/map-gl-web** from npm, this must be called explicitly. When installing wq.app from PyPI, the pre-built wq.js file already sets this to the output of `./maplibre-gl.js`, which is deployed in the same directory as wq.js (31ad8b8, b468228).
* The React integration has been switched from react-mapbox-gl to react-map-gl. The latter supports swapping the map engine for MapLibre, and also has built-in support for reusing map instances when components are replaced via navigation state changes. The `StickyMap` component and associated offscreen component hacks have been removed in favor of this built-in support. (31ad8b8, 2cc0f40, 6215aa9).
* **wq/map-gl-native** leverages **rnmapbox/maps**, which defaults to MapLibre Native by default. See the [rnmapbox/maps documentation](https://github.com/rnmapbox/maps#supported-implementations) for information on how to override the default. (0deeb88)

New & Updated Components

Several new components have been added to [the registry](https://wq.io/wq/react) to provide a more complete UI out of the box.

New Map Components

[AutoMap](https://wq.io/components/AutoMap) now supports displaying a MUI-styled toolbar with radio buttons for switching the basemap, switches for toggling overlay layers, and a simple legend for each overlay. This support required the addition of several new component types, as shown below (0da45cd, 361ea6c, c39aa11, 2da4718).

Component | Description
--|--
[MapProvider](https://wq.io/components/MapProvider) | Top level component providing a context for referencing a nearby map object
[useMapInstance](https://wq.io/hooks/useMapInstance) | This hook existed before, but it now finds the map through the MapProvider context instead of the wq/map redux state.
[MapLayers](https://wq.io/components/MapLayers) | Virtual node wrapping all `AutoBasemap` and `AutoOverlay` nodes. The default is just a `Fragment`
[MapContainer](https://wq.io/components/MapContainer) | Layout node that contains both the `Map` component and the new `MapToolbar` [MapToolbar](https://wq.io/components/MapToolbar) | Basemap and overlay switcher built from the follwoing components.
[SidePanel](https://wq.io/components/SidePanel) | Lightweight responsive drawer for embedding in e.g. map views.
[CheckboxButton](https://wq.io/components/CheckboxButton) | Checkbox for cases that don't require a [form input](https://wq.io/inputs/Checkbox)
[RadioButton](https://wq.io/components/RadioButton) | Radio button for cases that don't require a [form input](https://wq.io/inputs/Radio)
[Switch](https://wq.io/components/Switch) | Switch component
[Legend](https://wq.io/components/Legend) | Renders the legend for an individual overlay. (Note that `MapToolbar` was named `Legend` in wq.app 1.3. )
[LegendIcon](https://wq.io/components/LegendIcon) | Legend Icon component

The conceptual component tree for a typical `AutoMap` layout is now as follows:

jsx
<MapProvider>
<AutoMap>
<MapContainer>
<MapToolbar>
<BasemapToggle>
<RadioButton />
</BasemapToggle>
<OverlayToggle>
<Switch />
<Legend>
<LegendIcon />
</Legend>
</OverlayToggle>
</MapToolbar>
<Map>
<MapInteraction />
<MapAutoZoom />
<MapIdentify />
<MapLayers>
<AutoBasemap>
<Tile />
</AutoBasemap>
<AutoOverlay>
<Geojson />
</AutoOverlay>
</MapLayers>
<Highlight />
</Map>
</MapContainer>
</AutoMap>
<HighlightPopup />
</MapProvider>


These components can customized or disabled through [configuration](https://wq.io/config), through the [component registry](https://wq.io/components/), and (in the case of `MapToolbar`) through props provided to `<AutoMap/>`. Set `<AutoMap toolbar={<CustomToolbar/>} />` to override the default, or `<AutoMap toolbar={false} />` to disable it.

New Layout Components

The default layout has been improved for both desktop and mobile devices, through the addition of a number of components.

Component | Description | Commit
--|--|--
[Logo](https://wq.io/components/Logo) | Site logo shown in app bar. Set [config.logo](https://wq.io/config) to an image path, or [overrride the component](https://wq.io/plugins/components). | 3a51fe7
[NavMenu](https://wq.io/views/NavMenu) | Responsive site navigation menu. On small screens this will appear via [NavMenuPopup](https://wq.io/components/NavMenuPopup), while larger screens will use [NavMenuFixed](https://wq.io/components/NavMenuFixed). `NavMenu` itself is registered as a [view component](https://wq.io/views/) that is the same as [Index](https://wq.io/views/Index) by default but can be overridden. | d68754c, 7e9e157
[TabGroup](https://wq.io/components/TabGroup) | Based on mui/materia's `Tabs`, but automatically renders the content for the selected tab. Used in [wq/map](https://wq.io/wq/map)'s updated [DefaultList](https://wq.io/views/DefaultList) and [DefaultDetail](https://wq.io/views/DefaultDetail) to support a tabbed layout on small screens. | 461add6
[TabItem](https://wq.io/components/TabItem) | Based on mui/material's `Tab`, but with support for wq/react's [icon registry](https://wq.io/icons). Accepts `children` which are conditionally rendered by `TabGroup` | 461add6
[BottomNavigation](https://wq.io/components/BottomNavigation) | mui/material's `BottomNavigation` | 461add6
[BottomNavigationAction](https://wq.io/components/BottomNavigationAction) | Based on mui/material's `BottomNavigationAction`, but with support for wq/react's [icon registry](https://wq.io/icons). | 461add6
[TablePagination](https://wq.io/components/TablePagination) | mui/material's `TableNavigation` | cfd1993
[TableContainer](https://wq.io/components/TableContainer) | mui/material's `TableContainer` | cfd1993

Updated Components

Component | Description | Commit
--|--|--
[Accordion](https://wq.io/components/Accordion) | Renamed from ExpansionPanel | 9f9515c
[PropertyTable](https://wq.io/components/PropertyTable) | Now renders nested fieldsets and arrays as sub-tables instead of JSON | d27b71d
[OutboxList](https://wq.io/views/OutboxList) | Fix flex layout | 7b1f09a
[IconButton](https://wq.io/components/IconButton) | Throw specific error if icon is missing, rather than waiting for React to fail | 47cb370
[Select](https://wq.io/inputs/Select) | Improve formik-mui integration & also support native `<select>` | c39aa11, ffd813e, 727231b
[DateTime](https://wq.io/inputs/DateTime) | Remove custom date picker library in favor of `<input type="datetime-local">` | 7b1f09a, 969f2fd

Data Model & Configration
* Most foreign key logic has moved out of the legacy context generator into components and [wq/model](https://wq.io/wq/model) capabilities. In particular, [ForeignKey](https://wq.io/inputs/ForeignKey) is now a separate input type that renders as `Select` after directly querying the ORM for available choices. (#75, ffd813e, b6d2877, a88f426, 8090833)
* The mostly redundant `wq_config` object led to confusion, and has been removed (wq/wq54, b453065)
* Route templates (i.e. view components) can be specifed through configuration (d1c85ca)
* `page.defaults` now works for fields nested under fieldsets (49b1af2)

1.3

module | description
--|--
[wq/map]+[wq/mapbox] | [Mapbox GL JS] integration for web and Mapbox Maps SDK for [Android][mapbox-android] & [iOS][mapbox-ios].
[wq/map]+[wq/leaflet] | [Leaflet] integration (web only).

Upgrade Notes

Continue using Leaflet

If you are upgrading from an older version of wq with npm, install and import `wq/leaflet` instead of `wq/map`. If you are upgrading from an older RequireJS/AMD template, then wq/map.js is actually an alias for wq/leaflet and should work the same as before. However, note again that RequireJS support will be dropped in wq 2.0.

Switch to wq/mapbox

[wq/map]'s layer configuration syntax is designed to be engine-agnostic, so switching from wq/leaflet to wq/mapbox will generally just work. However, you will likely want to take advantage of Mapbox GL's vector tile support. To do so, you will need to find a vector tile provider online or host the tiles yourself. Providers known to work with wq/mapbox include [Mapbox](https://www.mapbox.com/) (obviously), [ESRI](https://www.arcgis.com/home/group.html?id=30de8da907d240a0bccd5ad3ff25ef4a), and [MapTiler Cloud](https://cloud.maptiler.com/).

[Leaflet]: http://leafletjs.com
[Mapbox GL JS]: https://docs.mapbox.com/mapbox-gl-js/
[wq/map]: https://github.com/wq/wq.app/tree/master/packages/map
[wq/leaflet]: https://github.com/wq/wq.app/tree/master/packages/leaflet
[wq/mapbox]: https://github.com/wq/wq.app/tree/master/packages/mapbox
[mapbox-android]: https://docs.mapbox.com/android/maps/overview/
[mapbox-ios]: https://docs.mapbox.com/ios-sdk/maps/overview/

<a name="service-worker">Service Worker</a>

> **Browsers are removing support for Application Cache, which has been superseded by Service Worker.**

The Application Cache standard is being deprecated by browser vendors, and for good reason - it was inflexible and hard to use. wq now includes built-in support for [Service Workers] instead. The new `wq serviceworker` command replaces the `wq appcache` command for projects not using npm. For projects using npm, the provided [wq Create React App template][wq/cra-template] already includes code to generate a service worker.

[wq/cra-template]: https://github.com/wq/wq.start/tree/master/packages/cra-template

Upgrade Notes

The `wq appcache` command will be removed in wq 2.0, and remains in 1.3 for backwards comparability. However, Application Cache has likely already stopped working for your users. To use service workers in an project with npm, change `serviceWorker.unregister()` to `serviceWorker.register()` in `src/index.js`. For projects without npm, use the `wq serviceworker` command by adding a `serviceworker` section to your `wq.yml`, perhaps basing it on [the new default template][wq.yml]. Then, make sure your service worker is registered by adding the following line to your main JS file:

javascript
navigator.serviceWorker.register('/service-worker.js');

[Service Workers]: https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API
[wq.yml]: https://github.com/wq/wq-django-template/blob/master/wq.yml

<a name="installable-pwa">Installable PWA</a>

> **PhoneGap Build is no more... but wq.app generates installable PWAs instead!**

[PhoneGap Build] was the main way to compile wq-based apps for distribution on the Android and iOS stores. However, the service has recently gone offline, and general interest in Cordova/PhoneGap has waned. [Installable progressive web apps][pwa], or PWAs, provide a full-featured alternative that should be suitable for many projects. On Android in particular, PWAs are effectively indistinguishable from native apps once installed. wq has long supported the "Add to Homescreen" option, but the addition of Service Worker support significantly increases the likelihood that the phone UI will automatically prompt the user to install the application (see 63, 107).

Upgrade Notes

To create a progressive web app, be sure to enable wq.app's [service worker](user-content-service-worker) support. Then, customize your app icon by editing `app/public/images/icon.svg`, and saving it to `app/public/images/icon-1024.png`. Customize the title and colors in `app/public/manifest.json`, run `./deploy.sh` again, and ensure HTTPS is enabled. Your web app should be ready for installation.

The `wq phonegap` command remains, but will likely fail when sending the payload to the build servers. It will be removed in wq 2.0 (see 121).

[PhoneGap Build]: https://build.phonegap.com
[pwa]: https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Installable_PWAs

<a name="react-native-expo">React Native + Expo</a>

> **wq.app now supports React Native and Expo if you need a truly native app.**

Sometimes even a progressive web app is not enough, particularly if your app is intended for a wide audience of users who are used to finding apps on the stores. Or, perhaps you may want to take advantage of Mapbox's native SDKs. To support these use cases, [wq/react], [wq/material], and [wq/mapbox] all support both [React Native] and [Expo].

[React Native]: https://reactnative.dev
[Expo]: https://expo.io
[react-native-maps]: https://github.com/react-native-community/react-native-maps

Upgrade Notes

To use React Native or Expo, it may be easiest to start by creating a project using the recommended tools for each platform. Then, replace the contents of `src/` with the contents of [wq/cra-template's src/ directory](https://github.com/wq/wq.start/tree/master/packages/cra-template/template/src). It is possible (and recommended) to use the same `src/` directory for both the web and native deployments of a wq.app-based project. Finally, you will need to install all additional dependencies as described in the documentation for [wq/material] and [wq/mapbox].

1.3.0

**wq.app 1.3.0** is the first stable release of the wq.app 1.3 series! Be sure to check out the [latest documentation](https://wq.io/) and the [release notes for wq 1.3](https://github.com/wq/wq/releases/v1.3.0) when upgrading.

This release stabilizes the new UI introduced in [wq.app 1.3 alpha](https://github.com/wq/wq.app/releases/tag/v1.3.0a1), with a particular focus on improving mapping & React Native/Expo support.

> Note: While wq.app's React Native / Expo support is already being used in production apps, not all components supported by wq.app's web build have working native equivalents. Complete native support and documentation will be provided by wq.app 2.0.

All changes by sheppard.

Changes since wq.app 1.3 beta

[wq/map](https://wq.io/wq/map) & [wq/map-gl](https://wq.io/wq/map-gl)
* Restore and improve identify/popup support (59d3884)
* Restore and improve autoZoom support (57)
* Improve support for [preserving map instances](https://wq.io/components/StickyMap) during route transitions (8519953, 0b21dc3, bd3a734, 5c78516, a524064)
* Improve customization support for Geo tools (cdabda6, d848cec, 761d453, 00d494e)
* Preserve overlay visibility state across application reloads (4215bf6)
* Support custom zoom logic; remove bounds state (b2ea732)
* Include components as named exports (6b54e18)
* Improve backwards compatibility with Leaflet-based wq/map.js (29ec39b, ca1e4da, 550801a)

React Native / Expo Support
* Improve basemap support (1fb706d, ef2be89)
* Geopoint & Geolocation support (5dad061, 4bafaf0, ef2be89)
* Improve date handling (6639972, ef2be89)

[wq/react](https://wq.io/wq/react) & [wq/material](https://wq.io/wq/material)
* Improve ability to customize form children and root element (3488e15, 2ab7757)
* Default numeric fields to null (40d35a3)
* Improve label handling for [Select](https://wq.io/inputs/Select) choices (f7c5f18, 130c883)
* Increase maximum file size to 100MB in [File](https://wq.io/inputs/File) and [Image](https://wq.io/inputs/Image) (adb004e)
* Return outbox item to submitForm() (c810d65)
* Move component registry out of module config (756473f)
* Make [`ExpandableListItem`](https://wq.io/components/ExpandableListItem) controllable (364e006)
* Support choice, image, and file inputs in [`PropertyTable`](https://wq.io/components/PropertyTable) (2ec27cd)

[wq/model](https://wq.io/wq/model) & [wq/router](https://wq.io/wq/router)
- New `cache="autoupdate"` mode (bf502ce)
- Skip prefetch if `cache="none"` (c948db1)
- Process limit parameter for [`Pagination`](https://wq.io/components/Pagination) (bbda61c)
- Looser comparison for string numbers in filters (1378a1e)
- Show synced items in main [`OutboxList`](https://wq.io/views/OutboxList) (c2585fd)
- Handle empty variables during startup (1e24fac)

Page 1 of 7

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.