Skip to content

Commit 7776437

Browse files
committed
sync with latest GopherJS
TodoMVC working, some (minor) QUnit Tests are still failing
1 parent 67f5acf commit 7776437

File tree

1 file changed

+50
-149
lines changed

1 file changed

+50
-149
lines changed

jquery.go

Lines changed: 50 additions & 149 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,10 @@ func (event *Event) StopPropagation() {
103103
event.Call("stopPropagation")
104104
}
105105

106+
func log(i ...interface{}) {
107+
js.Global.Get("console").Call("log", i...)
108+
}
109+
106110
//JQuery constructor
107111
func NewJQuery(args ...interface{}) JQuery {
108112
return JQuery{o: js.Global.Get(JQ).New(args...)}
@@ -199,10 +203,8 @@ func Unique(arr js.Object) js.Object {
199203
}
200204

201205
//methods
202-
func (j JQuery) Each(fn func(int, JQuery)) JQuery {
203-
j.o = j.o.Call("each", func(idx int, elem js.Object) {
204-
fn(idx, NewJQuery(elem))
205-
})
206+
func (j JQuery) Each(fn func(int, interface{})) JQuery {
207+
j.o = j.o.Call("each", fn)
206208
return j
207209
}
208210

@@ -215,7 +217,8 @@ func (j JQuery) Get(i ...interface{}) js.Object {
215217
}
216218

217219
func (j JQuery) Append(i ...interface{}) JQuery {
218-
return j.dom2args("append", i...)
220+
j.o = j.o.Call("append", i...)
221+
return j
219222
}
220223

221224
func (j JQuery) Empty() JQuery {
@@ -242,7 +245,6 @@ func (j JQuery) Delay(i ...interface{}) JQuery {
242245
return j
243246
}
244247

245-
//to "range" over selection:
246248
func (j JQuery) ToArray() []interface{} {
247249
return j.o.Call("toArray").Interface().([]interface{})
248250
}
@@ -286,7 +288,6 @@ func (j JQuery) SetText(i interface{}) JQuery {
286288
default:
287289
print("SetText Argument should be 'string' or 'func(int, string) string'")
288290
}
289-
290291
j.o = j.o.Call("text", i)
291292
return j
292293
}
@@ -368,38 +369,50 @@ func (j JQuery) Blur() JQuery {
368369
}
369370

370371
func (j JQuery) ReplaceAll(i interface{}) JQuery {
371-
return j.dom1arg("replaceAll", i)
372+
j.o = j.o.Call("replaceAll", i)
373+
return j
374+
372375
}
373376
func (j JQuery) ReplaceWith(i interface{}) JQuery {
374-
return j.dom1arg("replaceWith", i)
377+
j.o = j.o.Call("replaceWith", i)
378+
return j
375379
}
376380

377381
func (j JQuery) After(i ...interface{}) JQuery {
378-
return j.dom2args("after", i...)
382+
j.o = j.o.Call("after", i)
383+
return j
384+
379385
}
380386

381387
func (j JQuery) Before(i ...interface{}) JQuery {
382-
return j.dom2args("before", i...)
388+
j.o = j.o.Call("before", i...)
389+
return j
383390
}
384391

385392
func (j JQuery) Prepend(i ...interface{}) JQuery {
386-
return j.dom2args("prepend", i...)
393+
j.o = j.o.Call("prepend", i...)
394+
return j
387395
}
388396

389397
func (j JQuery) PrependTo(i interface{}) JQuery {
390-
return j.dom1arg("prependTo", i)
398+
j.o = j.o.Call("prependTo", i)
399+
return j
391400
}
392401

393402
func (j JQuery) AppendTo(i interface{}) JQuery {
394-
return j.dom1arg("appendTo", i)
403+
j.o = j.o.Call("appendTo", i)
404+
return j
395405
}
396406

397407
func (j JQuery) InsertAfter(i interface{}) JQuery {
398-
return j.dom1arg("insertAfter", i)
408+
j.o = j.o.Call("insertAfter", i)
409+
return j
410+
399411
}
400412

401413
func (j JQuery) InsertBefore(i interface{}) JQuery {
402-
return j.dom1arg("insertBefore", i)
414+
j.o = j.o.Call("insertBefore", i)
415+
return j
403416
}
404417

405418
func (j JQuery) Show() JQuery {
@@ -439,7 +452,8 @@ func (j JQuery) SetHtml(i interface{}) JQuery {
439452
}
440453

441454
func (j JQuery) Closest(i ...interface{}) JQuery {
442-
return j.dom2args("closest", i...)
455+
j.o = j.o.Call("closest", i...)
456+
return j
443457
}
444458

445459
func (j JQuery) End() JQuery {
@@ -448,7 +462,8 @@ func (j JQuery) End() JQuery {
448462
}
449463

450464
func (j JQuery) Add(i ...interface{}) JQuery {
451-
return j.dom2args("add", i...)
465+
j.o = j.o.Call("add", i...)
466+
return j
452467
}
453468

454469
func (j JQuery) Clone(b ...interface{}) JQuery {
@@ -623,11 +638,13 @@ func (j JQuery) Wrap(obj interface{}) JQuery {
623638
}
624639

625640
func (j JQuery) WrapAll(i interface{}) JQuery {
626-
return j.dom1arg("wrapAll", i)
641+
j.o = j.o.Call("wrapAll", i)
642+
return j
627643
}
628644

629645
func (j JQuery) WrapInner(i interface{}) JQuery {
630-
return j.dom1arg("wrapInner", i)
646+
j.o = j.o.Call("wrapInner", i)
647+
return j
631648
}
632649

633650
func (j JQuery) Next(i ...interface{}) JQuery {
@@ -690,7 +707,8 @@ func (j JQuery) Resize(i ...interface{}) JQuery {
690707
}
691708

692709
func (j JQuery) Scroll(i ...interface{}) JQuery {
693-
return j.handleEvent("scroll", i...)
710+
j.o = j.o.Call("scroll", i...)
711+
return j
694712
}
695713

696714
func (j JQuery) FadeOut(i ...interface{}) JQuery {
@@ -699,29 +717,12 @@ func (j JQuery) FadeOut(i ...interface{}) JQuery {
699717
}
700718

701719
func (j JQuery) Select(i ...interface{}) JQuery {
702-
return j.handleEvent("select", i...)
720+
j.o = j.o.Call("select", i...)
721+
return j
703722
}
704723

705724
func (j JQuery) Submit(i ...interface{}) JQuery {
706-
return j.handleEvent("submit", i...)
707-
}
708-
709-
func (j JQuery) handleEvent(evt string, i ...interface{}) JQuery {
710-
711-
switch len(i) {
712-
case 0:
713-
j.o = j.o.Call(evt)
714-
case 1:
715-
j.o = j.o.Call(evt, func(e js.Object) {
716-
i[0].(func(Event))(Event{Object: e})
717-
})
718-
case 2:
719-
j.o = j.o.Call(evt, i[0].(map[string]interface{}), func(e js.Object) {
720-
i[1].(func(Event))(Event{Object: e})
721-
})
722-
default:
723-
print(evt + " event expects 0 to 2 arguments")
724-
}
725+
j.o = j.o.Call("submit", i...)
725726
return j
726727
}
727728

@@ -730,118 +731,18 @@ func (j JQuery) Trigger(i ...interface{}) JQuery {
730731
return j
731732
}
732733

733-
func (j JQuery) On(p ...interface{}) JQuery {
734-
return j.events("on", p...)
735-
}
736-
737-
func (j JQuery) One(p ...interface{}) JQuery {
738-
return j.events("one", p...)
739-
}
740-
741-
func (j JQuery) Off(p ...interface{}) JQuery {
742-
return j.events("off", p...)
743-
}
744-
745-
func (j JQuery) events(evt string, p ...interface{}) JQuery {
746-
747-
count := len(p)
748-
749-
var isEventFunc bool
750-
switch p[len(p)-1].(type) {
751-
case func(Event):
752-
isEventFunc = true
753-
default:
754-
isEventFunc = false
755-
}
756-
757-
switch count {
758-
case 0:
759-
j.o = j.o.Call(evt)
760-
return j
761-
case 1:
762-
j.o = j.o.Call(evt, p[0])
763-
return j
764-
case 2:
765-
if isEventFunc {
766-
j.o = j.o.Call(evt, p[0], func(e js.Object) {
767-
p[1].(func(Event))(Event{Object: e})
768-
})
769-
return j
770-
} else {
771-
j.o = j.o.Call(evt, p[0], p[1])
772-
return j
773-
}
774-
case 3:
775-
if isEventFunc {
776-
777-
j.o = j.o.Call(evt, p[0], p[1], func(e js.Object) {
778-
p[2].(func(Event))(Event{Object: e})
779-
})
780-
return j
781-
782-
} else {
783-
j.o = j.o.Call(evt, p[0], p[1], p[2])
784-
return j
785-
}
786-
case 4:
787-
if isEventFunc {
788-
789-
j.o = j.o.Call(evt, p[0], p[1], p[2], func(e js.Object) {
790-
p[3].(func(Event))(Event{Object: e})
791-
})
792-
return j
793-
794-
} else {
795-
j.o = j.o.Call(evt, p[0], p[1], p[2], p[3])
796-
return j
797-
}
798-
default:
799-
print(evt + " event should no have more than 4 arguments")
800-
j.o = j.o.Call(evt, p...)
801-
return j
802-
}
734+
func (j JQuery) On(i ...interface{}) JQuery {
735+
j.o = j.o.Call("on", i...)
736+
return j
803737
}
804738

805-
func (j JQuery) dom2args(method string, i ...interface{}) JQuery {
806-
807-
switch len(i) {
808-
case 2:
809-
selector, selOk := i[0].(JQuery)
810-
context, ctxOk := i[1].(JQuery)
811-
if !selOk && !ctxOk {
812-
j.o = j.o.Call(method, i[0], i[1])
813-
return j
814-
} else if selOk && !ctxOk {
815-
j.o = j.o.Call(method, selector.o, i[1])
816-
return j
817-
} else if !selOk && ctxOk {
818-
j.o = j.o.Call(method, i[0], context.o)
819-
return j
820-
}
821-
j.o = j.o.Call(method, selector.o, context.o)
822-
return j
823-
case 1:
824-
selector, selOk := i[0].(JQuery)
825-
if !selOk {
826-
j.o = j.o.Call(method, i[0])
827-
return j
828-
}
829-
j.o = j.o.Call(method, selector.o)
830-
return j
831-
default:
832-
print(" only 1 or 2 parameters allowed for method ", method)
833-
return j
834-
}
739+
func (j JQuery) One(i ...interface{}) JQuery {
740+
j.o = j.o.Call("one", i...)
741+
return j
835742
}
836743

837-
func (j JQuery) dom1arg(method string, i interface{}) JQuery {
838-
839-
selector, selOk := i.(JQuery)
840-
if !selOk {
841-
j.o = j.o.Call(method, i)
842-
return j
843-
}
844-
j.o = j.o.Call(method, selector.o)
744+
func (j JQuery) Off(i ...interface{}) JQuery {
745+
j.o = j.o.Call("off", i...)
845746
return j
846747
}
847748

0 commit comments

Comments
 (0)