* setup vite and integrate fully with django
- vite starts with `python manage.py runserver`
- add templatetags to simply load vite hmr and entry points
- add eslint (recheck rules)
- enable non-strict ts
* better syntax for cors header setting
* migrate checkin rules editor to vue3
- move constants to a module
- move reading from and writing to non-vue html to django interop module
- switch to composition api and script setup sfc with pug
- use optional chaining operators a lot to simplify code
* migrate webcheckin plugin to vite+vue3
- migrate vue sfcs to script setup and pug
- move fetch calls into a api.ts module
- move common formatting and i18n strings into module
* fix migration error
* first draft migrating widget to vue3/vite
* first couple widget e2e tests
courtesy of claude
most of the tests don't work yet
* test file is not actually used
* drop widget_ prefix from e2e test fixtures
* add test for complete widget journey for simple event
* switch timezone in e2e tests to Europe/Berlin
* make dates in e2e tests relative
* migrate widget bugfix #5886
* start testing event series widget
* working vite widget setup for prod (untested), local dev (with or without dev server) and pytests, with flags for running the old version or the vite version
* simplify e2e test iframe check
* less flaky e2e tests
* top level await in iife build mode is not supported, so let's do import.meta.glob instead (we just need the build step not to see await, the code doesn't actually ever get loaded because it's DEV only)
* fix inconsistencies from automatic migration
* Allow gradual rollout of new vite-based widget by adding urls to an allowlist that gets checked against the "Origin" http header of request fetching the widget js
* add e2e tests for widget button, testing empty cart, adding specific items, and subevents
* remove janky claude testts again
* resolve migration TODOs: properly refocus parent on navigations
* use `npm run dev:control` for the vite dev server for admin components
* upgrade npm dependencies
* fix js linter errors
* fix python linter errors
* build all control vue components
* add new js config files to check-manifest ignore
* working prod build
acutal serving of built assets not tested yet
* fix templatetag paths to match what's in the vite mantifest
* add missing quotes around 'unsafe-eval' cors value
* remove now unused old vue2 tooling
* try fixing e2e test ci
* fix flake8 error
* check if vite build artefacts are in the wheel
* add license headers
* remove dom manipilation code necessary for `div.pretix-widget-compat` to work. No longer needed for vue3
* remove superfluous `createElement` calls
They might have been there because of IE, which is no longer relevant
* make widget dev mode parametizable through query params and document the usage and those params
* fix rst syntax
* remove migration todos file
Co-authored-by: luelista <mira@teamwiki.de>
* rearrange dockerfile commands for smaller image, thanks @luelista
* Update .gitignore, adding .vite
Co-authored-by: luelista <mira@teamwiki.de>
* add eslint CI
* make vue dev work in plugins
* fix docker build
* rebuild vite setup to support static prod plugins and dynamic hmr plugin development
* use toml for vite plugin config instead of standalone json file
* Add widget changes from #6047, #6149
* Allow buttons to reuse cart (Z#23226853)
* Always keep cart of buttons with items set
* widget: handle cart if not same-site (#6149)
---------
Co-authored-by: luelista <mira@teamwiki.de>
Co-authored-by: Kara Engelhardt <engelhardt@pretix.eu>
* Widget: deprecate v1 and redirect to v2
* Make redirect permanent
* remove v1 files
* do not redirect, just serve version_min
* add version-comment to delivered css/js-file
* fix tests
* Add support for versioning widget.js
* add versionable css
* add version deprecation + redirect
* use dynamic template_path instead of dynamic css_path
* remove dummy code from widget.v1.scss
* fix typo
* [A11y] fix input border & focus style (#5149)
* [A11y] fix input border & focus style
* Fix double semi-colon
* [A11y] make collapse-indicator a button (#5150)
* Fix source order for cart-exists-message (#5152)
* [A11y] underline links (#5151)
* [A11y] Move modal-dialogs to HTMLDialogElement (#5147)
* [A11y] move widget/iframe to html-dialog
* make lightbox a dialog
* move error-alert to dialog
* re-add crossorigin
* fix esc-handling and move animation to icon to enable focusing the button
* fix code-style issues
* block canceling loading iframe
* Escape/cancel blocking fix for Chrome
* add round focus-outline when dialog is loading
* Widget v2: change voucher-link to hash-based link (#5161)
* Fix variants toggle-button being submit-button
* Widget v2: make single-item-select button and always show custom-spinners (#5165)
* Widget v2: make single-item-select=button default
* remove native-spinners and single_item_select
* Stop suggesting old parameter
---------
Co-authored-by: Raphael Michel <michel@rami.io>
* Widget v2: add filter button to events metadata-filter (#5162)
* Widget v2: do not underline events in list and calendar (#5163)
* Fix checkbox button missing border radius (#5158)
* Widget v2: turn add-to-cart-button into resume-button if cart-exists and no items selected (#5160)
* Widget v2: make cart-alert live=polite
* Add resume-button if cart-exists and no items selected
* fix error handling with new-tab and later returning to old window
* Fix cart-message button being full height
* fix amount_selected recalc
* Fix broken v-model
* fix merge
* Widget v2: Remove link from variation-product title (#5159)
* Remove link from variation-product, focus associated input
* open variations onclick on product-title
* clickable elements should be focussable and interactive, so better remove click-handler on product-title
* Widget v2: Fix calendar events color contrast (#5164)
* Widget v2: Fix calendar events color contrast
* fix status-bubbles in list-view
* fix color in mobile
* add striped-background to calendar and week
* improve display of calendar for super small screens
* Fix meta-filter legend not being screen-reader accessible
* update version_default to 2
Co-authored-by: Raphael Michel <michel@rami.io>
---------
Co-authored-by: Raphael Michel <michel@rami.io>
* start impl of unavailability modes ui
* add db migration
* use new widget for more fields
* improve contrast
* use new widget for hide_without_voucher field
* improved wording
* rebase migration
* undo changes to require_membership_hidden
* code formatting
* move unavail_reason logic around
* enforce consistent state of hide_without_voucher / require_voucher
* annotate unavailability info in get_grouped_items
* remove MSIE6 compat
* add unavailability reasons to widget
* remove test output
* Apply suggestions from code review
text improvements
Co-authored-by: Richard Schreiber <schreiber@rami.io>
* add css fix for jumping items due to tooltip
* dynamically retrieve unavailability reason message
* widget: simplify logic conditions
* add available_{from,until}_mode to api and api docs
* rebase migration
* rebase migration
* add unavailable_*_mode to ItemVariation
* add available_*_mode to API docs for items
* fix wrong reference
* fix test cases
* add available_*_mode to item variation form
* apply unavailability modes to subevents and variations (presale)
* /o\
* apply unavailability modes to subevents and variations (widget)
* display unavailability mode in subevent product settings
* fix widget test
* fix api item tests
* copy available_*_mode when copying an item
* Apply suggestions from code review
Co-authored-by: Raphael Michel <michel@rami.io>
* Add unavail mode indicator to bulk create and edit forms
---------
Co-authored-by: Richard Schreiber <schreiber@rami.io>
Co-authored-by: Raphael Michel <michel@rami.io>
* remove duplicate context generation
* allow text templates in frontpage_text
* refactor: move placeholder functionality to separate file
* fix wrong class name, code style
* update year in license header
* undo license header update
* use new function name
* render only the placeholders that are actually used in the message
* refactoring
* add str(...) call
* Update doc/development/api/placeholder.rst
Co-authored-by: Raphael Michel <michel@rami.io>
* rename register_mail_placeholders to register_template_placeholders
(deprecate old name)
* isort
* add signals to docs
---------
Co-authored-by: Raphael Michel <michel@rami.io>
* Add public filters based on meta data
* Fix licenseheaders
* ignore empty values
* Fix tests
* Full non-widget implementation
* Widget support
* Add a few tests
* Allow to reorder properties
* Fix isort
* Allow to opt-out for specific events
* Fix name clash between new and old field to make migration feasible