bootbox-rails 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 912eed7e639d4f8df1cef4331fe3502bdff72186
4
- data.tar.gz: 5f4915721bf0d9da6e6015a72af7945bd236ea59
3
+ metadata.gz: e4db0c69cc34403930e43aecad3b986131cf50ad
4
+ data.tar.gz: 8c955e6699da555174afb01d486419b583d02078
5
5
  SHA512:
6
- metadata.gz: af33cad6e23d813b7bf5d693e378a8313c952237d5173824d4077ca124afce3c8be3b0a9792cd49f505e0fcc7e78ef775a227c8773b59788fdb6f88981713d10
7
- data.tar.gz: 8b1ca6389c948b7cbe911ea0f7c8190f5f19cfe06d7102242adc07d4a6e9d0248834051cfb48fb2000e9669f437e7c75bab5baf7dac5fda1ce8731eac06e8bf1
6
+ metadata.gz: 9c0e132afdb8cb2768d224f53d52d7b133171b3370f160f0a34221dba4de2b3f4a806f8fc549f5641f749d203a78155f53a4af7908e904bec7f441e6cc557371
7
+ data.tar.gz: 7929a1b72a91871c4d173a4e4a78476d6594a903fbb477b060746d640f72910eb1c3e29dbfb76535f323d0b4769234cd2d77021e32e13c2082b667488016735f
@@ -71,8 +71,8 @@
71
71
  var defaults = {
72
72
  // default language
73
73
  locale: "en",
74
- // show backdrop or not
75
- backdrop: true,
74
+ // show backdrop or not. Default to static so user has to interact with dialog
75
+ backdrop: "static",
76
76
  // animate the modal in/out
77
77
  animate: true,
78
78
  // additional class string applied to the top level dialog
@@ -105,7 +105,7 @@
105
105
 
106
106
  // so, if the callback can be invoked and it *explicitly returns false*
107
107
  // then we'll set a flag to keep the dialog active...
108
- var preserveDialog = $.isFunction(callback) && callback(e) === false;
108
+ var preserveDialog = $.isFunction(callback) && callback.call(dialog, e) === false;
109
109
 
110
110
  // ... otherwise we'll bin it
111
111
  if (!preserveDialog) {
@@ -148,11 +148,6 @@
148
148
  options.buttons = {};
149
149
  }
150
150
 
151
- // we only support Bootstrap's "static" and false backdrop args
152
- // supporting true would mean you could dismiss the dialog without
153
- // explicitly interacting with it
154
- options.backdrop = options.backdrop ? "static" : false;
155
-
156
151
  buttons = options.buttons;
157
152
 
158
153
  total = getKeyLength(buttons);
@@ -312,7 +307,7 @@
312
307
  */
313
308
  options.buttons.ok.callback = options.onEscape = function() {
314
309
  if ($.isFunction(options.callback)) {
315
- return options.callback();
310
+ return options.callback.call(this);
316
311
  }
317
312
  return true;
318
313
  };
@@ -329,11 +324,11 @@
329
324
  * overrides; undo anything the user tried to set they shouldn't have
330
325
  */
331
326
  options.buttons.cancel.callback = options.onEscape = function() {
332
- return options.callback(false);
327
+ return options.callback.call(this, false);
333
328
  };
334
329
 
335
330
  options.buttons.confirm.callback = function() {
336
- return options.callback(true);
331
+ return options.callback.call(this, true);
337
332
  };
338
333
 
339
334
  // confirm specific validation
@@ -381,21 +376,13 @@
381
376
  // it, but we need to make sure we respect a preference not to show it
382
377
  shouldShow = (options.show === undefined) ? true : options.show;
383
378
 
384
- // check if the browser supports the option.inputType
385
- var html5inputs = ["date","time","number"];
386
- var i = document.createElement("input");
387
- i.setAttribute("type", options.inputType);
388
- if(html5inputs[options.inputType]){
389
- options.inputType = i.type;
390
- }
391
-
392
379
  /**
393
380
  * overrides; undo anything the user tried to set they shouldn't have
394
381
  */
395
382
  options.message = form;
396
383
 
397
384
  options.buttons.cancel.callback = options.onEscape = function() {
398
- return options.callback(null);
385
+ return options.callback.call(this, null);
399
386
  };
400
387
 
401
388
  options.buttons.confirm.callback = function() {
@@ -426,7 +413,7 @@
426
413
  break;
427
414
  }
428
415
 
429
- return options.callback(value);
416
+ return options.callback.call(this, value);
430
417
  };
431
418
 
432
419
  options.show = false;
@@ -462,6 +449,10 @@
462
449
  var groups = {};
