summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomaž Vajngerl <tomaz.vajngerl@collabora.co.uk>2024-05-02 14:39:46 +0900
committerSzymon Kłos <eszkadev@gmail.com>2024-05-02 10:38:21 +0200
commitcf0a6f4a2fc6814e8b39b22382ac898cb6b3a4bb (patch)
tree99df71cc3bcf1c8c1edfc60c6703de72cc86e6ae
parentAdds a11y checker sidebar (diff)
downloadonline-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.css12
-rw-r--r--browser/src/control/Control.JSDialogBuilder.js46
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') {