Comments (6)
It would be nice to have a "disabled" parameter for
<<button>>
and similar macros which look different when disabled, especially if they have a transition time.
I'm not against the idea in general, however, we're talking about fifteen macros just from the standard library, some of which already have fairly a congested argument space.
Currently, if you add a
<<button>>
to a passage which is already visible, there is no way to have it default to disabled, so you then have to disable it using jQuery, which causes it to "flash" due to the button's "transition" CSS, as it transitions from the non-disabled style to the disabled style.
Do you have an example? I cannot replicate what you're seeing via (a) using :passagerender
† to affect buttons that have already been rendered or (b) by running the code after injecting buttons into a displayed passage.
† The :passagerender
event is what you should be using if you're attempting something like this, as everything else happens too late—far too late in the case of things like timeouts.
Examples of what I tried
(a)
@@#btn-group;
<<button "">><</button>>
<<button "1">><</button>>
<<button "2">><</button>>
<<button "3">><</button>>
<<button "4">><</button>>
<<button "5">><</button>>
<<button "6">><</button>>
<<button "7">><</button>>
<<button "8">><</button>>
<<button "9">><</button>>
@@
Lorem ipsum dolor sit amet, […]
<<script>>
$(document).one(':passagerender', function (ev) {
$(ev.content).find("#btn-group button").ariaDisabled(true);
});
<</script>>
(b)
@@#btn-group;
@@
Lorem ipsum dolor sit amet, […]
<<link "Add Disabled Buttons">>
<<replace "#btn-group">>
<<button "">><</button>>
<<button "1">><</button>>
<<button "2">><</button>>
<<button "3">><</button>>
<<button "4">><</button>>
<<button "5">><</button>>
<<button "6">><</button>>
<<button "7">><</button>>
<<button "8">><</button>>
<<button "9">><</button>>
<</replace>>
<<run $("#btn-group button").ariaDisabled(true)>>
<</link>>
from sugarcube-2.
You could create a macro that you wrap an input or element in that disables it. Not a super pretty solution but it'd work, e.g.
<<disable>>
<<button "I'm Disabled">><</button>>
<</disable>>
Just as an idea to solve the problem of adding such an argument to every macro that can be disabled.
from sugarcube-2.
I had a sample, but I tried a whole bunch of variations to see if I could make it work, and it turned out that if I immediately disabled it after creation it was fine. But even putting a single other jQuery statement in-between creating it and disabling it, and then I'd see the flash.
So, yeah. It looks like the "flash" is preventable, but it's very sensitive.
If you want to close this, it's up to you. However, Chapel's idea isn't bad, if you could get it to work. Though, I'd add an optional conditional parameter to the <<disable>>
macro, and if that parameter was there then the contained element(s) would only be disabled if the conditional parameter had a "truthy" value. That way you could control it with a variable.
Alternately, to deal with a "congested argument space", you might want to consider doing what I did with my <<textboxPlus>>
widget, with an object for optional parameters.
Anyways, thanks for looking into it. 😄
from sugarcube-2.
I think this is a valid feature request and should be kept open. It might be applicable to move it to v3 if @tmedwards thinks he cannot get to it before that (and no one else steps up to do the work in v2).
from sugarcube-2.
I forgot about this. I can create a custom <<disable>>
macro in the short term.
from sugarcube-2.
I added this in v2.7.0 of my custom macro collection for anyone interested.
from sugarcube-2.
Related Issues (20)
- Add setting to reduce impact of expired moments HOT 2
- Provide a way to halt future navigation HOT 6
- bookmark information missing from documentation for v2.37.0 HOT 1
- Suggestion: improve warning for Save size in 2.37.0 docs.
- Twine stacks multiple versions of file when you import to web version, export, then import to desktop version. HOT 3
- Let DOM macros fail silently as a config option HOT 2
- Missing `Engine.show()` after `unmarshallForSave()` is called. HOT 5
- Config.passages.transitionOut bug
- feat: allow errors to propagate extra information upstream
- Please enhancd docs to include example Setting ChangeHandler HOT 7
- <<do>> tags not processing comments properly. HOT 1
- Please add to the documentation what content is allowed in "desc:" strings
- Document when done macros are run in the Navigation Event section. HOT 9
- Verbatim String as macro argument HOT 2
- Serialize all save slots and deserialize them without loading a specific slot HOT 7
- ReqTypeError: Failed to execute 'fetch' on 'Window': Request with GET/HEAD method cannot have body. HOT 4
- ariaDisabled anchors don't have the not-allowed cursor HOT 1
- Setting a variable to a BigInt value causes serious error on passage transition HOT 3
- pt-BR Localization HOT 3
- variables set to undefined/Infinity do not revive properly HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.