brick 1.0.117 → 1.0.118

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: 2ed704f637bf6db73f5856be2959ba3490eb721e6de052008914d12cd029a673
4
- data.tar.gz: 327a383fc224aebce1c96ba96b02c8a8a8604136bf61355b13b0029c203ff5c2
3
+ metadata.gz: bc284b8783ca27862ff567079ba680a238690e3779a57d705ee67a54ed016ab2
4
+ data.tar.gz: 812044a88cff33dbf4fe7dbfa37a80e91b1b1a94980091590f4665a123529e80
5
5
  SHA512:
6
- metadata.gz: eec983fb53ff9e5f010473e7a7f1b4f1b6d07f4b8d166f4dccb66b701565a61fb91ebf30c84145dffd585e83ce13bb86c7746906b2751bbb6702ee2dc09eb7a4
7
- data.tar.gz: 339edb3796933184d06de44def59b3ad5fd7d1c37995a73ffab4d62e7bb5dac0d8b63c28cb387e951e9899524ca8513fa938848449460aa234d901c28532f6c5
6
+ metadata.gz: 9a5f82a5956b40beeaa8aeca2861672561ea552b3b21cb85ebf9b426a31bdbd4025f4c047131ae962cdefb31378c8845c9bea947a50dfc34cf497cd9b68ae6b9
7
+ data.tar.gz: 83e1c1399045dc67d6c5dcd98347d2c84a7dec4ac474b5cc09da43b86ce21859d01204844be75d6764a5653c7ea1c220f3887835d07f703c789a82b6311bfad0
@@ -279,7 +279,7 @@ module ActiveRecord
279
279
  end
280
280
 
281
281
  def self.brick_import_template
282
- template = constants.include?(:IMPORT_TEMPLATE) ? self::IMPORT_TEMPLATE : suggest_template(false, false, 0)
282
+ template = constants.include?(:IMPORT_TEMPLATE) ? self::IMPORT_TEMPLATE : suggest_template(0, false, true)
283
283
  # Add the primary key to the template as being unique (unless it's already there)
284
284
  template[:uniques] = [pk = primary_key.to_sym]
285
285
  template[:all].unshift(pk) unless template[:all].include?(pk)
@@ -1034,18 +1034,19 @@ Module.class_exec do
1034
1034
 
1035
1035
  # AVO Resource
1036
1036
  elsif base_module == Object && Object.const_defined?('Avo') && requested.end_with?('Resource') &&
1037
- ['MotorResource'].exclude?(requested) # Expect that anything called MotorResource could be from that administrative gem
1038
- if (model = Object.const_get(requested[0..-9]))
1037
+ # Expect that anything called MotorResource or SpinaResource could be from those administrative gems
1038
+ requested.length > 8 && ['MotorResource', 'SpinaResource'].exclude?(requested)
1039
+ if (model = Object.const_get(requested[0..-9])) && model < ActiveRecord::Base
1039
1040
  require 'generators/avo/resource_generator'
1040
1041
  field_generator = Generators::Avo::ResourceGenerator.new([''])
1041
1042
  field_generator.instance_variable_set(:@model, model)
1042
- fields = field_generator.send(:generate_fields).split("\n")
1043
- .each_with_object([]) do |f, s|
1043
+ fields = field_generator.send(:generate_fields)&.split("\n")
1044
+ &.each_with_object([]) do |f, s|
1044
1045
  if (f = f.strip).start_with?('field ')
1045
1046
  f = f[6..-1].split(',')
1046
1047
  s << [f.first[1..-1].to_sym, [f[1][1..-1].split(': :').map(&:to_sym)].to_h]
1047
1048
  end
1048
- end
1049
+ end || []
1049
1050
  built_resource = Class.new(Avo::BaseResource) do |new_resource_class|
1050
1051
  self.model_class = model
1051
1052
  self.title = :brick_descrip
@@ -2385,11 +2386,11 @@ ORDER BY 1, 2, c.internal_column_id, acc.position"
2385
2386
  "NOT IN ('information_schema', 'pg_catalog', 'pg_toast', 'heroku_ext',
2386
2387
  'INFORMATION_SCHEMA', 'sys')"
2387
2388
  :
2388
- "= '#{ActiveRecord::Base.connection.current_database.tr("'", "''")}'"}#{"
2389
+ "= '#{ActiveRecord::Base.connection.current_database&.tr("'", "''")}'"}#{"
2389
2390
  AND t.table_schema = COALESCE(current_setting('SEARCH_PATH'), 'public')" if is_postgres && schema }
