diff options
author | Tomaž Vajngerl <tomaz.vajngerl@collabora.co.uk> | 2024-05-02 14:39:46 +0900 |
---|---|---|
committer | Szymon Kłos <eszkadev@gmail.com> | 2024-05-02 10:38:21 +0200 |
commit | cf0a6f4a2fc6814e8b39b22382ac898cb6b3a4bb (patch) | |
tree | 99df71cc3bcf1c8c1edfc60c6703de72cc86e6ae | |
parent | Adds a11y checker sidebar (diff) | |
download | online-cf0a6f4a2fc6814e8b39b22382ac898cb6b3a4bb.tar.gz online-cf0a6f4a2fc6814e8b39b22382ac898cb6b3a4bb.zip |
jsdialog: add "linkbutton" as an independent widget
This depends on the core change, which separates the linkbutton
widget from fixedtext widget as it is already an independent widget
in "weld" and used in accessibility checker. Adds "clicked" event
that is triggered when the text is clicked and send to the core.
Signed-off-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.co.uk>
Change-Id: I4a999f3e57aaa7950482c55defa3012346351cb1
-rw-r--r-- | browser/css/jsdialogs.css | 12 | ||||
-rw-r--r-- | browser/src/control/Control.JSDialogBuilder.js | 46 |
2 files changed, 58 insertions, 0 deletions
diff --git a/browser/css/jsdialogs.css b/browser/css/jsdialogs.css index dfdc433820..8088043b21 100644 --- a/browser/css/jsdialogs.css +++ b/browser/css/jsdialogs.css @@ -398,6 +398,18 @@ td.jsdialog > [id^='table-box']:not(.sidebar) { .ui-expander-content > .root-container.jsdialog { margin: 4px; } + +/* Link Button*/ + +.ui-linkbutton { + color: var(--color-text-dark) !important; +} + +.ui-linkbutton:hover { + cursor: pointer; + color: var(--color-text-lighter) !important; +} + /* TreeView */ .ui-treeview { diff --git a/browser/src/control/Control.JSDialogBuilder.js b/browser/src/control/Control.JSDialogBuilder.js index 4b0d95e51f..c896facbf7 100644 --- a/browser/src/control/Control.JSDialogBuilder.js +++ b/browser/src/control/Control.JSDialogBuilder.js @@ -104,6 +104,7 @@ L.Control.JSDialogBuilder = L.Control.extend({ this._controlHandlers['listbox'] = this._listboxControl; this._controlHandlers['valueset'] = this._valuesetControl; this._controlHandlers['fixedtext'] = this._fixedtextControl; + this._controlHandlers['linkbutton'] = this._linkButtonControl; this._controlHandlers['htmlcontrol'] = this._htmlControl; this._controlHandlers['expander'] = this._expanderHandler; this._controlHandlers['grid'] = JSDialog.grid; @@ -1679,6 +1680,51 @@ L.Control.JSDialogBuilder = L.Control.extend({ return false; }, + + _linkButtonControl: function(parentContainer, data, builder) { + var textContent = L.DomUtil.create('label', builder.options.cssClass + " ui-linkbutton", parentContainer); + + if (data.labelFor) + textContent.htmlFor = data.labelFor + '-input'; + + if (data.text) + textContent.textContent = builder._cleanText(data.text); + else if (data.html) + textContent.innerHTML = data.html; + + var accKey = builder._getAccessKeyFromText(data.text); + builder._stressAccessKey(textContent, accKey); + + setTimeout(function () { + var labelledControl = document.getElementById(data.labelFor); + if (labelledControl) { + var target = labelledControl; + var input = labelledControl.querySelector('input'); + if (input) + target = input; + var select = labelledControl.querySelector('select'); + if (select) + target = select; + + builder._setAccessKey(target, accKey); + } + }, 0); + + textContent.id = data.id; + if (data.style && data.style.length) { + L.DomUtil.addClass(textContent, data.style); + } else { + L.DomUtil.addClass(textContent, 'ui-text'); + } + if (data.hidden) + $(textContent).hide(); + + var clickFunction = function () { + builder.callback('linkbutton', 'click', data, null, builder); + }; + $(textContent).click(clickFunction); + return false; + }, _setIconAndNameForCombobox: function(data) { if (data.command == '.uno:CharFontName') { |