card-mod-bootstrap 0.16.0 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 65c3edd6e18e607b53c39c1a815386fb26af21c2d628dd93dd8b870742610525
4
- data.tar.gz: 503036793a7ba7e553f34682bc522713f9c440fe01a9abde020c0d2889aebb85
3
+ metadata.gz: 78ca197a8d574b5edc4af65d19a6856010a88ab9f3c1e53c5685c5025f02cd80
4
+ data.tar.gz: 618f483444d3af1e8f231ef2d6da8f80490bcbe014a6f476c71102faad993367
5
5
  SHA512:
6
- metadata.gz: b738342bfbb3a06fe1ec7296a0412dbc5882e0281fee6013e016a2cd370010fd66b34243c2ac28cb06f66c3db65198ccf721b2d44d35f5fa94aa7a9182656b02
7
- data.tar.gz: d93b189158a69ebebd467716eea64eda38209f75fe599b42e5e4a2ce94b860afd5d1b8ff30a084d60eb6fae120716f288fda2c6a192b29bd1fbfe78ac5d4d4fd
6
+ metadata.gz: 2806022fa05cab04f58f07cc8e363b6c897fa8657a28778681a08b1519a21a2c87677317adf6cb66c3a85881da6991ea3277231967ac4d9bf28675ba79a155ed
7
+ data.tar.gz: 77ab703b2e9049d72a1dc7580102e6e86d92ce85b79a1d5c06bb3710d6c35dbbef89b8ee2347e1a2e137bca73a89892c3201b5c0ab4bf694f4c992933a9441a9
@@ -13,25 +13,9 @@ $.extend decko,
13
13
  if elem.length == 0
14
14
  return
15
15
  else if elem.length > 1
16
- decko.initSelect2($(single_el)) for single_el in elem
16
+ initSingleSelect2($(single_el)) for single_el in elem
17
17
  else
18
- opts = {
19
- dropdownAutoWidth: "true",
20
- # containerCssClass: ":all:",
21
- width: "auto",
22
- dropdownParent: elem.parent()
23
- }
24
-
25
- elem.attr "id", decko.uniqSelect2Id(elem.attr("id"))
26
-
27
- if elem.hasClass("tags")
28
- opts.tags = "true"
29
- if elem.data("placeholder")
30
- opts.placeholder = elem.data("placeholder")
31
- if elem.data("minimum-results-for-search")?
32
- opts.minimumResultsForSearch = elem.data("minimum-results-for-search")
33
-
34
- elem.select2(opts)
18
+ initSingleSelect2 elem
35
19
 
36
20
  uniqSelect2Id: (id) ->
37
21
  return id unless $("[data-select2-id=" + id + "]").length > 0
@@ -64,3 +48,39 @@ $.fn.extend
64
48
  @select2 "destroy"
65
49
  @removeAttr "data-select2-id"
66
50
  @find("option").removeAttr "data-select2-id"
51
+
52
+
53
+ initSingleSelect2 = (elem) ->
54
+ opts = {
55
+ dropdownAutoWidth: "true",
56
+ # containerCssClass: ":all:",
57
+ width: "auto",
58
+ dropdownParent: elem.parent()
59
+ }
60
+
61
+ elem.attr "id", decko.uniqSelect2Id(elem.attr("id"))
62
+
63
+ if elem.hasClass("tags")
64
+ opts.tags = "true"
65
+ if elem.data("placeholder")
66
+ opts.placeholder = elem.data("placeholder")
67
+ if elem.data("minimum-results-for-search")?
68
+ opts.minimumResultsForSearch = elem.data("minimum-results-for-search")
69
+ if elem.data("options-card")
70
+ opts.ajax =
71
+ delay: 200
72
+ cache: true
73
+ url: decko.path elem.data("options-card")
74
+ processResults: (data) -> results: data
75
+ data: (params) ->
76
+ term: params.term
77
+ format: "json"
78
+ view: elem.data("options-view") || "name_match"
79
+ slot: { items: { view: elem.data("options-item-view") || "select2_option" } }
80
+ opts.templateResult = (data) ->
81
+ if data.html
82
+ $(data.html)
83
+ else
84
+ data.text
85
+
86
+ elem.select2(opts)
@@ -16,3 +16,7 @@
16
16
  .dropdown-menu {
17
17
  z-index: 1005;
18
18
  }
19
+
20
+ .select2-dropdown a {
21
+ text-decoration: none !important;
22
+ }
data/config/admin.yml ADDED
@@ -0,0 +1,5 @@
1
+ cardtypes:
2
+ styling:
3
+ - bootswatch_skin
4
+ views:
5
+ - carousel
@@ -12,7 +12,7 @@ const i=this._directionToOrder(t),n=Ce.findOne(ai,this._element),s=this._getItem
12
12
  // decko_popover.js.coffee
13
13
  (function(){$(window).ready(function(){return $("body").on("show.bs.popover","._card-menu-popover",function(){return $(this).closest(".card-menu._show-on-hover").removeClass("_show-on-hover").addClass("_show-on-hover-disabled")}),$("body").on("hide.bs.popover","._card-menu-popover",function(){return $(this).closest(".card-menu._show-on-hover-disabled").removeClass("_show-on-hover-disabled").addClass("_show-on-hover")})}),decko.slot.ready(function(o){return o.find('[data-tooltip="true"]').tooltip(),o.find('[data-bs-toggle="popover"]').popover({html:!0})})}).call(this);
14
14
  // script_load_select2.js.coffee
15
- (function(){$.fn.select2.defaults.set("theme","bootstrap-5"),decko.slot.ready(function(e){return e.find("select:not(._no-select2):not(._no-select2-init)").each(function(){return decko.initSelect2($(this))})}),decko.slot.destroy(function(e){return e.find("select:not(._no-select2)").each(function(){return $(this).deInitSelect2()})}),$.extend(decko,{initSelect2:function(e){var t,n,i,c,o;if(0!==e.length){if(e.length>1){for(c=[],t=0,n=e.length;t<n;t++)o=e[t],c.push(decko.initSelect2($(o)));return c}return i={dropdownAutoWidth:"true",width:"auto",dropdownParent:e.parent()},e.attr("id",decko.uniqSelect2Id(e.attr("id"))),e.hasClass("tags")&&(i.tags="true"),e.data("placeholder")&&(i.placeholder=e.data("placeholder")),null!=e.data("minimum-results-for-search")&&(i.minimumResultsForSearch=e.data("minimum-results-for-search")),e.select2(i)}},uniqSelect2Id:function(e){return $("[data-select2-id="+e+"]").length>0?decko.uniqSelect2Id(e+"1"):e}}),$(window).ready(function(){return $("body").on("select2:select","._go-to-selected",function(){var e;if(""!==(e=$(this).val()))return window.location=decko.path(escape(e))}),$("body").on("select2:select","._submit-on-select",function(e){return $(e.target).closest("form").submit()})}),$.fn.extend({cloneSelect2:function(e,t){var n,i;return(i=this.is("select")?this:this.find("select")).deInitSelect2(),n=this.clone(e,t),decko.initSelect2(i),n.is("select")?decko.initSelect2(n):decko.initSelect2(n.find("select")),n},deInitSelect2:function(){if(this.attr("data-select2-id"))return this.select2("destroy"),this.removeAttr("data-select2-id"),this.find("option").removeAttr("data-select2-id")}})}).call(this);
15
+ (function(){var t;$.fn.select2.defaults.set("theme","bootstrap-5"),decko.slot.ready(function(t){return t.find("select:not(._no-select2):not(._no-select2-init)").each(function(){return decko.initSelect2($(this))})}),decko.slot.destroy(function(t){return t.find("select:not(._no-select2)").each(function(){return $(this).deInitSelect2()})}),$.extend(decko,{initSelect2:function(e){var n,i,o,c;if(0!==e.length){if(e.length>1){for(o=[],n=0,i=e.length;n<i;n++)c=e[n],o.push(t($(c)));return o}return t(e)}},uniqSelect2Id:function(t){return $("[data-select2-id="+t+"]").length>0?decko.uniqSelect2Id(t+"1"):t}}),$(window).ready(function(){return $("body").on("select2:select","._go-to-selected",function(){var t;if(""!==(t=$(this).val()))return window.location=decko.path(escape(t))}),$("body").on("select2:select","._submit-on-select",function(t){return $(t.target).closest("form").submit()})}),$.fn.extend({cloneSelect2:function(t,e){var n,i;return(i=this.is("select")?this:this.find("select")).deInitSelect2(),n=this.clone(t,e),decko.initSelect2(i),n.is("select")?decko.initSelect2(n):decko.initSelect2(n.find("select")),n},deInitSelect2:function(){if(this.attr("data-select2-id"))return this.select2("destroy"),this.removeAttr("data-select2-id"),this.find("option").removeAttr("data-select2-id")}}),t=function(t){var e;return e={dropdownAutoWidth:"true",width:"auto",dropdownParent:t.parent()},t.attr("id",decko.uniqSelect2Id(t.attr("id"))),t.hasClass("tags")&&(e.tags="true"),t.data("placeholder")&&(e.placeholder=t.data("placeholder")),null!=t.data("minimum-results-for-search")&&(e.minimumResultsForSearch=t.data("minimum-results-for-search")),t.data("options-card")&&(e.ajax={delay:200,cache:!0,url:decko.path(t.data("options-card")),processResults:function(t){return{results:t}},data:function(e){return{term:e.term,format:"json",view:t.data("options-view")||"name_match",slot:{items:{view:t.data("options-item-view")||"select2_option"}}}}},e.templateResult=function(t){return t.html?$(t.html):t.text}),t.select2(e)}}).call(this);
16
16
  // bootstrap-colorpicker.min.js