463
450
  inputOptions = options.inputOptions || [];
464
451
 
452
+ if (!$.isArray(inputOptions)) {
453
+ throw new Error("Please pass an array of input options");
454
+ }
455
+
465
456
  if (!inputOptions.length) {
466
457
  throw new Error("prompt with select requires options");
467
458
  }
@@ -475,7 +466,6 @@
475
466
  throw new Error("given options in wrong format");
476
467
  }
477
468
 
478
-
479
469
  // ... but override that element if this option sits in a group
480
470
 
481
471
  if (option.group) {
@@ -533,14 +523,20 @@
533
523
  break;
534
524
  }
535
525
 
526
+ // @TODO provide an attributes option instead
527
+ // and simply map that as keys: vals
536
528
  if (options.placeholder) {
537
529
  input.attr("placeholder", options.placeholder);
538
530
  }
539
531
 
540
- if(options.pattern){
532
+ if (options.pattern) {
541
533
  input.attr("pattern", options.pattern);
542
534
  }
543
535
 
536
+ if (options.maxlength) {
537
+ input.attr("maxlength", options.maxlength);
538
+ }
539
+
544
540
  // now place it in our form
545
541
  form.append(input);
546
542
 
@@ -560,6 +556,8 @@
560
556
 
561
557
  // ...and replace it with one focusing our input, if possible
562
558
  dialog.on("shown.bs.modal", function() {
559
+ // need the closure here since input isn't
560
+ // an object otherwise
563
561
  input.focus();
564
562
  });
565
563
 
@@ -582,6 +580,14 @@
582
580
  onEscape: options.onEscape
583
581
  };
584
582
 
583
+ if ($.fn.modal === undefined) {
584
+ throw new Error(
585
+ "$.fn.modal is not defined; please double check you have included " +
586
+ "the Bootstrap JavaScript library. See http://getbootstrap.com/javascript/ " +
587
+ "for more details."
588
+ );
589
+ }
590
+
585
591
  each(buttons, function(key, button) {
586
592
 
587
593
  // @TODO I don't like this string appending to itself; bit dirty. Needs reworking
@@ -603,9 +609,7 @@
603
609
 
604
610
  if (options.size === "large") {
605
611
  innerDialog.addClass("modal-lg");
606
- }
607
-
608
- if (options.size === "small") {
612
+ } else if (options.size === "small") {
609
613
  innerDialog.addClass("modal-sm");
610
614
  }
611
615
 
@@ -669,6 +673,30 @@
669
673
  * respective triggers
670
674
  */
671
675
 
676
+ if (options.backdrop !== "static") {
677
+ // A boolean true/false according to the Bootstrap docs
678
+ // should show a dialog the user can dismiss by clicking on
679
+ // the background.
680
+ // We always only ever pass static/false to the actual
681
+ // $.modal function because with `true` we can't trap
682
+ // this event (the .modal-backdrop swallows it)
683
+ // However, we still want to sort of respect true
684
+ // and invoke the escape mechanism instead
685
+ dialog.on("click.dismiss.bs.modal", function(e) {
686
+ // @NOTE: the target varies in >= 3.3.x releases since the modal backdrop
687
+ // moved *inside* the outer dialog rather than *alongside* it
688
+ if (dialog.children(".modal-backdrop").length) {
689
+ e.currentTarget = dialog.children(".modal-backdrop").get(0);
690
+ }
691
+
692
+ if (e.target !== e.currentTarget) {
693
+ return;
694
+ }
695
+
696
+ dialog.trigger("escape.close.bb");
697
+ });
698
+ }
699
+
672
700
  dialog.on("escape.close.bb", function(e) {
673
701
  if (callbacks.onEscape) {
674
702
  processCallback(e, dialog, callbacks.onEscape);
@@ -684,7 +712,6 @@
684
712
  var callbackKey = $(this).data("bb-handler");
685
713
 
686
714
  processCallback(e, dialog, callbacks[callbackKey]);
687
-
688
715
  });
689
716
 
690
717
  dialog.on("click", ".bootbox-close-button", function(e) {
@@ -708,7 +735,7 @@
708
735
  $(options.container).append(dialog);
709
736
 
710
737
  dialog.modal({
711
- backdrop: options.backdrop,
738
+ backdrop: options.backdrop ? "static": false,
712
739
  keyboard: false,
713
740
  show: false
714
741
  });
@@ -757,6 +784,8 @@
757
784
 
758
785
  exports.hideAll = function() {
759
786
  $(".bootbox").modal("hide");
787
+
788
+ return exports;
760
789
  };
761
790
 
762
791
 
@@ -765,11 +794,26 @@
765
794
  * unlikely to be required. If this gets too large it can be split out into separate JS files.
766
795
  */
767
796
  var locales = {
797
+ ar : {
798
+ OK : "موافق",
799
+ CANCEL : "الغاء",
800
+ CONFIRM : "تأكيد"
801
+ },
802
+ bg_BG : {
803
+ OK : "Ок",
804
+ CANCEL : "Отказ",
805
+ CONFIRM : "Потвърждавам"
806
+ },
768
807
  br : {
769
808
  OK : "OK",
770
809
  CANCEL : "Cancelar",
771
810
  CONFIRM : "Sim"
772
811
  },
812
+ cs : {
813
+ OK : "OK",
814
+ CANCEL : "Zrušit",
815
+ CONFIRM : "Potvrdit"
816
+ },
773
817
  da : {
774
818
  OK : "OK",
775
819
  CANCEL : "Annuller",
@@ -795,6 +839,16 @@
795
839
  CANCEL : "Cancelar",
796
840
  CONFIRM : "Aceptar"
797
841
  },
842
+ et : {
843
+ OK : "OK",
844
+ CANCEL : "Katkesta",
845
+ CONFIRM : "OK"
846
+ },
847
+ fa : {
848
+ OK : "قبول",
849
+ CANCEL : "لغو",
850
+ CONFIRM : "تایید"
851
+ },
798
852
  fi : {
799
853
  OK : "OK",
800
854
  CANCEL : "Peruuta",
@@ -810,11 +864,31 @@
810
864
  CANCEL : "ביטול",
811
865
  CONFIRM : "אישור"
812
866
  },
867
+ hu : {
868
+ OK : "OK",
869
+ CANCEL : "Mégsem",
870
+ CONFIRM : "Megerősít"
871
+ },
872
+ hr : {
873
+ OK : "OK",
874
+ CANCEL : "Odustani",
875
+ CONFIRM : "Potvrdi"
876
+ },
877
+ id : {
878
+ OK : "OK",
879
+ CANCEL : "Batal",
880
+ CONFIRM : "OK"
881
+ },
813
882
  it : {
814
883
  OK : "OK",
815
884
  CANCEL : "Annulla",
816
885
  CONFIRM : "Conferma"
817
886
  },
887
+ ja : {
888
+ OK : "OK",
889
+ CANCEL : "キャンセル",
890
+ CONFIRM : "確認"
891
+ },
818
892
  lt : {
819
893
  OK : "Gerai",
820
894
  CANCEL : "Atšaukti",
@@ -840,16 +914,31 @@
840
914
  CANCEL : "Anuluj",
841
915
  CONFIRM : "Potwierdź"
842
916
  },
917
+ pt : {
918
+ OK : "OK",
919
+ CANCEL : "Cancelar",
920
+ CONFIRM : "Confirmar"
921
+ },
843
922
  ru : {
844
923
  OK : "OK",
845
924
  CANCEL : "Отмена",
846
925
  CONFIRM : "Применить"
847
926
  },
927
+ sq : {
928
+ OK : "OK",
929
+ CANCEL : "Anulo",
930
+ CONFIRM : "Prano"
931
+ },
848
932
  sv : {
849
933
  OK : "OK",
850
934
  CANCEL : "Avbryt",
851
935
  CONFIRM : "OK"
852
936
  },
937
+ th : {
938
+ OK : "ตกลง",
939
+ CANCEL : "ยกเลิก",
940
+ CONFIRM : "ยืนยัน"
941
+ },
853
942
  tr : {
854
943
  OK : "Tamam",
855
944
  CANCEL : "İptal",
@@ -867,6 +956,32 @@
867
956
  }
868
957
  };
869
958
 
959
+ exports.addLocale = function(name, values) {
960
+ $.each(["OK", "CANCEL", "CONFIRM"], function(_, v) {
961
+ if (!values[v]) {
962
+ throw new Error("Please supply a translation for '" + v + "'");
963
+ }
964
+ });
965
+
966
+ locales[name] = {
967
+ OK: values.OK,
968
+ CANCEL: values.CANCEL,
969
+ CONFIRM: values.CONFIRM
970
+ };
971
+
972
+ return exports;
973
+ };
974
+
975
+ exports.removeLocale = function(name) {
976
+ delete locales[name];
977
+
978
+ return exports;
979
+ };
980
+
981
+ exports.setLocale = function(name) {
982
+ return exports.setDefaults("locale", name);
983
+ };
984
+
870
985
  exports.init = function(_$) {
871
986
  return init(_$ || $);
872
987
  };
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bootbox-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kozloff
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-22 00:00:00.000000000 Z
11
+ date: 2015-05-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler