You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Surroundings multiselect now actually persists picked settlements. The framework's FieldValidator::process() explicitly skips Field::RAW entries (no built-in sanitizer / validator), so the picker rendered fine but the chosen settlement IDs never reached the option. Hooked Tab::beforeSave() to pull the raw POST array directly, sanitize each entry to a positive int + validate it exists in the dataset, and inject the result into the clean payload that gets persisted. Settlement IDs that don't resolve are silently dropped (defensive against tampered POSTs).
Bigger, clearer picker UI. Visible input box is now min-height: 120px (was Select2's default ~32px) so it reads as a proper multi-line picker. Search input inside is min-width: 240px, font-size: 14px, with placeholder colour and a transparent background so typed text is visible against the white pill area. Pills use the brand --brand-soft background + --brand-border border to match the rest of the dashboard.
Container grows dynamically as more pills are added. Replaced the earlier display: flex rule (which fought Select2's natural <li> flow and clipped pills below the visible border) with an inline-block layout + height: auto + overflow: visible overrides — the box now extends downward smoothly as the merchant adds more surroundings.
Scoped Select2 styling via containerCssClass: 'codeon-tbilisi-picker' + dropdownCssClass: 'codeon-tbilisi-picker-dropdown' so these overrides only touch the surroundings picker and never bleed into other Select2 instances elsewhere on the page.