Migrate jQuery 'select all on focus' in Image URL generator to Stimulus

Adds support of this useful shared functionality in the ActionController
Fixes #11031
pull/11040/head
Chiemezuo 2023-10-12 03:52:18 +01:00 zatwierdzone przez LB (Ben Johnston)
rodzic 7b0807d17e
commit 4269d824f9
7 zmienionych plików z 50 dodań i 7 usunięć

Wyświetl plik

@ -98,6 +98,7 @@ Changelog
* Maintenance: Add changelog and issue tracker links to the PyPI project page (Panagiotis H.M. Issaris) * Maintenance: Add changelog and issue tracker links to the PyPI project page (Panagiotis H.M. Issaris)
* Maintenance: Add better deprecation warnings to the `search.Query` & `search.QueryDailyHits` model, move final set of templates from the admin search module to the search promotions contrib module (LB (Ben) Johnston) * Maintenance: Add better deprecation warnings to the `search.Query` & `search.QueryDailyHits` model, move final set of templates from the admin search module to the search promotions contrib module (LB (Ben) Johnston)
* Maintenance: Add generic `InspectView` to `ModelViewSet` (Sage Abdullah) * Maintenance: Add generic `InspectView` to `ModelViewSet` (Sage Abdullah)
* Maintenance: Migrate select all on focus/click behavior to Stimulus, used on the image URL generator (Chiemezuo Akujobi)
5.1.3 (xx.xx.20xx) - IN DEVELOPMENT 5.1.3 (xx.xx.20xx) - IN DEVELOPMENT
~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~

Wyświetl plik

@ -743,6 +743,7 @@
* Panagiotis H.M. Issaris * Panagiotis H.M. Issaris
* Damilola Oladele * Damilola Oladele
* Olumide Micheal * Olumide Micheal
* Chiemezuo Akujobi
## Translators ## Translators

Wyświetl plik

@ -169,4 +169,34 @@ describe('ActionController', () => {
expect(window.location.assign).not.toHaveBeenCalled(); expect(window.location.assign).not.toHaveBeenCalled();
}); });
}); });
describe('select method', () => {
beforeEach(async () => {
await setup(`
<textarea
id="text"
rows="1"
data-controller="w-action"
data-action="focus->w-action#select"
>
some random text
</textarea>
`);
});
it('select should be called when you click on text in textarea', () => {
const textarea = document.getElementById('text');
// check that there is no selection initially
expect(textarea.selectionStart).toBe(0);
expect(textarea.selectionEnd).toBe(0);
// focus
textarea.focus();
// check that there is a selection after focus
expect(textarea.selectionStart).toBe(0);
expect(textarea.selectionEnd).toBe(textarea.value.length);
});
});
}); });

Wyświetl plik

@ -34,9 +34,16 @@ import { WAGTAIL_CONFIG } from '../config/wagtailConfig';
* <option value="/path/to/2">2</option> * <option value="/path/to/2">2</option>
* </select> * </select>
* </form> * </form>
*
* @example - triggering selection of the text in a field
* <form>
* <textarea name="url" data-controller="w-action" data-action="click->w-action#select">
* This text will all be selected on focus.
* </textarea>
* </form>
*/ */
export class ActionController extends Controller< export class ActionController extends Controller<
HTMLButtonElement | HTMLInputElement HTMLButtonElement | HTMLInputElement | HTMLTextAreaElement
> { > {
static values = { static values = {
continue: { type: Boolean, default: false }, continue: { type: Boolean, default: false },
@ -91,4 +98,12 @@ export class ActionController extends Controller<
if (!url) return; if (!url) return;
window.location.assign(url); window.location.assign(url);
} }
/**
* Select all the text in an input or textarea element.
*/
select() {
if (this.element instanceof HTMLButtonElement) return;
this.element?.select();
}
} }

Wyświetl plik

@ -121,6 +121,7 @@ depth: 1
* Add changelog and issue tracker links to the PyPI project page (Panagiotis H.M. Issaris) * Add changelog and issue tracker links to the PyPI project page (Panagiotis H.M. Issaris)
* Add better deprecation warnings to the `search.Query` & `search.QueryDailyHits` model, move final set of templates from the admin search module to the search promotions contrib module (LB (Ben) Johnston) * Add better deprecation warnings to the `search.Query` & `search.QueryDailyHits` model, move final set of templates from the admin search module to the search promotions contrib module (LB (Ben) Johnston)
* Add generic `InspectView` to `ModelViewSet` (Sage Abdullah) * Add generic `InspectView` to `ModelViewSet` (Sage Abdullah)
* Migrate select all on focus/click behavior to Stimulus, used on the image URL generator (Chiemezuo Akujobi)
## Upgrade considerations - changes affecting all projects ## Upgrade considerations - changes affecting all projects

Wyświetl plik

@ -79,10 +79,5 @@ $(function () {
$form.on('change', $.debounce(500, formChangeHandler)); $form.on('change', $.debounce(500, formChangeHandler));
$form.on('keyup', $.debounce(500, formChangeHandler)); $form.on('keyup', $.debounce(500, formChangeHandler));
formChangeHandler(); formChangeHandler();
// When the user clicks the URL, automatically select the whole thing (for easier copying)
$result.on('click', function () {
$(this).trigger('select');
});
}); });
}); });

Wyświetl plik

@ -19,7 +19,7 @@
{% trans "URL" as heading %} {% trans "URL" as heading %}
{% panel id="url" icon="link" heading=heading %} {% panel id="url" icon="link" heading=heading %}
<textarea id="result-url" rows="1"></textarea> <textarea id="result-url" rows="1" data-controller="w-action" data-action="focus->w-action#select"></textarea>
{% endpanel %} {% endpanel %}
{% trans "Preview" as heading %} {% trans "Preview" as heading %}