17
17
  /*!
18
18
  * Bootstrap Colorpicker v2.5.2
@@ -20,7 +20,7 @@ class CustomizableSkin < Cardio::Migration::Transform
20
20
  end
21
21
 
22
22
  def create_or_update
23
- Card.exists?(@skin_name) ? update_skin : create_skin
23
+ Card.exist?(@skin_name) ? update_skin : create_skin
24
24
  end
25
25
 
26
26
  private
@@ -9,7 +9,7 @@ class RemoveCustomizedBootswatchSkins < Cardio::Migration::Transform
9
9
  end
10
10
 
11
11
  def convert_bootswatch_skins
12
- Card.search(type_id: ::Card::CustomizedBootswatchSkinID) do |card|
12
+ Card.search(type: :customized_bootswatch_skin) do |card|
13
13
  update_args = { type_id: Card::BootswatchSkinID, skip: :asset_input_changed }
14
14
  parent = find_parent(card.name)
15
15
  if parent && parent.id != card.id
@@ -33,7 +33,7 @@ class Skin
33
33
  end
34
34
 
35
35
  def create_or_update
36
- Card.exists?(@skin_name) ? update_skin : create_skin
36
+ Card.exist?(@skin_name) ? update_skin : create_skin
37
37
  end
38
38
 
39
39
  def create_skin
@@ -12,7 +12,7 @@ class Card
12
12
  @items = []
13
13
  instance_exec(&block)
14
14
 
15
- @html.div class: "carousel slide", id: id, "data-ride" => "carousel" do
15
+ @html.div class: "carousel slide", id: id, "data-bs-ride" => "true" do
16
16
  indicators
17
17
  items
18
18
  control_prev
@@ -25,7 +25,7 @@ class Card
25
25
  end
26
26
 
27
27
  def items
28
- @html.div class: "carousel-inner", role: "listbox" do
28
+ @html.div class: "carousel-inner" do
29
29
  @items.each_with_index do |item, index|
30
30
  carousel_item item, carousel_item_opts(index)
31
31
  end
@@ -46,31 +46,35 @@ class Card
46
46
  end
47
47
 
48
48
  def control_prev
49
- @html.a class: "carousel-control-prev", href: "##{@id}", role: "button",
50
- "data-slide" => "prev" do
51
- @html.span class: "carousel-control-prev-icon", "aria-hidden" => "true"
52
- @html.span "Previous", class: "sr-only"
53
- end
49
+ control_button :prev, "Previous"
54
50
  end
55
51
 
56
52
  def control_next
57
- @html.a class: "carousel-control-next", href: "##{@id}", role: "button",
58
- "data-slide": "next" do
59
- @html.span class: "carousel-control-next-icon", "aria-hidden" => "true"
60
- @html.span "Next", class: "sr-only"
53
+ control_button :next, "Next"
54
+ end
55
+
56
+ def control_button direction, description
57
+ @html.button class: "carousel-control-#{direction}",
58
+ "data-bs-target": "##{@id}", type: "button" do
59
+ @html.span class: "carousel-control-#{direction}-icon",
60
+ "aria-hidden": "true" do
61
+ ""
62
+ end
63
+ @html.span description, class: "visually-hidden"
61
64
  end
62
65
  end
63
66
 
64
67
  def indicators
65
- @html.ol class: "carousel-indicators" do
68
+ @html.div class: "carousel-indicators" do
66
69
  @items.size.times { |i| indicator i }
67
70
  end
68
71
  end
69
72
 
70
73
  def indicator index
71
- html_opts = { "data-slide-to" => index, "data-bs-target": "##{@id}" }
74
+ html_opts = { "data-bs-slide-to": index, "data-bs-target": "##{@id}",
75
+ type: "button", "aria-label": "Slide #{index + 1}" }
72
76
  add_class html_opts, "active" if index == @active_item_index
73
- @html.li html_opts
77
+ @html.button html_opts
74
78
  end
75
79
  end
76
80
  end
@@ -1,4 +1,4 @@
1
- %span.labeled-badge{ class: klass, title: title }
1
+ %span.labeled-badge{ class: klass, title: title, "data-bs-toggle": "tooltip", "data-bs-placement": "bottom" }
2
2
  %label
3
3
  = label
4
4
  %span.badge{ class: "bg-#{color}" }
@@ -13,6 +13,6 @@ format :html do
13
13
  if count.try(:zero?) && !opts[:zero_ok]
14
14
  opts[:klass] = [opts[:klass], "disabled-o"].compact.join " "
15
15
  end
16
- opts[:color] ||= "secondary"
16
+ opts[:color] ||= "light"
17
17
  end
18
18
  end
@@ -85,6 +85,17 @@ basket[:icons] = {
85
85
  format :html do
86
86
  view :icons, template: :haml
87
87
 
88
+ # Generates an HTML tag for an icon with optional parameters.
89
+ #
90
+ # @param [String] icon_key The key representing the desired icon.
91
+ # @param [Hash] opts The options for the icon tag.
92
+ # @option opts [String] :class Additional CSS classes for the icon tag.
93
+ # @option opts [String] :style Additional inline styles for the icon tag.
94
+ #
95
+ # @return [String] The HTML code for the icon tag.
96
+ #
97
+ # @example
98
+ # icon_tag(:heart, class: 'favorite-icon', style: 'color: red')
88
99
  def icon_tag icon_key, opts={}
89
100
  return "" unless icon_key.present?
90
101
 
@@ -119,6 +130,7 @@ format :html do
119
130
  end
120
131
 
121
132
  def universal_icon_tag library, icon, opts={}
133
+ add_class opts, "notranslate"
122
134
  with_icon_tag_opts(opts) do |tag_opts|
123
135
  send "#{library}_icon_tag", icon, tag_opts
124
136
  end
@@ -40,6 +40,9 @@ format :html do
40
40
  end
41
41
  end
42
42
 
43
+ # Generates HTML markup for a breadcrumb trail.
44
+ # @param items [list]: A list of items representing the breadcrumb trail.
45
+ # @return [String] HTML markup for the breadcrumb trail.
43
46
  def breadcrumb items
44
47
  wrap_with :ol, class: "breadcrumb" do
45
48
  items.map do |item|
@@ -50,7 +50,7 @@ end
50
50
  def item_names _args={}
51
51
  (PRE_VARIABLES_CARD_NAMES + variables_card_names +
52
52
  POST_VARIABLES_CARD_NAMES + stylesheets_card_names).compact.map do |n|
53
- Card.fetch_name(n)
53
+ Codename.name n
54
54
  end.compact
55
55
  end
56
56
 
@@ -81,11 +81,11 @@ def editable_item_cards
81
81
  end
82
82
 
83
83
  def variables_card_names
84
- %i[colors variables].map { |s| Card.fetch_name name, s }
84
+ %i[colors variables].map { |s| [name, s].cardname }
85
85
  end
86
86
 
87
87
  def stylesheets_card_names
88
- [Card.fetch_name(name, :stylesheets)]
88
+ [[name, :stylesheets].cardname]
89
89
  end
90
90
 
91
91
  def content_from_theme field
@@ -63,11 +63,11 @@ def virtual?
63
63
  new?
64
64
  end
65
65
 
66
- def ok_to_create
66
+ def ok_to_create?
67
67
  left.parent? && super
68
68
  end
69
69
 
70
- def ok_to_update
70
+ def ok_to_update?
71
71
  left.parent? && super
72
72
  end
73
73
 
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.16.0
4
+ version: 0.18.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ethan McCutchen
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2023-11-18 00:00:00.000000000 Z
13
+ date: 2024-10-31 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: card
@@ -18,70 +18,70 @@ dependencies:
18
18
  requirements:
19
19
  - - '='
20
20
  - !ruby/object:Gem::Version
21
- version: 1.106.0
21
+ version: 1.108.0
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.106.0
28
+ version: 1.108.0
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: card-mod-edit
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
33
  - - '='
34
34
  - !ruby/object:Gem::Version
35
- version: 0.16.0
35
+ version: 0.18.0
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.16.0
42
+ version: 0.18.0
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: card-mod-bar_and_box
45
45
  requirement: !ruby/object:Gem::Requirement
46
46
  requirements:
47
47
  - - '='
48
48
  - !ruby/object:Gem::Version
49
- version: 0.16.0
49
+ version: 0.18.0
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.16.0
56
+ version: 0.18.0
57
57
  - !ruby/object:Gem::Dependency
58
58
  name: card-mod-style
59
59
  requirement: !ruby/object:Gem::Requirement
60
60
  requirements:
61
61
  - - '='
62
62
  - !ruby/object:Gem::Version
63
- version: 0.16.0
63
+ version: 0.18.0
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.16.0
70
+ version: 0.18.0
71
71
  - !ruby/object:Gem::Dependency
72
72
  name: card-mod-script
73
73
  requirement: !ruby/object:Gem::Requirement
74
74
  requirements:
75
75
  - - '='
76
76
  - !ruby/object:Gem::Version
77
- version: 0.16.0
77
+ version: 0.18.0
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.16.0
84
+ version: 0.18.0
85
85
  description: ''
86
86
  email:
87
87
  - info@decko.org
@@ -102,6 +102,7 @@ files:
102
102
  - assets/style/font_awesome.css
103
103
  - assets/style/manifest.yml
104
104
  - assets/style/material_icons.css
105
+ - config/admin.yml
105
106
  - config/locales/de.yml
106
107
  - config/locales/en.yml
107
108
  - data/files/cerulean_skin_image/image-icon.png
@@ -3935,7 +3936,7 @@ files:
3935
3936
  - vendor/select2/tests/vendor/qunit-1.23.1.js
3936
3937
  homepage: https://decko.org
3937
3938
  licenses:
3938
- - GPL-3.0
3939
+ - GPL-3.0-or-later
3939
3940
  metadata:
3940
3941
  source_code_uri: https://github.com/decko-commons/decko
3941
3942
  homepage_uri: https://decko.org
@@ -3952,14 +3953,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
3952
3953
  requirements:
3953
3954
  - - ">="
3954
3955
  - !ruby/object:Gem::Version
3955
- version: '2.5'
3956
+ version: '3.0'
3956
3957
  required_rubygems_version: !ruby/object:Gem::Requirement
3957
3958
  requirements:
3958
3959
  - - ">="
3959
3960
  - !ruby/object:Gem::Version
3960
3961
  version: '0'
3961
3962
  requirements: []
3962
- rubygems_version: 3.4.10
3963
+ rubygems_version: 3.5.7
3963
3964
  signing_key:
3964
3965
  specification_version: 4
3965
3966
  summary: Bootstrap