card-mod-bootstrap 0.13.1 → 0.13.2

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
  SHA256:
3
- metadata.gz: 7a5be936b33fec952d53bd02083a1aed7204752a67fb5dbeb8a7b2969148b255
4
- data.tar.gz: b83639c48d7acfd49b569e65ddd25054c46270a77a62ccde85116eda18d676d2
3
+ metadata.gz: 6c76852a9a9b99991e21c42ffd0aa64bba0b03d21f7354d685791a172b05eb59
4
+ data.tar.gz: 302a27cca61ca626c8553ac2ae1e4b46a26b971602e1b68f5fdc2b78d8abd762
5
5
  SHA512:
6
- metadata.gz: 861b1ccf0545f53988c44858add9efd2620d29b05be4f800083701ba4a42fa0d013b89a28b0983c8f3ff30b298d5de31062c74d42014a2f4232852d4faba2050
7
- data.tar.gz: eb8013594b8b4b4711207970bf04df99a105f99478f15634f2b8aabc07dc903010fa3cdf3a3a4c6fe363d20b9f3241c2bc0e3c14d942b0f7e0eb4aa8ced3bf09
6
+ metadata.gz: de068f4101a4c9a19c0d41089dc7b5d7a8110eee312f418681ad1c6cc486f54e7a23684e011db106a167528ac4609028e261df6691ee7d601ed5a62a6dd782f5
7
+ data.tar.gz: 3bc43503da17228c63b34c8b8fcd8804d8cecf6728e43db433a00ee88fd6a840c35f13c2cd01566a8f4268d7bf25313d710fe4f6d3e7f64061fe623368f43290
@@ -0,0 +1,27 @@
1
+ decko.slotReady(function(slot) {
2
+ slot.find('.modal.fade').on('loaded.bs.modal', function(e) {
3
+ $(this).trigger('slotReady');
4
+ });
5
+ slot.find('[data-toggle=\'modal\']').off("click").on('click', function(e) {
6
+ var $_this, href, modal_selector;
7
+ e.preventDefault();
8
+ e.stopPropagation();
9
+ $_this = $(this);
10
+ href = $_this.attr('href');
11
+ modal_selector = $_this.data('target');
12
+ $(modal_selector).modal('show');
13
+ $.ajax({
14
+ url: href,
15
+ type: 'GET',
16
+ success: function(html) {
17
+ $(modal_selector + ' .modal-content').html(html);
18
+ return $(modal_selector).trigger('loaded.bs.modal');
19
+ },
20
+ error: function(jqXHR, textStatus) {
21
+ $(modal_selector + ' .modal-content').html(jqXHR.responseText);
22
+ return $(modal_selector).trigger('loaded.bs.modal');
23
+ }
24
+ });
25
+ return false;
26
+ });
27
+ });
@@ -0,0 +1,18 @@
1
+ bootstrap:
2
+ minimize: true
3
+ items:
4
+ # full version of select2 is needed to support containerCssClass config option
5
+ # which we need for select2_bootstrap to work properly
6
+ - ../../vendor/select2/dist/js/select2.full.min.js
7
+ - ../../vendor/bootstrap/dist/js/bootstrap.bundle.js
8
+ - bootstrap_modal_decko.js
9
+ - script_load_select2.js.coffee
10
+ - ../../vendor/bootstrap-colorpicker/dist/js/bootstrap-colorpicker.min.js
11
+ - script_colorpicker.js.coffee
12
+
13
+ pointer:
14
+ items:
15
+ - script_pointer_config.js.coffee
16
+ - script_pointer_list_editor.js.coffee
17
+
18
+
@@ -0,0 +1,3 @@
1
+ decko.slotReady (slot) ->
2
+ $('[data-toggle="popover"]').popover(html: true)
3
+ $('.colorpicker-component').colorpicker()
@@ -0,0 +1,55 @@
1
+ $.fn.select2.defaults.set("theme", "bootstrap")
2
+
3
+ decko.slotReady (slot) ->
4
+ slot.find('select:not(._no-select2)').each (_i) ->
5
+ decko.initSelect2($(this))
6
+
7
+ decko.slotDestroy (slot) ->
8
+ slot.find('select:not(._no-select2)').each (_i) ->
9
+ $(this).deInitSelect2()
10
+
11
+ $.extend decko,
12
+ initSelect2: (elem) ->
13
+ if elem.length > 1
14
+ decko.initSelect2($(single_el)) for single_el in elem
15
+ else
16
+ opts = { dropdownAutoWidth: "true", containerCssClass: ":all:", width: "auto" }
17
+
18
+ elem.attr "id", decko.uniqSelect2Id(elem.attr("id"))
19
+ if elem.hasClass("tags")
20
+ opts.tags = "true"
21
+ if elem.data("minimum-results-for-search")?
22
+ opts.minimumResultsForSearch = elem.data("minimum-results-for-search")
23
+ elem.select2(opts)
24
+
25
+ uniqSelect2Id: (id) ->
26
+ return id unless $("[data-select2-id=" + id + "]").length > 0
27
+ decko.uniqSelect2Id id + "1"
28
+
29
+
30
+ $(window).ready ->
31
+ $('body').on 'select2:select', '._go-to-selected', ->
32
+ val = $(this).val()
33
+ if val != ''
34
+ window.location = decko.path(escape(val))
35
+
36
+ $('body').on "select2:select", "._submit-on-select", (event) ->
37
+ $(event.target).closest('form').submit()
38
+
39
+ $.fn.extend
40
+ cloneSelect2: (withDataAndEvents, deepWithDataAndEvents) ->
41
+ $old = if this.is('select') then this else this.find('select')
42
+ $old.deInitSelect2()
43
+ $cloned = this.clone(withDataAndEvents, deepWithDataAndEvents)
44
+ decko.initSelect2 $old
45
+ if $cloned.is('select')
46
+ decko.initSelect2 $cloned
47
+ else
48
+ decko.initSelect2 $cloned.find('select')
49
+ $cloned
50
+
51
+ deInitSelect2: ->
52
+ return unless @attr "data-select2-id"
53
+ @select2 "destroy"
54
+ @removeAttr "data-select2-id"
55
+ @find("option").removeAttr "data-select2-id"
@@ -0,0 +1,80 @@
1
+ $.extend decko.editorContentFunctionMap,
2
+ 'select.pointer-select': ->
3
+ pointerContent @val()
4
+ 'select.pointer-multiselect': ->
5
+ pointerContent @val()
6
+ '.pointer-radio-list': ->
7
+ pointerContent @find('input:checked').val()
8
+ '.pointer-list-ul': ->
9
+ pointerContent @find('input').map( -> $(this).val() )
10
+ '.pointer-link-list-ul': ->
11
+ decko.linkListContent @find('.input-group')
12
+ '._nest-list-ul': ->
13
+ decko.nestListContent @find('.input-group')
14
+ '.pointer-checkbox-list': ->
15
+ pointerContent @find('input:checked').map( -> $(this).val() )
16
+ '.pointer-select-list': ->
17
+ pointerContent @find('.pointer-select select').map( -> $(this).val() )
18
+ '._pointer-filtered-list': ->
19
+ pointerContent @find('._filtered-list-item').map( -> $(this).data('cardName') )
20
+ '._pointer-list': ->
21
+ pointerContent @find('._pointer-item').map( -> $(this).val() )
22
+ # can't find evidence that the following is in use: #efm
23
+ # '.pointer-mixed': ->
24
+ # element = '.pointer-checkbox-sublist input:checked,\
25
+ # .pointer-sublist-ul input'
26
+ # pointerContent @find(element).map( -> $(this).val() )
27
+ # must happen after pointer-list-ul, I think
28
+ '.perm-editor': -> permissionsContent this
29
+
30
+ decko.editorInitFunctionMap['.pointer-list-editor'] = ->
31
+ @sortable({handle: '.handle', cancel: ''})
32
+ decko.initPointerList @find('input')
33
+
34
+ decko.editorInitFunctionMap['._pointer-filtered-list'] = ->
35
+ @sortable({handle: '._handle', cancel: ''})
36
+
37
+ $.extend decko,
38
+ initPointerList: (input) ->
39
+ decko.initAutoCardPlete input
40
+
41
+ initAutoCardPlete: (input) ->
42
+ optionsCard = input.data 'options-card'
43
+ return unless !!optionsCard
44
+ path = optionsCard + '.json?view=name_match'
45
+ input.autocomplete { source: decko.slotPath(path) }
46
+
47
+ pointerContent: (vals) ->
48
+ list = $.map $.makeArray(vals), (v) -> if v then '[[' + v + ']]'
49
+ $.makeArray(list).join "\n"
50
+
51
+ linkListContent: (input_groups) ->
52
+ vals = input_groups.map( ->
53
+ v = $(this).find('input._reference').val()
54
+ title = $(this).find('input._title').val()
55
+ v += "|#{title}" if title.length > 0
56
+ v
57
+ )
58
+ list = $.map $.makeArray(vals), (v) -> if v then '[[' + v + ']]'
59
+ $.makeArray(list).join "\n"
60
+
61
+ nestListContent: (input_groups) ->
62
+ vals = input_groups.map( ->
63
+ v = $(this).find('input._reference').val()
64
+ options = $(this).find('input._nest-options').val()
65
+ v += "|#{options}" if options.length > 0
66
+ v
67
+ )
68
+ list = $.map $.makeArray(vals), (v) -> if v then '{{' + v + '}}'
69
+ $.makeArray(list).join "\n"
70
+
71
+
72
+ pointerContent = (vals) ->
73
+ decko.pointerContent vals
74
+ # deprecated. backwards compatibility
75
+
76
+ permissionsContent = (ed) ->
77
+ return '_left' if ed.find('#inherit').is(':checked')
78
+ groups = ed.find('.perm-group input:checked').map( -> $(this).val() )
79
+ indivs = ed.find('.perm-indiv input' ).map( -> $(this).val() )
80
+ pointerContent $.makeArray(groups).concat($.makeArray(indivs))
@@ -0,0 +1,67 @@
1
+ $(window).ready ->
2
+ # add pointer item when clicking on "add another" button
3
+ $('body').on 'click', '._pointer-item-add', (event)->
4
+ decko.addPointerItem this
5
+ event.preventDefault() # Prevent link from following its href
6
+
7
+ # add pointer item when you hit enter in an item
8
+ $('body').on 'keydown', '.pointer-item-text', (event)->
9
+ if event.key == 'Enter'
10
+ decko.addPointerItem this
11
+ event.preventDefault() # was triggering extra item in unrelated pointer
12
+
13
+ # enable/disable add
14
+ $('body').on 'keyup', '.pointer-item-text', (_event)->
15
+ decko.updateAddItemButton this
16
+
17
+ $('body').on 'click', '.pointer-item-delete', ->
18
+ item = $(this).closest 'li'
19
+ list = item.closest('ul')
20
+ if list.find('.pointer-li').length > 1
21
+ item.remove()
22
+ else
23
+ item.find('input').val ''
24
+ decko.updateAddItemButton(list)
25
+
26
+ decko.slotReady (slot) ->
27
+ slot.find('.pointer-list-editor').each ->
28
+ decko.updateAddItemButton this
29
+
30
+ $.extend decko,
31
+ addPointerItem: (el) ->
32
+ slot = $(el).slot()
33
+ slot.trigger "slotDestroy"
34
+ # why is this necessary?
35
+ # this can have a lot of side effects in a multi-card form.
36
+
37
+ newInput = decko.nextPointerInput decko.lastPointerItem(el)
38
+ newInput.val ''
39
+
40
+ slot.trigger "slotReady"
41
+ decko.initializeEditors slot
42
+ # should be (but is not) handled by slotReady
43
+ # without this, "add another" was breaking tinymce editors in same slot
44
+
45
+ newInput.first().focus()
46
+ decko.updateAddItemButton el
47
+ decko.initPointerList newInput
48
+
49
+ nextPointerInput: (lastItem)->
50
+ lastInputs = lastItem.find 'input'
51
+ all_empty = true
52
+ for input in lastInputs
53
+ all_empty = all_empty and $(input).val() == ''
54
+ return lastInputs if all_empty
55
+
56
+ newItem = lastItem.clone()
57
+ lastItem.after newItem
58
+ newItem.attr("data-index", parseInt(lastItem.attr("data-index") + 1))
59
+ newItem.find 'input'
60
+
61
+ lastPointerItem: (el)->
62
+ $(el).closest('.content-editor').find '.pointer-li:last'
63
+
64
+ updateAddItemButton: (el)->
65
+ button = $(el).closest('.content-editor').find '._pointer-item-add'
66
+ disabled = decko.lastPointerItem(el).find('input').val() == ''
67
+ button.prop 'disabled', disabled
data/locales/en.yml ADDED
@@ -0,0 +1,3 @@
1
+ en:
2
+ bootstrap_cannot_source_theme: can't find source for theme %{theme_name}
3
+ bootstrap_not_valid_theme: not a valid theme %{theme_name}
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: card-mod-bootstrap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.1
4
+ version: 0.13.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ethan McCutchen
@@ -18,84 +18,84 @@ dependencies:
18
18
  requirements:
19
19
  - - '='
20
20
  - !ruby/object:Gem::Version
21
- version: 1.103.1
21
+ version: 1.103.2
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
26
  - - '='
27
27
  - !ruby/object:Gem::Version
28
- version: 1.103.1
28
+ version: 1.103.2
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: card-mod-assets
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
33
  - - '='
34
34
  - !ruby/object:Gem::Version
35
- version: 0.13.1
35
+ version: 0.13.2
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
40
  - - '='
41
41
  - !ruby/object:Gem::Version
42
- version: 0.13.1
42
+ version: 0.13.2
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: card-mod-edit
45
45
  requirement: !ruby/object:Gem::Requirement
46
46
  requirements:
47
47
  - - '='
48
48
  - !ruby/object:Gem::Version
49
- version: 0.13.1
49
+ version: 0.13.2
50
50
  type: :runtime
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
53
53
  requirements:
54
54
  - - '='
55
55
  - !ruby/object:Gem::Version
56
- version: 0.13.1
56
+ version: 0.13.2
57
57
  - !ruby/object:Gem::Dependency
58
58
  name: card-mod-bar_and_box
59
59
  requirement: !ruby/object:Gem::Requirement
60
60
  requirements:
61
61
  - - '='
62
62
  - !ruby/object:Gem::Version
63
- version: 0.13.1
63
+ version: 0.13.2
64
64
  type: :runtime
65
65
  prerelease: false
66
66
  version_requirements: !ruby/object:Gem::Requirement
67
67
  requirements:
68
68
  - - '='
69
69
  - !ruby/object:Gem::Version
70
- version: 0.13.1
70
+ version: 0.13.2
71
71
  - !ruby/object:Gem::Dependency
72
72
  name: card-mod-style
73
73
  requirement: !ruby/object:Gem::Requirement
74
74
  requirements:
75
75
  - - '='
76
76
  - !ruby/object:Gem::Version
77
- version: 0.13.1
77
+ version: 0.13.2
78
78
  type: :runtime
79
79
  prerelease: false
80
80
  version_requirements: !ruby/object:Gem::Requirement
81
81
  requirements:
82
82
  - - '='
83
83
  - !ruby/object:Gem::Version
84
- version: 0.13.1
84
+ version: 0.13.2
85
85
  - !ruby/object:Gem::Dependency
86
86
  name: card-mod-script
87
87
  requirement: !ruby/object:Gem::Requirement
88
88
  requirements:
89
89
  - - '='
90
90
  - !ruby/object:Gem::Version
91
- version: 0.13.1
91
+ version: 0.13.2
92
92
  type: :runtime
93
93
  prerelease: false
94
94
  version_requirements: !ruby/object:Gem::Requirement
95
95
  requirements:
96
96
  - - '='
97
97
  - !ruby/object:Gem::Version
98
- version: 0.13.1
98
+ version: 0.13.2
99
99
  description: ''
100
100
  email:
101
101
  - info@decko.org
@@ -103,6 +103,12 @@ executables: []
103
103
  extensions: []
104
104
  extra_rdoc_files: []
105
105
  files:
106
+ - assets/script/bootstrap_modal_decko.js
107
+ - assets/script/manifest.yml
108
+ - assets/script/script_colorpicker.js.coffee
109
+ - assets/script/script_load_select2.js.coffee
110
+ - assets/script/script_pointer_config.js.coffee
111
+ - assets/script/script_pointer_list_editor.js.coffee
106
112
  - db/migrate_core_cards/20170719163733_update_bootswatch_themes_to_4_beta.rb
107
113
  - db/migrate_core_cards/20170726111053_add_bootstrap_mixins.rb
108
114
  - db/migrate_core_cards/20170726145012_select2.rb
@@ -267,6 +273,7 @@ files:
267
273
  - lib/stylesheets/smartmenu.css
268
274
  - lib/stylesheets/style_bootstrap_cards.scss
269
275
  - lib/stylesheets/style_select2_bootstrap.scss
276
+ - locales/en.yml
270
277
  - public/fonts/MaterialIcons-Regular.eot
271
278
  - public/fonts/MaterialIcons-Regular.ijmap
272
279
  - public/fonts/MaterialIcons-Regular.svg