Skip to content

Commit c69cf92

Browse files
committed
use semantic delay
1 parent cb582d3 commit c69cf92

File tree

4 files changed

+25
-16
lines changed

4 files changed

+25
-16
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ config includes following options:
3434
* atomic: default true. when atomic is false, you will need N ldLoader.off() call to dismiss ldLoader if there was already N ldLoader.on() call.
3535

3636
Methods:
37-
* on(delay): toggle loader on. return promise. (if delay is provided, on then resolve after delay(ms). )
38-
* off(delay): toggle loader off. (if delay is provided, resolve after delay(ms), then off. )
37+
* on(delay): toggle loader on. return promise. (if delay is provided, wait delay(ms) before on )
38+
* off(delay): toggle loader off. (if delay is provided, wait delay(ms) before off )
3939
* is-on: return true if loader is running, else false.
4040
* toggle(state,delay): toggle loader based on state(true/false). toggle according to current state if state is omitted. return promise ( delay behavior according to whether it's on or off )
4141
* on(event, cb): listen to events, including: ( TBD? conflict with on(delay) )

dist/ldld.js

Lines changed: 12 additions & 11 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/ldld.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/ldld.ls

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
is-on: -> return @running
2323
on: (delay=0) -> @toggle true, delay
2424
off: (delay=0, force = false) -> @toggle false, delay, force
25+
# if v defined, force state to v.
26+
cancel: (v) -> clearTimeout @handle; if v? => @toggle v
2527
flash: (dur=1000, delay=0) -> @toggle(true, delay).then ~> @toggle false, dur + delay
2628
render: ->
2729
if !(@running and @opt.ctrl and @opt.ctrl.step) => return @render.runid = -1
@@ -36,9 +38,15 @@
3638
ret = requestAnimationFrame -> _ it
3739
toggle: (v, delay=0, force = false) ->
3840
d = (if !(v?) => (if @root.0.classList.contains @opt.active-class => -1 else 1) else if v => 1 else -1)
41+
if @handle => @cancel!
3942
if delay => return new Promise (res, rej) ~>
40-
if d > 0 => @toggle(v)then ~> setTimeout (~> res!), delay # if is on : resolve after on
41-
else => setTimeout (~> @toggle(v)then ~> res!), delay # if is off: off after resolve
43+
# new approach - treat delay directly as a simple delay before action.
44+
@handle = setTimeout (~> @toggle(v)then ~> res!), delay
45+
# old approach
46+
# if is on: resolve after on
47+
#if d > 0 => @toggle(v)then ~> setTimeout (~> res!), delay
48+
# if is off: off after resolve
49+
#else => setTimeout (~> @toggle(v)then ~> res!), delay
4250
new Promise (res, rej) ~>
4351
@count += d
4452
if !force and !@opt.atomic and ( @count >= 2 or (@count == 1 and d < 0)) => return res!

0 commit comments

Comments
 (0)