2390
2391
  -- AND t.table_type IN ('VIEW') -- 'BASE TABLE', 'FOREIGN TABLE'
2391
2392
  AND t.table_name NOT IN ('pg_stat_statements', ?, ?)
2392
- ORDER BY 1, t.table_type DESC, 2, kcu.ordinal_position"
2393
+ ORDER BY 1, t.table_type DESC, 2, c.ordinal_position"
2393
2394
  ActiveRecord::Base.execute_sql(sql, *ar_tables)
2394
2395
  end
2395
2396
 
@@ -76,6 +76,11 @@ function linkSchemas() {
76
76
  [... ev.target.getElementsByTagName(\"SELECT\")].forEach(function (select) {
77
77
  if (select.value === \"^^^brick_NULL^^^\") select.value = null;
78
78
  });
79
+ // Take outer <div> tag off the HTML being returned by any Trix editor
80
+ [... document.getElementsByTagName(\"TRIX-EDITOR\")].forEach(function (trix) {
81
+ var trixHidden = trix.inputElement;
82
+ if (trixHidden) trixHidden.value = trixHidden.value.slice(5, -6);
83
+ });
79
84
  return true;
80
85
  });
81
86
  });
@@ -215,16 +220,16 @@ function linkSchemas() {
215
220
  TurboFrameWrapperComponent.class_exec do
216
221
  alias _brick_content content
217
222
  def content
218
- # Avo's logo partial fails if there is not a URL helper called exactly "root_path"
219
- # (Finicky line over there is: avo/app/views/avo/partials/_logo.html.erb:1)
220
223
  if ::Brick.instance_variable_get(:@_brick_avo_js) == view_renderer.object_id
221
224
  _brick_content
222
225
  else
223
226
  ::Brick.instance_variable_set(:@_brick_avo_js, view_renderer.object_id)
227
+ # Avo's logo partial fails if there is not a URL helper called exactly "root_path"
228
+ # (Finicky line over there is: avo/app/views/avo/partials/_logo.html.erb:1)
224
229
  unless ::Rails.application.routes.named_routes.names.include?(:root) || ActionView::Base.respond_to?(:root_path)
225
230
  ActionView::Base.class_exec do
226
231
  def root_path
227
- Avo::App.root_path
232
+ Avo.configuration.root_path
228
233
  end
229
234
  end
230
235
  end
@@ -420,6 +425,32 @@ window.addEventListener(\"popstate\", linkSchemas);
420
425
  end
421
426
  end
422
427
 
428
+ # Unconfigured Mobility gem?
429
+ if Object.const_defined?('Mobility') && Mobility.respond_to?(:translations_class)
430
+ # Find the current defaults
431
+ defs = if Mobility.instance_variable_defined?(:@translations_class)
432
+ ::Mobility.translations_class.defaults
433
+ else
434
+ {}
435
+ end
436
+ # Fill in the blanks for any missing defaults
437
+ ::Mobility.configure do |config|
438
+ config.plugins do
439
+ # Default initializer would also set these:
440
+ # :backend_reader=>true
441
+ # :query=>:i18n
442
+ # :cache=>true
443
+ # :presence=>true
444
+ backend :key_value, type: :string unless defs.key?(:backend)
445
+ reader unless defs.key?(:reader)
446
+ writer unless defs.key?(:writer)
447
+ active_record unless ::Mobility::Plugins.instance_variable_get(:@plugins)&.key?(:active_record)
448
+ fallbacks false unless defs.key?(:fallbacks)
449
+ default nil unless defs.key?(:default)
450
+ end
451
+ end
452
+ end
453
+
423
454
  # ====================================
424
455
  # Dynamically create generic templates
425
456
  # ====================================
@@ -765,6 +796,7 @@ input+svg.revert {
765
796
 
766
797
  <% is_includes_dates = nil
767
798
  is_includes_json = nil
799
+ is_includes_text = nil
768
800
  def is_bcrypt?(val)
769
801
  val.is_a?(String) && val.length == 60 && val.start_with?('$2a$')
770
802
  end
@@ -1569,32 +1601,36 @@ end
1569
1601
  <td>
1570
1602
  <table><tr><td>
1571
1603
  <% dt_pickers = { datetime: 'datetimepicker', timestamp: 'datetimepicker', time: 'timepicker', date: 'datepicker' }
1572
- html_options = {}
1573
- html_options[:class] = 'dimmed' unless val
1574
- is_revert = true
1575
- if bt
1576
- html_options[:prompt] = \"Select #\{bt_name\}\" %>
1577
- <%= f.select k.to_sym, bt[3], { value: val || '^^^brick_NULL^^^' }, html_options %>
1578
- <%= if (bt_obj = bt_class&.find_by(bt_pair[1] => val))
1579
- link_to('⇛', send(\"#\{bt_class.base_class._brick_index(:singular)\}_path\".to_sym, bt_obj.send(bt_class.primary_key.to_sym)), { class: 'show-arrow' })
1580
- elsif val
1581
- \"<span class=\\\"orphan\\\">Orphaned ID: #\{val}</span>\".html_safe
1582
- end %>
1604
+ html_options = {}
1605
+ html_options[:class] = 'dimmed' unless val
1606
+ is_revert = true
1607
+ if bt
1608
+ html_options[:prompt] = \"Select #\{bt_name\}\" %>
1609
+ <%= f.select k.to_sym, bt[3], { value: val || '^^^brick_NULL^^^' }, html_options %>
1610
+ <%= if (bt_obj = bt_class&.find_by(bt_pair[1] => val))
1611
+ link_to('⇛', send(\"#\{bt_class.base_class._brick_index(:singular)\}_path\".to_sym, bt_obj.send(bt_class.primary_key.to_sym)), { class: 'show-arrow' })
1612
+ elsif val
1613
+ \"<span class=\\\"orphan\\\">Orphaned ID: #\{val}</span>\".html_safe
1614
+ end %>
1583
1615
  <% else
1584
- col_type = if ::Brick.config.json_columns[tbl_name]&.include?(k)
1585
- :json
1586
- elsif col&.sql_type == 'geography'
1587
- col.sql_type
1588
- else
1589
- col&.type
1590
- end
1591
- case (col_type ||= col&.sql_type)
1592
- when :string, :text %>
1593
- <% if is_bcrypt?(val) # || .readonly?
1616
+ col_type = if ::Brick.config.json_columns[tbl_name]&.include?(k)
1617
+ :json
1618
+ elsif col&.sql_type == 'geography'
1619
+ col.sql_type
1620
+ else
1621
+ col&.type
1622
+ end
1623
+ case (col_type ||= col&.sql_type)
1624
+ when :string, :text
1625
+ if is_bcrypt?(val) # || .readonly?
1594
1626
  is_revert = false %>
1595
1627
  <%= hide_bcrypt(val, nil, 1000) %>
1596
- <% else %>
1628
+ <% elsif col_type == :string %>
1597
1629
  <%= f.text_field(k.to_sym, html_options) %>
1630
+ <% else
1631
+ is_includes_text = true %>
1632
+ <%= f.hidden_field(k.to_sym, html_options) %>
1633
+ <trix-editor input=\"<%= f.field_id(k) %>\"></trix-editor>
1598
1634
  <% end %>
1599
1635
  <% when :boolean %>
1600
1636
  <%= f.check_box k.to_sym %>
@@ -1739,6 +1775,11 @@ flatpickr(\".timepicker\", {enableTime: true, noCalendar: true});
1739
1775
  <link rel=\"stylesheet\" type=\"text/css\" href=\"https://cdnjs.cloudflare.com/ajax/libs/slim-select/1.27.1/slimselect.min.css\">
1740
1776
  <% end %>
1741
1777
 
1778
+ <% if is_includes_text %>
1779
+ <script src=\"https://cdn.jsdelivr.net/npm/trix@2.0/dist/trix.umd.min.js\"></script>
1780
+ <link rel=\"stylesheet\" type=\"text/css\" href=\"https://cdn.jsdelivr.net/npm/trix@2.0/dist/trix.min.css\">
1781
+ <% end %>
1782
+
1742
1783
  <% # Started with v0.14.4 of vanilla-jsoneditor
1743
1784
  if is_includes_json %>
1744
1785
  <link rel=\"stylesheet\" type=\"text/css\" href=\"https://cdn.jsdelivr.net/npm/vanilla-jsoneditor/themes/jse-theme-default.min.css\">
@@ -5,7 +5,7 @@ module Brick
5
5
  module VERSION
6
6
  MAJOR = 1
7
7
  MINOR = 0
8
- TINY = 117
8
+ TINY = 118
9
9
 
10
10
  # PRE is nil unless it's a pre-release (beta, RC, etc.)
11
11
  PRE = nil
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: brick
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.117
4
+ version: 1.0.118
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lorin Thwaits
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-02-26 00:00:00.000000000 Z
11
+ date: 2023-03-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord